{"version":4,"artifacts":[{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/index.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"index.js","canonical":"index","resolution":"ESM","id":"4e90918c0a","hash":"4e90918c0afd1603c45097a06da755acc52754cb848f20da3f7f394557227a15","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Panel = void 0;\nconst tslib_1 = require(\"tslib\");\nconst Panel = tslib_1.__importStar(require(\"./models\"));\nexports.Panel = Panel;\nconst base_1 = require(\"@bokehjs/base\");\n(0, base_1.register_models)(Panel);\n//# sourceMappingURL=index.js.map\n","type":"js","dependency_paths":[["./models","/croot/panel_1706539561184/work/panel/dist/lib/models/index.js"]],"dependency_map":[],"exported":[],"externals":[],"shims":[]},"code":{"source":"/* index.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    const Panel = tslib_1.__importStar(require(\"e678554eae\") /* ./models */);\n    exports.Panel = Panel;\n    const base_1 = require(\"@bokehjs/base\");\n    (0, base_1.register_models)(Panel);\n}\n","min_source":"function _(e,s,t,o,a){o();const i=e(\"tslib\").__importStar(e(\"e678554eae\"));t.Panel=i;(0,e(\"@bokehjs/base\").register_models)(i)}\n//# sourceMappingURL=index.min.js.map","min_map":"{\"version\":3,\"file\":\"index.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"Panel\",\"__importStar\",\"register_models\"],\"sources\":[\"0\"],\"mappings\":\"AAAe,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAC5DD,IACA,MACME,EADUL,EAAQ,SACFM,aAAaN,EAAQ,eAC3CE,EAAQG,MAAQA,GAEhB,EADeL,EAAQ,iBACZO,iBAAiBF,EAChC\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/index.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/index.js","canonical":"models/index","resolution":"ESM","id":"e678554eae","hash":"e678554eaef940a2c4af2082b1b22b4a7f53f21f3100cc7b738f8c4cde0e4dfe","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VizzuChart = exports.VideoStream = exports.Video = exports.VegaPlot = exports.TrendIndicator = exports.TooltipIcon = exports.ToggleIcon = exports.TextToSpeech = exports.TextAreaInput = exports.Terminal = exports.Tabs = exports.State = exports.SpeechToText = exports.SingleSelect = exports.ReactiveHTML = exports.RadioButtonGroup = exports.QuillInput = exports.Progress = exports.PlotlyPlot = exports.Player = exports.Perspective = exports.PDF = exports.MathJax = exports.Location = exports.KaTeX = exports.JSONEditor = exports.JSON = exports.IPyWidget = exports.HTML = exports.FileDownload = exports.ECharts = exports.DeckGLPlot = exports.DatetimePicker = exports.DataTabulator = exports.CustomSelect = exports.CommManager = exports.Column = exports.CheckboxButtonGroup = exports.Card = exports.Button = exports.BrowserInfo = exports.Audio = exports.AcePlot = void 0;\nconst tslib_1 = require(\"tslib\");\nvar ace_1 = require(\"./ace\");\nObject.defineProperty(exports, \"AcePlot\", { enumerable: true, get: function () { return ace_1.AcePlot; } });\nvar audio_1 = require(\"./audio\");\nObject.defineProperty(exports, \"Audio\", { enumerable: true, get: function () { return audio_1.Audio; } });\nvar browser_1 = require(\"./browser\");\nObject.defineProperty(exports, \"BrowserInfo\", { enumerable: true, get: function () { return browser_1.BrowserInfo; } });\nvar button_1 = require(\"./button\");\nObject.defineProperty(exports, \"Button\", { enumerable: true, get: function () { return button_1.Button; } });\nvar card_1 = require(\"./card\");\nObject.defineProperty(exports, \"Card\", { enumerable: true, get: function () { return card_1.Card; } });\nvar checkbox_button_group_1 = require(\"./checkbox_button_group\");\nObject.defineProperty(exports, \"CheckboxButtonGroup\", { enumerable: true, get: function () { return checkbox_button_group_1.CheckboxButtonGroup; } });\nvar column_1 = require(\"./column\");\nObject.defineProperty(exports, \"Column\", { enumerable: true, get: function () { return column_1.Column; } });\nvar comm_manager_1 = require(\"./comm_manager\");\nObject.defineProperty(exports, \"CommManager\", { enumerable: true, get: function () { return comm_manager_1.CommManager; } });\nvar customselect_1 = require(\"./customselect\");\nObject.defineProperty(exports, \"CustomSelect\", { enumerable: true, get: function () { return customselect_1.CustomSelect; } });\nvar tabulator_1 = require(\"./tabulator\");\nObject.defineProperty(exports, \"DataTabulator\", { enumerable: true, get: function () { return tabulator_1.DataTabulator; } });\nvar datetime_picker_1 = require(\"./datetime_picker\");\nObject.defineProperty(exports, \"DatetimePicker\", { enumerable: true, get: function () { return datetime_picker_1.DatetimePicker; } });\nvar deckgl_1 = require(\"./deckgl\");\nObject.defineProperty(exports, \"DeckGLPlot\", { enumerable: true, get: function () { return deckgl_1.DeckGLPlot; } });\nvar echarts_1 = require(\"./echarts\");\nObject.defineProperty(exports, \"ECharts\", { enumerable: true, get: function () { return echarts_1.ECharts; } });\nvar file_download_1 = require(\"./file_download\");\nObject.defineProperty(exports, \"FileDownload\", { enumerable: true, get: function () { return file_download_1.FileDownload; } });\nvar html_1 = require(\"./html\");\nObject.defineProperty(exports, \"HTML\", { enumerable: true, get: function () { return html_1.HTML; } });\nvar ipywidget_1 = require(\"./ipywidget\");\nObject.defineProperty(exports, \"IPyWidget\", { enumerable: true, get: function () { return ipywidget_1.IPyWidget; } });\nvar json_1 = require(\"./json\");\nObject.defineProperty(exports, \"JSON\", { enumerable: true, get: function () { return json_1.JSON; } });\nvar jsoneditor_1 = require(\"./jsoneditor\");\nObject.defineProperty(exports, \"JSONEditor\", { enumerable: true, get: function () { return jsoneditor_1.JSONEditor; } });\nvar katex_1 = require(\"./katex\");\nObject.defineProperty(exports, \"KaTeX\", { enumerable: true, get: function () { return katex_1.KaTeX; } });\nvar location_1 = require(\"./location\");\nObject.defineProperty(exports, \"Location\", { enumerable: true, get: function () { return location_1.Location; } });\nvar mathjax_1 = require(\"./mathjax\");\nObject.defineProperty(exports, \"MathJax\", { enumerable: true, get: function () { return mathjax_1.MathJax; } });\nvar pdf_1 = require(\"./pdf\");\nObject.defineProperty(exports, \"PDF\", { enumerable: true, get: function () { return pdf_1.PDF; } });\nvar perspective_1 = require(\"./perspective\");\nObject.defineProperty(exports, \"Perspective\", { enumerable: true, get: function () { return perspective_1.Perspective; } });\nvar player_1 = require(\"./player\");\nObject.defineProperty(exports, \"Player\", { enumerable: true, get: function () { return player_1.Player; } });\nvar plotly_1 = require(\"./plotly\");\nObject.defineProperty(exports, \"PlotlyPlot\", { enumerable: true, get: function () { return plotly_1.PlotlyPlot; } });\nvar progress_1 = require(\"./progress\");\nObject.defineProperty(exports, \"Progress\", { enumerable: true, get: function () { return progress_1.Progress; } });\nvar quill_1 = require(\"./quill\");\nObject.defineProperty(exports, \"QuillInput\", { enumerable: true, get: function () { return quill_1.QuillInput; } });\nvar radio_button_group_1 = require(\"./radio_button_group\");\nObject.defineProperty(exports, \"RadioButtonGroup\", { enumerable: true, get: function () { return radio_button_group_1.RadioButtonGroup; } });\nvar reactive_html_1 = require(\"./reactive_html\");\nObject.defineProperty(exports, \"ReactiveHTML\", { enumerable: true, get: function () { return reactive_html_1.ReactiveHTML; } });\nvar singleselect_1 = require(\"./singleselect\");\nObject.defineProperty(exports, \"SingleSelect\", { enumerable: true, get: function () { return singleselect_1.SingleSelect; } });\nvar speech_to_text_1 = require(\"./speech_to_text\");\nObject.defineProperty(exports, \"SpeechToText\", { enumerable: true, get: function () { return speech_to_text_1.SpeechToText; } });\nvar state_1 = require(\"./state\");\nObject.defineProperty(exports, \"State\", { enumerable: true, get: function () { return state_1.State; } });\nvar tabs_1 = require(\"./tabs\");\nObject.defineProperty(exports, \"Tabs\", { enumerable: true, get: function () { return tabs_1.Tabs; } });\nvar terminal_1 = require(\"./terminal\");\nObject.defineProperty(exports, \"Terminal\", { enumerable: true, get: function () { return terminal_1.Terminal; } });\nvar textarea_input_1 = require(\"./textarea_input\");\nObject.defineProperty(exports, \"TextAreaInput\", { enumerable: true, get: function () { return textarea_input_1.TextAreaInput; } });\nvar text_to_speech_1 = require(\"./text_to_speech\");\nObject.defineProperty(exports, \"TextToSpeech\", { enumerable: true, get: function () { return text_to_speech_1.TextToSpeech; } });\nvar icon_1 = require(\"./icon\");\nObject.defineProperty(exports, \"ToggleIcon\", { enumerable: true, get: function () { return icon_1.ToggleIcon; } });\nvar tooltip_icon_1 = require(\"./tooltip_icon\");\nObject.defineProperty(exports, \"TooltipIcon\", { enumerable: true, get: function () { return tooltip_icon_1.TooltipIcon; } });\nvar trend_1 = require(\"./trend\");\nObject.defineProperty(exports, \"TrendIndicator\", { enumerable: true, get: function () { return trend_1.TrendIndicator; } });\nvar vega_1 = require(\"./vega\");\nObject.defineProperty(exports, \"VegaPlot\", { enumerable: true, get: function () { return vega_1.VegaPlot; } });\nvar video_1 = require(\"./video\");\nObject.defineProperty(exports, \"Video\", { enumerable: true, get: function () { return video_1.Video; } });\nvar videostream_1 = require(\"./videostream\");\nObject.defineProperty(exports, \"VideoStream\", { enumerable: true, get: function () { return videostream_1.VideoStream; } });\nvar vizzu_1 = require(\"./vizzu\");\nObject.defineProperty(exports, \"VizzuChart\", { enumerable: true, get: function () { return vizzu_1.VizzuChart; } });\ntslib_1.__exportStar(require(\"./vtk\"), exports);\n//# sourceMappingURL=index.js.map\n","type":"js","dependency_paths":[["./ace","/croot/panel_1706539561184/work/panel/dist/lib/models/ace.js"],["./audio","/croot/panel_1706539561184/work/panel/dist/lib/models/audio.js"],["./browser","/croot/panel_1706539561184/work/panel/dist/lib/models/browser.js"],["./button","/croot/panel_1706539561184/work/panel/dist/lib/models/button.js"],["./card","/croot/panel_1706539561184/work/panel/dist/lib/models/card.js"],["./checkbox_button_group","/croot/panel_1706539561184/work/panel/dist/lib/models/checkbox_button_group.js"],["./column","/croot/panel_1706539561184/work/panel/dist/lib/models/column.js"],["./comm_manager","/croot/panel_1706539561184/work/panel/dist/lib/models/comm_manager.js"],["./customselect","/croot/panel_1706539561184/work/panel/dist/lib/models/customselect.js"],["./tabulator","/croot/panel_1706539561184/work/panel/dist/lib/models/tabulator.js"],["./datetime_picker","/croot/panel_1706539561184/work/panel/dist/lib/models/datetime_picker.js"],["./deckgl","/croot/panel_1706539561184/work/panel/dist/lib/models/deckgl.js"],["./echarts","/croot/panel_1706539561184/work/panel/dist/lib/models/echarts.js"],["./file_download","/croot/panel_1706539561184/work/panel/dist/lib/models/file_download.js"],["./html","/croot/panel_1706539561184/work/panel/dist/lib/models/html.js"],["./ipywidget","/croot/panel_1706539561184/work/panel/dist/lib/models/ipywidget.js"],["./json","/croot/panel_1706539561184/work/panel/dist/lib/models/json.js"],["./jsoneditor","/croot/panel_1706539561184/work/panel/dist/lib/models/jsoneditor.js"],["./katex","/croot/panel_1706539561184/work/panel/dist/lib/models/katex.js"],["./location","/croot/panel_1706539561184/work/panel/dist/lib/models/location.js"],["./mathjax","/croot/panel_1706539561184/work/panel/dist/lib/models/mathjax.js"],["./pdf","/croot/panel_1706539561184/work/panel/dist/lib/models/pdf.js"],["./perspective","/croot/panel_1706539561184/work/panel/dist/lib/models/perspective.js"],["./player","/croot/panel_1706539561184/work/panel/dist/lib/models/player.js"],["./plotly","/croot/panel_1706539561184/work/panel/dist/lib/models/plotly.js"],["./progress","/croot/panel_1706539561184/work/panel/dist/lib/models/progress.js"],["./quill","/croot/panel_1706539561184/work/panel/dist/lib/models/quill.js"],["./radio_button_group","/croot/panel_1706539561184/work/panel/dist/lib/models/radio_button_group.js"],["./reactive_html","/croot/panel_1706539561184/work/panel/dist/lib/models/reactive_html.js"],["./singleselect","/croot/panel_1706539561184/work/panel/dist/lib/models/singleselect.js"],["./speech_to_text","/croot/panel_1706539561184/work/panel/dist/lib/models/speech_to_text.js"],["./state","/croot/panel_1706539561184/work/panel/dist/lib/models/state.js"],["./tabs","/croot/panel_1706539561184/work/panel/dist/lib/models/tabs.js"],["./terminal","/croot/panel_1706539561184/work/panel/dist/lib/models/terminal.js"],["./textarea_input","/croot/panel_1706539561184/work/panel/dist/lib/models/textarea_input.js"],["./text_to_speech","/croot/panel_1706539561184/work/panel/dist/lib/models/text_to_speech.js"],["./icon","/croot/panel_1706539561184/work/panel/dist/lib/models/icon.js"],["./tooltip_icon","/croot/panel_1706539561184/work/panel/dist/lib/models/tooltip_icon.js"],["./trend","/croot/panel_1706539561184/work/panel/dist/lib/models/trend.js"],["./vega","/croot/panel_1706539561184/work/panel/dist/lib/models/vega.js"],["./video","/croot/panel_1706539561184/work/panel/dist/lib/models/video.js"],["./videostream","/croot/panel_1706539561184/work/panel/dist/lib/models/videostream.js"],["./vizzu","/croot/panel_1706539561184/work/panel/dist/lib/models/vizzu.js"],["./vtk","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/index.js"]],"dependency_map":[],"exported":[{"type":"bindings","bindings":[[null,"AcePlot"]],"module":"./ace"},{"type":"bindings","bindings":[[null,"Audio"]],"module":"./audio"},{"type":"bindings","bindings":[[null,"BrowserInfo"]],"module":"./browser"},{"type":"bindings","bindings":[[null,"Button"]],"module":"./button"},{"type":"bindings","bindings":[[null,"Card"]],"module":"./card"},{"type":"bindings","bindings":[[null,"CheckboxButtonGroup"]],"module":"./checkbox_button_group"},{"type":"bindings","bindings":[[null,"Column"]],"module":"./column"},{"type":"bindings","bindings":[[null,"CommManager"]],"module":"./comm_manager"},{"type":"bindings","bindings":[[null,"CustomSelect"]],"module":"./customselect"},{"type":"bindings","bindings":[[null,"DataTabulator"]],"module":"./tabulator"},{"type":"bindings","bindings":[[null,"DatetimePicker"]],"module":"./datetime_picker"},{"type":"bindings","bindings":[[null,"DeckGLPlot"]],"module":"./deckgl"},{"type":"bindings","bindings":[[null,"ECharts"]],"module":"./echarts"},{"type":"bindings","bindings":[[null,"FileDownload"]],"module":"./file_download"},{"type":"bindings","bindings":[[null,"HTML"]],"module":"./html"},{"type":"bindings","bindings":[[null,"IPyWidget"]],"module":"./ipywidget"},{"type":"bindings","bindings":[[null,"JSON"]],"module":"./json"},{"type":"bindings","bindings":[[null,"JSONEditor"]],"module":"./jsoneditor"},{"type":"bindings","bindings":[[null,"KaTeX"]],"module":"./katex"},{"type":"bindings","bindings":[[null,"Location"]],"module":"./location"},{"type":"bindings","bindings":[[null,"MathJax"]],"module":"./mathjax"},{"type":"bindings","bindings":[[null,"PDF"]],"module":"./pdf"},{"type":"bindings","bindings":[[null,"Perspective"]],"module":"./perspective"},{"type":"bindings","bindings":[[null,"Player"]],"module":"./player"},{"type":"bindings","bindings":[[null,"PlotlyPlot"]],"module":"./plotly"},{"type":"bindings","bindings":[[null,"Progress"]],"module":"./progress"},{"type":"bindings","bindings":[[null,"QuillInput"]],"module":"./quill"},{"type":"bindings","bindings":[[null,"RadioButtonGroup"]],"module":"./radio_button_group"},{"type":"bindings","bindings":[[null,"ReactiveHTML"]],"module":"./reactive_html"},{"type":"bindings","bindings":[[null,"SingleSelect"]],"module":"./singleselect"},{"type":"bindings","bindings":[[null,"SpeechToText"]],"module":"./speech_to_text"},{"type":"bindings","bindings":[[null,"State"]],"module":"./state"},{"type":"bindings","bindings":[[null,"Tabs"]],"module":"./tabs"},{"type":"bindings","bindings":[[null,"Terminal"]],"module":"./terminal"},{"type":"bindings","bindings":[[null,"TextAreaInput"]],"module":"./textarea_input"},{"type":"bindings","bindings":[[null,"TextToSpeech"]],"module":"./text_to_speech"},{"type":"bindings","bindings":[[null,"ToggleIcon"]],"module":"./icon"},{"type":"bindings","bindings":[[null,"TooltipIcon"]],"module":"./tooltip_icon"},{"type":"bindings","bindings":[[null,"TrendIndicator"]],"module":"./trend"},{"type":"bindings","bindings":[[null,"VegaPlot"]],"module":"./vega"},{"type":"bindings","bindings":[[null,"Video"]],"module":"./video"},{"type":"bindings","bindings":[[null,"VideoStream"]],"module":"./videostream"},{"type":"bindings","bindings":[[null,"VizzuChart"]],"module":"./vizzu"},{"type":"namespace","module":"./vtk"}],"externals":[],"shims":[]},"code":{"source":"/* models/index.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    var ace_1 = require(\"464e3dc85c\") /* ./ace */;\n    __esExport(\"AcePlot\", ace_1.AcePlot);\n    var audio_1 = require(\"cfb5b1a85b\") /* ./audio */;\n    __esExport(\"Audio\", audio_1.Audio);\n    var browser_1 = require(\"af84f1061d\") /* ./browser */;\n    __esExport(\"BrowserInfo\", browser_1.BrowserInfo);\n    var button_1 = require(\"0e384ee9c4\") /* ./button */;\n    __esExport(\"Button\", button_1.Button);\n    var card_1 = require(\"5356bf07b1\") /* ./card */;\n    __esExport(\"Card\", card_1.Card);\n    var checkbox_button_group_1 = require(\"820473477c\") /* ./checkbox_button_group */;\n    __esExport(\"CheckboxButtonGroup\", checkbox_button_group_1.CheckboxButtonGroup);\n    var column_1 = require(\"991bd33955\") /* ./column */;\n    __esExport(\"Column\", column_1.Column);\n    var comm_manager_1 = require(\"eca6f2cacb\") /* ./comm_manager */;\n    __esExport(\"CommManager\", comm_manager_1.CommManager);\n    var customselect_1 = require(\"e258e515be\") /* ./customselect */;\n    __esExport(\"CustomSelect\", customselect_1.CustomSelect);\n    var tabulator_1 = require(\"f7b17ce11c\") /* ./tabulator */;\n    __esExport(\"DataTabulator\", tabulator_1.DataTabulator);\n    var datetime_picker_1 = require(\"5fd6501095\") /* ./datetime_picker */;\n    __esExport(\"DatetimePicker\", datetime_picker_1.DatetimePicker);\n    var deckgl_1 = require(\"19b5a68a40\") /* ./deckgl */;\n    __esExport(\"DeckGLPlot\", deckgl_1.DeckGLPlot);\n    var echarts_1 = require(\"7bc4e47bd5\") /* ./echarts */;\n    __esExport(\"ECharts\", echarts_1.ECharts);\n    var file_download_1 = require(\"ab30c7afd7\") /* ./file_download */;\n    __esExport(\"FileDownload\", file_download_1.FileDownload);\n    var html_1 = require(\"3db2e41978\") /* ./html */;\n    __esExport(\"HTML\", html_1.HTML);\n    var ipywidget_1 = require(\"4dfd782539\") /* ./ipywidget */;\n    __esExport(\"IPyWidget\", ipywidget_1.IPyWidget);\n    var json_1 = require(\"e954d48822\") /* ./json */;\n    __esExport(\"JSON\", json_1.JSON);\n    var jsoneditor_1 = require(\"3c56a75fcf\") /* ./jsoneditor */;\n    __esExport(\"JSONEditor\", jsoneditor_1.JSONEditor);\n    var katex_1 = require(\"001dfd2dde\") /* ./katex */;\n    __esExport(\"KaTeX\", katex_1.KaTeX);\n    var location_1 = require(\"a85ed38ee9\") /* ./location */;\n    __esExport(\"Location\", location_1.Location);\n    var mathjax_1 = require(\"ca760ebc92\") /* ./mathjax */;\n    __esExport(\"MathJax\", mathjax_1.MathJax);\n    var pdf_1 = require(\"46cccf2270\") /* ./pdf */;\n    __esExport(\"PDF\", pdf_1.PDF);\n    var perspective_1 = require(\"8349fbd43e\") /* ./perspective */;\n    __esExport(\"Perspective\", perspective_1.Perspective);\n    var player_1 = require(\"9148c6a6f9\") /* ./player */;\n    __esExport(\"Player\", player_1.Player);\n    var plotly_1 = require(\"dd1700da9e\") /* ./plotly */;\n    __esExport(\"PlotlyPlot\", plotly_1.PlotlyPlot);\n    var progress_1 = require(\"e6caa5bc95\") /* ./progress */;\n    __esExport(\"Progress\", progress_1.Progress);\n    var quill_1 = require(\"361033d351\") /* ./quill */;\n    __esExport(\"QuillInput\", quill_1.QuillInput);\n    var radio_button_group_1 = require(\"81e6ca704a\") /* ./radio_button_group */;\n    __esExport(\"RadioButtonGroup\", radio_button_group_1.RadioButtonGroup);\n    var reactive_html_1 = require(\"93e5d50dc2\") /* ./reactive_html */;\n    __esExport(\"ReactiveHTML\", reactive_html_1.ReactiveHTML);\n    var singleselect_1 = require(\"665213fba5\") /* ./singleselect */;\n    __esExport(\"SingleSelect\", singleselect_1.SingleSelect);\n    var speech_to_text_1 = require(\"7651136c44\") /* ./speech_to_text */;\n    __esExport(\"SpeechToText\", speech_to_text_1.SpeechToText);\n    var state_1 = require(\"1bb5a1aca6\") /* ./state */;\n    __esExport(\"State\", state_1.State);\n    var tabs_1 = require(\"8013e805da\") /* ./tabs */;\n    __esExport(\"Tabs\", tabs_1.Tabs);\n    var terminal_1 = require(\"4a0674b147\") /* ./terminal */;\n    __esExport(\"Terminal\", terminal_1.Terminal);\n    var textarea_input_1 = require(\"59f46adc8c\") /* ./textarea_input */;\n    __esExport(\"TextAreaInput\", textarea_input_1.TextAreaInput);\n    var text_to_speech_1 = require(\"a44f0bd49f\") /* ./text_to_speech */;\n    __esExport(\"TextToSpeech\", text_to_speech_1.TextToSpeech);\n    var icon_1 = require(\"81d14820f0\") /* ./icon */;\n    __esExport(\"ToggleIcon\", icon_1.ToggleIcon);\n    var tooltip_icon_1 = require(\"74000df4a0\") /* ./tooltip_icon */;\n    __esExport(\"TooltipIcon\", tooltip_icon_1.TooltipIcon);\n    var trend_1 = require(\"c2c4524e04\") /* ./trend */;\n    __esExport(\"TrendIndicator\", trend_1.TrendIndicator);\n    var vega_1 = require(\"b396729d22\") /* ./vega */;\n    __esExport(\"VegaPlot\", vega_1.VegaPlot);\n    var video_1 = require(\"e6e8c94f32\") /* ./video */;\n    __esExport(\"Video\", video_1.Video);\n    var videostream_1 = require(\"2dfabe6882\") /* ./videostream */;\n    __esExport(\"VideoStream\", videostream_1.VideoStream);\n    var vizzu_1 = require(\"dfe3c4a2a9\") /* ./vizzu */;\n    __esExport(\"VizzuChart\", vizzu_1.VizzuChart);\n    tslib_1.__exportStar(require(\"c51f25e2a7\") /* ./vtk */, exports);\n}\n","min_source":"function _(e,a,t,o,c){o();const d=e(\"tslib\");c(\"AcePlot\",e(\"464e3dc85c\").AcePlot),c(\"Audio\",e(\"cfb5b1a85b\").Audio),c(\"BrowserInfo\",e(\"af84f1061d\").BrowserInfo),c(\"Button\",e(\"0e384ee9c4\").Button),c(\"Card\",e(\"5356bf07b1\").Card),c(\"CheckboxButtonGroup\",e(\"820473477c\").CheckboxButtonGroup),c(\"Column\",e(\"991bd33955\").Column),c(\"CommManager\",e(\"eca6f2cacb\").CommManager),c(\"CustomSelect\",e(\"e258e515be\").CustomSelect),c(\"DataTabulator\",e(\"f7b17ce11c\").DataTabulator),c(\"DatetimePicker\",e(\"5fd6501095\").DatetimePicker),c(\"DeckGLPlot\",e(\"19b5a68a40\").DeckGLPlot),c(\"ECharts\",e(\"7bc4e47bd5\").ECharts),c(\"FileDownload\",e(\"ab30c7afd7\").FileDownload),c(\"HTML\",e(\"3db2e41978\").HTML),c(\"IPyWidget\",e(\"4dfd782539\").IPyWidget),c(\"JSON\",e(\"e954d48822\").JSON),c(\"JSONEditor\",e(\"3c56a75fcf\").JSONEditor),c(\"KaTeX\",e(\"001dfd2dde\").KaTeX),c(\"Location\",e(\"a85ed38ee9\").Location),c(\"MathJax\",e(\"ca760ebc92\").MathJax),c(\"PDF\",e(\"46cccf2270\").PDF),c(\"Perspective\",e(\"8349fbd43e\").Perspective),c(\"Player\",e(\"9148c6a6f9\").Player),c(\"PlotlyPlot\",e(\"dd1700da9e\").PlotlyPlot),c(\"Progress\",e(\"e6caa5bc95\").Progress),c(\"QuillInput\",e(\"361033d351\").QuillInput),c(\"RadioButtonGroup\",e(\"81e6ca704a\").RadioButtonGroup),c(\"ReactiveHTML\",e(\"93e5d50dc2\").ReactiveHTML),c(\"SingleSelect\",e(\"665213fba5\").SingleSelect),c(\"SpeechToText\",e(\"7651136c44\").SpeechToText),c(\"State\",e(\"1bb5a1aca6\").State),c(\"Tabs\",e(\"8013e805da\").Tabs),c(\"Terminal\",e(\"4a0674b147\").Terminal),c(\"TextAreaInput\",e(\"59f46adc8c\").TextAreaInput),c(\"TextToSpeech\",e(\"a44f0bd49f\").TextToSpeech),c(\"ToggleIcon\",e(\"81d14820f0\").ToggleIcon),c(\"TooltipIcon\",e(\"74000df4a0\").TooltipIcon),c(\"TrendIndicator\",e(\"c2c4524e04\").TrendIndicator),c(\"VegaPlot\",e(\"b396729d22\").VegaPlot),c(\"Video\",e(\"e6e8c94f32\").Video),c(\"VideoStream\",e(\"2dfabe6882\").VideoStream),c(\"VizzuChart\",e(\"dfe3c4a2a9\").VizzuChart),d.__exportStar(e(\"c51f25e2a7\"),t)}\n//# sourceMappingURL=index.min.js.map","min_map":"{\"version\":3,\"file\":\"index.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"tslib_1\",\"AcePlot\",\"Audio\",\"BrowserInfo\",\"Button\",\"Card\",\"CheckboxButtonGroup\",\"Column\",\"CommManager\",\"CustomSelect\",\"DataTabulator\",\"DatetimePicker\",\"DeckGLPlot\",\"ECharts\",\"FileDownload\",\"HTML\",\"IPyWidget\",\"JSON\",\"JSONEditor\",\"KaTeX\",\"Location\",\"MathJax\",\"PDF\",\"Perspective\",\"Player\",\"PlotlyPlot\",\"Progress\",\"QuillInput\",\"RadioButtonGroup\",\"ReactiveHTML\",\"SingleSelect\",\"SpeechToText\",\"State\",\"Tabs\",\"Terminal\",\"TextAreaInput\",\"TextToSpeech\",\"ToggleIcon\",\"TooltipIcon\",\"TrendIndicator\",\"VegaPlot\",\"Video\",\"VideoStream\",\"VizzuChart\",\"__exportStar\"],\"sources\":[\"0\"],\"mappings\":\"AAAsB,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GACnED,IACA,MAAME,EAAUL,EAAQ,SAExBI,EAAW,UADCJ,EAAQ,cACQM,SAE5BF,EAAW,QADGJ,EAAQ,cACMO,OAE5BH,EAAW,cADKJ,EAAQ,cACYQ,aAEpCJ,EAAW,SADIJ,EAAQ,cACOS,QAE9BL,EAAW,OADEJ,EAAQ,cACKU,MAE1BN,EAAW,sBADmBJ,EAAQ,cACoBW,qBAE1DP,EAAW,SADIJ,EAAQ,cACOY,QAE9BR,EAAW,cADUJ,EAAQ,cACYa,aAEzCT,EAAW,eADUJ,EAAQ,cACac,cAE1CV,EAAW,gBADOJ,EAAQ,cACce,eAExCX,EAAW,iBADaJ,EAAQ,cACegB,gBAE/CZ,EAAW,aADIJ,EAAQ,cACWiB,YAElCb,EAAW,UADKJ,EAAQ,cACQkB,SAEhCd,EAAW,eADWJ,EAAQ,cACamB,cAE3Cf,EAAW,OADEJ,EAAQ,cACKoB,MAE1BhB,EAAW,YADOJ,EAAQ,cACUqB,WAEpCjB,EAAW,OADEJ,EAAQ,cACKsB,MAE1BlB,EAAW,aADQJ,EAAQ,cACWuB,YAEtCnB,EAAW,QADGJ,EAAQ,cACMwB,OAE5BpB,EAAW,WADMJ,EAAQ,cACSyB,UAElCrB,EAAW,UADKJ,EAAQ,cACQ0B,SAEhCtB,EAAW,MADCJ,EAAQ,cACI2B,KAExBvB,EAAW,cADSJ,EAAQ,cACY4B,aAExCxB,EAAW,SADIJ,EAAQ,cACO6B,QAE9BzB,EAAW,aADIJ,EAAQ,cACW8B,YAElC1B,EAAW,WADMJ,EAAQ,cACS+B,UAElC3B,EAAW,aADGJ,EAAQ,cACWgC,YAEjC5B,EAAW,mBADgBJ,EAAQ,cACiBiC,kBAEpD7B,EAAW,eADWJ,EAAQ,cACakC,cAE3C9B,EAAW,eADUJ,EAAQ,cACamC,cAE1C/B,EAAW,eADYJ,EAAQ,cACaoC,cAE5ChC,EAAW,QADGJ,EAAQ,cACMqC,OAE5BjC,EAAW,OADEJ,EAAQ,cACKsC,MAE1BlC,EAAW,WADMJ,EAAQ,cACSuC,UAElCnC,EAAW,gBADYJ,EAAQ,cACcwC,eAE7CpC,EAAW,eADYJ,EAAQ,cACayC,cAE5CrC,EAAW,aADEJ,EAAQ,cACW0C,YAEhCtC,EAAW,cADUJ,EAAQ,cACY2C,aAEzCvC,EAAW,iBADGJ,EAAQ,cACe4C,gBAErCxC,EAAW,WADEJ,EAAQ,cACS6C,UAE9BzC,EAAW,QADGJ,EAAQ,cACM8C,OAE5B1C,EAAW,cADSJ,EAAQ,cACY+C,aAExC3C,EAAW,aADGJ,EAAQ,cACWgD,YACjC3C,EAAQ4C,aAAajD,EAAQ,cAA2BE,EAC5D\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/ace.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/ace.js","canonical":"models/ace","resolution":"ESM","id":"464e3dc85c","hash":"464e3dc85c41f13aff71d15ffcf1f5c479462d2a9a925e493a8dceb98f361c7a","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AcePlot = exports.AcePlotView = void 0;\nvar _a;\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst layout_1 = require(\"./layout\");\nfunction ID() {\n    // Math.random should be unique because of its seeding algorithm.\n    // Convert it to base 36 (numbers + letters), and grab the first 9 characters\n    // after the decimal.\n    return '_' + Math.random().toString(36).substr(2, 9);\n}\nclass AcePlotView extends layout_1.HTMLBoxView {\n    initialize() {\n        super.initialize();\n        this._container = (0, dom_1.div)({\n            id: ID(),\n            style: {\n                width: \"100%\",\n                height: \"100%\",\n                zIndex: 0,\n            }\n        });\n    }\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.code.change, () => this._update_code_from_model());\n        this.connect(this.model.properties.theme.change, () => this._update_theme());\n        this.connect(this.model.properties.language.change, () => this._update_language());\n        this.connect(this.model.properties.filename.change, () => this._update_filename());\n        this.connect(this.model.properties.print_margin.change, () => this._update_print_margin());\n        this.connect(this.model.properties.annotations.change, () => this._add_annotations());\n        this.connect(this.model.properties.readonly.change, () => {\n            this._editor.setReadOnly(this.model.readonly);\n        });\n    }\n    render() {\n        super.render();\n        if (!(this._container === this.shadow_el.childNodes[0]))\n            this.shadow_el.append(this._container);\n        this._container.textContent = this.model.code;\n        this._editor = ace.edit(this._container);\n        this._editor.renderer.attachToShadowRoot();\n        this._langTools = ace.require('ace/ext/language_tools');\n        this._modelist = ace.require(\"ace/ext/modelist\");\n        this._editor.setOptions({\n            enableBasicAutocompletion: true,\n            enableSnippets: true,\n            fontFamily: \"monospace\", //hack for cursor position\n        });\n        this._update_theme();\n        this._update_filename();\n        this._update_language();\n        this._editor.setReadOnly(this.model.readonly);\n        this._editor.setShowPrintMargin(this.model.print_margin);\n        this._editor.on('change', () => this._update_code_from_editor());\n    }\n    _update_code_from_model() {\n        if (this._editor && this._editor.getValue() != this.model.code)\n            this._editor.setValue(this.model.code);\n    }\n    _update_print_margin() {\n        this._editor.setShowPrintMargin(this.model.print_margin);\n    }\n    _update_code_from_editor() {\n        if (this._editor.getValue() != this.model.code) {\n            this.model.code = this._editor.getValue();\n        }\n    }\n    _update_theme() {\n        this._editor.setTheme(`ace/theme/${this.model.theme}`);\n    }\n    _update_filename() {\n        if (this.model.filename) {\n            const mode = this._modelist.getModeForPath(this.model.filename).mode;\n            this.model.language = mode.slice(9);\n        }\n    }\n    _update_language() {\n        if (this.model.language != null) {\n            this._editor.session.setMode(`ace/mode/${this.model.language}`);\n        }\n    }\n    _add_annotations() {\n        this._editor.session.setAnnotations(this.model.annotations);\n    }\n    after_layout() {\n        super.after_layout();\n        this._editor.resize();\n    }\n}\nexports.AcePlotView = AcePlotView;\nAcePlotView.__name__ = \"AcePlotView\";\nclass AcePlot extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.AcePlot = AcePlot;\n_a = AcePlot;\nAcePlot.__name__ = \"AcePlot\";\nAcePlot.__module__ = \"panel.models.ace\";\n(() => {\n    _a.prototype.default_view = AcePlotView;\n    _a.define(({ Any, Array, Boolean, String, Nullable }) => ({\n        code: [String, ''],\n        filename: [Nullable(String), null],\n        language: [String, ''],\n        theme: [String, 'chrome'],\n        annotations: [Array(Any), []],\n        readonly: [Boolean, false],\n        print_margin: [Boolean, false]\n    }));\n    _a.override({\n        height: 300,\n        width: 300\n    });\n})();\n//# sourceMappingURL=ace.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"AcePlotView"},{"type":"named","name":"AcePlot"}],"externals":[],"shims":[]},"code":{"source":"/* models/ace.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    function ID() {\n        // Math.random should be unique because of its seeding algorithm.\n        // Convert it to base 36 (numbers + letters), and grab the first 9 characters\n        // after the decimal.\n        return '_' + Math.random().toString(36).substr(2, 9);\n    }\n    class AcePlotView extends layout_1.HTMLBoxView {\n        initialize() {\n            super.initialize();\n            this._container = (0, dom_1.div)({\n                id: ID(),\n                style: {\n                    width: \"100%\",\n                    height: \"100%\",\n                    zIndex: 0,\n                }\n            });\n        }\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.code.change, () => this._update_code_from_model());\n            this.connect(this.model.properties.theme.change, () => this._update_theme());\n            this.connect(this.model.properties.language.change, () => this._update_language());\n            this.connect(this.model.properties.filename.change, () => this._update_filename());\n            this.connect(this.model.properties.print_margin.change, () => this._update_print_margin());\n            this.connect(this.model.properties.annotations.change, () => this._add_annotations());\n            this.connect(this.model.properties.readonly.change, () => {\n                this._editor.setReadOnly(this.model.readonly);\n            });\n        }\n        render() {\n            super.render();\n            if (!(this._container === this.shadow_el.childNodes[0]))\n                this.shadow_el.append(this._container);\n            this._container.textContent = this.model.code;\n            this._editor = ace.edit(this._container);\n            this._editor.renderer.attachToShadowRoot();\n            this._langTools = ace.require('ace/ext/language_tools');\n            this._modelist = ace.require(\"ace/ext/modelist\");\n            this._editor.setOptions({\n                enableBasicAutocompletion: true,\n                enableSnippets: true,\n                fontFamily: \"monospace\", //hack for cursor position\n            });\n            this._update_theme();\n            this._update_filename();\n            this._update_language();\n            this._editor.setReadOnly(this.model.readonly);\n            this._editor.setShowPrintMargin(this.model.print_margin);\n            this._editor.on('change', () => this._update_code_from_editor());\n        }\n        _update_code_from_model() {\n            if (this._editor && this._editor.getValue() != this.model.code)\n                this._editor.setValue(this.model.code);\n        }\n        _update_print_margin() {\n            this._editor.setShowPrintMargin(this.model.print_margin);\n        }\n        _update_code_from_editor() {\n            if (this._editor.getValue() != this.model.code) {\n                this.model.code = this._editor.getValue();\n            }\n        }\n        _update_theme() {\n            this._editor.setTheme(`ace/theme/${this.model.theme}`);\n        }\n        _update_filename() {\n            if (this.model.filename) {\n                const mode = this._modelist.getModeForPath(this.model.filename).mode;\n                this.model.language = mode.slice(9);\n            }\n        }\n        _update_language() {\n            if (this.model.language != null) {\n                this._editor.session.setMode(`ace/mode/${this.model.language}`);\n            }\n        }\n        _add_annotations() {\n            this._editor.session.setAnnotations(this.model.annotations);\n        }\n        after_layout() {\n            super.after_layout();\n            this._editor.resize();\n        }\n    }\n    exports.AcePlotView = AcePlotView;\n    AcePlotView.__name__ = \"AcePlotView\";\n    class AcePlot extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.AcePlot = AcePlot;\n    _a = AcePlot;\n    AcePlot.__name__ = \"AcePlot\";\n    AcePlot.__module__ = \"panel.models.ace\";\n    (() => {\n        _a.prototype.default_view = AcePlotView;\n        _a.define(({ Any, Array, Boolean, String, Nullable }) => ({\n            code: [String, ''],\n            filename: [Nullable(String), null],\n            language: [String, ''],\n            theme: [String, 'chrome'],\n            annotations: [Array(Any), []],\n            readonly: [Boolean, false],\n            print_margin: [Boolean, false]\n        }));\n        _a.override({\n            height: 300,\n            width: 300\n        });\n    })();\n}\n","min_source":"function _(e,t,i,o,n){var s;o();const a=e(\"@bokehjs/core/dom\"),d=e(\"cac5f3ed28\");class h extends d.HTMLBoxView{initialize(){super.initialize(),this._container=(0,a.div)({id:\"_\"+Math.random().toString(36).substr(2,9),style:{width:\"100%\",height:\"100%\",zIndex:0}})}connect_signals(){super.connect_signals(),this.connect(this.model.properties.code.change,(()=>this._update_code_from_model())),this.connect(this.model.properties.theme.change,(()=>this._update_theme())),this.connect(this.model.properties.language.change,(()=>this._update_language())),this.connect(this.model.properties.filename.change,(()=>this._update_filename())),this.connect(this.model.properties.print_margin.change,(()=>this._update_print_margin())),this.connect(this.model.properties.annotations.change,(()=>this._add_annotations())),this.connect(this.model.properties.readonly.change,(()=>{this._editor.setReadOnly(this.model.readonly)}))}render(){super.render(),this._container!==this.shadow_el.childNodes[0]&&this.shadow_el.append(this._container),this._container.textContent=this.model.code,this._editor=ace.edit(this._container),this._editor.renderer.attachToShadowRoot(),this._langTools=ace.require(\"ace/ext/language_tools\"),this._modelist=ace.require(\"ace/ext/modelist\"),this._editor.setOptions({enableBasicAutocompletion:!0,enableSnippets:!0,fontFamily:\"monospace\"}),this._update_theme(),this._update_filename(),this._update_language(),this._editor.setReadOnly(this.model.readonly),this._editor.setShowPrintMargin(this.model.print_margin),this._editor.on(\"change\",(()=>this._update_code_from_editor()))}_update_code_from_model(){this._editor&&this._editor.getValue()!=this.model.code&&this._editor.setValue(this.model.code)}_update_print_margin(){this._editor.setShowPrintMargin(this.model.print_margin)}_update_code_from_editor(){this._editor.getValue()!=this.model.code&&(this.model.code=this._editor.getValue())}_update_theme(){this._editor.setTheme(`ace/theme/${this.model.theme}`)}_update_filename(){if(this.model.filename){const e=this._modelist.getModeForPath(this.model.filename).mode;this.model.language=e.slice(9)}}_update_language(){null!=this.model.language&&this._editor.session.setMode(`ace/mode/${this.model.language}`)}_add_annotations(){this._editor.session.setAnnotations(this.model.annotations)}after_layout(){super.after_layout(),this._editor.resize()}}i.AcePlotView=h,h.__name__=\"AcePlotView\";class r extends d.HTMLBox{constructor(e){super(e)}}i.AcePlot=r,s=r,r.__name__=\"AcePlot\",r.__module__=\"panel.models.ace\",s.prototype.default_view=h,s.define((({Any:e,Array:t,Boolean:i,String:o,Nullable:n})=>({code:[o,\"\"],filename:[n(o),null],language:[o,\"\"],theme:[o,\"chrome\"],annotations:[t(e),[]],readonly:[i,!1],print_margin:[i,!1]}))),s.override({height:300,width:300})}\n//# sourceMappingURL=ace.min.js.map","min_map":"{\"version\":3,\"file\":\"ace.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"dom_1\",\"layout_1\",\"AcePlotView\",\"HTMLBoxView\",\"initialize\",\"super\",\"this\",\"_container\",\"div\",\"id\",\"Math\",\"random\",\"toString\",\"substr\",\"style\",\"width\",\"height\",\"zIndex\",\"connect_signals\",\"connect\",\"model\",\"properties\",\"code\",\"change\",\"_update_code_from_model\",\"theme\",\"_update_theme\",\"language\",\"_update_language\",\"filename\",\"_update_filename\",\"print_margin\",\"_update_print_margin\",\"annotations\",\"_add_annotations\",\"readonly\",\"_editor\",\"setReadOnly\",\"render\",\"shadow_el\",\"childNodes\",\"append\",\"textContent\",\"ace\",\"edit\",\"renderer\",\"attachToShadowRoot\",\"_langTools\",\"_modelist\",\"setOptions\",\"enableBasicAutocompletion\",\"enableSnippets\",\"fontFamily\",\"setShowPrintMargin\",\"on\",\"_update_code_from_editor\",\"getValue\",\"setValue\",\"setTheme\",\"mode\",\"getModeForPath\",\"slice\",\"session\",\"setMode\",\"setAnnotations\",\"after_layout\",\"resize\",\"__name__\",\"AcePlot\",\"HTMLBox\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Any\",\"Array\",\"Boolean\",\"String\",\"Nullable\",\"override\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/layout.js","canonical":"models/layout","resolution":"ESM","id":"cac5f3ed28","hash":"cac5f3ed28579a28db7af4f7b965ff16608de9829cc050d85445bff4fd9dbb1e","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HTMLBox = exports.HTMLBoxView = exports.set_size = exports.PanelMarkupView = void 0;\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst types_1 = require(\"@bokehjs/core/util/types\");\nconst widget_1 = require(\"@bokehjs/models/widgets/widget\");\nconst layout_dom_1 = require(\"@bokehjs/models/layouts/layout_dom\");\nclass PanelMarkupView extends widget_1.WidgetView {\n    connect_signals() {\n        super.connect_signals();\n        const { width, height, min_height, max_height, margin, sizing_mode } = this.model.properties;\n        this.on_change([width, height, min_height, max_height, margin, sizing_mode], () => {\n            set_size(this.el, this.model);\n            set_size(this.container, this.model, false);\n        });\n    }\n    async lazy_initialize() {\n        await super.lazy_initialize();\n        if (this.provider.status == \"not_started\" || this.provider.status == \"loading\")\n            this.provider.ready.connect(() => {\n                if (this.contains_tex_string(this.model.text))\n                    this.render();\n            });\n    }\n    watch_stylesheets() {\n        this._initialized_stylesheets = {};\n        for (const sts of this._applied_stylesheets) {\n            const style_el = sts.el;\n            if (style_el instanceof HTMLLinkElement) {\n                this._initialized_stylesheets[style_el.href] = false;\n                style_el.addEventListener(\"load\", () => {\n                    this._initialized_stylesheets[style_el.href] = true;\n                    if (Object.values(this._initialized_stylesheets).every(Boolean))\n                        this.style_redraw();\n                });\n            }\n        }\n    }\n    style_redraw() {\n    }\n    has_math_disabled() {\n        return this.model.disable_math || !this.contains_tex_string(this.model.text);\n    }\n    render() {\n        super.render();\n        set_size(this.el, this.model);\n        this.container = (0, dom_1.div)();\n        set_size(this.container, this.model, false);\n        this.shadow_el.appendChild(this.container);\n        if (this.provider.status == \"failed\" || this.provider.status == \"loaded\")\n            this._has_finished = true;\n    }\n}\nexports.PanelMarkupView = PanelMarkupView;\nPanelMarkupView.__name__ = \"PanelMarkupView\";\nfunction set_size(el, model, adjustMargin = true) {\n    let width_policy = model.width != null ? \"fixed\" : \"fit\";\n    let height_policy = model.height != null ? \"fixed\" : \"fit\";\n    const { sizing_mode, margin } = model;\n    if (sizing_mode != null) {\n        if (sizing_mode == \"fixed\")\n            width_policy = height_policy = \"fixed\";\n        else if (sizing_mode == \"stretch_both\")\n            width_policy = height_policy = \"max\";\n        else if (sizing_mode == \"stretch_width\")\n            width_policy = \"max\";\n        else if (sizing_mode == \"stretch_height\")\n            height_policy = \"max\";\n        else {\n            switch (sizing_mode) {\n                case \"scale_width\":\n                    width_policy = \"max\";\n                    height_policy = \"min\";\n                    break;\n                case \"scale_height\":\n                    width_policy = \"min\";\n                    height_policy = \"max\";\n                    break;\n                case \"scale_both\":\n                    width_policy = \"max\";\n                    height_policy = \"max\";\n                    break;\n                default:\n                    throw new Error(\"unreachable\");\n            }\n        }\n    }\n    let wm, hm;\n    if (!adjustMargin) {\n        hm = wm = 0;\n    }\n    else if ((0, types_1.isArray)(margin)) {\n        if (margin.length === 4) {\n            hm = margin[0] + margin[2];\n            wm = margin[1] + margin[3];\n        }\n        else {\n            hm = margin[0] * 2;\n            wm = margin[1] * 2;\n        }\n    }\n    else if (margin == null) {\n        hm = wm = 0;\n    }\n    else {\n        wm = hm = margin * 2;\n    }\n    if (width_policy == \"fixed\" && model.width)\n        el.style.width = model.width + \"px\";\n    else if (width_policy == \"max\")\n        el.style.width = wm ? `calc(100% - ${wm}px)` : \"100%\";\n    if (model.min_width != null)\n        el.style.minWidth = model.min_width + \"px\";\n    if (model.max_width != null)\n        el.style.maxWidth = model.max_width + \"px\";\n    if (height_policy == \"fixed\" && model.height)\n        el.style.height = model.height + \"px\";\n    else if (height_policy == \"max\")\n        el.style.height = hm ? `calc(100% - ${hm}px)` : \"100%\";\n    if (model.min_height != null)\n        el.style.minHeight = model.min_height + \"px\";\n    if (model.max_width != null)\n        el.style.maxHeight = model.max_height + \"px\";\n}\nexports.set_size = set_size;\nclass HTMLBoxView extends layout_dom_1.LayoutDOMView {\n    connect_signals() {\n        super.connect_signals();\n        const { width, height, min_height, max_height, margin, sizing_mode } = this.model.properties;\n        this.on_change([width, height, min_height, max_height, margin, sizing_mode], () => {\n            set_size(this.el, this.model);\n        });\n    }\n    render() {\n        super.render();\n        set_size(this.el, this.model);\n    }\n    watch_stylesheets() {\n        this._initialized_stylesheets = {};\n        for (const sts of this._applied_stylesheets) {\n            const style_el = sts.el;\n            if (style_el instanceof HTMLLinkElement) {\n                this._initialized_stylesheets[style_el.href] = false;\n                style_el.addEventListener(\"load\", () => {\n                    this._initialized_stylesheets[style_el.href] = true;\n                    if (Object.values(this._initialized_stylesheets).every(Boolean))\n                        this.style_redraw();\n                });\n            }\n        }\n    }\n    style_redraw() {\n    }\n    get child_models() {\n        return [];\n    }\n}\nexports.HTMLBoxView = HTMLBoxView;\nHTMLBoxView.__name__ = \"HTMLBoxView\";\nclass HTMLBox extends layout_dom_1.LayoutDOM {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.HTMLBox = HTMLBox;\nHTMLBox.__name__ = \"HTMLBox\";\n//# sourceMappingURL=layout.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"PanelMarkupView"},{"type":"named","name":"set_size"},{"type":"named","name":"HTMLBoxView"},{"type":"named","name":"HTMLBox"}],"externals":[],"shims":[]},"code":{"source":"/* models/layout.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const types_1 = require(\"@bokehjs/core/util/types\");\n    const widget_1 = require(\"@bokehjs/models/widgets/widget\");\n    const layout_dom_1 = require(\"@bokehjs/models/layouts/layout_dom\");\n    class PanelMarkupView extends widget_1.WidgetView {\n        connect_signals() {\n            super.connect_signals();\n            const { width, height, min_height, max_height, margin, sizing_mode } = this.model.properties;\n            this.on_change([width, height, min_height, max_height, margin, sizing_mode], () => {\n                set_size(this.el, this.model);\n                set_size(this.container, this.model, false);\n            });\n        }\n        async lazy_initialize() {\n            await super.lazy_initialize();\n            if (this.provider.status == \"not_started\" || this.provider.status == \"loading\")\n                this.provider.ready.connect(() => {\n                    if (this.contains_tex_string(this.model.text))\n                        this.render();\n                });\n        }\n        watch_stylesheets() {\n            this._initialized_stylesheets = {};\n            for (const sts of this._applied_stylesheets) {\n                const style_el = sts.el;\n                if (style_el instanceof HTMLLinkElement) {\n                    this._initialized_stylesheets[style_el.href] = false;\n                    style_el.addEventListener(\"load\", () => {\n                        this._initialized_stylesheets[style_el.href] = true;\n                        if (Object.values(this._initialized_stylesheets).every(Boolean))\n                            this.style_redraw();\n                    });\n                }\n            }\n        }\n        style_redraw() {\n        }\n        has_math_disabled() {\n            return this.model.disable_math || !this.contains_tex_string(this.model.text);\n        }\n        render() {\n            super.render();\n            set_size(this.el, this.model);\n            this.container = (0, dom_1.div)();\n            set_size(this.container, this.model, false);\n            this.shadow_el.appendChild(this.container);\n            if (this.provider.status == \"failed\" || this.provider.status == \"loaded\")\n                this._has_finished = true;\n        }\n    }\n    exports.PanelMarkupView = PanelMarkupView;\n    PanelMarkupView.__name__ = \"PanelMarkupView\";\n    function set_size(el, model, adjustMargin = true) {\n        let width_policy = model.width != null ? \"fixed\" : \"fit\";\n        let height_policy = model.height != null ? \"fixed\" : \"fit\";\n        const { sizing_mode, margin } = model;\n        if (sizing_mode != null) {\n            if (sizing_mode == \"fixed\")\n                width_policy = height_policy = \"fixed\";\n            else if (sizing_mode == \"stretch_both\")\n                width_policy = height_policy = \"max\";\n            else if (sizing_mode == \"stretch_width\")\n                width_policy = \"max\";\n            else if (sizing_mode == \"stretch_height\")\n                height_policy = \"max\";\n            else {\n                switch (sizing_mode) {\n                    case \"scale_width\":\n                        width_policy = \"max\";\n                        height_policy = \"min\";\n                        break;\n                    case \"scale_height\":\n                        width_policy = \"min\";\n                        height_policy = \"max\";\n                        break;\n                    case \"scale_both\":\n                        width_policy = \"max\";\n                        height_policy = \"max\";\n                        break;\n                    default:\n                        throw new Error(\"unreachable\");\n                }\n            }\n        }\n        let wm, hm;\n        if (!adjustMargin) {\n            hm = wm = 0;\n        }\n        else if ((0, types_1.isArray)(margin)) {\n            if (margin.length === 4) {\n                hm = margin[0] + margin[2];\n                wm = margin[1] + margin[3];\n            }\n            else {\n                hm = margin[0] * 2;\n                wm = margin[1] * 2;\n            }\n        }\n        else if (margin == null) {\n            hm = wm = 0;\n        }\n        else {\n            wm = hm = margin * 2;\n        }\n        if (width_policy == \"fixed\" && model.width)\n            el.style.width = model.width + \"px\";\n        else if (width_policy == \"max\")\n            el.style.width = wm ? `calc(100% - ${wm}px)` : \"100%\";\n        if (model.min_width != null)\n            el.style.minWidth = model.min_width + \"px\";\n        if (model.max_width != null)\n            el.style.maxWidth = model.max_width + \"px\";\n        if (height_policy == \"fixed\" && model.height)\n            el.style.height = model.height + \"px\";\n        else if (height_policy == \"max\")\n            el.style.height = hm ? `calc(100% - ${hm}px)` : \"100%\";\n        if (model.min_height != null)\n            el.style.minHeight = model.min_height + \"px\";\n        if (model.max_width != null)\n            el.style.maxHeight = model.max_height + \"px\";\n    }\n    exports.set_size = set_size;\n    class HTMLBoxView extends layout_dom_1.LayoutDOMView {\n        connect_signals() {\n            super.connect_signals();\n            const { width, height, min_height, max_height, margin, sizing_mode } = this.model.properties;\n            this.on_change([width, height, min_height, max_height, margin, sizing_mode], () => {\n                set_size(this.el, this.model);\n            });\n        }\n        render() {\n            super.render();\n            set_size(this.el, this.model);\n        }\n        watch_stylesheets() {\n            this._initialized_stylesheets = {};\n            for (const sts of this._applied_stylesheets) {\n                const style_el = sts.el;\n                if (style_el instanceof HTMLLinkElement) {\n                    this._initialized_stylesheets[style_el.href] = false;\n                    style_el.addEventListener(\"load\", () => {\n                        this._initialized_stylesheets[style_el.href] = true;\n                        if (Object.values(this._initialized_stylesheets).every(Boolean))\n                            this.style_redraw();\n                    });\n                }\n            }\n        }\n        style_redraw() {\n        }\n        get child_models() {\n            return [];\n        }\n    }\n    exports.HTMLBoxView = HTMLBoxView;\n    HTMLBoxView.__name__ = \"HTMLBoxView\";\n    class HTMLBox extends layout_dom_1.LayoutDOM {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.HTMLBox = HTMLBox;\n    HTMLBox.__name__ = \"HTMLBox\";\n}\n","min_source":"function _(e,t,i,s,h){s();const l=e(\"@bokehjs/core/dom\"),n=e(\"@bokehjs/core/util/types\"),a=e(\"@bokehjs/models/widgets/widget\"),d=e(\"@bokehjs/models/layouts/layout_dom\");class o extends a.WidgetView{connect_signals(){super.connect_signals();const{width:e,height:t,min_height:i,max_height:s,margin:h,sizing_mode:l}=this.model.properties;this.on_change([e,t,i,s,h,l],(()=>{r(this.el,this.model),r(this.container,this.model,!1)}))}async lazy_initialize(){await super.lazy_initialize(),\"not_started\"!=this.provider.status&&\"loading\"!=this.provider.status||this.provider.ready.connect((()=>{this.contains_tex_string(this.model.text)&&this.render()}))}watch_stylesheets(){this._initialized_stylesheets={};for(const e of this._applied_stylesheets){const t=e.el;t instanceof HTMLLinkElement&&(this._initialized_stylesheets[t.href]=!1,t.addEventListener(\"load\",(()=>{this._initialized_stylesheets[t.href]=!0,Object.values(this._initialized_stylesheets).every(Boolean)&&this.style_redraw()})))}}style_redraw(){}has_math_disabled(){return this.model.disable_math||!this.contains_tex_string(this.model.text)}render(){super.render(),r(this.el,this.model),this.container=(0,l.div)(),r(this.container,this.model,!1),this.shadow_el.appendChild(this.container),\"failed\"!=this.provider.status&&\"loaded\"!=this.provider.status||(this._has_finished=!0)}}function r(e,t,i=!0){let s=null!=t.width?\"fixed\":\"fit\",h=null!=t.height?\"fixed\":\"fit\";const{sizing_mode:l,margin:a}=t;if(null!=l)if(\"fixed\"==l)s=h=\"fixed\";else if(\"stretch_both\"==l)s=h=\"max\";else if(\"stretch_width\"==l)s=\"max\";else if(\"stretch_height\"==l)h=\"max\";else switch(l){case\"scale_width\":s=\"max\",h=\"min\";break;case\"scale_height\":s=\"min\",h=\"max\";break;case\"scale_both\":s=\"max\",h=\"max\";break;default:throw new Error(\"unreachable\")}let d,o;i?(0,n.isArray)(a)?4===a.length?(o=a[0]+a[2],d=a[1]+a[3]):(o=2*a[0],d=2*a[1]):null==a?o=d=0:d=o=2*a:o=d=0,\"fixed\"==s&&t.width?e.style.width=t.width+\"px\":\"max\"==s&&(e.style.width=d?`calc(100% - ${d}px)`:\"100%\"),null!=t.min_width&&(e.style.minWidth=t.min_width+\"px\"),null!=t.max_width&&(e.style.maxWidth=t.max_width+\"px\"),\"fixed\"==h&&t.height?e.style.height=t.height+\"px\":\"max\"==h&&(e.style.height=o?`calc(100% - ${o}px)`:\"100%\"),null!=t.min_height&&(e.style.minHeight=t.min_height+\"px\"),null!=t.max_width&&(e.style.maxHeight=t.max_height+\"px\")}i.PanelMarkupView=o,o.__name__=\"PanelMarkupView\",i.set_size=r;class _ extends d.LayoutDOMView{connect_signals(){super.connect_signals();const{width:e,height:t,min_height:i,max_height:s,margin:h,sizing_mode:l}=this.model.properties;this.on_change([e,t,i,s,h,l],(()=>{r(this.el,this.model)}))}render(){super.render(),r(this.el,this.model)}watch_stylesheets(){this._initialized_stylesheets={};for(const e of this._applied_stylesheets){const t=e.el;t instanceof HTMLLinkElement&&(this._initialized_stylesheets[t.href]=!1,t.addEventListener(\"load\",(()=>{this._initialized_stylesheets[t.href]=!0,Object.values(this._initialized_stylesheets).every(Boolean)&&this.style_redraw()})))}}style_redraw(){}get child_models(){return[]}}i.HTMLBoxView=_,_.__name__=\"HTMLBoxView\";class c extends d.LayoutDOM{constructor(e){super(e)}}i.HTMLBox=c,c.__name__=\"HTMLBox\"}\n//# sourceMappingURL=layout.min.js.map","min_map":"{\"version\":3,\"file\":\"layout.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"dom_1\",\"types_1\",\"widget_1\",\"layout_dom_1\",\"PanelMarkupView\",\"WidgetView\",\"connect_signals\",\"super\",\"width\",\"height\",\"min_height\",\"max_height\",\"margin\",\"sizing_mode\",\"this\",\"model\",\"properties\",\"on_change\",\"set_size\",\"el\",\"container\",\"lazy_initialize\",\"provider\",\"status\",\"ready\",\"connect\",\"contains_tex_string\",\"text\",\"render\",\"watch_stylesheets\",\"_initialized_stylesheets\",\"sts\",\"_applied_stylesheets\",\"style_el\",\"HTMLLinkElement\",\"href\",\"addEventListener\",\"Object\",\"values\",\"every\",\"Boolean\",\"style_redraw\",\"has_math_disabled\",\"disable_math\",\"div\",\"shadow_el\",\"appendChild\",\"_has_finished\",\"adjustMargin\",\"width_policy\",\"height_policy\",\"Error\",\"wm\",\"hm\",\"isArray\",\"length\",\"style\",\"min_width\",\"minWidth\",\"max_width\",\"maxWidth\",\"minHeight\",\"maxHeight\",\"__name__\",\"HTMLBoxView\",\"LayoutDOMView\",\"child_models\",\"HTMLBox\",\"LayoutDOM\",\"constructor\",\"attrs\"],\"sources\":[\"0\"],\"mappings\":\"AAAuB,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GACpED,IACA,MAAME,EAAQL,EAAQ,qBAChBM,EAAUN,EAAQ,4BAClBO,EAAWP,EAAQ,kCACnBQ,EAAeR,EAAQ,sCAC7B,MAAMS,UAAwBF,EAASG,WACnC,eAAAC,GACIC,MAAMD,kBACN,MAAME,MAAEA,EAAKC,OAAEA,EAAMC,WAAEA,EAAUC,WAAEA,EAAUC,OAAEA,EAAMC,YAAEA,GAAgBC,KAAKC,MAAMC,WAClFF,KAAKG,UAAU,CAACT,EAAOC,EAAQC,EAAYC,EAAYC,EAAQC,IAAc,KACzEK,EAASJ,KAAKK,GAAIL,KAAKC,OACvBG,EAASJ,KAAKM,UAAWN,KAAKC,OAAO,EAAM,GAEnD,CACA,qBAAMM,SACId,MAAMc,kBACgB,eAAxBP,KAAKQ,SAASC,QAAmD,WAAxBT,KAAKQ,SAASC,QACvDT,KAAKQ,SAASE,MAAMC,SAAQ,KACpBX,KAAKY,oBAAoBZ,KAAKC,MAAMY,OACpCb,KAAKc,QAAQ,GAE7B,CACA,iBAAAC,GACIf,KAAKgB,yBAA2B,CAAC,EACjC,IAAK,MAAMC,KAAOjB,KAAKkB,qBAAsB,CACzC,MAAMC,EAAWF,EAAIZ,GACjBc,aAAoBC,kBACpBpB,KAAKgB,yBAAyBG,EAASE,OAAQ,EAC/CF,EAASG,iBAAiB,QAAQ,KAC9BtB,KAAKgB,yBAAyBG,EAASE,OAAQ,EAC3CE,OAAOC,OAAOxB,KAAKgB,0BAA0BS,MAAMC,UACnD1B,KAAK2B,cAAc,IAGnC,CACJ,CACA,YAAAA,GACA,CACA,iBAAAC,GACI,OAAO5B,KAAKC,MAAM4B,eAAiB7B,KAAKY,oBAAoBZ,KAAKC,MAAMY,KAC3E,CACA,MAAAC,GACIrB,MAAMqB,SACNV,EAASJ,KAAKK,GAAIL,KAAKC,OACvBD,KAAKM,WAAY,EAAIpB,EAAM4C,OAC3B1B,EAASJ,KAAKM,UAAWN,KAAKC,OAAO,GACrCD,KAAK+B,UAAUC,YAAYhC,KAAKM,WACJ,UAAxBN,KAAKQ,SAASC,QAA8C,UAAxBT,KAAKQ,SAASC,SAClDT,KAAKiC,eAAgB,EAC7B,EAIJ,SAAS7B,EAASC,EAAIJ,EAAOiC,GAAe,GACxC,IAAIC,EAA8B,MAAflC,EAAMP,MAAgB,QAAU,MAC/C0C,EAAgC,MAAhBnC,EAAMN,OAAiB,QAAU,MACrD,MAAMI,YAAEA,EAAWD,OAAEA,GAAWG,EAChC,GAAmB,MAAfF,EACA,GAAmB,SAAfA,EACAoC,EAAeC,EAAgB,aAC9B,GAAmB,gBAAfrC,EACLoC,EAAeC,EAAgB,WAC9B,GAAmB,iBAAfrC,EACLoC,EAAe,WACd,GAAmB,kBAAfpC,EACLqC,EAAgB,WAEhB,OAAQrC,GACJ,IAAK,cACDoC,EAAe,MACfC,EAAgB,MAChB,MACJ,IAAK,eACDD,EAAe,MACfC,EAAgB,MAChB,MACJ,IAAK,aACDD,EAAe,MACfC,EAAgB,MAChB,MACJ,QACI,MAAM,IAAIC,MAAM,eAIhC,IAAIC,EAAIC,EACHL,GAGI,EAAI/C,EAAQqD,SAAS1C,GACJ,IAAlBA,EAAO2C,QACPF,EAAKzC,EAAO,GAAKA,EAAO,GACxBwC,EAAKxC,EAAO,GAAKA,EAAO,KAGxByC,EAAiB,EAAZzC,EAAO,GACZwC,EAAiB,EAAZxC,EAAO,IAGD,MAAVA,EACLyC,EAAKD,EAAK,EAGVA,EAAKC,EAAc,EAATzC,EAhBVyC,EAAKD,EAAK,EAkBM,SAAhBH,GAA2BlC,EAAMP,MACjCW,EAAGqC,MAAMhD,MAAQO,EAAMP,MAAQ,KACV,OAAhByC,IACL9B,EAAGqC,MAAMhD,MAAQ4C,EAAK,eAAeA,OAAU,QAC5B,MAAnBrC,EAAM0C,YACNtC,EAAGqC,MAAME,SAAW3C,EAAM0C,UAAY,MACnB,MAAnB1C,EAAM4C,YACNxC,EAAGqC,MAAMI,SAAW7C,EAAM4C,UAAY,MACrB,SAAjBT,GAA4BnC,EAAMN,OAClCU,EAAGqC,MAAM/C,OAASM,EAAMN,OAAS,KACX,OAAjByC,IACL/B,EAAGqC,MAAM/C,OAAS4C,EAAK,eAAeA,OAAU,QAC5B,MAApBtC,EAAML,aACNS,EAAGqC,MAAMK,UAAY9C,EAAML,WAAa,MACrB,MAAnBK,EAAM4C,YACNxC,EAAGqC,MAAMM,UAAY/C,EAAMJ,WAAa,KAChD,CAtEAd,EAAQO,gBAAkBA,EAC1BA,EAAgB2D,SAAW,kBAsE3BlE,EAAQqB,SAAWA,EACnB,MAAM8C,UAAoB7D,EAAa8D,cACnC,eAAA3D,GACIC,MAAMD,kBACN,MAAME,MAAEA,EAAKC,OAAEA,EAAMC,WAAEA,EAAUC,WAAEA,EAAUC,OAAEA,EAAMC,YAAEA,GAAgBC,KAAKC,MAAMC,WAClFF,KAAKG,UAAU,CAACT,EAAOC,EAAQC,EAAYC,EAAYC,EAAQC,IAAc,KACzEK,EAASJ,KAAKK,GAAIL,KAAKC,MAAM,GAErC,CACA,MAAAa,GACIrB,MAAMqB,SACNV,EAASJ,KAAKK,GAAIL,KAAKC,MAC3B,CACA,iBAAAc,GACIf,KAAKgB,yBAA2B,CAAC,EACjC,IAAK,MAAMC,KAAOjB,KAAKkB,qBAAsB,CACzC,MAAMC,EAAWF,EAAIZ,GACjBc,aAAoBC,kBACpBpB,KAAKgB,yBAAyBG,EAASE,OAAQ,EAC/CF,EAASG,iBAAiB,QAAQ,KAC9BtB,KAAKgB,yBAAyBG,EAASE,OAAQ,EAC3CE,OAAOC,OAAOxB,KAAKgB,0BAA0BS,MAAMC,UACnD1B,KAAK2B,cAAc,IAGnC,CACJ,CACA,YAAAA,GACA,CACA,gBAAIyB,GACA,MAAO,EACX,EAEJrE,EAAQmE,YAAcA,EACtBA,EAAYD,SAAW,cACvB,MAAMI,UAAgBhE,EAAaiE,UAC/B,WAAAC,CAAYC,GACR/D,MAAM+D,EACV,EAEJzE,EAAQsE,QAAUA,EAClBA,EAAQJ,SAAW,SACvB\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/audio.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/audio.js","canonical":"models/audio","resolution":"ESM","id":"cfb5b1a85b","hash":"cfb5b1a85baf23bf44bcca467f2fc06b9e010002ec8246bfff894c96dbe5b065","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Audio = exports.AudioView = void 0;\nvar _a;\nconst layout_1 = require(\"./layout\");\nclass AudioView extends layout_1.HTMLBoxView {\n    initialize() {\n        super.initialize();\n        this._blocked = false;\n        this._setting = false;\n        this._time = Date.now();\n    }\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.loop.change, () => this.set_loop());\n        this.connect(this.model.properties.paused.change, () => this.set_paused());\n        this.connect(this.model.properties.time.change, () => this.set_time());\n        this.connect(this.model.properties.value.change, () => this.set_value());\n        this.connect(this.model.properties.volume.change, () => this.set_volume());\n        this.connect(this.model.properties.muted.change, () => this.set_muted());\n        this.connect(this.model.properties.autoplay.change, () => this.set_autoplay());\n    }\n    render() {\n        super.render();\n        this.audioEl = document.createElement('audio');\n        this.audioEl.controls = true;\n        this.audioEl.src = this.model.value;\n        this.audioEl.currentTime = this.model.time;\n        this.audioEl.loop = this.model.loop;\n        this.audioEl.muted = this.model.muted;\n        this.audioEl.autoplay = this.model.autoplay;\n        if (this.model.volume != null)\n            this.audioEl.volume = this.model.volume / 100;\n        else\n            this.model.volume = this.audioEl.volume * 100;\n        this.audioEl.onpause = () => this.model.paused = true;\n        this.audioEl.onplay = () => this.model.paused = false;\n        this.audioEl.ontimeupdate = () => this.update_time(this);\n        this.audioEl.onvolumechange = () => this.update_volume(this);\n        (0, layout_1.set_size)(this.audioEl, this.model, false);\n        this.shadow_el.appendChild(this.audioEl);\n        if (!this.model.paused)\n            this.audioEl.play();\n    }\n    update_time(view) {\n        if (view._setting) {\n            view._setting = false;\n            return;\n        }\n        if ((Date.now() - view._time) < view.model.throttle)\n            return;\n        view._blocked = true;\n        view.model.time = view.audioEl.currentTime;\n        view._time = Date.now();\n    }\n    update_volume(view) {\n        if (view._setting) {\n            view._setting = false;\n            return;\n        }\n        view._blocked = true;\n        view.model.volume = view.audioEl.volume * 100;\n    }\n    set_loop() {\n        this.audioEl.loop = this.model.loop;\n    }\n    set_muted() {\n        this.audioEl.muted = this.model.muted;\n    }\n    set_autoplay() {\n        this.audioEl.autoplay = this.model.autoplay;\n    }\n    set_paused() {\n        if (!this.audioEl.paused && this.model.paused)\n            this.audioEl.pause();\n        if (this.audioEl.paused && !this.model.paused)\n            this.audioEl.play();\n    }\n    set_volume() {\n        if (this._blocked) {\n            this._blocked = false;\n            return;\n        }\n        this._setting = true;\n        if (this.model.volume != null) {\n            this.audioEl.volume = this.model.volume / 100;\n        }\n    }\n    set_time() {\n        if (this._blocked) {\n            this._blocked = false;\n            return;\n        }\n        this._setting = true;\n        this.audioEl.currentTime = this.model.time;\n    }\n    set_value() {\n        this.audioEl.src = this.model.value;\n    }\n}\nexports.AudioView = AudioView;\nAudioView.__name__ = \"AudioView\";\nclass Audio extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.Audio = Audio;\n_a = Audio;\nAudio.__name__ = \"Audio\";\nAudio.__module__ = \"panel.models.widgets\";\n(() => {\n    _a.prototype.default_view = AudioView;\n    _a.define(({ Any, Boolean, Number, Nullable }) => ({\n        loop: [Boolean, false],\n        paused: [Boolean, true],\n        muted: [Boolean, false],\n        autoplay: [Boolean, false],\n        time: [Number, 0],\n        throttle: [Number, 250],\n        value: [Any, ''],\n        volume: [Nullable(Number), null],\n    }));\n})();\n//# sourceMappingURL=audio.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"AudioView"},{"type":"named","name":"Audio"}],"externals":[],"shims":[]},"code":{"source":"/* models/audio.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    class AudioView extends layout_1.HTMLBoxView {\n        initialize() {\n            super.initialize();\n            this._blocked = false;\n            this._setting = false;\n            this._time = Date.now();\n        }\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.loop.change, () => this.set_loop());\n            this.connect(this.model.properties.paused.change, () => this.set_paused());\n            this.connect(this.model.properties.time.change, () => this.set_time());\n            this.connect(this.model.properties.value.change, () => this.set_value());\n            this.connect(this.model.properties.volume.change, () => this.set_volume());\n            this.connect(this.model.properties.muted.change, () => this.set_muted());\n            this.connect(this.model.properties.autoplay.change, () => this.set_autoplay());\n        }\n        render() {\n            super.render();\n            this.audioEl = document.createElement('audio');\n            this.audioEl.controls = true;\n            this.audioEl.src = this.model.value;\n            this.audioEl.currentTime = this.model.time;\n            this.audioEl.loop = this.model.loop;\n            this.audioEl.muted = this.model.muted;\n            this.audioEl.autoplay = this.model.autoplay;\n            if (this.model.volume != null)\n                this.audioEl.volume = this.model.volume / 100;\n            else\n                this.model.volume = this.audioEl.volume * 100;\n            this.audioEl.onpause = () => this.model.paused = true;\n            this.audioEl.onplay = () => this.model.paused = false;\n            this.audioEl.ontimeupdate = () => this.update_time(this);\n            this.audioEl.onvolumechange = () => this.update_volume(this);\n            (0, layout_1.set_size)(this.audioEl, this.model, false);\n            this.shadow_el.appendChild(this.audioEl);\n            if (!this.model.paused)\n                this.audioEl.play();\n        }\n        update_time(view) {\n            if (view._setting) {\n                view._setting = false;\n                return;\n            }\n            if ((Date.now() - view._time) < view.model.throttle)\n                return;\n            view._blocked = true;\n            view.model.time = view.audioEl.currentTime;\n            view._time = Date.now();\n        }\n        update_volume(view) {\n            if (view._setting) {\n                view._setting = false;\n                return;\n            }\n            view._blocked = true;\n            view.model.volume = view.audioEl.volume * 100;\n        }\n        set_loop() {\n            this.audioEl.loop = this.model.loop;\n        }\n        set_muted() {\n            this.audioEl.muted = this.model.muted;\n        }\n        set_autoplay() {\n            this.audioEl.autoplay = this.model.autoplay;\n        }\n        set_paused() {\n            if (!this.audioEl.paused && this.model.paused)\n                this.audioEl.pause();\n            if (this.audioEl.paused && !this.model.paused)\n                this.audioEl.play();\n        }\n        set_volume() {\n            if (this._blocked) {\n                this._blocked = false;\n                return;\n            }\n            this._setting = true;\n            if (this.model.volume != null) {\n                this.audioEl.volume = this.model.volume / 100;\n            }\n        }\n        set_time() {\n            if (this._blocked) {\n                this._blocked = false;\n                return;\n            }\n            this._setting = true;\n            this.audioEl.currentTime = this.model.time;\n        }\n        set_value() {\n            this.audioEl.src = this.model.value;\n        }\n    }\n    exports.AudioView = AudioView;\n    AudioView.__name__ = \"AudioView\";\n    class Audio extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.Audio = Audio;\n    _a = Audio;\n    Audio.__name__ = \"Audio\";\n    Audio.__module__ = \"panel.models.widgets\";\n    (() => {\n        _a.prototype.default_view = AudioView;\n        _a.define(({ Any, Boolean, Number, Nullable }) => ({\n            loop: [Boolean, false],\n            paused: [Boolean, true],\n            muted: [Boolean, false],\n            autoplay: [Boolean, false],\n            time: [Number, 0],\n            throttle: [Number, 250],\n            value: [Any, ''],\n            volume: [Nullable(Number), null],\n        }));\n    })();\n}\n","min_source":"function _(e,t,i,o,s){var l;o();const d=e(\"cac5f3ed28\");class u extends d.HTMLBoxView{initialize(){super.initialize(),this._blocked=!1,this._setting=!1,this._time=Date.now()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.loop.change,(()=>this.set_loop())),this.connect(this.model.properties.paused.change,(()=>this.set_paused())),this.connect(this.model.properties.time.change,(()=>this.set_time())),this.connect(this.model.properties.value.change,(()=>this.set_value())),this.connect(this.model.properties.volume.change,(()=>this.set_volume())),this.connect(this.model.properties.muted.change,(()=>this.set_muted())),this.connect(this.model.properties.autoplay.change,(()=>this.set_autoplay()))}render(){super.render(),this.audioEl=document.createElement(\"audio\"),this.audioEl.controls=!0,this.audioEl.src=this.model.value,this.audioEl.currentTime=this.model.time,this.audioEl.loop=this.model.loop,this.audioEl.muted=this.model.muted,this.audioEl.autoplay=this.model.autoplay,null!=this.model.volume?this.audioEl.volume=this.model.volume/100:this.model.volume=100*this.audioEl.volume,this.audioEl.onpause=()=>this.model.paused=!0,this.audioEl.onplay=()=>this.model.paused=!1,this.audioEl.ontimeupdate=()=>this.update_time(this),this.audioEl.onvolumechange=()=>this.update_volume(this),(0,d.set_size)(this.audioEl,this.model,!1),this.shadow_el.appendChild(this.audioEl),this.model.paused||this.audioEl.play()}update_time(e){e._setting?e._setting=!1:Date.now()-e._time<e.model.throttle||(e._blocked=!0,e.model.time=e.audioEl.currentTime,e._time=Date.now())}update_volume(e){e._setting?e._setting=!1:(e._blocked=!0,e.model.volume=100*e.audioEl.volume)}set_loop(){this.audioEl.loop=this.model.loop}set_muted(){this.audioEl.muted=this.model.muted}set_autoplay(){this.audioEl.autoplay=this.model.autoplay}set_paused(){!this.audioEl.paused&&this.model.paused&&this.audioEl.pause(),this.audioEl.paused&&!this.model.paused&&this.audioEl.play()}set_volume(){this._blocked?this._blocked=!1:(this._setting=!0,null!=this.model.volume&&(this.audioEl.volume=this.model.volume/100))}set_time(){this._blocked?this._blocked=!1:(this._setting=!0,this.audioEl.currentTime=this.model.time)}set_value(){this.audioEl.src=this.model.value}}i.AudioView=u,u.__name__=\"AudioView\";class a extends d.HTMLBox{constructor(e){super(e)}}i.Audio=a,l=a,a.__name__=\"Audio\",a.__module__=\"panel.models.widgets\",l.prototype.default_view=u,l.define((({Any:e,Boolean:t,Number:i,Nullable:o})=>({loop:[t,!1],paused:[t,!0],muted:[t,!1],autoplay:[t,!1],time:[i,0],throttle:[i,250],value:[e,\"\"],volume:[o(i),null]})))}\n//# sourceMappingURL=audio.min.js.map","min_map":"{\"version\":3,\"file\":\"audio.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"layout_1\",\"AudioView\",\"HTMLBoxView\",\"initialize\",\"super\",\"this\",\"_blocked\",\"_setting\",\"_time\",\"Date\",\"now\",\"connect_signals\",\"connect\",\"model\",\"properties\",\"loop\",\"change\",\"set_loop\",\"paused\",\"set_paused\",\"time\",\"set_time\",\"value\",\"set_value\",\"volume\",\"set_volume\",\"muted\",\"set_muted\",\"autoplay\",\"set_autoplay\",\"render\",\"audioEl\",\"document\",\"createElement\",\"controls\",\"src\",\"currentTime\",\"onpause\",\"onplay\",\"ontimeupdate\",\"update_time\",\"onvolumechange\",\"update_volume\",\"set_size\",\"shadow_el\",\"appendChild\",\"play\",\"view\",\"throttle\",\"pause\",\"__name__\",\"Audio\",\"HTMLBox\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Any\",\"Boolean\",\"Number\",\"Nullable\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/browser.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/browser.js","canonical":"models/browser","resolution":"ESM","id":"af84f1061d","hash":"af84f1061d6ac6004bd76cd67f0cc004c06ea83688a8088c04753e51f559f5cb","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BrowserInfo = exports.BrowserInfoView = void 0;\nvar _a;\nconst view_1 = require(\"@bokehjs/core/view\");\nconst model_1 = require(\"@bokehjs/model\");\nclass BrowserInfoView extends view_1.View {\n    initialize() {\n        super.initialize();\n        if (window.matchMedia != null) {\n            this.model.dark_mode = window.matchMedia('(prefers-color-scheme: dark)').matches;\n        }\n        this.model.device_pixel_ratio = window.devicePixelRatio;\n        if (navigator != null) {\n            this.model.language = navigator.language;\n            this.model.webdriver = navigator.webdriver;\n        }\n        const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n        if (timezone != null)\n            this.model.timezone = timezone;\n        const timezone_offset = new Date().getTimezoneOffset();\n        if (timezone_offset != null)\n            this.model.timezone_offset = timezone_offset;\n        this._has_finished = true;\n        this.notify_finished();\n    }\n}\nexports.BrowserInfoView = BrowserInfoView;\nBrowserInfoView.__name__ = \"BrowserInfoView\";\nclass BrowserInfo extends model_1.Model {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.BrowserInfo = BrowserInfo;\n_a = BrowserInfo;\nBrowserInfo.__name__ = \"BrowserInfo\";\nBrowserInfo.__module__ = \"panel.models.browser\";\n(() => {\n    _a.prototype.default_view = BrowserInfoView;\n    _a.define(({ Boolean, Nullable, Number, String }) => ({\n        dark_mode: [Nullable(Boolean), null],\n        device_pixel_ratio: [Nullable(Number), null],\n        language: [Nullable(String), null],\n        timezone: [Nullable(String), null],\n        timezone_offset: [Nullable(Number), null],\n        webdriver: [Nullable(Boolean), null]\n    }));\n})();\n//# sourceMappingURL=browser.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"BrowserInfoView"},{"type":"named","name":"BrowserInfo"}],"externals":[],"shims":[]},"code":{"source":"/* models/browser.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const view_1 = require(\"@bokehjs/core/view\");\n    const model_1 = require(\"@bokehjs/model\");\n    class BrowserInfoView extends view_1.View {\n        initialize() {\n            super.initialize();\n            if (window.matchMedia != null) {\n                this.model.dark_mode = window.matchMedia('(prefers-color-scheme: dark)').matches;\n            }\n            this.model.device_pixel_ratio = window.devicePixelRatio;\n            if (navigator != null) {\n                this.model.language = navigator.language;\n                this.model.webdriver = navigator.webdriver;\n            }\n            const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n            if (timezone != null)\n                this.model.timezone = timezone;\n            const timezone_offset = new Date().getTimezoneOffset();\n            if (timezone_offset != null)\n                this.model.timezone_offset = timezone_offset;\n            this._has_finished = true;\n            this.notify_finished();\n        }\n    }\n    exports.BrowserInfoView = BrowserInfoView;\n    BrowserInfoView.__name__ = \"BrowserInfoView\";\n    class BrowserInfo extends model_1.Model {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.BrowserInfo = BrowserInfo;\n    _a = BrowserInfo;\n    BrowserInfo.__name__ = \"BrowserInfo\";\n    BrowserInfo.__module__ = \"panel.models.browser\";\n    (() => {\n        _a.prototype.default_view = BrowserInfoView;\n        _a.define(({ Boolean, Nullable, Number, String }) => ({\n            dark_mode: [Nullable(Boolean), null],\n            device_pixel_ratio: [Nullable(Number), null],\n            language: [Nullable(String), null],\n            timezone: [Nullable(String), null],\n            timezone_offset: [Nullable(Number), null],\n            webdriver: [Nullable(Boolean), null]\n        }));\n    })();\n}\n","min_source":"function _(e,i,o,n,l){var t;n();const s=e(\"@bokehjs/core/view\"),a=e(\"@bokehjs/model\");class r extends s.View{initialize(){super.initialize(),null!=window.matchMedia&&(this.model.dark_mode=window.matchMedia(\"(prefers-color-scheme: dark)\").matches),this.model.device_pixel_ratio=window.devicePixelRatio,null!=navigator&&(this.model.language=navigator.language,this.model.webdriver=navigator.webdriver);const e=Intl.DateTimeFormat().resolvedOptions().timeZone;null!=e&&(this.model.timezone=e);const i=(new Date).getTimezoneOffset();null!=i&&(this.model.timezone_offset=i),this._has_finished=!0,this.notify_finished()}}o.BrowserInfoView=r,r.__name__=\"BrowserInfoView\";class d extends a.Model{constructor(e){super(e)}}o.BrowserInfo=d,t=d,d.__name__=\"BrowserInfo\",d.__module__=\"panel.models.browser\",t.prototype.default_view=r,t.define((({Boolean:e,Nullable:i,Number:o,String:n})=>({dark_mode:[i(e),null],device_pixel_ratio:[i(o),null],language:[i(n),null],timezone:[i(n),null],timezone_offset:[i(o),null],webdriver:[i(e),null]})))}\n//# sourceMappingURL=browser.min.js.map","min_map":"{\"version\":3,\"file\":\"browser.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"view_1\",\"model_1\",\"BrowserInfoView\",\"View\",\"initialize\",\"super\",\"window\",\"matchMedia\",\"this\",\"model\",\"dark_mode\",\"matches\",\"device_pixel_ratio\",\"devicePixelRatio\",\"navigator\",\"language\",\"webdriver\",\"timezone\",\"Intl\",\"DateTimeFormat\",\"resolvedOptions\",\"timeZone\",\"timezone_offset\",\"Date\",\"getTimezoneOffset\",\"_has_finished\",\"notify_finished\",\"__name__\",\"BrowserInfo\",\"Model\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Boolean\",\"Nullable\",\"Number\",\"String\"],\"sources\":[\"0\"],\"mappings\":\"AAAwB,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAErE,IAAIC,EADJF,IAEA,MAAMG,EAASN,EAAQ,sBACjBO,EAAUP,EAAQ,kBACxB,MAAMQ,UAAwBF,EAAOG,KACjC,UAAAC,GACIC,MAAMD,aACmB,MAArBE,OAAOC,aACPC,KAAKC,MAAMC,UAAYJ,OAAOC,WAAW,gCAAgCI,SAE7EH,KAAKC,MAAMG,mBAAqBN,OAAOO,iBACtB,MAAbC,YACAN,KAAKC,MAAMM,SAAWD,UAAUC,SAChCP,KAAKC,MAAMO,UAAYF,UAAUE,WAErC,MAAMC,EAAWC,KAAKC,iBAAiBC,kBAAkBC,SACzC,MAAZJ,IACAT,KAAKC,MAAMQ,SAAWA,GAC1B,MAAMK,GAAkB,IAAIC,MAAOC,oBACZ,MAAnBF,IACAd,KAAKC,MAAMa,gBAAkBA,GACjCd,KAAKiB,eAAgB,EACrBjB,KAAKkB,iBACT,EAEJ9B,EAAQM,gBAAkBA,EAC1BA,EAAgByB,SAAW,kBAC3B,MAAMC,UAAoB3B,EAAQ4B,MAC9B,WAAAC,CAAYC,GACR1B,MAAM0B,EACV,EAEJnC,EAAQgC,YAAcA,EACtB7B,EAAK6B,EACLA,EAAYD,SAAW,cACvBC,EAAYI,WAAa,uBAErBjC,EAAGkC,UAAUC,aAAehC,EAC5BH,EAAGoC,QAAO,EAAGC,UAASC,WAAUC,SAAQC,aAAa,CACjD7B,UAAW,CAAC2B,EAASD,GAAU,MAC/BxB,mBAAoB,CAACyB,EAASC,GAAS,MACvCvB,SAAU,CAACsB,EAASE,GAAS,MAC7BtB,SAAU,CAACoB,EAASE,GAAS,MAC7BjB,gBAAiB,CAACe,EAASC,GAAS,MACpCtB,UAAW,CAACqB,EAASD,GAAU,SAG3C\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/button.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/button.js","canonical":"models/button","resolution":"ESM","id":"0e384ee9c4","hash":"0e384ee9c410012421200edb3986b3998d4a87d9b7d733a795ab12201edf1e58","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Button = exports.ButtonView = void 0;\nvar _a;\nconst tooltip_1 = require(\"@bokehjs/models/ui/tooltip\");\nconst build_views_1 = require(\"@bokehjs/core/build_views\");\nconst button_1 = require(\"@bokehjs/models/widgets/button\");\nclass ButtonView extends button_1.ButtonView {\n    *children() {\n        yield* super.children();\n        if (this.tooltip != null)\n            yield this.tooltip;\n    }\n    async lazy_initialize() {\n        await super.lazy_initialize();\n        const { tooltip } = this.model;\n        if (tooltip != null)\n            this.tooltip = await (0, build_views_1.build_view)(tooltip, { parent: this });\n    }\n    remove() {\n        var _b;\n        (_b = this.tooltip) === null || _b === void 0 ? void 0 : _b.remove();\n        super.remove();\n    }\n    render() {\n        super.render();\n        const toggle = (visible) => {\n            var _b;\n            (_b = this.tooltip) === null || _b === void 0 ? void 0 : _b.model.setv({\n                visible,\n            });\n        };\n        let timer;\n        this.el.addEventListener(\"mouseenter\", () => {\n            timer = setTimeout(() => toggle(true), this.model.tooltip_delay);\n        });\n        this.el.addEventListener(\"mouseleave\", () => {\n            clearTimeout(timer);\n            toggle(false);\n        });\n    }\n}\nexports.ButtonView = ButtonView;\nButtonView.__name__ = \"ButtonView\";\nclass Button extends button_1.Button {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.Button = Button;\n_a = Button;\nButton.__name__ = \"Button\";\nButton.__module__ = \"panel.models.widgets\";\n(() => {\n    _a.prototype.default_view = ButtonView;\n    _a.define(({ Nullable, Ref, Number }) => ({\n        tooltip: [Nullable(Ref(tooltip_1.Tooltip)), null],\n        tooltip_delay: [Number, 500],\n    }));\n})();\n//# sourceMappingURL=button.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"ButtonView"},{"type":"named","name":"Button"}],"externals":[],"shims":[]},"code":{"source":"/* models/button.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const tooltip_1 = require(\"@bokehjs/models/ui/tooltip\");\n    const build_views_1 = require(\"@bokehjs/core/build_views\");\n    const button_1 = require(\"@bokehjs/models/widgets/button\");\n    class ButtonView extends button_1.ButtonView {\n        *children() {\n            yield* super.children();\n            if (this.tooltip != null)\n                yield this.tooltip;\n        }\n        async lazy_initialize() {\n            await super.lazy_initialize();\n            const { tooltip } = this.model;\n            if (tooltip != null)\n                this.tooltip = await (0, build_views_1.build_view)(tooltip, { parent: this });\n        }\n        remove() {\n            var _b;\n            (_b = this.tooltip) === null || _b === void 0 ? void 0 : _b.remove();\n            super.remove();\n        }\n        render() {\n            super.render();\n            const toggle = (visible) => {\n                var _b;\n                (_b = this.tooltip) === null || _b === void 0 ? void 0 : _b.model.setv({\n                    visible,\n                });\n            };\n            let timer;\n            this.el.addEventListener(\"mouseenter\", () => {\n                timer = setTimeout(() => toggle(true), this.model.tooltip_delay);\n            });\n            this.el.addEventListener(\"mouseleave\", () => {\n                clearTimeout(timer);\n                toggle(false);\n            });\n        }\n    }\n    exports.ButtonView = ButtonView;\n    ButtonView.__name__ = \"ButtonView\";\n    class Button extends button_1.Button {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.Button = Button;\n    _a = Button;\n    Button.__name__ = \"Button\";\n    Button.__module__ = \"panel.models.widgets\";\n    (() => {\n        _a.prototype.default_view = ButtonView;\n        _a.define(({ Nullable, Ref, Number }) => ({\n            tooltip: [Nullable(Ref(tooltip_1.Tooltip)), null],\n            tooltip_delay: [Number, 500],\n        }));\n    })();\n}\n","min_source":"function _(e,t,o,i,l){var s;i();const n=e(\"@bokehjs/models/ui/tooltip\"),u=e(\"@bokehjs/core/build_views\"),d=e(\"@bokehjs/models/widgets/button\");class r extends d.ButtonView{*children(){yield*super.children(),null!=this.tooltip&&(yield this.tooltip)}async lazy_initialize(){await super.lazy_initialize();const{tooltip:e}=this.model;null!=e&&(this.tooltip=await(0,u.build_view)(e,{parent:this}))}remove(){var e;null===(e=this.tooltip)||void 0===e||e.remove(),super.remove()}render(){super.render();const e=e=>{var t;null===(t=this.tooltip)||void 0===t||t.model.setv({visible:e})};let t;this.el.addEventListener(\"mouseenter\",(()=>{t=setTimeout((()=>e(!0)),this.model.tooltip_delay)})),this.el.addEventListener(\"mouseleave\",(()=>{clearTimeout(t),e(!1)}))}}o.ButtonView=r,r.__name__=\"ButtonView\";class a extends d.Button{constructor(e){super(e)}}o.Button=a,s=a,a.__name__=\"Button\",a.__module__=\"panel.models.widgets\",s.prototype.default_view=r,s.define((({Nullable:e,Ref:t,Number:o})=>({tooltip:[e(t(n.Tooltip)),null],tooltip_delay:[o,500]})))}\n//# sourceMappingURL=button.min.js.map","min_map":"{\"version\":3,\"file\":\"button.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"tooltip_1\",\"build_views_1\",\"button_1\",\"ButtonView\",\"children\",\"super\",\"this\",\"tooltip\",\"lazy_initialize\",\"model\",\"build_view\",\"parent\",\"remove\",\"_b\",\"render\",\"toggle\",\"visible\",\"setv\",\"timer\",\"el\",\"addEventListener\",\"setTimeout\",\"tooltip_delay\",\"clearTimeout\",\"__name__\",\"Button\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Nullable\",\"Ref\",\"Number\",\"Tooltip\"],\"sources\":[\"0\"],\"mappings\":\"AAAuB,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAEpE,IAAIC,EADJF,IAEA,MAAMG,EAAYN,EAAQ,8BACpBO,EAAgBP,EAAQ,6BACxBQ,EAAWR,EAAQ,kCACzB,MAAMS,UAAmBD,EAASC,WAC9B,SAACC,SACUC,MAAMD,WACO,MAAhBE,KAAKC,gBACCD,KAAKC,QACnB,CACA,qBAAMC,SACIH,MAAMG,kBACZ,MAAMD,QAAEA,GAAYD,KAAKG,MACV,MAAXF,IACAD,KAAKC,cAAgB,EAAIN,EAAcS,YAAYH,EAAS,CAAEI,OAAQL,OAC9E,CACA,MAAAM,GACI,IAAIC,EACoB,QAAvBA,EAAKP,KAAKC,eAA4B,IAAPM,GAAyBA,EAAGD,SAC5DP,MAAMO,QACV,CACA,MAAAE,GACIT,MAAMS,SACN,MAAMC,EAAUC,IACZ,IAAIH,EACoB,QAAvBA,EAAKP,KAAKC,eAA4B,IAAPM,GAAyBA,EAAGJ,MAAMQ,KAAK,CACnED,WACF,EAEN,IAAIE,EACJZ,KAAKa,GAAGC,iBAAiB,cAAc,KACnCF,EAAQG,YAAW,IAAMN,GAAO,IAAOT,KAAKG,MAAMa,cAAc,IAEpEhB,KAAKa,GAAGC,iBAAiB,cAAc,KACnCG,aAAaL,GACbH,GAAO,EAAM,GAErB,EAEJnB,EAAQO,WAAaA,EACrBA,EAAWqB,SAAW,aACtB,MAAMC,UAAevB,EAASuB,OAC1B,WAAAC,CAAYC,GACRtB,MAAMsB,EACV,EAEJ/B,EAAQ6B,OAASA,EACjB1B,EAAK0B,EACLA,EAAOD,SAAW,SAClBC,EAAOG,WAAa,uBAEhB7B,EAAG8B,UAAUC,aAAe3B,EAC5BJ,EAAGgC,QAAO,EAAGC,WAAUC,MAAKC,aAAa,CACrC3B,QAAS,CAACyB,EAASC,EAAIjC,EAAUmC,UAAW,MAC5Cb,cAAe,CAACY,EAAQ,QAGpC\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/card.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/card.js","canonical":"models/card","resolution":"ESM","id":"5356bf07b1","hash":"5356bf07b1402f0e4a09957fc65f7503498b286904278b8f166b657b873bb34d","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Card = exports.CardView = void 0;\nconst tslib_1 = require(\"tslib\");\nvar _a;\nconst column_1 = require(\"./column\");\nconst DOM = tslib_1.__importStar(require(\"@bokehjs/core/dom\"));\nclass CardView extends column_1.ColumnView {\n    constructor() {\n        super(...arguments);\n        this.collapsed_style = new DOM.InlineStyleSheet();\n    }\n    connect_signals() {\n        super.connect_signals();\n        const { active_header_background, collapsed, header_background, header_color, hide_header } = this.model.properties;\n        this.on_change(collapsed, () => this._collapse());\n        this.on_change([header_color, hide_header], () => this.render());\n        this.on_change([active_header_background, collapsed, header_background], () => {\n            const header_background = this.header_background;\n            if (header_background == null)\n                return;\n            this.child_views[0].el.style.backgroundColor = header_background;\n            this.header_el.style.backgroundColor = header_background;\n        });\n    }\n    *_stylesheets() {\n        yield* super._stylesheets();\n        yield this.collapsed_style;\n    }\n    get header_background() {\n        let header_background = this.model.header_background;\n        if (!this.model.collapsed && this.model.active_header_background)\n            header_background = this.model.active_header_background;\n        return header_background;\n    }\n    render() {\n        this.empty();\n        if (this.model.collapsed)\n            this.collapsed_style.replace(\":host\", {\n                \"height\": \"fit-content\",\n                \"flex\": \"none\"\n            });\n        this._update_stylesheets();\n        this._update_css_classes();\n        this._apply_styles();\n        this._apply_visible();\n        this.class_list.add(...this.css_classes());\n        const { button_css_classes, header_color, header_tag, header_css_classes } = this.model;\n        const header_background = this.header_background;\n        const header = this.child_views[0];\n        let header_el;\n        if (this.model.collapsible) {\n            this.button_el = DOM.createElement(\"button\", { type: \"button\", class: header_css_classes });\n            const icon = DOM.createElement(\"div\", { class: button_css_classes });\n            icon.innerHTML = this.model.collapsed ? \"\\u25ba\" : \"\\u25bc\";\n            this.button_el.appendChild(icon);\n            this.button_el.style.backgroundColor = header_background != null ? header_background : \"\";\n            header.el.style.backgroundColor = header_background != null ? header_background : \"\";\n            this.button_el.appendChild(header.el);\n            this.button_el.onclick = () => this._toggle_button();\n            header_el = this.button_el;\n        }\n        else {\n            header_el = DOM.createElement(header_tag, { class: header_css_classes });\n            header_el.style.backgroundColor = header_background != null ? header_background : \"\";\n            header_el.appendChild(header.el);\n        }\n        this.header_el = header_el;\n        if (!this.model.hide_header) {\n            header_el.style.color = header_color != null ? header_color : \"\";\n            this.shadow_el.appendChild(header_el);\n            header.render();\n            header.after_render();\n        }\n        if (this.model.collapsed)\n            return;\n        for (const child_view of this.child_views.slice(1)) {\n            this.shadow_el.appendChild(child_view.el);\n            child_view.render();\n            child_view.after_render();\n        }\n    }\n    async update_children() {\n        await this.build_child_views();\n        this.render();\n        this.invalidate_layout();\n    }\n    _toggle_button() {\n        this.model.collapsed = !this.model.collapsed;\n    }\n    _collapse() {\n        for (const child_view of this.child_views.slice(1)) {\n            if (this.model.collapsed) {\n                this.shadow_el.removeChild(child_view.el);\n                child_view.model.visible = false;\n            }\n            else {\n                child_view.render();\n                child_view.after_render();\n                this.shadow_el.appendChild(child_view.el);\n                child_view.model.visible = true;\n            }\n        }\n        if (this.model.collapsed) {\n            this.collapsed_style.replace(\":host\", {\n                \"height\": \"fit-content\",\n                'flex': \"none\"\n            });\n        }\n        else\n            this.collapsed_style.clear();\n        this.button_el.children[0].innerHTML = this.model.collapsed ? \"\\u25ba\" : \"\\u25bc\";\n        this.invalidate_layout();\n    }\n    _createElement() {\n        return DOM.createElement(this.model.tag, { class: this.css_classes() });\n    }\n}\nexports.CardView = CardView;\nCardView.__name__ = \"CardView\";\nclass Card extends column_1.Column {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.Card = Card;\n_a = Card;\nCard.__name__ = \"Card\";\nCard.__module__ = \"panel.models.layout\";\n(() => {\n    _a.prototype.default_view = CardView;\n    _a.define(({ Array, Boolean, Nullable, String }) => ({\n        active_header_background: [Nullable(String), null],\n        button_css_classes: [Array(String), []],\n        collapsed: [Boolean, true],\n        collapsible: [Boolean, true],\n        header_background: [Nullable(String), null],\n        header_color: [Nullable(String), null],\n        header_css_classes: [Array(String), []],\n        header_tag: [String, \"div\"],\n        hide_header: [Boolean, false],\n        tag: [String, \"div\"],\n    }));\n})();\n//# sourceMappingURL=card.js.map\n","type":"js","dependency_paths":[["./column","/croot/panel_1706539561184/work/panel/dist/lib/models/column.js"]],"dependency_map":[],"exported":[{"type":"named","name":"CardView"},{"type":"named","name":"Card"}],"externals":[],"shims":[]},"code":{"source":"/* models/card.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    var _a;\n    const column_1 = require(\"991bd33955\") /* ./column */;\n    const DOM = tslib_1.__importStar(require(\"@bokehjs/core/dom\"));\n    class CardView extends column_1.ColumnView {\n        constructor() {\n            super(...arguments);\n            this.collapsed_style = new DOM.InlineStyleSheet();\n        }\n        connect_signals() {\n            super.connect_signals();\n            const { active_header_background, collapsed, header_background, header_color, hide_header } = this.model.properties;\n            this.on_change(collapsed, () => this._collapse());\n            this.on_change([header_color, hide_header], () => this.render());\n            this.on_change([active_header_background, collapsed, header_background], () => {\n                const header_background = this.header_background;\n                if (header_background == null)\n                    return;\n                this.child_views[0].el.style.backgroundColor = header_background;\n                this.header_el.style.backgroundColor = header_background;\n            });\n        }\n        *_stylesheets() {\n            yield* super._stylesheets();\n            yield this.collapsed_style;\n        }\n        get header_background() {\n            let header_background = this.model.header_background;\n            if (!this.model.collapsed && this.model.active_header_background)\n                header_background = this.model.active_header_background;\n            return header_background;\n        }\n        render() {\n            this.empty();\n            if (this.model.collapsed)\n                this.collapsed_style.replace(\":host\", {\n                    \"height\": \"fit-content\",\n                    \"flex\": \"none\"\n                });\n            this._update_stylesheets();\n            this._update_css_classes();\n            this._apply_styles();\n            this._apply_visible();\n            this.class_list.add(...this.css_classes());\n            const { button_css_classes, header_color, header_tag, header_css_classes } = this.model;\n            const header_background = this.header_background;\n            const header = this.child_views[0];\n            let header_el;\n            if (this.model.collapsible) {\n                this.button_el = DOM.createElement(\"button\", { type: \"button\", class: header_css_classes });\n                const icon = DOM.createElement(\"div\", { class: button_css_classes });\n                icon.innerHTML = this.model.collapsed ? \"\\u25ba\" : \"\\u25bc\";\n                this.button_el.appendChild(icon);\n                this.button_el.style.backgroundColor = header_background != null ? header_background : \"\";\n                header.el.style.backgroundColor = header_background != null ? header_background : \"\";\n                this.button_el.appendChild(header.el);\n                this.button_el.onclick = () => this._toggle_button();\n                header_el = this.button_el;\n            }\n            else {\n                header_el = DOM.createElement(header_tag, { class: header_css_classes });\n                header_el.style.backgroundColor = header_background != null ? header_background : \"\";\n                header_el.appendChild(header.el);\n            }\n            this.header_el = header_el;\n            if (!this.model.hide_header) {\n                header_el.style.color = header_color != null ? header_color : \"\";\n                this.shadow_el.appendChild(header_el);\n                header.render();\n                header.after_render();\n            }\n            if (this.model.collapsed)\n                return;\n            for (const child_view of this.child_views.slice(1)) {\n                this.shadow_el.appendChild(child_view.el);\n                child_view.render();\n                child_view.after_render();\n            }\n        }\n        async update_children() {\n            await this.build_child_views();\n            this.render();\n            this.invalidate_layout();\n        }\n        _toggle_button() {\n            this.model.collapsed = !this.model.collapsed;\n        }\n        _collapse() {\n            for (const child_view of this.child_views.slice(1)) {\n                if (this.model.collapsed) {\n                    this.shadow_el.removeChild(child_view.el);\n                    child_view.model.visible = false;\n                }\n                else {\n                    child_view.render();\n                    child_view.after_render();\n                    this.shadow_el.appendChild(child_view.el);\n                    child_view.model.visible = true;\n                }\n            }\n            if (this.model.collapsed) {\n                this.collapsed_style.replace(\":host\", {\n                    \"height\": \"fit-content\",\n                    'flex': \"none\"\n                });\n            }\n            else\n                this.collapsed_style.clear();\n            this.button_el.children[0].innerHTML = this.model.collapsed ? \"\\u25ba\" : \"\\u25bc\";\n            this.invalidate_layout();\n        }\n        _createElement() {\n            return DOM.createElement(this.model.tag, { class: this.css_classes() });\n        }\n    }\n    exports.CardView = CardView;\n    CardView.__name__ = \"CardView\";\n    class Card extends column_1.Column {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.Card = Card;\n    _a = Card;\n    Card.__name__ = \"Card\";\n    Card.__module__ = \"panel.models.layout\";\n    (() => {\n        _a.prototype.default_view = CardView;\n        _a.define(({ Array, Boolean, Nullable, String }) => ({\n            active_header_background: [Nullable(String), null],\n            button_css_classes: [Array(String), []],\n            collapsed: [Boolean, true],\n            collapsible: [Boolean, true],\n            header_background: [Nullable(String), null],\n            header_color: [Nullable(String), null],\n            header_css_classes: [Array(String), []],\n            header_tag: [String, \"div\"],\n            hide_header: [Boolean, false],\n            tag: [String, \"div\"],\n        }));\n    })();\n}\n","min_source":"function _(e,l,s,t,o){t();const a=e(\"tslib\");var d;const i=e(\"991bd33955\"),h=a.__importStar(e(\"@bokehjs/core/dom\"));class n extends i.ColumnView{constructor(){super(...arguments),this.collapsed_style=new h.InlineStyleSheet}connect_signals(){super.connect_signals();const{active_header_background:e,collapsed:l,header_background:s,header_color:t,hide_header:o}=this.model.properties;this.on_change(l,(()=>this._collapse())),this.on_change([t,o],(()=>this.render())),this.on_change([e,l,s],(()=>{const e=this.header_background;null!=e&&(this.child_views[0].el.style.backgroundColor=e,this.header_el.style.backgroundColor=e)}))}*_stylesheets(){yield*super._stylesheets(),yield this.collapsed_style}get header_background(){let e=this.model.header_background;return!this.model.collapsed&&this.model.active_header_background&&(e=this.model.active_header_background),e}render(){this.empty(),this.model.collapsed&&this.collapsed_style.replace(\":host\",{height:\"fit-content\",flex:\"none\"}),this._update_stylesheets(),this._update_css_classes(),this._apply_styles(),this._apply_visible(),this.class_list.add(...this.css_classes());const{button_css_classes:e,header_color:l,header_tag:s,header_css_classes:t}=this.model,o=this.header_background,a=this.child_views[0];let d;if(this.model.collapsible){this.button_el=h.createElement(\"button\",{type:\"button\",class:t});const l=h.createElement(\"div\",{class:e});l.innerHTML=this.model.collapsed?\"\\u25ba\":\"\\u25bc\",this.button_el.appendChild(l),this.button_el.style.backgroundColor=null!=o?o:\"\",a.el.style.backgroundColor=null!=o?o:\"\",this.button_el.appendChild(a.el),this.button_el.onclick=()=>this._toggle_button(),d=this.button_el}else d=h.createElement(s,{class:t}),d.style.backgroundColor=null!=o?o:\"\",d.appendChild(a.el);if(this.header_el=d,this.model.hide_header||(d.style.color=null!=l?l:\"\",this.shadow_el.appendChild(d),a.render(),a.after_render()),!this.model.collapsed)for(const e of this.child_views.slice(1))this.shadow_el.appendChild(e.el),e.render(),e.after_render()}async update_children(){await this.build_child_views(),this.render(),this.invalidate_layout()}_toggle_button(){this.model.collapsed=!this.model.collapsed}_collapse(){for(const e of this.child_views.slice(1))this.model.collapsed?(this.shadow_el.removeChild(e.el),e.model.visible=!1):(e.render(),e.after_render(),this.shadow_el.appendChild(e.el),e.model.visible=!0);this.model.collapsed?this.collapsed_style.replace(\":host\",{height:\"fit-content\",flex:\"none\"}):this.collapsed_style.clear(),this.button_el.children[0].innerHTML=this.model.collapsed?\"\\u25ba\":\"\\u25bc\",this.invalidate_layout()}_createElement(){return h.createElement(this.model.tag,{class:this.css_classes()})}}s.CardView=n,n.__name__=\"CardView\";class r extends i.Column{constructor(e){super(e)}}s.Card=r,d=r,r.__name__=\"Card\",r.__module__=\"panel.models.layout\",d.prototype.default_view=n,d.define((({Array:e,Boolean:l,Nullable:s,String:t})=>({active_header_background:[s(t),null],button_css_classes:[e(t),[]],collapsed:[l,!0],collapsible:[l,!0],header_background:[s(t),null],header_color:[s(t),null],header_css_classes:[e(t),[]],header_tag:[t,\"div\"],hide_header:[l,!1],tag:[t,\"div\"]})))}\n//# sourceMappingURL=card.min.js.map","min_map":"{\"version\":3,\"file\":\"card.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"tslib_1\",\"_a\",\"column_1\",\"DOM\",\"__importStar\",\"CardView\",\"ColumnView\",\"constructor\",\"super\",\"arguments\",\"this\",\"collapsed_style\",\"InlineStyleSheet\",\"connect_signals\",\"active_header_background\",\"collapsed\",\"header_background\",\"header_color\",\"hide_header\",\"model\",\"properties\",\"on_change\",\"_collapse\",\"render\",\"child_views\",\"el\",\"style\",\"backgroundColor\",\"header_el\",\"_stylesheets\",\"empty\",\"replace\",\"height\",\"flex\",\"_update_stylesheets\",\"_update_css_classes\",\"_apply_styles\",\"_apply_visible\",\"class_list\",\"add\",\"css_classes\",\"button_css_classes\",\"header_tag\",\"header_css_classes\",\"header\",\"collapsible\",\"button_el\",\"createElement\",\"type\",\"class\",\"icon\",\"innerHTML\",\"appendChild\",\"onclick\",\"_toggle_button\",\"color\",\"shadow_el\",\"after_render\",\"child_view\",\"slice\",\"update_children\",\"build_child_views\",\"invalidate_layout\",\"removeChild\",\"visible\",\"clear\",\"children\",\"_createElement\",\"tag\",\"__name__\",\"Card\",\"Column\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Array\",\"Boolean\",\"Nullable\",\"String\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/column.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/column.js","canonical":"models/column","resolution":"ESM","id":"991bd33955","hash":"991bd33955f11786b6a9eb178f7ce26de4fc43ceca3fcbeeb211c00b73b542ab","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Column = exports.ColumnView = void 0;\nconst tslib_1 = require(\"tslib\");\nvar _a;\nconst column_1 = require(\"@bokehjs/models/layouts/column\");\nconst DOM = tslib_1.__importStar(require(\"@bokehjs/core/dom\"));\nclass ColumnView extends column_1.ColumnView {\n    connect_signals() {\n        super.connect_signals();\n        const { children, scroll_position, scroll_button_threshold } = this.model.properties;\n        this.on_change(children, () => this.trigger_auto_scroll());\n        this.on_change(scroll_position, () => this.scroll_to_position());\n        this.on_change(scroll_button_threshold, () => this.toggle_scroll_button());\n    }\n    get distance_from_latest() {\n        return this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight;\n    }\n    scroll_to_position() {\n        requestAnimationFrame(() => {\n            this.el.scrollTo({ top: this.model.scroll_position });\n        });\n    }\n    scroll_to_latest() {\n        // Waits for the child to be rendered before scrolling\n        requestAnimationFrame(() => {\n            this.el.scrollTo({ top: this.el.scrollHeight });\n        });\n    }\n    trigger_auto_scroll() {\n        const limit = this.model.auto_scroll_limit;\n        const within_limit = this.distance_from_latest <= limit;\n        if (limit == 0 || !within_limit)\n            return;\n        this.scroll_to_latest();\n    }\n    record_scroll_position() {\n        this.model.scroll_position = Math.round(this.el.scrollTop);\n    }\n    toggle_scroll_button() {\n        const threshold = this.model.scroll_button_threshold;\n        const exceeds_threshold = this.distance_from_latest >= threshold;\n        if (this.scroll_down_button_el) {\n            this.scroll_down_button_el.classList.toggle(\"visible\", threshold !== 0 && exceeds_threshold);\n        }\n    }\n    render() {\n        super.render();\n        this.scroll_down_button_el = DOM.createElement('div', { class: 'scroll-button' });\n        this.shadow_el.appendChild(this.scroll_down_button_el);\n        this.el.addEventListener(\"scroll\", () => {\n            this.record_scroll_position();\n            this.toggle_scroll_button();\n        });\n        this.scroll_down_button_el.addEventListener(\"click\", () => {\n            this.scroll_to_latest();\n        });\n    }\n    after_render() {\n        super.after_render();\n        requestAnimationFrame(() => {\n            if (this.model.scroll_position) {\n                this.scroll_to_position();\n            }\n            if (this.model.view_latest) {\n                this.scroll_to_latest();\n            }\n            this.toggle_scroll_button();\n        });\n    }\n}\nexports.ColumnView = ColumnView;\nColumnView.__name__ = \"ColumnView\";\nclass Column extends column_1.Column {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.Column = Column;\n_a = Column;\nColumn.__name__ = \"Column\";\nColumn.__module__ = \"panel.models.layout\";\n(() => {\n    _a.prototype.default_view = ColumnView;\n    _a.define(({ Int, Boolean }) => ({\n        scroll_position: [Int, 0],\n        auto_scroll_limit: [Int, 0],\n        scroll_button_threshold: [Int, 0],\n        view_latest: [Boolean, false],\n    }));\n})();\n//# sourceMappingURL=column.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"ColumnView"},{"type":"named","name":"Column"}],"externals":[],"shims":[]},"code":{"source":"/* models/column.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    var _a;\n    const column_1 = require(\"@bokehjs/models/layouts/column\");\n    const DOM = tslib_1.__importStar(require(\"@bokehjs/core/dom\"));\n    class ColumnView extends column_1.ColumnView {\n        connect_signals() {\n            super.connect_signals();\n            const { children, scroll_position, scroll_button_threshold } = this.model.properties;\n            this.on_change(children, () => this.trigger_auto_scroll());\n            this.on_change(scroll_position, () => this.scroll_to_position());\n            this.on_change(scroll_button_threshold, () => this.toggle_scroll_button());\n        }\n        get distance_from_latest() {\n            return this.el.scrollHeight - this.el.scrollTop - this.el.clientHeight;\n        }\n        scroll_to_position() {\n            requestAnimationFrame(() => {\n                this.el.scrollTo({ top: this.model.scroll_position });\n            });\n        }\n        scroll_to_latest() {\n            // Waits for the child to be rendered before scrolling\n            requestAnimationFrame(() => {\n                this.el.scrollTo({ top: this.el.scrollHeight });\n            });\n        }\n        trigger_auto_scroll() {\n            const limit = this.model.auto_scroll_limit;\n            const within_limit = this.distance_from_latest <= limit;\n            if (limit == 0 || !within_limit)\n                return;\n            this.scroll_to_latest();\n        }\n        record_scroll_position() {\n            this.model.scroll_position = Math.round(this.el.scrollTop);\n        }\n        toggle_scroll_button() {\n            const threshold = this.model.scroll_button_threshold;\n            const exceeds_threshold = this.distance_from_latest >= threshold;\n            if (this.scroll_down_button_el) {\n                this.scroll_down_button_el.classList.toggle(\"visible\", threshold !== 0 && exceeds_threshold);\n            }\n        }\n        render() {\n            super.render();\n            this.scroll_down_button_el = DOM.createElement('div', { class: 'scroll-button' });\n            this.shadow_el.appendChild(this.scroll_down_button_el);\n            this.el.addEventListener(\"scroll\", () => {\n                this.record_scroll_position();\n                this.toggle_scroll_button();\n            });\n            this.scroll_down_button_el.addEventListener(\"click\", () => {\n                this.scroll_to_latest();\n            });\n        }\n        after_render() {\n            super.after_render();\n            requestAnimationFrame(() => {\n                if (this.model.scroll_position) {\n                    this.scroll_to_position();\n                }\n                if (this.model.view_latest) {\n                    this.scroll_to_latest();\n                }\n                this.toggle_scroll_button();\n            });\n        }\n    }\n    exports.ColumnView = ColumnView;\n    ColumnView.__name__ = \"ColumnView\";\n    class Column extends column_1.Column {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.Column = Column;\n    _a = Column;\n    Column.__name__ = \"Column\";\n    Column.__module__ = \"panel.models.layout\";\n    (() => {\n        _a.prototype.default_view = ColumnView;\n        _a.define(({ Int, Boolean }) => ({\n            scroll_position: [Int, 0],\n            auto_scroll_limit: [Int, 0],\n            scroll_button_threshold: [Int, 0],\n            view_latest: [Boolean, false],\n        }));\n    })();\n}\n","min_source":"function _(t,o,l,s,e){s();const i=t(\"tslib\");var _;const r=t(\"@bokehjs/models/layouts/column\"),n=i.__importStar(t(\"@bokehjs/core/dom\"));class c extends r.ColumnView{connect_signals(){super.connect_signals();const{children:t,scroll_position:o,scroll_button_threshold:l}=this.model.properties;this.on_change(t,(()=>this.trigger_auto_scroll())),this.on_change(o,(()=>this.scroll_to_position())),this.on_change(l,(()=>this.toggle_scroll_button()))}get distance_from_latest(){return this.el.scrollHeight-this.el.scrollTop-this.el.clientHeight}scroll_to_position(){requestAnimationFrame((()=>{this.el.scrollTo({top:this.model.scroll_position})}))}scroll_to_latest(){requestAnimationFrame((()=>{this.el.scrollTo({top:this.el.scrollHeight})}))}trigger_auto_scroll(){const t=this.model.auto_scroll_limit,o=this.distance_from_latest<=t;0!=t&&o&&this.scroll_to_latest()}record_scroll_position(){this.model.scroll_position=Math.round(this.el.scrollTop)}toggle_scroll_button(){const t=this.model.scroll_button_threshold,o=this.distance_from_latest>=t;this.scroll_down_button_el&&this.scroll_down_button_el.classList.toggle(\"visible\",0!==t&&o)}render(){super.render(),this.scroll_down_button_el=n.createElement(\"div\",{class:\"scroll-button\"}),this.shadow_el.appendChild(this.scroll_down_button_el),this.el.addEventListener(\"scroll\",(()=>{this.record_scroll_position(),this.toggle_scroll_button()})),this.scroll_down_button_el.addEventListener(\"click\",(()=>{this.scroll_to_latest()}))}after_render(){super.after_render(),requestAnimationFrame((()=>{this.model.scroll_position&&this.scroll_to_position(),this.model.view_latest&&this.scroll_to_latest(),this.toggle_scroll_button()}))}}l.ColumnView=c,c.__name__=\"ColumnView\";class h extends r.Column{constructor(t){super(t)}}l.Column=h,_=h,h.__name__=\"Column\",h.__module__=\"panel.models.layout\",_.prototype.default_view=c,_.define((({Int:t,Boolean:o})=>({scroll_position:[t,0],auto_scroll_limit:[t,0],scroll_button_threshold:[t,0],view_latest:[o,!1]})))}\n//# sourceMappingURL=column.min.js.map","min_map":"{\"version\":3,\"file\":\"column.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"tslib_1\",\"_a\",\"column_1\",\"DOM\",\"__importStar\",\"ColumnView\",\"connect_signals\",\"super\",\"children\",\"scroll_position\",\"scroll_button_threshold\",\"this\",\"model\",\"properties\",\"on_change\",\"trigger_auto_scroll\",\"scroll_to_position\",\"toggle_scroll_button\",\"distance_from_latest\",\"el\",\"scrollHeight\",\"scrollTop\",\"clientHeight\",\"requestAnimationFrame\",\"scrollTo\",\"top\",\"scroll_to_latest\",\"limit\",\"auto_scroll_limit\",\"within_limit\",\"record_scroll_position\",\"Math\",\"round\",\"threshold\",\"exceeds_threshold\",\"scroll_down_button_el\",\"classList\",\"toggle\",\"render\",\"createElement\",\"class\",\"shadow_el\",\"appendChild\",\"addEventListener\",\"after_render\",\"view_latest\",\"__name__\",\"Column\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Int\",\"Boolean\"],\"sources\":[\"0\"],\"mappings\":\"AAAuB,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GACpED,IACA,MAAME,EAAUL,EAAQ,SACxB,IAAIM,EACJ,MAAMC,EAAWP,EAAQ,kCACnBQ,EAAMH,EAAQI,aAAaT,EAAQ,sBACzC,MAAMU,UAAmBH,EAASG,WAC9B,eAAAC,GACIC,MAAMD,kBACN,MAAME,SAAEA,EAAQC,gBAAEA,EAAeC,wBAAEA,GAA4BC,KAAKC,MAAMC,WAC1EF,KAAKG,UAAUN,GAAU,IAAMG,KAAKI,wBACpCJ,KAAKG,UAAUL,GAAiB,IAAME,KAAKK,uBAC3CL,KAAKG,UAAUJ,GAAyB,IAAMC,KAAKM,wBACvD,CACA,wBAAIC,GACA,OAAOP,KAAKQ,GAAGC,aAAeT,KAAKQ,GAAGE,UAAYV,KAAKQ,GAAGG,YAC9D,CACA,kBAAAN,GACIO,uBAAsB,KAClBZ,KAAKQ,GAAGK,SAAS,CAAEC,IAAKd,KAAKC,MAAMH,iBAAkB,GAE7D,CACA,gBAAAiB,GAEIH,uBAAsB,KAClBZ,KAAKQ,GAAGK,SAAS,CAAEC,IAAKd,KAAKQ,GAAGC,cAAe,GAEvD,CACA,mBAAAL,GACI,MAAMY,EAAQhB,KAAKC,MAAMgB,kBACnBC,EAAelB,KAAKO,sBAAwBS,EACrC,GAATA,GAAeE,GAEnBlB,KAAKe,kBACT,CACA,sBAAAI,GACInB,KAAKC,MAAMH,gBAAkBsB,KAAKC,MAAMrB,KAAKQ,GAAGE,UACpD,CACA,oBAAAJ,GACI,MAAMgB,EAAYtB,KAAKC,MAAMF,wBACvBwB,EAAoBvB,KAAKO,sBAAwBe,EACnDtB,KAAKwB,uBACLxB,KAAKwB,sBAAsBC,UAAUC,OAAO,UAAyB,IAAdJ,GAAmBC,EAElF,CACA,MAAAI,GACI/B,MAAM+B,SACN3B,KAAKwB,sBAAwBhC,EAAIoC,cAAc,MAAO,CAAEC,MAAO,kBAC/D7B,KAAK8B,UAAUC,YAAY/B,KAAKwB,uBAChCxB,KAAKQ,GAAGwB,iBAAiB,UAAU,KAC/BhC,KAAKmB,yBACLnB,KAAKM,sBAAsB,IAE/BN,KAAKwB,sBAAsBQ,iBAAiB,SAAS,KACjDhC,KAAKe,kBAAkB,GAE/B,CACA,YAAAkB,GACIrC,MAAMqC,eACNrB,uBAAsB,KACdZ,KAAKC,MAAMH,iBACXE,KAAKK,qBAELL,KAAKC,MAAMiC,aACXlC,KAAKe,mBAETf,KAAKM,sBAAsB,GAEnC,EAEJpB,EAAQQ,WAAaA,EACrBA,EAAWyC,SAAW,aACtB,MAAMC,UAAe7C,EAAS6C,OAC1B,WAAAC,CAAYC,GACR1C,MAAM0C,EACV,EAEJpD,EAAQkD,OAASA,EACjB9C,EAAK8C,EACLA,EAAOD,SAAW,SAClBC,EAAOG,WAAa,sBAEhBjD,EAAGkD,UAAUC,aAAe/C,EAC5BJ,EAAGoD,QAAO,EAAGC,MAAKC,cAAc,CAC5B9C,gBAAiB,CAAC6C,EAAK,GACvB1B,kBAAmB,CAAC0B,EAAK,GACzB5C,wBAAyB,CAAC4C,EAAK,GAC/BT,YAAa,CAACU,GAAS,MAGnC\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/checkbox_button_group.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/checkbox_button_group.js","canonical":"models/checkbox_button_group","resolution":"ESM","id":"820473477c","hash":"820473477cdd0a24e9ccff2b84151540a72157fcef8020e156f5c9bac9fadf7c","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CheckboxButtonGroup = exports.CheckboxButtonGroupView = void 0;\nvar _a;\nconst tooltip_1 = require(\"@bokehjs/models/ui/tooltip\");\nconst build_views_1 = require(\"@bokehjs/core/build_views\");\nconst checkbox_button_group_1 = require(\"@bokehjs/models/widgets/checkbox_button_group\");\nclass CheckboxButtonGroupView extends checkbox_button_group_1.CheckboxButtonGroupView {\n    *children() {\n        yield* super.children();\n        if (this.tooltip != null)\n            yield this.tooltip;\n    }\n    async lazy_initialize() {\n        await super.lazy_initialize();\n        const { tooltip } = this.model;\n        if (tooltip != null)\n            this.tooltip = await (0, build_views_1.build_view)(tooltip, { parent: this });\n    }\n    remove() {\n        var _b;\n        (_b = this.tooltip) === null || _b === void 0 ? void 0 : _b.remove();\n        super.remove();\n    }\n    render() {\n        super.render();\n        const toggle = (visible) => {\n            var _b;\n            (_b = this.tooltip) === null || _b === void 0 ? void 0 : _b.model.setv({\n                visible,\n            });\n        };\n        let timer;\n        this.el.addEventListener(\"mouseenter\", () => {\n            timer = setTimeout(() => toggle(true), this.model.tooltip_delay);\n        });\n        this.el.addEventListener(\"mouseleave\", () => {\n            clearTimeout(timer);\n            toggle(false);\n        });\n    }\n}\nexports.CheckboxButtonGroupView = CheckboxButtonGroupView;\nCheckboxButtonGroupView.__name__ = \"CheckboxButtonGroupView\";\nclass CheckboxButtonGroup extends checkbox_button_group_1.CheckboxButtonGroup {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.CheckboxButtonGroup = CheckboxButtonGroup;\n_a = CheckboxButtonGroup;\nCheckboxButtonGroup.__name__ = \"CheckboxButtonGroup\";\nCheckboxButtonGroup.__module__ = \"panel.models.widgets\";\n(() => {\n    _a.prototype.default_view = CheckboxButtonGroupView;\n    _a.define(({ Nullable, Ref, Number }) => ({\n        tooltip: [Nullable(Ref(tooltip_1.Tooltip)), null],\n        tooltip_delay: [Number, 500],\n    }));\n})();\n//# sourceMappingURL=checkbox_button_group.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"CheckboxButtonGroupView"},{"type":"named","name":"CheckboxButtonGroup"}],"externals":[],"shims":[]},"code":{"source":"/* models/checkbox_button_group.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const tooltip_1 = require(\"@bokehjs/models/ui/tooltip\");\n    const build_views_1 = require(\"@bokehjs/core/build_views\");\n    const checkbox_button_group_1 = require(\"@bokehjs/models/widgets/checkbox_button_group\");\n    class CheckboxButtonGroupView extends checkbox_button_group_1.CheckboxButtonGroupView {\n        *children() {\n            yield* super.children();\n            if (this.tooltip != null)\n                yield this.tooltip;\n        }\n        async lazy_initialize() {\n            await super.lazy_initialize();\n            const { tooltip } = this.model;\n            if (tooltip != null)\n                this.tooltip = await (0, build_views_1.build_view)(tooltip, { parent: this });\n        }\n        remove() {\n            var _b;\n            (_b = this.tooltip) === null || _b === void 0 ? void 0 : _b.remove();\n            super.remove();\n        }\n        render() {\n            super.render();\n            const toggle = (visible) => {\n                var _b;\n                (_b = this.tooltip) === null || _b === void 0 ? void 0 : _b.model.setv({\n                    visible,\n                });\n            };\n            let timer;\n            this.el.addEventListener(\"mouseenter\", () => {\n                timer = setTimeout(() => toggle(true), this.model.tooltip_delay);\n            });\n            this.el.addEventListener(\"mouseleave\", () => {\n                clearTimeout(timer);\n                toggle(false);\n            });\n        }\n    }\n    exports.CheckboxButtonGroupView = CheckboxButtonGroupView;\n    CheckboxButtonGroupView.__name__ = \"CheckboxButtonGroupView\";\n    class CheckboxButtonGroup extends checkbox_button_group_1.CheckboxButtonGroup {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.CheckboxButtonGroup = CheckboxButtonGroup;\n    _a = CheckboxButtonGroup;\n    CheckboxButtonGroup.__name__ = \"CheckboxButtonGroup\";\n    CheckboxButtonGroup.__module__ = \"panel.models.widgets\";\n    (() => {\n        _a.prototype.default_view = CheckboxButtonGroupView;\n        _a.define(({ Nullable, Ref, Number }) => ({\n            tooltip: [Nullable(Ref(tooltip_1.Tooltip)), null],\n            tooltip_delay: [Number, 500],\n        }));\n    })();\n}\n","min_source":"function _(e,t,o,i,l){var s;i();const n=e(\"@bokehjs/models/ui/tooltip\"),u=e(\"@bokehjs/core/build_views\"),r=e(\"@bokehjs/models/widgets/checkbox_button_group\");class d extends r.CheckboxButtonGroupView{*children(){yield*super.children(),null!=this.tooltip&&(yield this.tooltip)}async lazy_initialize(){await super.lazy_initialize();const{tooltip:e}=this.model;null!=e&&(this.tooltip=await(0,u.build_view)(e,{parent:this}))}remove(){var e;null===(e=this.tooltip)||void 0===e||e.remove(),super.remove()}render(){super.render();const e=e=>{var t;null===(t=this.tooltip)||void 0===t||t.model.setv({visible:e})};let t;this.el.addEventListener(\"mouseenter\",(()=>{t=setTimeout((()=>e(!0)),this.model.tooltip_delay)})),this.el.addEventListener(\"mouseleave\",(()=>{clearTimeout(t),e(!1)}))}}o.CheckboxButtonGroupView=d,d.__name__=\"CheckboxButtonGroupView\";class p extends r.CheckboxButtonGroup{constructor(e){super(e)}}o.CheckboxButtonGroup=p,s=p,p.__name__=\"CheckboxButtonGroup\",p.__module__=\"panel.models.widgets\",s.prototype.default_view=d,s.define((({Nullable:e,Ref:t,Number:o})=>({tooltip:[e(t(n.Tooltip)),null],tooltip_delay:[o,500]})))}\n//# sourceMappingURL=checkbox_button_group.min.js.map","min_map":"{\"version\":3,\"file\":\"checkbox_button_group.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"tooltip_1\",\"build_views_1\",\"checkbox_button_group_1\",\"CheckboxButtonGroupView\",\"children\",\"super\",\"this\",\"tooltip\",\"lazy_initialize\",\"model\",\"build_view\",\"parent\",\"remove\",\"_b\",\"render\",\"toggle\",\"visible\",\"setv\",\"timer\",\"el\",\"addEventListener\",\"setTimeout\",\"tooltip_delay\",\"clearTimeout\",\"__name__\",\"CheckboxButtonGroup\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Nullable\",\"Ref\",\"Number\",\"Tooltip\"],\"sources\":[\"0\"],\"mappings\":\"AAAsC,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAEnF,IAAIC,EADJF,IAEA,MAAMG,EAAYN,EAAQ,8BACpBO,EAAgBP,EAAQ,6BACxBQ,EAA0BR,EAAQ,iDACxC,MAAMS,UAAgCD,EAAwBC,wBAC1D,SAACC,SACUC,MAAMD,WACO,MAAhBE,KAAKC,gBACCD,KAAKC,QACnB,CACA,qBAAMC,SACIH,MAAMG,kBACZ,MAAMD,QAAEA,GAAYD,KAAKG,MACV,MAAXF,IACAD,KAAKC,cAAgB,EAAIN,EAAcS,YAAYH,EAAS,CAAEI,OAAQL,OAC9E,CACA,MAAAM,GACI,IAAIC,EACoB,QAAvBA,EAAKP,KAAKC,eAA4B,IAAPM,GAAyBA,EAAGD,SAC5DP,MAAMO,QACV,CACA,MAAAE,GACIT,MAAMS,SACN,MAAMC,EAAUC,IACZ,IAAIH,EACoB,QAAvBA,EAAKP,KAAKC,eAA4B,IAAPM,GAAyBA,EAAGJ,MAAMQ,KAAK,CACnED,WACF,EAEN,IAAIE,EACJZ,KAAKa,GAAGC,iBAAiB,cAAc,KACnCF,EAAQG,YAAW,IAAMN,GAAO,IAAOT,KAAKG,MAAMa,cAAc,IAEpEhB,KAAKa,GAAGC,iBAAiB,cAAc,KACnCG,aAAaL,GACbH,GAAO,EAAM,GAErB,EAEJnB,EAAQO,wBAA0BA,EAClCA,EAAwBqB,SAAW,0BACnC,MAAMC,UAA4BvB,EAAwBuB,oBACtD,WAAAC,CAAYC,GACRtB,MAAMsB,EACV,EAEJ/B,EAAQ6B,oBAAsBA,EAC9B1B,EAAK0B,EACLA,EAAoBD,SAAW,sBAC/BC,EAAoBG,WAAa,uBAE7B7B,EAAG8B,UAAUC,aAAe3B,EAC5BJ,EAAGgC,QAAO,EAAGC,WAAUC,MAAKC,aAAa,CACrC3B,QAAS,CAACyB,EAASC,EAAIjC,EAAUmC,UAAW,MAC5Cb,cAAe,CAACY,EAAQ,QAGpC\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/comm_manager.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/comm_manager.js","canonical":"models/comm_manager","resolution":"ESM","id":"eca6f2cacb","hash":"eca6f2cacbeee7a5328b682c2c2b35f90d79b8b8bd2ae6283149264e70e80c22","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CommManager = exports.CommManagerView = exports.comm_settings = void 0;\nvar _a;\nconst document_1 = require(\"@bokehjs/document\");\nconst view_1 = require(\"@bokehjs/core/view\");\nconst model_1 = require(\"@bokehjs/model\");\nconst message_1 = require(\"@bokehjs/protocol/message\");\nconst receiver_1 = require(\"@bokehjs/protocol/receiver\");\nexports.comm_settings = {\n    debounce: true\n};\nclass CommManagerView extends view_1.View {\n}\nexports.CommManagerView = CommManagerView;\nCommManagerView.__name__ = \"CommManagerView\";\nclass CommManager extends model_1.Model {\n    constructor(attrs) {\n        super(attrs);\n        this._document_listener = (event) => this._document_changed(event);\n    }\n    initialize() {\n        super.initialize();\n        this._receiver = new receiver_1.Receiver();\n        this._event_buffer = [];\n        this._blocked = false;\n        this._timeout = Date.now();\n        if ((window.PyViz == undefined) || (!window.PyViz.comm_manager))\n            console.log(\"Could not find comm manager on window.PyViz, ensure the extension is loaded.\");\n        else {\n            this.ns = window.PyViz;\n            this.ns.comm_manager.register_target(this.plot_id, this.comm_id, (msg) => {\n                for (const view of this.ns.shared_views.get(this.plot_id)) {\n                    if (view !== this)\n                        view.msg_handler(msg);\n                }\n                try {\n                    this.msg_handler(msg);\n                }\n                catch (e) {\n                    console.error(e);\n                }\n            });\n            this._client_comm = this.ns.comm_manager.get_client_comm(this.plot_id, this.client_comm_id, (msg) => this.on_ack(msg));\n            if (this.ns.shared_views == null)\n                this.ns.shared_views = new Map();\n            if (this.ns.shared_views.has(this.plot_id))\n                this.ns.shared_views.get(this.plot_id).push(this);\n            else\n                this.ns.shared_views.set(this.plot_id, [this]);\n        }\n    }\n    _doc_attached() {\n        super._doc_attached();\n        if (this.document != null)\n            this.document.on_change(this._document_listener);\n    }\n    _document_changed(event) {\n        // Filter out changes to attributes that aren't server-visible\n        if (event instanceof document_1.ModelChangedEvent && !event.model.properties[event.attr].syncable)\n            return;\n        this._event_buffer.push(event);\n        if (!exports.comm_settings.debounce) {\n            this.process_events();\n        }\n        else if ((!this._blocked || (Date.now() > this._timeout))) {\n            setTimeout(() => this.process_events(), this.debounce);\n            this._blocked = true;\n            this._timeout = Date.now() + this.timeout;\n        }\n    }\n    _extract_buffers(value, buffers) {\n        let extracted;\n        if (value instanceof Array) {\n            extracted = [];\n            for (const val of value)\n                extracted.push(this._extract_buffers(val, buffers));\n        }\n        else if (value instanceof Object) {\n            extracted = {};\n            for (const key in value) {\n                if (key === 'buffer' && value[key] instanceof ArrayBuffer) {\n                    const id = Object.keys(buffers).length;\n                    extracted = { id };\n                    buffers.push(value[key]);\n                    break;\n                }\n                extracted[key] = this._extract_buffers(value[key], buffers);\n            }\n        }\n        else {\n            extracted = value;\n        }\n        return extracted;\n    }\n    process_events() {\n        if ((this.document == null) || (this._client_comm == null))\n            return;\n        const patch = this.document.create_json_patch(this._event_buffer);\n        this._event_buffer = [];\n        const message = Object.assign({}, message_1.Message.create('PATCH-DOC', {}, patch));\n        const buffers = [];\n        message.content = this._extract_buffers(message.content, buffers);\n        this._client_comm.send(message, {}, buffers);\n        for (const view of this.ns.shared_views.get(this.plot_id)) {\n            if (view !== this && view.document != null)\n                view.document.apply_json_patch(patch, [], this.id);\n        }\n    }\n    disconnect_signals() {\n        super.disconnect_signals();\n        this.ns.shared_views.shared_views.delete(this.plot_id);\n    }\n    on_ack(msg) {\n        // Receives acknowledgement from Python, processing event\n        // and unblocking Comm if event queue empty\n        const metadata = msg.metadata;\n        if (this._event_buffer.length) {\n            this._blocked = true;\n            this._timeout = Date.now() + this.timeout;\n            this.process_events();\n        }\n        else\n            this._blocked = false;\n        if ((metadata.msg_type == \"Ready\") && metadata.content)\n            console.log(\"Python callback returned following output:\", metadata.content);\n        else if (metadata.msg_type == \"Error\")\n            console.log(\"Python failed with the following traceback:\", metadata.traceback);\n    }\n    msg_handler(msg) {\n        const metadata = msg.metadata;\n        const buffers = msg.buffers;\n        const content = msg.content.data;\n        const plot_id = this.plot_id;\n        if ((metadata.msg_type == \"Ready\")) {\n            if (metadata.content)\n                console.log(\"Python callback returned following output:\", metadata.content);\n            else if (metadata.msg_type == \"Error\")\n                console.log(\"Python failed with the following traceback:\", metadata.traceback);\n        }\n        else if (plot_id != null) {\n            let plot = null;\n            if ((plot_id in this.ns.plot_index) && (this.ns.plot_index[plot_id] != null))\n                plot = this.ns.plot_index[plot_id];\n            else if ((window.Bokeh !== undefined) && (plot_id in window.Bokeh.index))\n                plot = window.Bokeh.index[plot_id];\n            if (plot == null)\n                return;\n            if (content.length)\n                this._receiver.consume(content);\n            else if ((buffers != undefined) && (buffers.length > 0))\n                this._receiver.consume(buffers[0].buffer);\n            else\n                return;\n            const comm_msg = this._receiver.message;\n            if ((comm_msg != null) && (Object.keys(comm_msg.content).length > 0) && this.document != null) {\n                const patch = comm_msg.content;\n                this.document.apply_json_patch(patch, comm_msg.buffers);\n            }\n        }\n    }\n}\nexports.CommManager = CommManager;\n_a = CommManager;\nCommManager.__name__ = \"CommManager\";\nCommManager.__module__ = \"panel.models.comm_manager\";\n(() => {\n    _a.prototype.default_view = CommManagerView;\n    _a.define(({ Int, String, Nullable }) => ({\n        plot_id: [Nullable(String), null],\n        comm_id: [Nullable(String), null],\n        client_comm_id: [Nullable(String), null],\n        timeout: [Int, 5000],\n        debounce: [Int, 50],\n    }));\n})();\n//# sourceMappingURL=comm_manager.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"CommManagerView"},{"type":"named","name":"CommManager"}],"externals":[],"shims":[]},"code":{"source":"/* models/comm_manager.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const document_1 = require(\"@bokehjs/document\");\n    const view_1 = require(\"@bokehjs/core/view\");\n    const model_1 = require(\"@bokehjs/model\");\n    const message_1 = require(\"@bokehjs/protocol/message\");\n    const receiver_1 = require(\"@bokehjs/protocol/receiver\");\n    exports.comm_settings = {\n        debounce: true\n    };\n    class CommManagerView extends view_1.View {\n    }\n    exports.CommManagerView = CommManagerView;\n    CommManagerView.__name__ = \"CommManagerView\";\n    class CommManager extends model_1.Model {\n        constructor(attrs) {\n            super(attrs);\n            this._document_listener = (event) => this._document_changed(event);\n        }\n        initialize() {\n            super.initialize();\n            this._receiver = new receiver_1.Receiver();\n            this._event_buffer = [];\n            this._blocked = false;\n            this._timeout = Date.now();\n            if ((window.PyViz == undefined) || (!window.PyViz.comm_manager))\n                console.log(\"Could not find comm manager on window.PyViz, ensure the extension is loaded.\");\n            else {\n                this.ns = window.PyViz;\n                this.ns.comm_manager.register_target(this.plot_id, this.comm_id, (msg) => {\n                    for (const view of this.ns.shared_views.get(this.plot_id)) {\n                        if (view !== this)\n                            view.msg_handler(msg);\n                    }\n                    try {\n                        this.msg_handler(msg);\n                    }\n                    catch (e) {\n                        console.error(e);\n                    }\n                });\n                this._client_comm = this.ns.comm_manager.get_client_comm(this.plot_id, this.client_comm_id, (msg) => this.on_ack(msg));\n                if (this.ns.shared_views == null)\n                    this.ns.shared_views = new Map();\n                if (this.ns.shared_views.has(this.plot_id))\n                    this.ns.shared_views.get(this.plot_id).push(this);\n                else\n                    this.ns.shared_views.set(this.plot_id, [this]);\n            }\n        }\n        _doc_attached() {\n            super._doc_attached();\n            if (this.document != null)\n                this.document.on_change(this._document_listener);\n        }\n        _document_changed(event) {\n            // Filter out changes to attributes that aren't server-visible\n            if (event instanceof document_1.ModelChangedEvent && !event.model.properties[event.attr].syncable)\n                return;\n            this._event_buffer.push(event);\n            if (!exports.comm_settings.debounce) {\n                this.process_events();\n            }\n            else if ((!this._blocked || (Date.now() > this._timeout))) {\n                setTimeout(() => this.process_events(), this.debounce);\n                this._blocked = true;\n                this._timeout = Date.now() + this.timeout;\n            }\n        }\n        _extract_buffers(value, buffers) {\n            let extracted;\n            if (value instanceof Array) {\n                extracted = [];\n                for (const val of value)\n                    extracted.push(this._extract_buffers(val, buffers));\n            }\n            else if (value instanceof Object) {\n                extracted = {};\n                for (const key in value) {\n                    if (key === 'buffer' && value[key] instanceof ArrayBuffer) {\n                        const id = Object.keys(buffers).length;\n                        extracted = { id };\n                        buffers.push(value[key]);\n                        break;\n                    }\n                    extracted[key] = this._extract_buffers(value[key], buffers);\n                }\n            }\n            else {\n                extracted = value;\n            }\n            return extracted;\n        }\n        process_events() {\n            if ((this.document == null) || (this._client_comm == null))\n                return;\n            const patch = this.document.create_json_patch(this._event_buffer);\n            this._event_buffer = [];\n            const message = Object.assign({}, message_1.Message.create('PATCH-DOC', {}, patch));\n            const buffers = [];\n            message.content = this._extract_buffers(message.content, buffers);\n            this._client_comm.send(message, {}, buffers);\n            for (const view of this.ns.shared_views.get(this.plot_id)) {\n                if (view !== this && view.document != null)\n                    view.document.apply_json_patch(patch, [], this.id);\n            }\n        }\n        disconnect_signals() {\n            super.disconnect_signals();\n            this.ns.shared_views.shared_views.delete(this.plot_id);\n        }\n        on_ack(msg) {\n            // Receives acknowledgement from Python, processing event\n            // and unblocking Comm if event queue empty\n            const metadata = msg.metadata;\n            if (this._event_buffer.length) {\n                this._blocked = true;\n                this._timeout = Date.now() + this.timeout;\n                this.process_events();\n            }\n            else\n                this._blocked = false;\n            if ((metadata.msg_type == \"Ready\") && metadata.content)\n                console.log(\"Python callback returned following output:\", metadata.content);\n            else if (metadata.msg_type == \"Error\")\n                console.log(\"Python failed with the following traceback:\", metadata.traceback);\n        }\n        msg_handler(msg) {\n            const metadata = msg.metadata;\n            const buffers = msg.buffers;\n            const content = msg.content.data;\n            const plot_id = this.plot_id;\n            if ((metadata.msg_type == \"Ready\")) {\n                if (metadata.content)\n                    console.log(\"Python callback returned following output:\", metadata.content);\n                else if (metadata.msg_type == \"Error\")\n                    console.log(\"Python failed with the following traceback:\", metadata.traceback);\n            }\n            else if (plot_id != null) {\n                let plot = null;\n                if ((plot_id in this.ns.plot_index) && (this.ns.plot_index[plot_id] != null))\n                    plot = this.ns.plot_index[plot_id];\n                else if ((window.Bokeh !== undefined) && (plot_id in window.Bokeh.index))\n                    plot = window.Bokeh.index[plot_id];\n                if (plot == null)\n                    return;\n                if (content.length)\n                    this._receiver.consume(content);\n                else if ((buffers != undefined) && (buffers.length > 0))\n                    this._receiver.consume(buffers[0].buffer);\n                else\n                    return;\n                const comm_msg = this._receiver.message;\n                if ((comm_msg != null) && (Object.keys(comm_msg.content).length > 0) && this.document != null) {\n                    const patch = comm_msg.content;\n                    this.document.apply_json_patch(patch, comm_msg.buffers);\n                }\n            }\n        }\n    }\n    exports.CommManager = CommManager;\n    _a = CommManager;\n    CommManager.__name__ = \"CommManager\";\n    CommManager.__module__ = \"panel.models.comm_manager\";\n    (() => {\n        _a.prototype.default_view = CommManagerView;\n        _a.define(({ Int, String, Nullable }) => ({\n            plot_id: [Nullable(String), null],\n            comm_id: [Nullable(String), null],\n            client_comm_id: [Nullable(String), null],\n            timeout: [Int, 5000],\n            debounce: [Int, 50],\n        }));\n    })();\n}\n","min_source":"function _(e,t,s,n,i){var o;n();const c=e(\"@bokehjs/document\"),l=e(\"@bokehjs/core/view\"),_=e(\"@bokehjs/model\"),h=e(\"@bokehjs/protocol/message\"),r=e(\"@bokehjs/protocol/receiver\");s.comm_settings={debounce:!0};class a extends l.View{}s.CommManagerView=a,a.__name__=\"CommManagerView\";class d extends _.Model{constructor(e){super(e),this._document_listener=e=>this._document_changed(e)}initialize(){super.initialize(),this._receiver=new r.Receiver,this._event_buffer=[],this._blocked=!1,this._timeout=Date.now(),null!=window.PyViz&&window.PyViz.comm_manager?(this.ns=window.PyViz,this.ns.comm_manager.register_target(this.plot_id,this.comm_id,(e=>{for(const t of this.ns.shared_views.get(this.plot_id))t!==this&&t.msg_handler(e);try{this.msg_handler(e)}catch(e){console.error(e)}})),this._client_comm=this.ns.comm_manager.get_client_comm(this.plot_id,this.client_comm_id,(e=>this.on_ack(e))),null==this.ns.shared_views&&(this.ns.shared_views=new Map),this.ns.shared_views.has(this.plot_id)?this.ns.shared_views.get(this.plot_id).push(this):this.ns.shared_views.set(this.plot_id,[this])):console.log(\"Could not find comm manager on window.PyViz, ensure the extension is loaded.\")}_doc_attached(){super._doc_attached(),null!=this.document&&this.document.on_change(this._document_listener)}_document_changed(e){e instanceof c.ModelChangedEvent&&!e.model.properties[e.attr].syncable||(this._event_buffer.push(e),s.comm_settings.debounce?(!this._blocked||Date.now()>this._timeout)&&(setTimeout((()=>this.process_events()),this.debounce),this._blocked=!0,this._timeout=Date.now()+this.timeout):this.process_events())}_extract_buffers(e,t){let s;if(e instanceof Array){s=[];for(const n of e)s.push(this._extract_buffers(n,t))}else if(e instanceof Object){s={};for(const n in e){if(\"buffer\"===n&&e[n]instanceof ArrayBuffer){s={id:Object.keys(t).length},t.push(e[n]);break}s[n]=this._extract_buffers(e[n],t)}}else s=e;return s}process_events(){if(null==this.document||null==this._client_comm)return;const e=this.document.create_json_patch(this._event_buffer);this._event_buffer=[];const t=Object.assign({},h.Message.create(\"PATCH-DOC\",{},e)),s=[];t.content=this._extract_buffers(t.content,s),this._client_comm.send(t,{},s);for(const t of this.ns.shared_views.get(this.plot_id))t!==this&&null!=t.document&&t.document.apply_json_patch(e,[],this.id)}disconnect_signals(){super.disconnect_signals(),this.ns.shared_views.shared_views.delete(this.plot_id)}on_ack(e){const t=e.metadata;this._event_buffer.length?(this._blocked=!0,this._timeout=Date.now()+this.timeout,this.process_events()):this._blocked=!1,\"Ready\"==t.msg_type&&t.content?console.log(\"Python callback returned following output:\",t.content):\"Error\"==t.msg_type&&console.log(\"Python failed with the following traceback:\",t.traceback)}msg_handler(e){const t=e.metadata,s=e.buffers,n=e.content.data,i=this.plot_id;if(\"Ready\"==t.msg_type)t.content?console.log(\"Python callback returned following output:\",t.content):\"Error\"==t.msg_type&&console.log(\"Python failed with the following traceback:\",t.traceback);else if(null!=i){let e=null;if(i in this.ns.plot_index&&null!=this.ns.plot_index[i]?e=this.ns.plot_index[i]:void 0!==window.Bokeh&&i in window.Bokeh.index&&(e=window.Bokeh.index[i]),null==e)return;if(n.length)this._receiver.consume(n);else{if(!(null!=s&&s.length>0))return;this._receiver.consume(s[0].buffer)}const t=this._receiver.message;if(null!=t&&Object.keys(t.content).length>0&&null!=this.document){const e=t.content;this.document.apply_json_patch(e,t.buffers)}}}}s.CommManager=d,o=d,d.__name__=\"CommManager\",d.__module__=\"panel.models.comm_manager\",o.prototype.default_view=a,o.define((({Int:e,String:t,Nullable:s})=>({plot_id:[s(t),null],comm_id:[s(t),null],client_comm_id:[s(t),null],timeout:[e,5e3],debounce:[e,50]})))}\n//# sourceMappingURL=comm_manager.min.js.map","min_map":"{\"version\":3,\"file\":\"comm_manager.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"document_1\",\"view_1\",\"model_1\",\"message_1\",\"receiver_1\",\"comm_settings\",\"debounce\",\"CommManagerView\",\"View\",\"__name__\",\"CommManager\",\"Model\",\"constructor\",\"attrs\",\"super\",\"this\",\"_document_listener\",\"event\",\"_document_changed\",\"initialize\",\"_receiver\",\"Receiver\",\"_event_buffer\",\"_blocked\",\"_timeout\",\"Date\",\"now\",\"undefined\",\"window\",\"PyViz\",\"comm_manager\",\"ns\",\"register_target\",\"plot_id\",\"comm_id\",\"msg\",\"view\",\"shared_views\",\"get\",\"msg_handler\",\"e\",\"console\",\"error\",\"_client_comm\",\"get_client_comm\",\"client_comm_id\",\"on_ack\",\"Map\",\"has\",\"push\",\"set\",\"log\",\"_doc_attached\",\"document\",\"on_change\",\"ModelChangedEvent\",\"model\",\"properties\",\"attr\",\"syncable\",\"setTimeout\",\"process_events\",\"timeout\",\"_extract_buffers\",\"value\",\"buffers\",\"extracted\",\"Array\",\"val\",\"Object\",\"key\",\"ArrayBuffer\",\"id\",\"keys\",\"length\",\"patch\",\"create_json_patch\",\"message\",\"assign\",\"Message\",\"create\",\"content\",\"send\",\"apply_json_patch\",\"disconnect_signals\",\"delete\",\"metadata\",\"msg_type\",\"traceback\",\"data\",\"plot\",\"plot_index\",\"Bokeh\",\"index\",\"consume\",\"buffer\",\"comm_msg\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Int\",\"String\",\"Nullable\"],\"sources\":[\"0\"],\"mappings\":\"AAA6B,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAE1E,IAAIC,EADJF,IAEA,MAAMG,EAAaN,EAAQ,qBACrBO,EAASP,EAAQ,sBACjBQ,EAAUR,EAAQ,kBAClBS,EAAYT,EAAQ,6BACpBU,EAAaV,EAAQ,8BAC3BE,EAAQS,cAAgB,CACpBC,UAAU,GAEd,MAAMC,UAAwBN,EAAOO,MAErCZ,EAAQW,gBAAkBA,EAC1BA,EAAgBE,SAAW,kBAC3B,MAAMC,UAAoBR,EAAQS,MAC9B,WAAAC,CAAYC,GACRC,MAAMD,GACNE,KAAKC,mBAAsBC,GAAUF,KAAKG,kBAAkBD,EAChE,CACA,UAAAE,GACIL,MAAMK,aACNJ,KAAKK,UAAY,IAAIhB,EAAWiB,SAChCN,KAAKO,cAAgB,GACrBP,KAAKQ,UAAW,EAChBR,KAAKS,SAAWC,KAAKC,MACAC,MAAhBC,OAAOC,OAAyBD,OAAOC,MAAMC,cAG9Cf,KAAKgB,GAAKH,OAAOC,MACjBd,KAAKgB,GAAGD,aAAaE,gBAAgBjB,KAAKkB,QAASlB,KAAKmB,SAAUC,IAC9D,IAAK,MAAMC,KAAQrB,KAAKgB,GAAGM,aAAaC,IAAIvB,KAAKkB,SACzCG,IAASrB,MACTqB,EAAKG,YAAYJ,GAEzB,IACIpB,KAAKwB,YAAYJ,EACrB,CACA,MAAOK,GACHC,QAAQC,MAAMF,EAClB,KAEJzB,KAAK4B,aAAe5B,KAAKgB,GAAGD,aAAac,gBAAgB7B,KAAKkB,QAASlB,KAAK8B,gBAAiBV,GAAQpB,KAAK+B,OAAOX,KACrF,MAAxBpB,KAAKgB,GAAGM,eACRtB,KAAKgB,GAAGM,aAAe,IAAIU,KAC3BhC,KAAKgB,GAAGM,aAAaW,IAAIjC,KAAKkB,SAC9BlB,KAAKgB,GAAGM,aAAaC,IAAIvB,KAAKkB,SAASgB,KAAKlC,MAE5CA,KAAKgB,GAAGM,aAAaa,IAAInC,KAAKkB,QAAS,CAAClB,QArB5C0B,QAAQU,IAAI,+EAuBpB,CACA,aAAAC,GACItC,MAAMsC,gBACe,MAAjBrC,KAAKsC,UACLtC,KAAKsC,SAASC,UAAUvC,KAAKC,mBACrC,CACA,iBAAAE,CAAkBD,GAEVA,aAAiBjB,EAAWuD,oBAAsBtC,EAAMuC,MAAMC,WAAWxC,EAAMyC,MAAMC,WAEzF5C,KAAKO,cAAc2B,KAAKhC,GACnBrB,EAAQS,cAAcC,WAGhBS,KAAKQ,UAAaE,KAAKC,MAAQX,KAAKS,YAC3CoC,YAAW,IAAM7C,KAAK8C,kBAAkB9C,KAAKT,UAC7CS,KAAKQ,UAAW,EAChBR,KAAKS,SAAWC,KAAKC,MAAQX,KAAK+C,SALlC/C,KAAK8C,iBAOb,CACA,gBAAAE,CAAiBC,EAAOC,GACpB,IAAIC,EACJ,GAAIF,aAAiBG,MAAO,CACxBD,EAAY,GACZ,IAAK,MAAME,KAAOJ,EACdE,EAAUjB,KAAKlC,KAAKgD,iBAAiBK,EAAKH,GAClD,MACK,GAAID,aAAiBK,OAAQ,CAC9BH,EAAY,CAAC,EACb,IAAK,MAAMI,KAAON,EAAO,CACrB,GAAY,WAARM,GAAoBN,EAAMM,aAAgBC,YAAa,CAEvDL,EAAY,CAAEM,GADHH,OAAOI,KAAKR,GAASS,QAEhCT,EAAQhB,KAAKe,EAAMM,IACnB,KACJ,CACAJ,EAAUI,GAAOvD,KAAKgD,iBAAiBC,EAAMM,GAAML,EACvD,CACJ,MAEIC,EAAYF,EAEhB,OAAOE,CACX,CACA,cAAAL,GACI,GAAsB,MAAjB9C,KAAKsC,UAA2C,MAArBtC,KAAK4B,aACjC,OACJ,MAAMgC,EAAQ5D,KAAKsC,SAASuB,kBAAkB7D,KAAKO,eACnDP,KAAKO,cAAgB,GACrB,MAAMuD,EAAUR,OAAOS,OAAO,CAAC,EAAG3E,EAAU4E,QAAQC,OAAO,YAAa,CAAC,EAAGL,IACtEV,EAAU,GAChBY,EAAQI,QAAUlE,KAAKgD,iBAAiBc,EAAQI,QAAShB,GACzDlD,KAAK4B,aAAauC,KAAKL,EAAS,CAAC,EAAGZ,GACpC,IAAK,MAAM7B,KAAQrB,KAAKgB,GAAGM,aAAaC,IAAIvB,KAAKkB,SACzCG,IAASrB,MAAyB,MAAjBqB,EAAKiB,UACtBjB,EAAKiB,SAAS8B,iBAAiBR,EAAO,GAAI5D,KAAKyD,GAE3D,CACA,kBAAAY,GACItE,MAAMsE,qBACNrE,KAAKgB,GAAGM,aAAaA,aAAagD,OAAOtE,KAAKkB,QAClD,CACA,MAAAa,CAAOX,GAGH,MAAMmD,EAAWnD,EAAImD,SACjBvE,KAAKO,cAAcoD,QACnB3D,KAAKQ,UAAW,EAChBR,KAAKS,SAAWC,KAAKC,MAAQX,KAAK+C,QAClC/C,KAAK8C,kBAGL9C,KAAKQ,UAAW,EACM,SAArB+D,EAASC,UAAwBD,EAASL,QAC3CxC,QAAQU,IAAI,6CAA8CmC,EAASL,SACzC,SAArBK,EAASC,UACd9C,QAAQU,IAAI,8CAA+CmC,EAASE,UAC5E,CACA,WAAAjD,CAAYJ,GACR,MAAMmD,EAAWnD,EAAImD,SACfrB,EAAU9B,EAAI8B,QACdgB,EAAU9C,EAAI8C,QAAQQ,KACtBxD,EAAUlB,KAAKkB,QACrB,GAA0B,SAArBqD,EAASC,SACND,EAASL,QACTxC,QAAQU,IAAI,6CAA8CmC,EAASL,SACzC,SAArBK,EAASC,UACd9C,QAAQU,IAAI,8CAA+CmC,EAASE,gBAEvE,GAAe,MAAXvD,EAAiB,CACtB,IAAIyD,EAAO,KAKX,GAJKzD,KAAWlB,KAAKgB,GAAG4D,YAA+C,MAA/B5E,KAAKgB,GAAG4D,WAAW1D,GACvDyD,EAAO3E,KAAKgB,GAAG4D,WAAW1D,QACHN,IAAjBC,OAAOgE,OAAyB3D,KAAWL,OAAOgE,MAAMC,QAC9DH,EAAO9D,OAAOgE,MAAMC,MAAM5D,IAClB,MAARyD,EACA,OACJ,GAAIT,EAAQP,OACR3D,KAAKK,UAAU0E,QAAQb,OACtB,MAAgBtD,MAAXsC,GAA0BA,EAAQS,OAAS,GAGjD,OAFA3D,KAAKK,UAAU0E,QAAQ7B,EAAQ,GAAG8B,OAE5B,CACV,MAAMC,EAAWjF,KAAKK,UAAUyD,QAChC,GAAiB,MAAZmB,GAAsB3B,OAAOI,KAAKuB,EAASf,SAASP,OAAS,GAAuB,MAAjB3D,KAAKsC,SAAkB,CAC3F,MAAMsB,EAAQqB,EAASf,QACvBlE,KAAKsC,SAAS8B,iBAAiBR,EAAOqB,EAAS/B,QACnD,CACJ,CACJ,EAEJrE,EAAQc,YAAcA,EACtBX,EAAKW,EACLA,EAAYD,SAAW,cACvBC,EAAYuF,WAAa,4BAErBlG,EAAGmG,UAAUC,aAAe5F,EAC5BR,EAAGqG,QAAO,EAAGC,MAAKC,SAAQC,eAAe,CACrCtE,QAAS,CAACsE,EAASD,GAAS,MAC5BpE,QAAS,CAACqE,EAASD,GAAS,MAC5BzD,eAAgB,CAAC0D,EAASD,GAAS,MACnCxC,QAAS,CAACuC,EAAK,KACf/F,SAAU,CAAC+F,EAAK,OAG5B\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/customselect.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/customselect.js","canonical":"models/customselect","resolution":"ESM","id":"e258e515be","hash":"e258e515be5f43f96db6788635d17e5be9b96ea62d7a95e4a740639fc36feccf","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CustomSelect = exports.CustomSelectView = void 0;\nvar _a;\nconst selectbox_1 = require(\"@bokehjs/models/widgets/selectbox\");\nclass CustomSelectView extends selectbox_1.SelectView {\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.disabled_options.change, () => this._update_disabled_options());\n    }\n    options_el() {\n        let opts = super.options_el();\n        opts.forEach((element) => {\n            if (this.model.disabled_options.includes(element.value)) {\n                element.setAttribute('disabled', 'true');\n            }\n        });\n        return opts;\n    }\n    _update_disabled_options() {\n        for (const element of this.input_el.options) {\n            if (this.model.disabled_options.includes(element.value)) {\n                element.setAttribute('disabled', 'true');\n            }\n            else {\n                element.removeAttribute('disabled');\n            }\n        }\n    }\n}\nexports.CustomSelectView = CustomSelectView;\nCustomSelectView.__name__ = \"CustomSelectView\";\nclass CustomSelect extends selectbox_1.Select {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.CustomSelect = CustomSelect;\n_a = CustomSelect;\nCustomSelect.__name__ = \"CustomSelect\";\nCustomSelect.__module__ = \"panel.models.widgets\";\n(() => {\n    _a.prototype.default_view = CustomSelectView;\n    _a.define(({ Array, String }) => {\n        return {\n            disabled_options: [Array(String), []],\n        };\n    });\n})();\n//# sourceMappingURL=customselect.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"CustomSelectView"},{"type":"named","name":"CustomSelect"}],"externals":[],"shims":[]},"code":{"source":"/* models/customselect.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const selectbox_1 = require(\"@bokehjs/models/widgets/selectbox\");\n    class CustomSelectView extends selectbox_1.SelectView {\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.disabled_options.change, () => this._update_disabled_options());\n        }\n        options_el() {\n            let opts = super.options_el();\n            opts.forEach((element) => {\n                if (this.model.disabled_options.includes(element.value)) {\n                    element.setAttribute('disabled', 'true');\n                }\n            });\n            return opts;\n        }\n        _update_disabled_options() {\n            for (const element of this.input_el.options) {\n                if (this.model.disabled_options.includes(element.value)) {\n                    element.setAttribute('disabled', 'true');\n                }\n                else {\n                    element.removeAttribute('disabled');\n                }\n            }\n        }\n    }\n    exports.CustomSelectView = CustomSelectView;\n    CustomSelectView.__name__ = \"CustomSelectView\";\n    class CustomSelect extends selectbox_1.Select {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.CustomSelect = CustomSelect;\n    _a = CustomSelect;\n    CustomSelect.__name__ = \"CustomSelect\";\n    CustomSelect.__module__ = \"panel.models.widgets\";\n    (() => {\n        _a.prototype.default_view = CustomSelectView;\n        _a.define(({ Array, String }) => {\n            return {\n                disabled_options: [Array(String), []],\n            };\n        });\n    })();\n}\n","min_source":"function _(e,t,s,o,i){var l;o();const d=e(\"@bokehjs/models/widgets/selectbox\");class n extends d.SelectView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.disabled_options.change,(()=>this._update_disabled_options()))}options_el(){let e=super.options_el();return e.forEach((e=>{this.model.disabled_options.includes(e.value)&&e.setAttribute(\"disabled\",\"true\")})),e}_update_disabled_options(){for(const e of this.input_el.options)this.model.disabled_options.includes(e.value)?e.setAttribute(\"disabled\",\"true\"):e.removeAttribute(\"disabled\")}}s.CustomSelectView=n,n.__name__=\"CustomSelectView\";class _ extends d.Select{constructor(e){super(e)}}s.CustomSelect=_,l=_,_.__name__=\"CustomSelect\",_.__module__=\"panel.models.widgets\",l.prototype.default_view=n,l.define((({Array:e,String:t})=>({disabled_options:[e(t),[]]})))}\n//# sourceMappingURL=customselect.min.js.map","min_map":"{\"version\":3,\"file\":\"customselect.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"selectbox_1\",\"CustomSelectView\",\"SelectView\",\"connect_signals\",\"super\",\"this\",\"connect\",\"model\",\"properties\",\"disabled_options\",\"change\",\"_update_disabled_options\",\"options_el\",\"opts\",\"forEach\",\"element\",\"includes\",\"value\",\"setAttribute\",\"input_el\",\"options\",\"removeAttribute\",\"__name__\",\"CustomSelect\",\"Select\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Array\",\"String\"],\"sources\":[\"0\"],\"mappings\":\"AAA6B,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAE1E,IAAIC,EADJF,IAEA,MAAMG,EAAcN,EAAQ,qCAC5B,MAAMO,UAAyBD,EAAYE,WACvC,eAAAC,GACIC,MAAMD,kBACNE,KAAKC,QAAQD,KAAKE,MAAMC,WAAWC,iBAAiBC,QAAQ,IAAML,KAAKM,4BAC3E,CACA,UAAAC,GACI,IAAIC,EAAOT,MAAMQ,aAMjB,OALAC,EAAKC,SAASC,IACNV,KAAKE,MAAME,iBAAiBO,SAASD,EAAQE,QAC7CF,EAAQG,aAAa,WAAY,OACrC,IAEGL,CACX,CACA,wBAAAF,GACI,IAAK,MAAMI,KAAWV,KAAKc,SAASC,QAC5Bf,KAAKE,MAAME,iBAAiBO,SAASD,EAAQE,OAC7CF,EAAQG,aAAa,WAAY,QAGjCH,EAAQM,gBAAgB,WAGpC,EAEJzB,EAAQK,iBAAmBA,EAC3BA,EAAiBqB,SAAW,mBAC5B,MAAMC,UAAqBvB,EAAYwB,OACnC,WAAAC,CAAYC,GACRtB,MAAMsB,EACV,EAEJ9B,EAAQ2B,aAAeA,EACvBxB,EAAKwB,EACLA,EAAaD,SAAW,eACxBC,EAAaI,WAAa,uBAEtB5B,EAAG6B,UAAUC,aAAe5B,EAC5BF,EAAG+B,QAAO,EAAGC,QAAOC,aACT,CACHvB,iBAAkB,CAACsB,EAAMC,GAAS,OAIlD\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/tabulator.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/tabulator.js","canonical":"models/tabulator","resolution":"ESM","id":"f7b17ce11c","hash":"f7b17ce11c7f5e90ad79fb318d6244608b3bde0166a37d4e7bdf0bfd102e4d6d","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DataTabulator = exports.TableLayout = exports.DataTabulatorView = exports.SelectionEvent = exports.CellClickEvent = exports.TableEditEvent = void 0;\nvar _a, _b, _c, _d;\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst types_1 = require(\"@bokehjs/core/util/types\");\nconst bokeh_events_1 = require(\"@bokehjs/core/bokeh_events\");\nconst dom_2 = require(\"@bokehjs/core/dom\");\nconst kinds_1 = require(\"@bokehjs/core/kinds\");\nconst column_data_source_1 = require(\"@bokehjs/models/sources/column_data_source\");\nconst tables_1 = require(\"@bokehjs/models/widgets/tables\");\nconst debounce_1 = require(\"debounce\");\nconst comm_manager_1 = require(\"./comm_manager\");\nconst data_1 = require(\"./data\");\nconst layout_1 = require(\"./layout\");\nclass TableEditEvent extends bokeh_events_1.ModelEvent {\n    constructor(column, row, pre) {\n        super();\n        this.column = column;\n        this.row = row;\n        this.pre = pre;\n    }\n    get event_values() {\n        return { model: this.origin, column: this.column, row: this.row, pre: this.pre };\n    }\n}\nexports.TableEditEvent = TableEditEvent;\n_a = TableEditEvent;\nTableEditEvent.__name__ = \"TableEditEvent\";\n(() => {\n    _a.prototype.event_name = \"table-edit\";\n})();\nclass CellClickEvent extends bokeh_events_1.ModelEvent {\n    constructor(column, row) {\n        super();\n        this.column = column;\n        this.row = row;\n    }\n    get event_values() {\n        return { model: this.origin, column: this.column, row: this.row };\n    }\n}\nexports.CellClickEvent = CellClickEvent;\n_b = CellClickEvent;\nCellClickEvent.__name__ = \"CellClickEvent\";\n(() => {\n    _b.prototype.event_name = \"cell-click\";\n})();\nclass SelectionEvent extends bokeh_events_1.ModelEvent {\n    constructor(indices, selected, flush = false) {\n        super();\n        this.indices = indices;\n        this.selected = selected;\n        this.flush = flush;\n    }\n    get event_values() {\n        return { model: this.origin, indices: this.indices, selected: this.selected, flush: this.flush };\n    }\n}\nexports.SelectionEvent = SelectionEvent;\n_c = SelectionEvent;\nSelectionEvent.__name__ = \"SelectionEvent\";\n(() => {\n    _c.prototype.event_name = \"selection-change\";\n})();\nfunction find_group(key, value, records) {\n    for (const record of records) {\n        if (record[key] == value)\n            return record;\n    }\n    return null;\n}\nfunction summarize(grouped, columns, aggregators, depth = 0) {\n    const summary = {};\n    if (grouped.length == 0)\n        return summary;\n    const agg = aggregators[depth];\n    for (const group of grouped) {\n        const subsummary = summarize(group._children, columns, aggregators, depth + 1);\n        for (const col in subsummary) {\n            if ((0, types_1.isArray)(subsummary[col]))\n                group[col] = subsummary[col].reduce((a, b) => a + b, 0) / subsummary[col].length;\n            else\n                group[col] = subsummary[col];\n        }\n        for (const column of columns.slice(1)) {\n            const val = group[column.field];\n            if (column.field in summary) {\n                const old_val = summary[column.field];\n                if (agg === 'min')\n                    summary[column.field] = Math.min(val, old_val);\n                else if (agg === 'max')\n                    summary[column.field] = Math.max(val, old_val);\n                else if (agg === 'sum')\n                    summary[column.field] = val + old_val;\n                else if (agg === 'mean') {\n                    if ((0, types_1.isArray)(summary[column.field]))\n                        summary[column.field].push(val);\n                    else\n                        summary[column.field] = [old_val, val];\n                }\n            }\n            else\n                summary[column.field] = val;\n        }\n    }\n    return summary;\n}\nfunction group_data(records, columns, indexes, aggregators) {\n    const grouped = [];\n    const index_field = columns[0].field;\n    for (const record of records) {\n        const value = record[indexes[0]];\n        let group = find_group(index_field, value, grouped);\n        if (group == null) {\n            group = { _children: [] };\n            group[index_field] = value;\n            grouped.push(group);\n        }\n        let subgroup = group;\n        const groups = {};\n        for (const index of indexes.slice(1)) {\n            subgroup = find_group(index_field, record[index], subgroup._children);\n            if (subgroup == null) {\n                subgroup = { _children: [] };\n                subgroup[index_field] = record[index];\n                group._children.push(subgroup);\n            }\n            groups[index] = group;\n            for (const column of columns.slice(1))\n                subgroup[column.field] = record[column];\n            group = subgroup;\n        }\n        for (const column of columns.slice(1))\n            subgroup[column.field] = record[column.field];\n    }\n    const aggs = [];\n    for (const index of indexes)\n        aggs.push((index in aggregators) ? aggregators[index] : 'sum');\n    summarize(grouped, columns, aggs);\n    return grouped;\n}\nconst timestampSorter = function (a, b, _aRow, _bRow, _column, _dir, _params) {\n    // Bokeh serializes datetime objects as UNIX timestamps.\n    //a, b - the two values being compared\n    //aRow, bRow - the row components for the values being compared (useful if you need to access additional fields in the row data for the sort)\n    //column - the column component for the column being sorted\n    //dir - the direction of the sort (\"asc\" or \"desc\")\n    //sorterParams - sorterParams object from column definition array\n    // Added an _ in front of some parameters as they're unused and the Typescript compiler was complaining about it.\n    // const alignEmptyValues = params.alignEmptyValues\n    let emptyAlign;\n    emptyAlign = 0;\n    const opts = { zone: new window.luxon.IANAZone('UTC') };\n    // NaN values are serialized to -9223372036854776 by Bokeh\n    if (String(a) == '-9223372036854776') {\n        a = window.luxon.DateTime.fromISO('invalid');\n    }\n    else {\n        a = window.luxon.DateTime.fromMillis(a, opts);\n    }\n    if (String(b) == '-9223372036854776') {\n        b = window.luxon.DateTime.fromISO('invalid');\n    }\n    else {\n        b = window.luxon.DateTime.fromMillis(b, opts);\n    }\n    if (!a.isValid) {\n        emptyAlign = !b.isValid ? 0 : -1;\n    }\n    else if (!b.isValid) {\n        emptyAlign = 1;\n    }\n    else {\n        //compare valid values\n        return a - b;\n    }\n    // Invalid (e.g. NaN) always at the bottom\n    emptyAlign *= -1;\n    return emptyAlign;\n};\nconst dateEditor = function (cell, onRendered, success, cancel) {\n    //cell - the cell component for the editable cell\n    //onRendered - function to call when the editor has been rendered\n    //success - function to call to pass the successfully updated value to Tabulator\n    //cancel - function to call to abort the edit and return to a normal cell\n    //create and style input\n    const rawValue = cell.getValue();\n    const opts = { zone: new window.luxon.IANAZone('UTC') };\n    let cellValue;\n    if (rawValue === 'NaN' || rawValue === null)\n        cellValue = null;\n    else\n        cellValue = window.luxon.DateTime.fromMillis(rawValue, opts).toFormat(\"yyyy-MM-dd\");\n    const input = document.createElement(\"input\");\n    input.setAttribute(\"type\", \"date\");\n    input.style.padding = \"4px\";\n    input.style.width = \"100%\";\n    input.style.boxSizing = \"border-box\";\n    input.value = cellValue;\n    onRendered(() => {\n        input.focus();\n        input.style.height = \"100%\";\n    });\n    function onChange() {\n        const new_val = window.luxon.DateTime.fromFormat(input.value, \"yyyy-MM-dd\", opts).toMillis();\n        if (new_val != cellValue)\n            success(new_val);\n        else\n            cancel();\n    }\n    //submit new value on blur or change\n    input.addEventListener(\"blur\", onChange);\n    //submit new value on enter\n    input.addEventListener(\"keydown\", (e) => {\n        if (e.key == \"Enter\")\n            setTimeout(onChange, 100);\n        if (e.key == \"Escape\")\n            setTimeout(cancel, 100);\n    });\n    return input;\n};\nconst datetimeEditor = function (cell, onRendered, success, cancel) {\n    //cell - the cell component for the editable cell\n    //onRendered - function to call when the editor has been rendered\n    //success - function to call to pass the successfully updated value to Tabulator\n    //cancel - function to call to abort the edit and return to a normal cell\n    //create and style input\n    const rawValue = cell.getValue();\n    const opts = { zone: new window.luxon.IANAZone('UTC') };\n    let cellValue;\n    if (rawValue === 'NaN' || rawValue === null)\n        cellValue = null;\n    else\n        cellValue = window.luxon.DateTime.fromMillis(rawValue, opts).toFormat(\"yyyy-MM-dd'T'T\");\n    const input = document.createElement(\"input\");\n    input.setAttribute(\"type\", \"datetime-local\");\n    input.style.padding = \"4px\";\n    input.style.width = \"100%\";\n    input.style.boxSizing = \"border-box\";\n    input.value = cellValue;\n    onRendered(() => {\n        input.focus();\n        input.style.height = \"100%\";\n    });\n    function onChange() {\n        const new_val = window.luxon.DateTime.fromFormat(input.value, \"yyyy-MM-dd'T'T\", opts).toMillis();\n        if (new_val != cellValue)\n            success(new_val);\n        else\n            cancel();\n    }\n    //submit new value on blur or change\n    input.addEventListener(\"blur\", onChange);\n    //submit new value on enter\n    input.addEventListener(\"keydown\", (e) => {\n        if (e.key == \"Enter\")\n            setTimeout(onChange, 100);\n        if (e.key == \"Escape\")\n            setTimeout(cancel, 100);\n    });\n    return input;\n};\nclass DataTabulatorView extends layout_1.HTMLBoxView {\n    constructor() {\n        super(...arguments);\n        this.columns = new Map();\n        this._tabulator_cell_updating = false;\n        this._updating_page = false;\n        this._updating_sort = false;\n        this._selection_updating = false;\n        this._lastVerticalScrollbarTopPosition = 0;\n        this._applied_styles = false;\n        this._building = false;\n    }\n    connect_signals() {\n        super.connect_signals();\n        const p = this.model.properties;\n        const { configuration, layout, columns, groupby } = p;\n        this.on_change([configuration, layout, groupby], (0, debounce_1.debounce)(() => {\n            this.invalidate_render();\n        }, 20, false));\n        this.connect(this.model.properties.visible.change, () => {\n            if (this.model.visible)\n                this.tabulator.element.style.visibility = 'visible';\n        });\n        this.on_change([columns], () => {\n            this.tabulator.setColumns(this.getColumns());\n            this.setHidden();\n        });\n        this.connect(p.download.change, () => {\n            const ftype = this.model.filename.endsWith('.json') ? \"json\" : \"csv\";\n            this.tabulator.download(ftype, this.model.filename);\n        });\n        this.connect(p.children.change, () => this.renderChildren());\n        this.connect(p.expanded.change, () => {\n            // The first cell is the cell of the frozen _index column.\n            for (const row of this.tabulator.rowManager.getRows()) {\n                if (row.cells.length > 0)\n                    row.cells[0].layoutElement();\n            }\n            // Make sure the expand icon is changed when expanded is\n            // changed from Python.\n            for (const row of this.tabulator.rowManager.getRows()) {\n                if (row.cells.length > 0) {\n                    const index = row.data._index;\n                    const icon = this.model.expanded.indexOf(index) < 0 ? \"►\" : \"▼\";\n                    row.cells[1].element.innerText = icon;\n                }\n            }\n        });\n        this.connect(p.cell_styles.change, () => {\n            if (this._applied_styles)\n                this.tabulator.redraw(true);\n            this.setStyles();\n        });\n        this.connect(p.hidden_columns.change, () => {\n            this.setHidden();\n            this.tabulator.redraw(true);\n        });\n        this.connect(p.page_size.change, () => this.setPageSize());\n        this.connect(p.page.change, () => {\n            if (!this._updating_page)\n                this.setPage();\n        });\n        this.connect(p.visible.change, () => this.setVisibility());\n        this.connect(p.max_page.change, () => this.setMaxPage());\n        this.connect(p.frozen_rows.change, () => this.setFrozen());\n        this.connect(p.sorters.change, () => this.setSorters());\n        this.connect(p.theme_classes.change, () => this.setCSSClasses(this.tabulator.element));\n        this.connect(this.model.source.properties.data.change, () => {\n            if (this.tabulator === undefined)\n                return;\n            this._selection_updating = true;\n            this.setData();\n            this._selection_updating = false;\n            this.postUpdate();\n        });\n        this.connect(this.model.source.streaming, () => this.addData());\n        this.connect(this.model.source.patching, () => {\n            const inds = this.model.source.selected.indices;\n            this.updateOrAddData();\n            this.tabulator.rowManager.element.scrollTop = this._lastVerticalScrollbarTopPosition;\n            // Restore indices since updating data may have reset checkbox column\n            this.model.source.selected.indices = inds;\n        });\n        this.connect(this.model.source.selected.change, () => this.setSelection());\n        this.connect(this.model.source.selected.properties.indices.change, () => this.setSelection());\n    }\n    get groupBy() {\n        const groupby = (data) => {\n            const groups = [];\n            for (const g of this.model.groupby) {\n                const group = g + ': ' + data[g];\n                groups.push(group);\n            }\n            return groups.join(', ');\n        };\n        return this.model.groupby.length ? groupby : false;\n    }\n    get sorters() {\n        const sorters = [];\n        if (this.model.sorters.length)\n            sorters.push({ column: '_index', dir: 'asc' });\n        for (const sort of this.model.sorters.reverse()) {\n            if (sort.column === undefined)\n                sort.column = sort.field;\n            sorters.push(sort);\n        }\n        return sorters;\n    }\n    invalidate_render() {\n        this.tabulator.destroy();\n        this.tabulator = null;\n        this.render();\n    }\n    redraw() {\n        if (this._building)\n            return;\n        if (this.tabulator.columnManager.element != null) {\n            this.tabulator.columnManager.redraw(true);\n        }\n        if (this.tabulator.rowManager.renderer != null) {\n            this.tabulator.rowManager.redraw(true);\n            this.renderChildren();\n            this.setStyles();\n        }\n    }\n    after_layout() {\n        super.after_layout();\n        if (this.tabulator != null && this._initializing)\n            this.redraw();\n        this._initializing = false;\n    }\n    setCSSClasses(el) {\n        el.className = \"pnx-tabulator tabulator\";\n        for (const cls of this.model.theme_classes)\n            el.classList.add(cls);\n    }\n    render() {\n        if (this.tabulator != null)\n            this.tabulator.destroy();\n        super.render();\n        this._initializing = true;\n        const container = (0, dom_2.div)({ style: \"display: contents;\" });\n        const el = (0, dom_2.div)({ style: \"width: 100%; height: 100%; visibility: hidden;\" });\n        this.setCSSClasses(el);\n        container.appendChild(el);\n        this.shadow_el.appendChild(container);\n        let configuration = this.getConfiguration();\n        this.tabulator = new Tabulator(el, configuration);\n        this.watch_stylesheets();\n        this.init_callbacks();\n    }\n    style_redraw() {\n        if (this.model.visible)\n            this.tabulator.element.style.visibility = 'visible';\n        if (!this._initializing && !this._building)\n            this.redraw();\n    }\n    tableInit() {\n        this._building = true;\n        // Patch the ajax request and page data parsing methods\n        const ajax = this.tabulator.modules.ajax;\n        ajax.sendRequest = (_url, params, _config) => {\n            return this.requestPage(params.page, params.sort);\n        };\n        this.tabulator.modules.page._parseRemoteData = () => {\n            return false;\n        };\n    }\n    init_callbacks() {\n        // Initialization\n        this.tabulator.on(\"tableBuilding\", () => this.tableInit());\n        this.tabulator.on(\"tableBuilt\", () => this.tableBuilt());\n        // Rendering callbacks\n        this.tabulator.on(\"selectableCheck\", (row) => {\n            const selectable = this.model.selectable_rows;\n            return (selectable == null) || selectable.includes(row._row.data._index);\n        });\n        this.tabulator.on(\"tooltips\", (cell) => {\n            return cell.getColumn().getField() + \": \" + cell.getValue();\n        });\n        this.tabulator.on(\"scrollVertical\", (0, debounce_1.debounce)(() => {\n            this.setStyles();\n        }, 50, false));\n        // Sync state with model\n        this.tabulator.on(\"rowSelectionChanged\", (data, rows, selected, deselected) => this.rowSelectionChanged(data, rows, selected, deselected));\n        this.tabulator.on(\"rowClick\", (e, row) => this.rowClicked(e, row));\n        this.tabulator.on(\"cellEdited\", (cell) => this.cellEdited(cell));\n        this.tabulator.on(\"dataFiltering\", (filters) => {\n            this.model.filters = filters;\n        });\n        this.tabulator.on(\"dataFiltered\", (_, rows) => {\n            if (this._building)\n                return;\n            // Ensure that after filtering empty scroll renders\n            if (rows.length === 0)\n                this.tabulator.rowManager.renderEmptyScroll();\n            // Ensure that after filtering the page is updated\n            this.updatePage(this.tabulator.getPage());\n        });\n        this.tabulator.on(\"pageLoaded\", (pageno) => {\n            this.updatePage(pageno);\n        });\n        this.tabulator.on(\"renderComplete\", () => {\n            if (this._building)\n                return;\n            this.postUpdate();\n        });\n        this.tabulator.on(\"dataSorting\", (sorters) => {\n            const sorts = [];\n            for (const s of sorters) {\n                if (s.field !== '_index')\n                    sorts.push({ field: s.field, dir: s.dir });\n            }\n            if (this.model.pagination !== 'remote') {\n                this._updating_sort = true;\n                this.model.sorters = sorts;\n                this._updating_sort = false;\n            }\n        });\n    }\n    tableBuilt() {\n        this._building = false;\n        this.setSelection();\n        this.renderChildren();\n        this.setStyles();\n        if (this.model.pagination) {\n            this.setMaxPage();\n            this.tabulator.setPage(this.model.page);\n        }\n    }\n    requestPage(page, sorters) {\n        return new Promise((resolve, reject) => {\n            try {\n                if (page != null && sorters != null) {\n                    this._updating_sort = true;\n                    const sorts = [];\n                    for (const s of sorters) {\n                        if (s.field !== '_index')\n                            sorts.push({ field: s.field, dir: s.dir });\n                    }\n                    this.model.sorters = sorts;\n                    this._updating_sort = false;\n                    this._updating_page = true;\n                    try {\n                        this.model.page = page || 1;\n                    }\n                    finally {\n                        this._updating_page = false;\n                    }\n                }\n                resolve([]);\n            }\n            catch (err) {\n                reject(err);\n            }\n        });\n    }\n    getLayout() {\n        let layout = this.model.layout;\n        switch (layout) {\n            case \"fit_data\":\n                return \"fitData\";\n            case \"fit_data_fill\":\n                return \"fitDataFill\";\n            case \"fit_data_stretch\":\n                return \"fitDataStretch\";\n            case \"fit_data_table\":\n                return \"fitDataTable\";\n            case \"fit_columns\":\n                return \"fitColumns\";\n        }\n    }\n    getConfiguration() {\n        // Only use selectable mode if explicitly requested otherwise manually handle selections\n        let selectable = this.model.select_mode === 'toggle' ? true : NaN;\n        let configuration = Object.assign(Object.assign({}, this.model.configuration), { index: \"_index\", nestedFieldSeparator: false, movableColumns: false, selectable: selectable, columns: this.getColumns(), initialSort: this.sorters, layout: this.getLayout(), pagination: this.model.pagination != null, paginationMode: this.model.pagination, paginationSize: this.model.page_size, paginationInitialPage: 1, groupBy: this.groupBy, rowFormatter: (row) => this._render_row(row), frozenRows: (row) => {\n                return this.model.frozen_rows.length ? this.model.frozen_rows.includes(row._row.data._index) : false;\n            } });\n        if (this.model.pagination === \"remote\") {\n            configuration['ajaxURL'] = \"http://panel.pyviz.org\";\n            configuration['sortMode'] = \"remote\";\n        }\n        const cds = this.model.source;\n        let data;\n        if (cds === null || (cds.columns().length === 0))\n            data = [];\n        else\n            data = (0, data_1.transform_cds_to_records)(cds, true);\n        if (configuration.dataTree)\n            data = group_data(data, this.model.columns, this.model.indexes, this.model.aggregators);\n        return Object.assign(Object.assign({}, configuration), { \"data\": data });\n    }\n    get child_models() {\n        var _e, _f;\n        const children = [];\n        for (const idx of this.model.expanded) {\n            const child = (_f = (_e = this.model.children).get) === null || _f === void 0 ? void 0 : _f.call(_e, idx);\n            if (child != null)\n                children.push(child);\n        }\n        return children;\n    }\n    renderChildren() {\n        new Promise(async (resolve) => {\n            await this.build_child_views();\n            resolve(null);\n        }).then(() => {\n            for (const r of this.model.expanded) {\n                const row = this.tabulator.getRow(r);\n                this._render_row(row, false);\n            }\n            this._update_children();\n            if (this.tabulator.rowManager.renderer != null)\n                this.tabulator.rowManager.adjustTableSize();\n            this.invalidate_layout();\n        });\n    }\n    _render_row(row, resize = true) {\n        var _e;\n        const index = (_e = row._row) === null || _e === void 0 ? void 0 : _e.data._index;\n        if (!this.model.expanded.includes(index) || this.model.children.get(index) == null)\n            return;\n        const model = this.model.children.get(index);\n        const view = model == null ? null : this._child_views.get(model);\n        if (view == null)\n            return;\n        const rowEl = row.getElement();\n        const style = getComputedStyle(this.tabulator.element.children[1].children[0]);\n        const bg = style.backgroundColor;\n        const neg_margin = rowEl.style.paddingLeft ? \"-\" + rowEl.style.paddingLeft : '0';\n        const viewEl = (0, dom_2.div)({ style: \"background-color: \" + bg + \"; margin-left:\" + neg_margin + \"; max-width: 100%; overflow-x: hidden;\" });\n        viewEl.appendChild(view.el);\n        rowEl.appendChild(viewEl);\n        if (!view.has_finished()) {\n            view.render();\n            view.after_render();\n        }\n        if (resize) {\n            this._update_children();\n            this.tabulator.rowManager.adjustTableSize();\n            this.invalidate_layout();\n        }\n    }\n    _expand_render(cell) {\n        const index = cell._cell.row.data._index;\n        const icon = this.model.expanded.indexOf(index) < 0 ? \"►\" : \"▼\";\n        return \"<i>\" + icon + \"</i>\";\n    }\n    _update_expand(cell) {\n        var _e, _f, _g, _h;\n        const index = cell._cell.row.data._index;\n        const expanded = [...this.model.expanded];\n        const exp_index = expanded.indexOf(index);\n        if (exp_index < 0)\n            expanded.push(index);\n        else {\n            const removed = expanded.splice(exp_index, 1)[0];\n            const model = (_f = (_e = this.model.children).get) === null || _f === void 0 ? void 0 : _f.call(_e, removed);\n            if (model != null) {\n                const view = this._child_views.get(model);\n                if (view !== undefined && view.el != null)\n                    (0, dom_1.undisplay)(view.el);\n            }\n        }\n        this.model.expanded = expanded;\n        if (expanded.indexOf(index) < 0)\n            return;\n        let ready = true;\n        for (const idx of this.model.expanded) {\n            if (((_h = (_g = this.model.children).get) === null || _h === void 0 ? void 0 : _h.call(_g, idx)) == null) {\n                ready = false;\n                break;\n            }\n        }\n        if (ready)\n            this.renderChildren();\n    }\n    getData() {\n        let data = (0, data_1.transform_cds_to_records)(this.model.source, true);\n        if (this.model.configuration.dataTree)\n            data = group_data(data, this.model.columns, this.model.indexes, this.model.aggregators);\n        return data;\n    }\n    getColumns() {\n        var _e;\n        this.columns = new Map();\n        const config_columns = (_e = this.model.configuration) === null || _e === void 0 ? void 0 : _e.columns;\n        let columns = [];\n        columns.push({ field: '_index', frozen: true, visible: false });\n        if (config_columns != null) {\n            for (const column of config_columns)\n                if (column.columns != null) {\n                    const group_columns = [];\n                    for (const col of column.columns)\n                        group_columns.push(Object.assign({}, col));\n                    columns.push(Object.assign(Object.assign({}, column), { columns: group_columns }));\n                }\n                else if (column.formatter === \"expand\") {\n                    const expand = {\n                        hozAlign: \"center\",\n                        cellClick: (_, cell) => { this._update_expand(cell); },\n                        formatter: (cell) => { return this._expand_render(cell); },\n                        width: 40,\n                        frozen: true\n                    };\n                    columns.push(expand);\n                }\n                else {\n                    const new_column = Object.assign({}, column);\n                    if (new_column.formatter === \"rowSelection\") {\n                        new_column.cellClick = (_, cell) => {\n                            cell.getRow().toggleSelect();\n                        };\n                    }\n                    columns.push(new_column);\n                }\n        }\n        for (const column of this.model.columns) {\n            let tab_column = null;\n            if (config_columns != null) {\n                for (const col of columns) {\n                    if (col.columns != null) {\n                        for (const c of col.columns) {\n                            if (column.field === c.field) {\n                                tab_column = c;\n                                break;\n                            }\n                        }\n                        if (tab_column != null)\n                            break;\n                    }\n                    else if (column.field === col.field) {\n                        tab_column = col;\n                        break;\n                    }\n                }\n            }\n            if (tab_column == null)\n                tab_column = { field: column.field };\n            this.columns.set(column.field, tab_column);\n            if (tab_column.title == null)\n                tab_column.title = column.title;\n            if (tab_column.width == null && column.width != null && column.width != 0)\n                tab_column.width = column.width;\n            if (tab_column.formatter == null && column.formatter != null) {\n                const formatter = column.formatter;\n                const ftype = formatter.type;\n                if (ftype === \"BooleanFormatter\")\n                    tab_column.formatter = \"tickCross\";\n                else {\n                    tab_column.formatter = (cell) => {\n                        const formatted = column.formatter.doFormat(cell.getRow(), cell, cell.getValue(), null, null);\n                        if (column.formatter.type === 'HTMLTemplateFormatter')\n                            return formatted;\n                        const node = (0, dom_2.div)();\n                        node.innerHTML = formatted;\n                        const child = node.children[0];\n                        if (child.innerHTML === \"function(){return c.convert(arguments)}\") // If the formatter fails\n                            return '';\n                        return child;\n                    };\n                }\n            }\n            if (tab_column.sorter == 'timestamp') {\n                tab_column.sorter = timestampSorter;\n            }\n            if (tab_column.sorter === undefined) {\n                tab_column.sorter = \"string\";\n            }\n            const editor = column.editor;\n            const ctype = editor.type;\n            if (tab_column.editor != null) {\n                if (tab_column.editor === 'date') {\n                    tab_column.editor = dateEditor;\n                }\n                else if (tab_column.editor === 'datetime') {\n                    tab_column.editor = datetimeEditor;\n                }\n            }\n            else if (ctype === \"StringEditor\") {\n                if (editor.completions.length > 0) {\n                    tab_column.editor = \"list\";\n                    tab_column.editorParams = { values: editor.completions, autocomplete: true, listOnEmpty: true };\n                }\n                else\n                    tab_column.editor = \"input\";\n            }\n            else if (ctype === \"TextEditor\")\n                tab_column.editor = \"textarea\";\n            else if (ctype === \"IntEditor\" || ctype === \"NumberEditor\") {\n                tab_column.editor = \"number\";\n                tab_column.editorParams = { step: editor.step };\n                if (ctype === \"IntEditor\")\n                    tab_column.validator = \"integer\";\n                else\n                    tab_column.validator = \"numeric\";\n            }\n            else if (ctype === \"CheckboxEditor\") {\n                tab_column.editor = \"tickCross\";\n            }\n            else if (ctype === \"DateEditor\") {\n                tab_column.editor = dateEditor;\n            }\n            else if (ctype === \"SelectEditor\") {\n                tab_column.editor = \"list\";\n                tab_column.editorParams = { values: editor.options };\n            }\n            else if (editor != null && editor.default_view != null) {\n                tab_column.editor = (cell, onRendered, success, cancel) => {\n                    this.renderEditor(column, cell, onRendered, success, cancel);\n                };\n            }\n            tab_column.visible = (tab_column.visible != false && !this.model.hidden_columns.includes(column.field));\n            tab_column.editable = () => (this.model.editable && (editor.default_view != null));\n            if (tab_column.headerFilter) {\n                if ((typeof tab_column.headerFilter) === 'boolean' &&\n                    (typeof tab_column.editor) === 'string') {\n                    tab_column.headerFilter = tab_column.editor;\n                    tab_column.headerFilterParams = tab_column.editorParams;\n                }\n            }\n            for (const sort of this.model.sorters) {\n                if (tab_column.field === sort.field)\n                    tab_column.headerSortStartingDir = sort.dir;\n            }\n            tab_column.cellClick = (_, cell) => {\n                const index = cell.getData()._index;\n                const event = new CellClickEvent(column.field, index);\n                this.model.trigger_event(event);\n            };\n            if (config_columns == null)\n                columns.push(tab_column);\n        }\n        for (const col in this.model.buttons) {\n            const button_formatter = () => {\n                return this.model.buttons[col];\n            };\n            const button_column = {\n                formatter: button_formatter,\n                hozAlign: \"center\",\n                cellClick: (_, cell) => {\n                    const index = cell.getData()._index;\n                    const event = new CellClickEvent(col, index);\n                    this.model.trigger_event(event);\n                }\n            };\n            columns.push(button_column);\n        }\n        return columns;\n    }\n    renderEditor(column, cell, onRendered, success, cancel) {\n        const editor = column.editor;\n        const view = new editor.default_view({ column: column, model: editor, parent: this, container: cell._cell.element });\n        view.initialize();\n        view.connect_signals();\n        onRendered(() => {\n            view.setValue(cell.getValue());\n        });\n        view.inputEl.addEventListener('input', () => {\n            const value = view.serializeValue();\n            const old_value = cell.getValue();\n            const validation = view.validate();\n            if (!validation.valid)\n                cancel(validation.msg);\n            if (old_value != null && typeof value != typeof old_value)\n                cancel(\"Mismatching type\");\n            else\n                success(view.serializeValue());\n        });\n        return view.inputEl;\n    }\n    // Update table\n    setData() {\n        if (this._initializing || this._building || !this.tabulator.initialized)\n            return;\n        const data = this.getData();\n        if (this.model.pagination != null)\n            this.tabulator.rowManager.setData(data, true, false);\n        else\n            this.tabulator.setData(data);\n    }\n    addData() {\n        const rows = this.tabulator.rowManager.getRows();\n        const last_row = rows[rows.length - 1];\n        const start = ((last_row === null || last_row === void 0 ? void 0 : last_row.data._index) || 0);\n        this.setData();\n        if (this.model.follow && last_row)\n            this.tabulator.scrollToRow(start, \"top\", false);\n    }\n    postUpdate() {\n        this.setSelection();\n        this.setStyles();\n    }\n    updateOrAddData() {\n        // To avoid double updating the tabulator data\n        if (this._tabulator_cell_updating)\n            return;\n        // Temporarily set minHeight to avoid \"scroll-to-top\" issues caused\n        // by Tabulator JS entirely destroying the table when .setData is called.\n        // Inspired by https://github.com/olifolkerd/tabulator/issues/4155\n        const prev_minheight = this.tabulator.element.style.minHeight;\n        this.tabulator.element.style.minHeight = this.tabulator.element.offsetHeight + \"px\";\n        let data = (0, data_1.transform_cds_to_records)(this.model.source, true);\n        this.tabulator.setData(data).then(() => {\n            this.tabulator.element.style.minHeight = prev_minheight;\n        });\n    }\n    setFrozen() {\n        for (const row of this.model.frozen_rows) {\n            this.tabulator.getRow(row).freeze();\n        }\n    }\n    setVisibility() {\n        if (this.tabulator == null)\n            return;\n        this.tabulator.element.style.visibility = this.model.visible ? 'visible' : 'hidden';\n    }\n    updatePage(pageno) {\n        if (this.model.pagination === 'local' && this.model.page !== pageno) {\n            this._updating_page = true;\n            this.model.page = pageno;\n            this._updating_page = false;\n            this.setStyles();\n        }\n    }\n    setGroupBy() {\n        this.tabulator.setGroupBy(this.groupBy);\n    }\n    setSorters() {\n        if (this._updating_sort)\n            return;\n        this.tabulator.setSort(this.sorters);\n    }\n    setStyles() {\n        const style_data = this.model.cell_styles.data;\n        if (this.tabulator == null || this.tabulator.getDataCount() == 0 || style_data == null || !style_data.size)\n            return;\n        this._applied_styles = false;\n        for (const r of style_data.keys()) {\n            const row_style = style_data.get(r);\n            const row = this.tabulator.getRow(r);\n            if (!row)\n                continue;\n            const cells = row._row.cells;\n            for (const c of row_style.keys()) {\n                const style = row_style.get(c);\n                const cell = cells[c];\n                if (cell == null || !style.length)\n                    continue;\n                const element = cell.element;\n                for (const s of style) {\n                    let prop, value;\n                    if ((0, types_1.isArray)(s))\n                        [prop, value] = s;\n                    else if (!s.includes(':'))\n                        continue;\n                    else\n                        [prop, value] = s.split(':');\n                    element.style.setProperty(prop, value.trimLeft());\n                    this._applied_styles = true;\n                }\n            }\n        }\n    }\n    setHidden() {\n        for (const column of this.tabulator.getColumns()) {\n            const col = column._column;\n            if ((col.field == '_index') || this.model.hidden_columns.includes(col.field))\n                column.hide();\n            else\n                column.show();\n        }\n    }\n    setMaxPage() {\n        this.tabulator.setMaxPage(this.model.max_page);\n        if (this.tabulator.modules.page.pagesElement)\n            this.tabulator.modules.page._setPageButtons();\n    }\n    setPage() {\n        this.tabulator.setPage(Math.min(this.model.max_page, this.model.page));\n        if (this.model.pagination === \"local\") {\n            this.renderChildren();\n            this.setStyles();\n        }\n    }\n    setPageSize() {\n        this.tabulator.setPageSize(this.model.page_size);\n        if (this.model.pagination === \"local\") {\n            this.renderChildren();\n            this.setStyles();\n        }\n    }\n    setSelection() {\n        if (this.tabulator == null || this._initializing || this._selection_updating || !this.tabulator.initialized)\n            return;\n        const indices = this.model.source.selected.indices;\n        const current_indices = this.tabulator.getSelectedData().map((row) => row._index);\n        if (JSON.stringify(indices) == JSON.stringify(current_indices))\n            return;\n        this._selection_updating = true;\n        this.tabulator.deselectRow();\n        this.tabulator.selectRow(indices);\n        for (const index of indices) {\n            const row = this.tabulator.rowManager.findRow(index);\n            if (row)\n                this.tabulator.scrollToRow(index, \"center\", false).catch(() => { });\n        }\n        this._selection_updating = false;\n    }\n    // Update model\n    rowClicked(e, row) {\n        var _e;\n        if (this._selection_updating ||\n            this._initializing ||\n            (typeof this.model.select_mode) === 'string' ||\n            this.model.select_mode === false || // selection disabled\n            this.model.configuration.dataTree || // dataTree does not support selection\n            ((_e = e.srcElement) === null || _e === void 0 ? void 0 : _e.innerText) === \"►\" // expand button\n        )\n            return;\n        let indices = [];\n        const selected = this.model.source.selected;\n        const index = row._row.data._index;\n        if (this.model.pagination === 'remote') {\n            const includes = this.model.source.selected.indices.indexOf(index) == -1;\n            const flush = !(e.ctrlKey || e.metaKey || e.shiftKey);\n            if (e.shiftKey && selected.indices.length) {\n                const start = selected.indices[selected.indices.length - 1];\n                if (index > start) {\n                    for (let i = start; i <= index; i++)\n                        indices.push(i);\n                }\n                else {\n                    for (let i = start; i >= index; i--)\n                        indices.push(i);\n                }\n            }\n            else {\n                indices.push(index);\n            }\n            this._selection_updating = true;\n            this.model.trigger_event(new SelectionEvent(indices, includes, flush));\n            this._selection_updating = false;\n            return;\n        }\n        if (e.ctrlKey || e.metaKey) {\n            indices = [...this.model.source.selected.indices];\n        }\n        else if (e.shiftKey && selected.indices.length) {\n            const start = selected.indices[selected.indices.length - 1];\n            if (index > start) {\n                for (let i = start; i < index; i++)\n                    indices.push(i);\n            }\n            else {\n                for (let i = start; i > index; i--)\n                    indices.push(i);\n            }\n        }\n        if (indices.indexOf(index) < 0)\n            indices.push(index);\n        else\n            indices.splice(indices.indexOf(index), 1);\n        // Remove the first selected indices when selectable is an int.\n        if (typeof this.model.select_mode === 'number') {\n            while (indices.length > this.model.select_mode) {\n                indices.shift();\n            }\n        }\n        const filtered = this._filter_selected(indices);\n        this.tabulator.deselectRow();\n        this.tabulator.selectRow(filtered);\n        this._selection_updating = true;\n        selected.indices = filtered;\n        this._selection_updating = false;\n    }\n    _filter_selected(indices) {\n        const filtered = [];\n        for (const ind of indices) {\n            if (this.model.selectable_rows == null ||\n                this.model.selectable_rows.indexOf(ind) >= 0)\n                filtered.push(ind);\n        }\n        return filtered;\n    }\n    rowSelectionChanged(data, _row, selected, deselected) {\n        if (this._selection_updating ||\n            this._initializing ||\n            (typeof this.model.select_mode) === 'boolean' ||\n            (typeof this.model.select_mode) === 'number' ||\n            this.model.configuration.dataTree)\n            return;\n        if (this.model.pagination === 'remote') {\n            let selected_indices = selected.map((x) => x._row.data._index);\n            let deselected_indices = deselected.map((x) => x._row.data._index);\n            if (selected_indices.length > 0) {\n                this._selection_updating = true;\n                this.model.trigger_event(new SelectionEvent(selected_indices, true, false));\n            }\n            if (deselected_indices.length > 0) {\n                this._selection_updating = true;\n                this.model.trigger_event(new SelectionEvent(deselected_indices, false, false));\n            }\n        }\n        else {\n            const indices = data.map((row) => row._index);\n            const filtered = this._filter_selected(indices);\n            this._selection_updating = indices.length === filtered.length;\n            this.model.source.selected.indices = filtered;\n        }\n        this._selection_updating = false;\n    }\n    cellEdited(cell) {\n        const field = cell._cell.column.field;\n        const column_def = this.columns.get(field);\n        const index = cell.getData()._index;\n        const value = cell._cell.value;\n        if (column_def.validator === 'numeric' && value === '') {\n            cell.setValue(NaN, true);\n            return;\n        }\n        this._tabulator_cell_updating = true;\n        comm_manager_1.comm_settings.debounce = false;\n        this.model.trigger_event(new TableEditEvent(field, index, true));\n        try {\n            this.model.source.patch({ [field]: [[index, value]] });\n        }\n        finally {\n            comm_manager_1.comm_settings.debounce = true;\n            this._tabulator_cell_updating = false;\n        }\n        this.model.trigger_event(new TableEditEvent(field, index, false));\n        this.tabulator.scrollToRow(index, \"top\", false);\n    }\n}\nexports.DataTabulatorView = DataTabulatorView;\nDataTabulatorView.__name__ = \"DataTabulatorView\";\nexports.TableLayout = (0, kinds_1.Enum)(\"fit_data\", \"fit_data_fill\", \"fit_data_stretch\", \"fit_data_table\", \"fit_columns\");\n// The Bokeh .ts model corresponding to the Bokeh .py model\nclass DataTabulator extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.DataTabulator = DataTabulator;\n_d = DataTabulator;\nDataTabulator.__name__ = \"DataTabulator\";\nDataTabulator.__module__ = \"panel.models.tabulator\";\n(() => {\n    _d.prototype.default_view = DataTabulatorView;\n    _d.define(({ Any, Array, Boolean, Nullable, Number, Ref, String }) => ({\n        aggregators: [Any, {}],\n        buttons: [Any, {}],\n        children: [Any, new Map()],\n        configuration: [Any, {}],\n        columns: [Array(Ref(tables_1.TableColumn)), []],\n        download: [Boolean, false],\n        editable: [Boolean, true],\n        expanded: [Array(Number), []],\n        filename: [String, \"table.csv\"],\n        filters: [Array(Any), []],\n        follow: [Boolean, true],\n        frozen_rows: [Array(Number), []],\n        groupby: [Array(String), []],\n        hidden_columns: [Array(String), []],\n        indexes: [Array(String), []],\n        layout: [exports.TableLayout, \"fit_data\"],\n        max_page: [Number, 0],\n        pagination: [Nullable(String), null],\n        page: [Number, 0],\n        page_size: [Number, 0],\n        select_mode: [Any, true],\n        selectable_rows: [Nullable(Array(Number)), null],\n        source: [Ref(column_data_source_1.ColumnDataSource)],\n        sorters: [Array(Any), []],\n        cell_styles: [Any, {}],\n        theme_classes: [Array(String), []],\n    }));\n})();\n//# sourceMappingURL=tabulator.js.map\n","type":"js","dependency_paths":[["debounce","/croot/panel_1706539561184/work/panel/node_modules/debounce/index.js"],["./comm_manager","/croot/panel_1706539561184/work/panel/dist/lib/models/comm_manager.js"],["./data","/croot/panel_1706539561184/work/panel/dist/lib/models/data.js"],["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"TableEditEvent"},{"type":"named","name":"CellClickEvent"},{"type":"named","name":"SelectionEvent"},{"type":"named","name":"DataTabulatorView"},{"type":"named","name":"DataTabulator"}],"externals":[],"shims":[]},"code":{"source":"/* models/tabulator.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a, _b, _c, _d;\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const types_1 = require(\"@bokehjs/core/util/types\");\n    const bokeh_events_1 = require(\"@bokehjs/core/bokeh_events\");\n    const dom_2 = require(\"@bokehjs/core/dom\");\n    const kinds_1 = require(\"@bokehjs/core/kinds\");\n    const column_data_source_1 = require(\"@bokehjs/models/sources/column_data_source\");\n    const tables_1 = require(\"@bokehjs/models/widgets/tables\");\n    const debounce_1 = require(\"99a25e6992\") /* debounce */;\n    const comm_manager_1 = require(\"eca6f2cacb\") /* ./comm_manager */;\n    const data_1 = require(\"4e27eda472\") /* ./data */;\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    class TableEditEvent extends bokeh_events_1.ModelEvent {\n        constructor(column, row, pre) {\n            super();\n            this.column = column;\n            this.row = row;\n            this.pre = pre;\n        }\n        get event_values() {\n            return { model: this.origin, column: this.column, row: this.row, pre: this.pre };\n        }\n    }\n    exports.TableEditEvent = TableEditEvent;\n    _a = TableEditEvent;\n    TableEditEvent.__name__ = \"TableEditEvent\";\n    (() => {\n        _a.prototype.event_name = \"table-edit\";\n    })();\n    class CellClickEvent extends bokeh_events_1.ModelEvent {\n        constructor(column, row) {\n            super();\n            this.column = column;\n            this.row = row;\n        }\n        get event_values() {\n            return { model: this.origin, column: this.column, row: this.row };\n        }\n    }\n    exports.CellClickEvent = CellClickEvent;\n    _b = CellClickEvent;\n    CellClickEvent.__name__ = \"CellClickEvent\";\n    (() => {\n        _b.prototype.event_name = \"cell-click\";\n    })();\n    class SelectionEvent extends bokeh_events_1.ModelEvent {\n        constructor(indices, selected, flush = false) {\n            super();\n            this.indices = indices;\n            this.selected = selected;\n            this.flush = flush;\n        }\n        get event_values() {\n            return { model: this.origin, indices: this.indices, selected: this.selected, flush: this.flush };\n        }\n    }\n    exports.SelectionEvent = SelectionEvent;\n    _c = SelectionEvent;\n    SelectionEvent.__name__ = \"SelectionEvent\";\n    (() => {\n        _c.prototype.event_name = \"selection-change\";\n    })();\n    function find_group(key, value, records) {\n        for (const record of records) {\n            if (record[key] == value)\n                return record;\n        }\n        return null;\n    }\n    function summarize(grouped, columns, aggregators, depth = 0) {\n        const summary = {};\n        if (grouped.length == 0)\n            return summary;\n        const agg = aggregators[depth];\n        for (const group of grouped) {\n            const subsummary = summarize(group._children, columns, aggregators, depth + 1);\n            for (const col in subsummary) {\n                if ((0, types_1.isArray)(subsummary[col]))\n                    group[col] = subsummary[col].reduce((a, b) => a + b, 0) / subsummary[col].length;\n                else\n                    group[col] = subsummary[col];\n            }\n            for (const column of columns.slice(1)) {\n                const val = group[column.field];\n                if (column.field in summary) {\n                    const old_val = summary[column.field];\n                    if (agg === 'min')\n                        summary[column.field] = Math.min(val, old_val);\n                    else if (agg === 'max')\n                        summary[column.field] = Math.max(val, old_val);\n                    else if (agg === 'sum')\n                        summary[column.field] = val + old_val;\n                    else if (agg === 'mean') {\n                        if ((0, types_1.isArray)(summary[column.field]))\n                            summary[column.field].push(val);\n                        else\n                            summary[column.field] = [old_val, val];\n                    }\n                }\n                else\n                    summary[column.field] = val;\n            }\n        }\n        return summary;\n    }\n    function group_data(records, columns, indexes, aggregators) {\n        const grouped = [];\n        const index_field = columns[0].field;\n        for (const record of records) {\n            const value = record[indexes[0]];\n            let group = find_group(index_field, value, grouped);\n            if (group == null) {\n                group = { _children: [] };\n                group[index_field] = value;\n                grouped.push(group);\n            }\n            let subgroup = group;\n            const groups = {};\n            for (const index of indexes.slice(1)) {\n                subgroup = find_group(index_field, record[index], subgroup._children);\n                if (subgroup == null) {\n                    subgroup = { _children: [] };\n                    subgroup[index_field] = record[index];\n                    group._children.push(subgroup);\n                }\n                groups[index] = group;\n                for (const column of columns.slice(1))\n                    subgroup[column.field] = record[column];\n                group = subgroup;\n            }\n            for (const column of columns.slice(1))\n                subgroup[column.field] = record[column.field];\n        }\n        const aggs = [];\n        for (const index of indexes)\n            aggs.push((index in aggregators) ? aggregators[index] : 'sum');\n        summarize(grouped, columns, aggs);\n        return grouped;\n    }\n    const timestampSorter = function (a, b, _aRow, _bRow, _column, _dir, _params) {\n        // Bokeh serializes datetime objects as UNIX timestamps.\n        //a, b - the two values being compared\n        //aRow, bRow - the row components for the values being compared (useful if you need to access additional fields in the row data for the sort)\n        //column - the column component for the column being sorted\n        //dir - the direction of the sort (\"asc\" or \"desc\")\n        //sorterParams - sorterParams object from column definition array\n        // Added an _ in front of some parameters as they're unused and the Typescript compiler was complaining about it.\n        // const alignEmptyValues = params.alignEmptyValues\n        let emptyAlign;\n        emptyAlign = 0;\n        const opts = { zone: new window.luxon.IANAZone('UTC') };\n        // NaN values are serialized to -9223372036854776 by Bokeh\n        if (String(a) == '-9223372036854776') {\n            a = window.luxon.DateTime.fromISO('invalid');\n        }\n        else {\n            a = window.luxon.DateTime.fromMillis(a, opts);\n        }\n        if (String(b) == '-9223372036854776') {\n            b = window.luxon.DateTime.fromISO('invalid');\n        }\n        else {\n            b = window.luxon.DateTime.fromMillis(b, opts);\n        }\n        if (!a.isValid) {\n            emptyAlign = !b.isValid ? 0 : -1;\n        }\n        else if (!b.isValid) {\n            emptyAlign = 1;\n        }\n        else {\n            //compare valid values\n            return a - b;\n        }\n        // Invalid (e.g. NaN) always at the bottom\n        emptyAlign *= -1;\n        return emptyAlign;\n    };\n    const dateEditor = function (cell, onRendered, success, cancel) {\n        //cell - the cell component for the editable cell\n        //onRendered - function to call when the editor has been rendered\n        //success - function to call to pass the successfully updated value to Tabulator\n        //cancel - function to call to abort the edit and return to a normal cell\n        //create and style input\n        const rawValue = cell.getValue();\n        const opts = { zone: new window.luxon.IANAZone('UTC') };\n        let cellValue;\n        if (rawValue === 'NaN' || rawValue === null)\n            cellValue = null;\n        else\n            cellValue = window.luxon.DateTime.fromMillis(rawValue, opts).toFormat(\"yyyy-MM-dd\");\n        const input = document.createElement(\"input\");\n        input.setAttribute(\"type\", \"date\");\n        input.style.padding = \"4px\";\n        input.style.width = \"100%\";\n        input.style.boxSizing = \"border-box\";\n        input.value = cellValue;\n        onRendered(() => {\n            input.focus();\n            input.style.height = \"100%\";\n        });\n        function onChange() {\n            const new_val = window.luxon.DateTime.fromFormat(input.value, \"yyyy-MM-dd\", opts).toMillis();\n            if (new_val != cellValue)\n                success(new_val);\n            else\n                cancel();\n        }\n        //submit new value on blur or change\n        input.addEventListener(\"blur\", onChange);\n        //submit new value on enter\n        input.addEventListener(\"keydown\", (e) => {\n            if (e.key == \"Enter\")\n                setTimeout(onChange, 100);\n            if (e.key == \"Escape\")\n                setTimeout(cancel, 100);\n        });\n        return input;\n    };\n    const datetimeEditor = function (cell, onRendered, success, cancel) {\n        //cell - the cell component for the editable cell\n        //onRendered - function to call when the editor has been rendered\n        //success - function to call to pass the successfully updated value to Tabulator\n        //cancel - function to call to abort the edit and return to a normal cell\n        //create and style input\n        const rawValue = cell.getValue();\n        const opts = { zone: new window.luxon.IANAZone('UTC') };\n        let cellValue;\n        if (rawValue === 'NaN' || rawValue === null)\n            cellValue = null;\n        else\n            cellValue = window.luxon.DateTime.fromMillis(rawValue, opts).toFormat(\"yyyy-MM-dd'T'T\");\n        const input = document.createElement(\"input\");\n        input.setAttribute(\"type\", \"datetime-local\");\n        input.style.padding = \"4px\";\n        input.style.width = \"100%\";\n        input.style.boxSizing = \"border-box\";\n        input.value = cellValue;\n        onRendered(() => {\n            input.focus();\n            input.style.height = \"100%\";\n        });\n        function onChange() {\n            const new_val = window.luxon.DateTime.fromFormat(input.value, \"yyyy-MM-dd'T'T\", opts).toMillis();\n            if (new_val != cellValue)\n                success(new_val);\n            else\n                cancel();\n        }\n        //submit new value on blur or change\n        input.addEventListener(\"blur\", onChange);\n        //submit new value on enter\n        input.addEventListener(\"keydown\", (e) => {\n            if (e.key == \"Enter\")\n                setTimeout(onChange, 100);\n            if (e.key == \"Escape\")\n                setTimeout(cancel, 100);\n        });\n        return input;\n    };\n    class DataTabulatorView extends layout_1.HTMLBoxView {\n        constructor() {\n            super(...arguments);\n            this.columns = new Map();\n            this._tabulator_cell_updating = false;\n            this._updating_page = false;\n            this._updating_sort = false;\n            this._selection_updating = false;\n            this._lastVerticalScrollbarTopPosition = 0;\n            this._applied_styles = false;\n            this._building = false;\n        }\n        connect_signals() {\n            super.connect_signals();\n            const p = this.model.properties;\n            const { configuration, layout, columns, groupby } = p;\n            this.on_change([configuration, layout, groupby], (0, debounce_1.debounce)(() => {\n                this.invalidate_render();\n            }, 20, false));\n            this.connect(this.model.properties.visible.change, () => {\n                if (this.model.visible)\n                    this.tabulator.element.style.visibility = 'visible';\n            });\n            this.on_change([columns], () => {\n                this.tabulator.setColumns(this.getColumns());\n                this.setHidden();\n            });\n            this.connect(p.download.change, () => {\n                const ftype = this.model.filename.endsWith('.json') ? \"json\" : \"csv\";\n                this.tabulator.download(ftype, this.model.filename);\n            });\n            this.connect(p.children.change, () => this.renderChildren());\n            this.connect(p.expanded.change, () => {\n                // The first cell is the cell of the frozen _index column.\n                for (const row of this.tabulator.rowManager.getRows()) {\n                    if (row.cells.length > 0)\n                        row.cells[0].layoutElement();\n                }\n                // Make sure the expand icon is changed when expanded is\n                // changed from Python.\n                for (const row of this.tabulator.rowManager.getRows()) {\n                    if (row.cells.length > 0) {\n                        const index = row.data._index;\n                        const icon = this.model.expanded.indexOf(index) < 0 ? \"►\" : \"▼\";\n                        row.cells[1].element.innerText = icon;\n                    }\n                }\n            });\n            this.connect(p.cell_styles.change, () => {\n                if (this._applied_styles)\n                    this.tabulator.redraw(true);\n                this.setStyles();\n            });\n            this.connect(p.hidden_columns.change, () => {\n                this.setHidden();\n                this.tabulator.redraw(true);\n            });\n            this.connect(p.page_size.change, () => this.setPageSize());\n            this.connect(p.page.change, () => {\n                if (!this._updating_page)\n                    this.setPage();\n            });\n            this.connect(p.visible.change, () => this.setVisibility());\n            this.connect(p.max_page.change, () => this.setMaxPage());\n            this.connect(p.frozen_rows.change, () => this.setFrozen());\n            this.connect(p.sorters.change, () => this.setSorters());\n            this.connect(p.theme_classes.change, () => this.setCSSClasses(this.tabulator.element));\n            this.connect(this.model.source.properties.data.change, () => {\n                if (this.tabulator === undefined)\n                    return;\n                this._selection_updating = true;\n                this.setData();\n                this._selection_updating = false;\n                this.postUpdate();\n            });\n            this.connect(this.model.source.streaming, () => this.addData());\n            this.connect(this.model.source.patching, () => {\n                const inds = this.model.source.selected.indices;\n                this.updateOrAddData();\n                this.tabulator.rowManager.element.scrollTop = this._lastVerticalScrollbarTopPosition;\n                // Restore indices since updating data may have reset checkbox column\n                this.model.source.selected.indices = inds;\n            });\n            this.connect(this.model.source.selected.change, () => this.setSelection());\n            this.connect(this.model.source.selected.properties.indices.change, () => this.setSelection());\n        }\n        get groupBy() {\n            const groupby = (data) => {\n                const groups = [];\n                for (const g of this.model.groupby) {\n                    const group = g + ': ' + data[g];\n                    groups.push(group);\n                }\n                return groups.join(', ');\n            };\n            return this.model.groupby.length ? groupby : false;\n        }\n        get sorters() {\n            const sorters = [];\n            if (this.model.sorters.length)\n                sorters.push({ column: '_index', dir: 'asc' });\n            for (const sort of this.model.sorters.reverse()) {\n                if (sort.column === undefined)\n                    sort.column = sort.field;\n                sorters.push(sort);\n            }\n            return sorters;\n        }\n        invalidate_render() {\n            this.tabulator.destroy();\n            this.tabulator = null;\n            this.render();\n        }\n        redraw() {\n            if (this._building)\n                return;\n            if (this.tabulator.columnManager.element != null) {\n                this.tabulator.columnManager.redraw(true);\n            }\n            if (this.tabulator.rowManager.renderer != null) {\n                this.tabulator.rowManager.redraw(true);\n                this.renderChildren();\n                this.setStyles();\n            }\n        }\n        after_layout() {\n            super.after_layout();\n            if (this.tabulator != null && this._initializing)\n                this.redraw();\n            this._initializing = false;\n        }\n        setCSSClasses(el) {\n            el.className = \"pnx-tabulator tabulator\";\n            for (const cls of this.model.theme_classes)\n                el.classList.add(cls);\n        }\n        render() {\n            if (this.tabulator != null)\n                this.tabulator.destroy();\n            super.render();\n            this._initializing = true;\n            const container = (0, dom_2.div)({ style: \"display: contents;\" });\n            const el = (0, dom_2.div)({ style: \"width: 100%; height: 100%; visibility: hidden;\" });\n            this.setCSSClasses(el);\n            container.appendChild(el);\n            this.shadow_el.appendChild(container);\n            let configuration = this.getConfiguration();\n            this.tabulator = new Tabulator(el, configuration);\n            this.watch_stylesheets();\n            this.init_callbacks();\n        }\n        style_redraw() {\n            if (this.model.visible)\n                this.tabulator.element.style.visibility = 'visible';\n            if (!this._initializing && !this._building)\n                this.redraw();\n        }\n        tableInit() {\n            this._building = true;\n            // Patch the ajax request and page data parsing methods\n            const ajax = this.tabulator.modules.ajax;\n            ajax.sendRequest = (_url, params, _config) => {\n                return this.requestPage(params.page, params.sort);\n            };\n            this.tabulator.modules.page._parseRemoteData = () => {\n                return false;\n            };\n        }\n        init_callbacks() {\n            // Initialization\n            this.tabulator.on(\"tableBuilding\", () => this.tableInit());\n            this.tabulator.on(\"tableBuilt\", () => this.tableBuilt());\n            // Rendering callbacks\n            this.tabulator.on(\"selectableCheck\", (row) => {\n                const selectable = this.model.selectable_rows;\n                return (selectable == null) || selectable.includes(row._row.data._index);\n            });\n            this.tabulator.on(\"tooltips\", (cell) => {\n                return cell.getColumn().getField() + \": \" + cell.getValue();\n            });\n            this.tabulator.on(\"scrollVertical\", (0, debounce_1.debounce)(() => {\n                this.setStyles();\n            }, 50, false));\n            // Sync state with model\n            this.tabulator.on(\"rowSelectionChanged\", (data, rows, selected, deselected) => this.rowSelectionChanged(data, rows, selected, deselected));\n            this.tabulator.on(\"rowClick\", (e, row) => this.rowClicked(e, row));\n            this.tabulator.on(\"cellEdited\", (cell) => this.cellEdited(cell));\n            this.tabulator.on(\"dataFiltering\", (filters) => {\n                this.model.filters = filters;\n            });\n            this.tabulator.on(\"dataFiltered\", (_, rows) => {\n                if (this._building)\n                    return;\n                // Ensure that after filtering empty scroll renders\n                if (rows.length === 0)\n                    this.tabulator.rowManager.renderEmptyScroll();\n                // Ensure that after filtering the page is updated\n                this.updatePage(this.tabulator.getPage());\n            });\n            this.tabulator.on(\"pageLoaded\", (pageno) => {\n                this.updatePage(pageno);\n            });\n            this.tabulator.on(\"renderComplete\", () => {\n                if (this._building)\n                    return;\n                this.postUpdate();\n            });\n            this.tabulator.on(\"dataSorting\", (sorters) => {\n                const sorts = [];\n                for (const s of sorters) {\n                    if (s.field !== '_index')\n                        sorts.push({ field: s.field, dir: s.dir });\n                }\n                if (this.model.pagination !== 'remote') {\n                    this._updating_sort = true;\n                    this.model.sorters = sorts;\n                    this._updating_sort = false;\n                }\n            });\n        }\n        tableBuilt() {\n            this._building = false;\n            this.setSelection();\n            this.renderChildren();\n            this.setStyles();\n            if (this.model.pagination) {\n                this.setMaxPage();\n                this.tabulator.setPage(this.model.page);\n            }\n        }\n        requestPage(page, sorters) {\n            return new Promise((resolve, reject) => {\n                try {\n                    if (page != null && sorters != null) {\n                        this._updating_sort = true;\n                        const sorts = [];\n                        for (const s of sorters) {\n                            if (s.field !== '_index')\n                                sorts.push({ field: s.field, dir: s.dir });\n                        }\n                        this.model.sorters = sorts;\n                        this._updating_sort = false;\n                        this._updating_page = true;\n                        try {\n                            this.model.page = page || 1;\n                        }\n                        finally {\n                            this._updating_page = false;\n                        }\n                    }\n                    resolve([]);\n                }\n                catch (err) {\n                    reject(err);\n                }\n            });\n        }\n        getLayout() {\n            let layout = this.model.layout;\n            switch (layout) {\n                case \"fit_data\":\n                    return \"fitData\";\n                case \"fit_data_fill\":\n                    return \"fitDataFill\";\n                case \"fit_data_stretch\":\n                    return \"fitDataStretch\";\n                case \"fit_data_table\":\n                    return \"fitDataTable\";\n                case \"fit_columns\":\n                    return \"fitColumns\";\n            }\n        }\n        getConfiguration() {\n            // Only use selectable mode if explicitly requested otherwise manually handle selections\n            let selectable = this.model.select_mode === 'toggle' ? true : NaN;\n            let configuration = Object.assign(Object.assign({}, this.model.configuration), { index: \"_index\", nestedFieldSeparator: false, movableColumns: false, selectable: selectable, columns: this.getColumns(), initialSort: this.sorters, layout: this.getLayout(), pagination: this.model.pagination != null, paginationMode: this.model.pagination, paginationSize: this.model.page_size, paginationInitialPage: 1, groupBy: this.groupBy, rowFormatter: (row) => this._render_row(row), frozenRows: (row) => {\n                    return this.model.frozen_rows.length ? this.model.frozen_rows.includes(row._row.data._index) : false;\n                } });\n            if (this.model.pagination === \"remote\") {\n                configuration['ajaxURL'] = \"http://panel.pyviz.org\";\n                configuration['sortMode'] = \"remote\";\n            }\n            const cds = this.model.source;\n            let data;\n            if (cds === null || (cds.columns().length === 0))\n                data = [];\n            else\n                data = (0, data_1.transform_cds_to_records)(cds, true);\n            if (configuration.dataTree)\n                data = group_data(data, this.model.columns, this.model.indexes, this.model.aggregators);\n            return Object.assign(Object.assign({}, configuration), { \"data\": data });\n        }\n        get child_models() {\n            var _e, _f;\n            const children = [];\n            for (const idx of this.model.expanded) {\n                const child = (_f = (_e = this.model.children).get) === null || _f === void 0 ? void 0 : _f.call(_e, idx);\n                if (child != null)\n                    children.push(child);\n            }\n            return children;\n        }\n        renderChildren() {\n            new Promise(async (resolve) => {\n                await this.build_child_views();\n                resolve(null);\n            }).then(() => {\n                for (const r of this.model.expanded) {\n                    const row = this.tabulator.getRow(r);\n                    this._render_row(row, false);\n                }\n                this._update_children();\n                if (this.tabulator.rowManager.renderer != null)\n                    this.tabulator.rowManager.adjustTableSize();\n                this.invalidate_layout();\n            });\n        }\n        _render_row(row, resize = true) {\n            var _e;\n            const index = (_e = row._row) === null || _e === void 0 ? void 0 : _e.data._index;\n            if (!this.model.expanded.includes(index) || this.model.children.get(index) == null)\n                return;\n            const model = this.model.children.get(index);\n            const view = model == null ? null : this._child_views.get(model);\n            if (view == null)\n                return;\n            const rowEl = row.getElement();\n            const style = getComputedStyle(this.tabulator.element.children[1].children[0]);\n            const bg = style.backgroundColor;\n            const neg_margin = rowEl.style.paddingLeft ? \"-\" + rowEl.style.paddingLeft : '0';\n            const viewEl = (0, dom_2.div)({ style: \"background-color: \" + bg + \"; margin-left:\" + neg_margin + \"; max-width: 100%; overflow-x: hidden;\" });\n            viewEl.appendChild(view.el);\n            rowEl.appendChild(viewEl);\n            if (!view.has_finished()) {\n                view.render();\n                view.after_render();\n            }\n            if (resize) {\n                this._update_children();\n                this.tabulator.rowManager.adjustTableSize();\n                this.invalidate_layout();\n            }\n        }\n        _expand_render(cell) {\n            const index = cell._cell.row.data._index;\n            const icon = this.model.expanded.indexOf(index) < 0 ? \"►\" : \"▼\";\n            return \"<i>\" + icon + \"</i>\";\n        }\n        _update_expand(cell) {\n            var _e, _f, _g, _h;\n            const index = cell._cell.row.data._index;\n            const expanded = [...this.model.expanded];\n            const exp_index = expanded.indexOf(index);\n            if (exp_index < 0)\n                expanded.push(index);\n            else {\n                const removed = expanded.splice(exp_index, 1)[0];\n                const model = (_f = (_e = this.model.children).get) === null || _f === void 0 ? void 0 : _f.call(_e, removed);\n                if (model != null) {\n                    const view = this._child_views.get(model);\n                    if (view !== undefined && view.el != null)\n                        (0, dom_1.undisplay)(view.el);\n                }\n            }\n            this.model.expanded = expanded;\n            if (expanded.indexOf(index) < 0)\n                return;\n            let ready = true;\n            for (const idx of this.model.expanded) {\n                if (((_h = (_g = this.model.children).get) === null || _h === void 0 ? void 0 : _h.call(_g, idx)) == null) {\n                    ready = false;\n                    break;\n                }\n            }\n            if (ready)\n                this.renderChildren();\n        }\n        getData() {\n            let data = (0, data_1.transform_cds_to_records)(this.model.source, true);\n            if (this.model.configuration.dataTree)\n                data = group_data(data, this.model.columns, this.model.indexes, this.model.aggregators);\n            return data;\n        }\n        getColumns() {\n            var _e;\n            this.columns = new Map();\n            const config_columns = (_e = this.model.configuration) === null || _e === void 0 ? void 0 : _e.columns;\n            let columns = [];\n            columns.push({ field: '_index', frozen: true, visible: false });\n            if (config_columns != null) {\n                for (const column of config_columns)\n                    if (column.columns != null) {\n                        const group_columns = [];\n                        for (const col of column.columns)\n                            group_columns.push(Object.assign({}, col));\n                        columns.push(Object.assign(Object.assign({}, column), { columns: group_columns }));\n                    }\n                    else if (column.formatter === \"expand\") {\n                        const expand = {\n                            hozAlign: \"center\",\n                            cellClick: (_, cell) => { this._update_expand(cell); },\n                            formatter: (cell) => { return this._expand_render(cell); },\n                            width: 40,\n                            frozen: true\n                        };\n                        columns.push(expand);\n                    }\n                    else {\n                        const new_column = Object.assign({}, column);\n                        if (new_column.formatter === \"rowSelection\") {\n                            new_column.cellClick = (_, cell) => {\n                                cell.getRow().toggleSelect();\n                            };\n                        }\n                        columns.push(new_column);\n                    }\n            }\n            for (const column of this.model.columns) {\n                let tab_column = null;\n                if (config_columns != null) {\n                    for (const col of columns) {\n                        if (col.columns != null) {\n                            for (const c of col.columns) {\n                                if (column.field === c.field) {\n                                    tab_column = c;\n                                    break;\n                                }\n                            }\n                            if (tab_column != null)\n                                break;\n                        }\n                        else if (column.field === col.field) {\n                            tab_column = col;\n                            break;\n                        }\n                    }\n                }\n                if (tab_column == null)\n                    tab_column = { field: column.field };\n                this.columns.set(column.field, tab_column);\n                if (tab_column.title == null)\n                    tab_column.title = column.title;\n                if (tab_column.width == null && column.width != null && column.width != 0)\n                    tab_column.width = column.width;\n                if (tab_column.formatter == null && column.formatter != null) {\n                    const formatter = column.formatter;\n                    const ftype = formatter.type;\n                    if (ftype === \"BooleanFormatter\")\n                        tab_column.formatter = \"tickCross\";\n                    else {\n                        tab_column.formatter = (cell) => {\n                            const formatted = column.formatter.doFormat(cell.getRow(), cell, cell.getValue(), null, null);\n                            if (column.formatter.type === 'HTMLTemplateFormatter')\n                                return formatted;\n                            const node = (0, dom_2.div)();\n                            node.innerHTML = formatted;\n                            const child = node.children[0];\n                            if (child.innerHTML === \"function(){return c.convert(arguments)}\") // If the formatter fails\n                                return '';\n                            return child;\n                        };\n                    }\n                }\n                if (tab_column.sorter == 'timestamp') {\n                    tab_column.sorter = timestampSorter;\n                }\n                if (tab_column.sorter === undefined) {\n                    tab_column.sorter = \"string\";\n                }\n                const editor = column.editor;\n                const ctype = editor.type;\n                if (tab_column.editor != null) {\n                    if (tab_column.editor === 'date') {\n                        tab_column.editor = dateEditor;\n                    }\n                    else if (tab_column.editor === 'datetime') {\n                        tab_column.editor = datetimeEditor;\n                    }\n                }\n                else if (ctype === \"StringEditor\") {\n                    if (editor.completions.length > 0) {\n                        tab_column.editor = \"list\";\n                        tab_column.editorParams = { values: editor.completions, autocomplete: true, listOnEmpty: true };\n                    }\n                    else\n                        tab_column.editor = \"input\";\n                }\n                else if (ctype === \"TextEditor\")\n                    tab_column.editor = \"textarea\";\n                else if (ctype === \"IntEditor\" || ctype === \"NumberEditor\") {\n                    tab_column.editor = \"number\";\n                    tab_column.editorParams = { step: editor.step };\n                    if (ctype === \"IntEditor\")\n                        tab_column.validator = \"integer\";\n                    else\n                        tab_column.validator = \"numeric\";\n                }\n                else if (ctype === \"CheckboxEditor\") {\n                    tab_column.editor = \"tickCross\";\n                }\n                else if (ctype === \"DateEditor\") {\n                    tab_column.editor = dateEditor;\n                }\n                else if (ctype === \"SelectEditor\") {\n                    tab_column.editor = \"list\";\n                    tab_column.editorParams = { values: editor.options };\n                }\n                else if (editor != null && editor.default_view != null) {\n                    tab_column.editor = (cell, onRendered, success, cancel) => {\n                        this.renderEditor(column, cell, onRendered, success, cancel);\n                    };\n                }\n                tab_column.visible = (tab_column.visible != false && !this.model.hidden_columns.includes(column.field));\n                tab_column.editable = () => (this.model.editable && (editor.default_view != null));\n                if (tab_column.headerFilter) {\n                    if ((typeof tab_column.headerFilter) === 'boolean' &&\n                        (typeof tab_column.editor) === 'string') {\n                        tab_column.headerFilter = tab_column.editor;\n                        tab_column.headerFilterParams = tab_column.editorParams;\n                    }\n                }\n                for (const sort of this.model.sorters) {\n                    if (tab_column.field === sort.field)\n                        tab_column.headerSortStartingDir = sort.dir;\n                }\n                tab_column.cellClick = (_, cell) => {\n                    const index = cell.getData()._index;\n                    const event = new CellClickEvent(column.field, index);\n                    this.model.trigger_event(event);\n                };\n                if (config_columns == null)\n                    columns.push(tab_column);\n            }\n            for (const col in this.model.buttons) {\n                const button_formatter = () => {\n                    return this.model.buttons[col];\n                };\n                const button_column = {\n                    formatter: button_formatter,\n                    hozAlign: \"center\",\n                    cellClick: (_, cell) => {\n                        const index = cell.getData()._index;\n                        const event = new CellClickEvent(col, index);\n                        this.model.trigger_event(event);\n                    }\n                };\n                columns.push(button_column);\n            }\n            return columns;\n        }\n        renderEditor(column, cell, onRendered, success, cancel) {\n            const editor = column.editor;\n            const view = new editor.default_view({ column: column, model: editor, parent: this, container: cell._cell.element });\n            view.initialize();\n            view.connect_signals();\n            onRendered(() => {\n                view.setValue(cell.getValue());\n            });\n            view.inputEl.addEventListener('input', () => {\n                const value = view.serializeValue();\n                const old_value = cell.getValue();\n                const validation = view.validate();\n                if (!validation.valid)\n                    cancel(validation.msg);\n                if (old_value != null && typeof value != typeof old_value)\n                    cancel(\"Mismatching type\");\n                else\n                    success(view.serializeValue());\n            });\n            return view.inputEl;\n        }\n        // Update table\n        setData() {\n            if (this._initializing || this._building || !this.tabulator.initialized)\n                return;\n            const data = this.getData();\n            if (this.model.pagination != null)\n                this.tabulator.rowManager.setData(data, true, false);\n            else\n                this.tabulator.setData(data);\n        }\n        addData() {\n            const rows = this.tabulator.rowManager.getRows();\n            const last_row = rows[rows.length - 1];\n            const start = ((last_row === null || last_row === void 0 ? void 0 : last_row.data._index) || 0);\n            this.setData();\n            if (this.model.follow && last_row)\n                this.tabulator.scrollToRow(start, \"top\", false);\n        }\n        postUpdate() {\n            this.setSelection();\n            this.setStyles();\n        }\n        updateOrAddData() {\n            // To avoid double updating the tabulator data\n            if (this._tabulator_cell_updating)\n                return;\n            // Temporarily set minHeight to avoid \"scroll-to-top\" issues caused\n            // by Tabulator JS entirely destroying the table when .setData is called.\n            // Inspired by https://github.com/olifolkerd/tabulator/issues/4155\n            const prev_minheight = this.tabulator.element.style.minHeight;\n            this.tabulator.element.style.minHeight = this.tabulator.element.offsetHeight + \"px\";\n            let data = (0, data_1.transform_cds_to_records)(this.model.source, true);\n            this.tabulator.setData(data).then(() => {\n                this.tabulator.element.style.minHeight = prev_minheight;\n            });\n        }\n        setFrozen() {\n            for (const row of this.model.frozen_rows) {\n                this.tabulator.getRow(row).freeze();\n            }\n        }\n        setVisibility() {\n            if (this.tabulator == null)\n                return;\n            this.tabulator.element.style.visibility = this.model.visible ? 'visible' : 'hidden';\n        }\n        updatePage(pageno) {\n            if (this.model.pagination === 'local' && this.model.page !== pageno) {\n                this._updating_page = true;\n                this.model.page = pageno;\n                this._updating_page = false;\n                this.setStyles();\n            }\n        }\n        setGroupBy() {\n            this.tabulator.setGroupBy(this.groupBy);\n        }\n        setSorters() {\n            if (this._updating_sort)\n                return;\n            this.tabulator.setSort(this.sorters);\n        }\n        setStyles() {\n            const style_data = this.model.cell_styles.data;\n            if (this.tabulator == null || this.tabulator.getDataCount() == 0 || style_data == null || !style_data.size)\n                return;\n            this._applied_styles = false;\n            for (const r of style_data.keys()) {\n                const row_style = style_data.get(r);\n                const row = this.tabulator.getRow(r);\n                if (!row)\n                    continue;\n                const cells = row._row.cells;\n                for (const c of row_style.keys()) {\n                    const style = row_style.get(c);\n                    const cell = cells[c];\n                    if (cell == null || !style.length)\n                        continue;\n                    const element = cell.element;\n                    for (const s of style) {\n                        let prop, value;\n                        if ((0, types_1.isArray)(s))\n                            [prop, value] = s;\n                        else if (!s.includes(':'))\n                            continue;\n                        else\n                            [prop, value] = s.split(':');\n                        element.style.setProperty(prop, value.trimLeft());\n                        this._applied_styles = true;\n                    }\n                }\n            }\n        }\n        setHidden() {\n            for (const column of this.tabulator.getColumns()) {\n                const col = column._column;\n                if ((col.field == '_index') || this.model.hidden_columns.includes(col.field))\n                    column.hide();\n                else\n                    column.show();\n            }\n        }\n        setMaxPage() {\n            this.tabulator.setMaxPage(this.model.max_page);\n            if (this.tabulator.modules.page.pagesElement)\n                this.tabulator.modules.page._setPageButtons();\n        }\n        setPage() {\n            this.tabulator.setPage(Math.min(this.model.max_page, this.model.page));\n            if (this.model.pagination === \"local\") {\n                this.renderChildren();\n                this.setStyles();\n            }\n        }\n        setPageSize() {\n            this.tabulator.setPageSize(this.model.page_size);\n            if (this.model.pagination === \"local\") {\n                this.renderChildren();\n                this.setStyles();\n            }\n        }\n        setSelection() {\n            if (this.tabulator == null || this._initializing || this._selection_updating || !this.tabulator.initialized)\n                return;\n            const indices = this.model.source.selected.indices;\n            const current_indices = this.tabulator.getSelectedData().map((row) => row._index);\n            if (JSON.stringify(indices) == JSON.stringify(current_indices))\n                return;\n            this._selection_updating = true;\n            this.tabulator.deselectRow();\n            this.tabulator.selectRow(indices);\n            for (const index of indices) {\n                const row = this.tabulator.rowManager.findRow(index);\n                if (row)\n                    this.tabulator.scrollToRow(index, \"center\", false).catch(() => { });\n            }\n            this._selection_updating = false;\n        }\n        // Update model\n        rowClicked(e, row) {\n            var _e;\n            if (this._selection_updating ||\n                this._initializing ||\n                (typeof this.model.select_mode) === 'string' ||\n                this.model.select_mode === false || // selection disabled\n                this.model.configuration.dataTree || // dataTree does not support selection\n                ((_e = e.srcElement) === null || _e === void 0 ? void 0 : _e.innerText) === \"►\" // expand button\n            )\n                return;\n            let indices = [];\n            const selected = this.model.source.selected;\n            const index = row._row.data._index;\n            if (this.model.pagination === 'remote') {\n                const includes = this.model.source.selected.indices.indexOf(index) == -1;\n                const flush = !(e.ctrlKey || e.metaKey || e.shiftKey);\n                if (e.shiftKey && selected.indices.length) {\n                    const start = selected.indices[selected.indices.length - 1];\n                    if (index > start) {\n                        for (let i = start; i <= index; i++)\n                            indices.push(i);\n                    }\n                    else {\n                        for (let i = start; i >= index; i--)\n                            indices.push(i);\n                    }\n                }\n                else {\n                    indices.push(index);\n                }\n                this._selection_updating = true;\n                this.model.trigger_event(new SelectionEvent(indices, includes, flush));\n                this._selection_updating = false;\n                return;\n            }\n            if (e.ctrlKey || e.metaKey) {\n                indices = [...this.model.source.selected.indices];\n            }\n            else if (e.shiftKey && selected.indices.length) {\n                const start = selected.indices[selected.indices.length - 1];\n                if (index > start) {\n                    for (let i = start; i < index; i++)\n                        indices.push(i);\n                }\n                else {\n                    for (let i = start; i > index; i--)\n                        indices.push(i);\n                }\n            }\n            if (indices.indexOf(index) < 0)\n                indices.push(index);\n            else\n                indices.splice(indices.indexOf(index), 1);\n            // Remove the first selected indices when selectable is an int.\n            if (typeof this.model.select_mode === 'number') {\n                while (indices.length > this.model.select_mode) {\n                    indices.shift();\n                }\n            }\n            const filtered = this._filter_selected(indices);\n            this.tabulator.deselectRow();\n            this.tabulator.selectRow(filtered);\n            this._selection_updating = true;\n            selected.indices = filtered;\n            this._selection_updating = false;\n        }\n        _filter_selected(indices) {\n            const filtered = [];\n            for (const ind of indices) {\n                if (this.model.selectable_rows == null ||\n                    this.model.selectable_rows.indexOf(ind) >= 0)\n                    filtered.push(ind);\n            }\n            return filtered;\n        }\n        rowSelectionChanged(data, _row, selected, deselected) {\n            if (this._selection_updating ||\n                this._initializing ||\n                (typeof this.model.select_mode) === 'boolean' ||\n                (typeof this.model.select_mode) === 'number' ||\n                this.model.configuration.dataTree)\n                return;\n            if (this.model.pagination === 'remote') {\n                let selected_indices = selected.map((x) => x._row.data._index);\n                let deselected_indices = deselected.map((x) => x._row.data._index);\n                if (selected_indices.length > 0) {\n                    this._selection_updating = true;\n                    this.model.trigger_event(new SelectionEvent(selected_indices, true, false));\n                }\n                if (deselected_indices.length > 0) {\n                    this._selection_updating = true;\n                    this.model.trigger_event(new SelectionEvent(deselected_indices, false, false));\n                }\n            }\n            else {\n                const indices = data.map((row) => row._index);\n                const filtered = this._filter_selected(indices);\n                this._selection_updating = indices.length === filtered.length;\n                this.model.source.selected.indices = filtered;\n            }\n            this._selection_updating = false;\n        }\n        cellEdited(cell) {\n            const field = cell._cell.column.field;\n            const column_def = this.columns.get(field);\n            const index = cell.getData()._index;\n            const value = cell._cell.value;\n            if (column_def.validator === 'numeric' && value === '') {\n                cell.setValue(NaN, true);\n                return;\n            }\n            this._tabulator_cell_updating = true;\n            comm_manager_1.comm_settings.debounce = false;\n            this.model.trigger_event(new TableEditEvent(field, index, true));\n            try {\n                this.model.source.patch({ [field]: [[index, value]] });\n            }\n            finally {\n                comm_manager_1.comm_settings.debounce = true;\n                this._tabulator_cell_updating = false;\n            }\n            this.model.trigger_event(new TableEditEvent(field, index, false));\n            this.tabulator.scrollToRow(index, \"top\", false);\n        }\n    }\n    exports.DataTabulatorView = DataTabulatorView;\n    DataTabulatorView.__name__ = \"DataTabulatorView\";\n    exports.TableLayout = (0, kinds_1.Enum)(\"fit_data\", \"fit_data_fill\", \"fit_data_stretch\", \"fit_data_table\", \"fit_columns\");\n    // The Bokeh .ts model corresponding to the Bokeh .py model\n    class DataTabulator extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.DataTabulator = DataTabulator;\n    _d = DataTabulator;\n    DataTabulator.__name__ = \"DataTabulator\";\n    DataTabulator.__module__ = \"panel.models.tabulator\";\n    (() => {\n        _d.prototype.default_view = DataTabulatorView;\n        _d.define(({ Any, Array, Boolean, Nullable, Number, Ref, String }) => ({\n            aggregators: [Any, {}],\n            buttons: [Any, {}],\n            children: [Any, new Map()],\n            configuration: [Any, {}],\n            columns: [Array(Ref(tables_1.TableColumn)), []],\n            download: [Boolean, false],\n            editable: [Boolean, true],\n            expanded: [Array(Number), []],\n            filename: [String, \"table.csv\"],\n            filters: [Array(Any), []],\n            follow: [Boolean, true],\n            frozen_rows: [Array(Number), []],\n            groupby: [Array(String), []],\n            hidden_columns: [Array(String), []],\n            indexes: [Array(String), []],\n            layout: [exports.TableLayout, \"fit_data\"],\n            max_page: [Number, 0],\n            pagination: [Nullable(String), null],\n            page: [Number, 0],\n            page_size: [Number, 0],\n            select_mode: [Any, true],\n            selectable_rows: [Nullable(Array(Number)), null],\n            source: [Ref(column_data_source_1.ColumnDataSource)],\n            sorters: [Array(Any), []],\n            cell_styles: [Any, {}],\n            theme_classes: [Array(String), []],\n        }));\n    })();\n}\n","min_source":"function _(t,e,i,s,o){var l,n,a,r;s();const d=t(\"@bokehjs/core/dom\"),h=t(\"@bokehjs/core/util/types\"),c=t(\"@bokehjs/core/bokeh_events\"),u=t(\"@bokehjs/core/dom\"),m=t(\"@bokehjs/core/kinds\"),g=t(\"@bokehjs/models/sources/column_data_source\"),_=t(\"@bokehjs/models/widgets/tables\"),f=t(\"99a25e6992\"),p=t(\"eca6f2cacb\"),b=t(\"4e27eda472\"),w=t(\"cac5f3ed28\");class y extends c.ModelEvent{constructor(t,e,i){super(),this.column=t,this.row=e,this.pre=i}get event_values(){return{model:this.origin,column:this.column,row:this.row,pre:this.pre}}}i.TableEditEvent=y,l=y,y.__name__=\"TableEditEvent\",l.prototype.event_name=\"table-edit\";class v extends c.ModelEvent{constructor(t,e){super(),this.column=t,this.row=e}get event_values(){return{model:this.origin,column:this.column,row:this.row}}}i.CellClickEvent=v,n=v,v.__name__=\"CellClickEvent\",n.prototype.event_name=\"cell-click\";class x extends c.ModelEvent{constructor(t,e,i=!1){super(),this.indices=t,this.selected=e,this.flush=i}get event_values(){return{model:this.origin,indices:this.indices,selected:this.selected,flush:this.flush}}}function S(t,e,i){for(const s of i)if(s[t]==e)return s;return null}function C(t,e,i,s=0){const o={};if(0==t.length)return o;const l=i[s];for(const n of t){const t=C(n._children,e,i,s+1);for(const e in t)(0,h.isArray)(t[e])?n[e]=t[e].reduce(((t,e)=>t+e),0)/t[e].length:n[e]=t[e];for(const t of e.slice(1)){const e=n[t.field];if(t.field in o){const i=o[t.field];\"min\"===l?o[t.field]=Math.min(e,i):\"max\"===l?o[t.field]=Math.max(e,i):\"sum\"===l?o[t.field]=e+i:\"mean\"===l&&((0,h.isArray)(o[t.field])?o[t.field].push(e):o[t.field]=[i,e])}else o[t.field]=e}}return o}function T(t,e,i,s){const o=[],l=e[0].field;for(const s of t){const t=s[i[0]];let n=S(l,t,o);null==n&&(n={_children:[]},n[l]=t,o.push(n));let a=n;const r={};for(const t of i.slice(1)){a=S(l,s[t],a._children),null==a&&(a={_children:[]},a[l]=s[t],n._children.push(a)),r[t]=n;for(const t of e.slice(1))a[t.field]=s[t];n=a}for(const t of e.slice(1))a[t.field]=s[t.field]}const n=[];for(const t of i)n.push(t in s?s[t]:\"sum\");return C(o,e,n),o}i.SelectionEvent=x,a=x,x.__name__=\"SelectionEvent\",a.prototype.event_name=\"selection-change\";const M=function(t,e,i,s,o,l,n){let a;a=0;const r={zone:new window.luxon.IANAZone(\"UTC\")};if(t=\"-9223372036854776\"==String(t)?window.luxon.DateTime.fromISO(\"invalid\"):window.luxon.DateTime.fromMillis(t,r),e=\"-9223372036854776\"==String(e)?window.luxon.DateTime.fromISO(\"invalid\"):window.luxon.DateTime.fromMillis(e,r),t.isValid){if(e.isValid)return t-e;a=1}else a=e.isValid?-1:0;return a*=-1,a},E=function(t,e,i,s){const o=t.getValue(),l={zone:new window.luxon.IANAZone(\"UTC\")};let n;n=\"NaN\"===o||null===o?null:window.luxon.DateTime.fromMillis(o,l).toFormat(\"yyyy-MM-dd\");const a=document.createElement(\"input\");function r(){const t=window.luxon.DateTime.fromFormat(a.value,\"yyyy-MM-dd\",l).toMillis();t!=n?i(t):s()}return a.setAttribute(\"type\",\"date\"),a.style.padding=\"4px\",a.style.width=\"100%\",a.style.boxSizing=\"border-box\",a.value=n,e((()=>{a.focus(),a.style.height=\"100%\"})),a.addEventListener(\"blur\",r),a.addEventListener(\"keydown\",(t=>{\"Enter\"==t.key&&setTimeout(r,100),\"Escape\"==t.key&&setTimeout(s,100)})),a},z=function(t,e,i,s){const o=t.getValue(),l={zone:new window.luxon.IANAZone(\"UTC\")};let n;n=\"NaN\"===o||null===o?null:window.luxon.DateTime.fromMillis(o,l).toFormat(\"yyyy-MM-dd'T'T\");const a=document.createElement(\"input\");function r(){const t=window.luxon.DateTime.fromFormat(a.value,\"yyyy-MM-dd'T'T\",l).toMillis();t!=n?i(t):s()}return a.setAttribute(\"type\",\"datetime-local\"),a.style.padding=\"4px\",a.style.width=\"100%\",a.style.boxSizing=\"border-box\",a.value=n,e((()=>{a.focus(),a.style.height=\"100%\"})),a.addEventListener(\"blur\",r),a.addEventListener(\"keydown\",(t=>{\"Enter\"==t.key&&setTimeout(r,100),\"Escape\"==t.key&&setTimeout(s,100)})),a};class k extends w.HTMLBoxView{constructor(){super(...arguments),this.columns=new Map,this._tabulator_cell_updating=!1,this._updating_page=!1,this._updating_sort=!1,this._selection_updating=!1,this._lastVerticalScrollbarTopPosition=0,this._applied_styles=!1,this._building=!1}connect_signals(){super.connect_signals();const t=this.model.properties,{configuration:e,layout:i,columns:s,groupby:o}=t;this.on_change([e,i,o],(0,f.debounce)((()=>{this.invalidate_render()}),20,!1)),this.connect(this.model.properties.visible.change,(()=>{this.model.visible&&(this.tabulator.element.style.visibility=\"visible\")})),this.on_change([s],(()=>{this.tabulator.setColumns(this.getColumns()),this.setHidden()})),this.connect(t.download.change,(()=>{const t=this.model.filename.endsWith(\".json\")?\"json\":\"csv\";this.tabulator.download(t,this.model.filename)})),this.connect(t.children.change,(()=>this.renderChildren())),this.connect(t.expanded.change,(()=>{for(const t of this.tabulator.rowManager.getRows())t.cells.length>0&&t.cells[0].layoutElement();for(const t of this.tabulator.rowManager.getRows())if(t.cells.length>0){const e=t.data._index,i=this.model.expanded.indexOf(e)<0?\"\\u25ba\":\"\\u25bc\";t.cells[1].element.innerText=i}})),this.connect(t.cell_styles.change,(()=>{this._applied_styles&&this.tabulator.redraw(!0),this.setStyles()})),this.connect(t.hidden_columns.change,(()=>{this.setHidden(),this.tabulator.redraw(!0)})),this.connect(t.page_size.change,(()=>this.setPageSize())),this.connect(t.page.change,(()=>{this._updating_page||this.setPage()})),this.connect(t.visible.change,(()=>this.setVisibility())),this.connect(t.max_page.change,(()=>this.setMaxPage())),this.connect(t.frozen_rows.change,(()=>this.setFrozen())),this.connect(t.sorters.change,(()=>this.setSorters())),this.connect(t.theme_classes.change,(()=>this.setCSSClasses(this.tabulator.element))),this.connect(this.model.source.properties.data.change,(()=>{void 0!==this.tabulator&&(this._selection_updating=!0,this.setData(),this._selection_updating=!1,this.postUpdate())})),this.connect(this.model.source.streaming,(()=>this.addData())),this.connect(this.model.source.patching,(()=>{const t=this.model.source.selected.indices;this.updateOrAddData(),this.tabulator.rowManager.element.scrollTop=this._lastVerticalScrollbarTopPosition,this.model.source.selected.indices=t})),this.connect(this.model.source.selected.change,(()=>this.setSelection())),this.connect(this.model.source.selected.properties.indices.change,(()=>this.setSelection()))}get groupBy(){return!!this.model.groupby.length&&(t=>{const e=[];for(const i of this.model.groupby){const s=i+\": \"+t[i];e.push(s)}return e.join(\", \")})}get sorters(){const t=[];this.model.sorters.length&&t.push({column:\"_index\",dir:\"asc\"});for(const e of this.model.sorters.reverse())void 0===e.column&&(e.column=e.field),t.push(e);return t}invalidate_render(){this.tabulator.destroy(),this.tabulator=null,this.render()}redraw(){this._building||(null!=this.tabulator.columnManager.element&&this.tabulator.columnManager.redraw(!0),null!=this.tabulator.rowManager.renderer&&(this.tabulator.rowManager.redraw(!0),this.renderChildren(),this.setStyles()))}after_layout(){super.after_layout(),null!=this.tabulator&&this._initializing&&this.redraw(),this._initializing=!1}setCSSClasses(t){t.className=\"pnx-tabulator tabulator\";for(const e of this.model.theme_classes)t.classList.add(e)}render(){null!=this.tabulator&&this.tabulator.destroy(),super.render(),this._initializing=!0;const t=(0,u.div)({style:\"display: contents;\"}),e=(0,u.div)({style:\"width: 100%; height: 100%; visibility: hidden;\"});this.setCSSClasses(e),t.appendChild(e),this.shadow_el.appendChild(t);let i=this.getConfiguration();this.tabulator=new Tabulator(e,i),this.watch_stylesheets(),this.init_callbacks()}style_redraw(){this.model.visible&&(this.tabulator.element.style.visibility=\"visible\"),this._initializing||this._building||this.redraw()}tableInit(){this._building=!0;this.tabulator.modules.ajax.sendRequest=(t,e,i)=>this.requestPage(e.page,e.sort),this.tabulator.modules.page._parseRemoteData=()=>!1}init_callbacks(){this.tabulator.on(\"tableBuilding\",(()=>this.tableInit())),this.tabulator.on(\"tableBuilt\",(()=>this.tableBuilt())),this.tabulator.on(\"selectableCheck\",(t=>{const e=this.model.selectable_rows;return null==e||e.includes(t._row.data._index)})),this.tabulator.on(\"tooltips\",(t=>t.getColumn().getField()+\": \"+t.getValue())),this.tabulator.on(\"scrollVertical\",(0,f.debounce)((()=>{this.setStyles()}),50,!1)),this.tabulator.on(\"rowSelectionChanged\",((t,e,i,s)=>this.rowSelectionChanged(t,e,i,s))),this.tabulator.on(\"rowClick\",((t,e)=>this.rowClicked(t,e))),this.tabulator.on(\"cellEdited\",(t=>this.cellEdited(t))),this.tabulator.on(\"dataFiltering\",(t=>{this.model.filters=t})),this.tabulator.on(\"dataFiltered\",((t,e)=>{this._building||(0===e.length&&this.tabulator.rowManager.renderEmptyScroll(),this.updatePage(this.tabulator.getPage()))})),this.tabulator.on(\"pageLoaded\",(t=>{this.updatePage(t)})),this.tabulator.on(\"renderComplete\",(()=>{this._building||this.postUpdate()})),this.tabulator.on(\"dataSorting\",(t=>{const e=[];for(const i of t)\"_index\"!==i.field&&e.push({field:i.field,dir:i.dir});\"remote\"!==this.model.pagination&&(this._updating_sort=!0,this.model.sorters=e,this._updating_sort=!1)}))}tableBuilt(){this._building=!1,this.setSelection(),this.renderChildren(),this.setStyles(),this.model.pagination&&(this.setMaxPage(),this.tabulator.setPage(this.model.page))}requestPage(t,e){return new Promise(((i,s)=>{try{if(null!=t&&null!=e){this._updating_sort=!0;const i=[];for(const t of e)\"_index\"!==t.field&&i.push({field:t.field,dir:t.dir});this.model.sorters=i,this._updating_sort=!1,this._updating_page=!0;try{this.model.page=t||1}finally{this._updating_page=!1}}i([])}catch(t){s(t)}}))}getLayout(){switch(this.model.layout){case\"fit_data\":return\"fitData\";case\"fit_data_fill\":return\"fitDataFill\";case\"fit_data_stretch\":return\"fitDataStretch\";case\"fit_data_table\":return\"fitDataTable\";case\"fit_columns\":return\"fitColumns\"}}getConfiguration(){let t=\"toggle\"===this.model.select_mode||NaN,e=Object.assign(Object.assign({},this.model.configuration),{index:\"_index\",nestedFieldSeparator:!1,movableColumns:!1,selectable:t,columns:this.getColumns(),initialSort:this.sorters,layout:this.getLayout(),pagination:null!=this.model.pagination,paginationMode:this.model.pagination,paginationSize:this.model.page_size,paginationInitialPage:1,groupBy:this.groupBy,rowFormatter:t=>this._render_row(t),frozenRows:t=>!!this.model.frozen_rows.length&&this.model.frozen_rows.includes(t._row.data._index)});\"remote\"===this.model.pagination&&(e.ajaxURL=\"http://panel.pyviz.org\",e.sortMode=\"remote\");const i=this.model.source;let s;return s=null===i||0===i.columns().length?[]:(0,b.transform_cds_to_records)(i,!0),e.dataTree&&(s=T(s,this.model.columns,this.model.indexes,this.model.aggregators)),Object.assign(Object.assign({},e),{data:s})}get child_models(){var t,e;const i=[];for(const s of this.model.expanded){const o=null===(e=(t=this.model.children).get)||void 0===e?void 0:e.call(t,s);null!=o&&i.push(o)}return i}renderChildren(){new Promise((async t=>{await this.build_child_views(),t(null)})).then((()=>{for(const t of this.model.expanded){const e=this.tabulator.getRow(t);this._render_row(e,!1)}this._update_children(),null!=this.tabulator.rowManager.renderer&&this.tabulator.rowManager.adjustTableSize(),this.invalidate_layout()}))}_render_row(t,e=!0){var i;const s=null===(i=t._row)||void 0===i?void 0:i.data._index;if(!this.model.expanded.includes(s)||null==this.model.children.get(s))return;const o=this.model.children.get(s),l=null==o?null:this._child_views.get(o);if(null==l)return;const n=t.getElement(),a=getComputedStyle(this.tabulator.element.children[1].children[0]).backgroundColor,r=n.style.paddingLeft?\"-\"+n.style.paddingLeft:\"0\",d=(0,u.div)({style:\"background-color: \"+a+\"; margin-left:\"+r+\"; max-width: 100%; overflow-x: hidden;\"});d.appendChild(l.el),n.appendChild(d),l.has_finished()||(l.render(),l.after_render()),e&&(this._update_children(),this.tabulator.rowManager.adjustTableSize(),this.invalidate_layout())}_expand_render(t){const e=t._cell.row.data._index;return\"<i>\"+(this.model.expanded.indexOf(e)<0?\"\\u25ba\":\"\\u25bc\")+\"</i>\"}_update_expand(t){var e,i,s,o;const l=t._cell.row.data._index,n=[...this.model.expanded],a=n.indexOf(l);if(a<0)n.push(l);else{const t=n.splice(a,1)[0],s=null===(i=(e=this.model.children).get)||void 0===i?void 0:i.call(e,t);if(null!=s){const t=this._child_views.get(s);void 0!==t&&null!=t.el&&(0,d.undisplay)(t.el)}}if(this.model.expanded=n,n.indexOf(l)<0)return;let r=!0;for(const t of this.model.expanded)if(null==(null===(o=(s=this.model.children).get)||void 0===o?void 0:o.call(s,t))){r=!1;break}r&&this.renderChildren()}getData(){let t=(0,b.transform_cds_to_records)(this.model.source,!0);return this.model.configuration.dataTree&&(t=T(t,this.model.columns,this.model.indexes,this.model.aggregators)),t}getColumns(){var t;this.columns=new Map;const e=null===(t=this.model.configuration)||void 0===t?void 0:t.columns;let i=[];if(i.push({field:\"_index\",frozen:!0,visible:!1}),null!=e)for(const t of e)if(null!=t.columns){const e=[];for(const i of t.columns)e.push(Object.assign({},i));i.push(Object.assign(Object.assign({},t),{columns:e}))}else if(\"expand\"===t.formatter){const t={hozAlign:\"center\",cellClick:(t,e)=>{this._update_expand(e)},formatter:t=>this._expand_render(t),width:40,frozen:!0};i.push(t)}else{const e=Object.assign({},t);\"rowSelection\"===e.formatter&&(e.cellClick=(t,e)=>{e.getRow().toggleSelect()}),i.push(e)}for(const t of this.model.columns){let s=null;if(null!=e)for(const e of i)if(null!=e.columns){for(const i of e.columns)if(t.field===i.field){s=i;break}if(null!=s)break}else if(t.field===e.field){s=e;break}if(null==s&&(s={field:t.field}),this.columns.set(t.field,s),null==s.title&&(s.title=t.title),null==s.width&&null!=t.width&&0!=t.width&&(s.width=t.width),null==s.formatter&&null!=t.formatter){const e=t.formatter.type;s.formatter=\"BooleanFormatter\"===e?\"tickCross\":e=>{const i=t.formatter.doFormat(e.getRow(),e,e.getValue(),null,null);if(\"HTMLTemplateFormatter\"===t.formatter.type)return i;const s=(0,u.div)();s.innerHTML=i;const o=s.children[0];return\"function(){return c.convert(arguments)}\"===o.innerHTML?\"\":o}}\"timestamp\"==s.sorter&&(s.sorter=M),void 0===s.sorter&&(s.sorter=\"string\");const o=t.editor,l=o.type;null!=s.editor?\"date\"===s.editor?s.editor=E:\"datetime\"===s.editor&&(s.editor=z):\"StringEditor\"===l?o.completions.length>0?(s.editor=\"list\",s.editorParams={values:o.completions,autocomplete:!0,listOnEmpty:!0}):s.editor=\"input\":\"TextEditor\"===l?s.editor=\"textarea\":\"IntEditor\"===l||\"NumberEditor\"===l?(s.editor=\"number\",s.editorParams={step:o.step},s.validator=\"IntEditor\"===l?\"integer\":\"numeric\"):\"CheckboxEditor\"===l?s.editor=\"tickCross\":\"DateEditor\"===l?s.editor=E:\"SelectEditor\"===l?(s.editor=\"list\",s.editorParams={values:o.options}):null!=o&&null!=o.default_view&&(s.editor=(e,i,s,o)=>{this.renderEditor(t,e,i,s,o)}),s.visible=0!=s.visible&&!this.model.hidden_columns.includes(t.field),s.editable=()=>this.model.editable&&null!=o.default_view,s.headerFilter&&\"boolean\"==typeof s.headerFilter&&\"string\"==typeof s.editor&&(s.headerFilter=s.editor,s.headerFilterParams=s.editorParams);for(const t of this.model.sorters)s.field===t.field&&(s.headerSortStartingDir=t.dir);s.cellClick=(e,i)=>{const s=i.getData()._index,o=new v(t.field,s);this.model.trigger_event(o)},null==e&&i.push(s)}for(const t in this.model.buttons){const e={formatter:()=>this.model.buttons[t],hozAlign:\"center\",cellClick:(e,i)=>{const s=i.getData()._index,o=new v(t,s);this.model.trigger_event(o)}};i.push(e)}return i}renderEditor(t,e,i,s,o){const l=t.editor,n=new l.default_view({column:t,model:l,parent:this,container:e._cell.element});return n.initialize(),n.connect_signals(),i((()=>{n.setValue(e.getValue())})),n.inputEl.addEventListener(\"input\",(()=>{const t=n.serializeValue(),i=e.getValue(),l=n.validate();l.valid||o(l.msg),null!=i&&typeof t!=typeof i?o(\"Mismatching type\"):s(n.serializeValue())})),n.inputEl}setData(){if(this._initializing||this._building||!this.tabulator.initialized)return;const t=this.getData();null!=this.model.pagination?this.tabulator.rowManager.setData(t,!0,!1):this.tabulator.setData(t)}addData(){const t=this.tabulator.rowManager.getRows(),e=t[t.length-1],i=(null==e?void 0:e.data._index)||0;this.setData(),this.model.follow&&e&&this.tabulator.scrollToRow(i,\"top\",!1)}postUpdate(){this.setSelection(),this.setStyles()}updateOrAddData(){if(this._tabulator_cell_updating)return;const t=this.tabulator.element.style.minHeight;this.tabulator.element.style.minHeight=this.tabulator.element.offsetHeight+\"px\";let e=(0,b.transform_cds_to_records)(this.model.source,!0);this.tabulator.setData(e).then((()=>{this.tabulator.element.style.minHeight=t}))}setFrozen(){for(const t of this.model.frozen_rows)this.tabulator.getRow(t).freeze()}setVisibility(){null!=this.tabulator&&(this.tabulator.element.style.visibility=this.model.visible?\"visible\":\"hidden\")}updatePage(t){\"local\"===this.model.pagination&&this.model.page!==t&&(this._updating_page=!0,this.model.page=t,this._updating_page=!1,this.setStyles())}setGroupBy(){this.tabulator.setGroupBy(this.groupBy)}setSorters(){this._updating_sort||this.tabulator.setSort(this.sorters)}setStyles(){const t=this.model.cell_styles.data;if(null!=this.tabulator&&0!=this.tabulator.getDataCount()&&null!=t&&t.size){this._applied_styles=!1;for(const e of t.keys()){const i=t.get(e),s=this.tabulator.getRow(e);if(!s)continue;const o=s._row.cells;for(const t of i.keys()){const e=i.get(t),s=o[t];if(null==s||!e.length)continue;const l=s.element;for(const t of e){let e,i;if((0,h.isArray)(t))[e,i]=t;else{if(!t.includes(\":\"))continue;[e,i]=t.split(\":\")}l.style.setProperty(e,i.trimLeft()),this._applied_styles=!0}}}}}setHidden(){for(const t of this.tabulator.getColumns()){const e=t._column;\"_index\"==e.field||this.model.hidden_columns.includes(e.field)?t.hide():t.show()}}setMaxPage(){this.tabulator.setMaxPage(this.model.max_page),this.tabulator.modules.page.pagesElement&&this.tabulator.modules.page._setPageButtons()}setPage(){this.tabulator.setPage(Math.min(this.model.max_page,this.model.page)),\"local\"===this.model.pagination&&(this.renderChildren(),this.setStyles())}setPageSize(){this.tabulator.setPageSize(this.model.page_size),\"local\"===this.model.pagination&&(this.renderChildren(),this.setStyles())}setSelection(){if(null==this.tabulator||this._initializing||this._selection_updating||!this.tabulator.initialized)return;const t=this.model.source.selected.indices,e=this.tabulator.getSelectedData().map((t=>t._index));if(JSON.stringify(t)!=JSON.stringify(e)){this._selection_updating=!0,this.tabulator.deselectRow(),this.tabulator.selectRow(t);for(const e of t){this.tabulator.rowManager.findRow(e)&&this.tabulator.scrollToRow(e,\"center\",!1).catch((()=>{}))}this._selection_updating=!1}}rowClicked(t,e){var i;if(this._selection_updating||this._initializing||\"string\"==typeof this.model.select_mode||!1===this.model.select_mode||this.model.configuration.dataTree||\"\\u25ba\"===(null===(i=t.srcElement)||void 0===i?void 0:i.innerText))return;let s=[];const o=this.model.source.selected,l=e._row.data._index;if(\"remote\"===this.model.pagination){const e=-1==this.model.source.selected.indices.indexOf(l),i=!(t.ctrlKey||t.metaKey||t.shiftKey);if(t.shiftKey&&o.indices.length){const t=o.indices[o.indices.length-1];if(l>t)for(let e=t;e<=l;e++)s.push(e);else for(let e=t;e>=l;e--)s.push(e)}else s.push(l);return this._selection_updating=!0,this.model.trigger_event(new x(s,e,i)),void(this._selection_updating=!1)}if(t.ctrlKey||t.metaKey)s=[...this.model.source.selected.indices];else if(t.shiftKey&&o.indices.length){const t=o.indices[o.indices.length-1];if(l>t)for(let e=t;e<l;e++)s.push(e);else for(let e=t;e>l;e--)s.push(e)}if(s.indexOf(l)<0?s.push(l):s.splice(s.indexOf(l),1),\"number\"==typeof this.model.select_mode)for(;s.length>this.model.select_mode;)s.shift();const n=this._filter_selected(s);this.tabulator.deselectRow(),this.tabulator.selectRow(n),this._selection_updating=!0,o.indices=n,this._selection_updating=!1}_filter_selected(t){const e=[];for(const i of t)(null==this.model.selectable_rows||this.model.selectable_rows.indexOf(i)>=0)&&e.push(i);return e}rowSelectionChanged(t,e,i,s){if(!(this._selection_updating||this._initializing||\"boolean\"==typeof this.model.select_mode||\"number\"==typeof this.model.select_mode||this.model.configuration.dataTree)){if(\"remote\"===this.model.pagination){let t=i.map((t=>t._row.data._index)),e=s.map((t=>t._row.data._index));t.length>0&&(this._selection_updating=!0,this.model.trigger_event(new x(t,!0,!1))),e.length>0&&(this._selection_updating=!0,this.model.trigger_event(new x(e,!1,!1)))}else{const e=t.map((t=>t._index)),i=this._filter_selected(e);this._selection_updating=e.length===i.length,this.model.source.selected.indices=i}this._selection_updating=!1}}cellEdited(t){const e=t._cell.column.field,i=this.columns.get(e),s=t.getData()._index,o=t._cell.value;if(\"numeric\"!==i.validator||\"\"!==o){this._tabulator_cell_updating=!0,p.comm_settings.debounce=!1,this.model.trigger_event(new y(e,s,!0));try{this.model.source.patch({[e]:[[s,o]]})}finally{p.comm_settings.debounce=!0,this._tabulator_cell_updating=!1}this.model.trigger_event(new y(e,s,!1)),this.tabulator.scrollToRow(s,\"top\",!1)}else t.setValue(NaN,!0)}}i.DataTabulatorView=k,k.__name__=\"DataTabulatorView\",i.TableLayout=(0,m.Enum)(\"fit_data\",\"fit_data_fill\",\"fit_data_stretch\",\"fit_data_table\",\"fit_columns\");class D extends w.HTMLBox{constructor(t){super(t)}}i.DataTabulator=D,r=D,D.__name__=\"DataTabulator\",D.__module__=\"panel.models.tabulator\",r.prototype.default_view=k,r.define((({Any:t,Array:e,Boolean:s,Nullable:o,Number:l,Ref:n,String:a})=>({aggregators:[t,{}],buttons:[t,{}],children:[t,new Map],configuration:[t,{}],columns:[e(n(_.TableColumn)),[]],download:[s,!1],editable:[s,!0],expanded:[e(l),[]],filename:[a,\"table.csv\"],filters:[e(t),[]],follow:[s,!0],frozen_rows:[e(l),[]],groupby:[e(a),[]],hidden_columns:[e(a),[]],indexes:[e(a),[]],layout:[i.TableLayout,\"fit_data\"],max_page:[l,0],pagination:[o(a),null],page:[l,0],page_size:[l,0],select_mode:[t,!0],selectable_rows:[o(e(l)),null],source:[n(g.ColumnDataSource)],sorters:[e(t),[]],cell_styles:[t,{}],theme_classes:[e(a),[]]})))}\n//# sourceMappingURL=tabulator.min.js.map","min_map":"{\"version\":3,\"file\":\"tabulator.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"_b\",\"_c\",\"_d\",\"dom_1\",\"types_1\",\"bokeh_events_1\",\"dom_2\",\"kinds_1\",\"column_data_source_1\",\"tables_1\",\"debounce_1\",\"comm_manager_1\",\"data_1\",\"layout_1\",\"TableEditEvent\",\"ModelEvent\",\"constructor\",\"column\",\"row\",\"pre\",\"super\",\"this\",\"event_values\",\"model\",\"origin\",\"__name__\",\"prototype\",\"event_name\",\"CellClickEvent\",\"SelectionEvent\",\"indices\",\"selected\",\"flush\",\"find_group\",\"key\",\"value\",\"records\",\"record\",\"summarize\",\"grouped\",\"columns\",\"aggregators\",\"depth\",\"summary\",\"length\",\"agg\",\"group\",\"subsummary\",\"_children\",\"col\",\"isArray\",\"reduce\",\"a\",\"b\",\"slice\",\"val\",\"field\",\"old_val\",\"Math\",\"min\",\"max\",\"push\",\"group_data\",\"indexes\",\"index_field\",\"subgroup\",\"groups\",\"index\",\"aggs\",\"timestampSorter\",\"_aRow\",\"_bRow\",\"_column\",\"_dir\",\"_params\",\"emptyAlign\",\"opts\",\"zone\",\"window\",\"luxon\",\"IANAZone\",\"String\",\"DateTime\",\"fromISO\",\"fromMillis\",\"isValid\",\"dateEditor\",\"cell\",\"onRendered\",\"success\",\"cancel\",\"rawValue\",\"getValue\",\"cellValue\",\"toFormat\",\"input\",\"document\",\"createElement\",\"onChange\",\"new_val\",\"fromFormat\",\"toMillis\",\"setAttribute\",\"style\",\"padding\",\"width\",\"boxSizing\",\"focus\",\"height\",\"addEventListener\",\"e\",\"setTimeout\",\"datetimeEditor\",\"DataTabulatorView\",\"HTMLBoxView\",\"arguments\",\"Map\",\"_tabulator_cell_updating\",\"_updating_page\",\"_updating_sort\",\"_selection_updating\",\"_lastVerticalScrollbarTopPosition\",\"_applied_styles\",\"_building\",\"connect_signals\",\"p\",\"properties\",\"configuration\",\"layout\",\"groupby\",\"on_change\",\"debounce\",\"invalidate_render\",\"connect\",\"visible\",\"change\",\"tabulator\",\"element\",\"visibility\",\"setColumns\",\"getColumns\",\"setHidden\",\"download\",\"ftype\",\"filename\",\"endsWith\",\"children\",\"renderChildren\",\"expanded\",\"rowManager\",\"getRows\",\"cells\",\"layoutElement\",\"data\",\"_index\",\"icon\",\"indexOf\",\"innerText\",\"cell_styles\",\"redraw\",\"setStyles\",\"hidden_columns\",\"page_size\",\"setPageSize\",\"page\",\"setPage\",\"setVisibility\",\"max_page\",\"setMaxPage\",\"frozen_rows\",\"setFrozen\",\"sorters\",\"setSorters\",\"theme_classes\",\"setCSSClasses\",\"source\",\"undefined\",\"setData\",\"postUpdate\",\"streaming\",\"addData\",\"patching\",\"inds\",\"updateOrAddData\",\"scrollTop\",\"setSelection\",\"groupBy\",\"g\",\"join\",\"dir\",\"sort\",\"reverse\",\"destroy\",\"render\",\"columnManager\",\"renderer\",\"after_layout\",\"_initializing\",\"el\",\"className\",\"cls\",\"classList\",\"add\",\"container\",\"div\",\"appendChild\",\"shadow_el\",\"getConfiguration\",\"Tabulator\",\"watch_stylesheets\",\"init_callbacks\",\"style_redraw\",\"tableInit\",\"modules\",\"ajax\",\"sendRequest\",\"_url\",\"params\",\"_config\",\"requestPage\",\"_parseRemoteData\",\"on\",\"tableBuilt\",\"selectable\",\"selectable_rows\",\"includes\",\"_row\",\"getColumn\",\"getField\",\"rows\",\"deselected\",\"rowSelectionChanged\",\"rowClicked\",\"cellEdited\",\"filters\",\"renderEmptyScroll\",\"updatePage\",\"getPage\",\"pageno\",\"sorts\",\"s\",\"pagination\",\"Promise\",\"resolve\",\"reject\",\"err\",\"getLayout\",\"select_mode\",\"NaN\",\"Object\",\"assign\",\"nestedFieldSeparator\",\"movableColumns\",\"initialSort\",\"paginationMode\",\"paginationSize\",\"paginationInitialPage\",\"rowFormatter\",\"_render_row\",\"frozenRows\",\"cds\",\"transform_cds_to_records\",\"dataTree\",\"child_models\",\"_e\",\"_f\",\"idx\",\"child\",\"get\",\"call\",\"async\",\"build_child_views\",\"then\",\"r\",\"getRow\",\"_update_children\",\"adjustTableSize\",\"invalidate_layout\",\"resize\",\"view\",\"_child_views\",\"rowEl\",\"getElement\",\"bg\",\"getComputedStyle\",\"backgroundColor\",\"neg_margin\",\"paddingLeft\",\"viewEl\",\"has_finished\",\"after_render\",\"_expand_render\",\"_cell\",\"_update_expand\",\"_g\",\"_h\",\"exp_index\",\"removed\",\"splice\",\"undisplay\",\"ready\",\"getData\",\"config_columns\",\"frozen\",\"group_columns\",\"formatter\",\"expand\",\"hozAlign\",\"cellClick\",\"new_column\",\"toggleSelect\",\"tab_column\",\"c\",\"set\",\"title\",\"type\",\"formatted\",\"doFormat\",\"node\",\"innerHTML\",\"sorter\",\"editor\",\"ctype\",\"completions\",\"editorParams\",\"values\",\"autocomplete\",\"listOnEmpty\",\"step\",\"validator\",\"options\",\"default_view\",\"renderEditor\",\"editable\",\"headerFilter\",\"headerFilterParams\",\"headerSortStartingDir\",\"event\",\"trigger_event\",\"buttons\",\"button_column\",\"parent\",\"initialize\",\"setValue\",\"inputEl\",\"serializeValue\",\"old_value\",\"validation\",\"validate\",\"valid\",\"msg\",\"initialized\",\"last_row\",\"start\",\"follow\",\"scrollToRow\",\"prev_minheight\",\"minHeight\",\"offsetHeight\",\"freeze\",\"setGroupBy\",\"setSort\",\"style_data\",\"getDataCount\",\"size\",\"keys\",\"row_style\",\"prop\",\"split\",\"setProperty\",\"trimLeft\",\"hide\",\"show\",\"pagesElement\",\"_setPageButtons\",\"current_indices\",\"getSelectedData\",\"map\",\"JSON\",\"stringify\",\"deselectRow\",\"selectRow\",\"findRow\",\"catch\",\"srcElement\",\"ctrlKey\",\"metaKey\",\"shiftKey\",\"i\",\"shift\",\"filtered\",\"_filter_selected\",\"ind\",\"selected_indices\",\"x\",\"deselected_indices\",\"column_def\",\"comm_settings\",\"patch\",\"TableLayout\",\"Enum\",\"DataTabulator\",\"HTMLBox\",\"attrs\",\"__module__\",\"define\",\"Any\",\"Array\",\"Boolean\",\"Nullable\",\"Number\",\"Ref\",\"TableColumn\",\"ColumnDataSource\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/debounce/index.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"debounce/index.js","resolution":"CJS","id":"99a25e6992","hash":"99a25e6992e3ac65efedc6025b816f8611d5c424b46a3a0c562dd83cf5c11c50","source":"/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n  var timeout, args, context, timestamp, result;\n  if (null == wait) wait = 100;\n\n  function later() {\n    var last = Date.now() - timestamp;\n\n    if (last < wait && last >= 0) {\n      timeout = setTimeout(later, wait - last);\n    } else {\n      timeout = null;\n      if (!immediate) {\n        result = func.apply(context, args);\n        context = args = null;\n      }\n    }\n  };\n\n  var debounced = function(){\n    context = this;\n    args = arguments;\n    timestamp = Date.now();\n    var callNow = immediate && !timeout;\n    if (!timeout) timeout = setTimeout(later, wait);\n    if (callNow) {\n      result = func.apply(context, args);\n      context = args = null;\n    }\n\n    return result;\n  };\n\n  debounced.clear = function() {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = null;\n    }\n  };\n  \n  debounced.flush = function() {\n    if (timeout) {\n      result = func.apply(context, args);\n      context = args = null;\n      \n      clearTimeout(timeout);\n      timeout = null;\n    }\n  };\n\n  return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[],"externals":[],"shims":[]},"code":{"source":"/* debounce/index.js */ function _(require, module, exports, __esModule, __esExport) {\n    /**\n     * Returns a function, that, as long as it continues to be invoked, will not\n     * be triggered. The function will be called after it stops being called for\n     * N milliseconds. If `immediate` is passed, trigger the function on the\n     * leading edge, instead of the trailing. The function also has a property 'clear'\n     * that is a function which will clear the timer to prevent previously scheduled executions.\n     *\n     * @source underscore.js\n     * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n     * @param {Function} function to wrap\n     * @param {Number} timeout in ms (`100`)\n     * @param {Boolean} whether to execute at the beginning (`false`)\n     * @api public\n     */\n    function debounce(func, wait, immediate) {\n        var timeout, args, context, timestamp, result;\n        if (null == wait)\n            wait = 100;\n        function later() {\n            var last = Date.now() - timestamp;\n            if (last < wait && last >= 0) {\n                timeout = setTimeout(later, wait - last);\n            }\n            else {\n                timeout = null;\n                if (!immediate) {\n                    result = func.apply(context, args);\n                    context = args = null;\n                }\n            }\n        }\n        ;\n        var debounced = function () {\n            context = this;\n            args = arguments;\n            timestamp = Date.now();\n            var callNow = immediate && !timeout;\n            if (!timeout)\n                timeout = setTimeout(later, wait);\n            if (callNow) {\n                result = func.apply(context, args);\n                context = args = null;\n            }\n            return result;\n        };\n        debounced.clear = function () {\n            if (timeout) {\n                clearTimeout(timeout);\n                timeout = null;\n            }\n        };\n        debounced.flush = function () {\n            if (timeout) {\n                result = func.apply(context, args);\n                context = args = null;\n                clearTimeout(timeout);\n                timeout = null;\n            }\n        };\n        return debounced;\n    }\n    ;\n    // Adds compatibility for ES modules\n    debounce.debounce = debounce;\n    module.exports = debounce;\n}\n","min_source":"function _(n,l,u,t,e){function o(n,l,u){var t,e,o,a,r;function i(){var c=Date.now()-a;c<l&&c>=0?t=setTimeout(i,l-c):(t=null,u||(r=n.apply(o,e),o=e=null))}null==l&&(l=100);var c=function(){o=this,e=arguments,a=Date.now();var c=u&&!t;return t||(t=setTimeout(i,l)),c&&(r=n.apply(o,e),o=e=null),r};return c.clear=function(){t&&(clearTimeout(t),t=null)},c.flush=function(){t&&(r=n.apply(o,e),o=e=null,clearTimeout(t),t=null)},c}o.debounce=o,l.exports=o}\n//# sourceMappingURL=index.min.js.map","min_map":"{\"version\":3,\"file\":\"index.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"debounce\",\"func\",\"wait\",\"immediate\",\"timeout\",\"args\",\"context\",\"timestamp\",\"result\",\"later\",\"last\",\"Date\",\"now\",\"setTimeout\",\"apply\",\"debounced\",\"this\",\"arguments\",\"callNow\",\"clear\",\"clearTimeout\",\"flush\"],\"sources\":[\"0\"],\"mappings\":\"AAAwB,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAerE,SAASC,EAASC,EAAMC,EAAMC,GAC1B,IAAIC,EAASC,EAAMC,EAASC,EAAWC,EAGvC,SAASC,IACL,IAAIC,EAAOC,KAAKC,MAAQL,EACpBG,EAAOR,GAAQQ,GAAQ,EACvBN,EAAUS,WAAWJ,EAAOP,EAAOQ,IAGnCN,EAAU,KACLD,IACDK,EAASP,EAAKa,MAAMR,EAASD,GAC7BC,EAAUD,EAAO,MAG7B,CAdI,MAAQH,IACRA,EAAO,KAeX,IAAIa,EAAY,WACZT,EAAUU,KACVX,EAAOY,UACPV,EAAYI,KAAKC,MACjB,IAAIM,EAAUf,IAAcC,EAO5B,OANKA,IACDA,EAAUS,WAAWJ,EAAOP,IAC5BgB,IACAV,EAASP,EAAKa,MAAMR,EAASD,GAC7BC,EAAUD,EAAO,MAEdG,CACX,EAeA,OAdAO,EAAUI,MAAQ,WACVf,IACAgB,aAAahB,GACbA,EAAU,KAElB,EACAW,EAAUM,MAAQ,WACVjB,IACAI,EAASP,EAAKa,MAAMR,EAASD,GAC7BC,EAAUD,EAAO,KACjBe,aAAahB,GACbA,EAAU,KAElB,EACOW,CACX,CAGAf,EAASA,SAAWA,EACpBJ,EAAOC,QAAUG,CACrB\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/data.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/data.js","canonical":"models/data","resolution":"ESM","id":"4e27eda472","hash":"4e27eda472ec203b2f714dcf9ad62067c58fdeb67779856d1a96ac7b6ee848d7","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dict_to_records = exports.transform_cds_to_records = void 0;\nfunction transform_cds_to_records(cds, addId = false, start = 0) {\n    const data = [];\n    const columns = cds.columns();\n    const cdsLength = cds.get_length();\n    if (columns.length === 0 || cdsLength === null)\n        return [];\n    for (let i = start; i < cdsLength; i++) {\n        const item = {};\n        for (const column of columns) {\n            let array = cds.get_array(column);\n            const shape = (array[0] == null || array[0].shape == null) ? null : array[0].shape;\n            if ((shape != null) && (shape.length > 1) && (typeof shape[0] == \"number\"))\n                item[column] = array.slice(i * shape[1], i * shape[1] + shape[1]);\n            else if (array.length != cdsLength && (array.length % cdsLength === 0)) {\n                const offset = array.length / cdsLength;\n                item[column] = array.slice(i * offset, i * offset + offset);\n            }\n            else\n                item[column] = array[i];\n        }\n        if (addId)\n            item['_index'] = i;\n        data.push(item);\n    }\n    return data;\n}\nexports.transform_cds_to_records = transform_cds_to_records;\nfunction dict_to_records(data, index = true) {\n    const records = [];\n    for (let i = 0; i < data.index.length; i++) {\n        const record = {};\n        for (const col of data) {\n            if (index || col !== \"index\")\n                record[col] = data[col][i];\n        }\n    }\n    return records;\n}\nexports.dict_to_records = dict_to_records;\n//# sourceMappingURL=data.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"transform_cds_to_records"},{"type":"named","name":"dict_to_records"}],"externals":[],"shims":[]},"code":{"source":"/* models/data.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    function transform_cds_to_records(cds, addId = false, start = 0) {\n        const data = [];\n        const columns = cds.columns();\n        const cdsLength = cds.get_length();\n        if (columns.length === 0 || cdsLength === null)\n            return [];\n        for (let i = start; i < cdsLength; i++) {\n            const item = {};\n            for (const column of columns) {\n                let array = cds.get_array(column);\n                const shape = (array[0] == null || array[0].shape == null) ? null : array[0].shape;\n                if ((shape != null) && (shape.length > 1) && (typeof shape[0] == \"number\"))\n                    item[column] = array.slice(i * shape[1], i * shape[1] + shape[1]);\n                else if (array.length != cdsLength && (array.length % cdsLength === 0)) {\n                    const offset = array.length / cdsLength;\n                    item[column] = array.slice(i * offset, i * offset + offset);\n                }\n                else\n                    item[column] = array[i];\n            }\n            if (addId)\n                item['_index'] = i;\n            data.push(item);\n        }\n        return data;\n    }\n    exports.transform_cds_to_records = transform_cds_to_records;\n    function dict_to_records(data, index = true) {\n        const records = [];\n        for (let i = 0; i < data.index.length; i++) {\n            const record = {};\n            for (const col of data) {\n                if (index || col !== \"index\")\n                    record[col] = data[col][i];\n            }\n        }\n        return records;\n    }\n    exports.dict_to_records = dict_to_records;\n}\n","min_source":"function _(n,e,t,l,o){l(),t.transform_cds_to_records=function(n,e=!1,t=0){const l=[],o=n.columns(),r=n.get_length();if(0===o.length||null===r)return[];for(let s=t;s<r;s++){const t={};for(const e of o){let l=n.get_array(e);const o=null==l[0]||null==l[0].shape?null:l[0].shape;if(null!=o&&o.length>1&&\"number\"==typeof o[0])t[e]=l.slice(s*o[1],s*o[1]+o[1]);else if(l.length!=r&&l.length%r==0){const n=l.length/r;t[e]=l.slice(s*n,s*n+n)}else t[e]=l[s]}e&&(t._index=s),l.push(t)}return l},t.dict_to_records=function(n,e=!0){for(let t=0;t<n.index.length;t++){const l={};for(const o of n)(e||\"index\"!==o)&&(l[o]=n[o][t])}return[]}}\n//# sourceMappingURL=data.min.js.map","min_map":"{\"version\":3,\"file\":\"data.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"transform_cds_to_records\",\"cds\",\"addId\",\"start\",\"data\",\"columns\",\"cdsLength\",\"get_length\",\"length\",\"i\",\"item\",\"column\",\"array\",\"get_array\",\"shape\",\"slice\",\"offset\",\"push\",\"dict_to_records\",\"index\",\"record\",\"col\"],\"sources\":[\"0\"],\"mappings\":\"AAAqB,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAClED,IA2BAD,EAAQG,yBA1BR,SAAkCC,EAAKC,GAAQ,EAAOC,EAAQ,GAC1D,MAAMC,EAAO,GACPC,EAAUJ,EAAII,UACdC,EAAYL,EAAIM,aACtB,GAAuB,IAAnBF,EAAQG,QAA8B,OAAdF,EACxB,MAAO,GACX,IAAK,IAAIG,EAAIN,EAAOM,EAAIH,EAAWG,IAAK,CACpC,MAAMC,EAAO,CAAC,EACd,IAAK,MAAMC,KAAUN,EAAS,CAC1B,IAAIO,EAAQX,EAAIY,UAAUF,GAC1B,MAAMG,EAAqB,MAAZF,EAAM,IAAgC,MAAlBA,EAAM,GAAGE,MAAiB,KAAOF,EAAM,GAAGE,MAC7E,GAAc,MAATA,GAAmBA,EAAMN,OAAS,GAA0B,iBAAZM,EAAM,GACvDJ,EAAKC,GAAUC,EAAMG,MAAMN,EAAIK,EAAM,GAAIL,EAAIK,EAAM,GAAKA,EAAM,SAC7D,GAAIF,EAAMJ,QAAUF,GAAcM,EAAMJ,OAASF,GAAc,EAAI,CACpE,MAAMU,EAASJ,EAAMJ,OAASF,EAC9BI,EAAKC,GAAUC,EAAMG,MAAMN,EAAIO,EAAQP,EAAIO,EAASA,EACxD,MAEIN,EAAKC,GAAUC,EAAMH,EAC7B,CACIP,IACAQ,EAAa,OAAID,GACrBL,EAAKa,KAAKP,EACd,CACA,OAAON,CACX,EAaAP,EAAQqB,gBAXR,SAAyBd,EAAMe,GAAQ,GAEnC,IAAK,IAAIV,EAAI,EAAGA,EAAIL,EAAKe,MAAMX,OAAQC,IAAK,CACxC,MAAMW,EAAS,CAAC,EAChB,IAAK,MAAMC,KAAOjB,GACVe,GAAiB,UAARE,KACTD,EAAOC,GAAOjB,EAAKiB,GAAKZ,GAEpC,CACA,MARgB,EASpB,CAEJ\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/datetime_picker.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/datetime_picker.js","canonical":"models/datetime_picker","resolution":"ESM","id":"5fd6501095","hash":"5fd6501095e144e26f9447320b3fef7f41d751c9ed8cc7d70cd0d50708d16eb9","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DatetimePicker = exports.DatetimePickerView = void 0;\nconst tslib_1 = require(\"tslib\");\nvar _a;\nconst flatpickr_1 = tslib_1.__importDefault(require(\"flatpickr\"));\nconst input_widget_1 = require(\"@bokehjs/models/widgets/input_widget\");\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst enums_1 = require(\"@bokehjs/core/enums\");\nconst types_1 = require(\"@bokehjs/core/util/types\");\nconst inputs = tslib_1.__importStar(require(\"@bokehjs/styles/widgets/inputs.css\"));\nconst flatpickr_css_1 = tslib_1.__importDefault(require(\"@bokehjs/styles/widgets/flatpickr.css\"));\nfunction _convert_date_list(value) {\n    const result = [];\n    for (const item of value) {\n        if ((0, types_1.isString)(item))\n            result.push(item);\n        else {\n            const [from, to] = item;\n            result.push({ from, to });\n        }\n    }\n    return result;\n}\nclass DatetimePickerView extends input_widget_1.InputWidgetView {\n    connect_signals() {\n        super.connect_signals();\n        const { value, min_date, max_date, disabled_dates, enabled_dates, inline, enable_time, enable_seconds, military_time, date_format, mode } = this.model.properties;\n        this.connect(value.change, () => { var _b; return this.model.value ? (_b = this._picker) === null || _b === void 0 ? void 0 : _b.setDate(this.model.value) : this._clear(); });\n        this.connect(min_date.change, () => { var _b; return (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"minDate\", this.model.min_date); });\n        this.connect(max_date.change, () => { var _b; return (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"maxDate\", this.model.max_date); });\n        this.connect(disabled_dates.change, () => {\n            var _b;\n            const { disabled_dates } = this.model;\n            (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"disable\", disabled_dates != null ? _convert_date_list(disabled_dates) : []);\n        });\n        this.connect(enabled_dates.change, () => {\n            var _b;\n            const { enabled_dates } = this.model;\n            if (enabled_dates != null) {\n                (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"enable\", _convert_date_list(enabled_dates));\n            }\n            else {\n                // this reimplements `set()` for the `undefined` case\n                if (this._picker) {\n                    this._picker.config._enable = undefined;\n                    this._picker.redraw();\n                    this._picker.updateValue(true);\n                }\n            }\n        });\n        this.connect(inline.change, () => { var _b; return (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"inline\", this.model.inline); });\n        this.connect(enable_time.change, () => { var _b; return (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"enableTime\", this.model.enable_time); });\n        this.connect(enable_seconds.change, () => { var _b; return (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"enableSeconds\", this.model.enable_seconds); });\n        this.connect(military_time.change, () => { var _b; return (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"time_24hr\", this.model.military_time); });\n        this.connect(mode.change, () => { var _b; return (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"mode\", this.model.mode); });\n        this.connect(date_format.change, () => { var _b; return (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"dateFormat\", this.model.date_format); });\n    }\n    remove() {\n        var _b;\n        (_b = this._picker) === null || _b === void 0 ? void 0 : _b.destroy();\n        super.remove();\n    }\n    stylesheets() {\n        return [...super.stylesheets(), flatpickr_css_1.default];\n    }\n    render() {\n        if (this._picker != null)\n            return;\n        super.render();\n        this.input_el = (0, dom_1.input)({ type: \"text\", class: inputs.input, disabled: this.model.disabled });\n        this.group_el.appendChild(this.input_el);\n        const options = {\n            appendTo: this.group_el,\n            positionElement: this.input_el,\n            defaultDate: this.model.value,\n            inline: this.model.inline,\n            position: this._position.bind(this),\n            enableTime: this.model.enable_time,\n            enableSeconds: this.model.enable_seconds,\n            time_24hr: this.model.military_time,\n            dateFormat: this.model.date_format,\n            mode: this.model.mode,\n            onClose: (selected_dates, date_string, instance) => this._on_close(selected_dates, date_string, instance),\n        };\n        const { min_date, max_date, disabled_dates, enabled_dates } = this.model;\n        if (min_date != null)\n            options.minDate = min_date;\n        if (max_date != null)\n            options.maxDate = max_date;\n        if (disabled_dates != null)\n            options.disable = _convert_date_list(disabled_dates);\n        if (enabled_dates != null)\n            options.enable = _convert_date_list(enabled_dates);\n        this._picker = (0, flatpickr_1.default)(this.input_el, options);\n        this._picker.maxDateHasTime = true;\n        this._picker.minDateHasTime = true;\n    }\n    _clear() {\n        var _b;\n        (_b = this._picker) === null || _b === void 0 ? void 0 : _b.clear();\n        this.model.value = null;\n    }\n    _on_close(_selected_dates, date_string, _instance) {\n        if (this.model.mode == \"range\" && !date_string.includes(\"to\"))\n            return;\n        this.model.value = date_string;\n        this.change_input();\n    }\n    _position(self, custom_el) {\n        // This function is copied directly from bokehs date_picker\n        const positionElement = custom_el !== null && custom_el !== void 0 ? custom_el : self._positionElement;\n        const calendarHeight = [...self.calendarContainer.children].reduce((acc, child) => acc + (0, dom_1.bounding_box)(child).height, 0);\n        const calendarWidth = self.calendarContainer.offsetWidth;\n        const configPos = this.model.position.split(\" \");\n        const configPosVertical = configPos[0];\n        const configPosHorizontal = configPos.length > 1 ? configPos[1] : null;\n        // const inputBounds = positionElement.getBoundingClientRect()\n        const inputBounds = {\n            top: positionElement.offsetTop,\n            bottom: positionElement.offsetTop + positionElement.offsetHeight,\n            left: positionElement.offsetLeft,\n            right: positionElement.offsetLeft + positionElement.offsetWidth,\n            width: positionElement.offsetWidth,\n        };\n        const distanceFromBottom = window.innerHeight - inputBounds.bottom;\n        const showOnTop = configPosVertical === \"above\" ||\n            (configPosVertical !== \"below\" &&\n                distanceFromBottom < calendarHeight &&\n                inputBounds.top > calendarHeight);\n        // const top =\n        //   window.scrollY +\n        //   inputBounds.top +\n        //   (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2)\n        const top = self.config.appendTo\n            ? inputBounds.top +\n                (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2)\n            : window.scrollY +\n                inputBounds.top +\n                (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n        self.calendarContainer.classList.toggle(\"arrowTop\", !showOnTop);\n        self.calendarContainer.classList.toggle(\"arrowBottom\", showOnTop);\n        if (self.config.inline)\n            return;\n        let left = window.scrollX + inputBounds.left;\n        let isCenter = false;\n        let isRight = false;\n        if (configPosHorizontal === \"center\") {\n            left -= (calendarWidth - inputBounds.width) / 2;\n            isCenter = true;\n        }\n        else if (configPosHorizontal === \"right\") {\n            left -= calendarWidth - inputBounds.width;\n            isRight = true;\n        }\n        self.calendarContainer.classList.toggle(\"arrowLeft\", !isCenter && !isRight);\n        self.calendarContainer.classList.toggle(\"arrowCenter\", isCenter);\n        self.calendarContainer.classList.toggle(\"arrowRight\", isRight);\n        const right = window.document.body.offsetWidth -\n            (window.scrollX + inputBounds.right);\n        const rightMost = left + calendarWidth > window.document.body.offsetWidth;\n        const centerMost = right + calendarWidth > window.document.body.offsetWidth;\n        self.calendarContainer.classList.toggle(\"rightMost\", rightMost);\n        if (self.config.static)\n            return;\n        self.calendarContainer.style.top = `${top}px`;\n        if (!rightMost) {\n            self.calendarContainer.style.left = `${left}px`;\n            self.calendarContainer.style.right = \"auto\";\n        }\n        else if (!centerMost) {\n            self.calendarContainer.style.left = \"auto\";\n            self.calendarContainer.style.right = `${right}px`;\n        }\n        else {\n            const css = this.shadow_el.styleSheets[0];\n            const bodyWidth = window.document.body.offsetWidth;\n            const centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n            const centerBefore = \".flatpickr-calendar.centerMost:before\";\n            const centerAfter = \".flatpickr-calendar.centerMost:after\";\n            const centerIndex = css.cssRules.length;\n            const centerStyle = `{left:${inputBounds.left}px;right:auto;}`;\n            self.calendarContainer.classList.toggle(\"rightMost\", false);\n            self.calendarContainer.classList.toggle(\"centerMost\", true);\n            css.insertRule(`${centerBefore},${centerAfter}${centerStyle}`, centerIndex);\n            self.calendarContainer.style.left = `${centerLeft}px`;\n            self.calendarContainer.style.right = \"auto\";\n        }\n    }\n}\nexports.DatetimePickerView = DatetimePickerView;\nDatetimePickerView.__name__ = \"DatetimePickerView\";\nclass DatetimePicker extends input_widget_1.InputWidget {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.DatetimePicker = DatetimePicker;\n_a = DatetimePicker;\nDatetimePicker.__name__ = \"DatetimePicker\";\nDatetimePicker.__module__ = \"panel.models.datetime_picker\";\n(() => {\n    _a.prototype.default_view = DatetimePickerView;\n    _a.define(({ Boolean, String, Array, Tuple, Or, Nullable }) => {\n        const DateStr = String;\n        const DatesList = Array(Or(DateStr, Tuple(DateStr, DateStr)));\n        return {\n            value: [Nullable(String), null],\n            min_date: [Nullable(String), null],\n            max_date: [Nullable(String), null],\n            disabled_dates: [Nullable(DatesList), null],\n            enabled_dates: [Nullable(DatesList), null],\n            position: [enums_1.CalendarPosition, \"auto\"],\n            inline: [Boolean, false],\n            enable_time: [Boolean, true],\n            enable_seconds: [Boolean, true],\n            military_time: [Boolean, true],\n            date_format: [String, \"Y-m-d H:i:S\"],\n            mode: [String, \"single\"],\n        };\n    });\n})();\n//# sourceMappingURL=datetime_picker.js.map\n","type":"js","dependency_paths":[["flatpickr","/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/index.js"]],"dependency_map":[],"exported":[{"type":"named","name":"DatetimePickerView"},{"type":"named","name":"DatetimePicker"}],"externals":[],"shims":[]},"code":{"source":"/* models/datetime_picker.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    var _a;\n    const flatpickr_1 = tslib_1.__importDefault(require(\"1156ddcec2\") /* flatpickr */);\n    const input_widget_1 = require(\"@bokehjs/models/widgets/input_widget\");\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const enums_1 = require(\"@bokehjs/core/enums\");\n    const types_1 = require(\"@bokehjs/core/util/types\");\n    const inputs = tslib_1.__importStar(require(\"@bokehjs/styles/widgets/inputs.css\"));\n    const flatpickr_css_1 = tslib_1.__importDefault(require(\"@bokehjs/styles/widgets/flatpickr.css\"));\n    function _convert_date_list(value) {\n        const result = [];\n        for (const item of value) {\n            if ((0, types_1.isString)(item))\n                result.push(item);\n            else {\n                const [from, to] = item;\n                result.push({ from, to });\n            }\n        }\n        return result;\n    }\n    class DatetimePickerView extends input_widget_1.InputWidgetView {\n        connect_signals() {\n            super.connect_signals();\n            const { value, min_date, max_date, disabled_dates, enabled_dates, inline, enable_time, enable_seconds, military_time, date_format, mode } = this.model.properties;\n            this.connect(value.change, () => { var _b; return this.model.value ? (_b = this._picker) === null || _b === void 0 ? void 0 : _b.setDate(this.model.value) : this._clear(); });\n            this.connect(min_date.change, () => { var _b; return (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"minDate\", this.model.min_date); });\n            this.connect(max_date.change, () => { var _b; return (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"maxDate\", this.model.max_date); });\n            this.connect(disabled_dates.change, () => {\n                var _b;\n                const { disabled_dates } = this.model;\n                (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"disable\", disabled_dates != null ? _convert_date_list(disabled_dates) : []);\n            });\n            this.connect(enabled_dates.change, () => {\n                var _b;\n                const { enabled_dates } = this.model;\n                if (enabled_dates != null) {\n                    (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"enable\", _convert_date_list(enabled_dates));\n                }\n                else {\n                    // this reimplements `set()` for the `undefined` case\n                    if (this._picker) {\n                        this._picker.config._enable = undefined;\n                        this._picker.redraw();\n                        this._picker.updateValue(true);\n                    }\n                }\n            });\n            this.connect(inline.change, () => { var _b; return (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"inline\", this.model.inline); });\n            this.connect(enable_time.change, () => { var _b; return (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"enableTime\", this.model.enable_time); });\n            this.connect(enable_seconds.change, () => { var _b; return (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"enableSeconds\", this.model.enable_seconds); });\n            this.connect(military_time.change, () => { var _b; return (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"time_24hr\", this.model.military_time); });\n            this.connect(mode.change, () => { var _b; return (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"mode\", this.model.mode); });\n            this.connect(date_format.change, () => { var _b; return (_b = this._picker) === null || _b === void 0 ? void 0 : _b.set(\"dateFormat\", this.model.date_format); });\n        }\n        remove() {\n            var _b;\n            (_b = this._picker) === null || _b === void 0 ? void 0 : _b.destroy();\n            super.remove();\n        }\n        stylesheets() {\n            return [...super.stylesheets(), flatpickr_css_1.default];\n        }\n        render() {\n            if (this._picker != null)\n                return;\n            super.render();\n            this.input_el = (0, dom_1.input)({ type: \"text\", class: inputs.input, disabled: this.model.disabled });\n            this.group_el.appendChild(this.input_el);\n            const options = {\n                appendTo: this.group_el,\n                positionElement: this.input_el,\n                defaultDate: this.model.value,\n                inline: this.model.inline,\n                position: this._position.bind(this),\n                enableTime: this.model.enable_time,\n                enableSeconds: this.model.enable_seconds,\n                time_24hr: this.model.military_time,\n                dateFormat: this.model.date_format,\n                mode: this.model.mode,\n                onClose: (selected_dates, date_string, instance) => this._on_close(selected_dates, date_string, instance),\n            };\n            const { min_date, max_date, disabled_dates, enabled_dates } = this.model;\n            if (min_date != null)\n                options.minDate = min_date;\n            if (max_date != null)\n                options.maxDate = max_date;\n            if (disabled_dates != null)\n                options.disable = _convert_date_list(disabled_dates);\n            if (enabled_dates != null)\n                options.enable = _convert_date_list(enabled_dates);\n            this._picker = (0, flatpickr_1.default)(this.input_el, options);\n            this._picker.maxDateHasTime = true;\n            this._picker.minDateHasTime = true;\n        }\n        _clear() {\n            var _b;\n            (_b = this._picker) === null || _b === void 0 ? void 0 : _b.clear();\n            this.model.value = null;\n        }\n        _on_close(_selected_dates, date_string, _instance) {\n            if (this.model.mode == \"range\" && !date_string.includes(\"to\"))\n                return;\n            this.model.value = date_string;\n            this.change_input();\n        }\n        _position(self, custom_el) {\n            // This function is copied directly from bokehs date_picker\n            const positionElement = custom_el !== null && custom_el !== void 0 ? custom_el : self._positionElement;\n            const calendarHeight = [...self.calendarContainer.children].reduce((acc, child) => acc + (0, dom_1.bounding_box)(child).height, 0);\n            const calendarWidth = self.calendarContainer.offsetWidth;\n            const configPos = this.model.position.split(\" \");\n            const configPosVertical = configPos[0];\n            const configPosHorizontal = configPos.length > 1 ? configPos[1] : null;\n            // const inputBounds = positionElement.getBoundingClientRect()\n            const inputBounds = {\n                top: positionElement.offsetTop,\n                bottom: positionElement.offsetTop + positionElement.offsetHeight,\n                left: positionElement.offsetLeft,\n                right: positionElement.offsetLeft + positionElement.offsetWidth,\n                width: positionElement.offsetWidth,\n            };\n            const distanceFromBottom = window.innerHeight - inputBounds.bottom;\n            const showOnTop = configPosVertical === \"above\" ||\n                (configPosVertical !== \"below\" &&\n                    distanceFromBottom < calendarHeight &&\n                    inputBounds.top > calendarHeight);\n            // const top =\n            //   window.scrollY +\n            //   inputBounds.top +\n            //   (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2)\n            const top = self.config.appendTo\n                ? inputBounds.top +\n                    (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2)\n                : window.scrollY +\n                    inputBounds.top +\n                    (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n            self.calendarContainer.classList.toggle(\"arrowTop\", !showOnTop);\n            self.calendarContainer.classList.toggle(\"arrowBottom\", showOnTop);\n            if (self.config.inline)\n                return;\n            let left = window.scrollX + inputBounds.left;\n            let isCenter = false;\n            let isRight = false;\n            if (configPosHorizontal === \"center\") {\n                left -= (calendarWidth - inputBounds.width) / 2;\n                isCenter = true;\n            }\n            else if (configPosHorizontal === \"right\") {\n                left -= calendarWidth - inputBounds.width;\n                isRight = true;\n            }\n            self.calendarContainer.classList.toggle(\"arrowLeft\", !isCenter && !isRight);\n            self.calendarContainer.classList.toggle(\"arrowCenter\", isCenter);\n            self.calendarContainer.classList.toggle(\"arrowRight\", isRight);\n            const right = window.document.body.offsetWidth -\n                (window.scrollX + inputBounds.right);\n            const rightMost = left + calendarWidth > window.document.body.offsetWidth;\n            const centerMost = right + calendarWidth > window.document.body.offsetWidth;\n            self.calendarContainer.classList.toggle(\"rightMost\", rightMost);\n            if (self.config.static)\n                return;\n            self.calendarContainer.style.top = `${top}px`;\n            if (!rightMost) {\n                self.calendarContainer.style.left = `${left}px`;\n                self.calendarContainer.style.right = \"auto\";\n            }\n            else if (!centerMost) {\n                self.calendarContainer.style.left = \"auto\";\n                self.calendarContainer.style.right = `${right}px`;\n            }\n            else {\n                const css = this.shadow_el.styleSheets[0];\n                const bodyWidth = window.document.body.offsetWidth;\n                const centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n                const centerBefore = \".flatpickr-calendar.centerMost:before\";\n                const centerAfter = \".flatpickr-calendar.centerMost:after\";\n                const centerIndex = css.cssRules.length;\n                const centerStyle = `{left:${inputBounds.left}px;right:auto;}`;\n                self.calendarContainer.classList.toggle(\"rightMost\", false);\n                self.calendarContainer.classList.toggle(\"centerMost\", true);\n                css.insertRule(`${centerBefore},${centerAfter}${centerStyle}`, centerIndex);\n                self.calendarContainer.style.left = `${centerLeft}px`;\n                self.calendarContainer.style.right = \"auto\";\n            }\n        }\n    }\n    exports.DatetimePickerView = DatetimePickerView;\n    DatetimePickerView.__name__ = \"DatetimePickerView\";\n    class DatetimePicker extends input_widget_1.InputWidget {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.DatetimePicker = DatetimePicker;\n    _a = DatetimePicker;\n    DatetimePicker.__name__ = \"DatetimePicker\";\n    DatetimePicker.__module__ = \"panel.models.datetime_picker\";\n    (() => {\n        _a.prototype.default_view = DatetimePickerView;\n        _a.define(({ Boolean, String, Array, Tuple, Or, Nullable }) => {\n            const DateStr = String;\n            const DatesList = Array(Or(DateStr, Tuple(DateStr, DateStr)));\n            return {\n                value: [Nullable(String), null],\n                min_date: [Nullable(String), null],\n                max_date: [Nullable(String), null],\n                disabled_dates: [Nullable(DatesList), null],\n                enabled_dates: [Nullable(DatesList), null],\n                position: [enums_1.CalendarPosition, \"auto\"],\n                inline: [Boolean, false],\n                enable_time: [Boolean, true],\n                enable_seconds: [Boolean, true],\n                military_time: [Boolean, true],\n                date_format: [String, \"Y-m-d H:i:S\"],\n                mode: [String, \"single\"],\n            };\n        });\n    })();\n}\n","min_source":"function _(e,t,i,n,s){n();const o=e(\"tslib\");var l;const a=o.__importDefault(e(\"1156ddcec2\")),r=e(\"@bokehjs/models/widgets/input_widget\"),d=e(\"@bokehjs/core/dom\"),c=e(\"@bokehjs/core/enums\"),h=e(\"@bokehjs/core/util/types\"),u=o.__importStar(e(\"@bokehjs/styles/widgets/inputs.css\")),m=o.__importDefault(e(\"@bokehjs/styles/widgets/flatpickr.css\"));function _(e){const t=[];for(const i of e)if((0,h.isString)(i))t.push(i);else{const[e,n]=i;t.push({from:e,to:n})}return t}class p extends r.InputWidgetView{connect_signals(){super.connect_signals();const{value:e,min_date:t,max_date:i,disabled_dates:n,enabled_dates:s,inline:o,enable_time:l,enable_seconds:a,military_time:r,date_format:d,mode:c}=this.model.properties;this.connect(e.change,(()=>{var e;return this.model.value?null===(e=this._picker)||void 0===e?void 0:e.setDate(this.model.value):this._clear()})),this.connect(t.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"minDate\",this.model.min_date)})),this.connect(i.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"maxDate\",this.model.max_date)})),this.connect(n.change,(()=>{var e;const{disabled_dates:t}=this.model;null===(e=this._picker)||void 0===e||e.set(\"disable\",null!=t?_(t):[])})),this.connect(s.change,(()=>{var e;const{enabled_dates:t}=this.model;null!=t?null===(e=this._picker)||void 0===e||e.set(\"enable\",_(t)):this._picker&&(this._picker.config._enable=void 0,this._picker.redraw(),this._picker.updateValue(!0))})),this.connect(o.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"inline\",this.model.inline)})),this.connect(l.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"enableTime\",this.model.enable_time)})),this.connect(a.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"enableSeconds\",this.model.enable_seconds)})),this.connect(r.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"time_24hr\",this.model.military_time)})),this.connect(c.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"mode\",this.model.mode)})),this.connect(d.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"dateFormat\",this.model.date_format)}))}remove(){var e;null===(e=this._picker)||void 0===e||e.destroy(),super.remove()}stylesheets(){return[...super.stylesheets(),m.default]}render(){if(null!=this._picker)return;super.render(),this.input_el=(0,d.input)({type:\"text\",class:u.input,disabled:this.model.disabled}),this.group_el.appendChild(this.input_el);const e={appendTo:this.group_el,positionElement:this.input_el,defaultDate:this.model.value,inline:this.model.inline,position:this._position.bind(this),enableTime:this.model.enable_time,enableSeconds:this.model.enable_seconds,time_24hr:this.model.military_time,dateFormat:this.model.date_format,mode:this.model.mode,onClose:(e,t,i)=>this._on_close(e,t,i)},{min_date:t,max_date:i,disabled_dates:n,enabled_dates:s}=this.model;null!=t&&(e.minDate=t),null!=i&&(e.maxDate=i),null!=n&&(e.disable=_(n)),null!=s&&(e.enable=_(s)),this._picker=(0,a.default)(this.input_el,e),this._picker.maxDateHasTime=!0,this._picker.minDateHasTime=!0}_clear(){var e;null===(e=this._picker)||void 0===e||e.clear(),this.model.value=null}_on_close(e,t,i){(\"range\"!=this.model.mode||t.includes(\"to\"))&&(this.model.value=t,this.change_input())}_position(e,t){const i=null!=t?t:e._positionElement,n=[...e.calendarContainer.children].reduce(((e,t)=>e+(0,d.bounding_box)(t).height),0),s=e.calendarContainer.offsetWidth,o=this.model.position.split(\" \"),l=o[0],a=o.length>1?o[1]:null,r=i.offsetTop,c=i.offsetTop+i.offsetHeight,h=i.offsetLeft,u=i.offsetLeft+i.offsetWidth,m=i.offsetWidth,_=window.innerHeight-c,p=\"above\"===l||\"below\"!==l&&_<n&&r>n,f=e.config.appendTo?r+(p?-n-2:i.offsetHeight+2):window.scrollY+r+(p?-n-2:i.offsetHeight+2);if(e.calendarContainer.classList.toggle(\"arrowTop\",!p),e.calendarContainer.classList.toggle(\"arrowBottom\",p),e.config.inline)return;let g=window.scrollX+h,v=!1,b=!1;\"center\"===a?(g-=(s-m)/2,v=!0):\"right\"===a&&(g-=s-m,b=!0),e.calendarContainer.classList.toggle(\"arrowLeft\",!v&&!b),e.calendarContainer.classList.toggle(\"arrowCenter\",v),e.calendarContainer.classList.toggle(\"arrowRight\",b);const k=window.document.body.offsetWidth-(window.scrollX+u),w=g+s>window.document.body.offsetWidth,y=k+s>window.document.body.offsetWidth;if(e.calendarContainer.classList.toggle(\"rightMost\",w),!e.config.static)if(e.calendarContainer.style.top=`${f}px`,w)if(y){const t=this.shadow_el.styleSheets[0],i=window.document.body.offsetWidth,n=Math.max(0,i/2-s/2),o=\".flatpickr-calendar.centerMost:before\",l=\".flatpickr-calendar.centerMost:after\",a=t.cssRules.length,r=`{left:${h}px;right:auto;}`;e.calendarContainer.classList.toggle(\"rightMost\",!1),e.calendarContainer.classList.toggle(\"centerMost\",!0),t.insertRule(`${o},${l}${r}`,a),e.calendarContainer.style.left=`${n}px`,e.calendarContainer.style.right=\"auto\"}else e.calendarContainer.style.left=\"auto\",e.calendarContainer.style.right=`${k}px`;else e.calendarContainer.style.left=`${g}px`,e.calendarContainer.style.right=\"auto\"}}i.DatetimePickerView=p,p.__name__=\"DatetimePickerView\";class f extends r.InputWidget{constructor(e){super(e)}}i.DatetimePicker=f,l=f,f.__name__=\"DatetimePicker\",f.__module__=\"panel.models.datetime_picker\",l.prototype.default_view=p,l.define((({Boolean:e,String:t,Array:i,Tuple:n,Or:s,Nullable:o})=>{const l=i(s(t,n(t,t)));return{value:[o(t),null],min_date:[o(t),null],max_date:[o(t),null],disabled_dates:[o(l),null],enabled_dates:[o(l),null],position:[c.CalendarPosition,\"auto\"],inline:[e,!1],enable_time:[e,!0],enable_seconds:[e,!0],military_time:[e,!0],date_format:[t,\"Y-m-d H:i:S\"],mode:[t,\"single\"]}}))}\n//# sourceMappingURL=datetime_picker.min.js.map","min_map":"{\"version\":3,\"file\":\"datetime_picker.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"tslib_1\",\"_a\",\"flatpickr_1\",\"__importDefault\",\"input_widget_1\",\"dom_1\",\"enums_1\",\"types_1\",\"inputs\",\"__importStar\",\"flatpickr_css_1\",\"_convert_date_list\",\"value\",\"result\",\"item\",\"isString\",\"push\",\"from\",\"to\",\"DatetimePickerView\",\"InputWidgetView\",\"connect_signals\",\"super\",\"min_date\",\"max_date\",\"disabled_dates\",\"enabled_dates\",\"inline\",\"enable_time\",\"enable_seconds\",\"military_time\",\"date_format\",\"mode\",\"this\",\"model\",\"properties\",\"connect\",\"change\",\"_b\",\"_picker\",\"setDate\",\"_clear\",\"set\",\"config\",\"_enable\",\"undefined\",\"redraw\",\"updateValue\",\"remove\",\"destroy\",\"stylesheets\",\"default\",\"render\",\"input_el\",\"input\",\"type\",\"class\",\"disabled\",\"group_el\",\"appendChild\",\"options\",\"appendTo\",\"positionElement\",\"defaultDate\",\"position\",\"_position\",\"bind\",\"enableTime\",\"enableSeconds\",\"time_24hr\",\"dateFormat\",\"onClose\",\"selected_dates\",\"date_string\",\"instance\",\"_on_close\",\"minDate\",\"maxDate\",\"disable\",\"enable\",\"maxDateHasTime\",\"minDateHasTime\",\"clear\",\"_selected_dates\",\"_instance\",\"includes\",\"change_input\",\"self\",\"custom_el\",\"_positionElement\",\"calendarHeight\",\"calendarContainer\",\"children\",\"reduce\",\"acc\",\"child\",\"bounding_box\",\"height\",\"calendarWidth\",\"offsetWidth\",\"configPos\",\"split\",\"configPosVertical\",\"configPosHorizontal\",\"length\",\"inputBounds\",\"offsetTop\",\"offsetHeight\",\"offsetLeft\",\"distanceFromBottom\",\"window\",\"innerHeight\",\"showOnTop\",\"top\",\"scrollY\",\"classList\",\"toggle\",\"left\",\"scrollX\",\"isCenter\",\"isRight\",\"right\",\"document\",\"body\",\"rightMost\",\"centerMost\",\"static\",\"style\",\"css\",\"shadow_el\",\"styleSheets\",\"bodyWidth\",\"centerLeft\",\"Math\",\"max\",\"centerBefore\",\"centerAfter\",\"centerIndex\",\"cssRules\",\"centerStyle\",\"insertRule\",\"__name__\",\"DatetimePicker\",\"InputWidget\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Boolean\",\"String\",\"Array\",\"Tuple\",\"Or\",\"Nullable\",\"DatesList\",\"CalendarPosition\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/index.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"flatpickr/dist/esm/index.js","resolution":"ESM","id":"1156ddcec2","hash":"1156ddcec24869abbd5f6a7a610a7d5f9eee9530aff6630d4d679c9487ff8382","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\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)\n                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 __spreadArrays = (this && this.__spreadArrays) || function () {\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++)\n        s += arguments[i].length;\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n            r[k] = a[j];\n    return r;\n};\nconst options_1 = require(\"./types/options\");\nconst default_1 = tslib_1.__importDefault(require(\"./l10n/default\"));\nconst utils_1 = require(\"./utils\");\nconst dom_1 = require(\"./utils/dom\");\nconst dates_1 = require(\"./utils/dates\");\nconst formatting_1 = require(\"./utils/formatting\");\nrequire(\"./utils/polyfills\");\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n    var self = {\n        config: __assign(__assign({}, options_1.defaults), flatpickr.defaultConfig),\n        l10n: default_1.default,\n    };\n    self.parseDate = (0, dates_1.createDateParser)({ config: self.config, l10n: self.l10n });\n    self._handlers = [];\n    self.pluginElements = [];\n    self.loadedPlugins = [];\n    self._bind = bind;\n    self._setHoursFromDate = setHoursFromDate;\n    self._positionCalendar = positionCalendar;\n    self.changeMonth = changeMonth;\n    self.changeYear = changeYear;\n    self.clear = clear;\n    self.close = close;\n    self.onMouseOver = onMouseOver;\n    self._createElement = dom_1.createElement;\n    self.createDay = createDay;\n    self.destroy = destroy;\n    self.isEnabled = isEnabled;\n    self.jumpToDate = jumpToDate;\n    self.updateValue = updateValue;\n    self.open = open;\n    self.redraw = redraw;\n    self.set = set;\n    self.setDate = setDate;\n    self.toggle = toggle;\n    function setupHelperFunctions() {\n        self.utils = {\n            getDaysInMonth: function (month, yr) {\n                if (month === void 0) {\n                    month = self.currentMonth;\n                }\n                if (yr === void 0) {\n                    yr = self.currentYear;\n                }\n                if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n                    return 29;\n                return self.l10n.daysInMonth[month];\n            },\n        };\n    }\n    function init() {\n        self.element = self.input = element;\n        self.isOpen = false;\n        parseConfig();\n        setupLocale();\n        setupInputs();\n        setupDates();\n        setupHelperFunctions();\n        if (!self.isMobile)\n            build();\n        bindEvents();\n        if (self.selectedDates.length || self.config.noCalendar) {\n            if (self.config.enableTime) {\n                setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n            }\n            updateValue(false);\n        }\n        setCalendarWidth();\n        var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n        if (!self.isMobile && isSafari) {\n            positionCalendar();\n        }\n        triggerEvent(\"onReady\");\n    }\n    function getClosestActiveElement() {\n        var _a;\n        return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n            .activeElement || document.activeElement);\n    }\n    function bindToInstance(fn) {\n        return fn.bind(self);\n    }\n    function setCalendarWidth() {\n        var config = self.config;\n        if (config.weekNumbers === false && config.showMonths === 1) {\n            return;\n        }\n        else if (config.noCalendar !== true) {\n            window.requestAnimationFrame(function () {\n                if (self.calendarContainer !== undefined) {\n                    self.calendarContainer.style.visibility = \"hidden\";\n                    self.calendarContainer.style.display = \"block\";\n                }\n                if (self.daysContainer !== undefined) {\n                    var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n                    self.daysContainer.style.width = daysWidth + \"px\";\n                    self.calendarContainer.style.width =\n                        daysWidth +\n                            (self.weekWrapper !== undefined\n                                ? self.weekWrapper.offsetWidth\n                                : 0) +\n                            \"px\";\n                    self.calendarContainer.style.removeProperty(\"visibility\");\n                    self.calendarContainer.style.removeProperty(\"display\");\n                }\n            });\n        }\n    }\n    function updateTime(e) {\n        if (self.selectedDates.length === 0) {\n            var defaultDate = self.config.minDate === undefined ||\n                (0, dates_1.compareDates)(new Date(), self.config.minDate) >= 0\n                ? new Date()\n                : new Date(self.config.minDate.getTime());\n            var defaults = (0, dates_1.getDefaultHours)(self.config);\n            defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n            self.selectedDates = [defaultDate];\n            self.latestSelectedDateObj = defaultDate;\n        }\n        if (e !== undefined && e.type !== \"blur\") {\n            timeWrapper(e);\n        }\n        var prevValue = self._input.value;\n        setHoursFromInputs();\n        updateValue();\n        if (self._input.value !== prevValue) {\n            self._debouncedChange();\n        }\n    }\n    function ampm2military(hour, amPM) {\n        return (hour % 12) + 12 * (0, utils_1.int)(amPM === self.l10n.amPM[1]);\n    }\n    function military2ampm(hour) {\n        switch (hour % 24) {\n            case 0:\n            case 12:\n                return 12;\n            default:\n                return hour % 12;\n        }\n    }\n    function setHoursFromInputs() {\n        if (self.hourElement === undefined || self.minuteElement === undefined)\n            return;\n        var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n            ? (parseInt(self.secondElement.value, 10) || 0) % 60\n            : 0;\n        if (self.amPM !== undefined) {\n            hours = ampm2military(hours, self.amPM.textContent);\n        }\n        var limitMinHours = self.config.minTime !== undefined ||\n            (self.config.minDate &&\n                self.minDateHasTime &&\n                self.latestSelectedDateObj &&\n                (0, dates_1.compareDates)(self.latestSelectedDateObj, self.config.minDate, true) ===\n                    0);\n        var limitMaxHours = self.config.maxTime !== undefined ||\n            (self.config.maxDate &&\n                self.maxDateHasTime &&\n                self.latestSelectedDateObj &&\n                (0, dates_1.compareDates)(self.latestSelectedDateObj, self.config.maxDate, true) ===\n                    0);\n        if (self.config.maxTime !== undefined &&\n            self.config.minTime !== undefined &&\n            self.config.minTime > self.config.maxTime) {\n            var minBound = (0, dates_1.calculateSecondsSinceMidnight)(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n            var maxBound = (0, dates_1.calculateSecondsSinceMidnight)(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n            var currentTime = (0, dates_1.calculateSecondsSinceMidnight)(hours, minutes, seconds);\n            if (currentTime > maxBound && currentTime < minBound) {\n                var result = (0, dates_1.parseSeconds)(minBound);\n                hours = result[0];\n                minutes = result[1];\n                seconds = result[2];\n            }\n        }\n        else {\n            if (limitMaxHours) {\n                var maxTime = self.config.maxTime !== undefined\n                    ? self.config.maxTime\n                    : self.config.maxDate;\n                hours = Math.min(hours, maxTime.getHours());\n                if (hours === maxTime.getHours())\n                    minutes = Math.min(minutes, maxTime.getMinutes());\n                if (minutes === maxTime.getMinutes())\n                    seconds = Math.min(seconds, maxTime.getSeconds());\n            }\n            if (limitMinHours) {\n                var minTime = self.config.minTime !== undefined\n                    ? self.config.minTime\n                    : self.config.minDate;\n                hours = Math.max(hours, minTime.getHours());\n                if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n                    minutes = minTime.getMinutes();\n                if (minutes === minTime.getMinutes())\n                    seconds = Math.max(seconds, minTime.getSeconds());\n            }\n        }\n        setHours(hours, minutes, seconds);\n    }\n    function setHoursFromDate(dateObj) {\n        var date = dateObj || self.latestSelectedDateObj;\n        if (date && date instanceof Date) {\n            setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n        }\n    }\n    function setHours(hours, minutes, seconds) {\n        if (self.latestSelectedDateObj !== undefined) {\n            self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n        }\n        if (!self.hourElement || !self.minuteElement || self.isMobile)\n            return;\n        self.hourElement.value = (0, utils_1.pad)(!self.config.time_24hr\n            ? ((12 + hours) % 12) + 12 * (0, utils_1.int)(hours % 12 === 0)\n            : hours);\n        self.minuteElement.value = (0, utils_1.pad)(minutes);\n        if (self.amPM !== undefined)\n            self.amPM.textContent = self.l10n.amPM[(0, utils_1.int)(hours >= 12)];\n        if (self.secondElement !== undefined)\n            self.secondElement.value = (0, utils_1.pad)(seconds);\n    }\n    function onYearInput(event) {\n        var eventTarget = (0, dom_1.getEventTarget)(event);\n        var year = parseInt(eventTarget.value) + (event.delta || 0);\n        if (year / 1000 > 1 ||\n            (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n            changeYear(year);\n        }\n    }\n    function bind(element, event, handler, options) {\n        if (event instanceof Array)\n            return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n        if (element instanceof Array)\n            return element.forEach(function (el) { return bind(el, event, handler, options); });\n        element.addEventListener(event, handler, options);\n        self._handlers.push({\n            remove: function () { return element.removeEventListener(event, handler, options); },\n        });\n    }\n    function triggerChange() {\n        triggerEvent(\"onChange\");\n    }\n    function bindEvents() {\n        if (self.config.wrap) {\n            [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n                Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n                    return bind(el, \"click\", self[evt]);\n                });\n            });\n        }\n        if (self.isMobile) {\n            setupMobile();\n            return;\n        }\n        var debouncedResize = (0, utils_1.debounce)(onResize, 50);\n        self._debouncedChange = (0, utils_1.debounce)(triggerChange, DEBOUNCED_CHANGE_MS);\n        if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n            bind(self.daysContainer, \"mouseover\", function (e) {\n                if (self.config.mode === \"range\")\n                    onMouseOver((0, dom_1.getEventTarget)(e));\n            });\n        bind(self._input, \"keydown\", onKeyDown);\n        if (self.calendarContainer !== undefined) {\n            bind(self.calendarContainer, \"keydown\", onKeyDown);\n        }\n        if (!self.config.inline && !self.config.static)\n            bind(window, \"resize\", debouncedResize);\n        if (window.ontouchstart !== undefined)\n            bind(window.document, \"touchstart\", documentClick);\n        else\n            bind(window.document, \"mousedown\", documentClick);\n        bind(window.document, \"focus\", documentClick, { capture: true });\n        if (self.config.clickOpens === true) {\n            bind(self._input, \"focus\", self.open);\n            bind(self._input, \"click\", self.open);\n        }\n        if (self.daysContainer !== undefined) {\n            bind(self.monthNav, \"click\", onMonthNavClick);\n            bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n            bind(self.daysContainer, \"click\", selectDate);\n        }\n        if (self.timeContainer !== undefined &&\n            self.minuteElement !== undefined &&\n            self.hourElement !== undefined) {\n            var selText = function (e) {\n                return (0, dom_1.getEventTarget)(e).select();\n            };\n            bind(self.timeContainer, [\"increment\"], updateTime);\n            bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n            bind(self.timeContainer, \"click\", timeIncrement);\n            bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n            if (self.secondElement !== undefined)\n                bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n            if (self.amPM !== undefined) {\n                bind(self.amPM, \"click\", function (e) {\n                    updateTime(e);\n                });\n            }\n        }\n        if (self.config.allowInput) {\n            bind(self._input, \"blur\", onBlur);\n        }\n    }\n    function jumpToDate(jumpDate, triggerChange) {\n        var jumpTo = jumpDate !== undefined\n            ? self.parseDate(jumpDate)\n            : self.latestSelectedDateObj ||\n                (self.config.minDate && self.config.minDate > self.now\n                    ? self.config.minDate\n                    : self.config.maxDate && self.config.maxDate < self.now\n                        ? self.config.maxDate\n                        : self.now);\n        var oldYear = self.currentYear;\n        var oldMonth = self.currentMonth;\n        try {\n            if (jumpTo !== undefined) {\n                self.currentYear = jumpTo.getFullYear();\n                self.currentMonth = jumpTo.getMonth();\n            }\n        }\n        catch (e) {\n            e.message = \"Invalid date supplied: \" + jumpTo;\n            self.config.errorHandler(e);\n        }\n        if (triggerChange && self.currentYear !== oldYear) {\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n        if (triggerChange &&\n            (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n            triggerEvent(\"onMonthChange\");\n        }\n        self.redraw();\n    }\n    function timeIncrement(e) {\n        var eventTarget = (0, dom_1.getEventTarget)(e);\n        if (~eventTarget.className.indexOf(\"arrow\"))\n            incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n    }\n    function incrementNumInput(e, delta, inputElem) {\n        var target = e && (0, dom_1.getEventTarget)(e);\n        var input = inputElem ||\n            (target && target.parentNode && target.parentNode.firstChild);\n        var event = createEvent(\"increment\");\n        event.delta = delta;\n        input && input.dispatchEvent(event);\n    }\n    function build() {\n        var fragment = window.document.createDocumentFragment();\n        self.calendarContainer = (0, dom_1.createElement)(\"div\", \"flatpickr-calendar\");\n        self.calendarContainer.tabIndex = -1;\n        if (!self.config.noCalendar) {\n            fragment.appendChild(buildMonthNav());\n            self.innerContainer = (0, dom_1.createElement)(\"div\", \"flatpickr-innerContainer\");\n            if (self.config.weekNumbers) {\n                var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n                self.innerContainer.appendChild(weekWrapper);\n                self.weekNumbers = weekNumbers;\n                self.weekWrapper = weekWrapper;\n            }\n            self.rContainer = (0, dom_1.createElement)(\"div\", \"flatpickr-rContainer\");\n            self.rContainer.appendChild(buildWeekdays());\n            if (!self.daysContainer) {\n                self.daysContainer = (0, dom_1.createElement)(\"div\", \"flatpickr-days\");\n                self.daysContainer.tabIndex = -1;\n            }\n            buildDays();\n            self.rContainer.appendChild(self.daysContainer);\n            self.innerContainer.appendChild(self.rContainer);\n            fragment.appendChild(self.innerContainer);\n        }\n        if (self.config.enableTime) {\n            fragment.appendChild(buildTime());\n        }\n        (0, dom_1.toggleClass)(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n        (0, dom_1.toggleClass)(self.calendarContainer, \"animate\", self.config.animate === true);\n        (0, dom_1.toggleClass)(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n        self.calendarContainer.appendChild(fragment);\n        var customAppend = self.config.appendTo !== undefined &&\n            self.config.appendTo.nodeType !== undefined;\n        if (self.config.inline || self.config.static) {\n            self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n            if (self.config.inline) {\n                if (!customAppend && self.element.parentNode)\n                    self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n                else if (self.config.appendTo !== undefined)\n                    self.config.appendTo.appendChild(self.calendarContainer);\n            }\n            if (self.config.static) {\n                var wrapper = (0, dom_1.createElement)(\"div\", \"flatpickr-wrapper\");\n                if (self.element.parentNode)\n                    self.element.parentNode.insertBefore(wrapper, self.element);\n                wrapper.appendChild(self.element);\n                if (self.altInput)\n                    wrapper.appendChild(self.altInput);\n                wrapper.appendChild(self.calendarContainer);\n            }\n        }\n        if (!self.config.static && !self.config.inline)\n            (self.config.appendTo !== undefined\n                ? self.config.appendTo\n                : window.document.body).appendChild(self.calendarContainer);\n    }\n    function createDay(className, date, _dayNumber, i) {\n        var dateIsEnabled = isEnabled(date, true), dayElement = (0, dom_1.createElement)(\"span\", className, date.getDate().toString());\n        dayElement.dateObj = date;\n        dayElement.$i = i;\n        dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n        if (className.indexOf(\"hidden\") === -1 &&\n            (0, dates_1.compareDates)(date, self.now) === 0) {\n            self.todayDateElem = dayElement;\n            dayElement.classList.add(\"today\");\n            dayElement.setAttribute(\"aria-current\", \"date\");\n        }\n        if (dateIsEnabled) {\n            dayElement.tabIndex = -1;\n            if (isDateSelected(date)) {\n                dayElement.classList.add(\"selected\");\n                self.selectedDateElem = dayElement;\n                if (self.config.mode === \"range\") {\n                    (0, dom_1.toggleClass)(dayElement, \"startRange\", self.selectedDates[0] &&\n                        (0, dates_1.compareDates)(date, self.selectedDates[0], true) === 0);\n                    (0, dom_1.toggleClass)(dayElement, \"endRange\", self.selectedDates[1] &&\n                        (0, dates_1.compareDates)(date, self.selectedDates[1], true) === 0);\n                    if (className === \"nextMonthDay\")\n                        dayElement.classList.add(\"inRange\");\n                }\n            }\n        }\n        else {\n            dayElement.classList.add(\"flatpickr-disabled\");\n        }\n        if (self.config.mode === \"range\") {\n            if (isDateInRange(date) && !isDateSelected(date))\n                dayElement.classList.add(\"inRange\");\n        }\n        if (self.weekNumbers &&\n            self.config.showMonths === 1 &&\n            className !== \"prevMonthDay\" &&\n            i % 7 === 6) {\n            self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n        }\n        triggerEvent(\"onDayCreate\", dayElement);\n        return dayElement;\n    }\n    function focusOnDayElem(targetNode) {\n        targetNode.focus();\n        if (self.config.mode === \"range\")\n            onMouseOver(targetNode);\n    }\n    function getFirstAvailableDay(delta) {\n        var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n        var endMonth = delta > 0 ? self.config.showMonths : -1;\n        for (var m = startMonth; m != endMonth; m += delta) {\n            var month = self.daysContainer.children[m];\n            var startIndex = delta > 0 ? 0 : month.children.length - 1;\n            var endIndex = delta > 0 ? month.children.length : -1;\n            for (var i = startIndex; i != endIndex; i += delta) {\n                var c = month.children[i];\n                if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n                    return c;\n            }\n        }\n        return undefined;\n    }\n    function getNextAvailableDay(current, delta) {\n        var givenMonth = current.className.indexOf(\"Month\") === -1\n            ? current.dateObj.getMonth()\n            : self.currentMonth;\n        var endMonth = delta > 0 ? self.config.showMonths : -1;\n        var loopDelta = delta > 0 ? 1 : -1;\n        for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n            var month = self.daysContainer.children[m];\n            var startIndex = givenMonth - self.currentMonth === m\n                ? current.$i + delta\n                : delta < 0\n                    ? month.children.length - 1\n                    : 0;\n            var numMonthDays = month.children.length;\n            for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n                var c = month.children[i];\n                if (c.className.indexOf(\"hidden\") === -1 &&\n                    isEnabled(c.dateObj) &&\n                    Math.abs(current.$i - i) >= Math.abs(delta))\n                    return focusOnDayElem(c);\n            }\n        }\n        self.changeMonth(loopDelta);\n        focusOnDay(getFirstAvailableDay(loopDelta), 0);\n        return undefined;\n    }\n    function focusOnDay(current, offset) {\n        var activeElement = getClosestActiveElement();\n        var dayFocused = isInView(activeElement || document.body);\n        var startElem = current !== undefined\n            ? current\n            : dayFocused\n                ? activeElement\n                : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n                    ? self.selectedDateElem\n                    : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n                        ? self.todayDateElem\n                        : getFirstAvailableDay(offset > 0 ? 1 : -1);\n        if (startElem === undefined) {\n            self._input.focus();\n        }\n        else if (!dayFocused) {\n            focusOnDayElem(startElem);\n        }\n        else {\n            getNextAvailableDay(startElem, offset);\n        }\n    }\n    function buildMonthDays(year, month) {\n        var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n        var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n        var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n        var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n        for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n        }\n        for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n        }\n        for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n            (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n        }\n        var dayContainer = (0, dom_1.createElement)(\"div\", \"dayContainer\");\n        dayContainer.appendChild(days);\n        return dayContainer;\n    }\n    function buildDays() {\n        if (self.daysContainer === undefined) {\n            return;\n        }\n        (0, dom_1.clearNode)(self.daysContainer);\n        if (self.weekNumbers)\n            (0, dom_1.clearNode)(self.weekNumbers);\n        var frag = document.createDocumentFragment();\n        for (var i = 0; i < self.config.showMonths; i++) {\n            var d = new Date(self.currentYear, self.currentMonth, 1);\n            d.setMonth(self.currentMonth + i);\n            frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n        }\n        self.daysContainer.appendChild(frag);\n        self.days = self.daysContainer.firstChild;\n        if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n            onMouseOver();\n        }\n    }\n    function buildMonthSwitch() {\n        if (self.config.showMonths > 1 ||\n            self.config.monthSelectorType !== \"dropdown\")\n            return;\n        var shouldBuildMonth = function (month) {\n            if (self.config.minDate !== undefined &&\n                self.currentYear === self.config.minDate.getFullYear() &&\n                month < self.config.minDate.getMonth()) {\n                return false;\n            }\n            return !(self.config.maxDate !== undefined &&\n                self.currentYear === self.config.maxDate.getFullYear() &&\n                month > self.config.maxDate.getMonth());\n        };\n        self.monthsDropdownContainer.tabIndex = -1;\n        self.monthsDropdownContainer.innerHTML = \"\";\n        for (var i = 0; i < 12; i++) {\n            if (!shouldBuildMonth(i))\n                continue;\n            var month = (0, dom_1.createElement)(\"option\", \"flatpickr-monthDropdown-month\");\n            month.value = new Date(self.currentYear, i).getMonth().toString();\n            month.textContent = (0, formatting_1.monthToStr)(i, self.config.shorthandCurrentMonth, self.l10n);\n            month.tabIndex = -1;\n            if (self.currentMonth === i) {\n                month.selected = true;\n            }\n            self.monthsDropdownContainer.appendChild(month);\n        }\n    }\n    function buildMonth() {\n        var container = (0, dom_1.createElement)(\"div\", \"flatpickr-month\");\n        var monthNavFragment = window.document.createDocumentFragment();\n        var monthElement;\n        if (self.config.showMonths > 1 ||\n            self.config.monthSelectorType === \"static\") {\n            monthElement = (0, dom_1.createElement)(\"span\", \"cur-month\");\n        }\n        else {\n            self.monthsDropdownContainer = (0, dom_1.createElement)(\"select\", \"flatpickr-monthDropdown-months\");\n            self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n            bind(self.monthsDropdownContainer, \"change\", function (e) {\n                var target = (0, dom_1.getEventTarget)(e);\n                var selectedMonth = parseInt(target.value, 10);\n                self.changeMonth(selectedMonth - self.currentMonth);\n                triggerEvent(\"onMonthChange\");\n            });\n            buildMonthSwitch();\n            monthElement = self.monthsDropdownContainer;\n        }\n        var yearInput = (0, dom_1.createNumberInput)(\"cur-year\", { tabindex: \"-1\" });\n        var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n        yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n        if (self.config.minDate) {\n            yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n        }\n        if (self.config.maxDate) {\n            yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n            yearElement.disabled =\n                !!self.config.minDate &&\n                    self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n        }\n        var currentMonth = (0, dom_1.createElement)(\"div\", \"flatpickr-current-month\");\n        currentMonth.appendChild(monthElement);\n        currentMonth.appendChild(yearInput);\n        monthNavFragment.appendChild(currentMonth);\n        container.appendChild(monthNavFragment);\n        return {\n            container: container,\n            yearElement: yearElement,\n            monthElement: monthElement,\n        };\n    }\n    function buildMonths() {\n        (0, dom_1.clearNode)(self.monthNav);\n        self.monthNav.appendChild(self.prevMonthNav);\n        if (self.config.showMonths) {\n            self.yearElements = [];\n            self.monthElements = [];\n        }\n        for (var m = self.config.showMonths; m--;) {\n            var month = buildMonth();\n            self.yearElements.push(month.yearElement);\n            self.monthElements.push(month.monthElement);\n            self.monthNav.appendChild(month.container);\n        }\n        self.monthNav.appendChild(self.nextMonthNav);\n    }\n    function buildMonthNav() {\n        self.monthNav = (0, dom_1.createElement)(\"div\", \"flatpickr-months\");\n        self.yearElements = [];\n        self.monthElements = [];\n        self.prevMonthNav = (0, dom_1.createElement)(\"span\", \"flatpickr-prev-month\");\n        self.prevMonthNav.innerHTML = self.config.prevArrow;\n        self.nextMonthNav = (0, dom_1.createElement)(\"span\", \"flatpickr-next-month\");\n        self.nextMonthNav.innerHTML = self.config.nextArrow;\n        buildMonths();\n        Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n            get: function () { return self.__hidePrevMonthArrow; },\n            set: function (bool) {\n                if (self.__hidePrevMonthArrow !== bool) {\n                    (0, dom_1.toggleClass)(self.prevMonthNav, \"flatpickr-disabled\", bool);\n                    self.__hidePrevMonthArrow = bool;\n                }\n            },\n        });\n        Object.defineProperty(self, \"_hideNextMonthArrow\", {\n            get: function () { return self.__hideNextMonthArrow; },\n            set: function (bool) {\n                if (self.__hideNextMonthArrow !== bool) {\n                    (0, dom_1.toggleClass)(self.nextMonthNav, \"flatpickr-disabled\", bool);\n                    self.__hideNextMonthArrow = bool;\n                }\n            },\n        });\n        self.currentYearElement = self.yearElements[0];\n        updateNavigationCurrentMonth();\n        return self.monthNav;\n    }\n    function buildTime() {\n        self.calendarContainer.classList.add(\"hasTime\");\n        if (self.config.noCalendar)\n            self.calendarContainer.classList.add(\"noCalendar\");\n        var defaults = (0, dates_1.getDefaultHours)(self.config);\n        self.timeContainer = (0, dom_1.createElement)(\"div\", \"flatpickr-time\");\n        self.timeContainer.tabIndex = -1;\n        var separator = (0, dom_1.createElement)(\"span\", \"flatpickr-time-separator\", \":\");\n        var hourInput = (0, dom_1.createNumberInput)(\"flatpickr-hour\", {\n            \"aria-label\": self.l10n.hourAriaLabel,\n        });\n        self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n        var minuteInput = (0, dom_1.createNumberInput)(\"flatpickr-minute\", {\n            \"aria-label\": self.l10n.minuteAriaLabel,\n        });\n        self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n        self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n        self.hourElement.value = (0, utils_1.pad)(self.latestSelectedDateObj\n            ? self.latestSelectedDateObj.getHours()\n            : self.config.time_24hr\n                ? defaults.hours\n                : military2ampm(defaults.hours));\n        self.minuteElement.value = (0, utils_1.pad)(self.latestSelectedDateObj\n            ? self.latestSelectedDateObj.getMinutes()\n            : defaults.minutes);\n        self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n        self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n        self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n        self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n        self.hourElement.setAttribute(\"maxlength\", \"2\");\n        self.minuteElement.setAttribute(\"min\", \"0\");\n        self.minuteElement.setAttribute(\"max\", \"59\");\n        self.minuteElement.setAttribute(\"maxlength\", \"2\");\n        self.timeContainer.appendChild(hourInput);\n        self.timeContainer.appendChild(separator);\n        self.timeContainer.appendChild(minuteInput);\n        if (self.config.time_24hr)\n            self.timeContainer.classList.add(\"time24hr\");\n        if (self.config.enableSeconds) {\n            self.timeContainer.classList.add(\"hasSeconds\");\n            var secondInput = (0, dom_1.createNumberInput)(\"flatpickr-second\");\n            self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n            self.secondElement.value = (0, utils_1.pad)(self.latestSelectedDateObj\n                ? self.latestSelectedDateObj.getSeconds()\n                : defaults.seconds);\n            self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n            self.secondElement.setAttribute(\"min\", \"0\");\n            self.secondElement.setAttribute(\"max\", \"59\");\n            self.secondElement.setAttribute(\"maxlength\", \"2\");\n            self.timeContainer.appendChild((0, dom_1.createElement)(\"span\", \"flatpickr-time-separator\", \":\"));\n            self.timeContainer.appendChild(secondInput);\n        }\n        if (!self.config.time_24hr) {\n            self.amPM = (0, dom_1.createElement)(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[(0, utils_1.int)((self.latestSelectedDateObj\n                ? self.hourElement.value\n                : self.config.defaultHour) > 11)]);\n            self.amPM.title = self.l10n.toggleTitle;\n            self.amPM.tabIndex = -1;\n            self.timeContainer.appendChild(self.amPM);\n        }\n        return self.timeContainer;\n    }\n    function buildWeekdays() {\n        if (!self.weekdayContainer)\n            self.weekdayContainer = (0, dom_1.createElement)(\"div\", \"flatpickr-weekdays\");\n        else\n            (0, dom_1.clearNode)(self.weekdayContainer);\n        for (var i = self.config.showMonths; i--;) {\n            var container = (0, dom_1.createElement)(\"div\", \"flatpickr-weekdaycontainer\");\n            self.weekdayContainer.appendChild(container);\n        }\n        updateWeekdays();\n        return self.weekdayContainer;\n    }\n    function updateWeekdays() {\n        if (!self.weekdayContainer) {\n            return;\n        }\n        var firstDayOfWeek = self.l10n.firstDayOfWeek;\n        var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n        if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n            weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n        }\n        for (var i = self.config.showMonths; i--;) {\n            self.weekdayContainer.children[i].innerHTML = \"\\n      <span class='flatpickr-weekday'>\\n        \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n      </span>\\n      \";\n        }\n    }\n    function buildWeeks() {\n        self.calendarContainer.classList.add(\"hasWeeks\");\n        var weekWrapper = (0, dom_1.createElement)(\"div\", \"flatpickr-weekwrapper\");\n        weekWrapper.appendChild((0, dom_1.createElement)(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n        var weekNumbers = (0, dom_1.createElement)(\"div\", \"flatpickr-weeks\");\n        weekWrapper.appendChild(weekNumbers);\n        return {\n            weekWrapper: weekWrapper,\n            weekNumbers: weekNumbers,\n        };\n    }\n    function changeMonth(value, isOffset) {\n        if (isOffset === void 0) {\n            isOffset = true;\n        }\n        var delta = isOffset ? value : value - self.currentMonth;\n        if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n            (delta > 0 && self._hideNextMonthArrow === true))\n            return;\n        self.currentMonth += delta;\n        if (self.currentMonth < 0 || self.currentMonth > 11) {\n            self.currentYear += self.currentMonth > 11 ? 1 : -1;\n            self.currentMonth = (self.currentMonth + 12) % 12;\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n        buildDays();\n        triggerEvent(\"onMonthChange\");\n        updateNavigationCurrentMonth();\n    }\n    function clear(triggerChangeEvent, toInitial) {\n        if (triggerChangeEvent === void 0) {\n            triggerChangeEvent = true;\n        }\n        if (toInitial === void 0) {\n            toInitial = true;\n        }\n        self.input.value = \"\";\n        if (self.altInput !== undefined)\n            self.altInput.value = \"\";\n        if (self.mobileInput !== undefined)\n            self.mobileInput.value = \"\";\n        self.selectedDates = [];\n        self.latestSelectedDateObj = undefined;\n        if (toInitial === true) {\n            self.currentYear = self._initialDate.getFullYear();\n            self.currentMonth = self._initialDate.getMonth();\n        }\n        if (self.config.enableTime === true) {\n            var _a = (0, dates_1.getDefaultHours)(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n            setHours(hours, minutes, seconds);\n        }\n        self.redraw();\n        if (triggerChangeEvent)\n            triggerEvent(\"onChange\");\n    }\n    function close() {\n        self.isOpen = false;\n        if (!self.isMobile) {\n            if (self.calendarContainer !== undefined) {\n                self.calendarContainer.classList.remove(\"open\");\n            }\n            if (self._input !== undefined) {\n                self._input.classList.remove(\"active\");\n            }\n        }\n        triggerEvent(\"onClose\");\n    }\n    function destroy() {\n        if (self.config !== undefined)\n            triggerEvent(\"onDestroy\");\n        for (var i = self._handlers.length; i--;) {\n            self._handlers[i].remove();\n        }\n        self._handlers = [];\n        if (self.mobileInput) {\n            if (self.mobileInput.parentNode)\n                self.mobileInput.parentNode.removeChild(self.mobileInput);\n            self.mobileInput = undefined;\n        }\n        else if (self.calendarContainer && self.calendarContainer.parentNode) {\n            if (self.config.static && self.calendarContainer.parentNode) {\n                var wrapper = self.calendarContainer.parentNode;\n                wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n                if (wrapper.parentNode) {\n                    while (wrapper.firstChild)\n                        wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n                    wrapper.parentNode.removeChild(wrapper);\n                }\n            }\n            else\n                self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n        }\n        if (self.altInput) {\n            self.input.type = \"text\";\n            if (self.altInput.parentNode)\n                self.altInput.parentNode.removeChild(self.altInput);\n            delete self.altInput;\n        }\n        if (self.input) {\n            self.input.type = self.input._type;\n            self.input.classList.remove(\"flatpickr-input\");\n            self.input.removeAttribute(\"readonly\");\n        }\n        [\n            \"_showTimeInput\",\n            \"latestSelectedDateObj\",\n            \"_hideNextMonthArrow\",\n            \"_hidePrevMonthArrow\",\n            \"__hideNextMonthArrow\",\n            \"__hidePrevMonthArrow\",\n            \"isMobile\",\n            \"isOpen\",\n            \"selectedDateElem\",\n            \"minDateHasTime\",\n            \"maxDateHasTime\",\n            \"days\",\n            \"daysContainer\",\n            \"_input\",\n            \"_positionElement\",\n            \"innerContainer\",\n            \"rContainer\",\n            \"monthNav\",\n            \"todayDateElem\",\n            \"calendarContainer\",\n            \"weekdayContainer\",\n            \"prevMonthNav\",\n            \"nextMonthNav\",\n            \"monthsDropdownContainer\",\n            \"currentMonthElement\",\n            \"currentYearElement\",\n            \"navigationCurrentMonth\",\n            \"selectedDateElem\",\n            \"config\",\n        ].forEach(function (k) {\n            try {\n                delete self[k];\n            }\n            catch (_) { }\n        });\n    }\n    function isCalendarElem(elem) {\n        return self.calendarContainer.contains(elem);\n    }\n    function documentClick(e) {\n        if (self.isOpen && !self.config.inline) {\n            var eventTarget_1 = (0, dom_1.getEventTarget)(e);\n            var isCalendarElement = isCalendarElem(eventTarget_1);\n            var isInput = eventTarget_1 === self.input ||\n                eventTarget_1 === self.altInput ||\n                self.element.contains(eventTarget_1) ||\n                (e.path &&\n                    e.path.indexOf &&\n                    (~e.path.indexOf(self.input) ||\n                        ~e.path.indexOf(self.altInput)));\n            var lostFocus = !isInput &&\n                !isCalendarElement &&\n                !isCalendarElem(e.relatedTarget);\n            var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n                return elem.contains(eventTarget_1);\n            });\n            if (lostFocus && isIgnored) {\n                if (self.config.allowInput) {\n                    self.setDate(self._input.value, false, self.config.altInput\n                        ? self.config.altFormat\n                        : self.config.dateFormat);\n                }\n                if (self.timeContainer !== undefined &&\n                    self.minuteElement !== undefined &&\n                    self.hourElement !== undefined &&\n                    self.input.value !== \"\" &&\n                    self.input.value !== undefined) {\n                    updateTime();\n                }\n                self.close();\n                if (self.config &&\n                    self.config.mode === \"range\" &&\n                    self.selectedDates.length === 1)\n                    self.clear(false);\n            }\n        }\n    }\n    function changeYear(newYear) {\n        if (!newYear ||\n            (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n            (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n            return;\n        var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n        self.currentYear = newYearNum || self.currentYear;\n        if (self.config.maxDate &&\n            self.currentYear === self.config.maxDate.getFullYear()) {\n            self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n        }\n        else if (self.config.minDate &&\n            self.currentYear === self.config.minDate.getFullYear()) {\n            self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n        }\n        if (isNewYear) {\n            self.redraw();\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n    }\n    function isEnabled(date, timeless) {\n        var _a;\n        if (timeless === void 0) {\n            timeless = true;\n        }\n        var dateToCheck = self.parseDate(date, undefined, timeless);\n        if ((self.config.minDate &&\n            dateToCheck &&\n            (0, dates_1.compareDates)(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n            (self.config.maxDate &&\n                dateToCheck &&\n                (0, dates_1.compareDates)(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n            return false;\n        if (!self.config.enable && self.config.disable.length === 0)\n            return true;\n        if (dateToCheck === undefined)\n            return false;\n        var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n        for (var i = 0, d = void 0; i < array.length; i++) {\n            d = array[i];\n            if (typeof d === \"function\" &&\n                d(dateToCheck))\n                return bool;\n            else if (d instanceof Date &&\n                dateToCheck !== undefined &&\n                d.getTime() === dateToCheck.getTime())\n                return bool;\n            else if (typeof d === \"string\") {\n                var parsed = self.parseDate(d, undefined, true);\n                return parsed && parsed.getTime() === dateToCheck.getTime()\n                    ? bool\n                    : !bool;\n            }\n            else if (typeof d === \"object\" &&\n                dateToCheck !== undefined &&\n                d.from &&\n                d.to &&\n                dateToCheck.getTime() >= d.from.getTime() &&\n                dateToCheck.getTime() <= d.to.getTime())\n                return bool;\n        }\n        return !bool;\n    }\n    function isInView(elem) {\n        if (self.daysContainer !== undefined)\n            return (elem.className.indexOf(\"hidden\") === -1 &&\n                elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n                self.daysContainer.contains(elem));\n        return false;\n    }\n    function onBlur(e) {\n        var isInput = e.target === self._input;\n        var valueChanged = self._input.value.trimEnd() !== getDateStr();\n        if (isInput &&\n            valueChanged &&\n            !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n            self.setDate(self._input.value, true, e.target === self.altInput\n                ? self.config.altFormat\n                : self.config.dateFormat);\n        }\n    }\n    function onKeyDown(e) {\n        var eventTarget = (0, dom_1.getEventTarget)(e);\n        var isInput = self.config.wrap\n            ? element.contains(eventTarget)\n            : eventTarget === self._input;\n        var allowInput = self.config.allowInput;\n        var allowKeydown = self.isOpen && (!allowInput || !isInput);\n        var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n        if (e.keyCode === 13 && isInput) {\n            if (allowInput) {\n                self.setDate(self._input.value, true, eventTarget === self.altInput\n                    ? self.config.altFormat\n                    : self.config.dateFormat);\n                self.close();\n                return eventTarget.blur();\n            }\n            else {\n                self.open();\n            }\n        }\n        else if (isCalendarElem(eventTarget) ||\n            allowKeydown ||\n            allowInlineKeydown) {\n            var isTimeObj = !!self.timeContainer &&\n                self.timeContainer.contains(eventTarget);\n            switch (e.keyCode) {\n                case 13:\n                    if (isTimeObj) {\n                        e.preventDefault();\n                        updateTime();\n                        focusAndClose();\n                    }\n                    else\n                        selectDate(e);\n                    break;\n                case 27:\n                    e.preventDefault();\n                    focusAndClose();\n                    break;\n                case 8:\n                case 46:\n                    if (isInput && !self.config.allowInput) {\n                        e.preventDefault();\n                        self.clear();\n                    }\n                    break;\n                case 37:\n                case 39:\n                    if (!isTimeObj && !isInput) {\n                        e.preventDefault();\n                        var activeElement = getClosestActiveElement();\n                        if (self.daysContainer !== undefined &&\n                            (allowInput === false ||\n                                (activeElement && isInView(activeElement)))) {\n                            var delta_1 = e.keyCode === 39 ? 1 : -1;\n                            if (!e.ctrlKey)\n                                focusOnDay(undefined, delta_1);\n                            else {\n                                e.stopPropagation();\n                                changeMonth(delta_1);\n                                focusOnDay(getFirstAvailableDay(1), 0);\n                            }\n                        }\n                    }\n                    else if (self.hourElement)\n                        self.hourElement.focus();\n                    break;\n                case 38:\n                case 40:\n                    e.preventDefault();\n                    var delta = e.keyCode === 40 ? 1 : -1;\n                    if ((self.daysContainer &&\n                        eventTarget.$i !== undefined) ||\n                        eventTarget === self.input ||\n                        eventTarget === self.altInput) {\n                        if (e.ctrlKey) {\n                            e.stopPropagation();\n                            changeYear(self.currentYear - delta);\n                            focusOnDay(getFirstAvailableDay(1), 0);\n                        }\n                        else if (!isTimeObj)\n                            focusOnDay(undefined, delta * 7);\n                    }\n                    else if (eventTarget === self.currentYearElement) {\n                        changeYear(self.currentYear - delta);\n                    }\n                    else if (self.config.enableTime) {\n                        if (!isTimeObj && self.hourElement)\n                            self.hourElement.focus();\n                        updateTime(e);\n                        self._debouncedChange();\n                    }\n                    break;\n                case 9:\n                    if (isTimeObj) {\n                        var elems = [\n                            self.hourElement,\n                            self.minuteElement,\n                            self.secondElement,\n                            self.amPM,\n                        ]\n                            .concat(self.pluginElements)\n                            .filter(function (x) { return x; });\n                        var i = elems.indexOf(eventTarget);\n                        if (i !== -1) {\n                            var target = elems[i + (e.shiftKey ? -1 : 1)];\n                            e.preventDefault();\n                            (target || self._input).focus();\n                        }\n                    }\n                    else if (!self.config.noCalendar &&\n                        self.daysContainer &&\n                        self.daysContainer.contains(eventTarget) &&\n                        e.shiftKey) {\n                        e.preventDefault();\n                        self._input.focus();\n                    }\n                    break;\n                default:\n                    break;\n            }\n        }\n        if (self.amPM !== undefined && eventTarget === self.amPM) {\n            switch (e.key) {\n                case self.l10n.amPM[0].charAt(0):\n                case self.l10n.amPM[0].charAt(0).toLowerCase():\n                    self.amPM.textContent = self.l10n.amPM[0];\n                    setHoursFromInputs();\n                    updateValue();\n                    break;\n                case self.l10n.amPM[1].charAt(0):\n                case self.l10n.amPM[1].charAt(0).toLowerCase():\n                    self.amPM.textContent = self.l10n.amPM[1];\n                    setHoursFromInputs();\n                    updateValue();\n                    break;\n            }\n        }\n        if (isInput || isCalendarElem(eventTarget)) {\n            triggerEvent(\"onKeyDown\", e);\n        }\n    }\n    function onMouseOver(elem, cellClass) {\n        if (cellClass === void 0) {\n            cellClass = \"flatpickr-day\";\n        }\n        if (self.selectedDates.length !== 1 ||\n            (elem &&\n                (!elem.classList.contains(cellClass) ||\n                    elem.classList.contains(\"flatpickr-disabled\"))))\n            return;\n        var hoverDate = elem\n            ? elem.dateObj.getTime()\n            : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n        var containsDisabled = false;\n        var minRange = 0, maxRange = 0;\n        for (var t = rangeStartDate; t < rangeEndDate; t += dates_1.duration.DAY) {\n            if (!isEnabled(new Date(t), true)) {\n                containsDisabled =\n                    containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n                if (t < initialDate && (!minRange || t > minRange))\n                    minRange = t;\n                else if (t > initialDate && (!maxRange || t < maxRange))\n                    maxRange = t;\n            }\n        }\n        var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n        hoverableCells.forEach(function (dayElem) {\n            var date = dayElem.dateObj;\n            var timestamp = date.getTime();\n            var outOfRange = (minRange > 0 && timestamp < minRange) ||\n                (maxRange > 0 && timestamp > maxRange);\n            if (outOfRange) {\n                dayElem.classList.add(\"notAllowed\");\n                [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n                    dayElem.classList.remove(c);\n                });\n                return;\n            }\n            else if (containsDisabled && !outOfRange)\n                return;\n            [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n                dayElem.classList.remove(c);\n            });\n            if (elem !== undefined) {\n                elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n                    ? \"startRange\"\n                    : \"endRange\");\n                if (initialDate < hoverDate && timestamp === initialDate)\n                    dayElem.classList.add(\"startRange\");\n                else if (initialDate > hoverDate && timestamp === initialDate)\n                    dayElem.classList.add(\"endRange\");\n                if (timestamp >= minRange &&\n                    (maxRange === 0 || timestamp <= maxRange) &&\n                    (0, dates_1.isBetween)(timestamp, initialDate, hoverDate))\n                    dayElem.classList.add(\"inRange\");\n            }\n        });\n    }\n    function onResize() {\n        if (self.isOpen && !self.config.static && !self.config.inline)\n            positionCalendar();\n    }\n    function open(e, positionElement) {\n        if (positionElement === void 0) {\n            positionElement = self._positionElement;\n        }\n        if (self.isMobile === true) {\n            if (e) {\n                e.preventDefault();\n                var eventTarget = (0, dom_1.getEventTarget)(e);\n                if (eventTarget) {\n                    eventTarget.blur();\n                }\n            }\n            if (self.mobileInput !== undefined) {\n                self.mobileInput.focus();\n                self.mobileInput.click();\n            }\n            triggerEvent(\"onOpen\");\n            return;\n        }\n        else if (self._input.disabled || self.config.inline) {\n            return;\n        }\n        var wasOpen = self.isOpen;\n        self.isOpen = true;\n        if (!wasOpen) {\n            self.calendarContainer.classList.add(\"open\");\n            self._input.classList.add(\"active\");\n            triggerEvent(\"onOpen\");\n            positionCalendar(positionElement);\n        }\n        if (self.config.enableTime === true && self.config.noCalendar === true) {\n            if (self.config.allowInput === false &&\n                (e === undefined ||\n                    !self.timeContainer.contains(e.relatedTarget))) {\n                setTimeout(function () { return self.hourElement.select(); }, 50);\n            }\n        }\n    }\n    function minMaxDateSetter(type) {\n        return function (date) {\n            var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n            var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n            if (dateObj !== undefined) {\n                self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n                    dateObj.getHours() > 0 ||\n                        dateObj.getMinutes() > 0 ||\n                        dateObj.getSeconds() > 0;\n            }\n            if (self.selectedDates) {\n                self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n                if (!self.selectedDates.length && type === \"min\")\n                    setHoursFromDate(dateObj);\n                updateValue();\n            }\n            if (self.daysContainer) {\n                redraw();\n                if (dateObj !== undefined)\n                    self.currentYearElement[type] = dateObj.getFullYear().toString();\n                else\n                    self.currentYearElement.removeAttribute(type);\n                self.currentYearElement.disabled =\n                    !!inverseDateObj &&\n                        dateObj !== undefined &&\n                        inverseDateObj.getFullYear() === dateObj.getFullYear();\n            }\n        };\n    }\n    function parseConfig() {\n        var boolOpts = [\n            \"wrap\",\n            \"weekNumbers\",\n            \"allowInput\",\n            \"allowInvalidPreload\",\n            \"clickOpens\",\n            \"time_24hr\",\n            \"enableTime\",\n            \"noCalendar\",\n            \"altInput\",\n            \"shorthandCurrentMonth\",\n            \"inline\",\n            \"static\",\n            \"enableSeconds\",\n            \"disableMobile\",\n        ];\n        var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n        var formats = {};\n        self.config.parseDate = userConfig.parseDate;\n        self.config.formatDate = userConfig.formatDate;\n        Object.defineProperty(self.config, \"enable\", {\n            get: function () { return self.config._enable; },\n            set: function (dates) {\n                self.config._enable = parseDateRules(dates);\n            },\n        });\n        Object.defineProperty(self.config, \"disable\", {\n            get: function () { return self.config._disable; },\n            set: function (dates) {\n                self.config._disable = parseDateRules(dates);\n            },\n        });\n        var timeMode = userConfig.mode === \"time\";\n        if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n            var defaultDateFormat = flatpickr.defaultConfig.dateFormat || options_1.defaults.dateFormat;\n            formats.dateFormat =\n                userConfig.noCalendar || timeMode\n                    ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n                    : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n        }\n        if (userConfig.altInput &&\n            (userConfig.enableTime || timeMode) &&\n            !userConfig.altFormat) {\n            var defaultAltFormat = flatpickr.defaultConfig.altFormat || options_1.defaults.altFormat;\n            formats.altFormat =\n                userConfig.noCalendar || timeMode\n                    ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n                    : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n        }\n        Object.defineProperty(self.config, \"minDate\", {\n            get: function () { return self.config._minDate; },\n            set: minMaxDateSetter(\"min\"),\n        });\n        Object.defineProperty(self.config, \"maxDate\", {\n            get: function () { return self.config._maxDate; },\n            set: minMaxDateSetter(\"max\"),\n        });\n        var minMaxTimeSetter = function (type) {\n            return function (val) {\n                self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n            };\n        };\n        Object.defineProperty(self.config, \"minTime\", {\n            get: function () { return self.config._minTime; },\n            set: minMaxTimeSetter(\"min\"),\n        });\n        Object.defineProperty(self.config, \"maxTime\", {\n            get: function () { return self.config._maxTime; },\n            set: minMaxTimeSetter(\"max\"),\n        });\n        if (userConfig.mode === \"time\") {\n            self.config.noCalendar = true;\n            self.config.enableTime = true;\n        }\n        Object.assign(self.config, formats, userConfig);\n        for (var i = 0; i < boolOpts.length; i++)\n            self.config[boolOpts[i]] =\n                self.config[boolOpts[i]] === true ||\n                    self.config[boolOpts[i]] === \"true\";\n        options_1.HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n            self.config[hook] = (0, utils_1.arrayify)(self.config[hook] || []).map(bindToInstance);\n        });\n        self.isMobile =\n            !self.config.disableMobile &&\n                !self.config.inline &&\n                self.config.mode === \"single\" &&\n                !self.config.disable.length &&\n                !self.config.enable &&\n                !self.config.weekNumbers &&\n                /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n        for (var i = 0; i < self.config.plugins.length; i++) {\n            var pluginConf = self.config.plugins[i](self) || {};\n            for (var key in pluginConf) {\n                if (options_1.HOOKS.indexOf(key) > -1) {\n                    self.config[key] = (0, utils_1.arrayify)(pluginConf[key])\n                        .map(bindToInstance)\n                        .concat(self.config[key]);\n                }\n                else if (typeof userConfig[key] === \"undefined\")\n                    self.config[key] = pluginConf[key];\n            }\n        }\n        if (!userConfig.altInputClass) {\n            self.config.altInputClass =\n                getInputElem().className + \" \" + self.config.altInputClass;\n        }\n        triggerEvent(\"onParseConfig\");\n    }\n    function getInputElem() {\n        return self.config.wrap\n            ? element.querySelector(\"[data-input]\")\n            : element;\n    }\n    function setupLocale() {\n        if (typeof self.config.locale !== \"object\" &&\n            typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n            self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n        self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n            ? self.config.locale\n            : self.config.locale !== \"default\"\n                ? flatpickr.l10ns[self.config.locale]\n                : undefined));\n        formatting_1.tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n        formatting_1.tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n        formatting_1.tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n        formatting_1.tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n        formatting_1.tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n        var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n        if (userConfig.time_24hr === undefined &&\n            flatpickr.defaultConfig.time_24hr === undefined) {\n            self.config.time_24hr = self.l10n.time_24hr;\n        }\n        self.formatDate = (0, dates_1.createDateFormatter)(self);\n        self.parseDate = (0, dates_1.createDateParser)({ config: self.config, l10n: self.l10n });\n    }\n    function positionCalendar(customPositionElement) {\n        if (typeof self.config.position === \"function\") {\n            return void self.config.position(self, customPositionElement);\n        }\n        if (self.calendarContainer === undefined)\n            return;\n        triggerEvent(\"onPreCalendarPosition\");\n        var positionElement = customPositionElement || self._positionElement;\n        var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n            (configPosVertical !== \"below\" &&\n                distanceFromBottom < calendarHeight &&\n                inputBounds.top > calendarHeight);\n        var top = window.pageYOffset +\n            inputBounds.top +\n            (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n        (0, dom_1.toggleClass)(self.calendarContainer, \"arrowTop\", !showOnTop);\n        (0, dom_1.toggleClass)(self.calendarContainer, \"arrowBottom\", showOnTop);\n        if (self.config.inline)\n            return;\n        var left = window.pageXOffset + inputBounds.left;\n        var isCenter = false;\n        var isRight = false;\n        if (configPosHorizontal === \"center\") {\n            left -= (calendarWidth - inputBounds.width) / 2;\n            isCenter = true;\n        }\n        else if (configPosHorizontal === \"right\") {\n            left -= calendarWidth - inputBounds.width;\n            isRight = true;\n        }\n        (0, dom_1.toggleClass)(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n        (0, dom_1.toggleClass)(self.calendarContainer, \"arrowCenter\", isCenter);\n        (0, dom_1.toggleClass)(self.calendarContainer, \"arrowRight\", isRight);\n        var right = window.document.body.offsetWidth -\n            (window.pageXOffset + inputBounds.right);\n        var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n        var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n        (0, dom_1.toggleClass)(self.calendarContainer, \"rightMost\", rightMost);\n        if (self.config.static)\n            return;\n        self.calendarContainer.style.top = top + \"px\";\n        if (!rightMost) {\n            self.calendarContainer.style.left = left + \"px\";\n            self.calendarContainer.style.right = \"auto\";\n        }\n        else if (!centerMost) {\n            self.calendarContainer.style.left = \"auto\";\n            self.calendarContainer.style.right = right + \"px\";\n        }\n        else {\n            var doc = getDocumentStyleSheet();\n            if (doc === undefined)\n                return;\n            var bodyWidth = window.document.body.offsetWidth;\n            var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n            var centerBefore = \".flatpickr-calendar.centerMost:before\";\n            var centerAfter = \".flatpickr-calendar.centerMost:after\";\n            var centerIndex = doc.cssRules.length;\n            var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n            (0, dom_1.toggleClass)(self.calendarContainer, \"rightMost\", false);\n            (0, dom_1.toggleClass)(self.calendarContainer, \"centerMost\", true);\n            doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n            self.calendarContainer.style.left = centerLeft + \"px\";\n            self.calendarContainer.style.right = \"auto\";\n        }\n    }\n    function getDocumentStyleSheet() {\n        var editableSheet = null;\n        for (var i = 0; i < document.styleSheets.length; i++) {\n            var sheet = document.styleSheets[i];\n            if (!sheet.cssRules)\n                continue;\n            try {\n                sheet.cssRules;\n            }\n            catch (err) {\n                continue;\n            }\n            editableSheet = sheet;\n            break;\n        }\n        return editableSheet != null ? editableSheet : createStyleSheet();\n    }\n    function createStyleSheet() {\n        var style = document.createElement(\"style\");\n        document.head.appendChild(style);\n        return style.sheet;\n    }\n    function redraw() {\n        if (self.config.noCalendar || self.isMobile)\n            return;\n        buildMonthSwitch();\n        updateNavigationCurrentMonth();\n        buildDays();\n    }\n    function focusAndClose() {\n        self._input.focus();\n        if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n            navigator.msMaxTouchPoints !== undefined) {\n            setTimeout(self.close, 0);\n        }\n        else {\n            self.close();\n        }\n    }\n    function selectDate(e) {\n        e.preventDefault();\n        e.stopPropagation();\n        var isSelectable = function (day) {\n            return day.classList &&\n                day.classList.contains(\"flatpickr-day\") &&\n                !day.classList.contains(\"flatpickr-disabled\") &&\n                !day.classList.contains(\"notAllowed\");\n        };\n        var t = (0, dom_1.findParent)((0, dom_1.getEventTarget)(e), isSelectable);\n        if (t === undefined)\n            return;\n        var target = t;\n        var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n        var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n            selectedDate.getMonth() >\n                self.currentMonth + self.config.showMonths - 1) &&\n            self.config.mode !== \"range\";\n        self.selectedDateElem = target;\n        if (self.config.mode === \"single\")\n            self.selectedDates = [selectedDate];\n        else if (self.config.mode === \"multiple\") {\n            var selectedIndex = isDateSelected(selectedDate);\n            if (selectedIndex)\n                self.selectedDates.splice(parseInt(selectedIndex), 1);\n            else\n                self.selectedDates.push(selectedDate);\n        }\n        else if (self.config.mode === \"range\") {\n            if (self.selectedDates.length === 2) {\n                self.clear(false, false);\n            }\n            self.latestSelectedDateObj = selectedDate;\n            self.selectedDates.push(selectedDate);\n            if ((0, dates_1.compareDates)(selectedDate, self.selectedDates[0], true) !== 0)\n                self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n        }\n        setHoursFromInputs();\n        if (shouldChangeMonth) {\n            var isNewYear = self.currentYear !== selectedDate.getFullYear();\n            self.currentYear = selectedDate.getFullYear();\n            self.currentMonth = selectedDate.getMonth();\n            if (isNewYear) {\n                triggerEvent(\"onYearChange\");\n                buildMonthSwitch();\n            }\n            triggerEvent(\"onMonthChange\");\n        }\n        updateNavigationCurrentMonth();\n        buildDays();\n        updateValue();\n        if (!shouldChangeMonth &&\n            self.config.mode !== \"range\" &&\n            self.config.showMonths === 1)\n            focusOnDayElem(target);\n        else if (self.selectedDateElem !== undefined &&\n            self.hourElement === undefined) {\n            self.selectedDateElem && self.selectedDateElem.focus();\n        }\n        if (self.hourElement !== undefined)\n            self.hourElement !== undefined && self.hourElement.focus();\n        if (self.config.closeOnSelect) {\n            var single = self.config.mode === \"single\" && !self.config.enableTime;\n            var range = self.config.mode === \"range\" &&\n                self.selectedDates.length === 2 &&\n                !self.config.enableTime;\n            if (single || range) {\n                focusAndClose();\n            }\n        }\n        triggerChange();\n    }\n    var CALLBACKS = {\n        locale: [setupLocale, updateWeekdays],\n        showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n        minDate: [jumpToDate],\n        maxDate: [jumpToDate],\n        positionElement: [updatePositionElement],\n        clickOpens: [\n            function () {\n                if (self.config.clickOpens === true) {\n                    bind(self._input, \"focus\", self.open);\n                    bind(self._input, \"click\", self.open);\n                }\n                else {\n                    self._input.removeEventListener(\"focus\", self.open);\n                    self._input.removeEventListener(\"click\", self.open);\n                }\n            },\n        ],\n    };\n    function set(option, value) {\n        if (option !== null && typeof option === \"object\") {\n            Object.assign(self.config, option);\n            for (var key in option) {\n                if (CALLBACKS[key] !== undefined)\n                    CALLBACKS[key].forEach(function (x) { return x(); });\n            }\n        }\n        else {\n            self.config[option] = value;\n            if (CALLBACKS[option] !== undefined)\n                CALLBACKS[option].forEach(function (x) { return x(); });\n            else if (options_1.HOOKS.indexOf(option) > -1)\n                self.config[option] = (0, utils_1.arrayify)(value);\n        }\n        self.redraw();\n        updateValue(true);\n    }\n    function setSelectedDate(inputDate, format) {\n        var dates = [];\n        if (inputDate instanceof Array)\n            dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n        else if (inputDate instanceof Date || typeof inputDate === \"number\")\n            dates = [self.parseDate(inputDate, format)];\n        else if (typeof inputDate === \"string\") {\n            switch (self.config.mode) {\n                case \"single\":\n                case \"time\":\n                    dates = [self.parseDate(inputDate, format)];\n                    break;\n                case \"multiple\":\n                    dates = inputDate\n                        .split(self.config.conjunction)\n                        .map(function (date) { return self.parseDate(date, format); });\n                    break;\n                case \"range\":\n                    dates = inputDate\n                        .split(self.l10n.rangeSeparator)\n                        .map(function (date) { return self.parseDate(date, format); });\n                    break;\n                default:\n                    break;\n            }\n        }\n        else\n            self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n        self.selectedDates = (self.config.allowInvalidPreload\n            ? dates\n            : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n        if (self.config.mode === \"range\")\n            self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n    }\n    function setDate(date, triggerChange, format) {\n        if (triggerChange === void 0) {\n            triggerChange = false;\n        }\n        if (format === void 0) {\n            format = self.config.dateFormat;\n        }\n        if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n            return self.clear(triggerChange);\n        setSelectedDate(date, format);\n        self.latestSelectedDateObj =\n            self.selectedDates[self.selectedDates.length - 1];\n        self.redraw();\n        jumpToDate(undefined, triggerChange);\n        setHoursFromDate();\n        if (self.selectedDates.length === 0) {\n            self.clear(false);\n        }\n        updateValue(triggerChange);\n        if (triggerChange)\n            triggerEvent(\"onChange\");\n    }\n    function parseDateRules(arr) {\n        return arr\n            .slice()\n            .map(function (rule) {\n            if (typeof rule === \"string\" ||\n                typeof rule === \"number\" ||\n                rule instanceof Date) {\n                return self.parseDate(rule, undefined, true);\n            }\n            else if (rule &&\n                typeof rule === \"object\" &&\n                rule.from &&\n                rule.to)\n                return {\n                    from: self.parseDate(rule.from, undefined),\n                    to: self.parseDate(rule.to, undefined),\n                };\n            return rule;\n        })\n            .filter(function (x) { return x; });\n    }\n    function setupDates() {\n        self.selectedDates = [];\n        self.now = self.parseDate(self.config.now) || new Date();\n        var preloadedDate = self.config.defaultDate ||\n            ((self.input.nodeName === \"INPUT\" ||\n                self.input.nodeName === \"TEXTAREA\") &&\n                self.input.placeholder &&\n                self.input.value === self.input.placeholder\n                ? null\n                : self.input.value);\n        if (preloadedDate)\n            setSelectedDate(preloadedDate, self.config.dateFormat);\n        self._initialDate =\n            self.selectedDates.length > 0\n                ? self.selectedDates[0]\n                : self.config.minDate &&\n                    self.config.minDate.getTime() > self.now.getTime()\n                    ? self.config.minDate\n                    : self.config.maxDate &&\n                        self.config.maxDate.getTime() < self.now.getTime()\n                        ? self.config.maxDate\n                        : self.now;\n        self.currentYear = self._initialDate.getFullYear();\n        self.currentMonth = self._initialDate.getMonth();\n        if (self.selectedDates.length > 0)\n            self.latestSelectedDateObj = self.selectedDates[0];\n        if (self.config.minTime !== undefined)\n            self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n        if (self.config.maxTime !== undefined)\n            self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n        self.minDateHasTime =\n            !!self.config.minDate &&\n                (self.config.minDate.getHours() > 0 ||\n                    self.config.minDate.getMinutes() > 0 ||\n                    self.config.minDate.getSeconds() > 0);\n        self.maxDateHasTime =\n            !!self.config.maxDate &&\n                (self.config.maxDate.getHours() > 0 ||\n                    self.config.maxDate.getMinutes() > 0 ||\n                    self.config.maxDate.getSeconds() > 0);\n    }\n    function setupInputs() {\n        self.input = getInputElem();\n        if (!self.input) {\n            self.config.errorHandler(new Error(\"Invalid input element specified\"));\n            return;\n        }\n        self.input._type = self.input.type;\n        self.input.type = \"text\";\n        self.input.classList.add(\"flatpickr-input\");\n        self._input = self.input;\n        if (self.config.altInput) {\n            self.altInput = (0, dom_1.createElement)(self.input.nodeName, self.config.altInputClass);\n            self._input = self.altInput;\n            self.altInput.placeholder = self.input.placeholder;\n            self.altInput.disabled = self.input.disabled;\n            self.altInput.required = self.input.required;\n            self.altInput.tabIndex = self.input.tabIndex;\n            self.altInput.type = \"text\";\n            self.input.setAttribute(\"type\", \"hidden\");\n            if (!self.config.static && self.input.parentNode)\n                self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n        }\n        if (!self.config.allowInput)\n            self._input.setAttribute(\"readonly\", \"readonly\");\n        updatePositionElement();\n    }\n    function updatePositionElement() {\n        self._positionElement = self.config.positionElement || self._input;\n    }\n    function setupMobile() {\n        var inputType = self.config.enableTime\n            ? self.config.noCalendar\n                ? \"time\"\n                : \"datetime-local\"\n            : \"date\";\n        self.mobileInput = (0, dom_1.createElement)(\"input\", self.input.className + \" flatpickr-mobile\");\n        self.mobileInput.tabIndex = 1;\n        self.mobileInput.type = inputType;\n        self.mobileInput.disabled = self.input.disabled;\n        self.mobileInput.required = self.input.required;\n        self.mobileInput.placeholder = self.input.placeholder;\n        self.mobileFormatStr =\n            inputType === \"datetime-local\"\n                ? \"Y-m-d\\\\TH:i:S\"\n                : inputType === \"date\"\n                    ? \"Y-m-d\"\n                    : \"H:i:S\";\n        if (self.selectedDates.length > 0) {\n            self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n        }\n        if (self.config.minDate)\n            self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n        if (self.config.maxDate)\n            self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n        if (self.input.getAttribute(\"step\"))\n            self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n        self.input.type = \"hidden\";\n        if (self.altInput !== undefined)\n            self.altInput.type = \"hidden\";\n        try {\n            if (self.input.parentNode)\n                self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n        }\n        catch (_a) { }\n        bind(self.mobileInput, \"change\", function (e) {\n            self.setDate((0, dom_1.getEventTarget)(e).value, false, self.mobileFormatStr);\n            triggerEvent(\"onChange\");\n            triggerEvent(\"onClose\");\n        });\n    }\n    function toggle(e) {\n        if (self.isOpen === true)\n            return self.close();\n        self.open(e);\n    }\n    function triggerEvent(event, data) {\n        if (self.config === undefined)\n            return;\n        var hooks = self.config[event];\n        if (hooks !== undefined && hooks.length > 0) {\n            for (var i = 0; hooks[i] && i < hooks.length; i++)\n                hooks[i](self.selectedDates, self.input.value, self, data);\n        }\n        if (event === \"onChange\") {\n            self.input.dispatchEvent(createEvent(\"change\"));\n            self.input.dispatchEvent(createEvent(\"input\"));\n        }\n    }\n    function createEvent(name) {\n        var e = document.createEvent(\"Event\");\n        e.initEvent(name, true, true);\n        return e;\n    }\n    function isDateSelected(date) {\n        for (var i = 0; i < self.selectedDates.length; i++) {\n            var selectedDate = self.selectedDates[i];\n            if (selectedDate instanceof Date &&\n                (0, dates_1.compareDates)(selectedDate, date) === 0)\n                return \"\" + i;\n        }\n        return false;\n    }\n    function isDateInRange(date) {\n        if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n            return false;\n        return ((0, dates_1.compareDates)(date, self.selectedDates[0]) >= 0 &&\n            (0, dates_1.compareDates)(date, self.selectedDates[1]) <= 0);\n    }\n    function updateNavigationCurrentMonth() {\n        if (self.config.noCalendar || self.isMobile || !self.monthNav)\n            return;\n        self.yearElements.forEach(function (yearElement, i) {\n            var d = new Date(self.currentYear, self.currentMonth, 1);\n            d.setMonth(self.currentMonth + i);\n            if (self.config.showMonths > 1 ||\n                self.config.monthSelectorType === \"static\") {\n                self.monthElements[i].textContent =\n                    (0, formatting_1.monthToStr)(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n            }\n            else {\n                self.monthsDropdownContainer.value = d.getMonth().toString();\n            }\n            yearElement.value = d.getFullYear().toString();\n        });\n        self._hidePrevMonthArrow =\n            self.config.minDate !== undefined &&\n                (self.currentYear === self.config.minDate.getFullYear()\n                    ? self.currentMonth <= self.config.minDate.getMonth()\n                    : self.currentYear < self.config.minDate.getFullYear());\n        self._hideNextMonthArrow =\n            self.config.maxDate !== undefined &&\n                (self.currentYear === self.config.maxDate.getFullYear()\n                    ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n                    : self.currentYear > self.config.maxDate.getFullYear());\n    }\n    function getDateStr(specificFormat) {\n        var format = specificFormat ||\n            (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n        return self.selectedDates\n            .map(function (dObj) { return self.formatDate(dObj, format); })\n            .filter(function (d, i, arr) {\n            return self.config.mode !== \"range\" ||\n                self.config.enableTime ||\n                arr.indexOf(d) === i;\n        })\n            .join(self.config.mode !== \"range\"\n            ? self.config.conjunction\n            : self.l10n.rangeSeparator);\n    }\n    function updateValue(triggerChange) {\n        if (triggerChange === void 0) {\n            triggerChange = true;\n        }\n        if (self.mobileInput !== undefined && self.mobileFormatStr) {\n            self.mobileInput.value =\n                self.latestSelectedDateObj !== undefined\n                    ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n                    : \"\";\n        }\n        self.input.value = getDateStr(self.config.dateFormat);\n        if (self.altInput !== undefined) {\n            self.altInput.value = getDateStr(self.config.altFormat);\n        }\n        if (triggerChange !== false)\n            triggerEvent(\"onValueUpdate\");\n    }\n    function onMonthNavClick(e) {\n        var eventTarget = (0, dom_1.getEventTarget)(e);\n        var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n        var isNextMonth = self.nextMonthNav.contains(eventTarget);\n        if (isPrevMonth || isNextMonth) {\n            changeMonth(isPrevMonth ? -1 : 1);\n        }\n        else if (self.yearElements.indexOf(eventTarget) >= 0) {\n            eventTarget.select();\n        }\n        else if (eventTarget.classList.contains(\"arrowUp\")) {\n            self.changeYear(self.currentYear + 1);\n        }\n        else if (eventTarget.classList.contains(\"arrowDown\")) {\n            self.changeYear(self.currentYear - 1);\n        }\n    }\n    function timeWrapper(e) {\n        e.preventDefault();\n        var isKeyDown = e.type === \"keydown\", eventTarget = (0, dom_1.getEventTarget)(e), input = eventTarget;\n        if (self.amPM !== undefined && eventTarget === self.amPM) {\n            self.amPM.textContent =\n                self.l10n.amPM[(0, utils_1.int)(self.amPM.textContent === self.l10n.amPM[0])];\n        }\n        var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n            (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n        var newValue = curValue + step * delta;\n        if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n            var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n            if (newValue < min) {\n                newValue =\n                    max +\n                        newValue +\n                        (0, utils_1.int)(!isHourElem) +\n                        ((0, utils_1.int)(isHourElem) && (0, utils_1.int)(!self.amPM));\n                if (isMinuteElem)\n                    incrementNumInput(undefined, -1, self.hourElement);\n            }\n            else if (newValue > max) {\n                newValue =\n                    input === self.hourElement ? newValue - max - (0, utils_1.int)(!self.amPM) : min;\n                if (isMinuteElem)\n                    incrementNumInput(undefined, 1, self.hourElement);\n            }\n            if (self.amPM &&\n                isHourElem &&\n                (step === 1\n                    ? newValue + curValue === 23\n                    : Math.abs(newValue - curValue) > step)) {\n                self.amPM.textContent =\n                    self.l10n.amPM[(0, utils_1.int)(self.amPM.textContent === self.l10n.amPM[0])];\n            }\n            input.value = (0, utils_1.pad)(newValue);\n        }\n    }\n    init();\n    return self;\n}\nfunction _flatpickr(nodeList, config) {\n    var nodes = Array.prototype.slice\n        .call(nodeList)\n        .filter(function (x) { return x instanceof HTMLElement; });\n    var instances = [];\n    for (var i = 0; i < nodes.length; i++) {\n        var node = nodes[i];\n        try {\n            if (node.getAttribute(\"data-fp-omit\") !== null)\n                continue;\n            if (node._flatpickr !== undefined) {\n                node._flatpickr.destroy();\n                node._flatpickr = undefined;\n            }\n            node._flatpickr = FlatpickrInstance(node, config || {});\n            instances.push(node._flatpickr);\n        }\n        catch (e) {\n            console.error(e);\n        }\n    }\n    return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n    typeof HTMLCollection !== \"undefined\" &&\n    typeof NodeList !== \"undefined\") {\n    HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n        return _flatpickr(this, config);\n    };\n    HTMLElement.prototype.flatpickr = function (config) {\n        return _flatpickr([this], config);\n    };\n}\nvar flatpickr = function (selector, config) {\n    if (typeof selector === \"string\") {\n        return _flatpickr(window.document.querySelectorAll(selector), config);\n    }\n    else if (selector instanceof Node) {\n        return _flatpickr([selector], config);\n    }\n    else {\n        return _flatpickr(selector, config);\n    }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n    en: __assign({}, default_1.default),\n    default: __assign({}, default_1.default),\n};\nflatpickr.localize = function (l10n) {\n    flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n    flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = (0, dates_1.createDateParser)({});\nflatpickr.formatDate = (0, dates_1.createDateFormatter)({});\nflatpickr.compareDates = dates_1.compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n    jQuery.fn.flatpickr = function (config) {\n        return _flatpickr(this, config);\n    };\n}\nDate.prototype.fp_incr = function (days) {\n    return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n    window.flatpickr = flatpickr;\n}\nexports.default = flatpickr;\n","type":"js","dependency_paths":[["./types/options","/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/types/options.js"],["./l10n/default","/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/l10n/default.js"],["./utils","/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/utils/index.js"],["./utils/dom","/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/utils/dom.js"],["./utils/dates","/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/utils/dates.js"],["./utils/formatting","/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/utils/formatting.js"],["./utils/polyfills","/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/utils/polyfills.js"]],"dependency_map":[],"exported":[{"type":"named","name":"default"}],"externals":[],"shims":[]},"code":{"source":"/* flatpickr/dist/esm/index.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    var __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)\n                    if (Object.prototype.hasOwnProperty.call(s, p))\n                        t[p] = s[p];\n            }\n            return t;\n        };\n        return __assign.apply(this, arguments);\n    };\n    var __spreadArrays = (this && this.__spreadArrays) || function () {\n        for (var s = 0, i = 0, il = arguments.length; i < il; i++)\n            s += arguments[i].length;\n        for (var r = Array(s), k = 0, i = 0; i < il; i++)\n            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n                r[k] = a[j];\n        return r;\n    };\n    const options_1 = require(\"651d495396\") /* ./types/options */;\n    const default_1 = tslib_1.__importDefault(require(\"3bfa124fda\") /* ./l10n/default */);\n    const utils_1 = require(\"15458073ce\") /* ./utils */;\n    const dom_1 = require(\"6b6749c6cf\") /* ./utils/dom */;\n    const dates_1 = require(\"1bb8c967d1\") /* ./utils/dates */;\n    const formatting_1 = require(\"3d14787c35\") /* ./utils/formatting */;\n    require(\"6f45019dc1\") /* ./utils/polyfills */;\n    var DEBOUNCED_CHANGE_MS = 300;\n    function FlatpickrInstance(element, instanceConfig) {\n        var self = {\n            config: __assign(__assign({}, options_1.defaults), flatpickr.defaultConfig),\n            l10n: default_1.default,\n        };\n        self.parseDate = (0, dates_1.createDateParser)({ config: self.config, l10n: self.l10n });\n        self._handlers = [];\n        self.pluginElements = [];\n        self.loadedPlugins = [];\n        self._bind = bind;\n        self._setHoursFromDate = setHoursFromDate;\n        self._positionCalendar = positionCalendar;\n        self.changeMonth = changeMonth;\n        self.changeYear = changeYear;\n        self.clear = clear;\n        self.close = close;\n        self.onMouseOver = onMouseOver;\n        self._createElement = dom_1.createElement;\n        self.createDay = createDay;\n        self.destroy = destroy;\n        self.isEnabled = isEnabled;\n        self.jumpToDate = jumpToDate;\n        self.updateValue = updateValue;\n        self.open = open;\n        self.redraw = redraw;\n        self.set = set;\n        self.setDate = setDate;\n        self.toggle = toggle;\n        function setupHelperFunctions() {\n            self.utils = {\n                getDaysInMonth: function (month, yr) {\n                    if (month === void 0) {\n                        month = self.currentMonth;\n                    }\n                    if (yr === void 0) {\n                        yr = self.currentYear;\n                    }\n                    if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n                        return 29;\n                    return self.l10n.daysInMonth[month];\n                },\n            };\n        }\n        function init() {\n            self.element = self.input = element;\n            self.isOpen = false;\n            parseConfig();\n            setupLocale();\n            setupInputs();\n            setupDates();\n            setupHelperFunctions();\n            if (!self.isMobile)\n                build();\n            bindEvents();\n            if (self.selectedDates.length || self.config.noCalendar) {\n                if (self.config.enableTime) {\n                    setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n                }\n                updateValue(false);\n            }\n            setCalendarWidth();\n            var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n            if (!self.isMobile && isSafari) {\n                positionCalendar();\n            }\n            triggerEvent(\"onReady\");\n        }\n        function getClosestActiveElement() {\n            var _a;\n            return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n                .activeElement || document.activeElement);\n        }\n        function bindToInstance(fn) {\n            return fn.bind(self);\n        }\n        function setCalendarWidth() {\n            var config = self.config;\n            if (config.weekNumbers === false && config.showMonths === 1) {\n                return;\n            }\n            else if (config.noCalendar !== true) {\n                window.requestAnimationFrame(function () {\n                    if (self.calendarContainer !== undefined) {\n                        self.calendarContainer.style.visibility = \"hidden\";\n                        self.calendarContainer.style.display = \"block\";\n                    }\n                    if (self.daysContainer !== undefined) {\n                        var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n                        self.daysContainer.style.width = daysWidth + \"px\";\n                        self.calendarContainer.style.width =\n                            daysWidth +\n                                (self.weekWrapper !== undefined\n                                    ? self.weekWrapper.offsetWidth\n                                    : 0) +\n                                \"px\";\n                        self.calendarContainer.style.removeProperty(\"visibility\");\n                        self.calendarContainer.style.removeProperty(\"display\");\n                    }\n                });\n            }\n        }\n        function updateTime(e) {\n            if (self.selectedDates.length === 0) {\n                var defaultDate = self.config.minDate === undefined ||\n                    (0, dates_1.compareDates)(new Date(), self.config.minDate) >= 0\n                    ? new Date()\n                    : new Date(self.config.minDate.getTime());\n                var defaults = (0, dates_1.getDefaultHours)(self.config);\n                defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n                self.selectedDates = [defaultDate];\n                self.latestSelectedDateObj = defaultDate;\n            }\n            if (e !== undefined && e.type !== \"blur\") {\n                timeWrapper(e);\n            }\n            var prevValue = self._input.value;\n            setHoursFromInputs();\n            updateValue();\n            if (self._input.value !== prevValue) {\n                self._debouncedChange();\n            }\n        }\n        function ampm2military(hour, amPM) {\n            return (hour % 12) + 12 * (0, utils_1.int)(amPM === self.l10n.amPM[1]);\n        }\n        function military2ampm(hour) {\n            switch (hour % 24) {\n                case 0:\n                case 12:\n                    return 12;\n                default:\n                    return hour % 12;\n            }\n        }\n        function setHoursFromInputs() {\n            if (self.hourElement === undefined || self.minuteElement === undefined)\n                return;\n            var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n                ? (parseInt(self.secondElement.value, 10) || 0) % 60\n                : 0;\n            if (self.amPM !== undefined) {\n                hours = ampm2military(hours, self.amPM.textContent);\n            }\n            var limitMinHours = self.config.minTime !== undefined ||\n                (self.config.minDate &&\n                    self.minDateHasTime &&\n                    self.latestSelectedDateObj &&\n                    (0, dates_1.compareDates)(self.latestSelectedDateObj, self.config.minDate, true) ===\n                        0);\n            var limitMaxHours = self.config.maxTime !== undefined ||\n                (self.config.maxDate &&\n                    self.maxDateHasTime &&\n                    self.latestSelectedDateObj &&\n                    (0, dates_1.compareDates)(self.latestSelectedDateObj, self.config.maxDate, true) ===\n                        0);\n            if (self.config.maxTime !== undefined &&\n                self.config.minTime !== undefined &&\n                self.config.minTime > self.config.maxTime) {\n                var minBound = (0, dates_1.calculateSecondsSinceMidnight)(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n                var maxBound = (0, dates_1.calculateSecondsSinceMidnight)(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n                var currentTime = (0, dates_1.calculateSecondsSinceMidnight)(hours, minutes, seconds);\n                if (currentTime > maxBound && currentTime < minBound) {\n                    var result = (0, dates_1.parseSeconds)(minBound);\n                    hours = result[0];\n                    minutes = result[1];\n                    seconds = result[2];\n                }\n            }\n            else {\n                if (limitMaxHours) {\n                    var maxTime = self.config.maxTime !== undefined\n                        ? self.config.maxTime\n                        : self.config.maxDate;\n                    hours = Math.min(hours, maxTime.getHours());\n                    if (hours === maxTime.getHours())\n                        minutes = Math.min(minutes, maxTime.getMinutes());\n                    if (minutes === maxTime.getMinutes())\n                        seconds = Math.min(seconds, maxTime.getSeconds());\n                }\n                if (limitMinHours) {\n                    var minTime = self.config.minTime !== undefined\n                        ? self.config.minTime\n                        : self.config.minDate;\n                    hours = Math.max(hours, minTime.getHours());\n                    if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n                        minutes = minTime.getMinutes();\n                    if (minutes === minTime.getMinutes())\n                        seconds = Math.max(seconds, minTime.getSeconds());\n                }\n            }\n            setHours(hours, minutes, seconds);\n        }\n        function setHoursFromDate(dateObj) {\n            var date = dateObj || self.latestSelectedDateObj;\n            if (date && date instanceof Date) {\n                setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n            }\n        }\n        function setHours(hours, minutes, seconds) {\n            if (self.latestSelectedDateObj !== undefined) {\n                self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n            }\n            if (!self.hourElement || !self.minuteElement || self.isMobile)\n                return;\n            self.hourElement.value = (0, utils_1.pad)(!self.config.time_24hr\n                ? ((12 + hours) % 12) + 12 * (0, utils_1.int)(hours % 12 === 0)\n                : hours);\n            self.minuteElement.value = (0, utils_1.pad)(minutes);\n            if (self.amPM !== undefined)\n                self.amPM.textContent = self.l10n.amPM[(0, utils_1.int)(hours >= 12)];\n            if (self.secondElement !== undefined)\n                self.secondElement.value = (0, utils_1.pad)(seconds);\n        }\n        function onYearInput(event) {\n            var eventTarget = (0, dom_1.getEventTarget)(event);\n            var year = parseInt(eventTarget.value) + (event.delta || 0);\n            if (year / 1000 > 1 ||\n                (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n                changeYear(year);\n            }\n        }\n        function bind(element, event, handler, options) {\n            if (event instanceof Array)\n                return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n            if (element instanceof Array)\n                return element.forEach(function (el) { return bind(el, event, handler, options); });\n            element.addEventListener(event, handler, options);\n            self._handlers.push({\n                remove: function () { return element.removeEventListener(event, handler, options); },\n            });\n        }\n        function triggerChange() {\n            triggerEvent(\"onChange\");\n        }\n        function bindEvents() {\n            if (self.config.wrap) {\n                [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n                    Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n                        return bind(el, \"click\", self[evt]);\n                    });\n                });\n            }\n            if (self.isMobile) {\n                setupMobile();\n                return;\n            }\n            var debouncedResize = (0, utils_1.debounce)(onResize, 50);\n            self._debouncedChange = (0, utils_1.debounce)(triggerChange, DEBOUNCED_CHANGE_MS);\n            if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n                bind(self.daysContainer, \"mouseover\", function (e) {\n                    if (self.config.mode === \"range\")\n                        onMouseOver((0, dom_1.getEventTarget)(e));\n                });\n            bind(self._input, \"keydown\", onKeyDown);\n            if (self.calendarContainer !== undefined) {\n                bind(self.calendarContainer, \"keydown\", onKeyDown);\n            }\n            if (!self.config.inline && !self.config.static)\n                bind(window, \"resize\", debouncedResize);\n            if (window.ontouchstart !== undefined)\n                bind(window.document, \"touchstart\", documentClick);\n            else\n                bind(window.document, \"mousedown\", documentClick);\n            bind(window.document, \"focus\", documentClick, { capture: true });\n            if (self.config.clickOpens === true) {\n                bind(self._input, \"focus\", self.open);\n                bind(self._input, \"click\", self.open);\n            }\n            if (self.daysContainer !== undefined) {\n                bind(self.monthNav, \"click\", onMonthNavClick);\n                bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n                bind(self.daysContainer, \"click\", selectDate);\n            }\n            if (self.timeContainer !== undefined &&\n                self.minuteElement !== undefined &&\n                self.hourElement !== undefined) {\n                var selText = function (e) {\n                    return (0, dom_1.getEventTarget)(e).select();\n                };\n                bind(self.timeContainer, [\"increment\"], updateTime);\n                bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n                bind(self.timeContainer, \"click\", timeIncrement);\n                bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n                if (self.secondElement !== undefined)\n                    bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n                if (self.amPM !== undefined) {\n                    bind(self.amPM, \"click\", function (e) {\n                        updateTime(e);\n                    });\n                }\n            }\n            if (self.config.allowInput) {\n                bind(self._input, \"blur\", onBlur);\n            }\n        }\n        function jumpToDate(jumpDate, triggerChange) {\n            var jumpTo = jumpDate !== undefined\n                ? self.parseDate(jumpDate)\n                : self.latestSelectedDateObj ||\n                    (self.config.minDate && self.config.minDate > self.now\n                        ? self.config.minDate\n                        : self.config.maxDate && self.config.maxDate < self.now\n                            ? self.config.maxDate\n                            : self.now);\n            var oldYear = self.currentYear;\n            var oldMonth = self.currentMonth;\n            try {\n                if (jumpTo !== undefined) {\n                    self.currentYear = jumpTo.getFullYear();\n                    self.currentMonth = jumpTo.getMonth();\n                }\n            }\n            catch (e) {\n                e.message = \"Invalid date supplied: \" + jumpTo;\n                self.config.errorHandler(e);\n            }\n            if (triggerChange && self.currentYear !== oldYear) {\n                triggerEvent(\"onYearChange\");\n                buildMonthSwitch();\n            }\n            if (triggerChange &&\n                (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n                triggerEvent(\"onMonthChange\");\n            }\n            self.redraw();\n        }\n        function timeIncrement(e) {\n            var eventTarget = (0, dom_1.getEventTarget)(e);\n            if (~eventTarget.className.indexOf(\"arrow\"))\n                incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n        }\n        function incrementNumInput(e, delta, inputElem) {\n            var target = e && (0, dom_1.getEventTarget)(e);\n            var input = inputElem ||\n                (target && target.parentNode && target.parentNode.firstChild);\n            var event = createEvent(\"increment\");\n            event.delta = delta;\n            input && input.dispatchEvent(event);\n        }\n        function build() {\n            var fragment = window.document.createDocumentFragment();\n            self.calendarContainer = (0, dom_1.createElement)(\"div\", \"flatpickr-calendar\");\n            self.calendarContainer.tabIndex = -1;\n            if (!self.config.noCalendar) {\n                fragment.appendChild(buildMonthNav());\n                self.innerContainer = (0, dom_1.createElement)(\"div\", \"flatpickr-innerContainer\");\n                if (self.config.weekNumbers) {\n                    var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n                    self.innerContainer.appendChild(weekWrapper);\n                    self.weekNumbers = weekNumbers;\n                    self.weekWrapper = weekWrapper;\n                }\n                self.rContainer = (0, dom_1.createElement)(\"div\", \"flatpickr-rContainer\");\n                self.rContainer.appendChild(buildWeekdays());\n                if (!self.daysContainer) {\n                    self.daysContainer = (0, dom_1.createElement)(\"div\", \"flatpickr-days\");\n                    self.daysContainer.tabIndex = -1;\n                }\n                buildDays();\n                self.rContainer.appendChild(self.daysContainer);\n                self.innerContainer.appendChild(self.rContainer);\n                fragment.appendChild(self.innerContainer);\n            }\n            if (self.config.enableTime) {\n                fragment.appendChild(buildTime());\n            }\n            (0, dom_1.toggleClass)(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n            (0, dom_1.toggleClass)(self.calendarContainer, \"animate\", self.config.animate === true);\n            (0, dom_1.toggleClass)(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n            self.calendarContainer.appendChild(fragment);\n            var customAppend = self.config.appendTo !== undefined &&\n                self.config.appendTo.nodeType !== undefined;\n            if (self.config.inline || self.config.static) {\n                self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n                if (self.config.inline) {\n                    if (!customAppend && self.element.parentNode)\n                        self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n                    else if (self.config.appendTo !== undefined)\n                        self.config.appendTo.appendChild(self.calendarContainer);\n                }\n                if (self.config.static) {\n                    var wrapper = (0, dom_1.createElement)(\"div\", \"flatpickr-wrapper\");\n                    if (self.element.parentNode)\n                        self.element.parentNode.insertBefore(wrapper, self.element);\n                    wrapper.appendChild(self.element);\n                    if (self.altInput)\n                        wrapper.appendChild(self.altInput);\n                    wrapper.appendChild(self.calendarContainer);\n                }\n            }\n            if (!self.config.static && !self.config.inline)\n                (self.config.appendTo !== undefined\n                    ? self.config.appendTo\n                    : window.document.body).appendChild(self.calendarContainer);\n        }\n        function createDay(className, date, _dayNumber, i) {\n            var dateIsEnabled = isEnabled(date, true), dayElement = (0, dom_1.createElement)(\"span\", className, date.getDate().toString());\n            dayElement.dateObj = date;\n            dayElement.$i = i;\n            dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n            if (className.indexOf(\"hidden\") === -1 &&\n                (0, dates_1.compareDates)(date, self.now) === 0) {\n                self.todayDateElem = dayElement;\n                dayElement.classList.add(\"today\");\n                dayElement.setAttribute(\"aria-current\", \"date\");\n            }\n            if (dateIsEnabled) {\n                dayElement.tabIndex = -1;\n                if (isDateSelected(date)) {\n                    dayElement.classList.add(\"selected\");\n                    self.selectedDateElem = dayElement;\n                    if (self.config.mode === \"range\") {\n                        (0, dom_1.toggleClass)(dayElement, \"startRange\", self.selectedDates[0] &&\n                            (0, dates_1.compareDates)(date, self.selectedDates[0], true) === 0);\n                        (0, dom_1.toggleClass)(dayElement, \"endRange\", self.selectedDates[1] &&\n                            (0, dates_1.compareDates)(date, self.selectedDates[1], true) === 0);\n                        if (className === \"nextMonthDay\")\n                            dayElement.classList.add(\"inRange\");\n                    }\n                }\n            }\n            else {\n                dayElement.classList.add(\"flatpickr-disabled\");\n            }\n            if (self.config.mode === \"range\") {\n                if (isDateInRange(date) && !isDateSelected(date))\n                    dayElement.classList.add(\"inRange\");\n            }\n            if (self.weekNumbers &&\n                self.config.showMonths === 1 &&\n                className !== \"prevMonthDay\" &&\n                i % 7 === 6) {\n                self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n            }\n            triggerEvent(\"onDayCreate\", dayElement);\n            return dayElement;\n        }\n        function focusOnDayElem(targetNode) {\n            targetNode.focus();\n            if (self.config.mode === \"range\")\n                onMouseOver(targetNode);\n        }\n        function getFirstAvailableDay(delta) {\n            var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n            var endMonth = delta > 0 ? self.config.showMonths : -1;\n            for (var m = startMonth; m != endMonth; m += delta) {\n                var month = self.daysContainer.children[m];\n                var startIndex = delta > 0 ? 0 : month.children.length - 1;\n                var endIndex = delta > 0 ? month.children.length : -1;\n                for (var i = startIndex; i != endIndex; i += delta) {\n                    var c = month.children[i];\n                    if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n                        return c;\n                }\n            }\n            return undefined;\n        }\n        function getNextAvailableDay(current, delta) {\n            var givenMonth = current.className.indexOf(\"Month\") === -1\n                ? current.dateObj.getMonth()\n                : self.currentMonth;\n            var endMonth = delta > 0 ? self.config.showMonths : -1;\n            var loopDelta = delta > 0 ? 1 : -1;\n            for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n                var month = self.daysContainer.children[m];\n                var startIndex = givenMonth - self.currentMonth === m\n                    ? current.$i + delta\n                    : delta < 0\n                        ? month.children.length - 1\n                        : 0;\n                var numMonthDays = month.children.length;\n                for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n                    var c = month.children[i];\n                    if (c.className.indexOf(\"hidden\") === -1 &&\n                        isEnabled(c.dateObj) &&\n                        Math.abs(current.$i - i) >= Math.abs(delta))\n                        return focusOnDayElem(c);\n                }\n            }\n            self.changeMonth(loopDelta);\n            focusOnDay(getFirstAvailableDay(loopDelta), 0);\n            return undefined;\n        }\n        function focusOnDay(current, offset) {\n            var activeElement = getClosestActiveElement();\n            var dayFocused = isInView(activeElement || document.body);\n            var startElem = current !== undefined\n                ? current\n                : dayFocused\n                    ? activeElement\n                    : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n                        ? self.selectedDateElem\n                        : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n                            ? self.todayDateElem\n                            : getFirstAvailableDay(offset > 0 ? 1 : -1);\n            if (startElem === undefined) {\n                self._input.focus();\n            }\n            else if (!dayFocused) {\n                focusOnDayElem(startElem);\n            }\n            else {\n                getNextAvailableDay(startElem, offset);\n            }\n        }\n        function buildMonthDays(year, month) {\n            var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n            var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n            var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n            var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n            for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n                days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n            }\n            for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n                days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n            }\n            for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n                (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n                days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n            }\n            var dayContainer = (0, dom_1.createElement)(\"div\", \"dayContainer\");\n            dayContainer.appendChild(days);\n            return dayContainer;\n        }\n        function buildDays() {\n            if (self.daysContainer === undefined) {\n                return;\n            }\n            (0, dom_1.clearNode)(self.daysContainer);\n            if (self.weekNumbers)\n                (0, dom_1.clearNode)(self.weekNumbers);\n            var frag = document.createDocumentFragment();\n            for (var i = 0; i < self.config.showMonths; i++) {\n                var d = new Date(self.currentYear, self.currentMonth, 1);\n                d.setMonth(self.currentMonth + i);\n                frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n            }\n            self.daysContainer.appendChild(frag);\n            self.days = self.daysContainer.firstChild;\n            if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n                onMouseOver();\n            }\n        }\n        function buildMonthSwitch() {\n            if (self.config.showMonths > 1 ||\n                self.config.monthSelectorType !== \"dropdown\")\n                return;\n            var shouldBuildMonth = function (month) {\n                if (self.config.minDate !== undefined &&\n                    self.currentYear === self.config.minDate.getFullYear() &&\n                    month < self.config.minDate.getMonth()) {\n                    return false;\n                }\n                return !(self.config.maxDate !== undefined &&\n                    self.currentYear === self.config.maxDate.getFullYear() &&\n                    month > self.config.maxDate.getMonth());\n            };\n            self.monthsDropdownContainer.tabIndex = -1;\n            self.monthsDropdownContainer.innerHTML = \"\";\n            for (var i = 0; i < 12; i++) {\n                if (!shouldBuildMonth(i))\n                    continue;\n                var month = (0, dom_1.createElement)(\"option\", \"flatpickr-monthDropdown-month\");\n                month.value = new Date(self.currentYear, i).getMonth().toString();\n                month.textContent = (0, formatting_1.monthToStr)(i, self.config.shorthandCurrentMonth, self.l10n);\n                month.tabIndex = -1;\n                if (self.currentMonth === i) {\n                    month.selected = true;\n                }\n                self.monthsDropdownContainer.appendChild(month);\n            }\n        }\n        function buildMonth() {\n            var container = (0, dom_1.createElement)(\"div\", \"flatpickr-month\");\n            var monthNavFragment = window.document.createDocumentFragment();\n            var monthElement;\n            if (self.config.showMonths > 1 ||\n                self.config.monthSelectorType === \"static\") {\n                monthElement = (0, dom_1.createElement)(\"span\", \"cur-month\");\n            }\n            else {\n                self.monthsDropdownContainer = (0, dom_1.createElement)(\"select\", \"flatpickr-monthDropdown-months\");\n                self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n                bind(self.monthsDropdownContainer, \"change\", function (e) {\n                    var target = (0, dom_1.getEventTarget)(e);\n                    var selectedMonth = parseInt(target.value, 10);\n                    self.changeMonth(selectedMonth - self.currentMonth);\n                    triggerEvent(\"onMonthChange\");\n                });\n                buildMonthSwitch();\n                monthElement = self.monthsDropdownContainer;\n            }\n            var yearInput = (0, dom_1.createNumberInput)(\"cur-year\", { tabindex: \"-1\" });\n            var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n            yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n            if (self.config.minDate) {\n                yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n            }\n            if (self.config.maxDate) {\n                yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n                yearElement.disabled =\n                    !!self.config.minDate &&\n                        self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n            }\n            var currentMonth = (0, dom_1.createElement)(\"div\", \"flatpickr-current-month\");\n            currentMonth.appendChild(monthElement);\n            currentMonth.appendChild(yearInput);\n            monthNavFragment.appendChild(currentMonth);\n            container.appendChild(monthNavFragment);\n            return {\n                container: container,\n                yearElement: yearElement,\n                monthElement: monthElement,\n            };\n        }\n        function buildMonths() {\n            (0, dom_1.clearNode)(self.monthNav);\n            self.monthNav.appendChild(self.prevMonthNav);\n            if (self.config.showMonths) {\n                self.yearElements = [];\n                self.monthElements = [];\n            }\n            for (var m = self.config.showMonths; m--;) {\n                var month = buildMonth();\n                self.yearElements.push(month.yearElement);\n                self.monthElements.push(month.monthElement);\n                self.monthNav.appendChild(month.container);\n            }\n            self.monthNav.appendChild(self.nextMonthNav);\n        }\n        function buildMonthNav() {\n            self.monthNav = (0, dom_1.createElement)(\"div\", \"flatpickr-months\");\n            self.yearElements = [];\n            self.monthElements = [];\n            self.prevMonthNav = (0, dom_1.createElement)(\"span\", \"flatpickr-prev-month\");\n            self.prevMonthNav.innerHTML = self.config.prevArrow;\n            self.nextMonthNav = (0, dom_1.createElement)(\"span\", \"flatpickr-next-month\");\n            self.nextMonthNav.innerHTML = self.config.nextArrow;\n            buildMonths();\n            Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n                get: function () { return self.__hidePrevMonthArrow; },\n                set: function (bool) {\n                    if (self.__hidePrevMonthArrow !== bool) {\n                        (0, dom_1.toggleClass)(self.prevMonthNav, \"flatpickr-disabled\", bool);\n                        self.__hidePrevMonthArrow = bool;\n                    }\n                },\n            });\n            Object.defineProperty(self, \"_hideNextMonthArrow\", {\n                get: function () { return self.__hideNextMonthArrow; },\n                set: function (bool) {\n                    if (self.__hideNextMonthArrow !== bool) {\n                        (0, dom_1.toggleClass)(self.nextMonthNav, \"flatpickr-disabled\", bool);\n                        self.__hideNextMonthArrow = bool;\n                    }\n                },\n            });\n            self.currentYearElement = self.yearElements[0];\n            updateNavigationCurrentMonth();\n            return self.monthNav;\n        }\n        function buildTime() {\n            self.calendarContainer.classList.add(\"hasTime\");\n            if (self.config.noCalendar)\n                self.calendarContainer.classList.add(\"noCalendar\");\n            var defaults = (0, dates_1.getDefaultHours)(self.config);\n            self.timeContainer = (0, dom_1.createElement)(\"div\", \"flatpickr-time\");\n            self.timeContainer.tabIndex = -1;\n            var separator = (0, dom_1.createElement)(\"span\", \"flatpickr-time-separator\", \":\");\n            var hourInput = (0, dom_1.createNumberInput)(\"flatpickr-hour\", {\n                \"aria-label\": self.l10n.hourAriaLabel,\n            });\n            self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n            var minuteInput = (0, dom_1.createNumberInput)(\"flatpickr-minute\", {\n                \"aria-label\": self.l10n.minuteAriaLabel,\n            });\n            self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n            self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n            self.hourElement.value = (0, utils_1.pad)(self.latestSelectedDateObj\n                ? self.latestSelectedDateObj.getHours()\n                : self.config.time_24hr\n                    ? defaults.hours\n                    : military2ampm(defaults.hours));\n            self.minuteElement.value = (0, utils_1.pad)(self.latestSelectedDateObj\n                ? self.latestSelectedDateObj.getMinutes()\n                : defaults.minutes);\n            self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n            self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n            self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n            self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n            self.hourElement.setAttribute(\"maxlength\", \"2\");\n            self.minuteElement.setAttribute(\"min\", \"0\");\n            self.minuteElement.setAttribute(\"max\", \"59\");\n            self.minuteElement.setAttribute(\"maxlength\", \"2\");\n            self.timeContainer.appendChild(hourInput);\n            self.timeContainer.appendChild(separator);\n            self.timeContainer.appendChild(minuteInput);\n            if (self.config.time_24hr)\n                self.timeContainer.classList.add(\"time24hr\");\n            if (self.config.enableSeconds) {\n                self.timeContainer.classList.add(\"hasSeconds\");\n                var secondInput = (0, dom_1.createNumberInput)(\"flatpickr-second\");\n                self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n                self.secondElement.value = (0, utils_1.pad)(self.latestSelectedDateObj\n                    ? self.latestSelectedDateObj.getSeconds()\n                    : defaults.seconds);\n                self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n                self.secondElement.setAttribute(\"min\", \"0\");\n                self.secondElement.setAttribute(\"max\", \"59\");\n                self.secondElement.setAttribute(\"maxlength\", \"2\");\n                self.timeContainer.appendChild((0, dom_1.createElement)(\"span\", \"flatpickr-time-separator\", \":\"));\n                self.timeContainer.appendChild(secondInput);\n            }\n            if (!self.config.time_24hr) {\n                self.amPM = (0, dom_1.createElement)(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[(0, utils_1.int)((self.latestSelectedDateObj\n                    ? self.hourElement.value\n                    : self.config.defaultHour) > 11)]);\n                self.amPM.title = self.l10n.toggleTitle;\n                self.amPM.tabIndex = -1;\n                self.timeContainer.appendChild(self.amPM);\n            }\n            return self.timeContainer;\n        }\n        function buildWeekdays() {\n            if (!self.weekdayContainer)\n                self.weekdayContainer = (0, dom_1.createElement)(\"div\", \"flatpickr-weekdays\");\n            else\n                (0, dom_1.clearNode)(self.weekdayContainer);\n            for (var i = self.config.showMonths; i--;) {\n                var container = (0, dom_1.createElement)(\"div\", \"flatpickr-weekdaycontainer\");\n                self.weekdayContainer.appendChild(container);\n            }\n            updateWeekdays();\n            return self.weekdayContainer;\n        }\n        function updateWeekdays() {\n            if (!self.weekdayContainer) {\n                return;\n            }\n            var firstDayOfWeek = self.l10n.firstDayOfWeek;\n            var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n            if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n                weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n            }\n            for (var i = self.config.showMonths; i--;) {\n                self.weekdayContainer.children[i].innerHTML = \"\\n      <span class='flatpickr-weekday'>\\n        \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n      </span>\\n      \";\n            }\n        }\n        function buildWeeks() {\n            self.calendarContainer.classList.add(\"hasWeeks\");\n            var weekWrapper = (0, dom_1.createElement)(\"div\", \"flatpickr-weekwrapper\");\n            weekWrapper.appendChild((0, dom_1.createElement)(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n            var weekNumbers = (0, dom_1.createElement)(\"div\", \"flatpickr-weeks\");\n            weekWrapper.appendChild(weekNumbers);\n            return {\n                weekWrapper: weekWrapper,\n                weekNumbers: weekNumbers,\n            };\n        }\n        function changeMonth(value, isOffset) {\n            if (isOffset === void 0) {\n                isOffset = true;\n            }\n            var delta = isOffset ? value : value - self.currentMonth;\n            if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n                (delta > 0 && self._hideNextMonthArrow === true))\n                return;\n            self.currentMonth += delta;\n            if (self.currentMonth < 0 || self.currentMonth > 11) {\n                self.currentYear += self.currentMonth > 11 ? 1 : -1;\n                self.currentMonth = (self.currentMonth + 12) % 12;\n                triggerEvent(\"onYearChange\");\n                buildMonthSwitch();\n            }\n            buildDays();\n            triggerEvent(\"onMonthChange\");\n            updateNavigationCurrentMonth();\n        }\n        function clear(triggerChangeEvent, toInitial) {\n            if (triggerChangeEvent === void 0) {\n                triggerChangeEvent = true;\n            }\n            if (toInitial === void 0) {\n                toInitial = true;\n            }\n            self.input.value = \"\";\n            if (self.altInput !== undefined)\n                self.altInput.value = \"\";\n            if (self.mobileInput !== undefined)\n                self.mobileInput.value = \"\";\n            self.selectedDates = [];\n            self.latestSelectedDateObj = undefined;\n            if (toInitial === true) {\n                self.currentYear = self._initialDate.getFullYear();\n                self.currentMonth = self._initialDate.getMonth();\n            }\n            if (self.config.enableTime === true) {\n                var _a = (0, dates_1.getDefaultHours)(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n                setHours(hours, minutes, seconds);\n            }\n            self.redraw();\n            if (triggerChangeEvent)\n                triggerEvent(\"onChange\");\n        }\n        function close() {\n            self.isOpen = false;\n            if (!self.isMobile) {\n                if (self.calendarContainer !== undefined) {\n                    self.calendarContainer.classList.remove(\"open\");\n                }\n                if (self._input !== undefined) {\n                    self._input.classList.remove(\"active\");\n                }\n            }\n            triggerEvent(\"onClose\");\n        }\n        function destroy() {\n            if (self.config !== undefined)\n                triggerEvent(\"onDestroy\");\n            for (var i = self._handlers.length; i--;) {\n                self._handlers[i].remove();\n            }\n            self._handlers = [];\n            if (self.mobileInput) {\n                if (self.mobileInput.parentNode)\n                    self.mobileInput.parentNode.removeChild(self.mobileInput);\n                self.mobileInput = undefined;\n            }\n            else if (self.calendarContainer && self.calendarContainer.parentNode) {\n                if (self.config.static && self.calendarContainer.parentNode) {\n                    var wrapper = self.calendarContainer.parentNode;\n                    wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n                    if (wrapper.parentNode) {\n                        while (wrapper.firstChild)\n                            wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n                        wrapper.parentNode.removeChild(wrapper);\n                    }\n                }\n                else\n                    self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n            }\n            if (self.altInput) {\n                self.input.type = \"text\";\n                if (self.altInput.parentNode)\n                    self.altInput.parentNode.removeChild(self.altInput);\n                delete self.altInput;\n            }\n            if (self.input) {\n                self.input.type = self.input._type;\n                self.input.classList.remove(\"flatpickr-input\");\n                self.input.removeAttribute(\"readonly\");\n            }\n            [\n                \"_showTimeInput\",\n                \"latestSelectedDateObj\",\n                \"_hideNextMonthArrow\",\n                \"_hidePrevMonthArrow\",\n                \"__hideNextMonthArrow\",\n                \"__hidePrevMonthArrow\",\n                \"isMobile\",\n                \"isOpen\",\n                \"selectedDateElem\",\n                \"minDateHasTime\",\n                \"maxDateHasTime\",\n                \"days\",\n                \"daysContainer\",\n                \"_input\",\n                \"_positionElement\",\n                \"innerContainer\",\n                \"rContainer\",\n                \"monthNav\",\n                \"todayDateElem\",\n                \"calendarContainer\",\n                \"weekdayContainer\",\n                \"prevMonthNav\",\n                \"nextMonthNav\",\n                \"monthsDropdownContainer\",\n                \"currentMonthElement\",\n                \"currentYearElement\",\n                \"navigationCurrentMonth\",\n                \"selectedDateElem\",\n                \"config\",\n            ].forEach(function (k) {\n                try {\n                    delete self[k];\n                }\n                catch (_) { }\n            });\n        }\n        function isCalendarElem(elem) {\n            return self.calendarContainer.contains(elem);\n        }\n        function documentClick(e) {\n            if (self.isOpen && !self.config.inline) {\n                var eventTarget_1 = (0, dom_1.getEventTarget)(e);\n                var isCalendarElement = isCalendarElem(eventTarget_1);\n                var isInput = eventTarget_1 === self.input ||\n                    eventTarget_1 === self.altInput ||\n                    self.element.contains(eventTarget_1) ||\n                    (e.path &&\n                        e.path.indexOf &&\n                        (~e.path.indexOf(self.input) ||\n                            ~e.path.indexOf(self.altInput)));\n                var lostFocus = !isInput &&\n                    !isCalendarElement &&\n                    !isCalendarElem(e.relatedTarget);\n                var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n                    return elem.contains(eventTarget_1);\n                });\n                if (lostFocus && isIgnored) {\n                    if (self.config.allowInput) {\n                        self.setDate(self._input.value, false, self.config.altInput\n                            ? self.config.altFormat\n                            : self.config.dateFormat);\n                    }\n                    if (self.timeContainer !== undefined &&\n                        self.minuteElement !== undefined &&\n                        self.hourElement !== undefined &&\n                        self.input.value !== \"\" &&\n                        self.input.value !== undefined) {\n                        updateTime();\n                    }\n                    self.close();\n                    if (self.config &&\n                        self.config.mode === \"range\" &&\n                        self.selectedDates.length === 1)\n                        self.clear(false);\n                }\n            }\n        }\n        function changeYear(newYear) {\n            if (!newYear ||\n                (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n                (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n                return;\n            var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n            self.currentYear = newYearNum || self.currentYear;\n            if (self.config.maxDate &&\n                self.currentYear === self.config.maxDate.getFullYear()) {\n                self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n            }\n            else if (self.config.minDate &&\n                self.currentYear === self.config.minDate.getFullYear()) {\n                self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n            }\n            if (isNewYear) {\n                self.redraw();\n                triggerEvent(\"onYearChange\");\n                buildMonthSwitch();\n            }\n        }\n        function isEnabled(date, timeless) {\n            var _a;\n            if (timeless === void 0) {\n                timeless = true;\n            }\n            var dateToCheck = self.parseDate(date, undefined, timeless);\n            if ((self.config.minDate &&\n                dateToCheck &&\n                (0, dates_1.compareDates)(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n                (self.config.maxDate &&\n                    dateToCheck &&\n                    (0, dates_1.compareDates)(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n                return false;\n            if (!self.config.enable && self.config.disable.length === 0)\n                return true;\n            if (dateToCheck === undefined)\n                return false;\n            var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n            for (var i = 0, d = void 0; i < array.length; i++) {\n                d = array[i];\n                if (typeof d === \"function\" &&\n                    d(dateToCheck))\n                    return bool;\n                else if (d instanceof Date &&\n                    dateToCheck !== undefined &&\n                    d.getTime() === dateToCheck.getTime())\n                    return bool;\n                else if (typeof d === \"string\") {\n                    var parsed = self.parseDate(d, undefined, true);\n                    return parsed && parsed.getTime() === dateToCheck.getTime()\n                        ? bool\n                        : !bool;\n                }\n                else if (typeof d === \"object\" &&\n                    dateToCheck !== undefined &&\n                    d.from &&\n                    d.to &&\n                    dateToCheck.getTime() >= d.from.getTime() &&\n                    dateToCheck.getTime() <= d.to.getTime())\n                    return bool;\n            }\n            return !bool;\n        }\n        function isInView(elem) {\n            if (self.daysContainer !== undefined)\n                return (elem.className.indexOf(\"hidden\") === -1 &&\n                    elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n                    self.daysContainer.contains(elem));\n            return false;\n        }\n        function onBlur(e) {\n            var isInput = e.target === self._input;\n            var valueChanged = self._input.value.trimEnd() !== getDateStr();\n            if (isInput &&\n                valueChanged &&\n                !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n                self.setDate(self._input.value, true, e.target === self.altInput\n                    ? self.config.altFormat\n                    : self.config.dateFormat);\n            }\n        }\n        function onKeyDown(e) {\n            var eventTarget = (0, dom_1.getEventTarget)(e);\n            var isInput = self.config.wrap\n                ? element.contains(eventTarget)\n                : eventTarget === self._input;\n            var allowInput = self.config.allowInput;\n            var allowKeydown = self.isOpen && (!allowInput || !isInput);\n            var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n            if (e.keyCode === 13 && isInput) {\n                if (allowInput) {\n                    self.setDate(self._input.value, true, eventTarget === self.altInput\n                        ? self.config.altFormat\n                        : self.config.dateFormat);\n                    self.close();\n                    return eventTarget.blur();\n                }\n                else {\n                    self.open();\n                }\n            }\n            else if (isCalendarElem(eventTarget) ||\n                allowKeydown ||\n                allowInlineKeydown) {\n                var isTimeObj = !!self.timeContainer &&\n                    self.timeContainer.contains(eventTarget);\n                switch (e.keyCode) {\n                    case 13:\n                        if (isTimeObj) {\n                            e.preventDefault();\n                            updateTime();\n                            focusAndClose();\n                        }\n                        else\n                            selectDate(e);\n                        break;\n                    case 27:\n                        e.preventDefault();\n                        focusAndClose();\n                        break;\n                    case 8:\n                    case 46:\n                        if (isInput && !self.config.allowInput) {\n                            e.preventDefault();\n                            self.clear();\n                        }\n                        break;\n                    case 37:\n                    case 39:\n                        if (!isTimeObj && !isInput) {\n                            e.preventDefault();\n                            var activeElement = getClosestActiveElement();\n                            if (self.daysContainer !== undefined &&\n                                (allowInput === false ||\n                                    (activeElement && isInView(activeElement)))) {\n                                var delta_1 = e.keyCode === 39 ? 1 : -1;\n                                if (!e.ctrlKey)\n                                    focusOnDay(undefined, delta_1);\n                                else {\n                                    e.stopPropagation();\n                                    changeMonth(delta_1);\n                                    focusOnDay(getFirstAvailableDay(1), 0);\n                                }\n                            }\n                        }\n                        else if (self.hourElement)\n                            self.hourElement.focus();\n                        break;\n                    case 38:\n                    case 40:\n                        e.preventDefault();\n                        var delta = e.keyCode === 40 ? 1 : -1;\n                        if ((self.daysContainer &&\n                            eventTarget.$i !== undefined) ||\n                            eventTarget === self.input ||\n                            eventTarget === self.altInput) {\n                            if (e.ctrlKey) {\n                                e.stopPropagation();\n                                changeYear(self.currentYear - delta);\n                                focusOnDay(getFirstAvailableDay(1), 0);\n                            }\n                            else if (!isTimeObj)\n                                focusOnDay(undefined, delta * 7);\n                        }\n                        else if (eventTarget === self.currentYearElement) {\n                            changeYear(self.currentYear - delta);\n                        }\n                        else if (self.config.enableTime) {\n                            if (!isTimeObj && self.hourElement)\n                                self.hourElement.focus();\n                            updateTime(e);\n                            self._debouncedChange();\n                        }\n                        break;\n                    case 9:\n                        if (isTimeObj) {\n                            var elems = [\n                                self.hourElement,\n                                self.minuteElement,\n                                self.secondElement,\n                                self.amPM,\n                            ]\n                                .concat(self.pluginElements)\n                                .filter(function (x) { return x; });\n                            var i = elems.indexOf(eventTarget);\n                            if (i !== -1) {\n                                var target = elems[i + (e.shiftKey ? -1 : 1)];\n                                e.preventDefault();\n                                (target || self._input).focus();\n                            }\n                        }\n                        else if (!self.config.noCalendar &&\n                            self.daysContainer &&\n                            self.daysContainer.contains(eventTarget) &&\n                            e.shiftKey) {\n                            e.preventDefault();\n                            self._input.focus();\n                        }\n                        break;\n                    default:\n                        break;\n                }\n            }\n            if (self.amPM !== undefined && eventTarget === self.amPM) {\n                switch (e.key) {\n                    case self.l10n.amPM[0].charAt(0):\n                    case self.l10n.amPM[0].charAt(0).toLowerCase():\n                        self.amPM.textContent = self.l10n.amPM[0];\n                        setHoursFromInputs();\n                        updateValue();\n                        break;\n                    case self.l10n.amPM[1].charAt(0):\n                    case self.l10n.amPM[1].charAt(0).toLowerCase():\n                        self.amPM.textContent = self.l10n.amPM[1];\n                        setHoursFromInputs();\n                        updateValue();\n                        break;\n                }\n            }\n            if (isInput || isCalendarElem(eventTarget)) {\n                triggerEvent(\"onKeyDown\", e);\n            }\n        }\n        function onMouseOver(elem, cellClass) {\n            if (cellClass === void 0) {\n                cellClass = \"flatpickr-day\";\n            }\n            if (self.selectedDates.length !== 1 ||\n                (elem &&\n                    (!elem.classList.contains(cellClass) ||\n                        elem.classList.contains(\"flatpickr-disabled\"))))\n                return;\n            var hoverDate = elem\n                ? elem.dateObj.getTime()\n                : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n            var containsDisabled = false;\n            var minRange = 0, maxRange = 0;\n            for (var t = rangeStartDate; t < rangeEndDate; t += dates_1.duration.DAY) {\n                if (!isEnabled(new Date(t), true)) {\n                    containsDisabled =\n                        containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n                    if (t < initialDate && (!minRange || t > minRange))\n                        minRange = t;\n                    else if (t > initialDate && (!maxRange || t < maxRange))\n                        maxRange = t;\n                }\n            }\n            var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n            hoverableCells.forEach(function (dayElem) {\n                var date = dayElem.dateObj;\n                var timestamp = date.getTime();\n                var outOfRange = (minRange > 0 && timestamp < minRange) ||\n                    (maxRange > 0 && timestamp > maxRange);\n                if (outOfRange) {\n                    dayElem.classList.add(\"notAllowed\");\n                    [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n                        dayElem.classList.remove(c);\n                    });\n                    return;\n                }\n                else if (containsDisabled && !outOfRange)\n                    return;\n                [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n                    dayElem.classList.remove(c);\n                });\n                if (elem !== undefined) {\n                    elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n                        ? \"startRange\"\n                        : \"endRange\");\n                    if (initialDate < hoverDate && timestamp === initialDate)\n                        dayElem.classList.add(\"startRange\");\n                    else if (initialDate > hoverDate && timestamp === initialDate)\n                        dayElem.classList.add(\"endRange\");\n                    if (timestamp >= minRange &&\n                        (maxRange === 0 || timestamp <= maxRange) &&\n                        (0, dates_1.isBetween)(timestamp, initialDate, hoverDate))\n                        dayElem.classList.add(\"inRange\");\n                }\n            });\n        }\n        function onResize() {\n            if (self.isOpen && !self.config.static && !self.config.inline)\n                positionCalendar();\n        }\n        function open(e, positionElement) {\n            if (positionElement === void 0) {\n                positionElement = self._positionElement;\n            }\n            if (self.isMobile === true) {\n                if (e) {\n                    e.preventDefault();\n                    var eventTarget = (0, dom_1.getEventTarget)(e);\n                    if (eventTarget) {\n                        eventTarget.blur();\n                    }\n                }\n                if (self.mobileInput !== undefined) {\n                    self.mobileInput.focus();\n                    self.mobileInput.click();\n                }\n                triggerEvent(\"onOpen\");\n                return;\n            }\n            else if (self._input.disabled || self.config.inline) {\n                return;\n            }\n            var wasOpen = self.isOpen;\n            self.isOpen = true;\n            if (!wasOpen) {\n                self.calendarContainer.classList.add(\"open\");\n                self._input.classList.add(\"active\");\n                triggerEvent(\"onOpen\");\n                positionCalendar(positionElement);\n            }\n            if (self.config.enableTime === true && self.config.noCalendar === true) {\n                if (self.config.allowInput === false &&\n                    (e === undefined ||\n                        !self.timeContainer.contains(e.relatedTarget))) {\n                    setTimeout(function () { return self.hourElement.select(); }, 50);\n                }\n            }\n        }\n        function minMaxDateSetter(type) {\n            return function (date) {\n                var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n                var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n                if (dateObj !== undefined) {\n                    self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n                        dateObj.getHours() > 0 ||\n                            dateObj.getMinutes() > 0 ||\n                            dateObj.getSeconds() > 0;\n                }\n                if (self.selectedDates) {\n                    self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n                    if (!self.selectedDates.length && type === \"min\")\n                        setHoursFromDate(dateObj);\n                    updateValue();\n                }\n                if (self.daysContainer) {\n                    redraw();\n                    if (dateObj !== undefined)\n                        self.currentYearElement[type] = dateObj.getFullYear().toString();\n                    else\n                        self.currentYearElement.removeAttribute(type);\n                    self.currentYearElement.disabled =\n                        !!inverseDateObj &&\n                            dateObj !== undefined &&\n                            inverseDateObj.getFullYear() === dateObj.getFullYear();\n                }\n            };\n        }\n        function parseConfig() {\n            var boolOpts = [\n                \"wrap\",\n                \"weekNumbers\",\n                \"allowInput\",\n                \"allowInvalidPreload\",\n                \"clickOpens\",\n                \"time_24hr\",\n                \"enableTime\",\n                \"noCalendar\",\n                \"altInput\",\n                \"shorthandCurrentMonth\",\n                \"inline\",\n                \"static\",\n                \"enableSeconds\",\n                \"disableMobile\",\n            ];\n            var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n            var formats = {};\n            self.config.parseDate = userConfig.parseDate;\n            self.config.formatDate = userConfig.formatDate;\n            Object.defineProperty(self.config, \"enable\", {\n                get: function () { return self.config._enable; },\n                set: function (dates) {\n                    self.config._enable = parseDateRules(dates);\n                },\n            });\n            Object.defineProperty(self.config, \"disable\", {\n                get: function () { return self.config._disable; },\n                set: function (dates) {\n                    self.config._disable = parseDateRules(dates);\n                },\n            });\n            var timeMode = userConfig.mode === \"time\";\n            if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n                var defaultDateFormat = flatpickr.defaultConfig.dateFormat || options_1.defaults.dateFormat;\n                formats.dateFormat =\n                    userConfig.noCalendar || timeMode\n                        ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n                        : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n            }\n            if (userConfig.altInput &&\n                (userConfig.enableTime || timeMode) &&\n                !userConfig.altFormat) {\n                var defaultAltFormat = flatpickr.defaultConfig.altFormat || options_1.defaults.altFormat;\n                formats.altFormat =\n                    userConfig.noCalendar || timeMode\n                        ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n                        : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n            }\n            Object.defineProperty(self.config, \"minDate\", {\n                get: function () { return self.config._minDate; },\n                set: minMaxDateSetter(\"min\"),\n            });\n            Object.defineProperty(self.config, \"maxDate\", {\n                get: function () { return self.config._maxDate; },\n                set: minMaxDateSetter(\"max\"),\n            });\n            var minMaxTimeSetter = function (type) {\n                return function (val) {\n                    self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n                };\n            };\n            Object.defineProperty(self.config, \"minTime\", {\n                get: function () { return self.config._minTime; },\n                set: minMaxTimeSetter(\"min\"),\n            });\n            Object.defineProperty(self.config, \"maxTime\", {\n                get: function () { return self.config._maxTime; },\n                set: minMaxTimeSetter(\"max\"),\n            });\n            if (userConfig.mode === \"time\") {\n                self.config.noCalendar = true;\n                self.config.enableTime = true;\n            }\n            Object.assign(self.config, formats, userConfig);\n            for (var i = 0; i < boolOpts.length; i++)\n                self.config[boolOpts[i]] =\n                    self.config[boolOpts[i]] === true ||\n                        self.config[boolOpts[i]] === \"true\";\n            options_1.HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n                self.config[hook] = (0, utils_1.arrayify)(self.config[hook] || []).map(bindToInstance);\n            });\n            self.isMobile =\n                !self.config.disableMobile &&\n                    !self.config.inline &&\n                    self.config.mode === \"single\" &&\n                    !self.config.disable.length &&\n                    !self.config.enable &&\n                    !self.config.weekNumbers &&\n                    /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n            for (var i = 0; i < self.config.plugins.length; i++) {\n                var pluginConf = self.config.plugins[i](self) || {};\n                for (var key in pluginConf) {\n                    if (options_1.HOOKS.indexOf(key) > -1) {\n                        self.config[key] = (0, utils_1.arrayify)(pluginConf[key])\n                            .map(bindToInstance)\n                            .concat(self.config[key]);\n                    }\n                    else if (typeof userConfig[key] === \"undefined\")\n                        self.config[key] = pluginConf[key];\n                }\n            }\n            if (!userConfig.altInputClass) {\n                self.config.altInputClass =\n                    getInputElem().className + \" \" + self.config.altInputClass;\n            }\n            triggerEvent(\"onParseConfig\");\n        }\n        function getInputElem() {\n            return self.config.wrap\n                ? element.querySelector(\"[data-input]\")\n                : element;\n        }\n        function setupLocale() {\n            if (typeof self.config.locale !== \"object\" &&\n                typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n                self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n            self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n                ? self.config.locale\n                : self.config.locale !== \"default\"\n                    ? flatpickr.l10ns[self.config.locale]\n                    : undefined));\n            formatting_1.tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n            formatting_1.tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n            formatting_1.tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n            formatting_1.tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n            formatting_1.tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n            var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n            if (userConfig.time_24hr === undefined &&\n                flatpickr.defaultConfig.time_24hr === undefined) {\n                self.config.time_24hr = self.l10n.time_24hr;\n            }\n            self.formatDate = (0, dates_1.createDateFormatter)(self);\n            self.parseDate = (0, dates_1.createDateParser)({ config: self.config, l10n: self.l10n });\n        }\n        function positionCalendar(customPositionElement) {\n            if (typeof self.config.position === \"function\") {\n                return void self.config.position(self, customPositionElement);\n            }\n            if (self.calendarContainer === undefined)\n                return;\n            triggerEvent(\"onPreCalendarPosition\");\n            var positionElement = customPositionElement || self._positionElement;\n            var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n                (configPosVertical !== \"below\" &&\n                    distanceFromBottom < calendarHeight &&\n                    inputBounds.top > calendarHeight);\n            var top = window.pageYOffset +\n                inputBounds.top +\n                (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n            (0, dom_1.toggleClass)(self.calendarContainer, \"arrowTop\", !showOnTop);\n            (0, dom_1.toggleClass)(self.calendarContainer, \"arrowBottom\", showOnTop);\n            if (self.config.inline)\n                return;\n            var left = window.pageXOffset + inputBounds.left;\n            var isCenter = false;\n            var isRight = false;\n            if (configPosHorizontal === \"center\") {\n                left -= (calendarWidth - inputBounds.width) / 2;\n                isCenter = true;\n            }\n            else if (configPosHorizontal === \"right\") {\n                left -= calendarWidth - inputBounds.width;\n                isRight = true;\n            }\n            (0, dom_1.toggleClass)(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n            (0, dom_1.toggleClass)(self.calendarContainer, \"arrowCenter\", isCenter);\n            (0, dom_1.toggleClass)(self.calendarContainer, \"arrowRight\", isRight);\n            var right = window.document.body.offsetWidth -\n                (window.pageXOffset + inputBounds.right);\n            var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n            var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n            (0, dom_1.toggleClass)(self.calendarContainer, \"rightMost\", rightMost);\n            if (self.config.static)\n                return;\n            self.calendarContainer.style.top = top + \"px\";\n            if (!rightMost) {\n                self.calendarContainer.style.left = left + \"px\";\n                self.calendarContainer.style.right = \"auto\";\n            }\n            else if (!centerMost) {\n                self.calendarContainer.style.left = \"auto\";\n                self.calendarContainer.style.right = right + \"px\";\n            }\n            else {\n                var doc = getDocumentStyleSheet();\n                if (doc === undefined)\n                    return;\n                var bodyWidth = window.document.body.offsetWidth;\n                var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n                var centerBefore = \".flatpickr-calendar.centerMost:before\";\n                var centerAfter = \".flatpickr-calendar.centerMost:after\";\n                var centerIndex = doc.cssRules.length;\n                var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n                (0, dom_1.toggleClass)(self.calendarContainer, \"rightMost\", false);\n                (0, dom_1.toggleClass)(self.calendarContainer, \"centerMost\", true);\n                doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n                self.calendarContainer.style.left = centerLeft + \"px\";\n                self.calendarContainer.style.right = \"auto\";\n            }\n        }\n        function getDocumentStyleSheet() {\n            var editableSheet = null;\n            for (var i = 0; i < document.styleSheets.length; i++) {\n                var sheet = document.styleSheets[i];\n                if (!sheet.cssRules)\n                    continue;\n                try {\n                    sheet.cssRules;\n                }\n                catch (err) {\n                    continue;\n                }\n                editableSheet = sheet;\n                break;\n            }\n            return editableSheet != null ? editableSheet : createStyleSheet();\n        }\n        function createStyleSheet() {\n            var style = document.createElement(\"style\");\n            document.head.appendChild(style);\n            return style.sheet;\n        }\n        function redraw() {\n            if (self.config.noCalendar || self.isMobile)\n                return;\n            buildMonthSwitch();\n            updateNavigationCurrentMonth();\n            buildDays();\n        }\n        function focusAndClose() {\n            self._input.focus();\n            if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n                navigator.msMaxTouchPoints !== undefined) {\n                setTimeout(self.close, 0);\n            }\n            else {\n                self.close();\n            }\n        }\n        function selectDate(e) {\n            e.preventDefault();\n            e.stopPropagation();\n            var isSelectable = function (day) {\n                return day.classList &&\n                    day.classList.contains(\"flatpickr-day\") &&\n                    !day.classList.contains(\"flatpickr-disabled\") &&\n                    !day.classList.contains(\"notAllowed\");\n            };\n            var t = (0, dom_1.findParent)((0, dom_1.getEventTarget)(e), isSelectable);\n            if (t === undefined)\n                return;\n            var target = t;\n            var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n            var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n                selectedDate.getMonth() >\n                    self.currentMonth + self.config.showMonths - 1) &&\n                self.config.mode !== \"range\";\n            self.selectedDateElem = target;\n            if (self.config.mode === \"single\")\n                self.selectedDates = [selectedDate];\n            else if (self.config.mode === \"multiple\") {\n                var selectedIndex = isDateSelected(selectedDate);\n                if (selectedIndex)\n                    self.selectedDates.splice(parseInt(selectedIndex), 1);\n                else\n                    self.selectedDates.push(selectedDate);\n            }\n            else if (self.config.mode === \"range\") {\n                if (self.selectedDates.length === 2) {\n                    self.clear(false, false);\n                }\n                self.latestSelectedDateObj = selectedDate;\n                self.selectedDates.push(selectedDate);\n                if ((0, dates_1.compareDates)(selectedDate, self.selectedDates[0], true) !== 0)\n                    self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n            }\n            setHoursFromInputs();\n            if (shouldChangeMonth) {\n                var isNewYear = self.currentYear !== selectedDate.getFullYear();\n                self.currentYear = selectedDate.getFullYear();\n                self.currentMonth = selectedDate.getMonth();\n                if (isNewYear) {\n                    triggerEvent(\"onYearChange\");\n                    buildMonthSwitch();\n                }\n                triggerEvent(\"onMonthChange\");\n            }\n            updateNavigationCurrentMonth();\n            buildDays();\n            updateValue();\n            if (!shouldChangeMonth &&\n                self.config.mode !== \"range\" &&\n                self.config.showMonths === 1)\n                focusOnDayElem(target);\n            else if (self.selectedDateElem !== undefined &&\n                self.hourElement === undefined) {\n                self.selectedDateElem && self.selectedDateElem.focus();\n            }\n            if (self.hourElement !== undefined)\n                self.hourElement !== undefined && self.hourElement.focus();\n            if (self.config.closeOnSelect) {\n                var single = self.config.mode === \"single\" && !self.config.enableTime;\n                var range = self.config.mode === \"range\" &&\n                    self.selectedDates.length === 2 &&\n                    !self.config.enableTime;\n                if (single || range) {\n                    focusAndClose();\n                }\n            }\n            triggerChange();\n        }\n        var CALLBACKS = {\n            locale: [setupLocale, updateWeekdays],\n            showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n            minDate: [jumpToDate],\n            maxDate: [jumpToDate],\n            positionElement: [updatePositionElement],\n            clickOpens: [\n                function () {\n                    if (self.config.clickOpens === true) {\n                        bind(self._input, \"focus\", self.open);\n                        bind(self._input, \"click\", self.open);\n                    }\n                    else {\n                        self._input.removeEventListener(\"focus\", self.open);\n                        self._input.removeEventListener(\"click\", self.open);\n                    }\n                },\n            ],\n        };\n        function set(option, value) {\n            if (option !== null && typeof option === \"object\") {\n                Object.assign(self.config, option);\n                for (var key in option) {\n                    if (CALLBACKS[key] !== undefined)\n                        CALLBACKS[key].forEach(function (x) { return x(); });\n                }\n            }\n            else {\n                self.config[option] = value;\n                if (CALLBACKS[option] !== undefined)\n                    CALLBACKS[option].forEach(function (x) { return x(); });\n                else if (options_1.HOOKS.indexOf(option) > -1)\n                    self.config[option] = (0, utils_1.arrayify)(value);\n            }\n            self.redraw();\n            updateValue(true);\n        }\n        function setSelectedDate(inputDate, format) {\n            var dates = [];\n            if (inputDate instanceof Array)\n                dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n            else if (inputDate instanceof Date || typeof inputDate === \"number\")\n                dates = [self.parseDate(inputDate, format)];\n            else if (typeof inputDate === \"string\") {\n                switch (self.config.mode) {\n                    case \"single\":\n                    case \"time\":\n                        dates = [self.parseDate(inputDate, format)];\n                        break;\n                    case \"multiple\":\n                        dates = inputDate\n                            .split(self.config.conjunction)\n                            .map(function (date) { return self.parseDate(date, format); });\n                        break;\n                    case \"range\":\n                        dates = inputDate\n                            .split(self.l10n.rangeSeparator)\n                            .map(function (date) { return self.parseDate(date, format); });\n                        break;\n                    default:\n                        break;\n                }\n            }\n            else\n                self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n            self.selectedDates = (self.config.allowInvalidPreload\n                ? dates\n                : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n            if (self.config.mode === \"range\")\n                self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n        }\n        function setDate(date, triggerChange, format) {\n            if (triggerChange === void 0) {\n                triggerChange = false;\n            }\n            if (format === void 0) {\n                format = self.config.dateFormat;\n            }\n            if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n                return self.clear(triggerChange);\n            setSelectedDate(date, format);\n            self.latestSelectedDateObj =\n                self.selectedDates[self.selectedDates.length - 1];\n            self.redraw();\n            jumpToDate(undefined, triggerChange);\n            setHoursFromDate();\n            if (self.selectedDates.length === 0) {\n                self.clear(false);\n            }\n            updateValue(triggerChange);\n            if (triggerChange)\n                triggerEvent(\"onChange\");\n        }\n        function parseDateRules(arr) {\n            return arr\n                .slice()\n                .map(function (rule) {\n                if (typeof rule === \"string\" ||\n                    typeof rule === \"number\" ||\n                    rule instanceof Date) {\n                    return self.parseDate(rule, undefined, true);\n                }\n                else if (rule &&\n                    typeof rule === \"object\" &&\n                    rule.from &&\n                    rule.to)\n                    return {\n                        from: self.parseDate(rule.from, undefined),\n                        to: self.parseDate(rule.to, undefined),\n                    };\n                return rule;\n            })\n                .filter(function (x) { return x; });\n        }\n        function setupDates() {\n            self.selectedDates = [];\n            self.now = self.parseDate(self.config.now) || new Date();\n            var preloadedDate = self.config.defaultDate ||\n                ((self.input.nodeName === \"INPUT\" ||\n                    self.input.nodeName === \"TEXTAREA\") &&\n                    self.input.placeholder &&\n                    self.input.value === self.input.placeholder\n                    ? null\n                    : self.input.value);\n            if (preloadedDate)\n                setSelectedDate(preloadedDate, self.config.dateFormat);\n            self._initialDate =\n                self.selectedDates.length > 0\n                    ? self.selectedDates[0]\n                    : self.config.minDate &&\n                        self.config.minDate.getTime() > self.now.getTime()\n                        ? self.config.minDate\n                        : self.config.maxDate &&\n                            self.config.maxDate.getTime() < self.now.getTime()\n                            ? self.config.maxDate\n                            : self.now;\n            self.currentYear = self._initialDate.getFullYear();\n            self.currentMonth = self._initialDate.getMonth();\n            if (self.selectedDates.length > 0)\n                self.latestSelectedDateObj = self.selectedDates[0];\n            if (self.config.minTime !== undefined)\n                self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n            if (self.config.maxTime !== undefined)\n                self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n            self.minDateHasTime =\n                !!self.config.minDate &&\n                    (self.config.minDate.getHours() > 0 ||\n                        self.config.minDate.getMinutes() > 0 ||\n                        self.config.minDate.getSeconds() > 0);\n            self.maxDateHasTime =\n                !!self.config.maxDate &&\n                    (self.config.maxDate.getHours() > 0 ||\n                        self.config.maxDate.getMinutes() > 0 ||\n                        self.config.maxDate.getSeconds() > 0);\n        }\n        function setupInputs() {\n            self.input = getInputElem();\n            if (!self.input) {\n                self.config.errorHandler(new Error(\"Invalid input element specified\"));\n                return;\n            }\n            self.input._type = self.input.type;\n            self.input.type = \"text\";\n            self.input.classList.add(\"flatpickr-input\");\n            self._input = self.input;\n            if (self.config.altInput) {\n                self.altInput = (0, dom_1.createElement)(self.input.nodeName, self.config.altInputClass);\n                self._input = self.altInput;\n                self.altInput.placeholder = self.input.placeholder;\n                self.altInput.disabled = self.input.disabled;\n                self.altInput.required = self.input.required;\n                self.altInput.tabIndex = self.input.tabIndex;\n                self.altInput.type = \"text\";\n                self.input.setAttribute(\"type\", \"hidden\");\n                if (!self.config.static && self.input.parentNode)\n                    self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n            }\n            if (!self.config.allowInput)\n                self._input.setAttribute(\"readonly\", \"readonly\");\n            updatePositionElement();\n        }\n        function updatePositionElement() {\n            self._positionElement = self.config.positionElement || self._input;\n        }\n        function setupMobile() {\n            var inputType = self.config.enableTime\n                ? self.config.noCalendar\n                    ? \"time\"\n                    : \"datetime-local\"\n                : \"date\";\n            self.mobileInput = (0, dom_1.createElement)(\"input\", self.input.className + \" flatpickr-mobile\");\n            self.mobileInput.tabIndex = 1;\n            self.mobileInput.type = inputType;\n            self.mobileInput.disabled = self.input.disabled;\n            self.mobileInput.required = self.input.required;\n            self.mobileInput.placeholder = self.input.placeholder;\n            self.mobileFormatStr =\n                inputType === \"datetime-local\"\n                    ? \"Y-m-d\\\\TH:i:S\"\n                    : inputType === \"date\"\n                        ? \"Y-m-d\"\n                        : \"H:i:S\";\n            if (self.selectedDates.length > 0) {\n                self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n            }\n            if (self.config.minDate)\n                self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n            if (self.config.maxDate)\n                self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n            if (self.input.getAttribute(\"step\"))\n                self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n            self.input.type = \"hidden\";\n            if (self.altInput !== undefined)\n                self.altInput.type = \"hidden\";\n            try {\n                if (self.input.parentNode)\n                    self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n            }\n            catch (_a) { }\n            bind(self.mobileInput, \"change\", function (e) {\n                self.setDate((0, dom_1.getEventTarget)(e).value, false, self.mobileFormatStr);\n                triggerEvent(\"onChange\");\n                triggerEvent(\"onClose\");\n            });\n        }\n        function toggle(e) {\n            if (self.isOpen === true)\n                return self.close();\n            self.open(e);\n        }\n        function triggerEvent(event, data) {\n            if (self.config === undefined)\n                return;\n            var hooks = self.config[event];\n            if (hooks !== undefined && hooks.length > 0) {\n                for (var i = 0; hooks[i] && i < hooks.length; i++)\n                    hooks[i](self.selectedDates, self.input.value, self, data);\n            }\n            if (event === \"onChange\") {\n                self.input.dispatchEvent(createEvent(\"change\"));\n                self.input.dispatchEvent(createEvent(\"input\"));\n            }\n        }\n        function createEvent(name) {\n            var e = document.createEvent(\"Event\");\n            e.initEvent(name, true, true);\n            return e;\n        }\n        function isDateSelected(date) {\n            for (var i = 0; i < self.selectedDates.length; i++) {\n                var selectedDate = self.selectedDates[i];\n                if (selectedDate instanceof Date &&\n                    (0, dates_1.compareDates)(selectedDate, date) === 0)\n                    return \"\" + i;\n            }\n            return false;\n        }\n        function isDateInRange(date) {\n            if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n                return false;\n            return ((0, dates_1.compareDates)(date, self.selectedDates[0]) >= 0 &&\n                (0, dates_1.compareDates)(date, self.selectedDates[1]) <= 0);\n        }\n        function updateNavigationCurrentMonth() {\n            if (self.config.noCalendar || self.isMobile || !self.monthNav)\n                return;\n            self.yearElements.forEach(function (yearElement, i) {\n                var d = new Date(self.currentYear, self.currentMonth, 1);\n                d.setMonth(self.currentMonth + i);\n                if (self.config.showMonths > 1 ||\n                    self.config.monthSelectorType === \"static\") {\n                    self.monthElements[i].textContent =\n                        (0, formatting_1.monthToStr)(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n                }\n                else {\n                    self.monthsDropdownContainer.value = d.getMonth().toString();\n                }\n                yearElement.value = d.getFullYear().toString();\n            });\n            self._hidePrevMonthArrow =\n                self.config.minDate !== undefined &&\n                    (self.currentYear === self.config.minDate.getFullYear()\n                        ? self.currentMonth <= self.config.minDate.getMonth()\n                        : self.currentYear < self.config.minDate.getFullYear());\n            self._hideNextMonthArrow =\n                self.config.maxDate !== undefined &&\n                    (self.currentYear === self.config.maxDate.getFullYear()\n                        ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n                        : self.currentYear > self.config.maxDate.getFullYear());\n        }\n        function getDateStr(specificFormat) {\n            var format = specificFormat ||\n                (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n            return self.selectedDates\n                .map(function (dObj) { return self.formatDate(dObj, format); })\n                .filter(function (d, i, arr) {\n                return self.config.mode !== \"range\" ||\n                    self.config.enableTime ||\n                    arr.indexOf(d) === i;\n            })\n                .join(self.config.mode !== \"range\"\n                ? self.config.conjunction\n                : self.l10n.rangeSeparator);\n        }\n        function updateValue(triggerChange) {\n            if (triggerChange === void 0) {\n                triggerChange = true;\n            }\n            if (self.mobileInput !== undefined && self.mobileFormatStr) {\n                self.mobileInput.value =\n                    self.latestSelectedDateObj !== undefined\n                        ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n                        : \"\";\n            }\n            self.input.value = getDateStr(self.config.dateFormat);\n            if (self.altInput !== undefined) {\n                self.altInput.value = getDateStr(self.config.altFormat);\n            }\n            if (triggerChange !== false)\n                triggerEvent(\"onValueUpdate\");\n        }\n        function onMonthNavClick(e) {\n            var eventTarget = (0, dom_1.getEventTarget)(e);\n            var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n            var isNextMonth = self.nextMonthNav.contains(eventTarget);\n            if (isPrevMonth || isNextMonth) {\n                changeMonth(isPrevMonth ? -1 : 1);\n            }\n            else if (self.yearElements.indexOf(eventTarget) >= 0) {\n                eventTarget.select();\n            }\n            else if (eventTarget.classList.contains(\"arrowUp\")) {\n                self.changeYear(self.currentYear + 1);\n            }\n            else if (eventTarget.classList.contains(\"arrowDown\")) {\n                self.changeYear(self.currentYear - 1);\n            }\n        }\n        function timeWrapper(e) {\n            e.preventDefault();\n            var isKeyDown = e.type === \"keydown\", eventTarget = (0, dom_1.getEventTarget)(e), input = eventTarget;\n            if (self.amPM !== undefined && eventTarget === self.amPM) {\n                self.amPM.textContent =\n                    self.l10n.amPM[(0, utils_1.int)(self.amPM.textContent === self.l10n.amPM[0])];\n            }\n            var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n                (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n            var newValue = curValue + step * delta;\n            if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n                var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n                if (newValue < min) {\n                    newValue =\n                        max +\n                            newValue +\n                            (0, utils_1.int)(!isHourElem) +\n                            ((0, utils_1.int)(isHourElem) && (0, utils_1.int)(!self.amPM));\n                    if (isMinuteElem)\n                        incrementNumInput(undefined, -1, self.hourElement);\n                }\n                else if (newValue > max) {\n                    newValue =\n                        input === self.hourElement ? newValue - max - (0, utils_1.int)(!self.amPM) : min;\n                    if (isMinuteElem)\n                        incrementNumInput(undefined, 1, self.hourElement);\n                }\n                if (self.amPM &&\n                    isHourElem &&\n                    (step === 1\n                        ? newValue + curValue === 23\n                        : Math.abs(newValue - curValue) > step)) {\n                    self.amPM.textContent =\n                        self.l10n.amPM[(0, utils_1.int)(self.amPM.textContent === self.l10n.amPM[0])];\n                }\n                input.value = (0, utils_1.pad)(newValue);\n            }\n        }\n        init();\n        return self;\n    }\n    function _flatpickr(nodeList, config) {\n        var nodes = Array.prototype.slice\n            .call(nodeList)\n            .filter(function (x) { return x instanceof HTMLElement; });\n        var instances = [];\n        for (var i = 0; i < nodes.length; i++) {\n            var node = nodes[i];\n            try {\n                if (node.getAttribute(\"data-fp-omit\") !== null)\n                    continue;\n                if (node._flatpickr !== undefined) {\n                    node._flatpickr.destroy();\n                    node._flatpickr = undefined;\n                }\n                node._flatpickr = FlatpickrInstance(node, config || {});\n                instances.push(node._flatpickr);\n            }\n            catch (e) {\n                console.error(e);\n            }\n        }\n        return instances.length === 1 ? instances[0] : instances;\n    }\n    if (typeof HTMLElement !== \"undefined\" &&\n        typeof HTMLCollection !== \"undefined\" &&\n        typeof NodeList !== \"undefined\") {\n        HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n            return _flatpickr(this, config);\n        };\n        HTMLElement.prototype.flatpickr = function (config) {\n            return _flatpickr([this], config);\n        };\n    }\n    var flatpickr = function (selector, config) {\n        if (typeof selector === \"string\") {\n            return _flatpickr(window.document.querySelectorAll(selector), config);\n        }\n        else if (selector instanceof Node) {\n            return _flatpickr([selector], config);\n        }\n        else {\n            return _flatpickr(selector, config);\n        }\n    };\n    flatpickr.defaultConfig = {};\n    flatpickr.l10ns = {\n        en: __assign({}, default_1.default),\n        default: __assign({}, default_1.default),\n    };\n    flatpickr.localize = function (l10n) {\n        flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n    };\n    flatpickr.setDefaults = function (config) {\n        flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n    };\n    flatpickr.parseDate = (0, dates_1.createDateParser)({});\n    flatpickr.formatDate = (0, dates_1.createDateFormatter)({});\n    flatpickr.compareDates = dates_1.compareDates;\n    if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n        jQuery.fn.flatpickr = function (config) {\n            return _flatpickr(this, config);\n        };\n    }\n    Date.prototype.fp_incr = function (days) {\n        return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n    };\n    if (typeof window !== \"undefined\") {\n        window.flatpickr = flatpickr;\n    }\n    exports.default = flatpickr;\n}\n","min_source":"function _(e,t,n,a,i){a();const o=e(\"tslib\");var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},r.apply(this,arguments)},l=this&&this.__spreadArrays||function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var a=Array(e),i=0;for(t=0;t<n;t++)for(var o=arguments[t],r=0,l=o.length;r<l;r++,i++)a[i]=o[r];return a};const c=e(\"651d495396\"),s=o.__importDefault(e(\"3bfa124fda\")),d=e(\"15458073ce\"),u=e(\"6b6749c6cf\"),f=e(\"1bb8c967d1\"),m=e(\"3d14787c35\");e(\"6f45019dc1\");var g=300;function p(e,t){var n={config:r(r({},c.defaults),v.defaultConfig),l10n:s.default};function a(){var e;return(null===(e=n.calendarContainer)||void 0===e?void 0:e.getRootNode()).activeElement||document.activeElement}function i(e){return e.bind(n)}function o(){var e=n.config;!1===e.weekNumbers&&1===e.showMonths||!0!==e.noCalendar&&window.requestAnimationFrame((function(){if(void 0!==n.calendarContainer&&(n.calendarContainer.style.visibility=\"hidden\",n.calendarContainer.style.display=\"block\"),void 0!==n.daysContainer){var t=(n.days.offsetWidth+1)*e.showMonths;n.daysContainer.style.width=t+\"px\",n.calendarContainer.style.width=t+(void 0!==n.weekWrapper?n.weekWrapper.offsetWidth:0)+\"px\",n.calendarContainer.style.removeProperty(\"visibility\"),n.calendarContainer.style.removeProperty(\"display\")}}))}function p(e){if(0===n.selectedDates.length){var t=void 0===n.config.minDate||(0,f.compareDates)(new Date,n.config.minDate)>=0?new Date:new Date(n.config.minDate.getTime()),a=(0,f.getDefaultHours)(n.config);t.setHours(a.hours,a.minutes,a.seconds,t.getMilliseconds()),n.selectedDates=[t],n.latestSelectedDateObj=t}void 0!==e&&\"blur\"!==e.type&&function(e){e.preventDefault();var t=\"keydown\"===e.type,a=(0,u.getEventTarget)(e),i=a;void 0!==n.amPM&&a===n.amPM&&(n.amPM.textContent=n.l10n.amPM[(0,d.int)(n.amPM.textContent===n.l10n.amPM[0])]);var o=parseFloat(i.getAttribute(\"min\")),r=parseFloat(i.getAttribute(\"max\")),l=parseFloat(i.getAttribute(\"step\")),c=parseInt(i.value,10),s=e.delta||(t?38===e.which?1:-1:0),f=c+l*s;if(void 0!==i.value&&2===i.value.length){var m=i===n.hourElement,g=i===n.minuteElement;f<o?(f=r+f+(0,d.int)(!m)+((0,d.int)(m)&&(0,d.int)(!n.amPM)),g&&x(void 0,-1,n.hourElement)):f>r&&(f=i===n.hourElement?f-r-(0,d.int)(!n.amPM):o,g&&x(void 0,1,n.hourElement)),n.amPM&&m&&(1===l?f+c===23:Math.abs(f-c)>l)&&(n.amPM.textContent=n.l10n.amPM[(0,d.int)(n.amPM.textContent===n.l10n.amPM[0])]),i.value=(0,d.pad)(f)}}(e);var i=n._input.value;h(),se(),n._input.value!==i&&n._debouncedChange()}function h(){if(void 0!==n.hourElement&&void 0!==n.minuteElement){var e,t,a=(parseInt(n.hourElement.value.slice(-2),10)||0)%24,i=(parseInt(n.minuteElement.value,10)||0)%60,o=void 0!==n.secondElement?(parseInt(n.secondElement.value,10)||0)%60:0;void 0!==n.amPM&&(e=a,t=n.amPM.textContent,a=e%12+12*(0,d.int)(t===n.l10n.amPM[1]));var r=void 0!==n.config.minTime||n.config.minDate&&n.minDateHasTime&&n.latestSelectedDateObj&&0===(0,f.compareDates)(n.latestSelectedDateObj,n.config.minDate,!0),l=void 0!==n.config.maxTime||n.config.maxDate&&n.maxDateHasTime&&n.latestSelectedDateObj&&0===(0,f.compareDates)(n.latestSelectedDateObj,n.config.maxDate,!0);if(void 0!==n.config.maxTime&&void 0!==n.config.minTime&&n.config.minTime>n.config.maxTime){var c=(0,f.calculateSecondsSinceMidnight)(n.config.minTime.getHours(),n.config.minTime.getMinutes(),n.config.minTime.getSeconds()),s=(0,f.calculateSecondsSinceMidnight)(n.config.maxTime.getHours(),n.config.maxTime.getMinutes(),n.config.maxTime.getSeconds()),u=(0,f.calculateSecondsSinceMidnight)(a,i,o);if(u>s&&u<c){var m=(0,f.parseSeconds)(c);a=m[0],i=m[1],o=m[2]}}else{if(l){var g=void 0!==n.config.maxTime?n.config.maxTime:n.config.maxDate;(a=Math.min(a,g.getHours()))===g.getHours()&&(i=Math.min(i,g.getMinutes())),i===g.getMinutes()&&(o=Math.min(o,g.getSeconds()))}if(r){var p=void 0!==n.config.minTime?n.config.minTime:n.config.minDate;(a=Math.max(a,p.getHours()))===p.getHours()&&i<p.getMinutes()&&(i=p.getMinutes()),i===p.getMinutes()&&(o=Math.max(o,p.getSeconds()))}}C(a,i,o)}}function D(e){var t=e||n.latestSelectedDateObj;t&&t instanceof Date&&C(t.getHours(),t.getMinutes(),t.getSeconds())}function C(e,t,a){void 0!==n.latestSelectedDateObj&&n.latestSelectedDateObj.setHours(e%24,t,a||0,0),n.hourElement&&n.minuteElement&&!n.isMobile&&(n.hourElement.value=(0,d.pad)(n.config.time_24hr?e:(12+e)%12+12*(0,d.int)(e%12==0)),n.minuteElement.value=(0,d.pad)(t),void 0!==n.amPM&&(n.amPM.textContent=n.l10n.amPM[(0,d.int)(e>=12)]),void 0!==n.secondElement&&(n.secondElement.value=(0,d.pad)(a)))}function b(e){var t=(0,u.getEventTarget)(e),n=parseInt(t.value)+(e.delta||0);(n/1e3>1||\"Enter\"===e.key&&!/[^\\d]/.test(n.toString()))&&R(n)}function M(e,t,a,i){return t instanceof Array?t.forEach((function(t){return M(e,t,a,i)})):e instanceof Array?e.forEach((function(e){return M(e,t,a,i)})):(e.addEventListener(t,a,i),void n._handlers.push({remove:function(){return e.removeEventListener(t,a,i)}}))}function y(){ie(\"onChange\")}function w(e,t){var a=void 0!==e?n.parseDate(e):n.latestSelectedDateObj||(n.config.minDate&&n.config.minDate>n.now?n.config.minDate:n.config.maxDate&&n.config.maxDate<n.now?n.config.maxDate:n.now),i=n.currentYear,o=n.currentMonth;try{void 0!==a&&(n.currentYear=a.getFullYear(),n.currentMonth=a.getMonth())}catch(e){e.message=\"Invalid date supplied: \"+a,n.config.errorHandler(e)}t&&n.currentYear!==i&&(ie(\"onYearChange\"),N()),!t||n.currentYear===i&&n.currentMonth===o||ie(\"onMonthChange\"),n.redraw()}function E(e){var t=(0,u.getEventTarget)(e);~t.className.indexOf(\"arrow\")&&x(e,t.classList.contains(\"arrowUp\")?1:-1)}function x(e,t,n){var a=e&&(0,u.getEventTarget)(e),i=n||a&&a.parentNode&&a.parentNode.firstChild,o=oe(\"increment\");o.delta=t,i&&i.dispatchEvent(o)}function k(e,t,a,i){var o=W(t,!0),r=(0,u.createElement)(\"span\",e,t.getDate().toString());return r.dateObj=t,r.$i=i,r.setAttribute(\"aria-label\",n.formatDate(t,n.config.ariaDateFormat)),-1===e.indexOf(\"hidden\")&&0===(0,f.compareDates)(t,n.now)&&(n.todayDateElem=r,r.classList.add(\"today\"),r.setAttribute(\"aria-current\",\"date\")),o?(r.tabIndex=-1,re(t)&&(r.classList.add(\"selected\"),n.selectedDateElem=r,\"range\"===n.config.mode&&((0,u.toggleClass)(r,\"startRange\",n.selectedDates[0]&&0===(0,f.compareDates)(t,n.selectedDates[0],!0)),(0,u.toggleClass)(r,\"endRange\",n.selectedDates[1]&&0===(0,f.compareDates)(t,n.selectedDates[1],!0)),\"nextMonthDay\"===e&&r.classList.add(\"inRange\")))):r.classList.add(\"flatpickr-disabled\"),\"range\"===n.config.mode&&function(e){return!(\"range\"!==n.config.mode||n.selectedDates.length<2)&&((0,f.compareDates)(e,n.selectedDates[0])>=0&&(0,f.compareDates)(e,n.selectedDates[1])<=0)}(t)&&!re(t)&&r.classList.add(\"inRange\"),n.weekNumbers&&1===n.config.showMonths&&\"prevMonthDay\"!==e&&i%7==6&&n.weekNumbers.insertAdjacentHTML(\"beforeend\",\"<span class='flatpickr-day'>\"+n.config.getWeek(t)+\"</span>\"),ie(\"onDayCreate\",r),r}function T(e){e.focus(),\"range\"===n.config.mode&&J(e)}function _(e){for(var t=e>0?0:n.config.showMonths-1,a=e>0?n.config.showMonths:-1,i=t;i!=a;i+=e)for(var o=n.daysContainer.children[i],r=e>0?0:o.children.length-1,l=e>0?o.children.length:-1,c=r;c!=l;c+=e){var s=o.children[c];if(-1===s.className.indexOf(\"hidden\")&&W(s.dateObj))return s}}function I(e,t){var i=a(),o=B(i||document.body),r=void 0!==e?e:o?i:void 0!==n.selectedDateElem&&B(n.selectedDateElem)?n.selectedDateElem:void 0!==n.todayDateElem&&B(n.todayDateElem)?n.todayDateElem:_(t>0?1:-1);void 0===r?n._input.focus():o?function(e,t){for(var a=-1===e.className.indexOf(\"Month\")?e.dateObj.getMonth():n.currentMonth,i=t>0?n.config.showMonths:-1,o=t>0?1:-1,r=a-n.currentMonth;r!=i;r+=o)for(var l=n.daysContainer.children[r],c=a-n.currentMonth===r?e.$i+t:t<0?l.children.length-1:0,s=l.children.length,d=c;d>=0&&d<s&&d!=(t>0?s:-1);d+=o){var u=l.children[d];if(-1===u.className.indexOf(\"hidden\")&&W(u.dateObj)&&Math.abs(e.$i-d)>=Math.abs(t))return T(u)}n.changeMonth(o),I(_(o),0)}(r,t):T(r)}function S(e,t){for(var a=(new Date(e,t,1).getDay()-n.l10n.firstDayOfWeek+7)%7,i=n.utils.getDaysInMonth((t-1+12)%12,e),o=n.utils.getDaysInMonth(t,e),r=window.document.createDocumentFragment(),l=n.config.showMonths>1,c=l?\"prevMonthDay hidden\":\"prevMonthDay\",s=l?\"nextMonthDay hidden\":\"nextMonthDay\",d=i+1-a,f=0;d<=i;d++,f++)r.appendChild(k(\"flatpickr-day \"+c,new Date(e,t-1,d),0,f));for(d=1;d<=o;d++,f++)r.appendChild(k(\"flatpickr-day\",new Date(e,t,d),0,f));for(var m=o+1;m<=42-a&&(1===n.config.showMonths||f%7!=0);m++,f++)r.appendChild(k(\"flatpickr-day \"+s,new Date(e,t+1,m%o),0,f));var g=(0,u.createElement)(\"div\",\"dayContainer\");return g.appendChild(r),g}function O(){if(void 0!==n.daysContainer){(0,u.clearNode)(n.daysContainer),n.weekNumbers&&(0,u.clearNode)(n.weekNumbers);for(var e=document.createDocumentFragment(),t=0;t<n.config.showMonths;t++){var a=new Date(n.currentYear,n.currentMonth,1);a.setMonth(n.currentMonth+t),e.appendChild(S(a.getFullYear(),a.getMonth()))}n.daysContainer.appendChild(e),n.days=n.daysContainer.firstChild,\"range\"===n.config.mode&&1===n.selectedDates.length&&J()}}function N(){if(!(n.config.showMonths>1||\"dropdown\"!==n.config.monthSelectorType)){var e=function(e){return!(void 0!==n.config.minDate&&n.currentYear===n.config.minDate.getFullYear()&&e<n.config.minDate.getMonth())&&!(void 0!==n.config.maxDate&&n.currentYear===n.config.maxDate.getFullYear()&&e>n.config.maxDate.getMonth())};n.monthsDropdownContainer.tabIndex=-1,n.monthsDropdownContainer.innerHTML=\"\";for(var t=0;t<12;t++)if(e(t)){var a=(0,u.createElement)(\"option\",\"flatpickr-monthDropdown-month\");a.value=new Date(n.currentYear,t).getMonth().toString(),a.textContent=(0,m.monthToStr)(t,n.config.shorthandCurrentMonth,n.l10n),a.tabIndex=-1,n.currentMonth===t&&(a.selected=!0),n.monthsDropdownContainer.appendChild(a)}}}function A(){var e,t=(0,u.createElement)(\"div\",\"flatpickr-month\"),a=window.document.createDocumentFragment();n.config.showMonths>1||\"static\"===n.config.monthSelectorType?e=(0,u.createElement)(\"span\",\"cur-month\"):(n.monthsDropdownContainer=(0,u.createElement)(\"select\",\"flatpickr-monthDropdown-months\"),n.monthsDropdownContainer.setAttribute(\"aria-label\",n.l10n.monthAriaLabel),M(n.monthsDropdownContainer,\"change\",(function(e){var t=(0,u.getEventTarget)(e),a=parseInt(t.value,10);n.changeMonth(a-n.currentMonth),ie(\"onMonthChange\")})),N(),e=n.monthsDropdownContainer);var i=(0,u.createNumberInput)(\"cur-year\",{tabindex:\"-1\"}),o=i.getElementsByTagName(\"input\")[0];o.setAttribute(\"aria-label\",n.l10n.yearAriaLabel),n.config.minDate&&o.setAttribute(\"min\",n.config.minDate.getFullYear().toString()),n.config.maxDate&&(o.setAttribute(\"max\",n.config.maxDate.getFullYear().toString()),o.disabled=!!n.config.minDate&&n.config.minDate.getFullYear()===n.config.maxDate.getFullYear());var r=(0,u.createElement)(\"div\",\"flatpickr-current-month\");return r.appendChild(e),r.appendChild(i),a.appendChild(r),t.appendChild(a),{container:t,yearElement:o,monthElement:e}}function P(){(0,u.clearNode)(n.monthNav),n.monthNav.appendChild(n.prevMonthNav),n.config.showMonths&&(n.yearElements=[],n.monthElements=[]);for(var e=n.config.showMonths;e--;){var t=A();n.yearElements.push(t.yearElement),n.monthElements.push(t.monthElement),n.monthNav.appendChild(t.container)}n.monthNav.appendChild(n.nextMonthNav)}function Y(){n.weekdayContainer?(0,u.clearNode)(n.weekdayContainer):n.weekdayContainer=(0,u.createElement)(\"div\",\"flatpickr-weekdays\");for(var e=n.config.showMonths;e--;){var t=(0,u.createElement)(\"div\",\"flatpickr-weekdaycontainer\");n.weekdayContainer.appendChild(t)}return F(),n.weekdayContainer}function F(){if(n.weekdayContainer){var e=n.l10n.firstDayOfWeek,t=l(n.l10n.weekdays.shorthand);e>0&&e<t.length&&(t=l(t.splice(e,t.length),t.splice(0,e)));for(var a=n.config.showMonths;a--;)n.weekdayContainer.children[a].innerHTML=\"\\n      <span class='flatpickr-weekday'>\\n        \"+t.join(\"</span><span class='flatpickr-weekday'>\")+\"\\n      </span>\\n      \"}}function j(e,t){void 0===t&&(t=!0);var a=t?e:e-n.currentMonth;a<0&&!0===n._hidePrevMonthArrow||a>0&&!0===n._hideNextMonthArrow||(n.currentMonth+=a,(n.currentMonth<0||n.currentMonth>11)&&(n.currentYear+=n.currentMonth>11?1:-1,n.currentMonth=(n.currentMonth+12)%12,ie(\"onYearChange\"),N()),O(),ie(\"onMonthChange\"),le())}function L(e){return n.calendarContainer.contains(e)}function H(e){if(n.isOpen&&!n.config.inline){var t=(0,u.getEventTarget)(e),a=L(t),i=!(t===n.input||t===n.altInput||n.element.contains(t)||e.path&&e.path.indexOf&&(~e.path.indexOf(n.input)||~e.path.indexOf(n.altInput)))&&!a&&!L(e.relatedTarget),o=!n.config.ignoredFocusElements.some((function(e){return e.contains(t)}));i&&o&&(n.config.allowInput&&n.setDate(n._input.value,!1,n.config.altInput?n.config.altFormat:n.config.dateFormat),void 0!==n.timeContainer&&void 0!==n.minuteElement&&void 0!==n.hourElement&&\"\"!==n.input.value&&void 0!==n.input.value&&p(),n.close(),n.config&&\"range\"===n.config.mode&&1===n.selectedDates.length&&n.clear(!1))}}function R(e){if(!(!e||n.config.minDate&&e<n.config.minDate.getFullYear()||n.config.maxDate&&e>n.config.maxDate.getFullYear())){var t=e,a=n.currentYear!==t;n.currentYear=t||n.currentYear,n.config.maxDate&&n.currentYear===n.config.maxDate.getFullYear()?n.currentMonth=Math.min(n.config.maxDate.getMonth(),n.currentMonth):n.config.minDate&&n.currentYear===n.config.minDate.getFullYear()&&(n.currentMonth=Math.max(n.config.minDate.getMonth(),n.currentMonth)),a&&(n.redraw(),ie(\"onYearChange\"),N())}}function W(e,t){var a;void 0===t&&(t=!0);var i=n.parseDate(e,void 0,t);if(n.config.minDate&&i&&(0,f.compareDates)(i,n.config.minDate,void 0!==t?t:!n.minDateHasTime)<0||n.config.maxDate&&i&&(0,f.compareDates)(i,n.config.maxDate,void 0!==t?t:!n.maxDateHasTime)>0)return!1;if(!n.config.enable&&0===n.config.disable.length)return!0;if(void 0===i)return!1;for(var o=!!n.config.enable,r=null!==(a=n.config.enable)&&void 0!==a?a:n.config.disable,l=0,c=void 0;l<r.length;l++){if(\"function\"==typeof(c=r[l])&&c(i))return o;if(c instanceof Date&&void 0!==i&&c.getTime()===i.getTime())return o;if(\"string\"==typeof c){var s=n.parseDate(c,void 0,!0);return s&&s.getTime()===i.getTime()?o:!o}if(\"object\"==typeof c&&void 0!==i&&c.from&&c.to&&i.getTime()>=c.from.getTime()&&i.getTime()<=c.to.getTime())return o}return!o}function B(e){return void 0!==n.daysContainer&&(-1===e.className.indexOf(\"hidden\")&&-1===e.className.indexOf(\"flatpickr-disabled\")&&n.daysContainer.contains(e))}function K(e){var t=e.target===n._input,a=n._input.value.trimEnd()!==ce();!t||!a||e.relatedTarget&&L(e.relatedTarget)||n.setDate(n._input.value,!0,e.target===n.altInput?n.config.altFormat:n.config.dateFormat)}function q(t){var i=(0,u.getEventTarget)(t),o=n.config.wrap?e.contains(i):i===n._input,r=n.config.allowInput,l=n.isOpen&&(!r||!o),c=n.config.inline&&o&&!r;if(13===t.keyCode&&o){if(r)return n.setDate(n._input.value,!0,i===n.altInput?n.config.altFormat:n.config.dateFormat),n.close(),i.blur();n.open()}else if(L(i)||l||c){var s=!!n.timeContainer&&n.timeContainer.contains(i);switch(t.keyCode){case 13:s?(t.preventDefault(),p(),G()):Z(t);break;case 27:t.preventDefault(),G();break;case 8:case 46:o&&!n.config.allowInput&&(t.preventDefault(),n.clear());break;case 37:case 39:if(s||o)n.hourElement&&n.hourElement.focus();else{t.preventDefault();var d=a();if(void 0!==n.daysContainer&&(!1===r||d&&B(d))){var f=39===t.keyCode?1:-1;t.ctrlKey?(t.stopPropagation(),j(f),I(_(1),0)):I(void 0,f)}}break;case 38:case 40:t.preventDefault();var m=40===t.keyCode?1:-1;n.daysContainer&&void 0!==i.$i||i===n.input||i===n.altInput?t.ctrlKey?(t.stopPropagation(),R(n.currentYear-m),I(_(1),0)):s||I(void 0,7*m):i===n.currentYearElement?R(n.currentYear-m):n.config.enableTime&&(!s&&n.hourElement&&n.hourElement.focus(),p(t),n._debouncedChange());break;case 9:if(s){var g=[n.hourElement,n.minuteElement,n.secondElement,n.amPM].concat(n.pluginElements).filter((function(e){return e})),v=g.indexOf(i);if(-1!==v){var D=g[v+(t.shiftKey?-1:1)];t.preventDefault(),(D||n._input).focus()}}else!n.config.noCalendar&&n.daysContainer&&n.daysContainer.contains(i)&&t.shiftKey&&(t.preventDefault(),n._input.focus())}}if(void 0!==n.amPM&&i===n.amPM)switch(t.key){case n.l10n.amPM[0].charAt(0):case n.l10n.amPM[0].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[0],h(),se();break;case n.l10n.amPM[1].charAt(0):case n.l10n.amPM[1].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[1],h(),se()}(o||L(i))&&ie(\"onKeyDown\",t)}function J(e,t){if(void 0===t&&(t=\"flatpickr-day\"),1===n.selectedDates.length&&(!e||e.classList.contains(t)&&!e.classList.contains(\"flatpickr-disabled\"))){for(var a=e?e.dateObj.getTime():n.days.firstElementChild.dateObj.getTime(),i=n.parseDate(n.selectedDates[0],void 0,!0).getTime(),o=Math.min(a,n.selectedDates[0].getTime()),r=Math.max(a,n.selectedDates[0].getTime()),l=!1,c=0,s=0,d=o;d<r;d+=f.duration.DAY)W(new Date(d),!0)||(l=l||d>o&&d<r,d<i&&(!c||d>c)?c=d:d>i&&(!s||d<s)&&(s=d));Array.from(n.rContainer.querySelectorAll(\"*:nth-child(-n+\"+n.config.showMonths+\") > .\"+t)).forEach((function(t){var o=t.dateObj.getTime(),r=c>0&&o<c||s>0&&o>s;if(r)return t.classList.add(\"notAllowed\"),void[\"inRange\",\"startRange\",\"endRange\"].forEach((function(e){t.classList.remove(e)}));l&&!r||([\"startRange\",\"inRange\",\"endRange\",\"notAllowed\"].forEach((function(e){t.classList.remove(e)})),void 0!==e&&(e.classList.add(a<=n.selectedDates[0].getTime()?\"startRange\":\"endRange\"),i<a&&o===i?t.classList.add(\"startRange\"):i>a&&o===i&&t.classList.add(\"endRange\"),o>=c&&(0===s||o<=s)&&(0,f.isBetween)(o,i,a)&&t.classList.add(\"inRange\")))}))}}function U(){!n.isOpen||n.config.static||n.config.inline||X()}function $(e){return function(t){var a=n.config[\"_\"+e+\"Date\"]=n.parseDate(t,n.config.dateFormat),i=n.config[\"_\"+(\"min\"===e?\"max\":\"min\")+\"Date\"];void 0!==a&&(n[\"min\"===e?\"minDateHasTime\":\"maxDateHasTime\"]=a.getHours()>0||a.getMinutes()>0||a.getSeconds()>0),n.selectedDates&&(n.selectedDates=n.selectedDates.filter((function(e){return W(e)})),n.selectedDates.length||\"min\"!==e||D(a),se()),n.daysContainer&&(z(),void 0!==a?n.currentYearElement[e]=a.getFullYear().toString():n.currentYearElement.removeAttribute(e),n.currentYearElement.disabled=!!i&&void 0!==a&&i.getFullYear()===a.getFullYear())}}function Q(){return n.config.wrap?e.querySelector(\"[data-input]\"):e}function V(){\"object\"!=typeof n.config.locale&&void 0===v.l10ns[n.config.locale]&&n.config.errorHandler(new Error(\"flatpickr: invalid locale \"+n.config.locale)),n.l10n=r(r({},v.l10ns.default),\"object\"==typeof n.config.locale?n.config.locale:\"default\"!==n.config.locale?v.l10ns[n.config.locale]:void 0),m.tokenRegex.D=\"(\"+n.l10n.weekdays.shorthand.join(\"|\")+\")\",m.tokenRegex.l=\"(\"+n.l10n.weekdays.longhand.join(\"|\")+\")\",m.tokenRegex.M=\"(\"+n.l10n.months.shorthand.join(\"|\")+\")\",m.tokenRegex.F=\"(\"+n.l10n.months.longhand.join(\"|\")+\")\",m.tokenRegex.K=\"(\"+n.l10n.amPM[0]+\"|\"+n.l10n.amPM[1]+\"|\"+n.l10n.amPM[0].toLowerCase()+\"|\"+n.l10n.amPM[1].toLowerCase()+\")\",void 0===r(r({},t),JSON.parse(JSON.stringify(e.dataset||{}))).time_24hr&&void 0===v.defaultConfig.time_24hr&&(n.config.time_24hr=n.l10n.time_24hr),n.formatDate=(0,f.createDateFormatter)(n),n.parseDate=(0,f.createDateParser)({config:n.config,l10n:n.l10n})}function X(e){if(\"function\"!=typeof n.config.position){if(void 0!==n.calendarContainer){ie(\"onPreCalendarPosition\");var t=e||n._positionElement,a=Array.prototype.reduce.call(n.calendarContainer.children,(function(e,t){return e+t.offsetHeight}),0),i=n.calendarContainer.offsetWidth,o=n.config.position.split(\" \"),r=o[0],l=o.length>1?o[1]:null,c=t.getBoundingClientRect(),s=window.innerHeight-c.bottom,d=\"above\"===r||\"below\"!==r&&s<a&&c.top>a,f=window.pageYOffset+c.top+(d?-a-2:t.offsetHeight+2);if((0,u.toggleClass)(n.calendarContainer,\"arrowTop\",!d),(0,u.toggleClass)(n.calendarContainer,\"arrowBottom\",d),!n.config.inline){var m=window.pageXOffset+c.left,g=!1,p=!1;\"center\"===l?(m-=(i-c.width)/2,g=!0):\"right\"===l&&(m-=i-c.width,p=!0),(0,u.toggleClass)(n.calendarContainer,\"arrowLeft\",!g&&!p),(0,u.toggleClass)(n.calendarContainer,\"arrowCenter\",g),(0,u.toggleClass)(n.calendarContainer,\"arrowRight\",p);var h=window.document.body.offsetWidth-(window.pageXOffset+c.right),v=m+i>window.document.body.offsetWidth,D=h+i>window.document.body.offsetWidth;if((0,u.toggleClass)(n.calendarContainer,\"rightMost\",v),!n.config.static)if(n.calendarContainer.style.top=f+\"px\",v)if(D){var C=function(){for(var e=null,t=0;t<document.styleSheets.length;t++){var n=document.styleSheets[t];if(n.cssRules){try{n.cssRules}catch(e){continue}e=n;break}}return null!=e?e:(a=document.createElement(\"style\"),document.head.appendChild(a),a.sheet);var a}();if(void 0===C)return;var b=window.document.body.offsetWidth,M=Math.max(0,b/2-i/2),y=C.cssRules.length,w=\"{left:\"+c.left+\"px;right:auto;}\";(0,u.toggleClass)(n.calendarContainer,\"rightMost\",!1),(0,u.toggleClass)(n.calendarContainer,\"centerMost\",!0),C.insertRule(\".flatpickr-calendar.centerMost:before,.flatpickr-calendar.centerMost:after\"+w,y),n.calendarContainer.style.left=M+\"px\",n.calendarContainer.style.right=\"auto\"}else n.calendarContainer.style.left=\"auto\",n.calendarContainer.style.right=h+\"px\";else n.calendarContainer.style.left=m+\"px\",n.calendarContainer.style.right=\"auto\"}}}else n.config.position(n,e)}function z(){n.config.noCalendar||n.isMobile||(N(),le(),O())}function G(){n._input.focus(),-1!==window.navigator.userAgent.indexOf(\"MSIE\")||void 0!==navigator.msMaxTouchPoints?setTimeout(n.close,0):n.close()}function Z(e){e.preventDefault(),e.stopPropagation();var t=(0,u.findParent)((0,u.getEventTarget)(e),(function(e){return e.classList&&e.classList.contains(\"flatpickr-day\")&&!e.classList.contains(\"flatpickr-disabled\")&&!e.classList.contains(\"notAllowed\")}));if(void 0!==t){var a=t,i=n.latestSelectedDateObj=new Date(a.dateObj.getTime()),o=(i.getMonth()<n.currentMonth||i.getMonth()>n.currentMonth+n.config.showMonths-1)&&\"range\"!==n.config.mode;if(n.selectedDateElem=a,\"single\"===n.config.mode)n.selectedDates=[i];else if(\"multiple\"===n.config.mode){var r=re(i);r?n.selectedDates.splice(parseInt(r),1):n.selectedDates.push(i)}else\"range\"===n.config.mode&&(2===n.selectedDates.length&&n.clear(!1,!1),n.latestSelectedDateObj=i,n.selectedDates.push(i),0!==(0,f.compareDates)(i,n.selectedDates[0],!0)&&n.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()})));if(h(),o){var l=n.currentYear!==i.getFullYear();n.currentYear=i.getFullYear(),n.currentMonth=i.getMonth(),l&&(ie(\"onYearChange\"),N()),ie(\"onMonthChange\")}if(le(),O(),se(),o||\"range\"===n.config.mode||1!==n.config.showMonths?void 0!==n.selectedDateElem&&void 0===n.hourElement&&n.selectedDateElem&&n.selectedDateElem.focus():T(a),void 0!==n.hourElement&&void 0!==n.hourElement&&n.hourElement.focus(),n.config.closeOnSelect){var c=\"single\"===n.config.mode&&!n.config.enableTime,s=\"range\"===n.config.mode&&2===n.selectedDates.length&&!n.config.enableTime;(c||s)&&G()}y()}}n.parseDate=(0,f.createDateParser)({config:n.config,l10n:n.l10n}),n._handlers=[],n.pluginElements=[],n.loadedPlugins=[],n._bind=M,n._setHoursFromDate=D,n._positionCalendar=X,n.changeMonth=j,n.changeYear=R,n.clear=function(e,t){void 0===e&&(e=!0);void 0===t&&(t=!0);n.input.value=\"\",void 0!==n.altInput&&(n.altInput.value=\"\");void 0!==n.mobileInput&&(n.mobileInput.value=\"\");n.selectedDates=[],n.latestSelectedDateObj=void 0,!0===t&&(n.currentYear=n._initialDate.getFullYear(),n.currentMonth=n._initialDate.getMonth());if(!0===n.config.enableTime){var a=(0,f.getDefaultHours)(n.config);C(a.hours,a.minutes,a.seconds)}n.redraw(),e&&ie(\"onChange\")},n.close=function(){n.isOpen=!1,n.isMobile||(void 0!==n.calendarContainer&&n.calendarContainer.classList.remove(\"open\"),void 0!==n._input&&n._input.classList.remove(\"active\"));ie(\"onClose\")},n.onMouseOver=J,n._createElement=u.createElement,n.createDay=k,n.destroy=function(){void 0!==n.config&&ie(\"onDestroy\");for(var e=n._handlers.length;e--;)n._handlers[e].remove();if(n._handlers=[],n.mobileInput)n.mobileInput.parentNode&&n.mobileInput.parentNode.removeChild(n.mobileInput),n.mobileInput=void 0;else if(n.calendarContainer&&n.calendarContainer.parentNode)if(n.config.static&&n.calendarContainer.parentNode){var t=n.calendarContainer.parentNode;if(t.lastChild&&t.removeChild(t.lastChild),t.parentNode){for(;t.firstChild;)t.parentNode.insertBefore(t.firstChild,t);t.parentNode.removeChild(t)}}else n.calendarContainer.parentNode.removeChild(n.calendarContainer);n.altInput&&(n.input.type=\"text\",n.altInput.parentNode&&n.altInput.parentNode.removeChild(n.altInput),delete n.altInput);n.input&&(n.input.type=n.input._type,n.input.classList.remove(\"flatpickr-input\"),n.input.removeAttribute(\"readonly\"));[\"_showTimeInput\",\"latestSelectedDateObj\",\"_hideNextMonthArrow\",\"_hidePrevMonthArrow\",\"__hideNextMonthArrow\",\"__hidePrevMonthArrow\",\"isMobile\",\"isOpen\",\"selectedDateElem\",\"minDateHasTime\",\"maxDateHasTime\",\"days\",\"daysContainer\",\"_input\",\"_positionElement\",\"innerContainer\",\"rContainer\",\"monthNav\",\"todayDateElem\",\"calendarContainer\",\"weekdayContainer\",\"prevMonthNav\",\"nextMonthNav\",\"monthsDropdownContainer\",\"currentMonthElement\",\"currentYearElement\",\"navigationCurrentMonth\",\"selectedDateElem\",\"config\"].forEach((function(e){try{delete n[e]}catch(e){}}))},n.isEnabled=W,n.jumpToDate=w,n.updateValue=se,n.open=function(e,t){void 0===t&&(t=n._positionElement);if(!0===n.isMobile){if(e){e.preventDefault();var a=(0,u.getEventTarget)(e);a&&a.blur()}return void 0!==n.mobileInput&&(n.mobileInput.focus(),n.mobileInput.click()),void ie(\"onOpen\")}if(n._input.disabled||n.config.inline)return;var i=n.isOpen;n.isOpen=!0,i||(n.calendarContainer.classList.add(\"open\"),n._input.classList.add(\"active\"),ie(\"onOpen\"),X(t));!0===n.config.enableTime&&!0===n.config.noCalendar&&(!1!==n.config.allowInput||void 0!==e&&n.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return n.hourElement.select()}),50))},n.redraw=z,n.set=function(e,t){if(null!==e&&\"object\"==typeof e)for(var a in Object.assign(n.config,e),e)void 0!==ee[a]&&ee[a].forEach((function(e){return e()}));else n.config[e]=t,void 0!==ee[e]?ee[e].forEach((function(e){return e()})):c.HOOKS.indexOf(e)>-1&&(n.config[e]=(0,d.arrayify)(t));n.redraw(),se(!0)},n.setDate=function(e,t,a){void 0===t&&(t=!1);void 0===a&&(a=n.config.dateFormat);if(0!==e&&!e||e instanceof Array&&0===e.length)return n.clear(t);te(e,a),n.latestSelectedDateObj=n.selectedDates[n.selectedDates.length-1],n.redraw(),w(void 0,t),D(),0===n.selectedDates.length&&n.clear(!1);se(t),t&&ie(\"onChange\")},n.toggle=function(e){if(!0===n.isOpen)return n.close();n.open(e)};var ee={locale:[V,F],showMonths:[P,o,Y],minDate:[w],maxDate:[w],positionElement:[ae],clickOpens:[function(){!0===n.config.clickOpens?(M(n._input,\"focus\",n.open),M(n._input,\"click\",n.open)):(n._input.removeEventListener(\"focus\",n.open),n._input.removeEventListener(\"click\",n.open))}]};function te(e,t){var a=[];if(e instanceof Array)a=e.map((function(e){return n.parseDate(e,t)}));else if(e instanceof Date||\"number\"==typeof e)a=[n.parseDate(e,t)];else if(\"string\"==typeof e)switch(n.config.mode){case\"single\":case\"time\":a=[n.parseDate(e,t)];break;case\"multiple\":a=e.split(n.config.conjunction).map((function(e){return n.parseDate(e,t)}));break;case\"range\":a=e.split(n.l10n.rangeSeparator).map((function(e){return n.parseDate(e,t)}))}else n.config.errorHandler(new Error(\"Invalid date supplied: \"+JSON.stringify(e)));n.selectedDates=n.config.allowInvalidPreload?a:a.filter((function(e){return e instanceof Date&&W(e,!1)})),\"range\"===n.config.mode&&n.selectedDates.sort((function(e,t){return e.getTime()-t.getTime()}))}function ne(e){return e.slice().map((function(e){return\"string\"==typeof e||\"number\"==typeof e||e instanceof Date?n.parseDate(e,void 0,!0):e&&\"object\"==typeof e&&e.from&&e.to?{from:n.parseDate(e.from,void 0),to:n.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function ae(){n._positionElement=n.config.positionElement||n._input}function ie(e,t){if(void 0!==n.config){var a=n.config[e];if(void 0!==a&&a.length>0)for(var i=0;a[i]&&i<a.length;i++)a[i](n.selectedDates,n.input.value,n,t);\"onChange\"===e&&(n.input.dispatchEvent(oe(\"change\")),n.input.dispatchEvent(oe(\"input\")))}}function oe(e){var t=document.createEvent(\"Event\");return t.initEvent(e,!0,!0),t}function re(e){for(var t=0;t<n.selectedDates.length;t++){var a=n.selectedDates[t];if(a instanceof Date&&0===(0,f.compareDates)(a,e))return\"\"+t}return!1}function le(){n.config.noCalendar||n.isMobile||!n.monthNav||(n.yearElements.forEach((function(e,t){var a=new Date(n.currentYear,n.currentMonth,1);a.setMonth(n.currentMonth+t),n.config.showMonths>1||\"static\"===n.config.monthSelectorType?n.monthElements[t].textContent=(0,m.monthToStr)(a.getMonth(),n.config.shorthandCurrentMonth,n.l10n)+\" \":n.monthsDropdownContainer.value=a.getMonth().toString(),e.value=a.getFullYear().toString()})),n._hidePrevMonthArrow=void 0!==n.config.minDate&&(n.currentYear===n.config.minDate.getFullYear()?n.currentMonth<=n.config.minDate.getMonth():n.currentYear<n.config.minDate.getFullYear()),n._hideNextMonthArrow=void 0!==n.config.maxDate&&(n.currentYear===n.config.maxDate.getFullYear()?n.currentMonth+1>n.config.maxDate.getMonth():n.currentYear>n.config.maxDate.getFullYear()))}function ce(e){var t=e||(n.config.altInput?n.config.altFormat:n.config.dateFormat);return n.selectedDates.map((function(e){return n.formatDate(e,t)})).filter((function(e,t,a){return\"range\"!==n.config.mode||n.config.enableTime||a.indexOf(e)===t})).join(\"range\"!==n.config.mode?n.config.conjunction:n.l10n.rangeSeparator)}function se(e){void 0===e&&(e=!0),void 0!==n.mobileInput&&n.mobileFormatStr&&(n.mobileInput.value=void 0!==n.latestSelectedDateObj?n.formatDate(n.latestSelectedDateObj,n.mobileFormatStr):\"\"),n.input.value=ce(n.config.dateFormat),void 0!==n.altInput&&(n.altInput.value=ce(n.config.altFormat)),!1!==e&&ie(\"onValueUpdate\")}function de(e){var t=(0,u.getEventTarget)(e),a=n.prevMonthNav.contains(t),i=n.nextMonthNav.contains(t);a||i?j(a?-1:1):n.yearElements.indexOf(t)>=0?t.select():t.classList.contains(\"arrowUp\")?n.changeYear(n.currentYear+1):t.classList.contains(\"arrowDown\")&&n.changeYear(n.currentYear-1)}return function(){n.element=n.input=e,n.isOpen=!1,function(){var a=[\"wrap\",\"weekNumbers\",\"allowInput\",\"allowInvalidPreload\",\"clickOpens\",\"time_24hr\",\"enableTime\",\"noCalendar\",\"altInput\",\"shorthandCurrentMonth\",\"inline\",\"static\",\"enableSeconds\",\"disableMobile\"],o=r(r({},JSON.parse(JSON.stringify(e.dataset||{}))),t),l={};n.config.parseDate=o.parseDate,n.config.formatDate=o.formatDate,Object.defineProperty(n.config,\"enable\",{get:function(){return n.config._enable},set:function(e){n.config._enable=ne(e)}}),Object.defineProperty(n.config,\"disable\",{get:function(){return n.config._disable},set:function(e){n.config._disable=ne(e)}});var s=\"time\"===o.mode;if(!o.dateFormat&&(o.enableTime||s)){var u=v.defaultConfig.dateFormat||c.defaults.dateFormat;l.dateFormat=o.noCalendar||s?\"H:i\"+(o.enableSeconds?\":S\":\"\"):u+\" H:i\"+(o.enableSeconds?\":S\":\"\")}if(o.altInput&&(o.enableTime||s)&&!o.altFormat){var f=v.defaultConfig.altFormat||c.defaults.altFormat;l.altFormat=o.noCalendar||s?\"h:i\"+(o.enableSeconds?\":S K\":\" K\"):f+\" h:i\"+(o.enableSeconds?\":S\":\"\")+\" K\"}Object.defineProperty(n.config,\"minDate\",{get:function(){return n.config._minDate},set:$(\"min\")}),Object.defineProperty(n.config,\"maxDate\",{get:function(){return n.config._maxDate},set:$(\"max\")});var m=function(e){return function(t){n.config[\"min\"===e?\"_minTime\":\"_maxTime\"]=n.parseDate(t,\"H:i:S\")}};Object.defineProperty(n.config,\"minTime\",{get:function(){return n.config._minTime},set:m(\"min\")}),Object.defineProperty(n.config,\"maxTime\",{get:function(){return n.config._maxTime},set:m(\"max\")}),\"time\"===o.mode&&(n.config.noCalendar=!0,n.config.enableTime=!0);Object.assign(n.config,l,o);for(var g=0;g<a.length;g++)n.config[a[g]]=!0===n.config[a[g]]||\"true\"===n.config[a[g]];c.HOOKS.filter((function(e){return void 0!==n.config[e]})).forEach((function(e){n.config[e]=(0,d.arrayify)(n.config[e]||[]).map(i)})),n.isMobile=!n.config.disableMobile&&!n.config.inline&&\"single\"===n.config.mode&&!n.config.disable.length&&!n.config.enable&&!n.config.weekNumbers&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);for(g=0;g<n.config.plugins.length;g++){var p=n.config.plugins[g](n)||{};for(var h in p)c.HOOKS.indexOf(h)>-1?n.config[h]=(0,d.arrayify)(p[h]).map(i).concat(n.config[h]):void 0===o[h]&&(n.config[h]=p[h])}o.altInputClass||(n.config.altInputClass=Q().className+\" \"+n.config.altInputClass);ie(\"onParseConfig\")}(),V(),function(){if(n.input=Q(),!n.input)return void n.config.errorHandler(new Error(\"Invalid input element specified\"));n.input._type=n.input.type,n.input.type=\"text\",n.input.classList.add(\"flatpickr-input\"),n._input=n.input,n.config.altInput&&(n.altInput=(0,u.createElement)(n.input.nodeName,n.config.altInputClass),n._input=n.altInput,n.altInput.placeholder=n.input.placeholder,n.altInput.disabled=n.input.disabled,n.altInput.required=n.input.required,n.altInput.tabIndex=n.input.tabIndex,n.altInput.type=\"text\",n.input.setAttribute(\"type\",\"hidden\"),!n.config.static&&n.input.parentNode&&n.input.parentNode.insertBefore(n.altInput,n.input.nextSibling));n.config.allowInput||n._input.setAttribute(\"readonly\",\"readonly\");ae()}(),function(){n.selectedDates=[],n.now=n.parseDate(n.config.now)||new Date;var e=n.config.defaultDate||(\"INPUT\"!==n.input.nodeName&&\"TEXTAREA\"!==n.input.nodeName||!n.input.placeholder||n.input.value!==n.input.placeholder?n.input.value:null);e&&te(e,n.config.dateFormat);n._initialDate=n.selectedDates.length>0?n.selectedDates[0]:n.config.minDate&&n.config.minDate.getTime()>n.now.getTime()?n.config.minDate:n.config.maxDate&&n.config.maxDate.getTime()<n.now.getTime()?n.config.maxDate:n.now,n.currentYear=n._initialDate.getFullYear(),n.currentMonth=n._initialDate.getMonth(),n.selectedDates.length>0&&(n.latestSelectedDateObj=n.selectedDates[0]);void 0!==n.config.minTime&&(n.config.minTime=n.parseDate(n.config.minTime,\"H:i\"));void 0!==n.config.maxTime&&(n.config.maxTime=n.parseDate(n.config.maxTime,\"H:i\"));n.minDateHasTime=!!n.config.minDate&&(n.config.minDate.getHours()>0||n.config.minDate.getMinutes()>0||n.config.minDate.getSeconds()>0),n.maxDateHasTime=!!n.config.maxDate&&(n.config.maxDate.getHours()>0||n.config.maxDate.getMinutes()>0||n.config.maxDate.getSeconds()>0)}(),n.utils={getDaysInMonth:function(e,t){return void 0===e&&(e=n.currentMonth),void 0===t&&(t=n.currentYear),1===e&&(t%4==0&&t%100!=0||t%400==0)?29:n.l10n.daysInMonth[e]}},n.isMobile||function(){var e=window.document.createDocumentFragment();if(n.calendarContainer=(0,u.createElement)(\"div\",\"flatpickr-calendar\"),n.calendarContainer.tabIndex=-1,!n.config.noCalendar){if(e.appendChild((n.monthNav=(0,u.createElement)(\"div\",\"flatpickr-months\"),n.yearElements=[],n.monthElements=[],n.prevMonthNav=(0,u.createElement)(\"span\",\"flatpickr-prev-month\"),n.prevMonthNav.innerHTML=n.config.prevArrow,n.nextMonthNav=(0,u.createElement)(\"span\",\"flatpickr-next-month\"),n.nextMonthNav.innerHTML=n.config.nextArrow,P(),Object.defineProperty(n,\"_hidePrevMonthArrow\",{get:function(){return n.__hidePrevMonthArrow},set:function(e){n.__hidePrevMonthArrow!==e&&((0,u.toggleClass)(n.prevMonthNav,\"flatpickr-disabled\",e),n.__hidePrevMonthArrow=e)}}),Object.defineProperty(n,\"_hideNextMonthArrow\",{get:function(){return n.__hideNextMonthArrow},set:function(e){n.__hideNextMonthArrow!==e&&((0,u.toggleClass)(n.nextMonthNav,\"flatpickr-disabled\",e),n.__hideNextMonthArrow=e)}}),n.currentYearElement=n.yearElements[0],le(),n.monthNav)),n.innerContainer=(0,u.createElement)(\"div\",\"flatpickr-innerContainer\"),n.config.weekNumbers){var t=function(){n.calendarContainer.classList.add(\"hasWeeks\");var e=(0,u.createElement)(\"div\",\"flatpickr-weekwrapper\");e.appendChild((0,u.createElement)(\"span\",\"flatpickr-weekday\",n.l10n.weekAbbreviation));var t=(0,u.createElement)(\"div\",\"flatpickr-weeks\");return e.appendChild(t),{weekWrapper:e,weekNumbers:t}}(),a=t.weekWrapper,i=t.weekNumbers;n.innerContainer.appendChild(a),n.weekNumbers=i,n.weekWrapper=a}n.rContainer=(0,u.createElement)(\"div\",\"flatpickr-rContainer\"),n.rContainer.appendChild(Y()),n.daysContainer||(n.daysContainer=(0,u.createElement)(\"div\",\"flatpickr-days\"),n.daysContainer.tabIndex=-1),O(),n.rContainer.appendChild(n.daysContainer),n.innerContainer.appendChild(n.rContainer),e.appendChild(n.innerContainer)}n.config.enableTime&&e.appendChild(function(){n.calendarContainer.classList.add(\"hasTime\"),n.config.noCalendar&&n.calendarContainer.classList.add(\"noCalendar\");var e=(0,f.getDefaultHours)(n.config);n.timeContainer=(0,u.createElement)(\"div\",\"flatpickr-time\"),n.timeContainer.tabIndex=-1;var t=(0,u.createElement)(\"span\",\"flatpickr-time-separator\",\":\"),a=(0,u.createNumberInput)(\"flatpickr-hour\",{\"aria-label\":n.l10n.hourAriaLabel});n.hourElement=a.getElementsByTagName(\"input\")[0];var i=(0,u.createNumberInput)(\"flatpickr-minute\",{\"aria-label\":n.l10n.minuteAriaLabel});n.minuteElement=i.getElementsByTagName(\"input\")[0],n.hourElement.tabIndex=n.minuteElement.tabIndex=-1,n.hourElement.value=(0,d.pad)(n.latestSelectedDateObj?n.latestSelectedDateObj.getHours():n.config.time_24hr?e.hours:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(e.hours)),n.minuteElement.value=(0,d.pad)(n.latestSelectedDateObj?n.latestSelectedDateObj.getMinutes():e.minutes),n.hourElement.setAttribute(\"step\",n.config.hourIncrement.toString()),n.minuteElement.setAttribute(\"step\",n.config.minuteIncrement.toString()),n.hourElement.setAttribute(\"min\",n.config.time_24hr?\"0\":\"1\"),n.hourElement.setAttribute(\"max\",n.config.time_24hr?\"23\":\"12\"),n.hourElement.setAttribute(\"maxlength\",\"2\"),n.minuteElement.setAttribute(\"min\",\"0\"),n.minuteElement.setAttribute(\"max\",\"59\"),n.minuteElement.setAttribute(\"maxlength\",\"2\"),n.timeContainer.appendChild(a),n.timeContainer.appendChild(t),n.timeContainer.appendChild(i),n.config.time_24hr&&n.timeContainer.classList.add(\"time24hr\");if(n.config.enableSeconds){n.timeContainer.classList.add(\"hasSeconds\");var o=(0,u.createNumberInput)(\"flatpickr-second\");n.secondElement=o.getElementsByTagName(\"input\")[0],n.secondElement.value=(0,d.pad)(n.latestSelectedDateObj?n.latestSelectedDateObj.getSeconds():e.seconds),n.secondElement.setAttribute(\"step\",n.minuteElement.getAttribute(\"step\")),n.secondElement.setAttribute(\"min\",\"0\"),n.secondElement.setAttribute(\"max\",\"59\"),n.secondElement.setAttribute(\"maxlength\",\"2\"),n.timeContainer.appendChild((0,u.createElement)(\"span\",\"flatpickr-time-separator\",\":\")),n.timeContainer.appendChild(o)}n.config.time_24hr||(n.amPM=(0,u.createElement)(\"span\",\"flatpickr-am-pm\",n.l10n.amPM[(0,d.int)((n.latestSelectedDateObj?n.hourElement.value:n.config.defaultHour)>11)]),n.amPM.title=n.l10n.toggleTitle,n.amPM.tabIndex=-1,n.timeContainer.appendChild(n.amPM));return n.timeContainer}());(0,u.toggleClass)(n.calendarContainer,\"rangeMode\",\"range\"===n.config.mode),(0,u.toggleClass)(n.calendarContainer,\"animate\",!0===n.config.animate),(0,u.toggleClass)(n.calendarContainer,\"multiMonth\",n.config.showMonths>1),n.calendarContainer.appendChild(e);var o=void 0!==n.config.appendTo&&void 0!==n.config.appendTo.nodeType;if((n.config.inline||n.config.static)&&(n.calendarContainer.classList.add(n.config.inline?\"inline\":\"static\"),n.config.inline&&(!o&&n.element.parentNode?n.element.parentNode.insertBefore(n.calendarContainer,n._input.nextSibling):void 0!==n.config.appendTo&&n.config.appendTo.appendChild(n.calendarContainer)),n.config.static)){var r=(0,u.createElement)(\"div\",\"flatpickr-wrapper\");n.element.parentNode&&n.element.parentNode.insertBefore(r,n.element),r.appendChild(n.element),n.altInput&&r.appendChild(n.altInput),r.appendChild(n.calendarContainer)}n.config.static||n.config.inline||(void 0!==n.config.appendTo?n.config.appendTo:window.document.body).appendChild(n.calendarContainer)}(),function(){n.config.wrap&&[\"open\",\"close\",\"toggle\",\"clear\"].forEach((function(e){Array.prototype.forEach.call(n.element.querySelectorAll(\"[data-\"+e+\"]\"),(function(t){return M(t,\"click\",n[e])}))}));if(n.isMobile)return void function(){var e=n.config.enableTime?n.config.noCalendar?\"time\":\"datetime-local\":\"date\";n.mobileInput=(0,u.createElement)(\"input\",n.input.className+\" flatpickr-mobile\"),n.mobileInput.tabIndex=1,n.mobileInput.type=e,n.mobileInput.disabled=n.input.disabled,n.mobileInput.required=n.input.required,n.mobileInput.placeholder=n.input.placeholder,n.mobileFormatStr=\"datetime-local\"===e?\"Y-m-d\\\\TH:i:S\":\"date\"===e?\"Y-m-d\":\"H:i:S\",n.selectedDates.length>0&&(n.mobileInput.defaultValue=n.mobileInput.value=n.formatDate(n.selectedDates[0],n.mobileFormatStr));n.config.minDate&&(n.mobileInput.min=n.formatDate(n.config.minDate,\"Y-m-d\"));n.config.maxDate&&(n.mobileInput.max=n.formatDate(n.config.maxDate,\"Y-m-d\"));n.input.getAttribute(\"step\")&&(n.mobileInput.step=String(n.input.getAttribute(\"step\")));n.input.type=\"hidden\",void 0!==n.altInput&&(n.altInput.type=\"hidden\");try{n.input.parentNode&&n.input.parentNode.insertBefore(n.mobileInput,n.input.nextSibling)}catch(e){}M(n.mobileInput,\"change\",(function(e){n.setDate((0,u.getEventTarget)(e).value,!1,n.mobileFormatStr),ie(\"onChange\"),ie(\"onClose\")}))}();var e=(0,d.debounce)(U,50);n._debouncedChange=(0,d.debounce)(y,g),n.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&M(n.daysContainer,\"mouseover\",(function(e){\"range\"===n.config.mode&&J((0,u.getEventTarget)(e))}));M(n._input,\"keydown\",q),void 0!==n.calendarContainer&&M(n.calendarContainer,\"keydown\",q);n.config.inline||n.config.static||M(window,\"resize\",e);void 0!==window.ontouchstart?M(window.document,\"touchstart\",H):M(window.document,\"mousedown\",H);M(window.document,\"focus\",H,{capture:!0}),!0===n.config.clickOpens&&(M(n._input,\"focus\",n.open),M(n._input,\"click\",n.open));void 0!==n.daysContainer&&(M(n.monthNav,\"click\",de),M(n.monthNav,[\"keyup\",\"increment\"],b),M(n.daysContainer,\"click\",Z));if(void 0!==n.timeContainer&&void 0!==n.minuteElement&&void 0!==n.hourElement){var t=function(e){return(0,u.getEventTarget)(e).select()};M(n.timeContainer,[\"increment\"],p),M(n.timeContainer,\"blur\",p,{capture:!0}),M(n.timeContainer,\"click\",E),M([n.hourElement,n.minuteElement],[\"focus\",\"click\"],t),void 0!==n.secondElement&&M(n.secondElement,\"focus\",(function(){return n.secondElement&&n.secondElement.select()})),void 0!==n.amPM&&M(n.amPM,\"click\",(function(e){p(e)}))}n.config.allowInput&&M(n._input,\"blur\",K)}(),(n.selectedDates.length||n.config.noCalendar)&&(n.config.enableTime&&D(n.config.noCalendar?n.latestSelectedDateObj:void 0),se(!1)),o();var a=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!n.isMobile&&a&&X(),ie(\"onReady\")}(),n}function h(e,t){for(var n=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),a=[],i=0;i<n.length;i++){var o=n[i];try{if(null!==o.getAttribute(\"data-fp-omit\"))continue;void 0!==o._flatpickr&&(o._flatpickr.destroy(),o._flatpickr=void 0),o._flatpickr=p(o,t||{}),a.push(o._flatpickr)}catch(e){console.error(e)}}return 1===a.length?a[0]:a}\"undefined\"!=typeof HTMLElement&&\"undefined\"!=typeof HTMLCollection&&\"undefined\"!=typeof NodeList&&(HTMLCollection.prototype.flatpickr=NodeList.prototype.flatpickr=function(e){return h(this,e)},HTMLElement.prototype.flatpickr=function(e){return h([this],e)});var v=function(e,t){return\"string\"==typeof e?h(window.document.querySelectorAll(e),t):e instanceof Node?h([e],t):h(e,t)};v.defaultConfig={},v.l10ns={en:r({},s.default),default:r({},s.default)},v.localize=function(e){v.l10ns.default=r(r({},v.l10ns.default),e)},v.setDefaults=function(e){v.defaultConfig=r(r({},v.defaultConfig),e)},v.parseDate=(0,f.createDateParser)({}),v.formatDate=(0,f.createDateFormatter)({}),v.compareDates=f.compareDates,\"undefined\"!=typeof jQuery&&void 0!==jQuery.fn&&(jQuery.fn.flatpickr=function(e){return h(this,e)}),Date.prototype.fp_incr=function(e){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+(\"string\"==typeof e?parseInt(e,10):e))},\"undefined\"!=typeof window&&(window.flatpickr=v),n.default=v}\n//# sourceMappingURL=index.min.js.map","min_map":"{\"version\":3,\"file\":\"index.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"tslib_1\",\"__assign\",\"this\",\"Object\",\"assign\",\"t\",\"s\",\"i\",\"n\",\"arguments\",\"length\",\"p\",\"prototype\",\"hasOwnProperty\",\"call\",\"apply\",\"__spreadArrays\",\"il\",\"r\",\"Array\",\"k\",\"a\",\"j\",\"jl\",\"options_1\",\"default_1\",\"__importDefault\",\"utils_1\",\"dom_1\",\"dates_1\",\"formatting_1\",\"DEBOUNCED_CHANGE_MS\",\"FlatpickrInstance\",\"element\",\"instanceConfig\",\"self\",\"config\",\"defaults\",\"flatpickr\",\"defaultConfig\",\"l10n\",\"default\",\"getClosestActiveElement\",\"_a\",\"calendarContainer\",\"getRootNode\",\"activeElement\",\"document\",\"bindToInstance\",\"fn\",\"bind\",\"setCalendarWidth\",\"weekNumbers\",\"showMonths\",\"noCalendar\",\"window\",\"requestAnimationFrame\",\"undefined\",\"style\",\"visibility\",\"display\",\"daysContainer\",\"daysWidth\",\"days\",\"offsetWidth\",\"width\",\"weekWrapper\",\"removeProperty\",\"updateTime\",\"e\",\"selectedDates\",\"defaultDate\",\"minDate\",\"compareDates\",\"Date\",\"getTime\",\"getDefaultHours\",\"setHours\",\"hours\",\"minutes\",\"seconds\",\"getMilliseconds\",\"latestSelectedDateObj\",\"type\",\"preventDefault\",\"isKeyDown\",\"eventTarget\",\"getEventTarget\",\"input\",\"amPM\",\"textContent\",\"int\",\"min\",\"parseFloat\",\"getAttribute\",\"max\",\"step\",\"curValue\",\"parseInt\",\"value\",\"delta\",\"which\",\"newValue\",\"isHourElem\",\"hourElement\",\"isMinuteElem\",\"minuteElement\",\"incrementNumInput\",\"Math\",\"abs\",\"pad\",\"timeWrapper\",\"prevValue\",\"_input\",\"setHoursFromInputs\",\"updateValue\",\"_debouncedChange\",\"hour\",\"slice\",\"secondElement\",\"limitMinHours\",\"minTime\",\"minDateHasTime\",\"limitMaxHours\",\"maxTime\",\"maxDate\",\"maxDateHasTime\",\"minBound\",\"calculateSecondsSinceMidnight\",\"getHours\",\"getMinutes\",\"getSeconds\",\"maxBound\",\"currentTime\",\"result\",\"parseSeconds\",\"setHoursFromDate\",\"dateObj\",\"date\",\"isMobile\",\"time_24hr\",\"onYearInput\",\"event\",\"year\",\"key\",\"test\",\"toString\",\"changeYear\",\"handler\",\"options\",\"forEach\",\"ev\",\"el\",\"addEventListener\",\"_handlers\",\"push\",\"remove\",\"removeEventListener\",\"triggerChange\",\"triggerEvent\",\"jumpToDate\",\"jumpDate\",\"jumpTo\",\"parseDate\",\"now\",\"oldYear\",\"currentYear\",\"oldMonth\",\"currentMonth\",\"getFullYear\",\"getMonth\",\"message\",\"errorHandler\",\"buildMonthSwitch\",\"redraw\",\"timeIncrement\",\"className\",\"indexOf\",\"classList\",\"contains\",\"inputElem\",\"target\",\"parentNode\",\"firstChild\",\"createEvent\",\"dispatchEvent\",\"createDay\",\"_dayNumber\",\"dateIsEnabled\",\"isEnabled\",\"dayElement\",\"createElement\",\"getDate\",\"$i\",\"setAttribute\",\"formatDate\",\"ariaDateFormat\",\"todayDateElem\",\"add\",\"tabIndex\",\"isDateSelected\",\"selectedDateElem\",\"mode\",\"toggleClass\",\"isDateInRange\",\"insertAdjacentHTML\",\"getWeek\",\"focusOnDayElem\",\"targetNode\",\"focus\",\"onMouseOver\",\"getFirstAvailableDay\",\"startMonth\",\"endMonth\",\"m\",\"month\",\"children\",\"startIndex\",\"endIndex\",\"c\",\"focusOnDay\",\"current\",\"offset\",\"dayFocused\",\"isInView\",\"body\",\"startElem\",\"givenMonth\",\"loopDelta\",\"numMonthDays\",\"changeMonth\",\"getNextAvailableDay\",\"buildMonthDays\",\"firstOfMonth\",\"getDay\",\"firstDayOfWeek\",\"prevMonthDays\",\"utils\",\"getDaysInMonth\",\"daysInMonth\",\"createDocumentFragment\",\"isMultiMonth\",\"prevMonthDayClass\",\"nextMonthDayClass\",\"dayNumber\",\"dayIndex\",\"appendChild\",\"dayNum\",\"dayContainer\",\"buildDays\",\"clearNode\",\"frag\",\"d\",\"setMonth\",\"monthSelectorType\",\"shouldBuildMonth\",\"monthsDropdownContainer\",\"innerHTML\",\"monthToStr\",\"shorthandCurrentMonth\",\"selected\",\"buildMonth\",\"monthElement\",\"container\",\"monthNavFragment\",\"monthAriaLabel\",\"selectedMonth\",\"yearInput\",\"createNumberInput\",\"tabindex\",\"yearElement\",\"getElementsByTagName\",\"yearAriaLabel\",\"disabled\",\"buildMonths\",\"monthNav\",\"prevMonthNav\",\"yearElements\",\"monthElements\",\"nextMonthNav\",\"buildWeekdays\",\"weekdayContainer\",\"updateWeekdays\",\"weekdays\",\"shorthand\",\"splice\",\"join\",\"isOffset\",\"_hidePrevMonthArrow\",\"_hideNextMonthArrow\",\"updateNavigationCurrentMonth\",\"isCalendarElem\",\"elem\",\"documentClick\",\"isOpen\",\"inline\",\"eventTarget_1\",\"isCalendarElement\",\"lostFocus\",\"altInput\",\"path\",\"relatedTarget\",\"isIgnored\",\"ignoredFocusElements\",\"some\",\"allowInput\",\"setDate\",\"altFormat\",\"dateFormat\",\"timeContainer\",\"close\",\"clear\",\"newYear\",\"newYearNum\",\"isNewYear\",\"timeless\",\"dateToCheck\",\"enable\",\"disable\",\"bool\",\"array\",\"parsed\",\"from\",\"to\",\"onBlur\",\"isInput\",\"valueChanged\",\"trimEnd\",\"getDateStr\",\"onKeyDown\",\"wrap\",\"allowKeydown\",\"allowInlineKeydown\",\"keyCode\",\"blur\",\"open\",\"isTimeObj\",\"focusAndClose\",\"selectDate\",\"delta_1\",\"ctrlKey\",\"stopPropagation\",\"currentYearElement\",\"enableTime\",\"elems\",\"concat\",\"pluginElements\",\"filter\",\"x\",\"shiftKey\",\"charAt\",\"toLowerCase\",\"cellClass\",\"hoverDate\",\"firstElementChild\",\"initialDate\",\"rangeStartDate\",\"rangeEndDate\",\"containsDisabled\",\"minRange\",\"maxRange\",\"duration\",\"DAY\",\"rContainer\",\"querySelectorAll\",\"dayElem\",\"timestamp\",\"outOfRange\",\"isBetween\",\"onResize\",\"static\",\"positionCalendar\",\"minMaxDateSetter\",\"inverseDateObj\",\"removeAttribute\",\"getInputElem\",\"querySelector\",\"setupLocale\",\"locale\",\"l10ns\",\"Error\",\"tokenRegex\",\"D\",\"l\",\"longhand\",\"M\",\"months\",\"F\",\"K\",\"JSON\",\"parse\",\"stringify\",\"dataset\",\"createDateFormatter\",\"createDateParser\",\"customPositionElement\",\"position\",\"positionElement\",\"_positionElement\",\"calendarHeight\",\"reduce\",\"acc\",\"child\",\"offsetHeight\",\"calendarWidth\",\"configPos\",\"split\",\"configPosVertical\",\"configPosHorizontal\",\"inputBounds\",\"getBoundingClientRect\",\"distanceFromBottom\",\"innerHeight\",\"bottom\",\"showOnTop\",\"top\",\"pageYOffset\",\"left\",\"pageXOffset\",\"isCenter\",\"isRight\",\"right\",\"rightMost\",\"centerMost\",\"doc\",\"editableSheet\",\"styleSheets\",\"sheet\",\"cssRules\",\"err\",\"head\",\"getDocumentStyleSheet\",\"bodyWidth\",\"centerLeft\",\"centerIndex\",\"centerStyle\",\"insertRule\",\"centerBefore\",\"navigator\",\"userAgent\",\"msMaxTouchPoints\",\"setTimeout\",\"findParent\",\"day\",\"selectedDate\",\"shouldChangeMonth\",\"selectedIndex\",\"sort\",\"b\",\"closeOnSelect\",\"single\",\"range\",\"loadedPlugins\",\"_bind\",\"_setHoursFromDate\",\"_positionCalendar\",\"triggerChangeEvent\",\"toInitial\",\"mobileInput\",\"_initialDate\",\"_createElement\",\"destroy\",\"removeChild\",\"wrapper\",\"lastChild\",\"insertBefore\",\"_type\",\"click\",\"wasOpen\",\"select\",\"set\",\"option\",\"CALLBACKS\",\"HOOKS\",\"arrayify\",\"format\",\"setSelectedDate\",\"toggle\",\"updatePositionElement\",\"clickOpens\",\"inputDate\",\"dates\",\"map\",\"conjunction\",\"rangeSeparator\",\"allowInvalidPreload\",\"parseDateRules\",\"arr\",\"rule\",\"data\",\"hooks\",\"name\",\"initEvent\",\"specificFormat\",\"dObj\",\"mobileFormatStr\",\"onMonthNavClick\",\"isPrevMonth\",\"isNextMonth\",\"boolOpts\",\"userConfig\",\"formats\",\"defineProperty\",\"get\",\"_enable\",\"_disable\",\"timeMode\",\"defaultDateFormat\",\"enableSeconds\",\"defaultAltFormat\",\"_minDate\",\"_maxDate\",\"minMaxTimeSetter\",\"val\",\"_minTime\",\"_maxTime\",\"hook\",\"disableMobile\",\"plugins\",\"pluginConf\",\"altInputClass\",\"parseConfig\",\"nodeName\",\"placeholder\",\"required\",\"nextSibling\",\"setupInputs\",\"preloadedDate\",\"setupDates\",\"yr\",\"fragment\",\"prevArrow\",\"nextArrow\",\"__hidePrevMonthArrow\",\"__hideNextMonthArrow\",\"innerContainer\",\"weekAbbreviation\",\"buildWeeks\",\"separator\",\"hourInput\",\"hourAriaLabel\",\"minuteInput\",\"minuteAriaLabel\",\"military2ampm\",\"hourIncrement\",\"minuteIncrement\",\"secondInput\",\"defaultHour\",\"title\",\"toggleTitle\",\"buildTime\",\"animate\",\"customAppend\",\"appendTo\",\"nodeType\",\"build\",\"evt\",\"inputType\",\"defaultValue\",\"String\",\"setupMobile\",\"debouncedResize\",\"debounce\",\"ontouchstart\",\"capture\",\"selText\",\"bindEvents\",\"isSafari\",\"init\",\"_flatpickr\",\"nodeList\",\"nodes\",\"HTMLElement\",\"instances\",\"node\",\"console\",\"error\",\"HTMLCollection\",\"NodeList\",\"selector\",\"Node\",\"en\",\"localize\",\"setDefaults\",\"jQuery\",\"fp_incr\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/types/options.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"flatpickr/dist/esm/types/options.js","resolution":"ESM","id":"651d495396","hash":"651d495396ea2fdaf2682ba542eb41b045cfed01c12ab9242b669ebaaa54e658","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaults = exports.HOOKS = void 0;\nexports.HOOKS = [\n    \"onChange\",\n    \"onClose\",\n    \"onDayCreate\",\n    \"onDestroy\",\n    \"onKeyDown\",\n    \"onMonthChange\",\n    \"onOpen\",\n    \"onParseConfig\",\n    \"onReady\",\n    \"onValueUpdate\",\n    \"onYearChange\",\n    \"onPreCalendarPosition\",\n];\nexports.defaults = {\n    _disable: [],\n    allowInput: false,\n    allowInvalidPreload: false,\n    altFormat: \"F j, Y\",\n    altInput: false,\n    altInputClass: \"form-control input\",\n    animate: typeof window === \"object\" &&\n        window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n    ariaDateFormat: \"F j, Y\",\n    autoFillDefaultTime: true,\n    clickOpens: true,\n    closeOnSelect: true,\n    conjunction: \", \",\n    dateFormat: \"Y-m-d\",\n    defaultHour: 12,\n    defaultMinute: 0,\n    defaultSeconds: 0,\n    disable: [],\n    disableMobile: false,\n    enableSeconds: false,\n    enableTime: false,\n    errorHandler: function (err) {\n        return typeof console !== \"undefined\" && console.warn(err);\n    },\n    getWeek: function (givenDate) {\n        var date = new Date(givenDate.getTime());\n        date.setHours(0, 0, 0, 0);\n        date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n        var week1 = new Date(date.getFullYear(), 0, 4);\n        return (1 +\n            Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n                3 +\n                ((week1.getDay() + 6) % 7)) /\n                7));\n    },\n    hourIncrement: 1,\n    ignoredFocusElements: [],\n    inline: false,\n    locale: \"default\",\n    minuteIncrement: 5,\n    mode: \"single\",\n    monthSelectorType: \"dropdown\",\n    nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n    noCalendar: false,\n    now: new Date(),\n    onChange: [],\n    onClose: [],\n    onDayCreate: [],\n    onDestroy: [],\n    onKeyDown: [],\n    onMonthChange: [],\n    onOpen: [],\n    onParseConfig: [],\n    onReady: [],\n    onValueUpdate: [],\n    onYearChange: [],\n    onPreCalendarPosition: [],\n    plugins: [],\n    position: \"auto\",\n    positionElement: undefined,\n    prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n    shorthandCurrentMonth: false,\n    showMonths: 1,\n    static: false,\n    time_24hr: false,\n    weekNumbers: false,\n    wrap: false,\n};\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[],"externals":[],"shims":[]},"code":{"source":"/* flatpickr/dist/esm/types/options.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    exports.HOOKS = [\n        \"onChange\",\n        \"onClose\",\n        \"onDayCreate\",\n        \"onDestroy\",\n        \"onKeyDown\",\n        \"onMonthChange\",\n        \"onOpen\",\n        \"onParseConfig\",\n        \"onReady\",\n        \"onValueUpdate\",\n        \"onYearChange\",\n        \"onPreCalendarPosition\",\n    ];\n    exports.defaults = {\n        _disable: [],\n        allowInput: false,\n        allowInvalidPreload: false,\n        altFormat: \"F j, Y\",\n        altInput: false,\n        altInputClass: \"form-control input\",\n        animate: typeof window === \"object\" &&\n            window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n        ariaDateFormat: \"F j, Y\",\n        autoFillDefaultTime: true,\n        clickOpens: true,\n        closeOnSelect: true,\n        conjunction: \", \",\n        dateFormat: \"Y-m-d\",\n        defaultHour: 12,\n        defaultMinute: 0,\n        defaultSeconds: 0,\n        disable: [],\n        disableMobile: false,\n        enableSeconds: false,\n        enableTime: false,\n        errorHandler: function (err) {\n            return typeof console !== \"undefined\" && console.warn(err);\n        },\n        getWeek: function (givenDate) {\n            var date = new Date(givenDate.getTime());\n            date.setHours(0, 0, 0, 0);\n            date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n            var week1 = new Date(date.getFullYear(), 0, 4);\n            return (1 +\n                Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n                    3 +\n                    ((week1.getDay() + 6) % 7)) /\n                    7));\n        },\n        hourIncrement: 1,\n        ignoredFocusElements: [],\n        inline: false,\n        locale: \"default\",\n        minuteIncrement: 5,\n        mode: \"single\",\n        monthSelectorType: \"dropdown\",\n        nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n        noCalendar: false,\n        now: new Date(),\n        onChange: [],\n        onClose: [],\n        onDayCreate: [],\n        onDestroy: [],\n        onKeyDown: [],\n        onMonthChange: [],\n        onOpen: [],\n        onParseConfig: [],\n        onReady: [],\n        onValueUpdate: [],\n        onYearChange: [],\n        onPreCalendarPosition: [],\n        plugins: [],\n        position: \"auto\",\n        positionElement: undefined,\n        prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n        shorthandCurrentMonth: false,\n        showMonths: 1,\n        static: false,\n        time_24hr: false,\n        weekNumbers: false,\n        wrap: false,\n    };\n}\n","min_source":"function _(e,n,o,t,a){t(),o.HOOKS=[\"onChange\",\"onClose\",\"onDayCreate\",\"onDestroy\",\"onKeyDown\",\"onMonthChange\",\"onOpen\",\"onParseConfig\",\"onReady\",\"onValueUpdate\",\"onYearChange\",\"onPreCalendarPosition\"],o.defaults={_disable:[],allowInput:!1,allowInvalidPreload:!1,altFormat:\"F j, Y\",altInput:!1,altInputClass:\"form-control input\",animate:\"object\"==typeof window&&-1===window.navigator.userAgent.indexOf(\"MSIE\"),ariaDateFormat:\"F j, Y\",autoFillDefaultTime:!0,clickOpens:!0,closeOnSelect:!0,conjunction:\", \",dateFormat:\"Y-m-d\",defaultHour:12,defaultMinute:0,defaultSeconds:0,disable:[],disableMobile:!1,enableSeconds:!1,enableTime:!1,errorHandler:function(e){return\"undefined\"!=typeof console&&console.warn(e)},getWeek:function(e){var n=new Date(e.getTime());n.setHours(0,0,0,0),n.setDate(n.getDate()+3-(n.getDay()+6)%7);var o=new Date(n.getFullYear(),0,4);return 1+Math.round(((n.getTime()-o.getTime())/864e5-3+(o.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:\"default\",minuteIncrement:5,mode:\"single\",monthSelectorType:\"dropdown\",nextArrow:\"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:\"auto\",positionElement:void 0,prevArrow:\"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1}}\n//# sourceMappingURL=options.min.js.map","min_map":"{\"version\":3,\"file\":\"options.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"HOOKS\",\"defaults\",\"_disable\",\"allowInput\",\"allowInvalidPreload\",\"altFormat\",\"altInput\",\"altInputClass\",\"animate\",\"window\",\"navigator\",\"userAgent\",\"indexOf\",\"ariaDateFormat\",\"autoFillDefaultTime\",\"clickOpens\",\"closeOnSelect\",\"conjunction\",\"dateFormat\",\"defaultHour\",\"defaultMinute\",\"defaultSeconds\",\"disable\",\"disableMobile\",\"enableSeconds\",\"enableTime\",\"errorHandler\",\"err\",\"console\",\"warn\",\"getWeek\",\"givenDate\",\"date\",\"Date\",\"getTime\",\"setHours\",\"setDate\",\"getDate\",\"getDay\",\"week1\",\"getFullYear\",\"Math\",\"round\",\"hourIncrement\",\"ignoredFocusElements\",\"inline\",\"locale\",\"minuteIncrement\",\"mode\",\"monthSelectorType\",\"nextArrow\",\"noCalendar\",\"now\",\"onChange\",\"onClose\",\"onDayCreate\",\"onDestroy\",\"onKeyDown\",\"onMonthChange\",\"onOpen\",\"onParseConfig\",\"onReady\",\"onValueUpdate\",\"onYearChange\",\"onPreCalendarPosition\",\"plugins\",\"position\",\"positionElement\",\"undefined\",\"prevArrow\",\"shorthandCurrentMonth\",\"showMonths\",\"static\",\"time_24hr\",\"weekNumbers\",\"wrap\"],\"sources\":[\"0\"],\"mappings\":\"AAA0C,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GACvFD,IACAD,EAAQG,MAAQ,CACZ,WACA,UACA,cACA,YACA,YACA,gBACA,SACA,gBACA,UACA,gBACA,eACA,yBAEJH,EAAQI,SAAW,CACfC,SAAU,GACVC,YAAY,EACZC,qBAAqB,EACrBC,UAAW,SACXC,UAAU,EACVC,cAAe,qBACfC,QAA2B,iBAAXC,SACoC,IAAhDA,OAAOC,UAAUC,UAAUC,QAAQ,QACvCC,eAAgB,SAChBC,qBAAqB,EACrBC,YAAY,EACZC,eAAe,EACfC,YAAa,KACbC,WAAY,QACZC,YAAa,GACbC,cAAe,EACfC,eAAgB,EAChBC,QAAS,GACTC,eAAe,EACfC,eAAe,EACfC,YAAY,EACZC,aAAc,SAAUC,GACpB,MAA0B,oBAAZC,SAA2BA,QAAQC,KAAKF,EAC1D,EACAG,QAAS,SAAUC,GACf,IAAIC,EAAO,IAAIC,KAAKF,EAAUG,WAC9BF,EAAKG,SAAS,EAAG,EAAG,EAAG,GACvBH,EAAKI,QAAQJ,EAAKK,UAAY,GAAML,EAAKM,SAAW,GAAK,GACzD,IAAIC,EAAQ,IAAIN,KAAKD,EAAKQ,cAAe,EAAG,GAC5C,OAAQ,EACJC,KAAKC,QAAQV,EAAKE,UAAYK,EAAML,WAAa,MAC7C,GACEK,EAAMD,SAAW,GAAK,GACxB,EACZ,EACAK,cAAe,EACfC,qBAAsB,GACtBC,QAAQ,EACRC,OAAQ,UACRC,gBAAiB,EACjBC,KAAM,SACNC,kBAAmB,WACnBC,UAAW,yOACXC,YAAY,EACZC,IAAK,IAAInB,KACToB,SAAU,GACVC,QAAS,GACTC,YAAa,GACbC,UAAW,GACXC,UAAW,GACXC,cAAe,GACfC,OAAQ,GACRC,cAAe,GACfC,QAAS,GACTC,cAAe,GACfC,aAAc,GACdC,sBAAuB,GACvBC,QAAS,GACTC,SAAU,OACVC,qBAAiBC,EACjBC,UAAW,uOACXC,uBAAuB,EACvBC,WAAY,EACZC,QAAQ,EACRC,WAAW,EACXC,aAAa,EACbC,MAAM,EAEd\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/l10n/default.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"flatpickr/dist/esm/l10n/default.js","resolution":"ESM","id":"3bfa124fda","hash":"3bfa124fdace8d8dc75194928b79a1fdf0cb7403e0cb7efa49246c2edc2149b4","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.english = void 0;\nexports.english = {\n    weekdays: {\n        shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n        longhand: [\n            \"Sunday\",\n            \"Monday\",\n            \"Tuesday\",\n            \"Wednesday\",\n            \"Thursday\",\n            \"Friday\",\n            \"Saturday\",\n        ],\n    },\n    months: {\n        shorthand: [\n            \"Jan\",\n            \"Feb\",\n            \"Mar\",\n            \"Apr\",\n            \"May\",\n            \"Jun\",\n            \"Jul\",\n            \"Aug\",\n            \"Sep\",\n            \"Oct\",\n            \"Nov\",\n            \"Dec\",\n        ],\n        longhand: [\n            \"January\",\n            \"February\",\n            \"March\",\n            \"April\",\n            \"May\",\n            \"June\",\n            \"July\",\n            \"August\",\n            \"September\",\n            \"October\",\n            \"November\",\n            \"December\",\n        ],\n    },\n    daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n    firstDayOfWeek: 0,\n    ordinal: function (nth) {\n        var s = nth % 100;\n        if (s > 3 && s < 21)\n            return \"th\";\n        switch (s % 10) {\n            case 1:\n                return \"st\";\n            case 2:\n                return \"nd\";\n            case 3:\n                return \"rd\";\n            default:\n                return \"th\";\n        }\n    },\n    rangeSeparator: \" to \",\n    weekAbbreviation: \"Wk\",\n    scrollTitle: \"Scroll to increment\",\n    toggleTitle: \"Click to toggle\",\n    amPM: [\"AM\", \"PM\"],\n    yearAriaLabel: \"Year\",\n    monthAriaLabel: \"Month\",\n    hourAriaLabel: \"Hour\",\n    minuteAriaLabel: \"Minute\",\n    time_24hr: false,\n};\nexports.default = exports.english;\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"default"}],"externals":[],"shims":[]},"code":{"source":"/* flatpickr/dist/esm/l10n/default.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    exports.english = {\n        weekdays: {\n            shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n            longhand: [\n                \"Sunday\",\n                \"Monday\",\n                \"Tuesday\",\n                \"Wednesday\",\n                \"Thursday\",\n                \"Friday\",\n                \"Saturday\",\n            ],\n        },\n        months: {\n            shorthand: [\n                \"Jan\",\n                \"Feb\",\n                \"Mar\",\n                \"Apr\",\n                \"May\",\n                \"Jun\",\n                \"Jul\",\n                \"Aug\",\n                \"Sep\",\n                \"Oct\",\n                \"Nov\",\n                \"Dec\",\n            ],\n            longhand: [\n                \"January\",\n                \"February\",\n                \"March\",\n                \"April\",\n                \"May\",\n                \"June\",\n                \"July\",\n                \"August\",\n                \"September\",\n                \"October\",\n                \"November\",\n                \"December\",\n            ],\n        },\n        daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n        firstDayOfWeek: 0,\n        ordinal: function (nth) {\n            var s = nth % 100;\n            if (s > 3 && s < 21)\n                return \"th\";\n            switch (s % 10) {\n                case 1:\n                    return \"st\";\n                case 2:\n                    return \"nd\";\n                case 3:\n                    return \"rd\";\n                default:\n                    return \"th\";\n            }\n        },\n        rangeSeparator: \" to \",\n        weekAbbreviation: \"Wk\",\n        scrollTitle: \"Scroll to increment\",\n        toggleTitle: \"Click to toggle\",\n        amPM: [\"AM\", \"PM\"],\n        yearAriaLabel: \"Year\",\n        monthAriaLabel: \"Month\",\n        hourAriaLabel: \"Hour\",\n        minuteAriaLabel: \"Minute\",\n        time_24hr: false,\n    };\n    exports.default = exports.english;\n}\n","min_source":"function _(e,r,a,n,t){n(),a.english={weekdays:{shorthand:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],longhand:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"]},months:{shorthand:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],longhand:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var r=e%100;if(r>3&&r<21)return\"th\";switch(r%10){case 1:return\"st\";case 2:return\"nd\";case 3:return\"rd\";default:return\"th\"}},rangeSeparator:\" to \",weekAbbreviation:\"Wk\",scrollTitle:\"Scroll to increment\",toggleTitle:\"Click to toggle\",amPM:[\"AM\",\"PM\"],yearAriaLabel:\"Year\",monthAriaLabel:\"Month\",hourAriaLabel:\"Hour\",minuteAriaLabel:\"Minute\",time_24hr:!1},a.default=a.english}\n//# sourceMappingURL=default.min.js.map","min_map":"{\"version\":3,\"file\":\"default.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"english\",\"weekdays\",\"shorthand\",\"longhand\",\"months\",\"daysInMonth\",\"firstDayOfWeek\",\"ordinal\",\"nth\",\"s\",\"rangeSeparator\",\"weekAbbreviation\",\"scrollTitle\",\"toggleTitle\",\"amPM\",\"yearAriaLabel\",\"monthAriaLabel\",\"hourAriaLabel\",\"minuteAriaLabel\",\"time_24hr\",\"default\"],\"sources\":[\"0\"],\"mappings\":\"AAAyC,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GACtFD,IACAD,EAAQG,QAAU,CACdC,SAAU,CACNC,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtDC,SAAU,CACN,SACA,SACA,UACA,YACA,WACA,SACA,aAGRC,OAAQ,CACJF,UAAW,CACP,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,SAAU,CACN,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAGRE,YAAa,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC1DC,eAAgB,EAChBC,QAAS,SAAUC,GACf,IAAIC,EAAID,EAAM,IACd,GAAIC,EAAI,GAAKA,EAAI,GACb,MAAO,KACX,OAAQA,EAAI,IACR,KAAK,EACD,MAAO,KACX,KAAK,EACD,MAAO,KACX,KAAK,EACD,MAAO,KACX,QACI,MAAO,KAEnB,EACAC,eAAgB,OAChBC,iBAAkB,KAClBC,YAAa,sBACbC,YAAa,kBACbC,KAAM,CAAC,KAAM,MACbC,cAAe,OACfC,eAAgB,QAChBC,cAAe,OACfC,gBAAiB,SACjBC,WAAW,GAEftB,EAAQuB,QAAUvB,EAAQG,OAC9B\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/utils/index.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"flatpickr/dist/esm/utils/index.js","resolution":"ESM","id":"15458073ce","hash":"15458073ce4c699cb69ddb83cc96ece3ce49192f57cbac163dcc00bac9058588","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.arrayify = exports.debounce = exports.int = exports.pad = void 0;\nvar pad = function (number, length) {\n    if (length === void 0) {\n        length = 2;\n    }\n    return (\"000\" + number).slice(length * -1);\n};\nexports.pad = pad;\nvar int = function (bool) { return (bool === true ? 1 : 0); };\nexports.int = int;\nfunction debounce(fn, wait) {\n    var t;\n    return function () {\n        var _this = this;\n        var args = arguments;\n        clearTimeout(t);\n        t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n    };\n}\nexports.debounce = debounce;\nvar arrayify = function (obj) {\n    return obj instanceof Array ? obj : [obj];\n};\nexports.arrayify = arrayify;\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"debounce"}],"externals":[],"shims":[]},"code":{"source":"/* flatpickr/dist/esm/utils/index.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var pad = function (number, length) {\n        if (length === void 0) {\n            length = 2;\n        }\n        return (\"000\" + number).slice(length * -1);\n    };\n    exports.pad = pad;\n    var int = function (bool) { return (bool === true ? 1 : 0); };\n    exports.int = int;\n    function debounce(fn, wait) {\n        var t;\n        return function () {\n            var _this = this;\n            var args = arguments;\n            clearTimeout(t);\n            t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n        };\n    }\n    exports.debounce = debounce;\n    var arrayify = function (obj) {\n        return obj instanceof Array ? obj : [obj];\n    };\n    exports.arrayify = arrayify;\n}\n","min_source":"function _(n,t,r,i,u){i();r.pad=function(n,t){return void 0===t&&(t=2),(\"000\"+n).slice(-1*t)};r.int=function(n){return!0===n?1:0},r.debounce=function(n,t){var r;return function(){var i=this,u=arguments;clearTimeout(r),r=setTimeout((function(){return n.apply(i,u)}),t)}};r.arrayify=function(n){return n instanceof Array?n:[n]}}\n//# sourceMappingURL=index.min.js.map","min_map":"{\"version\":3,\"file\":\"index.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"pad\",\"number\",\"length\",\"slice\",\"int\",\"bool\",\"debounce\",\"fn\",\"wait\",\"t\",\"_this\",\"this\",\"args\",\"arguments\",\"clearTimeout\",\"setTimeout\",\"apply\",\"arrayify\",\"obj\",\"Array\"],\"sources\":[\"0\"],\"mappings\":\"AAAwC,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GACrFD,IAOAD,EAAQG,IANE,SAAUC,EAAQC,GAIxB,YAHe,IAAXA,IACAA,EAAS,IAEL,MAAQD,GAAQE,OAAgB,EAAVD,EAClC,EAGAL,EAAQO,IADE,SAAUC,GAAQ,OAAiB,IAATA,EAAgB,EAAI,CAAI,EAW5DR,EAAQS,SATR,SAAkBC,EAAIC,GAClB,IAAIC,EACJ,OAAO,WACH,IAAIC,EAAQC,KACRC,EAAOC,UACXC,aAAaL,GACbA,EAAIM,YAAW,WAAc,OAAOR,EAAGS,MAAMN,EAAOE,EAAO,GAAGJ,EAClE,CACJ,EAKAX,EAAQoB,SAHO,SAAUC,GACrB,OAAOA,aAAeC,MAAQD,EAAM,CAACA,EACzC,CAEJ\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/utils/dom.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"flatpickr/dist/esm/utils/dom.js","resolution":"ESM","id":"6b6749c6cf","hash":"6b6749c6cf9ca54de6c175c5eac0811b6b4f68dad029aa9bd9659d8241568ce4","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEventTarget = exports.createNumberInput = exports.findParent = exports.clearNode = exports.createElement = exports.toggleClass = void 0;\nfunction toggleClass(elem, className, bool) {\n    if (bool === true)\n        return elem.classList.add(className);\n    elem.classList.remove(className);\n}\nexports.toggleClass = toggleClass;\nfunction createElement(tag, className, content) {\n    var e = window.document.createElement(tag);\n    className = className || \"\";\n    content = content || \"\";\n    e.className = className;\n    if (content !== undefined)\n        e.textContent = content;\n    return e;\n}\nexports.createElement = createElement;\nfunction clearNode(node) {\n    while (node.firstChild)\n        node.removeChild(node.firstChild);\n}\nexports.clearNode = clearNode;\nfunction findParent(node, condition) {\n    if (condition(node))\n        return node;\n    else if (node.parentNode)\n        return findParent(node.parentNode, condition);\n    return undefined;\n}\nexports.findParent = findParent;\nfunction createNumberInput(inputClassName, opts) {\n    var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n    if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n        numInput.type = \"number\";\n    }\n    else {\n        numInput.type = \"text\";\n        numInput.pattern = \"\\\\d*\";\n    }\n    if (opts !== undefined)\n        for (var key in opts)\n            numInput.setAttribute(key, opts[key]);\n    wrapper.appendChild(numInput);\n    wrapper.appendChild(arrowUp);\n    wrapper.appendChild(arrowDown);\n    return wrapper;\n}\nexports.createNumberInput = createNumberInput;\nfunction getEventTarget(event) {\n    try {\n        if (typeof event.composedPath === \"function\") {\n            var path = event.composedPath();\n            return path[0];\n        }\n        return event.target;\n    }\n    catch (error) {\n        return event.target;\n    }\n}\nexports.getEventTarget = getEventTarget;\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"toggleClass"},{"type":"named","name":"createElement"},{"type":"named","name":"clearNode"},{"type":"named","name":"findParent"},{"type":"named","name":"createNumberInput"},{"type":"named","name":"getEventTarget"}],"externals":[],"shims":[]},"code":{"source":"/* flatpickr/dist/esm/utils/dom.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    function toggleClass(elem, className, bool) {\n        if (bool === true)\n            return elem.classList.add(className);\n        elem.classList.remove(className);\n    }\n    exports.toggleClass = toggleClass;\n    function createElement(tag, className, content) {\n        var e = window.document.createElement(tag);\n        className = className || \"\";\n        content = content || \"\";\n        e.className = className;\n        if (content !== undefined)\n            e.textContent = content;\n        return e;\n    }\n    exports.createElement = createElement;\n    function clearNode(node) {\n        while (node.firstChild)\n            node.removeChild(node.firstChild);\n    }\n    exports.clearNode = clearNode;\n    function findParent(node, condition) {\n        if (condition(node))\n            return node;\n        else if (node.parentNode)\n            return findParent(node.parentNode, condition);\n        return undefined;\n    }\n    exports.findParent = findParent;\n    function createNumberInput(inputClassName, opts) {\n        var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n        if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n            numInput.type = \"number\";\n        }\n        else {\n            numInput.type = \"text\";\n            numInput.pattern = \"\\\\d*\";\n        }\n        if (opts !== undefined)\n            for (var key in opts)\n                numInput.setAttribute(key, opts[key]);\n        wrapper.appendChild(numInput);\n        wrapper.appendChild(arrowUp);\n        wrapper.appendChild(arrowDown);\n        return wrapper;\n    }\n    exports.createNumberInput = createNumberInput;\n    function getEventTarget(event) {\n        try {\n            if (typeof event.composedPath === \"function\") {\n                var path = event.composedPath();\n                return path[0];\n            }\n            return event.target;\n        }\n        catch (error) {\n            return event.target;\n        }\n    }\n    exports.getEventTarget = getEventTarget;\n}\n","min_source":"function _(t,e,n,r,a){function i(t,e,n){var r=window.document.createElement(t);return e=e||\"\",n=n||\"\",r.className=e,void 0!==n&&(r.textContent=n),r}r(),n.toggleClass=function(t,e,n){if(!0===n)return t.classList.add(e);t.classList.remove(e)},n.createElement=i,n.clearNode=function(t){for(;t.firstChild;)t.removeChild(t.firstChild)},n.findParent=function t(e,n){return n(e)?e:e.parentNode?t(e.parentNode,n):void 0},n.createNumberInput=function(t,e){var n=i(\"div\",\"numInputWrapper\"),r=i(\"input\",\"numInput \"+t),a=i(\"span\",\"arrowUp\"),o=i(\"span\",\"arrowDown\");if(-1===navigator.userAgent.indexOf(\"MSIE 9.0\")?r.type=\"number\":(r.type=\"text\",r.pattern=\"\\\\d*\"),void 0!==e)for(var d in e)r.setAttribute(d,e[d]);return n.appendChild(r),n.appendChild(a),n.appendChild(o),n},n.getEventTarget=function(t){try{return\"function\"==typeof t.composedPath?t.composedPath()[0]:t.target}catch(e){return t.target}}}\n//# sourceMappingURL=dom.min.js.map","min_map":"{\"version\":3,\"file\":\"dom.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"createElement\",\"tag\",\"className\",\"content\",\"e\",\"window\",\"document\",\"undefined\",\"textContent\",\"toggleClass\",\"elem\",\"bool\",\"classList\",\"add\",\"remove\",\"clearNode\",\"node\",\"firstChild\",\"removeChild\",\"findParent\",\"condition\",\"parentNode\",\"createNumberInput\",\"inputClassName\",\"opts\",\"wrapper\",\"numInput\",\"arrowUp\",\"arrowDown\",\"navigator\",\"userAgent\",\"indexOf\",\"type\",\"pattern\",\"key\",\"setAttribute\",\"appendChild\",\"getEventTarget\",\"event\",\"composedPath\",\"target\",\"error\"],\"sources\":[\"0\"],\"mappings\":\"AAAsC,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAQnF,SAASC,EAAcC,EAAKC,EAAWC,GACnC,IAAIC,EAAIC,OAAOC,SAASN,cAAcC,GAMtC,OALAC,EAAYA,GAAa,GACzBC,EAAUA,GAAW,GACrBC,EAAEF,UAAYA,OACEK,IAAZJ,IACAC,EAAEI,YAAcL,GACbC,CACX,CAfAN,IAMAD,EAAQY,YALR,SAAqBC,EAAMR,EAAWS,GAClC,IAAa,IAATA,EACA,OAAOD,EAAKE,UAAUC,IAAIX,GAC9BQ,EAAKE,UAAUE,OAAOZ,EAC1B,EAWAL,EAAQG,cAAgBA,EAKxBH,EAAQkB,UAJR,SAAmBC,GACf,KAAOA,EAAKC,YACRD,EAAKE,YAAYF,EAAKC,WAC9B,EASApB,EAAQsB,WAPR,SAASA,EAAWH,EAAMI,GACtB,OAAIA,EAAUJ,GACHA,EACFA,EAAKK,WACHF,EAAWH,EAAKK,WAAYD,QADlC,CAGT,EAmBAvB,EAAQyB,kBAjBR,SAA2BC,EAAgBC,GACvC,IAAIC,EAAUzB,EAAc,MAAO,mBAAoB0B,EAAW1B,EAAc,QAAS,YAAcuB,GAAiBI,EAAU3B,EAAc,OAAQ,WAAY4B,EAAY5B,EAAc,OAAQ,aAQtM,IAPiD,IAA7C6B,UAAUC,UAAUC,QAAQ,YAC5BL,EAASM,KAAO,UAGhBN,EAASM,KAAO,OAChBN,EAASO,QAAU,aAEV1B,IAATiB,EACA,IAAK,IAAIU,KAAOV,EACZE,EAASS,aAAaD,EAAKV,EAAKU,IAIxC,OAHAT,EAAQW,YAAYV,GACpBD,EAAQW,YAAYT,GACpBF,EAAQW,YAAYR,GACbH,CACX,EAcA5B,EAAQwC,eAZR,SAAwBC,GACpB,IACI,MAAkC,mBAAvBA,EAAMC,aACFD,EAAMC,eACL,GAETD,EAAME,MACjB,CACA,MAAOC,GACH,OAAOH,EAAME,MACjB,CACJ,CAEJ\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/utils/dates.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"flatpickr/dist/esm/utils/dates.js","resolution":"ESM","id":"1bb8c967d1","hash":"1bb8c967d10a6d1b23909403071fa06e41d1d64c38e9fff53a35df75408f4942","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDefaultHours = exports.duration = exports.parseSeconds = exports.calculateSecondsSinceMidnight = exports.isBetween = exports.compareTimes = exports.compareDates = exports.createDateParser = exports.createDateFormatter = void 0;\nconst formatting_1 = require(\"./formatting\");\nconst options_1 = require(\"../types/options\");\nconst default_1 = require(\"../l10n/default\");\nvar createDateFormatter = function (_a) {\n    var _b = _a.config, config = _b === void 0 ? options_1.defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? default_1.english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n    return function (dateObj, frmt, overrideLocale) {\n        var locale = overrideLocale || l10n;\n        if (config.formatDate !== undefined && !isMobile) {\n            return config.formatDate(dateObj, frmt, locale);\n        }\n        return frmt\n            .split(\"\")\n            .map(function (c, i, arr) {\n            return formatting_1.formats[c] && arr[i - 1] !== \"\\\\\"\n                ? formatting_1.formats[c](dateObj, locale, config)\n                : c !== \"\\\\\"\n                    ? c\n                    : \"\";\n        })\n            .join(\"\");\n    };\n};\nexports.createDateFormatter = createDateFormatter;\nvar createDateParser = function (_a) {\n    var _b = _a.config, config = _b === void 0 ? options_1.defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? default_1.english : _c;\n    return function (date, givenFormat, timeless, customLocale) {\n        if (date !== 0 && !date)\n            return undefined;\n        var locale = customLocale || l10n;\n        var parsedDate;\n        var dateOrig = date;\n        if (date instanceof Date)\n            parsedDate = new Date(date.getTime());\n        else if (typeof date !== \"string\" &&\n            date.toFixed !== undefined)\n            parsedDate = new Date(date);\n        else if (typeof date === \"string\") {\n            var format = givenFormat || (config || options_1.defaults).dateFormat;\n            var datestr = String(date).trim();\n            if (datestr === \"today\") {\n                parsedDate = new Date();\n                timeless = true;\n            }\n            else if (config && config.parseDate) {\n                parsedDate = config.parseDate(date, format);\n            }\n            else if (/Z$/.test(datestr) ||\n                /GMT$/.test(datestr)) {\n                parsedDate = new Date(date);\n            }\n            else {\n                var matched = void 0, ops = [];\n                for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n                    var token = format[i];\n                    var isBackSlash = token === \"\\\\\";\n                    var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n                    if (formatting_1.tokenRegex[token] && !escaped) {\n                        regexStr += formatting_1.tokenRegex[token];\n                        var match = new RegExp(regexStr).exec(date);\n                        if (match && (matched = true)) {\n                            ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n                                fn: formatting_1.revFormat[token],\n                                val: match[++matchIndex],\n                            });\n                        }\n                    }\n                    else if (!isBackSlash)\n                        regexStr += \".\";\n                }\n                parsedDate =\n                    !config || !config.noCalendar\n                        ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n                        : new Date(new Date().setHours(0, 0, 0, 0));\n                ops.forEach(function (_a) {\n                    var fn = _a.fn, val = _a.val;\n                    return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n                });\n                parsedDate = matched ? parsedDate : undefined;\n            }\n        }\n        if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n            config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n            return undefined;\n        }\n        if (timeless === true)\n            parsedDate.setHours(0, 0, 0, 0);\n        return parsedDate;\n    };\n};\nexports.createDateParser = createDateParser;\nfunction compareDates(date1, date2, timeless) {\n    if (timeless === void 0) {\n        timeless = true;\n    }\n    if (timeless !== false) {\n        return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n            new Date(date2.getTime()).setHours(0, 0, 0, 0));\n    }\n    return date1.getTime() - date2.getTime();\n}\nexports.compareDates = compareDates;\nfunction compareTimes(date1, date2) {\n    return (3600 * (date1.getHours() - date2.getHours()) +\n        60 * (date1.getMinutes() - date2.getMinutes()) +\n        date1.getSeconds() -\n        date2.getSeconds());\n}\nexports.compareTimes = compareTimes;\nvar isBetween = function (ts, ts1, ts2) {\n    return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexports.isBetween = isBetween;\nvar calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n    return hours * 3600 + minutes * 60 + seconds;\n};\nexports.calculateSecondsSinceMidnight = calculateSecondsSinceMidnight;\nvar parseSeconds = function (secondsSinceMidnight) {\n    var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n    return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexports.parseSeconds = parseSeconds;\nexports.duration = {\n    DAY: 86400000,\n};\nfunction getDefaultHours(config) {\n    var hours = config.defaultHour;\n    var minutes = config.defaultMinute;\n    var seconds = config.defaultSeconds;\n    if (config.minDate !== undefined) {\n        var minHour = config.minDate.getHours();\n        var minMinutes = config.minDate.getMinutes();\n        var minSeconds = config.minDate.getSeconds();\n        if (hours < minHour) {\n            hours = minHour;\n        }\n        if (hours === minHour && minutes < minMinutes) {\n            minutes = minMinutes;\n        }\n        if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n            seconds = config.minDate.getSeconds();\n    }\n    if (config.maxDate !== undefined) {\n        var maxHr = config.maxDate.getHours();\n        var maxMinutes = config.maxDate.getMinutes();\n        hours = Math.min(hours, maxHr);\n        if (hours === maxHr)\n            minutes = Math.min(maxMinutes, minutes);\n        if (hours === maxHr && minutes === maxMinutes)\n            seconds = config.maxDate.getSeconds();\n    }\n    return { hours: hours, minutes: minutes, seconds: seconds };\n}\nexports.getDefaultHours = getDefaultHours;\n","type":"js","dependency_paths":[["./formatting","/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/utils/formatting.js"],["../types/options","/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/types/options.js"],["../l10n/default","/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/l10n/default.js"]],"dependency_map":[],"exported":[{"type":"named","name":"compareDates"},{"type":"named","name":"compareTimes"},{"type":"named","name":"getDefaultHours"}],"externals":[],"shims":[]},"code":{"source":"/* flatpickr/dist/esm/utils/dates.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const formatting_1 = require(\"3d14787c35\") /* ./formatting */;\n    const options_1 = require(\"651d495396\") /* ../types/options */;\n    const default_1 = require(\"3bfa124fda\") /* ../l10n/default */;\n    var createDateFormatter = function (_a) {\n        var _b = _a.config, config = _b === void 0 ? options_1.defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? default_1.english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n        return function (dateObj, frmt, overrideLocale) {\n            var locale = overrideLocale || l10n;\n            if (config.formatDate !== undefined && !isMobile) {\n                return config.formatDate(dateObj, frmt, locale);\n            }\n            return frmt\n                .split(\"\")\n                .map(function (c, i, arr) {\n                return formatting_1.formats[c] && arr[i - 1] !== \"\\\\\"\n                    ? formatting_1.formats[c](dateObj, locale, config)\n                    : c !== \"\\\\\"\n                        ? c\n                        : \"\";\n            })\n                .join(\"\");\n        };\n    };\n    exports.createDateFormatter = createDateFormatter;\n    var createDateParser = function (_a) {\n        var _b = _a.config, config = _b === void 0 ? options_1.defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? default_1.english : _c;\n        return function (date, givenFormat, timeless, customLocale) {\n            if (date !== 0 && !date)\n                return undefined;\n            var locale = customLocale || l10n;\n            var parsedDate;\n            var dateOrig = date;\n            if (date instanceof Date)\n                parsedDate = new Date(date.getTime());\n            else if (typeof date !== \"string\" &&\n                date.toFixed !== undefined)\n                parsedDate = new Date(date);\n            else if (typeof date === \"string\") {\n                var format = givenFormat || (config || options_1.defaults).dateFormat;\n                var datestr = String(date).trim();\n                if (datestr === \"today\") {\n                    parsedDate = new Date();\n                    timeless = true;\n                }\n                else if (config && config.parseDate) {\n                    parsedDate = config.parseDate(date, format);\n                }\n                else if (/Z$/.test(datestr) ||\n                    /GMT$/.test(datestr)) {\n                    parsedDate = new Date(date);\n                }\n                else {\n                    var matched = void 0, ops = [];\n                    for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n                        var token = format[i];\n                        var isBackSlash = token === \"\\\\\";\n                        var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n                        if (formatting_1.tokenRegex[token] && !escaped) {\n                            regexStr += formatting_1.tokenRegex[token];\n                            var match = new RegExp(regexStr).exec(date);\n                            if (match && (matched = true)) {\n                                ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n                                    fn: formatting_1.revFormat[token],\n                                    val: match[++matchIndex],\n                                });\n                            }\n                        }\n                        else if (!isBackSlash)\n                            regexStr += \".\";\n                    }\n                    parsedDate =\n                        !config || !config.noCalendar\n                            ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n                            : new Date(new Date().setHours(0, 0, 0, 0));\n                    ops.forEach(function (_a) {\n                        var fn = _a.fn, val = _a.val;\n                        return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n                    });\n                    parsedDate = matched ? parsedDate : undefined;\n                }\n            }\n            if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n                config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n                return undefined;\n            }\n            if (timeless === true)\n                parsedDate.setHours(0, 0, 0, 0);\n            return parsedDate;\n        };\n    };\n    exports.createDateParser = createDateParser;\n    function compareDates(date1, date2, timeless) {\n        if (timeless === void 0) {\n            timeless = true;\n        }\n        if (timeless !== false) {\n            return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n                new Date(date2.getTime()).setHours(0, 0, 0, 0));\n        }\n        return date1.getTime() - date2.getTime();\n    }\n    exports.compareDates = compareDates;\n    function compareTimes(date1, date2) {\n        return (3600 * (date1.getHours() - date2.getHours()) +\n            60 * (date1.getMinutes() - date2.getMinutes()) +\n            date1.getSeconds() -\n            date2.getSeconds());\n    }\n    exports.compareTimes = compareTimes;\n    var isBetween = function (ts, ts1, ts2) {\n        return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n    };\n    exports.isBetween = isBetween;\n    var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n        return hours * 3600 + minutes * 60 + seconds;\n    };\n    exports.calculateSecondsSinceMidnight = calculateSecondsSinceMidnight;\n    var parseSeconds = function (secondsSinceMidnight) {\n        var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n        return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n    };\n    exports.parseSeconds = parseSeconds;\n    exports.duration = {\n        DAY: 86400000,\n    };\n    function getDefaultHours(config) {\n        var hours = config.defaultHour;\n        var minutes = config.defaultMinute;\n        var seconds = config.defaultSeconds;\n        if (config.minDate !== undefined) {\n            var minHour = config.minDate.getHours();\n            var minMinutes = config.minDate.getMinutes();\n            var minSeconds = config.minDate.getSeconds();\n            if (hours < minHour) {\n                hours = minHour;\n            }\n            if (hours === minHour && minutes < minMinutes) {\n                minutes = minMinutes;\n            }\n            if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n                seconds = config.minDate.getSeconds();\n        }\n        if (config.maxDate !== undefined) {\n            var maxHr = config.maxDate.getHours();\n            var maxMinutes = config.maxDate.getMinutes();\n            hours = Math.min(hours, maxHr);\n            if (hours === maxHr)\n                minutes = Math.min(maxMinutes, minutes);\n            if (hours === maxHr && minutes === maxMinutes)\n                seconds = config.maxDate.getSeconds();\n        }\n        return { hours: hours, minutes: minutes, seconds: seconds };\n    }\n    exports.getDefaultHours = getDefaultHours;\n}\n","min_source":"function _(e,t,n,a,r){a();const i=e(\"3d14787c35\"),o=e(\"651d495396\"),s=e(\"3bfa124fda\");n.createDateFormatter=function(e){var t=e.config,n=void 0===t?o.defaults:t,a=e.l10n,r=void 0===a?s.english:a,u=e.isMobile,f=void 0!==u&&u;return function(e,t,a){var o=a||r;return void 0===n.formatDate||f?t.split(\"\").map((function(t,a,r){return i.formats[t]&&\"\\\\\"!==r[a-1]?i.formats[t](e,o,n):\"\\\\\"!==t?t:\"\"})).join(\"\"):n.formatDate(e,t,o)}};n.createDateParser=function(e){var t=e.config,n=void 0===t?o.defaults:t,a=e.l10n,r=void 0===a?s.english:a;return function(e,t,a,s){if(0===e||e){var u,f=s||r,d=e;if(e instanceof Date)u=new Date(e.getTime());else if(\"string\"!=typeof e&&void 0!==e.toFixed)u=new Date(e);else if(\"string\"==typeof e){var c=t||(n||o.defaults).dateFormat,g=String(e).trim();if(\"today\"===g)u=new Date,a=!0;else if(n&&n.parseDate)u=n.parseDate(e,c);else if(/Z$/.test(g)||/GMT$/.test(g))u=new Date(e);else{for(var m=void 0,l=[],v=0,D=0,h=\"\";v<c.length;v++){var w=c[v],M=\"\\\\\"===w,p=\"\\\\\"===c[v-1]||M;if(i.tokenRegex[w]&&!p){h+=i.tokenRegex[w];var H=new RegExp(h).exec(e);H&&(m=!0)&&l[\"Y\"!==w?\"push\":\"unshift\"]({fn:i.revFormat[w],val:H[++D]})}else M||(h+=\".\")}u=n&&n.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0),l.forEach((function(e){var t=e.fn,n=e.val;return u=t(u,n,f)||u})),u=m?u:void 0}}if(u instanceof Date&&!isNaN(u.getTime()))return!0===a&&u.setHours(0,0,0,0),u;n.errorHandler(new Error(\"Invalid date provided: \"+d))}}},n.compareDates=function(e,t,n){return void 0===n&&(n=!0),!1!==n?new Date(e.getTime()).setHours(0,0,0,0)-new Date(t.getTime()).setHours(0,0,0,0):e.getTime()-t.getTime()},n.compareTimes=function(e,t){return 3600*(e.getHours()-t.getHours())+60*(e.getMinutes()-t.getMinutes())+e.getSeconds()-t.getSeconds()};n.isBetween=function(e,t,n){return e>Math.min(t,n)&&e<Math.max(t,n)};n.calculateSecondsSinceMidnight=function(e,t,n){return 3600*e+60*t+n};n.parseSeconds=function(e){var t=Math.floor(e/3600),n=(e-3600*t)/60;return[t,n,e-3600*t-60*n]},n.duration={DAY:864e5},n.getDefaultHours=function(e){var t=e.defaultHour,n=e.defaultMinute,a=e.defaultSeconds;if(void 0!==e.minDate){var r=e.minDate.getHours(),i=e.minDate.getMinutes(),o=e.minDate.getSeconds();t<r&&(t=r),t===r&&n<i&&(n=i),t===r&&n===i&&a<o&&(a=e.minDate.getSeconds())}if(void 0!==e.maxDate){var s=e.maxDate.getHours(),u=e.maxDate.getMinutes();(t=Math.min(t,s))===s&&(n=Math.min(u,n)),t===s&&n===u&&(a=e.maxDate.getSeconds())}return{hours:t,minutes:n,seconds:a}}}\n//# sourceMappingURL=dates.min.js.map","min_map":"{\"version\":3,\"file\":\"dates.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"formatting_1\",\"options_1\",\"default_1\",\"createDateFormatter\",\"_a\",\"_b\",\"config\",\"defaults\",\"_c\",\"l10n\",\"english\",\"_d\",\"isMobile\",\"dateObj\",\"frmt\",\"overrideLocale\",\"locale\",\"undefined\",\"formatDate\",\"split\",\"map\",\"c\",\"i\",\"arr\",\"formats\",\"join\",\"createDateParser\",\"date\",\"givenFormat\",\"timeless\",\"customLocale\",\"parsedDate\",\"dateOrig\",\"Date\",\"getTime\",\"toFixed\",\"format\",\"dateFormat\",\"datestr\",\"String\",\"trim\",\"parseDate\",\"test\",\"matched\",\"ops\",\"matchIndex\",\"regexStr\",\"length\",\"token\",\"isBackSlash\",\"escaped\",\"tokenRegex\",\"match\",\"RegExp\",\"exec\",\"fn\",\"revFormat\",\"val\",\"noCalendar\",\"setHours\",\"getFullYear\",\"forEach\",\"isNaN\",\"errorHandler\",\"Error\",\"compareDates\",\"date1\",\"date2\",\"compareTimes\",\"getHours\",\"getMinutes\",\"getSeconds\",\"isBetween\",\"ts\",\"ts1\",\"ts2\",\"Math\",\"min\",\"max\",\"calculateSecondsSinceMidnight\",\"hours\",\"minutes\",\"seconds\",\"parseSeconds\",\"secondsSinceMidnight\",\"floor\",\"duration\",\"DAY\",\"getDefaultHours\",\"defaultHour\",\"defaultMinute\",\"defaultSeconds\",\"minDate\",\"minHour\",\"minMinutes\",\"minSeconds\",\"maxDate\",\"maxHr\",\"maxMinutes\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/utils/formatting.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"flatpickr/dist/esm/utils/formatting.js","resolution":"ESM","id":"3d14787c35","hash":"3d14787c358577e1d33b07bb2df280c121a1c99769bb99dc61e06908606a8ef8","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formats = exports.tokenRegex = exports.revFormat = exports.monthToStr = void 0;\nconst utils_1 = require(\"../utils\");\nvar doNothing = function () { return undefined; };\nvar monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexports.monthToStr = monthToStr;\nexports.revFormat = {\n    D: doNothing,\n    F: function (dateObj, monthName, locale) {\n        dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n    },\n    G: function (dateObj, hour) {\n        dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n    },\n    H: function (dateObj, hour) {\n        dateObj.setHours(parseFloat(hour));\n    },\n    J: function (dateObj, day) {\n        dateObj.setDate(parseFloat(day));\n    },\n    K: function (dateObj, amPM, locale) {\n        dateObj.setHours((dateObj.getHours() % 12) +\n            12 * (0, utils_1.int)(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n    },\n    M: function (dateObj, shortMonth, locale) {\n        dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n    },\n    S: function (dateObj, seconds) {\n        dateObj.setSeconds(parseFloat(seconds));\n    },\n    U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n    W: function (dateObj, weekNum, locale) {\n        var weekNumber = parseInt(weekNum);\n        var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n        date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n        return date;\n    },\n    Y: function (dateObj, year) {\n        dateObj.setFullYear(parseFloat(year));\n    },\n    Z: function (_, ISODate) { return new Date(ISODate); },\n    d: function (dateObj, day) {\n        dateObj.setDate(parseFloat(day));\n    },\n    h: function (dateObj, hour) {\n        dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n    },\n    i: function (dateObj, minutes) {\n        dateObj.setMinutes(parseFloat(minutes));\n    },\n    j: function (dateObj, day) {\n        dateObj.setDate(parseFloat(day));\n    },\n    l: doNothing,\n    m: function (dateObj, month) {\n        dateObj.setMonth(parseFloat(month) - 1);\n    },\n    n: function (dateObj, month) {\n        dateObj.setMonth(parseFloat(month) - 1);\n    },\n    s: function (dateObj, seconds) {\n        dateObj.setSeconds(parseFloat(seconds));\n    },\n    u: function (_, unixMillSeconds) {\n        return new Date(parseFloat(unixMillSeconds));\n    },\n    w: doNothing,\n    y: function (dateObj, year) {\n        dateObj.setFullYear(2000 + parseFloat(year));\n    },\n};\nexports.tokenRegex = {\n    D: \"\",\n    F: \"\",\n    G: \"(\\\\d\\\\d|\\\\d)\",\n    H: \"(\\\\d\\\\d|\\\\d)\",\n    J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n    K: \"\",\n    M: \"\",\n    S: \"(\\\\d\\\\d|\\\\d)\",\n    U: \"(.+)\",\n    W: \"(\\\\d\\\\d|\\\\d)\",\n    Y: \"(\\\\d{4})\",\n    Z: \"(.+)\",\n    d: \"(\\\\d\\\\d|\\\\d)\",\n    h: \"(\\\\d\\\\d|\\\\d)\",\n    i: \"(\\\\d\\\\d|\\\\d)\",\n    j: \"(\\\\d\\\\d|\\\\d)\",\n    l: \"\",\n    m: \"(\\\\d\\\\d|\\\\d)\",\n    n: \"(\\\\d\\\\d|\\\\d)\",\n    s: \"(\\\\d\\\\d|\\\\d)\",\n    u: \"(.+)\",\n    w: \"(\\\\d\\\\d|\\\\d)\",\n    y: \"(\\\\d{2})\",\n};\nexports.formats = {\n    Z: function (date) { return date.toISOString(); },\n    D: function (date, locale, options) {\n        return locale.weekdays.shorthand[exports.formats.w(date, locale, options)];\n    },\n    F: function (date, locale, options) {\n        return (0, exports.monthToStr)(exports.formats.n(date, locale, options) - 1, false, locale);\n    },\n    G: function (date, locale, options) {\n        return (0, utils_1.pad)(exports.formats.h(date, locale, options));\n    },\n    H: function (date) { return (0, utils_1.pad)(date.getHours()); },\n    J: function (date, locale) {\n        return locale.ordinal !== undefined\n            ? date.getDate() + locale.ordinal(date.getDate())\n            : date.getDate();\n    },\n    K: function (date, locale) { return locale.amPM[(0, utils_1.int)(date.getHours() > 11)]; },\n    M: function (date, locale) {\n        return (0, exports.monthToStr)(date.getMonth(), true, locale);\n    },\n    S: function (date) { return (0, utils_1.pad)(date.getSeconds()); },\n    U: function (date) { return date.getTime() / 1000; },\n    W: function (date, _, options) {\n        return options.getWeek(date);\n    },\n    Y: function (date) { return (0, utils_1.pad)(date.getFullYear(), 4); },\n    d: function (date) { return (0, utils_1.pad)(date.getDate()); },\n    h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n    i: function (date) { return (0, utils_1.pad)(date.getMinutes()); },\n    j: function (date) { return date.getDate(); },\n    l: function (date, locale) {\n        return locale.weekdays.longhand[date.getDay()];\n    },\n    m: function (date) { return (0, utils_1.pad)(date.getMonth() + 1); },\n    n: function (date) { return date.getMonth() + 1; },\n    s: function (date) { return date.getSeconds(); },\n    u: function (date) { return date.getTime(); },\n    w: function (date) { return date.getDay(); },\n    y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n","type":"js","dependency_paths":[["../utils","/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/utils/index.js"]],"dependency_map":[],"exported":[],"externals":[],"shims":[]},"code":{"source":"/* flatpickr/dist/esm/utils/formatting.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const utils_1 = require(\"15458073ce\") /* ../utils */;\n    var doNothing = function () { return undefined; };\n    var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n    exports.monthToStr = monthToStr;\n    exports.revFormat = {\n        D: doNothing,\n        F: function (dateObj, monthName, locale) {\n            dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n        },\n        G: function (dateObj, hour) {\n            dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n        },\n        H: function (dateObj, hour) {\n            dateObj.setHours(parseFloat(hour));\n        },\n        J: function (dateObj, day) {\n            dateObj.setDate(parseFloat(day));\n        },\n        K: function (dateObj, amPM, locale) {\n            dateObj.setHours((dateObj.getHours() % 12) +\n                12 * (0, utils_1.int)(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n        },\n        M: function (dateObj, shortMonth, locale) {\n            dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n        },\n        S: function (dateObj, seconds) {\n            dateObj.setSeconds(parseFloat(seconds));\n        },\n        U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n        W: function (dateObj, weekNum, locale) {\n            var weekNumber = parseInt(weekNum);\n            var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n            date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n            return date;\n        },\n        Y: function (dateObj, year) {\n            dateObj.setFullYear(parseFloat(year));\n        },\n        Z: function (_, ISODate) { return new Date(ISODate); },\n        d: function (dateObj, day) {\n            dateObj.setDate(parseFloat(day));\n        },\n        h: function (dateObj, hour) {\n            dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n        },\n        i: function (dateObj, minutes) {\n            dateObj.setMinutes(parseFloat(minutes));\n        },\n        j: function (dateObj, day) {\n            dateObj.setDate(parseFloat(day));\n        },\n        l: doNothing,\n        m: function (dateObj, month) {\n            dateObj.setMonth(parseFloat(month) - 1);\n        },\n        n: function (dateObj, month) {\n            dateObj.setMonth(parseFloat(month) - 1);\n        },\n        s: function (dateObj, seconds) {\n            dateObj.setSeconds(parseFloat(seconds));\n        },\n        u: function (_, unixMillSeconds) {\n            return new Date(parseFloat(unixMillSeconds));\n        },\n        w: doNothing,\n        y: function (dateObj, year) {\n            dateObj.setFullYear(2000 + parseFloat(year));\n        },\n    };\n    exports.tokenRegex = {\n        D: \"\",\n        F: \"\",\n        G: \"(\\\\d\\\\d|\\\\d)\",\n        H: \"(\\\\d\\\\d|\\\\d)\",\n        J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n        K: \"\",\n        M: \"\",\n        S: \"(\\\\d\\\\d|\\\\d)\",\n        U: \"(.+)\",\n        W: \"(\\\\d\\\\d|\\\\d)\",\n        Y: \"(\\\\d{4})\",\n        Z: \"(.+)\",\n        d: \"(\\\\d\\\\d|\\\\d)\",\n        h: \"(\\\\d\\\\d|\\\\d)\",\n        i: \"(\\\\d\\\\d|\\\\d)\",\n        j: \"(\\\\d\\\\d|\\\\d)\",\n        l: \"\",\n        m: \"(\\\\d\\\\d|\\\\d)\",\n        n: \"(\\\\d\\\\d|\\\\d)\",\n        s: \"(\\\\d\\\\d|\\\\d)\",\n        u: \"(.+)\",\n        w: \"(\\\\d\\\\d|\\\\d)\",\n        y: \"(\\\\d{2})\",\n    };\n    exports.formats = {\n        Z: function (date) { return date.toISOString(); },\n        D: function (date, locale, options) {\n            return locale.weekdays.shorthand[exports.formats.w(date, locale, options)];\n        },\n        F: function (date, locale, options) {\n            return (0, exports.monthToStr)(exports.formats.n(date, locale, options) - 1, false, locale);\n        },\n        G: function (date, locale, options) {\n            return (0, utils_1.pad)(exports.formats.h(date, locale, options));\n        },\n        H: function (date) { return (0, utils_1.pad)(date.getHours()); },\n        J: function (date, locale) {\n            return locale.ordinal !== undefined\n                ? date.getDate() + locale.ordinal(date.getDate())\n                : date.getDate();\n        },\n        K: function (date, locale) { return locale.amPM[(0, utils_1.int)(date.getHours() > 11)]; },\n        M: function (date, locale) {\n            return (0, exports.monthToStr)(date.getMonth(), true, locale);\n        },\n        S: function (date) { return (0, utils_1.pad)(date.getSeconds()); },\n        U: function (date) { return date.getTime() / 1000; },\n        W: function (date, _, options) {\n            return options.getWeek(date);\n        },\n        Y: function (date) { return (0, utils_1.pad)(date.getFullYear(), 4); },\n        d: function (date) { return (0, utils_1.pad)(date.getDate()); },\n        h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n        i: function (date) { return (0, utils_1.pad)(date.getMinutes()); },\n        j: function (date) { return date.getDate(); },\n        l: function (date, locale) {\n            return locale.weekdays.longhand[date.getDay()];\n        },\n        m: function (date) { return (0, utils_1.pad)(date.getMonth() + 1); },\n        n: function (date) { return date.getMonth() + 1; },\n        s: function (date) { return date.getSeconds(); },\n        u: function (date) { return date.getTime(); },\n        w: function (date) { return date.getDay(); },\n        y: function (date) { return String(date.getFullYear()).substring(2); },\n    };\n}\n","min_source":"function _(t,n,e,o,r){o();const u=t(\"15458073ce\");var a=function(){};e.monthToStr=function(t,n,e){return e.months[n?\"shorthand\":\"longhand\"][t]},e.revFormat={D:a,F:function(t,n,e){t.setMonth(e.months.longhand.indexOf(n))},G:function(t,n){t.setHours((t.getHours()>=12?12:0)+parseFloat(n))},H:function(t,n){t.setHours(parseFloat(n))},J:function(t,n){t.setDate(parseFloat(n))},K:function(t,n,e){t.setHours(t.getHours()%12+12*(0,u.int)(new RegExp(e.amPM[1],\"i\").test(n)))},M:function(t,n,e){t.setMonth(e.months.shorthand.indexOf(n))},S:function(t,n){t.setSeconds(parseFloat(n))},U:function(t,n){return new Date(1e3*parseFloat(n))},W:function(t,n,e){var o=parseInt(n),r=new Date(t.getFullYear(),0,2+7*(o-1),0,0,0,0);return r.setDate(r.getDate()-r.getDay()+e.firstDayOfWeek),r},Y:function(t,n){t.setFullYear(parseFloat(n))},Z:function(t,n){return new Date(n)},d:function(t,n){t.setDate(parseFloat(n))},h:function(t,n){t.setHours((t.getHours()>=12?12:0)+parseFloat(n))},i:function(t,n){t.setMinutes(parseFloat(n))},j:function(t,n){t.setDate(parseFloat(n))},l:a,m:function(t,n){t.setMonth(parseFloat(n)-1)},n:function(t,n){t.setMonth(parseFloat(n)-1)},s:function(t,n){t.setSeconds(parseFloat(n))},u:function(t,n){return new Date(parseFloat(n))},w:a,y:function(t,n){t.setFullYear(2e3+parseFloat(n))}},e.tokenRegex={D:\"\",F:\"\",G:\"(\\\\d\\\\d|\\\\d)\",H:\"(\\\\d\\\\d|\\\\d)\",J:\"(\\\\d\\\\d|\\\\d)\\\\w+\",K:\"\",M:\"\",S:\"(\\\\d\\\\d|\\\\d)\",U:\"(.+)\",W:\"(\\\\d\\\\d|\\\\d)\",Y:\"(\\\\d{4})\",Z:\"(.+)\",d:\"(\\\\d\\\\d|\\\\d)\",h:\"(\\\\d\\\\d|\\\\d)\",i:\"(\\\\d\\\\d|\\\\d)\",j:\"(\\\\d\\\\d|\\\\d)\",l:\"\",m:\"(\\\\d\\\\d|\\\\d)\",n:\"(\\\\d\\\\d|\\\\d)\",s:\"(\\\\d\\\\d|\\\\d)\",u:\"(.+)\",w:\"(\\\\d\\\\d|\\\\d)\",y:\"(\\\\d{2})\"},e.formats={Z:function(t){return t.toISOString()},D:function(t,n,o){return n.weekdays.shorthand[e.formats.w(t,n,o)]},F:function(t,n,o){return(0,e.monthToStr)(e.formats.n(t,n,o)-1,!1,n)},G:function(t,n,o){return(0,u.pad)(e.formats.h(t,n,o))},H:function(t){return(0,u.pad)(t.getHours())},J:function(t,n){return void 0!==n.ordinal?t.getDate()+n.ordinal(t.getDate()):t.getDate()},K:function(t,n){return n.amPM[(0,u.int)(t.getHours()>11)]},M:function(t,n){return(0,e.monthToStr)(t.getMonth(),!0,n)},S:function(t){return(0,u.pad)(t.getSeconds())},U:function(t){return t.getTime()/1e3},W:function(t,n,e){return e.getWeek(t)},Y:function(t){return(0,u.pad)(t.getFullYear(),4)},d:function(t){return(0,u.pad)(t.getDate())},h:function(t){return t.getHours()%12?t.getHours()%12:12},i:function(t){return(0,u.pad)(t.getMinutes())},j:function(t){return t.getDate()},l:function(t,n){return n.weekdays.longhand[t.getDay()]},m:function(t){return(0,u.pad)(t.getMonth()+1)},n:function(t){return t.getMonth()+1},s:function(t){return t.getSeconds()},u:function(t){return t.getTime()},w:function(t){return t.getDay()},y:function(t){return String(t.getFullYear()).substring(2)}}}\n//# sourceMappingURL=formatting.min.js.map","min_map":"{\"version\":3,\"file\":\"formatting.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"utils_1\",\"doNothing\",\"monthToStr\",\"monthNumber\",\"shorthand\",\"locale\",\"months\",\"revFormat\",\"D\",\"F\",\"dateObj\",\"monthName\",\"setMonth\",\"longhand\",\"indexOf\",\"G\",\"hour\",\"setHours\",\"getHours\",\"parseFloat\",\"H\",\"J\",\"day\",\"setDate\",\"K\",\"amPM\",\"int\",\"RegExp\",\"test\",\"M\",\"shortMonth\",\"S\",\"seconds\",\"setSeconds\",\"U\",\"unixSeconds\",\"Date\",\"W\",\"weekNum\",\"weekNumber\",\"parseInt\",\"date\",\"getFullYear\",\"getDate\",\"getDay\",\"firstDayOfWeek\",\"Y\",\"year\",\"setFullYear\",\"Z\",\"ISODate\",\"d\",\"h\",\"i\",\"minutes\",\"setMinutes\",\"j\",\"l\",\"m\",\"month\",\"n\",\"s\",\"u\",\"unixMillSeconds\",\"w\",\"y\",\"tokenRegex\",\"formats\",\"toISOString\",\"options\",\"weekdays\",\"pad\",\"undefined\",\"ordinal\",\"getMonth\",\"getSeconds\",\"getTime\",\"getWeek\",\"getMinutes\",\"String\",\"substring\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/flatpickr/dist/esm/utils/polyfills.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"flatpickr/dist/esm/utils/polyfills.js","resolution":"ESM","id":"6f45019dc1","hash":"6f45019dc11436a38b5d4ba114c211679ff30a80891d0055ae934bb456793aaa","source":"\"use strict\";\nif (typeof Object.assign !== \"function\") {\n    Object.assign = function (target) {\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        if (!target) {\n            throw TypeError(\"Cannot convert undefined or null to object\");\n        }\n        var _loop_1 = function (source) {\n            if (source) {\n                Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n            }\n        };\n        for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n            var source = args_1[_a];\n            _loop_1(source);\n        }\n        return target;\n    };\n}\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[],"externals":[],"shims":[]},"code":{"source":"/* flatpickr/dist/esm/utils/polyfills.js */ function _(require, module, exports, __esModule, __esExport) {\n    if (typeof Object.assign !== \"function\") {\n        Object.assign = function (target) {\n            var args = [];\n            for (var _i = 1; _i < arguments.length; _i++) {\n                args[_i - 1] = arguments[_i];\n            }\n            if (!target) {\n                throw TypeError(\"Cannot convert undefined or null to object\");\n            }\n            var _loop_1 = function (source) {\n                if (source) {\n                    Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n                }\n            };\n            for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n                var source = args_1[_a];\n                _loop_1(source);\n            }\n            return target;\n        };\n    }\n}\n","min_source":"function _(n,t,o,r,e){\"function\"!=typeof Object.assign&&(Object.assign=function(n){for(var t=[],o=1;o<arguments.length;o++)t[o-1]=arguments[o];if(!n)throw TypeError(\"Cannot convert undefined or null to object\");for(var r=function(t){t&&Object.keys(t).forEach((function(o){return n[o]=t[o]}))},e=0,c=t;e<c.length;e++){r(c[e])}return n})}\n//# sourceMappingURL=polyfills.min.js.map","min_map":"{\"version\":3,\"file\":\"polyfills.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"Object\",\"assign\",\"target\",\"args\",\"_i\",\"arguments\",\"length\",\"TypeError\",\"_loop_1\",\"source\",\"keys\",\"forEach\",\"key\",\"_a\",\"args_1\"],\"sources\":[\"0\"],\"mappings\":\"AAA4C,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAC5D,mBAAlBC,OAAOC,SACdD,OAAOC,OAAS,SAAUC,GAEtB,IADA,IAAIC,EAAO,GACFC,EAAK,EAAGA,EAAKC,UAAUC,OAAQF,IACpCD,EAAKC,EAAK,GAAKC,UAAUD,GAE7B,IAAKF,EACD,MAAMK,UAAU,8CAOpB,IALA,IAAIC,EAAU,SAAUC,GAChBA,GACAT,OAAOU,KAAKD,GAAQE,SAAQ,SAAUC,GAAO,OAAQV,EAAOU,GAAOH,EAAOG,EAAO,GAEzF,EACSC,EAAK,EAAGC,EAASX,EAAMU,EAAKC,EAAOR,OAAQO,IAAM,CAEtDL,EADaM,EAAOD,GAExB,CACA,OAAOX,CACX,EAER\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/deckgl.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/deckgl.js","canonical":"models/deckgl","resolution":"ESM","id":"19b5a68a40","hash":"19b5a68a40a426b5be84432323431146f82f853a46f98404007dbcd70136d31b","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeckGLPlot = exports.DeckGLPlotView = void 0;\nconst tslib_1 = require(\"tslib\");\nvar _a;\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst column_data_source_1 = require(\"@bokehjs/models/sources/column_data_source\");\nconst debounce_1 = require(\"debounce\");\nconst data_1 = require(\"./data\");\nconst layout_dom_1 = require(\"@bokehjs/models/layouts/layout_dom\");\nconst tooltips_1 = require(\"./tooltips\");\nconst constants_1 = tslib_1.__importDefault(require(\"@luma.gl/constants\"));\nfunction extractClasses() {\n    // Get classes for registration from standalone deck.gl\n    const classesDict = {};\n    const deck = window.deck;\n    const classes = Object.keys(deck).filter(x => x.charAt(0) === x.charAt(0).toUpperCase());\n    for (const cls of classes) {\n        classesDict[cls] = deck[cls];\n    }\n    return classesDict;\n}\nclass DeckGLPlotView extends layout_dom_1.LayoutDOMView {\n    connect_signals() {\n        super.connect_signals();\n        const { data, mapbox_api_key, tooltip, layers, initialViewState, data_sources } = this.model.properties;\n        this.on_change([mapbox_api_key, tooltip], () => this.render());\n        this.on_change([data, initialViewState], () => this.updateDeck());\n        this.on_change([layers], () => this._update_layers());\n        this.on_change([data_sources], () => this._connect_sources(true));\n        this._layer_map = {};\n        this._connected = [];\n        this._connect_sources();\n    }\n    remove() {\n        this.deckGL.finalize();\n        super.remove();\n    }\n    _update_layers() {\n        this._layer_map = {};\n        this._update_data(true);\n    }\n    _connect_sources(render = false) {\n        for (const cds of this.model.data_sources) {\n            if (this._connected.indexOf(cds) < 0) {\n                this.connect(cds.properties.data.change, () => this._update_data(true));\n                this._connected.push(cds);\n            }\n        }\n        this._update_data(render);\n    }\n    initialize() {\n        super.initialize();\n        if (window.deck.JSONConverter) {\n            const { CSVLoader, Tiles3DLoader } = window.loaders;\n            window.loaders.registerLoaders([Tiles3DLoader, CSVLoader]);\n            const jsonConverterConfiguration = {\n                classes: extractClasses(),\n                // Will be resolved as `<enum-name>.<enum-value>`\n                enumerations: {\n                    COORDINATE_SYSTEM: window.deck.COORDINATE_SYSTEM,\n                    GL: constants_1.default\n                },\n                // Constants that should be resolved with the provided values by JSON converter\n                constants: {\n                    Tiles3DLoader\n                }\n            };\n            this.jsonConverter = new window.deck.JSONConverter({\n                configuration: jsonConverterConfiguration\n            });\n        }\n    }\n    _update_data(render = true) {\n        let n = 0;\n        for (const layer of this.model.layers) {\n            let cds;\n            n += 1;\n            if ((n - 1) in this._layer_map) {\n                cds = this.model.data_sources[this._layer_map[n - 1]];\n            }\n            else if (typeof layer.data != \"number\")\n                continue;\n            else {\n                this._layer_map[n - 1] = layer.data;\n                cds = this.model.data_sources[layer.data];\n            }\n            layer.data = (0, data_1.transform_cds_to_records)(cds);\n        }\n        if (render)\n            this.updateDeck();\n    }\n    _on_click_event(event) {\n        const click_state = {\n            coordinate: event.coordinate,\n            lngLat: event.coordinate,\n            index: event.index\n        };\n        if (event.layer)\n            click_state.layer = event.layer.id;\n        this.model.clickState = click_state;\n    }\n    _on_hover_event(event) {\n        if (event.coordinate == null)\n            return;\n        const hover_state = {\n            coordinate: event.coordinate,\n            lngLat: event.coordinate,\n            index: event.index\n        };\n        if (event.layer)\n            hover_state.layer = event.layer.id;\n        this.model.hoverState = hover_state;\n    }\n    _on_viewState_event(event) {\n        const view_state = Object.assign({}, event.viewState);\n        delete view_state.normalize;\n        for (const p in view_state) {\n            if (p.startsWith('transition'))\n                delete view_state[p];\n        }\n        const viewport = new window.deck.WebMercatorViewport(view_state);\n        view_state.nw = viewport.unproject([0, 0]);\n        view_state.se = viewport.unproject([viewport.width, viewport.height]);\n        this.model.viewState = view_state;\n    }\n    get child_models() {\n        return [];\n    }\n    getData() {\n        const view_timeout = this.model.throttle['view'] || 200;\n        const hover_timeout = this.model.throttle['hover'] || 100;\n        const view_cb = (0, debounce_1.debounce)((event) => this._on_viewState_event(event), view_timeout, false);\n        const hover_cb = (0, debounce_1.debounce)((event) => this._on_hover_event(event), hover_timeout, false);\n        const data = Object.assign(Object.assign({}, this.model.data), { layers: this.model.layers, initialViewState: this.model.initialViewState, onViewStateChange: view_cb, onClick: (event) => this._on_click_event(event), onHover: hover_cb });\n        return data;\n    }\n    updateDeck() {\n        if (!this.deckGL) {\n            this.render();\n            return;\n        }\n        const data = this.getData();\n        if (window.deck.updateDeck) {\n            window.deck.updateDeck(data, this.deckGL);\n        }\n        else {\n            const results = this.jsonConverter.convert(data);\n            this.deckGL.setProps(results);\n        }\n    }\n    createDeck({ mapboxApiKey, container, jsonInput, tooltip }) {\n        let deckgl;\n        try {\n            const props = this.jsonConverter.convert(jsonInput);\n            const getTooltip = (0, tooltips_1.makeTooltip)(tooltip, props.layers);\n            deckgl = new window.deck.DeckGL(Object.assign(Object.assign({}, props), { map: window.mapboxgl, mapboxApiAccessToken: mapboxApiKey, container,\n                getTooltip, width: '100%', height: '100%' }));\n        }\n        catch (err) {\n            console.error(err);\n        }\n        return deckgl;\n    }\n    render() {\n        super.render();\n        const container = (0, dom_1.div)({ class: \"deckgl\" });\n        const MAPBOX_API_KEY = this.model.mapbox_api_key;\n        const tooltip = this.model.tooltip;\n        const data = this.getData();\n        if (window.deck.createDeck) {\n            this.deckGL = window.deck.createDeck({\n                mapboxApiKey: MAPBOX_API_KEY,\n                container: container,\n                jsonInput: data,\n                tooltip\n            });\n        }\n        else {\n            this.deckGL = this.createDeck({\n                mapboxApiKey: MAPBOX_API_KEY,\n                container: container,\n                jsonInput: data,\n                tooltip\n            });\n        }\n        this.shadow_el.appendChild(container);\n    }\n    after_layout() {\n        super.after_layout();\n        this.deckGL.redraw(true);\n    }\n}\nexports.DeckGLPlotView = DeckGLPlotView;\nDeckGLPlotView.__name__ = \"DeckGLPlotView\";\nclass DeckGLPlot extends layout_dom_1.LayoutDOM {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.DeckGLPlot = DeckGLPlot;\n_a = DeckGLPlot;\nDeckGLPlot.__name__ = \"DeckGLPlot\";\nDeckGLPlot.__module__ = \"panel.models.deckgl\";\n(() => {\n    _a.prototype.default_view = DeckGLPlotView;\n    _a.define(({ Any, Array, String, Ref }) => ({\n        data: [Any],\n        data_sources: [Array(Ref(column_data_source_1.ColumnDataSource)), []],\n        clickState: [Any, {}],\n        hoverState: [Any, {}],\n        initialViewState: [Any, {}],\n        layers: [Array(Any), []],\n        mapbox_api_key: [String, ''],\n        throttle: [Any, {}],\n        tooltip: [Any, true],\n        viewState: [Any, {}],\n    }));\n    _a.override({\n        height: 400,\n        width: 600\n    });\n})();\n//# sourceMappingURL=deckgl.js.map\n","type":"js","dependency_paths":[["debounce","/croot/panel_1706539561184/work/panel/node_modules/debounce/index.js"],["./data","/croot/panel_1706539561184/work/panel/dist/lib/models/data.js"],["./tooltips","/croot/panel_1706539561184/work/panel/dist/lib/models/tooltips.js"],["@luma.gl/constants","/croot/panel_1706539561184/work/panel/node_modules/@luma.gl/constants/src/index.js"]],"dependency_map":[],"exported":[{"type":"named","name":"DeckGLPlotView"},{"type":"named","name":"DeckGLPlot"}],"externals":[],"shims":[]},"code":{"source":"/* models/deckgl.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    var _a;\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const column_data_source_1 = require(\"@bokehjs/models/sources/column_data_source\");\n    const debounce_1 = require(\"99a25e6992\") /* debounce */;\n    const data_1 = require(\"4e27eda472\") /* ./data */;\n    const layout_dom_1 = require(\"@bokehjs/models/layouts/layout_dom\");\n    const tooltips_1 = require(\"9588ab7c9e\") /* ./tooltips */;\n    const constants_1 = tslib_1.__importDefault(require(\"093eb75864\") /* @luma.gl/constants */);\n    function extractClasses() {\n        // Get classes for registration from standalone deck.gl\n        const classesDict = {};\n        const deck = window.deck;\n        const classes = Object.keys(deck).filter(x => x.charAt(0) === x.charAt(0).toUpperCase());\n        for (const cls of classes) {\n            classesDict[cls] = deck[cls];\n        }\n        return classesDict;\n    }\n    class DeckGLPlotView extends layout_dom_1.LayoutDOMView {\n        connect_signals() {\n            super.connect_signals();\n            const { data, mapbox_api_key, tooltip, layers, initialViewState, data_sources } = this.model.properties;\n            this.on_change([mapbox_api_key, tooltip], () => this.render());\n            this.on_change([data, initialViewState], () => this.updateDeck());\n            this.on_change([layers], () => this._update_layers());\n            this.on_change([data_sources], () => this._connect_sources(true));\n            this._layer_map = {};\n            this._connected = [];\n            this._connect_sources();\n        }\n        remove() {\n            this.deckGL.finalize();\n            super.remove();\n        }\n        _update_layers() {\n            this._layer_map = {};\n            this._update_data(true);\n        }\n        _connect_sources(render = false) {\n            for (const cds of this.model.data_sources) {\n                if (this._connected.indexOf(cds) < 0) {\n                    this.connect(cds.properties.data.change, () => this._update_data(true));\n                    this._connected.push(cds);\n                }\n            }\n            this._update_data(render);\n        }\n        initialize() {\n            super.initialize();\n            if (window.deck.JSONConverter) {\n                const { CSVLoader, Tiles3DLoader } = window.loaders;\n                window.loaders.registerLoaders([Tiles3DLoader, CSVLoader]);\n                const jsonConverterConfiguration = {\n                    classes: extractClasses(),\n                    // Will be resolved as `<enum-name>.<enum-value>`\n                    enumerations: {\n                        COORDINATE_SYSTEM: window.deck.COORDINATE_SYSTEM,\n                        GL: constants_1.default\n                    },\n                    // Constants that should be resolved with the provided values by JSON converter\n                    constants: {\n                        Tiles3DLoader\n                    }\n                };\n                this.jsonConverter = new window.deck.JSONConverter({\n                    configuration: jsonConverterConfiguration\n                });\n            }\n        }\n        _update_data(render = true) {\n            let n = 0;\n            for (const layer of this.model.layers) {\n                let cds;\n                n += 1;\n                if ((n - 1) in this._layer_map) {\n                    cds = this.model.data_sources[this._layer_map[n - 1]];\n                }\n                else if (typeof layer.data != \"number\")\n                    continue;\n                else {\n                    this._layer_map[n - 1] = layer.data;\n                    cds = this.model.data_sources[layer.data];\n                }\n                layer.data = (0, data_1.transform_cds_to_records)(cds);\n            }\n            if (render)\n                this.updateDeck();\n        }\n        _on_click_event(event) {\n            const click_state = {\n                coordinate: event.coordinate,\n                lngLat: event.coordinate,\n                index: event.index\n            };\n            if (event.layer)\n                click_state.layer = event.layer.id;\n            this.model.clickState = click_state;\n        }\n        _on_hover_event(event) {\n            if (event.coordinate == null)\n                return;\n            const hover_state = {\n                coordinate: event.coordinate,\n                lngLat: event.coordinate,\n                index: event.index\n            };\n            if (event.layer)\n                hover_state.layer = event.layer.id;\n            this.model.hoverState = hover_state;\n        }\n        _on_viewState_event(event) {\n            const view_state = Object.assign({}, event.viewState);\n            delete view_state.normalize;\n            for (const p in view_state) {\n                if (p.startsWith('transition'))\n                    delete view_state[p];\n            }\n            const viewport = new window.deck.WebMercatorViewport(view_state);\n            view_state.nw = viewport.unproject([0, 0]);\n            view_state.se = viewport.unproject([viewport.width, viewport.height]);\n            this.model.viewState = view_state;\n        }\n        get child_models() {\n            return [];\n        }\n        getData() {\n            const view_timeout = this.model.throttle['view'] || 200;\n            const hover_timeout = this.model.throttle['hover'] || 100;\n            const view_cb = (0, debounce_1.debounce)((event) => this._on_viewState_event(event), view_timeout, false);\n            const hover_cb = (0, debounce_1.debounce)((event) => this._on_hover_event(event), hover_timeout, false);\n            const data = Object.assign(Object.assign({}, this.model.data), { layers: this.model.layers, initialViewState: this.model.initialViewState, onViewStateChange: view_cb, onClick: (event) => this._on_click_event(event), onHover: hover_cb });\n            return data;\n        }\n        updateDeck() {\n            if (!this.deckGL) {\n                this.render();\n                return;\n            }\n            const data = this.getData();\n            if (window.deck.updateDeck) {\n                window.deck.updateDeck(data, this.deckGL);\n            }\n            else {\n                const results = this.jsonConverter.convert(data);\n                this.deckGL.setProps(results);\n            }\n        }\n        createDeck({ mapboxApiKey, container, jsonInput, tooltip }) {\n            let deckgl;\n            try {\n                const props = this.jsonConverter.convert(jsonInput);\n                const getTooltip = (0, tooltips_1.makeTooltip)(tooltip, props.layers);\n                deckgl = new window.deck.DeckGL(Object.assign(Object.assign({}, props), { map: window.mapboxgl, mapboxApiAccessToken: mapboxApiKey, container,\n                    getTooltip, width: '100%', height: '100%' }));\n            }\n            catch (err) {\n                console.error(err);\n            }\n            return deckgl;\n        }\n        render() {\n            super.render();\n            const container = (0, dom_1.div)({ class: \"deckgl\" });\n            const MAPBOX_API_KEY = this.model.mapbox_api_key;\n            const tooltip = this.model.tooltip;\n            const data = this.getData();\n            if (window.deck.createDeck) {\n                this.deckGL = window.deck.createDeck({\n                    mapboxApiKey: MAPBOX_API_KEY,\n                    container: container,\n                    jsonInput: data,\n                    tooltip\n                });\n            }\n            else {\n                this.deckGL = this.createDeck({\n                    mapboxApiKey: MAPBOX_API_KEY,\n                    container: container,\n                    jsonInput: data,\n                    tooltip\n                });\n            }\n            this.shadow_el.appendChild(container);\n        }\n        after_layout() {\n            super.after_layout();\n            this.deckGL.redraw(true);\n        }\n    }\n    exports.DeckGLPlotView = DeckGLPlotView;\n    DeckGLPlotView.__name__ = \"DeckGLPlotView\";\n    class DeckGLPlot extends layout_dom_1.LayoutDOM {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.DeckGLPlot = DeckGLPlot;\n    _a = DeckGLPlot;\n    DeckGLPlot.__name__ = \"DeckGLPlot\";\n    DeckGLPlot.__module__ = \"panel.models.deckgl\";\n    (() => {\n        _a.prototype.default_view = DeckGLPlotView;\n        _a.define(({ Any, Array, String, Ref }) => ({\n            data: [Any],\n            data_sources: [Array(Ref(column_data_source_1.ColumnDataSource)), []],\n            clickState: [Any, {}],\n            hoverState: [Any, {}],\n            initialViewState: [Any, {}],\n            layers: [Array(Any), []],\n            mapbox_api_key: [String, ''],\n            throttle: [Any, {}],\n            tooltip: [Any, true],\n            viewState: [Any, {}],\n        }));\n        _a.override({\n            height: 400,\n            width: 600\n        });\n    })();\n}\n","min_source":"function _(e,t,o,i,a){i();const n=e(\"tslib\");var s;const r=e(\"@bokehjs/core/dom\"),c=e(\"@bokehjs/models/sources/column_data_source\"),d=e(\"99a25e6992\"),l=e(\"4e27eda472\"),_=e(\"@bokehjs/models/layouts/layout_dom\"),h=e(\"9588ab7c9e\"),p=n.__importDefault(e(\"093eb75864\"));function u(){const e={},t=window.deck,o=Object.keys(t).filter((e=>e.charAt(0)===e.charAt(0).toUpperCase()));for(const i of o)e[i]=t[i];return e}class w extends _.LayoutDOMView{connect_signals(){super.connect_signals();const{data:e,mapbox_api_key:t,tooltip:o,layers:i,initialViewState:a,data_sources:n}=this.model.properties;this.on_change([t,o],(()=>this.render())),this.on_change([e,a],(()=>this.updateDeck())),this.on_change([i],(()=>this._update_layers())),this.on_change([n],(()=>this._connect_sources(!0))),this._layer_map={},this._connected=[],this._connect_sources()}remove(){this.deckGL.finalize(),super.remove()}_update_layers(){this._layer_map={},this._update_data(!0)}_connect_sources(e=!1){for(const e of this.model.data_sources)this._connected.indexOf(e)<0&&(this.connect(e.properties.data.change,(()=>this._update_data(!0))),this._connected.push(e));this._update_data(e)}initialize(){if(super.initialize(),window.deck.JSONConverter){const{CSVLoader:e,Tiles3DLoader:t}=window.loaders;window.loaders.registerLoaders([t,e]);const o={classes:u(),enumerations:{COORDINATE_SYSTEM:window.deck.COORDINATE_SYSTEM,GL:p.default},constants:{Tiles3DLoader:t}};this.jsonConverter=new window.deck.JSONConverter({configuration:o})}}_update_data(e=!0){let t=0;for(const e of this.model.layers){let o;if(t+=1,t-1 in this._layer_map)o=this.model.data_sources[this._layer_map[t-1]];else{if(\"number\"!=typeof e.data)continue;this._layer_map[t-1]=e.data,o=this.model.data_sources[e.data]}e.data=(0,l.transform_cds_to_records)(o)}e&&this.updateDeck()}_on_click_event(e){const t={coordinate:e.coordinate,lngLat:e.coordinate,index:e.index};e.layer&&(t.layer=e.layer.id),this.model.clickState=t}_on_hover_event(e){if(null==e.coordinate)return;const t={coordinate:e.coordinate,lngLat:e.coordinate,index:e.index};e.layer&&(t.layer=e.layer.id),this.model.hoverState=t}_on_viewState_event(e){const t=Object.assign({},e.viewState);delete t.normalize;for(const e in t)e.startsWith(\"transition\")&&delete t[e];const o=new window.deck.WebMercatorViewport(t);t.nw=o.unproject([0,0]),t.se=o.unproject([o.width,o.height]),this.model.viewState=t}get child_models(){return[]}getData(){const e=this.model.throttle.view||200,t=this.model.throttle.hover||100,o=(0,d.debounce)((e=>this._on_viewState_event(e)),e,!1),i=(0,d.debounce)((e=>this._on_hover_event(e)),t,!1);return Object.assign(Object.assign({},this.model.data),{layers:this.model.layers,initialViewState:this.model.initialViewState,onViewStateChange:o,onClick:e=>this._on_click_event(e),onHover:i})}updateDeck(){if(!this.deckGL)return void this.render();const e=this.getData();if(window.deck.updateDeck)window.deck.updateDeck(e,this.deckGL);else{const t=this.jsonConverter.convert(e);this.deckGL.setProps(t)}}createDeck({mapboxApiKey:e,container:t,jsonInput:o,tooltip:i}){let a;try{const n=this.jsonConverter.convert(o),s=(0,h.makeTooltip)(i,n.layers);a=new window.deck.DeckGL(Object.assign(Object.assign({},n),{map:window.mapboxgl,mapboxApiAccessToken:e,container:t,getTooltip:s,width:\"100%\",height:\"100%\"}))}catch(e){console.error(e)}return a}render(){super.render();const e=(0,r.div)({class:\"deckgl\"}),t=this.model.mapbox_api_key,o=this.model.tooltip,i=this.getData();window.deck.createDeck?this.deckGL=window.deck.createDeck({mapboxApiKey:t,container:e,jsonInput:i,tooltip:o}):this.deckGL=this.createDeck({mapboxApiKey:t,container:e,jsonInput:i,tooltip:o}),this.shadow_el.appendChild(e)}after_layout(){super.after_layout(),this.deckGL.redraw(!0)}}o.DeckGLPlotView=w,w.__name__=\"DeckGLPlotView\";class m extends _.LayoutDOM{constructor(e){super(e)}}o.DeckGLPlot=m,s=m,m.__name__=\"DeckGLPlot\",m.__module__=\"panel.models.deckgl\",s.prototype.default_view=w,s.define((({Any:e,Array:t,String:o,Ref:i})=>({data:[e],data_sources:[t(i(c.ColumnDataSource)),[]],clickState:[e,{}],hoverState:[e,{}],initialViewState:[e,{}],layers:[t(e),[]],mapbox_api_key:[o,\"\"],throttle:[e,{}],tooltip:[e,!0],viewState:[e,{}]}))),s.override({height:400,width:600})}\n//# sourceMappingURL=deckgl.min.js.map","min_map":"{\"version\":3,\"file\":\"deckgl.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"tslib_1\",\"_a\",\"dom_1\",\"column_data_source_1\",\"debounce_1\",\"data_1\",\"layout_dom_1\",\"tooltips_1\",\"constants_1\",\"__importDefault\",\"extractClasses\",\"classesDict\",\"deck\",\"window\",\"classes\",\"Object\",\"keys\",\"filter\",\"x\",\"charAt\",\"toUpperCase\",\"cls\",\"DeckGLPlotView\",\"LayoutDOMView\",\"connect_signals\",\"super\",\"data\",\"mapbox_api_key\",\"tooltip\",\"layers\",\"initialViewState\",\"data_sources\",\"this\",\"model\",\"properties\",\"on_change\",\"render\",\"updateDeck\",\"_update_layers\",\"_connect_sources\",\"_layer_map\",\"_connected\",\"remove\",\"deckGL\",\"finalize\",\"_update_data\",\"cds\",\"indexOf\",\"connect\",\"change\",\"push\",\"initialize\",\"JSONConverter\",\"CSVLoader\",\"Tiles3DLoader\",\"loaders\",\"registerLoaders\",\"jsonConverterConfiguration\",\"enumerations\",\"COORDINATE_SYSTEM\",\"GL\",\"default\",\"constants\",\"jsonConverter\",\"configuration\",\"n\",\"layer\",\"transform_cds_to_records\",\"_on_click_event\",\"event\",\"click_state\",\"coordinate\",\"lngLat\",\"index\",\"id\",\"clickState\",\"_on_hover_event\",\"hover_state\",\"hoverState\",\"_on_viewState_event\",\"view_state\",\"assign\",\"viewState\",\"normalize\",\"p\",\"startsWith\",\"viewport\",\"WebMercatorViewport\",\"nw\",\"unproject\",\"se\",\"width\",\"height\",\"child_models\",\"getData\",\"view_timeout\",\"throttle\",\"hover_timeout\",\"view_cb\",\"debounce\",\"hover_cb\",\"onViewStateChange\",\"onClick\",\"onHover\",\"results\",\"convert\",\"setProps\",\"createDeck\",\"mapboxApiKey\",\"container\",\"jsonInput\",\"deckgl\",\"props\",\"getTooltip\",\"makeTooltip\",\"DeckGL\",\"map\",\"mapboxgl\",\"mapboxApiAccessToken\",\"err\",\"console\",\"error\",\"div\",\"class\",\"MAPBOX_API_KEY\",\"shadow_el\",\"appendChild\",\"after_layout\",\"redraw\",\"__name__\",\"DeckGLPlot\",\"LayoutDOM\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Any\",\"Array\",\"String\",\"Ref\",\"ColumnDataSource\",\"override\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/tooltips.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/tooltips.js","canonical":"models/tooltips","resolution":"ESM","id":"9588ab7c9e","hash":"9588ab7c9e18cd0fbebd5d6f24c6c9a96ff793c6a30f5c4731afdb9cedb1c541","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeTooltip = exports.substituteIn = exports.toText = exports.tabularize = exports.getTooltipDefault = void 0;\n/*\nThis file was adapted from https://github.com/uber/deck.gl/ the LICENSE\nbelow is preserved to comply with the original license.\n\nCopyright (c) 2015 - 2017 Uber Technologies, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n/* global document */\nlet lastPickedObject;\nlet lastTooltip;\nconst DEFAULT_STYLE = {\n    fontFamily: '\"Helvetica Neue\", Helvetica, Arial, sans-serif',\n    display: 'flex',\n    flex: 'wrap',\n    maxWidth: '500px',\n    flexDirection: 'column',\n    zIndex: 2\n};\nfunction getDiv() {\n    return document.createElement('div');\n}\nfunction getTooltipDefault(pickedInfo) {\n    if (!pickedInfo.picked) {\n        return null;\n    }\n    if (pickedInfo.object === lastPickedObject) {\n        return lastTooltip;\n    }\n    const tooltip = {\n        html: tabularize(pickedInfo.object),\n        style: DEFAULT_STYLE\n    };\n    lastTooltip = tooltip;\n    lastPickedObject = pickedInfo.object;\n    return tooltip;\n}\nexports.getTooltipDefault = getTooltipDefault;\nconst EXCLUDES = new Set(['position', 'index']);\nfunction tabularize(json) {\n    // Turns a JSON object of picked info into HTML for a tooltip\n    const dataTable = getDiv();\n    // Creates rows of two columns for the tooltip\n    for (const key in json) {\n        if (EXCLUDES.has(key)) {\n            continue; // eslint-disable-line\n        }\n        const header = getDiv();\n        header.className = 'header';\n        header.textContent = key;\n        const valueElement = getDiv();\n        valueElement.className = 'value';\n        valueElement.textContent = toText(json[key]);\n        const row = getDiv();\n        setStyles(row, header, valueElement);\n        row.appendChild(header);\n        row.appendChild(valueElement);\n        dataTable.appendChild(row);\n    }\n    return dataTable.innerHTML;\n}\nexports.tabularize = tabularize;\nfunction setStyles(row, header, value) {\n    // Set default tooltip style\n    Object.assign(header.style, {\n        fontWeight: 700,\n        marginRight: '10px',\n        flex: '1 1 0%'\n    });\n    Object.assign(value.style, {\n        flex: 'none',\n        maxWidth: '250px',\n        overflow: 'hidden',\n        whiteSpace: 'nowrap',\n        textOverflow: 'ellipsis'\n    });\n    Object.assign(row.style, {\n        display: 'flex',\n        flexDirection: 'row',\n        justifyContent: 'space-between',\n        alignItems: 'stretch'\n    });\n}\nfunction toText(jsonValue) {\n    // Set contents of table value, trimming for certain types of data\n    let text;\n    if (Array.isArray(jsonValue) && jsonValue.length > 4) {\n        text = `Array<${jsonValue.length}>`;\n    }\n    else if (typeof jsonValue === 'string') {\n        text = jsonValue;\n    }\n    else if (typeof jsonValue === 'number') {\n        text = String(jsonValue);\n    }\n    else {\n        try {\n            text = JSON.stringify(jsonValue);\n        }\n        catch (err) {\n            text = '<Non-Serializable Object>';\n        }\n    }\n    const MAX_LENGTH = 50;\n    if (text.length > MAX_LENGTH) {\n        text = text.slice(0, MAX_LENGTH);\n    }\n    return text;\n}\nexports.toText = toText;\nfunction substituteIn(template, json) {\n    let output = template;\n    for (const key in json) {\n        if (typeof json[key] === 'object') {\n            for (const subkey in json[key])\n                output = output.replace(`{${key}.${subkey}}`, json[key][subkey]);\n        }\n        output = output.replace(`{${key}}`, json[key]);\n    }\n    return output;\n}\nexports.substituteIn = substituteIn;\nfunction makeTooltip(tooltips, layers) {\n    /*\n     * If explicitly no tooltip passed by user, return null\n     * If a JSON object passed, return a tooltip based on that object\n     *   We expect the user has passed a string template that will take pickedInfo keywords\n     * If a boolean passed, return the default tooltip\n     */\n    if (!tooltips) {\n        return null;\n    }\n    let per_layer = false;\n    const layer_tooltips = {};\n    for (let i = 0; i < layers.length; i++) {\n        const layer = layers[i];\n        const layer_id = layer.id;\n        if (typeof tooltips !== \"boolean\" && (i.toString() in tooltips || layer_id in tooltips)) {\n            layer_tooltips[layer_id] = layer_id in tooltips ? tooltips[layer_id] : tooltips[i.toString()];\n            per_layer = true;\n        }\n    }\n    if (tooltips.html || tooltips.text || per_layer) {\n        return (pickedInfo) => {\n            if (!pickedInfo.picked) {\n                return null;\n            }\n            const tooltip = (per_layer) ? layer_tooltips[pickedInfo.layer.id] : tooltips;\n            if (tooltip == null)\n                return;\n            else if (typeof tooltip === \"boolean\")\n                return tooltip ? getTooltipDefault(pickedInfo) : null;\n            const formattedTooltip = {\n                style: tooltip.style || DEFAULT_STYLE\n            };\n            if (tooltip.html) {\n                formattedTooltip.html = substituteIn(tooltip.html, pickedInfo.object);\n            }\n            else {\n                formattedTooltip.text = substituteIn(tooltip.text, pickedInfo.object);\n            }\n            return formattedTooltip;\n        };\n    }\n    return getTooltipDefault;\n}\nexports.makeTooltip = makeTooltip;\n//# sourceMappingURL=tooltips.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"getTooltipDefault"},{"type":"named","name":"tabularize"},{"type":"named","name":"toText"},{"type":"named","name":"substituteIn"},{"type":"named","name":"makeTooltip"}],"externals":[],"shims":[]},"code":{"source":"/* models/tooltips.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    /*\n    This file was adapted from https://github.com/uber/deck.gl/ the LICENSE\n    below is preserved to comply with the original license.\n    \n    Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n    THE SOFTWARE.\n    */\n    /* global document */\n    let lastPickedObject;\n    let lastTooltip;\n    const DEFAULT_STYLE = {\n        fontFamily: '\"Helvetica Neue\", Helvetica, Arial, sans-serif',\n        display: 'flex',\n        flex: 'wrap',\n        maxWidth: '500px',\n        flexDirection: 'column',\n        zIndex: 2\n    };\n    function getDiv() {\n        return document.createElement('div');\n    }\n    function getTooltipDefault(pickedInfo) {\n        if (!pickedInfo.picked) {\n            return null;\n        }\n        if (pickedInfo.object === lastPickedObject) {\n            return lastTooltip;\n        }\n        const tooltip = {\n            html: tabularize(pickedInfo.object),\n            style: DEFAULT_STYLE\n        };\n        lastTooltip = tooltip;\n        lastPickedObject = pickedInfo.object;\n        return tooltip;\n    }\n    exports.getTooltipDefault = getTooltipDefault;\n    const EXCLUDES = new Set(['position', 'index']);\n    function tabularize(json) {\n        // Turns a JSON object of picked info into HTML for a tooltip\n        const dataTable = getDiv();\n        // Creates rows of two columns for the tooltip\n        for (const key in json) {\n            if (EXCLUDES.has(key)) {\n                continue; // eslint-disable-line\n            }\n            const header = getDiv();\n            header.className = 'header';\n            header.textContent = key;\n            const valueElement = getDiv();\n            valueElement.className = 'value';\n            valueElement.textContent = toText(json[key]);\n            const row = getDiv();\n            setStyles(row, header, valueElement);\n            row.appendChild(header);\n            row.appendChild(valueElement);\n            dataTable.appendChild(row);\n        }\n        return dataTable.innerHTML;\n    }\n    exports.tabularize = tabularize;\n    function setStyles(row, header, value) {\n        // Set default tooltip style\n        Object.assign(header.style, {\n            fontWeight: 700,\n            marginRight: '10px',\n            flex: '1 1 0%'\n        });\n        Object.assign(value.style, {\n            flex: 'none',\n            maxWidth: '250px',\n            overflow: 'hidden',\n            whiteSpace: 'nowrap',\n            textOverflow: 'ellipsis'\n        });\n        Object.assign(row.style, {\n            display: 'flex',\n            flexDirection: 'row',\n            justifyContent: 'space-between',\n            alignItems: 'stretch'\n        });\n    }\n    function toText(jsonValue) {\n        // Set contents of table value, trimming for certain types of data\n        let text;\n        if (Array.isArray(jsonValue) && jsonValue.length > 4) {\n            text = `Array<${jsonValue.length}>`;\n        }\n        else if (typeof jsonValue === 'string') {\n            text = jsonValue;\n        }\n        else if (typeof jsonValue === 'number') {\n            text = String(jsonValue);\n        }\n        else {\n            try {\n                text = JSON.stringify(jsonValue);\n            }\n            catch (err) {\n                text = '<Non-Serializable Object>';\n            }\n        }\n        const MAX_LENGTH = 50;\n        if (text.length > MAX_LENGTH) {\n            text = text.slice(0, MAX_LENGTH);\n        }\n        return text;\n    }\n    exports.toText = toText;\n    function substituteIn(template, json) {\n        let output = template;\n        for (const key in json) {\n            if (typeof json[key] === 'object') {\n                for (const subkey in json[key])\n                    output = output.replace(`{${key}.${subkey}}`, json[key][subkey]);\n            }\n            output = output.replace(`{${key}}`, json[key]);\n        }\n        return output;\n    }\n    exports.substituteIn = substituteIn;\n    function makeTooltip(tooltips, layers) {\n        /*\n         * If explicitly no tooltip passed by user, return null\n         * If a JSON object passed, return a tooltip based on that object\n         *   We expect the user has passed a string template that will take pickedInfo keywords\n         * If a boolean passed, return the default tooltip\n         */\n        if (!tooltips) {\n            return null;\n        }\n        let per_layer = false;\n        const layer_tooltips = {};\n        for (let i = 0; i < layers.length; i++) {\n            const layer = layers[i];\n            const layer_id = layer.id;\n            if (typeof tooltips !== \"boolean\" && (i.toString() in tooltips || layer_id in tooltips)) {\n                layer_tooltips[layer_id] = layer_id in tooltips ? tooltips[layer_id] : tooltips[i.toString()];\n                per_layer = true;\n            }\n        }\n        if (tooltips.html || tooltips.text || per_layer) {\n            return (pickedInfo) => {\n                if (!pickedInfo.picked) {\n                    return null;\n                }\n                const tooltip = (per_layer) ? layer_tooltips[pickedInfo.layer.id] : tooltips;\n                if (tooltip == null)\n                    return;\n                else if (typeof tooltip === \"boolean\")\n                    return tooltip ? getTooltipDefault(pickedInfo) : null;\n                const formattedTooltip = {\n                    style: tooltip.style || DEFAULT_STYLE\n                };\n                if (tooltip.html) {\n                    formattedTooltip.html = substituteIn(tooltip.html, pickedInfo.object);\n                }\n                else {\n                    formattedTooltip.text = substituteIn(tooltip.text, pickedInfo.object);\n                }\n                return formattedTooltip;\n            };\n        }\n        return getTooltipDefault;\n    }\n    exports.makeTooltip = makeTooltip;\n}\n","min_source":"function _(t,e,n,i,l){\n/*\n    This file was adapted from https://github.com/uber/deck.gl/ the LICENSE\n    below is preserved to comply with the original license.\n    \n    Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in\n    all copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n    THE SOFTWARE.\n    */\nlet o,r;i();const c={fontFamily:'\"Helvetica Neue\", Helvetica, Arial, sans-serif',display:\"flex\",flex:\"wrap\",maxWidth:\"500px\",flexDirection:\"column\",zIndex:2};function s(){return document.createElement(\"div\")}function a(t){if(!t.picked)return null;if(t.object===o)return r;const e={html:u(t.object),style:c};return r=e,o=t.object,e}n.getTooltipDefault=a;const f=new Set([\"position\",\"index\"]);function u(t){const e=s();for(const n in t){if(f.has(n))continue;const i=s();i.className=\"header\",i.textContent=n;const l=s();l.className=\"value\",l.textContent=h(t[n]);const o=s();p(o,i,l),o.appendChild(i),o.appendChild(l),e.appendChild(o)}return e.innerHTML}function p(t,e,n){Object.assign(e.style,{fontWeight:700,marginRight:\"10px\",flex:\"1 1 0%\"}),Object.assign(n.style,{flex:\"none\",maxWidth:\"250px\",overflow:\"hidden\",whiteSpace:\"nowrap\",textOverflow:\"ellipsis\"}),Object.assign(t.style,{display:\"flex\",flexDirection:\"row\",justifyContent:\"space-between\",alignItems:\"stretch\"})}function h(t){let e;if(Array.isArray(t)&&t.length>4)e=`Array<${t.length}>`;else if(\"string\"==typeof t)e=t;else if(\"number\"==typeof t)e=String(t);else try{e=JSON.stringify(t)}catch(t){e=\"<Non-Serializable Object>\"}return e.length>50&&(e=e.slice(0,50)),e}function d(t,e){let n=t;for(const t in e){if(\"object\"==typeof e[t])for(const i in e[t])n=n.replace(`{${t}.${i}}`,e[t][i]);n=n.replace(`{${t}}`,e[t])}return n}n.tabularize=u,n.toText=h,n.substituteIn=d,n.makeTooltip=function(t,e){if(!t)return null;let n=!1;const i={};for(let l=0;l<e.length;l++){const o=e[l].id;\"boolean\"!=typeof t&&(l.toString()in t||o in t)&&(i[o]=o in t?t[o]:t[l.toString()],n=!0)}return t.html||t.text||n?e=>{if(!e.picked)return null;const l=n?i[e.layer.id]:t;if(null==l)return;if(\"boolean\"==typeof l)return l?a(e):null;const o={style:l.style||c};return l.html?o.html=d(l.html,e.object):o.text=d(l.text,e.object),o}:a}}\n//# sourceMappingURL=tooltips.min.js.map","min_map":"{\"version\":3,\"file\":\"tooltips.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"lastPickedObject\",\"lastTooltip\",\"DEFAULT_STYLE\",\"fontFamily\",\"display\",\"flex\",\"maxWidth\",\"flexDirection\",\"zIndex\",\"getDiv\",\"document\",\"createElement\",\"getTooltipDefault\",\"pickedInfo\",\"picked\",\"object\",\"tooltip\",\"html\",\"tabularize\",\"style\",\"EXCLUDES\",\"Set\",\"json\",\"dataTable\",\"key\",\"has\",\"header\",\"className\",\"textContent\",\"valueElement\",\"toText\",\"row\",\"setStyles\",\"appendChild\",\"innerHTML\",\"value\",\"Object\",\"assign\",\"fontWeight\",\"marginRight\",\"overflow\",\"whiteSpace\",\"textOverflow\",\"justifyContent\",\"alignItems\",\"jsonValue\",\"text\",\"Array\",\"isArray\",\"length\",\"String\",\"JSON\",\"stringify\",\"err\",\"slice\",\"substituteIn\",\"template\",\"output\",\"subkey\",\"replace\",\"makeTooltip\",\"tooltips\",\"layers\",\"per_layer\",\"layer_tooltips\",\"i\",\"layer_id\",\"id\",\"toString\",\"layer\",\"formattedTooltip\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/@luma.gl/constants/src/index.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"@luma.gl/constants/src/index.js","resolution":"ESM","id":"093eb75864","hash":"093eb7586440001cc7d112f8684d8c8c6e40d1ccb3014ea9e28763cd2ffec96f","source":"// GL constants, copied from Mozilla documentation\n// https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Constants\n// Standard WebGL 1 constants\n// These constants are defined on the WebGLRenderingContext interface.\n/* eslint-disable key-spacing, max-len, no-inline-comments, camelcase */\n// eslint-disable-next-line\nmodule.exports = {\n    // Clearing buffers\n    // Constants passed to clear() to clear buffer masks.\n    DEPTH_BUFFER_BIT: 0x00000100,\n    STENCIL_BUFFER_BIT: 0x00000400,\n    COLOR_BUFFER_BIT: 0x00004000,\n    // Rendering primitives\n    // Constants passed to drawElements() or drawArrays() to specify what kind of primitive to render.\n    POINTS: 0x0000,\n    LINES: 0x0001,\n    LINE_LOOP: 0x0002,\n    LINE_STRIP: 0x0003,\n    TRIANGLES: 0x0004,\n    TRIANGLE_STRIP: 0x0005,\n    TRIANGLE_FAN: 0x0006,\n    // Blending modes\n    // Constants passed to blendFunc() or blendFuncSeparate() to specify the blending mode (for both, RBG and alpha, or separately).\n    ZERO: 0,\n    ONE: 1,\n    SRC_COLOR: 0x0300,\n    ONE_MINUS_SRC_COLOR: 0x0301,\n    SRC_ALPHA: 0x0302,\n    ONE_MINUS_SRC_ALPHA: 0x0303,\n    DST_ALPHA: 0x0304,\n    ONE_MINUS_DST_ALPHA: 0x0305,\n    DST_COLOR: 0x0306,\n    ONE_MINUS_DST_COLOR: 0x0307,\n    SRC_ALPHA_SATURATE: 0x0308,\n    CONSTANT_COLOR: 0x8001,\n    ONE_MINUS_CONSTANT_COLOR: 0x8002,\n    CONSTANT_ALPHA: 0x8003,\n    ONE_MINUS_CONSTANT_ALPHA: 0x8004,\n    // Blending equations\n    // Constants passed to blendEquation() or blendEquationSeparate() to control\n    // how the blending is calculated (for both, RBG and alpha, or separately).\n    FUNC_ADD: 0x8006,\n    FUNC_SUBTRACT: 0x800a,\n    FUNC_REVERSE_SUBTRACT: 0x800b,\n    // Getting GL parameter information\n    // Constants passed to getParameter() to specify what information to return.\n    BLEND_EQUATION: 0x8009,\n    BLEND_EQUATION_RGB: 0x8009,\n    BLEND_EQUATION_ALPHA: 0x883d,\n    BLEND_DST_RGB: 0x80c8,\n    BLEND_SRC_RGB: 0x80c9,\n    BLEND_DST_ALPHA: 0x80ca,\n    BLEND_SRC_ALPHA: 0x80cb,\n    BLEND_COLOR: 0x8005,\n    ARRAY_BUFFER_BINDING: 0x8894,\n    ELEMENT_ARRAY_BUFFER_BINDING: 0x8895,\n    LINE_WIDTH: 0x0b21,\n    ALIASED_POINT_SIZE_RANGE: 0x846d,\n    ALIASED_LINE_WIDTH_RANGE: 0x846e,\n    CULL_FACE_MODE: 0x0b45,\n    FRONT_FACE: 0x0b46,\n    DEPTH_RANGE: 0x0b70,\n    DEPTH_WRITEMASK: 0x0b72,\n    DEPTH_CLEAR_VALUE: 0x0b73,\n    DEPTH_FUNC: 0x0b74,\n    STENCIL_CLEAR_VALUE: 0x0b91,\n    STENCIL_FUNC: 0x0b92,\n    STENCIL_FAIL: 0x0b94,\n    STENCIL_PASS_DEPTH_FAIL: 0x0b95,\n    STENCIL_PASS_DEPTH_PASS: 0x0b96,\n    STENCIL_REF: 0x0b97,\n    STENCIL_VALUE_MASK: 0x0b93,\n    STENCIL_WRITEMASK: 0x0b98,\n    STENCIL_BACK_FUNC: 0x8800,\n    STENCIL_BACK_FAIL: 0x8801,\n    STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802,\n    STENCIL_BACK_PASS_DEPTH_PASS: 0x8803,\n    STENCIL_BACK_REF: 0x8ca3,\n    STENCIL_BACK_VALUE_MASK: 0x8ca4,\n    STENCIL_BACK_WRITEMASK: 0x8ca5,\n    VIEWPORT: 0x0ba2,\n    SCISSOR_BOX: 0x0c10,\n    COLOR_CLEAR_VALUE: 0x0c22,\n    COLOR_WRITEMASK: 0x0c23,\n    UNPACK_ALIGNMENT: 0x0cf5,\n    PACK_ALIGNMENT: 0x0d05,\n    MAX_TEXTURE_SIZE: 0x0d33,\n    MAX_VIEWPORT_DIMS: 0x0d3a,\n    SUBPIXEL_BITS: 0x0d50,\n    RED_BITS: 0x0d52,\n    GREEN_BITS: 0x0d53,\n    BLUE_BITS: 0x0d54,\n    ALPHA_BITS: 0x0d55,\n    DEPTH_BITS: 0x0d56,\n    STENCIL_BITS: 0x0d57,\n    POLYGON_OFFSET_UNITS: 0x2a00,\n    POLYGON_OFFSET_FACTOR: 0x8038,\n    TEXTURE_BINDING_2D: 0x8069,\n    SAMPLE_BUFFERS: 0x80a8,\n    SAMPLES: 0x80a9,\n    SAMPLE_COVERAGE_VALUE: 0x80aa,\n    SAMPLE_COVERAGE_INVERT: 0x80ab,\n    COMPRESSED_TEXTURE_FORMATS: 0x86a3,\n    VENDOR: 0x1f00,\n    RENDERER: 0x1f01,\n    VERSION: 0x1f02,\n    IMPLEMENTATION_COLOR_READ_TYPE: 0x8b9a,\n    IMPLEMENTATION_COLOR_READ_FORMAT: 0x8b9b,\n    BROWSER_DEFAULT_WEBGL: 0x9244,\n    // Buffers\n    // Constants passed to bufferData(), bufferSubData(), bindBuffer(), or\n    // getBufferParameter().\n    STATIC_DRAW: 0x88e4,\n    STREAM_DRAW: 0x88e0,\n    DYNAMIC_DRAW: 0x88e8,\n    ARRAY_BUFFER: 0x8892,\n    ELEMENT_ARRAY_BUFFER: 0x8893,\n    BUFFER_SIZE: 0x8764,\n    BUFFER_USAGE: 0x8765,\n    // Vertex attributes\n    // Constants passed to getVertexAttrib().\n    CURRENT_VERTEX_ATTRIB: 0x8626,\n    VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622,\n    VERTEX_ATTRIB_ARRAY_SIZE: 0x8623,\n    VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624,\n    VERTEX_ATTRIB_ARRAY_TYPE: 0x8625,\n    VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886a,\n    VERTEX_ATTRIB_ARRAY_POINTER: 0x8645,\n    VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889f,\n    // Culling\n    // Constants passed to cullFace().\n    CULL_FACE: 0x0b44,\n    FRONT: 0x0404,\n    BACK: 0x0405,\n    FRONT_AND_BACK: 0x0408,\n    // Enabling and disabling\n    // Constants passed to enable() or disable().\n    BLEND: 0x0be2,\n    DEPTH_TEST: 0x0b71,\n    DITHER: 0x0bd0,\n    POLYGON_OFFSET_FILL: 0x8037,\n    SAMPLE_ALPHA_TO_COVERAGE: 0x809e,\n    SAMPLE_COVERAGE: 0x80a0,\n    SCISSOR_TEST: 0x0c11,\n    STENCIL_TEST: 0x0b90,\n    // Errors\n    // Constants returned from getError().\n    NO_ERROR: 0,\n    INVALID_ENUM: 0x0500,\n    INVALID_VALUE: 0x0501,\n    INVALID_OPERATION: 0x0502,\n    OUT_OF_MEMORY: 0x0505,\n    CONTEXT_LOST_WEBGL: 0x9242,\n    // Front face directions\n    // Constants passed to frontFace().\n    CW: 0x0900,\n    CCW: 0x0901,\n    // Hints\n    // Constants passed to hint()\n    DONT_CARE: 0x1100,\n    FASTEST: 0x1101,\n    NICEST: 0x1102,\n    GENERATE_MIPMAP_HINT: 0x8192,\n    // Data types\n    BYTE: 0x1400,\n    UNSIGNED_BYTE: 0x1401,\n    SHORT: 0x1402,\n    UNSIGNED_SHORT: 0x1403,\n    INT: 0x1404,\n    UNSIGNED_INT: 0x1405,\n    FLOAT: 0x1406,\n    DOUBLE: 0x140a,\n    // Pixel formats\n    DEPTH_COMPONENT: 0x1902,\n    ALPHA: 0x1906,\n    RGB: 0x1907,\n    RGBA: 0x1908,\n    LUMINANCE: 0x1909,\n    LUMINANCE_ALPHA: 0x190a,\n    // Pixel types\n    // UNSIGNED_BYTE: 0x1401,\n    UNSIGNED_SHORT_4_4_4_4: 0x8033,\n    UNSIGNED_SHORT_5_5_5_1: 0x8034,\n    UNSIGNED_SHORT_5_6_5: 0x8363,\n    // Shaders\n    // Constants passed to createShader() or getShaderParameter()\n    FRAGMENT_SHADER: 0x8b30,\n    VERTEX_SHADER: 0x8b31,\n    COMPILE_STATUS: 0x8b81,\n    DELETE_STATUS: 0x8b80,\n    LINK_STATUS: 0x8b82,\n    VALIDATE_STATUS: 0x8b83,\n    ATTACHED_SHADERS: 0x8b85,\n    ACTIVE_ATTRIBUTES: 0x8b89,\n    ACTIVE_UNIFORMS: 0x8b86,\n    MAX_VERTEX_ATTRIBS: 0x8869,\n    MAX_VERTEX_UNIFORM_VECTORS: 0x8dfb,\n    MAX_VARYING_VECTORS: 0x8dfc,\n    MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8b4d,\n    MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8b4c,\n    MAX_TEXTURE_IMAGE_UNITS: 0x8872,\n    MAX_FRAGMENT_UNIFORM_VECTORS: 0x8dfd,\n    SHADER_TYPE: 0x8b4f,\n    SHADING_LANGUAGE_VERSION: 0x8b8c,\n    CURRENT_PROGRAM: 0x8b8d,\n    // Depth or stencil tests\n    // Constants passed to depthFunc() or stencilFunc().\n    NEVER: 0x0200,\n    ALWAYS: 0x0207,\n    LESS: 0x0201,\n    EQUAL: 0x0202,\n    LEQUAL: 0x0203,\n    GREATER: 0x0204,\n    GEQUAL: 0x0206,\n    NOTEQUAL: 0x0205,\n    // Stencil actions\n    // Constants passed to stencilOp().\n    KEEP: 0x1e00,\n    REPLACE: 0x1e01,\n    INCR: 0x1e02,\n    DECR: 0x1e03,\n    INVERT: 0x150a,\n    INCR_WRAP: 0x8507,\n    DECR_WRAP: 0x8508,\n    // Textures\n    // Constants passed to texParameteri(),\n    // texParameterf(), bindTexture(), texImage2D(), and others.\n    NEAREST: 0x2600,\n    LINEAR: 0x2601,\n    NEAREST_MIPMAP_NEAREST: 0x2700,\n    LINEAR_MIPMAP_NEAREST: 0x2701,\n    NEAREST_MIPMAP_LINEAR: 0x2702,\n    LINEAR_MIPMAP_LINEAR: 0x2703,\n    TEXTURE_MAG_FILTER: 0x2800,\n    TEXTURE_MIN_FILTER: 0x2801,\n    TEXTURE_WRAP_S: 0x2802,\n    TEXTURE_WRAP_T: 0x2803,\n    TEXTURE_2D: 0x0de1,\n    TEXTURE: 0x1702,\n    TEXTURE_CUBE_MAP: 0x8513,\n    TEXTURE_BINDING_CUBE_MAP: 0x8514,\n    TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515,\n    TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516,\n    TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517,\n    TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518,\n    TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519,\n    TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851a,\n    MAX_CUBE_MAP_TEXTURE_SIZE: 0x851c,\n    // TEXTURE0 - 31 0x84C0 - 0x84DF A texture unit.\n    TEXTURE0: 0x84c0,\n    ACTIVE_TEXTURE: 0x84e0,\n    REPEAT: 0x2901,\n    CLAMP_TO_EDGE: 0x812f,\n    MIRRORED_REPEAT: 0x8370,\n    // Emulation\n    TEXTURE_WIDTH: 0x1000,\n    TEXTURE_HEIGHT: 0x1001,\n    // Uniform types\n    FLOAT_VEC2: 0x8b50,\n    FLOAT_VEC3: 0x8b51,\n    FLOAT_VEC4: 0x8b52,\n    INT_VEC2: 0x8b53,\n    INT_VEC3: 0x8b54,\n    INT_VEC4: 0x8b55,\n    BOOL: 0x8b56,\n    BOOL_VEC2: 0x8b57,\n    BOOL_VEC3: 0x8b58,\n    BOOL_VEC4: 0x8b59,\n    FLOAT_MAT2: 0x8b5a,\n    FLOAT_MAT3: 0x8b5b,\n    FLOAT_MAT4: 0x8b5c,\n    SAMPLER_2D: 0x8b5e,\n    SAMPLER_CUBE: 0x8b60,\n    // Shader precision-specified types\n    LOW_FLOAT: 0x8df0,\n    MEDIUM_FLOAT: 0x8df1,\n    HIGH_FLOAT: 0x8df2,\n    LOW_INT: 0x8df3,\n    MEDIUM_INT: 0x8df4,\n    HIGH_INT: 0x8df5,\n    // Framebuffers and renderbuffers\n    FRAMEBUFFER: 0x8d40,\n    RENDERBUFFER: 0x8d41,\n    RGBA4: 0x8056,\n    RGB5_A1: 0x8057,\n    RGB565: 0x8d62,\n    DEPTH_COMPONENT16: 0x81a5,\n    STENCIL_INDEX: 0x1901,\n    STENCIL_INDEX8: 0x8d48,\n    DEPTH_STENCIL: 0x84f9,\n    RENDERBUFFER_WIDTH: 0x8d42,\n    RENDERBUFFER_HEIGHT: 0x8d43,\n    RENDERBUFFER_INTERNAL_FORMAT: 0x8d44,\n    RENDERBUFFER_RED_SIZE: 0x8d50,\n    RENDERBUFFER_GREEN_SIZE: 0x8d51,\n    RENDERBUFFER_BLUE_SIZE: 0x8d52,\n    RENDERBUFFER_ALPHA_SIZE: 0x8d53,\n    RENDERBUFFER_DEPTH_SIZE: 0x8d54,\n    RENDERBUFFER_STENCIL_SIZE: 0x8d55,\n    FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8cd0,\n    FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8cd1,\n    FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8cd2,\n    FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8cd3,\n    COLOR_ATTACHMENT0: 0x8ce0,\n    DEPTH_ATTACHMENT: 0x8d00,\n    STENCIL_ATTACHMENT: 0x8d20,\n    DEPTH_STENCIL_ATTACHMENT: 0x821a,\n    NONE: 0,\n    FRAMEBUFFER_COMPLETE: 0x8cd5,\n    FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8cd6,\n    FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8cd7,\n    FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8cd9,\n    FRAMEBUFFER_UNSUPPORTED: 0x8cdd,\n    FRAMEBUFFER_BINDING: 0x8ca6,\n    RENDERBUFFER_BINDING: 0x8ca7,\n    READ_FRAMEBUFFER: 0x8ca8,\n    DRAW_FRAMEBUFFER: 0x8ca9,\n    MAX_RENDERBUFFER_SIZE: 0x84e8,\n    INVALID_FRAMEBUFFER_OPERATION: 0x0506,\n    // Pixel storage modes\n    // Constants passed to pixelStorei().\n    UNPACK_FLIP_Y_WEBGL: 0x9240,\n    UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241,\n    UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243,\n    // /////////////////////////////////////////////////////\n    // Additional constants defined WebGL 2\n    // These constants are defined on the WebGL2RenderingContext interface.\n    // All WebGL 1 constants are also available in a WebGL 2 context.\n    // /////////////////////////////////////////////////////\n    // Getting GL parameter information\n    // Constants passed to getParameter()\n    // to specify what information to return.\n    READ_BUFFER: 0x0c02,\n    UNPACK_ROW_LENGTH: 0x0cf2,\n    UNPACK_SKIP_ROWS: 0x0cf3,\n    UNPACK_SKIP_PIXELS: 0x0cf4,\n    PACK_ROW_LENGTH: 0x0d02,\n    PACK_SKIP_ROWS: 0x0d03,\n    PACK_SKIP_PIXELS: 0x0d04,\n    TEXTURE_BINDING_3D: 0x806a,\n    UNPACK_SKIP_IMAGES: 0x806d,\n    UNPACK_IMAGE_HEIGHT: 0x806e,\n    MAX_3D_TEXTURE_SIZE: 0x8073,\n    MAX_ELEMENTS_VERTICES: 0x80e8,\n    MAX_ELEMENTS_INDICES: 0x80e9,\n    MAX_TEXTURE_LOD_BIAS: 0x84fd,\n    MAX_FRAGMENT_UNIFORM_COMPONENTS: 0x8b49,\n    MAX_VERTEX_UNIFORM_COMPONENTS: 0x8b4a,\n    MAX_ARRAY_TEXTURE_LAYERS: 0x88ff,\n    MIN_PROGRAM_TEXEL_OFFSET: 0x8904,\n    MAX_PROGRAM_TEXEL_OFFSET: 0x8905,\n    MAX_VARYING_COMPONENTS: 0x8b4b,\n    FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8b8b,\n    RASTERIZER_DISCARD: 0x8c89,\n    VERTEX_ARRAY_BINDING: 0x85b5,\n    MAX_VERTEX_OUTPUT_COMPONENTS: 0x9122,\n    MAX_FRAGMENT_INPUT_COMPONENTS: 0x9125,\n    MAX_SERVER_WAIT_TIMEOUT: 0x9111,\n    MAX_ELEMENT_INDEX: 0x8d6b,\n    // Textures\n    // Constants passed to texParameteri(),\n    // texParameterf(), bindTexture(), texImage2D(), and others.\n    RED: 0x1903,\n    RGB8: 0x8051,\n    RGBA8: 0x8058,\n    RGB10_A2: 0x8059,\n    TEXTURE_3D: 0x806f,\n    TEXTURE_WRAP_R: 0x8072,\n    TEXTURE_MIN_LOD: 0x813a,\n    TEXTURE_MAX_LOD: 0x813b,\n    TEXTURE_BASE_LEVEL: 0x813c,\n    TEXTURE_MAX_LEVEL: 0x813d,\n    TEXTURE_COMPARE_MODE: 0x884c,\n    TEXTURE_COMPARE_FUNC: 0x884d,\n    SRGB: 0x8c40,\n    SRGB8: 0x8c41,\n    SRGB8_ALPHA8: 0x8c43,\n    COMPARE_REF_TO_TEXTURE: 0x884e,\n    RGBA32F: 0x8814,\n    RGB32F: 0x8815,\n    RGBA16F: 0x881a,\n    RGB16F: 0x881b,\n    TEXTURE_2D_ARRAY: 0x8c1a,\n    TEXTURE_BINDING_2D_ARRAY: 0x8c1d,\n    R11F_G11F_B10F: 0x8c3a,\n    RGB9_E5: 0x8c3d,\n    RGBA32UI: 0x8d70,\n    RGB32UI: 0x8d71,\n    RGBA16UI: 0x8d76,\n    RGB16UI: 0x8d77,\n    RGBA8UI: 0x8d7c,\n    RGB8UI: 0x8d7d,\n    RGBA32I: 0x8d82,\n    RGB32I: 0x8d83,\n    RGBA16I: 0x8d88,\n    RGB16I: 0x8d89,\n    RGBA8I: 0x8d8e,\n    RGB8I: 0x8d8f,\n    RED_INTEGER: 0x8d94,\n    RGB_INTEGER: 0x8d98,\n    RGBA_INTEGER: 0x8d99,\n    R8: 0x8229,\n    RG8: 0x822b,\n    R16F: 0x822d,\n    R32F: 0x822e,\n    RG16F: 0x822f,\n    RG32F: 0x8230,\n    R8I: 0x8231,\n    R8UI: 0x8232,\n    R16I: 0x8233,\n    R16UI: 0x8234,\n    R32I: 0x8235,\n    R32UI: 0x8236,\n    RG8I: 0x8237,\n    RG8UI: 0x8238,\n    RG16I: 0x8239,\n    RG16UI: 0x823a,\n    RG32I: 0x823b,\n    RG32UI: 0x823c,\n    R8_SNORM: 0x8f94,\n    RG8_SNORM: 0x8f95,\n    RGB8_SNORM: 0x8f96,\n    RGBA8_SNORM: 0x8f97,\n    RGB10_A2UI: 0x906f,\n    /* covered by extension\n    COMPRESSED_R11_EAC : 0x9270,\n    COMPRESSED_SIGNED_R11_EAC: 0x9271,\n    COMPRESSED_RG11_EAC: 0x9272,\n    COMPRESSED_SIGNED_RG11_EAC : 0x9273,\n    COMPRESSED_RGB8_ETC2 : 0x9274,\n    COMPRESSED_SRGB8_ETC2: 0x9275,\n    COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 : 0x9276,\n    COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC : 0x9277,\n    COMPRESSED_RGBA8_ETC2_EAC: 0x9278,\n    COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : 0x9279,\n    */\n    TEXTURE_IMMUTABLE_FORMAT: 0x912f,\n    TEXTURE_IMMUTABLE_LEVELS: 0x82df,\n    // Pixel types\n    UNSIGNED_INT_2_10_10_10_REV: 0x8368,\n    UNSIGNED_INT_10F_11F_11F_REV: 0x8c3b,\n    UNSIGNED_INT_5_9_9_9_REV: 0x8c3e,\n    FLOAT_32_UNSIGNED_INT_24_8_REV: 0x8dad,\n    UNSIGNED_INT_24_8: 0x84fa,\n    HALF_FLOAT: 0x140b,\n    RG: 0x8227,\n    RG_INTEGER: 0x8228,\n    INT_2_10_10_10_REV: 0x8d9f,\n    // Queries\n    CURRENT_QUERY: 0x8865,\n    QUERY_RESULT: 0x8866,\n    QUERY_RESULT_AVAILABLE: 0x8867,\n    ANY_SAMPLES_PASSED: 0x8c2f,\n    ANY_SAMPLES_PASSED_CONSERVATIVE: 0x8d6a,\n    // Draw buffers\n    MAX_DRAW_BUFFERS: 0x8824,\n    DRAW_BUFFER0: 0x8825,\n    DRAW_BUFFER1: 0x8826,\n    DRAW_BUFFER2: 0x8827,\n    DRAW_BUFFER3: 0x8828,\n    DRAW_BUFFER4: 0x8829,\n    DRAW_BUFFER5: 0x882a,\n    DRAW_BUFFER6: 0x882b,\n    DRAW_BUFFER7: 0x882c,\n    DRAW_BUFFER8: 0x882d,\n    DRAW_BUFFER9: 0x882e,\n    DRAW_BUFFER10: 0x882f,\n    DRAW_BUFFER11: 0x8830,\n    DRAW_BUFFER12: 0x8831,\n    DRAW_BUFFER13: 0x8832,\n    DRAW_BUFFER14: 0x8833,\n    DRAW_BUFFER15: 0x8834,\n    MAX_COLOR_ATTACHMENTS: 0x8cdf,\n    COLOR_ATTACHMENT1: 0x8ce1,\n    COLOR_ATTACHMENT2: 0x8ce2,\n    COLOR_ATTACHMENT3: 0x8ce3,\n    COLOR_ATTACHMENT4: 0x8ce4,\n    COLOR_ATTACHMENT5: 0x8ce5,\n    COLOR_ATTACHMENT6: 0x8ce6,\n    COLOR_ATTACHMENT7: 0x8ce7,\n    COLOR_ATTACHMENT8: 0x8ce8,\n    COLOR_ATTACHMENT9: 0x8ce9,\n    COLOR_ATTACHMENT10: 0x8cea,\n    COLOR_ATTACHMENT11: 0x8ceb,\n    COLOR_ATTACHMENT12: 0x8cec,\n    COLOR_ATTACHMENT13: 0x8ced,\n    COLOR_ATTACHMENT14: 0x8cee,\n    COLOR_ATTACHMENT15: 0x8cef,\n    // Samplers\n    SAMPLER_3D: 0x8b5f,\n    SAMPLER_2D_SHADOW: 0x8b62,\n    SAMPLER_2D_ARRAY: 0x8dc1,\n    SAMPLER_2D_ARRAY_SHADOW: 0x8dc4,\n    SAMPLER_CUBE_SHADOW: 0x8dc5,\n    INT_SAMPLER_2D: 0x8dca,\n    INT_SAMPLER_3D: 0x8dcb,\n    INT_SAMPLER_CUBE: 0x8dcc,\n    INT_SAMPLER_2D_ARRAY: 0x8dcf,\n    UNSIGNED_INT_SAMPLER_2D: 0x8dd2,\n    UNSIGNED_INT_SAMPLER_3D: 0x8dd3,\n    UNSIGNED_INT_SAMPLER_CUBE: 0x8dd4,\n    UNSIGNED_INT_SAMPLER_2D_ARRAY: 0x8dd7,\n    MAX_SAMPLES: 0x8d57,\n    SAMPLER_BINDING: 0x8919,\n    // Buffers\n    PIXEL_PACK_BUFFER: 0x88eb,\n    PIXEL_UNPACK_BUFFER: 0x88ec,\n    PIXEL_PACK_BUFFER_BINDING: 0x88ed,\n    PIXEL_UNPACK_BUFFER_BINDING: 0x88ef,\n    COPY_READ_BUFFER: 0x8f36,\n    COPY_WRITE_BUFFER: 0x8f37,\n    COPY_READ_BUFFER_BINDING: 0x8f36,\n    COPY_WRITE_BUFFER_BINDING: 0x8f37,\n    // Data types\n    FLOAT_MAT2x3: 0x8b65,\n    FLOAT_MAT2x4: 0x8b66,\n    FLOAT_MAT3x2: 0x8b67,\n    FLOAT_MAT3x4: 0x8b68,\n    FLOAT_MAT4x2: 0x8b69,\n    FLOAT_MAT4x3: 0x8b6a,\n    UNSIGNED_INT_VEC2: 0x8dc6,\n    UNSIGNED_INT_VEC3: 0x8dc7,\n    UNSIGNED_INT_VEC4: 0x8dc8,\n    UNSIGNED_NORMALIZED: 0x8c17,\n    SIGNED_NORMALIZED: 0x8f9c,\n    // Vertex attributes\n    VERTEX_ATTRIB_ARRAY_INTEGER: 0x88fd,\n    VERTEX_ATTRIB_ARRAY_DIVISOR: 0x88fe,\n    // Transform feedback\n    TRANSFORM_FEEDBACK_BUFFER_MODE: 0x8c7f,\n    MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 0x8c80,\n    TRANSFORM_FEEDBACK_VARYINGS: 0x8c83,\n    TRANSFORM_FEEDBACK_BUFFER_START: 0x8c84,\n    TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8c85,\n    TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 0x8c88,\n    MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 0x8c8a,\n    MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 0x8c8b,\n    INTERLEAVED_ATTRIBS: 0x8c8c,\n    SEPARATE_ATTRIBS: 0x8c8d,\n    TRANSFORM_FEEDBACK_BUFFER: 0x8c8e,\n    TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8c8f,\n    TRANSFORM_FEEDBACK: 0x8e22,\n    TRANSFORM_FEEDBACK_PAUSED: 0x8e23,\n    TRANSFORM_FEEDBACK_ACTIVE: 0x8e24,\n    TRANSFORM_FEEDBACK_BINDING: 0x8e25,\n    // Framebuffers and renderbuffers\n    FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 0x8210,\n    FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 0x8211,\n    FRAMEBUFFER_ATTACHMENT_RED_SIZE: 0x8212,\n    FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 0x8213,\n    FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 0x8214,\n    FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 0x8215,\n    FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 0x8216,\n    FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 0x8217,\n    FRAMEBUFFER_DEFAULT: 0x8218,\n    // DEPTH_STENCIL_ATTACHMENT : 0x821A,\n    // DEPTH_STENCIL: 0x84F9,\n    DEPTH24_STENCIL8: 0x88f0,\n    DRAW_FRAMEBUFFER_BINDING: 0x8ca6,\n    READ_FRAMEBUFFER_BINDING: 0x8caa,\n    RENDERBUFFER_SAMPLES: 0x8cab,\n    FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 0x8cd4,\n    FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 0x8d56,\n    // Uniforms\n    UNIFORM_BUFFER: 0x8a11,\n    UNIFORM_BUFFER_BINDING: 0x8a28,\n    UNIFORM_BUFFER_START: 0x8a29,\n    UNIFORM_BUFFER_SIZE: 0x8a2a,\n    MAX_VERTEX_UNIFORM_BLOCKS: 0x8a2b,\n    MAX_FRAGMENT_UNIFORM_BLOCKS: 0x8a2d,\n    MAX_COMBINED_UNIFORM_BLOCKS: 0x8a2e,\n    MAX_UNIFORM_BUFFER_BINDINGS: 0x8a2f,\n    MAX_UNIFORM_BLOCK_SIZE: 0x8a30,\n    MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 0x8a31,\n    MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 0x8a33,\n    UNIFORM_BUFFER_OFFSET_ALIGNMENT: 0x8a34,\n    ACTIVE_UNIFORM_BLOCKS: 0x8a36,\n    UNIFORM_TYPE: 0x8a37,\n    UNIFORM_SIZE: 0x8a38,\n    UNIFORM_BLOCK_INDEX: 0x8a3a,\n    UNIFORM_OFFSET: 0x8a3b,\n    UNIFORM_ARRAY_STRIDE: 0x8a3c,\n    UNIFORM_MATRIX_STRIDE: 0x8a3d,\n    UNIFORM_IS_ROW_MAJOR: 0x8a3e,\n    UNIFORM_BLOCK_BINDING: 0x8a3f,\n    UNIFORM_BLOCK_DATA_SIZE: 0x8a40,\n    UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8a42,\n    UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8a43,\n    UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8a44,\n    UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8a46,\n    // Sync objects\n    OBJECT_TYPE: 0x9112,\n    SYNC_CONDITION: 0x9113,\n    SYNC_STATUS: 0x9114,\n    SYNC_FLAGS: 0x9115,\n    SYNC_FENCE: 0x9116,\n    SYNC_GPU_COMMANDS_COMPLETE: 0x9117,\n    UNSIGNALED: 0x9118,\n    SIGNALED: 0x9119,\n    ALREADY_SIGNALED: 0x911a,\n    TIMEOUT_EXPIRED: 0x911b,\n    CONDITION_SATISFIED: 0x911c,\n    WAIT_FAILED: 0x911d,\n    SYNC_FLUSH_COMMANDS_BIT: 0x00000001,\n    // Miscellaneous constants\n    COLOR: 0x1800,\n    DEPTH: 0x1801,\n    STENCIL: 0x1802,\n    MIN: 0x8007,\n    MAX: 0x8008,\n    DEPTH_COMPONENT24: 0x81a6,\n    STREAM_READ: 0x88e1,\n    STREAM_COPY: 0x88e2,\n    STATIC_READ: 0x88e5,\n    STATIC_COPY: 0x88e6,\n    DYNAMIC_READ: 0x88e9,\n    DYNAMIC_COPY: 0x88ea,\n    DEPTH_COMPONENT32F: 0x8cac,\n    DEPTH32F_STENCIL8: 0x8cad,\n    INVALID_INDEX: 0xffffffff,\n    TIMEOUT_IGNORED: -1,\n    MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 0x9247,\n    // Constants defined in WebGL extensions\n    // ANGLE_instanced_arrays\n    VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: 0x88fe,\n    // WEBGL_debug_renderer_info\n    UNMASKED_VENDOR_WEBGL: 0x9245,\n    UNMASKED_RENDERER_WEBGL: 0x9246,\n    // EXT_texture_filter_anisotropic\n    MAX_TEXTURE_MAX_ANISOTROPY_EXT: 0x84ff,\n    TEXTURE_MAX_ANISOTROPY_EXT: 0x84fe,\n    // WEBGL_compressed_texture_s3tc\n    COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83f0,\n    COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83f1,\n    COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83f2,\n    COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83f3,\n    // WEBGL_compressed_texture_es3\n    COMPRESSED_R11_EAC: 0x9270,\n    COMPRESSED_SIGNED_R11_EAC: 0x9271,\n    COMPRESSED_RG11_EAC: 0x9272,\n    COMPRESSED_SIGNED_RG11_EAC: 0x9273,\n    COMPRESSED_RGB8_ETC2: 0x9274,\n    COMPRESSED_RGBA8_ETC2_EAC: 0x9275,\n    COMPRESSED_SRGB8_ETC2: 0x9276,\n    COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9277,\n    COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9278,\n    COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9279,\n    // WEBGL_compressed_texture_pvrtc\n    COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 0x8c00,\n    COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 0x8c02,\n    COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 0x8c01,\n    COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 0x8c03,\n    // WEBGL_compressed_texture_etc1\n    COMPRESSED_RGB_ETC1_WEBGL: 0x8d64,\n    // WEBGL_compressed_texture_atc\n    COMPRESSED_RGB_ATC_WEBGL: 0x8c92,\n    COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 0x8c92,\n    COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 0x87ee,\n    // WEBGL_depth_texture\n    UNSIGNED_INT_24_8_WEBGL: 0x84fa,\n    // OES_texture_half_float\n    HALF_FLOAT_OES: 0x8d61,\n    // WEBGL_color_buffer_float\n    RGBA32F_EXT: 0x8814,\n    RGB32F_EXT: 0x8815,\n    FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211,\n    UNSIGNED_NORMALIZED_EXT: 0x8c17,\n    // EXT_blend_minmax\n    MIN_EXT: 0x8007,\n    MAX_EXT: 0x8008,\n    // EXT_sRGB\n    SRGB_EXT: 0x8c40,\n    SRGB_ALPHA_EXT: 0x8c42,\n    SRGB8_ALPHA8_EXT: 0x8c43,\n    FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: 0x8210,\n    // OES_standard_derivatives\n    FRAGMENT_SHADER_DERIVATIVE_HINT_OES: 0x8b8b,\n    // WEBGL_draw_buffers\n    COLOR_ATTACHMENT0_WEBGL: 0x8ce0,\n    COLOR_ATTACHMENT1_WEBGL: 0x8ce1,\n    COLOR_ATTACHMENT2_WEBGL: 0x8ce2,\n    COLOR_ATTACHMENT3_WEBGL: 0x8ce3,\n    COLOR_ATTACHMENT4_WEBGL: 0x8ce4,\n    COLOR_ATTACHMENT5_WEBGL: 0x8ce5,\n    COLOR_ATTACHMENT6_WEBGL: 0x8ce6,\n    COLOR_ATTACHMENT7_WEBGL: 0x8ce7,\n    COLOR_ATTACHMENT8_WEBGL: 0x8ce8,\n    COLOR_ATTACHMENT9_WEBGL: 0x8ce9,\n    COLOR_ATTACHMENT10_WEBGL: 0x8cea,\n    COLOR_ATTACHMENT11_WEBGL: 0x8ceb,\n    COLOR_ATTACHMENT12_WEBGL: 0x8cec,\n    COLOR_ATTACHMENT13_WEBGL: 0x8ced,\n    COLOR_ATTACHMENT14_WEBGL: 0x8cee,\n    COLOR_ATTACHMENT15_WEBGL: 0x8cef,\n    DRAW_BUFFER0_WEBGL: 0x8825,\n    DRAW_BUFFER1_WEBGL: 0x8826,\n    DRAW_BUFFER2_WEBGL: 0x8827,\n    DRAW_BUFFER3_WEBGL: 0x8828,\n    DRAW_BUFFER4_WEBGL: 0x8829,\n    DRAW_BUFFER5_WEBGL: 0x882a,\n    DRAW_BUFFER6_WEBGL: 0x882b,\n    DRAW_BUFFER7_WEBGL: 0x882c,\n    DRAW_BUFFER8_WEBGL: 0x882d,\n    DRAW_BUFFER9_WEBGL: 0x882e,\n    DRAW_BUFFER10_WEBGL: 0x882f,\n    DRAW_BUFFER11_WEBGL: 0x8830,\n    DRAW_BUFFER12_WEBGL: 0x8831,\n    DRAW_BUFFER13_WEBGL: 0x8832,\n    DRAW_BUFFER14_WEBGL: 0x8833,\n    DRAW_BUFFER15_WEBGL: 0x8834,\n    MAX_COLOR_ATTACHMENTS_WEBGL: 0x8cdf,\n    MAX_DRAW_BUFFERS_WEBGL: 0x8824,\n    // OES_vertex_array_object\n    VERTEX_ARRAY_BINDING_OES: 0x85b5,\n    // EXT_disjoint_timer_query\n    QUERY_COUNTER_BITS_EXT: 0x8864,\n    CURRENT_QUERY_EXT: 0x8865,\n    QUERY_RESULT_EXT: 0x8866,\n    QUERY_RESULT_AVAILABLE_EXT: 0x8867,\n    TIME_ELAPSED_EXT: 0x88bf,\n    TIMESTAMP_EXT: 0x8e28,\n    GPU_DISJOINT_EXT: 0x8fbb // A Boolean indicating whether or not the GPU performed any disjoint operation.\n};\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[],"externals":[],"shims":[]},"code":{"source":"/* @luma.gl/constants/src/index.js */ function _(require, module, exports, __esModule, __esExport) {\n    // GL constants, copied from Mozilla documentation\n    // https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Constants\n    // Standard WebGL 1 constants\n    // These constants are defined on the WebGLRenderingContext interface.\n    /* eslint-disable key-spacing, max-len, no-inline-comments, camelcase */\n    // eslint-disable-next-line\n    module.exports = {\n        // Clearing buffers\n        // Constants passed to clear() to clear buffer masks.\n        DEPTH_BUFFER_BIT: 0x00000100,\n        STENCIL_BUFFER_BIT: 0x00000400,\n        COLOR_BUFFER_BIT: 0x00004000,\n        // Rendering primitives\n        // Constants passed to drawElements() or drawArrays() to specify what kind of primitive to render.\n        POINTS: 0x0000,\n        LINES: 0x0001,\n        LINE_LOOP: 0x0002,\n        LINE_STRIP: 0x0003,\n        TRIANGLES: 0x0004,\n        TRIANGLE_STRIP: 0x0005,\n        TRIANGLE_FAN: 0x0006,\n        // Blending modes\n        // Constants passed to blendFunc() or blendFuncSeparate() to specify the blending mode (for both, RBG and alpha, or separately).\n        ZERO: 0,\n        ONE: 1,\n        SRC_COLOR: 0x0300,\n        ONE_MINUS_SRC_COLOR: 0x0301,\n        SRC_ALPHA: 0x0302,\n        ONE_MINUS_SRC_ALPHA: 0x0303,\n        DST_ALPHA: 0x0304,\n        ONE_MINUS_DST_ALPHA: 0x0305,\n        DST_COLOR: 0x0306,\n        ONE_MINUS_DST_COLOR: 0x0307,\n        SRC_ALPHA_SATURATE: 0x0308,\n        CONSTANT_COLOR: 0x8001,\n        ONE_MINUS_CONSTANT_COLOR: 0x8002,\n        CONSTANT_ALPHA: 0x8003,\n        ONE_MINUS_CONSTANT_ALPHA: 0x8004,\n        // Blending equations\n        // Constants passed to blendEquation() or blendEquationSeparate() to control\n        // how the blending is calculated (for both, RBG and alpha, or separately).\n        FUNC_ADD: 0x8006,\n        FUNC_SUBTRACT: 0x800a,\n        FUNC_REVERSE_SUBTRACT: 0x800b,\n        // Getting GL parameter information\n        // Constants passed to getParameter() to specify what information to return.\n        BLEND_EQUATION: 0x8009,\n        BLEND_EQUATION_RGB: 0x8009,\n        BLEND_EQUATION_ALPHA: 0x883d,\n        BLEND_DST_RGB: 0x80c8,\n        BLEND_SRC_RGB: 0x80c9,\n        BLEND_DST_ALPHA: 0x80ca,\n        BLEND_SRC_ALPHA: 0x80cb,\n        BLEND_COLOR: 0x8005,\n        ARRAY_BUFFER_BINDING: 0x8894,\n        ELEMENT_ARRAY_BUFFER_BINDING: 0x8895,\n        LINE_WIDTH: 0x0b21,\n        ALIASED_POINT_SIZE_RANGE: 0x846d,\n        ALIASED_LINE_WIDTH_RANGE: 0x846e,\n        CULL_FACE_MODE: 0x0b45,\n        FRONT_FACE: 0x0b46,\n        DEPTH_RANGE: 0x0b70,\n        DEPTH_WRITEMASK: 0x0b72,\n        DEPTH_CLEAR_VALUE: 0x0b73,\n        DEPTH_FUNC: 0x0b74,\n        STENCIL_CLEAR_VALUE: 0x0b91,\n        STENCIL_FUNC: 0x0b92,\n        STENCIL_FAIL: 0x0b94,\n        STENCIL_PASS_DEPTH_FAIL: 0x0b95,\n        STENCIL_PASS_DEPTH_PASS: 0x0b96,\n        STENCIL_REF: 0x0b97,\n        STENCIL_VALUE_MASK: 0x0b93,\n        STENCIL_WRITEMASK: 0x0b98,\n        STENCIL_BACK_FUNC: 0x8800,\n        STENCIL_BACK_FAIL: 0x8801,\n        STENCIL_BACK_PASS_DEPTH_FAIL: 0x8802,\n        STENCIL_BACK_PASS_DEPTH_PASS: 0x8803,\n        STENCIL_BACK_REF: 0x8ca3,\n        STENCIL_BACK_VALUE_MASK: 0x8ca4,\n        STENCIL_BACK_WRITEMASK: 0x8ca5,\n        VIEWPORT: 0x0ba2,\n        SCISSOR_BOX: 0x0c10,\n        COLOR_CLEAR_VALUE: 0x0c22,\n        COLOR_WRITEMASK: 0x0c23,\n        UNPACK_ALIGNMENT: 0x0cf5,\n        PACK_ALIGNMENT: 0x0d05,\n        MAX_TEXTURE_SIZE: 0x0d33,\n        MAX_VIEWPORT_DIMS: 0x0d3a,\n        SUBPIXEL_BITS: 0x0d50,\n        RED_BITS: 0x0d52,\n        GREEN_BITS: 0x0d53,\n        BLUE_BITS: 0x0d54,\n        ALPHA_BITS: 0x0d55,\n        DEPTH_BITS: 0x0d56,\n        STENCIL_BITS: 0x0d57,\n        POLYGON_OFFSET_UNITS: 0x2a00,\n        POLYGON_OFFSET_FACTOR: 0x8038,\n        TEXTURE_BINDING_2D: 0x8069,\n        SAMPLE_BUFFERS: 0x80a8,\n        SAMPLES: 0x80a9,\n        SAMPLE_COVERAGE_VALUE: 0x80aa,\n        SAMPLE_COVERAGE_INVERT: 0x80ab,\n        COMPRESSED_TEXTURE_FORMATS: 0x86a3,\n        VENDOR: 0x1f00,\n        RENDERER: 0x1f01,\n        VERSION: 0x1f02,\n        IMPLEMENTATION_COLOR_READ_TYPE: 0x8b9a,\n        IMPLEMENTATION_COLOR_READ_FORMAT: 0x8b9b,\n        BROWSER_DEFAULT_WEBGL: 0x9244,\n        // Buffers\n        // Constants passed to bufferData(), bufferSubData(), bindBuffer(), or\n        // getBufferParameter().\n        STATIC_DRAW: 0x88e4,\n        STREAM_DRAW: 0x88e0,\n        DYNAMIC_DRAW: 0x88e8,\n        ARRAY_BUFFER: 0x8892,\n        ELEMENT_ARRAY_BUFFER: 0x8893,\n        BUFFER_SIZE: 0x8764,\n        BUFFER_USAGE: 0x8765,\n        // Vertex attributes\n        // Constants passed to getVertexAttrib().\n        CURRENT_VERTEX_ATTRIB: 0x8626,\n        VERTEX_ATTRIB_ARRAY_ENABLED: 0x8622,\n        VERTEX_ATTRIB_ARRAY_SIZE: 0x8623,\n        VERTEX_ATTRIB_ARRAY_STRIDE: 0x8624,\n        VERTEX_ATTRIB_ARRAY_TYPE: 0x8625,\n        VERTEX_ATTRIB_ARRAY_NORMALIZED: 0x886a,\n        VERTEX_ATTRIB_ARRAY_POINTER: 0x8645,\n        VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 0x889f,\n        // Culling\n        // Constants passed to cullFace().\n        CULL_FACE: 0x0b44,\n        FRONT: 0x0404,\n        BACK: 0x0405,\n        FRONT_AND_BACK: 0x0408,\n        // Enabling and disabling\n        // Constants passed to enable() or disable().\n        BLEND: 0x0be2,\n        DEPTH_TEST: 0x0b71,\n        DITHER: 0x0bd0,\n        POLYGON_OFFSET_FILL: 0x8037,\n        SAMPLE_ALPHA_TO_COVERAGE: 0x809e,\n        SAMPLE_COVERAGE: 0x80a0,\n        SCISSOR_TEST: 0x0c11,\n        STENCIL_TEST: 0x0b90,\n        // Errors\n        // Constants returned from getError().\n        NO_ERROR: 0,\n        INVALID_ENUM: 0x0500,\n        INVALID_VALUE: 0x0501,\n        INVALID_OPERATION: 0x0502,\n        OUT_OF_MEMORY: 0x0505,\n        CONTEXT_LOST_WEBGL: 0x9242,\n        // Front face directions\n        // Constants passed to frontFace().\n        CW: 0x0900,\n        CCW: 0x0901,\n        // Hints\n        // Constants passed to hint()\n        DONT_CARE: 0x1100,\n        FASTEST: 0x1101,\n        NICEST: 0x1102,\n        GENERATE_MIPMAP_HINT: 0x8192,\n        // Data types\n        BYTE: 0x1400,\n        UNSIGNED_BYTE: 0x1401,\n        SHORT: 0x1402,\n        UNSIGNED_SHORT: 0x1403,\n        INT: 0x1404,\n        UNSIGNED_INT: 0x1405,\n        FLOAT: 0x1406,\n        DOUBLE: 0x140a,\n        // Pixel formats\n        DEPTH_COMPONENT: 0x1902,\n        ALPHA: 0x1906,\n        RGB: 0x1907,\n        RGBA: 0x1908,\n        LUMINANCE: 0x1909,\n        LUMINANCE_ALPHA: 0x190a,\n        // Pixel types\n        // UNSIGNED_BYTE: 0x1401,\n        UNSIGNED_SHORT_4_4_4_4: 0x8033,\n        UNSIGNED_SHORT_5_5_5_1: 0x8034,\n        UNSIGNED_SHORT_5_6_5: 0x8363,\n        // Shaders\n        // Constants passed to createShader() or getShaderParameter()\n        FRAGMENT_SHADER: 0x8b30,\n        VERTEX_SHADER: 0x8b31,\n        COMPILE_STATUS: 0x8b81,\n        DELETE_STATUS: 0x8b80,\n        LINK_STATUS: 0x8b82,\n        VALIDATE_STATUS: 0x8b83,\n        ATTACHED_SHADERS: 0x8b85,\n        ACTIVE_ATTRIBUTES: 0x8b89,\n        ACTIVE_UNIFORMS: 0x8b86,\n        MAX_VERTEX_ATTRIBS: 0x8869,\n        MAX_VERTEX_UNIFORM_VECTORS: 0x8dfb,\n        MAX_VARYING_VECTORS: 0x8dfc,\n        MAX_COMBINED_TEXTURE_IMAGE_UNITS: 0x8b4d,\n        MAX_VERTEX_TEXTURE_IMAGE_UNITS: 0x8b4c,\n        MAX_TEXTURE_IMAGE_UNITS: 0x8872,\n        MAX_FRAGMENT_UNIFORM_VECTORS: 0x8dfd,\n        SHADER_TYPE: 0x8b4f,\n        SHADING_LANGUAGE_VERSION: 0x8b8c,\n        CURRENT_PROGRAM: 0x8b8d,\n        // Depth or stencil tests\n        // Constants passed to depthFunc() or stencilFunc().\n        NEVER: 0x0200,\n        ALWAYS: 0x0207,\n        LESS: 0x0201,\n        EQUAL: 0x0202,\n        LEQUAL: 0x0203,\n        GREATER: 0x0204,\n        GEQUAL: 0x0206,\n        NOTEQUAL: 0x0205,\n        // Stencil actions\n        // Constants passed to stencilOp().\n        KEEP: 0x1e00,\n        REPLACE: 0x1e01,\n        INCR: 0x1e02,\n        DECR: 0x1e03,\n        INVERT: 0x150a,\n        INCR_WRAP: 0x8507,\n        DECR_WRAP: 0x8508,\n        // Textures\n        // Constants passed to texParameteri(),\n        // texParameterf(), bindTexture(), texImage2D(), and others.\n        NEAREST: 0x2600,\n        LINEAR: 0x2601,\n        NEAREST_MIPMAP_NEAREST: 0x2700,\n        LINEAR_MIPMAP_NEAREST: 0x2701,\n        NEAREST_MIPMAP_LINEAR: 0x2702,\n        LINEAR_MIPMAP_LINEAR: 0x2703,\n        TEXTURE_MAG_FILTER: 0x2800,\n        TEXTURE_MIN_FILTER: 0x2801,\n        TEXTURE_WRAP_S: 0x2802,\n        TEXTURE_WRAP_T: 0x2803,\n        TEXTURE_2D: 0x0de1,\n        TEXTURE: 0x1702,\n        TEXTURE_CUBE_MAP: 0x8513,\n        TEXTURE_BINDING_CUBE_MAP: 0x8514,\n        TEXTURE_CUBE_MAP_POSITIVE_X: 0x8515,\n        TEXTURE_CUBE_MAP_NEGATIVE_X: 0x8516,\n        TEXTURE_CUBE_MAP_POSITIVE_Y: 0x8517,\n        TEXTURE_CUBE_MAP_NEGATIVE_Y: 0x8518,\n        TEXTURE_CUBE_MAP_POSITIVE_Z: 0x8519,\n        TEXTURE_CUBE_MAP_NEGATIVE_Z: 0x851a,\n        MAX_CUBE_MAP_TEXTURE_SIZE: 0x851c,\n        // TEXTURE0 - 31 0x84C0 - 0x84DF A texture unit.\n        TEXTURE0: 0x84c0,\n        ACTIVE_TEXTURE: 0x84e0,\n        REPEAT: 0x2901,\n        CLAMP_TO_EDGE: 0x812f,\n        MIRRORED_REPEAT: 0x8370,\n        // Emulation\n        TEXTURE_WIDTH: 0x1000,\n        TEXTURE_HEIGHT: 0x1001,\n        // Uniform types\n        FLOAT_VEC2: 0x8b50,\n        FLOAT_VEC3: 0x8b51,\n        FLOAT_VEC4: 0x8b52,\n        INT_VEC2: 0x8b53,\n        INT_VEC3: 0x8b54,\n        INT_VEC4: 0x8b55,\n        BOOL: 0x8b56,\n        BOOL_VEC2: 0x8b57,\n        BOOL_VEC3: 0x8b58,\n        BOOL_VEC4: 0x8b59,\n        FLOAT_MAT2: 0x8b5a,\n        FLOAT_MAT3: 0x8b5b,\n        FLOAT_MAT4: 0x8b5c,\n        SAMPLER_2D: 0x8b5e,\n        SAMPLER_CUBE: 0x8b60,\n        // Shader precision-specified types\n        LOW_FLOAT: 0x8df0,\n        MEDIUM_FLOAT: 0x8df1,\n        HIGH_FLOAT: 0x8df2,\n        LOW_INT: 0x8df3,\n        MEDIUM_INT: 0x8df4,\n        HIGH_INT: 0x8df5,\n        // Framebuffers and renderbuffers\n        FRAMEBUFFER: 0x8d40,\n        RENDERBUFFER: 0x8d41,\n        RGBA4: 0x8056,\n        RGB5_A1: 0x8057,\n        RGB565: 0x8d62,\n        DEPTH_COMPONENT16: 0x81a5,\n        STENCIL_INDEX: 0x1901,\n        STENCIL_INDEX8: 0x8d48,\n        DEPTH_STENCIL: 0x84f9,\n        RENDERBUFFER_WIDTH: 0x8d42,\n        RENDERBUFFER_HEIGHT: 0x8d43,\n        RENDERBUFFER_INTERNAL_FORMAT: 0x8d44,\n        RENDERBUFFER_RED_SIZE: 0x8d50,\n        RENDERBUFFER_GREEN_SIZE: 0x8d51,\n        RENDERBUFFER_BLUE_SIZE: 0x8d52,\n        RENDERBUFFER_ALPHA_SIZE: 0x8d53,\n        RENDERBUFFER_DEPTH_SIZE: 0x8d54,\n        RENDERBUFFER_STENCIL_SIZE: 0x8d55,\n        FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 0x8cd0,\n        FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 0x8cd1,\n        FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 0x8cd2,\n        FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 0x8cd3,\n        COLOR_ATTACHMENT0: 0x8ce0,\n        DEPTH_ATTACHMENT: 0x8d00,\n        STENCIL_ATTACHMENT: 0x8d20,\n        DEPTH_STENCIL_ATTACHMENT: 0x821a,\n        NONE: 0,\n        FRAMEBUFFER_COMPLETE: 0x8cd5,\n        FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 0x8cd6,\n        FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 0x8cd7,\n        FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 0x8cd9,\n        FRAMEBUFFER_UNSUPPORTED: 0x8cdd,\n        FRAMEBUFFER_BINDING: 0x8ca6,\n        RENDERBUFFER_BINDING: 0x8ca7,\n        READ_FRAMEBUFFER: 0x8ca8,\n        DRAW_FRAMEBUFFER: 0x8ca9,\n        MAX_RENDERBUFFER_SIZE: 0x84e8,\n        INVALID_FRAMEBUFFER_OPERATION: 0x0506,\n        // Pixel storage modes\n        // Constants passed to pixelStorei().\n        UNPACK_FLIP_Y_WEBGL: 0x9240,\n        UNPACK_PREMULTIPLY_ALPHA_WEBGL: 0x9241,\n        UNPACK_COLORSPACE_CONVERSION_WEBGL: 0x9243,\n        // /////////////////////////////////////////////////////\n        // Additional constants defined WebGL 2\n        // These constants are defined on the WebGL2RenderingContext interface.\n        // All WebGL 1 constants are also available in a WebGL 2 context.\n        // /////////////////////////////////////////////////////\n        // Getting GL parameter information\n        // Constants passed to getParameter()\n        // to specify what information to return.\n        READ_BUFFER: 0x0c02,\n        UNPACK_ROW_LENGTH: 0x0cf2,\n        UNPACK_SKIP_ROWS: 0x0cf3,\n        UNPACK_SKIP_PIXELS: 0x0cf4,\n        PACK_ROW_LENGTH: 0x0d02,\n        PACK_SKIP_ROWS: 0x0d03,\n        PACK_SKIP_PIXELS: 0x0d04,\n        TEXTURE_BINDING_3D: 0x806a,\n        UNPACK_SKIP_IMAGES: 0x806d,\n        UNPACK_IMAGE_HEIGHT: 0x806e,\n        MAX_3D_TEXTURE_SIZE: 0x8073,\n        MAX_ELEMENTS_VERTICES: 0x80e8,\n        MAX_ELEMENTS_INDICES: 0x80e9,\n        MAX_TEXTURE_LOD_BIAS: 0x84fd,\n        MAX_FRAGMENT_UNIFORM_COMPONENTS: 0x8b49,\n        MAX_VERTEX_UNIFORM_COMPONENTS: 0x8b4a,\n        MAX_ARRAY_TEXTURE_LAYERS: 0x88ff,\n        MIN_PROGRAM_TEXEL_OFFSET: 0x8904,\n        MAX_PROGRAM_TEXEL_OFFSET: 0x8905,\n        MAX_VARYING_COMPONENTS: 0x8b4b,\n        FRAGMENT_SHADER_DERIVATIVE_HINT: 0x8b8b,\n        RASTERIZER_DISCARD: 0x8c89,\n        VERTEX_ARRAY_BINDING: 0x85b5,\n        MAX_VERTEX_OUTPUT_COMPONENTS: 0x9122,\n        MAX_FRAGMENT_INPUT_COMPONENTS: 0x9125,\n        MAX_SERVER_WAIT_TIMEOUT: 0x9111,\n        MAX_ELEMENT_INDEX: 0x8d6b,\n        // Textures\n        // Constants passed to texParameteri(),\n        // texParameterf(), bindTexture(), texImage2D(), and others.\n        RED: 0x1903,\n        RGB8: 0x8051,\n        RGBA8: 0x8058,\n        RGB10_A2: 0x8059,\n        TEXTURE_3D: 0x806f,\n        TEXTURE_WRAP_R: 0x8072,\n        TEXTURE_MIN_LOD: 0x813a,\n        TEXTURE_MAX_LOD: 0x813b,\n        TEXTURE_BASE_LEVEL: 0x813c,\n        TEXTURE_MAX_LEVEL: 0x813d,\n        TEXTURE_COMPARE_MODE: 0x884c,\n        TEXTURE_COMPARE_FUNC: 0x884d,\n        SRGB: 0x8c40,\n        SRGB8: 0x8c41,\n        SRGB8_ALPHA8: 0x8c43,\n        COMPARE_REF_TO_TEXTURE: 0x884e,\n        RGBA32F: 0x8814,\n        RGB32F: 0x8815,\n        RGBA16F: 0x881a,\n        RGB16F: 0x881b,\n        TEXTURE_2D_ARRAY: 0x8c1a,\n        TEXTURE_BINDING_2D_ARRAY: 0x8c1d,\n        R11F_G11F_B10F: 0x8c3a,\n        RGB9_E5: 0x8c3d,\n        RGBA32UI: 0x8d70,\n        RGB32UI: 0x8d71,\n        RGBA16UI: 0x8d76,\n        RGB16UI: 0x8d77,\n        RGBA8UI: 0x8d7c,\n        RGB8UI: 0x8d7d,\n        RGBA32I: 0x8d82,\n        RGB32I: 0x8d83,\n        RGBA16I: 0x8d88,\n        RGB16I: 0x8d89,\n        RGBA8I: 0x8d8e,\n        RGB8I: 0x8d8f,\n        RED_INTEGER: 0x8d94,\n        RGB_INTEGER: 0x8d98,\n        RGBA_INTEGER: 0x8d99,\n        R8: 0x8229,\n        RG8: 0x822b,\n        R16F: 0x822d,\n        R32F: 0x822e,\n        RG16F: 0x822f,\n        RG32F: 0x8230,\n        R8I: 0x8231,\n        R8UI: 0x8232,\n        R16I: 0x8233,\n        R16UI: 0x8234,\n        R32I: 0x8235,\n        R32UI: 0x8236,\n        RG8I: 0x8237,\n        RG8UI: 0x8238,\n        RG16I: 0x8239,\n        RG16UI: 0x823a,\n        RG32I: 0x823b,\n        RG32UI: 0x823c,\n        R8_SNORM: 0x8f94,\n        RG8_SNORM: 0x8f95,\n        RGB8_SNORM: 0x8f96,\n        RGBA8_SNORM: 0x8f97,\n        RGB10_A2UI: 0x906f,\n        /* covered by extension\n        COMPRESSED_R11_EAC : 0x9270,\n        COMPRESSED_SIGNED_R11_EAC: 0x9271,\n        COMPRESSED_RG11_EAC: 0x9272,\n        COMPRESSED_SIGNED_RG11_EAC : 0x9273,\n        COMPRESSED_RGB8_ETC2 : 0x9274,\n        COMPRESSED_SRGB8_ETC2: 0x9275,\n        COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 : 0x9276,\n        COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC : 0x9277,\n        COMPRESSED_RGBA8_ETC2_EAC: 0x9278,\n        COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : 0x9279,\n        */\n        TEXTURE_IMMUTABLE_FORMAT: 0x912f,\n        TEXTURE_IMMUTABLE_LEVELS: 0x82df,\n        // Pixel types\n        UNSIGNED_INT_2_10_10_10_REV: 0x8368,\n        UNSIGNED_INT_10F_11F_11F_REV: 0x8c3b,\n        UNSIGNED_INT_5_9_9_9_REV: 0x8c3e,\n        FLOAT_32_UNSIGNED_INT_24_8_REV: 0x8dad,\n        UNSIGNED_INT_24_8: 0x84fa,\n        HALF_FLOAT: 0x140b,\n        RG: 0x8227,\n        RG_INTEGER: 0x8228,\n        INT_2_10_10_10_REV: 0x8d9f,\n        // Queries\n        CURRENT_QUERY: 0x8865,\n        QUERY_RESULT: 0x8866,\n        QUERY_RESULT_AVAILABLE: 0x8867,\n        ANY_SAMPLES_PASSED: 0x8c2f,\n        ANY_SAMPLES_PASSED_CONSERVATIVE: 0x8d6a,\n        // Draw buffers\n        MAX_DRAW_BUFFERS: 0x8824,\n        DRAW_BUFFER0: 0x8825,\n        DRAW_BUFFER1: 0x8826,\n        DRAW_BUFFER2: 0x8827,\n        DRAW_BUFFER3: 0x8828,\n        DRAW_BUFFER4: 0x8829,\n        DRAW_BUFFER5: 0x882a,\n        DRAW_BUFFER6: 0x882b,\n        DRAW_BUFFER7: 0x882c,\n        DRAW_BUFFER8: 0x882d,\n        DRAW_BUFFER9: 0x882e,\n        DRAW_BUFFER10: 0x882f,\n        DRAW_BUFFER11: 0x8830,\n        DRAW_BUFFER12: 0x8831,\n        DRAW_BUFFER13: 0x8832,\n        DRAW_BUFFER14: 0x8833,\n        DRAW_BUFFER15: 0x8834,\n        MAX_COLOR_ATTACHMENTS: 0x8cdf,\n        COLOR_ATTACHMENT1: 0x8ce1,\n        COLOR_ATTACHMENT2: 0x8ce2,\n        COLOR_ATTACHMENT3: 0x8ce3,\n        COLOR_ATTACHMENT4: 0x8ce4,\n        COLOR_ATTACHMENT5: 0x8ce5,\n        COLOR_ATTACHMENT6: 0x8ce6,\n        COLOR_ATTACHMENT7: 0x8ce7,\n        COLOR_ATTACHMENT8: 0x8ce8,\n        COLOR_ATTACHMENT9: 0x8ce9,\n        COLOR_ATTACHMENT10: 0x8cea,\n        COLOR_ATTACHMENT11: 0x8ceb,\n        COLOR_ATTACHMENT12: 0x8cec,\n        COLOR_ATTACHMENT13: 0x8ced,\n        COLOR_ATTACHMENT14: 0x8cee,\n        COLOR_ATTACHMENT15: 0x8cef,\n        // Samplers\n        SAMPLER_3D: 0x8b5f,\n        SAMPLER_2D_SHADOW: 0x8b62,\n        SAMPLER_2D_ARRAY: 0x8dc1,\n        SAMPLER_2D_ARRAY_SHADOW: 0x8dc4,\n        SAMPLER_CUBE_SHADOW: 0x8dc5,\n        INT_SAMPLER_2D: 0x8dca,\n        INT_SAMPLER_3D: 0x8dcb,\n        INT_SAMPLER_CUBE: 0x8dcc,\n        INT_SAMPLER_2D_ARRAY: 0x8dcf,\n        UNSIGNED_INT_SAMPLER_2D: 0x8dd2,\n        UNSIGNED_INT_SAMPLER_3D: 0x8dd3,\n        UNSIGNED_INT_SAMPLER_CUBE: 0x8dd4,\n        UNSIGNED_INT_SAMPLER_2D_ARRAY: 0x8dd7,\n        MAX_SAMPLES: 0x8d57,\n        SAMPLER_BINDING: 0x8919,\n        // Buffers\n        PIXEL_PACK_BUFFER: 0x88eb,\n        PIXEL_UNPACK_BUFFER: 0x88ec,\n        PIXEL_PACK_BUFFER_BINDING: 0x88ed,\n        PIXEL_UNPACK_BUFFER_BINDING: 0x88ef,\n        COPY_READ_BUFFER: 0x8f36,\n        COPY_WRITE_BUFFER: 0x8f37,\n        COPY_READ_BUFFER_BINDING: 0x8f36,\n        COPY_WRITE_BUFFER_BINDING: 0x8f37,\n        // Data types\n        FLOAT_MAT2x3: 0x8b65,\n        FLOAT_MAT2x4: 0x8b66,\n        FLOAT_MAT3x2: 0x8b67,\n        FLOAT_MAT3x4: 0x8b68,\n        FLOAT_MAT4x2: 0x8b69,\n        FLOAT_MAT4x3: 0x8b6a,\n        UNSIGNED_INT_VEC2: 0x8dc6,\n        UNSIGNED_INT_VEC3: 0x8dc7,\n        UNSIGNED_INT_VEC4: 0x8dc8,\n        UNSIGNED_NORMALIZED: 0x8c17,\n        SIGNED_NORMALIZED: 0x8f9c,\n        // Vertex attributes\n        VERTEX_ATTRIB_ARRAY_INTEGER: 0x88fd,\n        VERTEX_ATTRIB_ARRAY_DIVISOR: 0x88fe,\n        // Transform feedback\n        TRANSFORM_FEEDBACK_BUFFER_MODE: 0x8c7f,\n        MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: 0x8c80,\n        TRANSFORM_FEEDBACK_VARYINGS: 0x8c83,\n        TRANSFORM_FEEDBACK_BUFFER_START: 0x8c84,\n        TRANSFORM_FEEDBACK_BUFFER_SIZE: 0x8c85,\n        TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: 0x8c88,\n        MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: 0x8c8a,\n        MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: 0x8c8b,\n        INTERLEAVED_ATTRIBS: 0x8c8c,\n        SEPARATE_ATTRIBS: 0x8c8d,\n        TRANSFORM_FEEDBACK_BUFFER: 0x8c8e,\n        TRANSFORM_FEEDBACK_BUFFER_BINDING: 0x8c8f,\n        TRANSFORM_FEEDBACK: 0x8e22,\n        TRANSFORM_FEEDBACK_PAUSED: 0x8e23,\n        TRANSFORM_FEEDBACK_ACTIVE: 0x8e24,\n        TRANSFORM_FEEDBACK_BINDING: 0x8e25,\n        // Framebuffers and renderbuffers\n        FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: 0x8210,\n        FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: 0x8211,\n        FRAMEBUFFER_ATTACHMENT_RED_SIZE: 0x8212,\n        FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: 0x8213,\n        FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: 0x8214,\n        FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: 0x8215,\n        FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: 0x8216,\n        FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: 0x8217,\n        FRAMEBUFFER_DEFAULT: 0x8218,\n        // DEPTH_STENCIL_ATTACHMENT : 0x821A,\n        // DEPTH_STENCIL: 0x84F9,\n        DEPTH24_STENCIL8: 0x88f0,\n        DRAW_FRAMEBUFFER_BINDING: 0x8ca6,\n        READ_FRAMEBUFFER_BINDING: 0x8caa,\n        RENDERBUFFER_SAMPLES: 0x8cab,\n        FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: 0x8cd4,\n        FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: 0x8d56,\n        // Uniforms\n        UNIFORM_BUFFER: 0x8a11,\n        UNIFORM_BUFFER_BINDING: 0x8a28,\n        UNIFORM_BUFFER_START: 0x8a29,\n        UNIFORM_BUFFER_SIZE: 0x8a2a,\n        MAX_VERTEX_UNIFORM_BLOCKS: 0x8a2b,\n        MAX_FRAGMENT_UNIFORM_BLOCKS: 0x8a2d,\n        MAX_COMBINED_UNIFORM_BLOCKS: 0x8a2e,\n        MAX_UNIFORM_BUFFER_BINDINGS: 0x8a2f,\n        MAX_UNIFORM_BLOCK_SIZE: 0x8a30,\n        MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: 0x8a31,\n        MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: 0x8a33,\n        UNIFORM_BUFFER_OFFSET_ALIGNMENT: 0x8a34,\n        ACTIVE_UNIFORM_BLOCKS: 0x8a36,\n        UNIFORM_TYPE: 0x8a37,\n        UNIFORM_SIZE: 0x8a38,\n        UNIFORM_BLOCK_INDEX: 0x8a3a,\n        UNIFORM_OFFSET: 0x8a3b,\n        UNIFORM_ARRAY_STRIDE: 0x8a3c,\n        UNIFORM_MATRIX_STRIDE: 0x8a3d,\n        UNIFORM_IS_ROW_MAJOR: 0x8a3e,\n        UNIFORM_BLOCK_BINDING: 0x8a3f,\n        UNIFORM_BLOCK_DATA_SIZE: 0x8a40,\n        UNIFORM_BLOCK_ACTIVE_UNIFORMS: 0x8a42,\n        UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: 0x8a43,\n        UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: 0x8a44,\n        UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: 0x8a46,\n        // Sync objects\n        OBJECT_TYPE: 0x9112,\n        SYNC_CONDITION: 0x9113,\n        SYNC_STATUS: 0x9114,\n        SYNC_FLAGS: 0x9115,\n        SYNC_FENCE: 0x9116,\n        SYNC_GPU_COMMANDS_COMPLETE: 0x9117,\n        UNSIGNALED: 0x9118,\n        SIGNALED: 0x9119,\n        ALREADY_SIGNALED: 0x911a,\n        TIMEOUT_EXPIRED: 0x911b,\n        CONDITION_SATISFIED: 0x911c,\n        WAIT_FAILED: 0x911d,\n        SYNC_FLUSH_COMMANDS_BIT: 0x00000001,\n        // Miscellaneous constants\n        COLOR: 0x1800,\n        DEPTH: 0x1801,\n        STENCIL: 0x1802,\n        MIN: 0x8007,\n        MAX: 0x8008,\n        DEPTH_COMPONENT24: 0x81a6,\n        STREAM_READ: 0x88e1,\n        STREAM_COPY: 0x88e2,\n        STATIC_READ: 0x88e5,\n        STATIC_COPY: 0x88e6,\n        DYNAMIC_READ: 0x88e9,\n        DYNAMIC_COPY: 0x88ea,\n        DEPTH_COMPONENT32F: 0x8cac,\n        DEPTH32F_STENCIL8: 0x8cad,\n        INVALID_INDEX: 0xffffffff,\n        TIMEOUT_IGNORED: -1,\n        MAX_CLIENT_WAIT_TIMEOUT_WEBGL: 0x9247,\n        // Constants defined in WebGL extensions\n        // ANGLE_instanced_arrays\n        VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: 0x88fe,\n        // WEBGL_debug_renderer_info\n        UNMASKED_VENDOR_WEBGL: 0x9245,\n        UNMASKED_RENDERER_WEBGL: 0x9246,\n        // EXT_texture_filter_anisotropic\n        MAX_TEXTURE_MAX_ANISOTROPY_EXT: 0x84ff,\n        TEXTURE_MAX_ANISOTROPY_EXT: 0x84fe,\n        // WEBGL_compressed_texture_s3tc\n        COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83f0,\n        COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83f1,\n        COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83f2,\n        COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83f3,\n        // WEBGL_compressed_texture_es3\n        COMPRESSED_R11_EAC: 0x9270,\n        COMPRESSED_SIGNED_R11_EAC: 0x9271,\n        COMPRESSED_RG11_EAC: 0x9272,\n        COMPRESSED_SIGNED_RG11_EAC: 0x9273,\n        COMPRESSED_RGB8_ETC2: 0x9274,\n        COMPRESSED_RGBA8_ETC2_EAC: 0x9275,\n        COMPRESSED_SRGB8_ETC2: 0x9276,\n        COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: 0x9277,\n        COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9278,\n        COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: 0x9279,\n        // WEBGL_compressed_texture_pvrtc\n        COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 0x8c00,\n        COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 0x8c02,\n        COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 0x8c01,\n        COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 0x8c03,\n        // WEBGL_compressed_texture_etc1\n        COMPRESSED_RGB_ETC1_WEBGL: 0x8d64,\n        // WEBGL_compressed_texture_atc\n        COMPRESSED_RGB_ATC_WEBGL: 0x8c92,\n        COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL: 0x8c92,\n        COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL: 0x87ee,\n        // WEBGL_depth_texture\n        UNSIGNED_INT_24_8_WEBGL: 0x84fa,\n        // OES_texture_half_float\n        HALF_FLOAT_OES: 0x8d61,\n        // WEBGL_color_buffer_float\n        RGBA32F_EXT: 0x8814,\n        RGB32F_EXT: 0x8815,\n        FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211,\n        UNSIGNED_NORMALIZED_EXT: 0x8c17,\n        // EXT_blend_minmax\n        MIN_EXT: 0x8007,\n        MAX_EXT: 0x8008,\n        // EXT_sRGB\n        SRGB_EXT: 0x8c40,\n        SRGB_ALPHA_EXT: 0x8c42,\n        SRGB8_ALPHA8_EXT: 0x8c43,\n        FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: 0x8210,\n        // OES_standard_derivatives\n        FRAGMENT_SHADER_DERIVATIVE_HINT_OES: 0x8b8b,\n        // WEBGL_draw_buffers\n        COLOR_ATTACHMENT0_WEBGL: 0x8ce0,\n        COLOR_ATTACHMENT1_WEBGL: 0x8ce1,\n        COLOR_ATTACHMENT2_WEBGL: 0x8ce2,\n        COLOR_ATTACHMENT3_WEBGL: 0x8ce3,\n        COLOR_ATTACHMENT4_WEBGL: 0x8ce4,\n        COLOR_ATTACHMENT5_WEBGL: 0x8ce5,\n        COLOR_ATTACHMENT6_WEBGL: 0x8ce6,\n        COLOR_ATTACHMENT7_WEBGL: 0x8ce7,\n        COLOR_ATTACHMENT8_WEBGL: 0x8ce8,\n        COLOR_ATTACHMENT9_WEBGL: 0x8ce9,\n        COLOR_ATTACHMENT10_WEBGL: 0x8cea,\n        COLOR_ATTACHMENT11_WEBGL: 0x8ceb,\n        COLOR_ATTACHMENT12_WEBGL: 0x8cec,\n        COLOR_ATTACHMENT13_WEBGL: 0x8ced,\n        COLOR_ATTACHMENT14_WEBGL: 0x8cee,\n        COLOR_ATTACHMENT15_WEBGL: 0x8cef,\n        DRAW_BUFFER0_WEBGL: 0x8825,\n        DRAW_BUFFER1_WEBGL: 0x8826,\n        DRAW_BUFFER2_WEBGL: 0x8827,\n        DRAW_BUFFER3_WEBGL: 0x8828,\n        DRAW_BUFFER4_WEBGL: 0x8829,\n        DRAW_BUFFER5_WEBGL: 0x882a,\n        DRAW_BUFFER6_WEBGL: 0x882b,\n        DRAW_BUFFER7_WEBGL: 0x882c,\n        DRAW_BUFFER8_WEBGL: 0x882d,\n        DRAW_BUFFER9_WEBGL: 0x882e,\n        DRAW_BUFFER10_WEBGL: 0x882f,\n        DRAW_BUFFER11_WEBGL: 0x8830,\n        DRAW_BUFFER12_WEBGL: 0x8831,\n        DRAW_BUFFER13_WEBGL: 0x8832,\n        DRAW_BUFFER14_WEBGL: 0x8833,\n        DRAW_BUFFER15_WEBGL: 0x8834,\n        MAX_COLOR_ATTACHMENTS_WEBGL: 0x8cdf,\n        MAX_DRAW_BUFFERS_WEBGL: 0x8824,\n        // OES_vertex_array_object\n        VERTEX_ARRAY_BINDING_OES: 0x85b5,\n        // EXT_disjoint_timer_query\n        QUERY_COUNTER_BITS_EXT: 0x8864,\n        CURRENT_QUERY_EXT: 0x8865,\n        QUERY_RESULT_EXT: 0x8866,\n        QUERY_RESULT_AVAILABLE_EXT: 0x8867,\n        TIME_ELAPSED_EXT: 0x88bf,\n        TIMESTAMP_EXT: 0x8e28,\n        GPU_DISJOINT_EXT: 0x8fbb // A Boolean indicating whether or not the GPU performed any disjoint operation.\n    };\n}\n","min_source":"function _(E,_,R,T,A){_.exports={DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,ZERO:0,ONE:1,SRC_COLOR:768,ONE_MINUS_SRC_COLOR:769,SRC_ALPHA:770,ONE_MINUS_SRC_ALPHA:771,DST_ALPHA:772,ONE_MINUS_DST_ALPHA:773,DST_COLOR:774,ONE_MINUS_DST_COLOR:775,SRC_ALPHA_SATURATE:776,CONSTANT_COLOR:32769,ONE_MINUS_CONSTANT_COLOR:32770,CONSTANT_ALPHA:32771,ONE_MINUS_CONSTANT_ALPHA:32772,FUNC_ADD:32774,FUNC_SUBTRACT:32778,FUNC_REVERSE_SUBTRACT:32779,BLEND_EQUATION:32777,BLEND_EQUATION_RGB:32777,BLEND_EQUATION_ALPHA:34877,BLEND_DST_RGB:32968,BLEND_SRC_RGB:32969,BLEND_DST_ALPHA:32970,BLEND_SRC_ALPHA:32971,BLEND_COLOR:32773,ARRAY_BUFFER_BINDING:34964,ELEMENT_ARRAY_BUFFER_BINDING:34965,LINE_WIDTH:2849,ALIASED_POINT_SIZE_RANGE:33901,ALIASED_LINE_WIDTH_RANGE:33902,CULL_FACE_MODE:2885,FRONT_FACE:2886,DEPTH_RANGE:2928,DEPTH_WRITEMASK:2930,DEPTH_CLEAR_VALUE:2931,DEPTH_FUNC:2932,STENCIL_CLEAR_VALUE:2961,STENCIL_FUNC:2962,STENCIL_FAIL:2964,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STENCIL_BACK_FUNC:34816,STENCIL_BACK_FAIL:34817,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,VIEWPORT:2978,SCISSOR_BOX:3088,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,UNPACK_ALIGNMENT:3317,PACK_ALIGNMENT:3333,MAX_TEXTURE_SIZE:3379,MAX_VIEWPORT_DIMS:3386,SUBPIXEL_BITS:3408,RED_BITS:3410,GREEN_BITS:3411,BLUE_BITS:3412,ALPHA_BITS:3413,DEPTH_BITS:3414,STENCIL_BITS:3415,POLYGON_OFFSET_UNITS:10752,POLYGON_OFFSET_FACTOR:32824,TEXTURE_BINDING_2D:32873,SAMPLE_BUFFERS:32936,SAMPLES:32937,SAMPLE_COVERAGE_VALUE:32938,SAMPLE_COVERAGE_INVERT:32939,COMPRESSED_TEXTURE_FORMATS:34467,VENDOR:7936,RENDERER:7937,VERSION:7938,IMPLEMENTATION_COLOR_READ_TYPE:35738,IMPLEMENTATION_COLOR_READ_FORMAT:35739,BROWSER_DEFAULT_WEBGL:37444,STATIC_DRAW:35044,STREAM_DRAW:35040,DYNAMIC_DRAW:35048,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,BUFFER_SIZE:34660,BUFFER_USAGE:34661,CURRENT_VERTEX_ATTRIB:34342,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,CULL_FACE:2884,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,BLEND:3042,DEPTH_TEST:2929,DITHER:3024,POLYGON_OFFSET_FILL:32823,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_COVERAGE:32928,SCISSOR_TEST:3089,STENCIL_TEST:2960,NO_ERROR:0,INVALID_ENUM:1280,INVALID_VALUE:1281,INVALID_OPERATION:1282,OUT_OF_MEMORY:1285,CONTEXT_LOST_WEBGL:37442,CW:2304,CCW:2305,DONT_CARE:4352,FASTEST:4353,NICEST:4354,GENERATE_MIPMAP_HINT:33170,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DOUBLE:5130,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,FRAGMENT_SHADER:35632,VERTEX_SHADER:35633,COMPILE_STATUS:35713,DELETE_STATUS:35712,LINK_STATUS:35714,VALIDATE_STATUS:35715,ATTACHED_SHADERS:35717,ACTIVE_ATTRIBUTES:35721,ACTIVE_UNIFORMS:35718,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_FRAGMENT_UNIFORM_VECTORS:36349,SHADER_TYPE:35663,SHADING_LANGUAGE_VERSION:35724,CURRENT_PROGRAM:35725,NEVER:512,ALWAYS:519,LESS:513,EQUAL:514,LEQUAL:515,GREATER:516,GEQUAL:518,NOTEQUAL:517,KEEP:7680,REPLACE:7681,INCR:7682,DECR:7683,INVERT:5386,INCR_WRAP:34055,DECR_WRAP:34056,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TEXTURE_2D:3553,TEXTURE:5890,TEXTURE_CUBE_MAP:34067,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,MAX_CUBE_MAP_TEXTURE_SIZE:34076,TEXTURE0:33984,ACTIVE_TEXTURE:34016,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,TEXTURE_WIDTH:4096,TEXTURE_HEIGHT:4097,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,SAMPLER_2D:35678,SAMPLER_CUBE:35680,LOW_FLOAT:36336,MEDIUM_FLOAT:36337,HIGH_FLOAT:36338,LOW_INT:36339,MEDIUM_INT:36340,HIGH_INT:36341,FRAMEBUFFER:36160,RENDERBUFFER:36161,RGBA4:32854,RGB5_A1:32855,RGB565:36194,DEPTH_COMPONENT16:33189,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,DEPTH_STENCIL:34041,RENDERBUFFER_WIDTH:36162,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_STENCIL_SIZE:36181,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306,NONE:0,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_UNSUPPORTED:36061,FRAMEBUFFER_BINDING:36006,RENDERBUFFER_BINDING:36007,READ_FRAMEBUFFER:36008,DRAW_FRAMEBUFFER:36009,MAX_RENDERBUFFER_SIZE:34024,INVALID_FRAMEBUFFER_OPERATION:1286,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,READ_BUFFER:3074,UNPACK_ROW_LENGTH:3314,UNPACK_SKIP_ROWS:3315,UNPACK_SKIP_PIXELS:3316,PACK_ROW_LENGTH:3330,PACK_SKIP_ROWS:3331,PACK_SKIP_PIXELS:3332,TEXTURE_BINDING_3D:32874,UNPACK_SKIP_IMAGES:32877,UNPACK_IMAGE_HEIGHT:32878,MAX_3D_TEXTURE_SIZE:32883,MAX_ELEMENTS_VERTICES:33e3,MAX_ELEMENTS_INDICES:33001,MAX_TEXTURE_LOD_BIAS:34045,MAX_FRAGMENT_UNIFORM_COMPONENTS:35657,MAX_VERTEX_UNIFORM_COMPONENTS:35658,MAX_ARRAY_TEXTURE_LAYERS:35071,MIN_PROGRAM_TEXEL_OFFSET:35076,MAX_PROGRAM_TEXEL_OFFSET:35077,MAX_VARYING_COMPONENTS:35659,FRAGMENT_SHADER_DERIVATIVE_HINT:35723,RASTERIZER_DISCARD:35977,VERTEX_ARRAY_BINDING:34229,MAX_VERTEX_OUTPUT_COMPONENTS:37154,MAX_FRAGMENT_INPUT_COMPONENTS:37157,MAX_SERVER_WAIT_TIMEOUT:37137,MAX_ELEMENT_INDEX:36203,RED:6403,RGB8:32849,RGBA8:32856,RGB10_A2:32857,TEXTURE_3D:32879,TEXTURE_WRAP_R:32882,TEXTURE_MIN_LOD:33082,TEXTURE_MAX_LOD:33083,TEXTURE_BASE_LEVEL:33084,TEXTURE_MAX_LEVEL:33085,TEXTURE_COMPARE_MODE:34892,TEXTURE_COMPARE_FUNC:34893,SRGB:35904,SRGB8:35905,SRGB8_ALPHA8:35907,COMPARE_REF_TO_TEXTURE:34894,RGBA32F:34836,RGB32F:34837,RGBA16F:34842,RGB16F:34843,TEXTURE_2D_ARRAY:35866,TEXTURE_BINDING_2D_ARRAY:35869,R11F_G11F_B10F:35898,RGB9_E5:35901,RGBA32UI:36208,RGB32UI:36209,RGBA16UI:36214,RGB16UI:36215,RGBA8UI:36220,RGB8UI:36221,RGBA32I:36226,RGB32I:36227,RGBA16I:36232,RGB16I:36233,RGBA8I:36238,RGB8I:36239,RED_INTEGER:36244,RGB_INTEGER:36248,RGBA_INTEGER:36249,R8:33321,RG8:33323,R16F:33325,R32F:33326,RG16F:33327,RG32F:33328,R8I:33329,R8UI:33330,R16I:33331,R16UI:33332,R32I:33333,R32UI:33334,RG8I:33335,RG8UI:33336,RG16I:33337,RG16UI:33338,RG32I:33339,RG32UI:33340,R8_SNORM:36756,RG8_SNORM:36757,RGB8_SNORM:36758,RGBA8_SNORM:36759,RGB10_A2UI:36975,TEXTURE_IMMUTABLE_FORMAT:37167,TEXTURE_IMMUTABLE_LEVELS:33503,UNSIGNED_INT_2_10_10_10_REV:33640,UNSIGNED_INT_10F_11F_11F_REV:35899,UNSIGNED_INT_5_9_9_9_REV:35902,FLOAT_32_UNSIGNED_INT_24_8_REV:36269,UNSIGNED_INT_24_8:34042,HALF_FLOAT:5131,RG:33319,RG_INTEGER:33320,INT_2_10_10_10_REV:36255,CURRENT_QUERY:34917,QUERY_RESULT:34918,QUERY_RESULT_AVAILABLE:34919,ANY_SAMPLES_PASSED:35887,ANY_SAMPLES_PASSED_CONSERVATIVE:36202,MAX_DRAW_BUFFERS:34852,DRAW_BUFFER0:34853,DRAW_BUFFER1:34854,DRAW_BUFFER2:34855,DRAW_BUFFER3:34856,DRAW_BUFFER4:34857,DRAW_BUFFER5:34858,DRAW_BUFFER6:34859,DRAW_BUFFER7:34860,DRAW_BUFFER8:34861,DRAW_BUFFER9:34862,DRAW_BUFFER10:34863,DRAW_BUFFER11:34864,DRAW_BUFFER12:34865,DRAW_BUFFER13:34866,DRAW_BUFFER14:34867,DRAW_BUFFER15:34868,MAX_COLOR_ATTACHMENTS:36063,COLOR_ATTACHMENT1:36065,COLOR_ATTACHMENT2:36066,COLOR_ATTACHMENT3:36067,COLOR_ATTACHMENT4:36068,COLOR_ATTACHMENT5:36069,COLOR_ATTACHMENT6:36070,COLOR_ATTACHMENT7:36071,COLOR_ATTACHMENT8:36072,COLOR_ATTACHMENT9:36073,COLOR_ATTACHMENT10:36074,COLOR_ATTACHMENT11:36075,COLOR_ATTACHMENT12:36076,COLOR_ATTACHMENT13:36077,COLOR_ATTACHMENT14:36078,COLOR_ATTACHMENT15:36079,SAMPLER_3D:35679,SAMPLER_2D_SHADOW:35682,SAMPLER_2D_ARRAY:36289,SAMPLER_2D_ARRAY_SHADOW:36292,SAMPLER_CUBE_SHADOW:36293,INT_SAMPLER_2D:36298,INT_SAMPLER_3D:36299,INT_SAMPLER_CUBE:36300,INT_SAMPLER_2D_ARRAY:36303,UNSIGNED_INT_SAMPLER_2D:36306,UNSIGNED_INT_SAMPLER_3D:36307,UNSIGNED_INT_SAMPLER_CUBE:36308,UNSIGNED_INT_SAMPLER_2D_ARRAY:36311,MAX_SAMPLES:36183,SAMPLER_BINDING:35097,PIXEL_PACK_BUFFER:35051,PIXEL_UNPACK_BUFFER:35052,PIXEL_PACK_BUFFER_BINDING:35053,PIXEL_UNPACK_BUFFER_BINDING:35055,COPY_READ_BUFFER:36662,COPY_WRITE_BUFFER:36663,COPY_READ_BUFFER_BINDING:36662,COPY_WRITE_BUFFER_BINDING:36663,FLOAT_MAT2x3:35685,FLOAT_MAT2x4:35686,FLOAT_MAT3x2:35687,FLOAT_MAT3x4:35688,FLOAT_MAT4x2:35689,FLOAT_MAT4x3:35690,UNSIGNED_INT_VEC2:36294,UNSIGNED_INT_VEC3:36295,UNSIGNED_INT_VEC4:36296,UNSIGNED_NORMALIZED:35863,SIGNED_NORMALIZED:36764,VERTEX_ATTRIB_ARRAY_INTEGER:35069,VERTEX_ATTRIB_ARRAY_DIVISOR:35070,TRANSFORM_FEEDBACK_BUFFER_MODE:35967,MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:35968,TRANSFORM_FEEDBACK_VARYINGS:35971,TRANSFORM_FEEDBACK_BUFFER_START:35972,TRANSFORM_FEEDBACK_BUFFER_SIZE:35973,TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:35976,MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:35978,MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:35979,INTERLEAVED_ATTRIBS:35980,SEPARATE_ATTRIBS:35981,TRANSFORM_FEEDBACK_BUFFER:35982,TRANSFORM_FEEDBACK_BUFFER_BINDING:35983,TRANSFORM_FEEDBACK:36386,TRANSFORM_FEEDBACK_PAUSED:36387,TRANSFORM_FEEDBACK_ACTIVE:36388,TRANSFORM_FEEDBACK_BINDING:36389,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:33296,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:33297,FRAMEBUFFER_ATTACHMENT_RED_SIZE:33298,FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:33299,FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:33300,FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:33301,FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:33302,FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:33303,FRAMEBUFFER_DEFAULT:33304,DEPTH24_STENCIL8:35056,DRAW_FRAMEBUFFER_BINDING:36006,READ_FRAMEBUFFER_BINDING:36010,RENDERBUFFER_SAMPLES:36011,FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:36052,FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:36182,UNIFORM_BUFFER:35345,UNIFORM_BUFFER_BINDING:35368,UNIFORM_BUFFER_START:35369,UNIFORM_BUFFER_SIZE:35370,MAX_VERTEX_UNIFORM_BLOCKS:35371,MAX_FRAGMENT_UNIFORM_BLOCKS:35373,MAX_COMBINED_UNIFORM_BLOCKS:35374,MAX_UNIFORM_BUFFER_BINDINGS:35375,MAX_UNIFORM_BLOCK_SIZE:35376,MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:35377,MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:35379,UNIFORM_BUFFER_OFFSET_ALIGNMENT:35380,ACTIVE_UNIFORM_BLOCKS:35382,UNIFORM_TYPE:35383,UNIFORM_SIZE:35384,UNIFORM_BLOCK_INDEX:35386,UNIFORM_OFFSET:35387,UNIFORM_ARRAY_STRIDE:35388,UNIFORM_MATRIX_STRIDE:35389,UNIFORM_IS_ROW_MAJOR:35390,UNIFORM_BLOCK_BINDING:35391,UNIFORM_BLOCK_DATA_SIZE:35392,UNIFORM_BLOCK_ACTIVE_UNIFORMS:35394,UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:35395,UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:35396,UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:35398,OBJECT_TYPE:37138,SYNC_CONDITION:37139,SYNC_STATUS:37140,SYNC_FLAGS:37141,SYNC_FENCE:37142,SYNC_GPU_COMMANDS_COMPLETE:37143,UNSIGNALED:37144,SIGNALED:37145,ALREADY_SIGNALED:37146,TIMEOUT_EXPIRED:37147,CONDITION_SATISFIED:37148,WAIT_FAILED:37149,SYNC_FLUSH_COMMANDS_BIT:1,COLOR:6144,DEPTH:6145,STENCIL:6146,MIN:32775,MAX:32776,DEPTH_COMPONENT24:33190,STREAM_READ:35041,STREAM_COPY:35042,STATIC_READ:35045,STATIC_COPY:35046,DYNAMIC_READ:35049,DYNAMIC_COPY:35050,DEPTH_COMPONENT32F:36012,DEPTH32F_STENCIL8:36013,INVALID_INDEX:4294967295,TIMEOUT_IGNORED:-1,MAX_CLIENT_WAIT_TIMEOUT_WEBGL:37447,VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE:35070,UNMASKED_VENDOR_WEBGL:37445,UNMASKED_RENDERER_WEBGL:37446,MAX_TEXTURE_MAX_ANISOTROPY_EXT:34047,TEXTURE_MAX_ANISOTROPY_EXT:34046,COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_RGBA8_ETC2_EAC:37493,COMPRESSED_SRGB8_ETC2:37494,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37495,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37496,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37497,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGB_ATC_WEBGL:35986,COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL:35986,COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL:34798,UNSIGNED_INT_24_8_WEBGL:34042,HALF_FLOAT_OES:36193,RGBA32F_EXT:34836,RGB32F_EXT:34837,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT:33297,UNSIGNED_NORMALIZED_EXT:35863,MIN_EXT:32775,MAX_EXT:32776,SRGB_EXT:35904,SRGB_ALPHA_EXT:35906,SRGB8_ALPHA8_EXT:35907,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT:33296,FRAGMENT_SHADER_DERIVATIVE_HINT_OES:35723,COLOR_ATTACHMENT0_WEBGL:36064,COLOR_ATTACHMENT1_WEBGL:36065,COLOR_ATTACHMENT2_WEBGL:36066,COLOR_ATTACHMENT3_WEBGL:36067,COLOR_ATTACHMENT4_WEBGL:36068,COLOR_ATTACHMENT5_WEBGL:36069,COLOR_ATTACHMENT6_WEBGL:36070,COLOR_ATTACHMENT7_WEBGL:36071,COLOR_ATTACHMENT8_WEBGL:36072,COLOR_ATTACHMENT9_WEBGL:36073,COLOR_ATTACHMENT10_WEBGL:36074,COLOR_ATTACHMENT11_WEBGL:36075,COLOR_ATTACHMENT12_WEBGL:36076,COLOR_ATTACHMENT13_WEBGL:36077,COLOR_ATTACHMENT14_WEBGL:36078,COLOR_ATTACHMENT15_WEBGL:36079,DRAW_BUFFER0_WEBGL:34853,DRAW_BUFFER1_WEBGL:34854,DRAW_BUFFER2_WEBGL:34855,DRAW_BUFFER3_WEBGL:34856,DRAW_BUFFER4_WEBGL:34857,DRAW_BUFFER5_WEBGL:34858,DRAW_BUFFER6_WEBGL:34859,DRAW_BUFFER7_WEBGL:34860,DRAW_BUFFER8_WEBGL:34861,DRAW_BUFFER9_WEBGL:34862,DRAW_BUFFER10_WEBGL:34863,DRAW_BUFFER11_WEBGL:34864,DRAW_BUFFER12_WEBGL:34865,DRAW_BUFFER13_WEBGL:34866,DRAW_BUFFER14_WEBGL:34867,DRAW_BUFFER15_WEBGL:34868,MAX_COLOR_ATTACHMENTS_WEBGL:36063,MAX_DRAW_BUFFERS_WEBGL:34852,VERTEX_ARRAY_BINDING_OES:34229,QUERY_COUNTER_BITS_EXT:34916,CURRENT_QUERY_EXT:34917,QUERY_RESULT_EXT:34918,QUERY_RESULT_AVAILABLE_EXT:34919,TIME_ELAPSED_EXT:35007,TIMESTAMP_EXT:36392,GPU_DISJOINT_EXT:36795}}\n//# sourceMappingURL=index.min.js.map","min_map":"{\"version\":3,\"file\":\"index.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"DEPTH_BUFFER_BIT\",\"STENCIL_BUFFER_BIT\",\"COLOR_BUFFER_BIT\",\"POINTS\",\"LINES\",\"LINE_LOOP\",\"LINE_STRIP\",\"TRIANGLES\",\"TRIANGLE_STRIP\",\"TRIANGLE_FAN\",\"ZERO\",\"ONE\",\"SRC_COLOR\",\"ONE_MINUS_SRC_COLOR\",\"SRC_ALPHA\",\"ONE_MINUS_SRC_ALPHA\",\"DST_ALPHA\",\"ONE_MINUS_DST_ALPHA\",\"DST_COLOR\",\"ONE_MINUS_DST_COLOR\",\"SRC_ALPHA_SATURATE\",\"CONSTANT_COLOR\",\"ONE_MINUS_CONSTANT_COLOR\",\"CONSTANT_ALPHA\",\"ONE_MINUS_CONSTANT_ALPHA\",\"FUNC_ADD\",\"FUNC_SUBTRACT\",\"FUNC_REVERSE_SUBTRACT\",\"BLEND_EQUATION\",\"BLEND_EQUATION_RGB\",\"BLEND_EQUATION_ALPHA\",\"BLEND_DST_RGB\",\"BLEND_SRC_RGB\",\"BLEND_DST_ALPHA\",\"BLEND_SRC_ALPHA\",\"BLEND_COLOR\",\"ARRAY_BUFFER_BINDING\",\"ELEMENT_ARRAY_BUFFER_BINDING\",\"LINE_WIDTH\",\"ALIASED_POINT_SIZE_RANGE\",\"ALIASED_LINE_WIDTH_RANGE\",\"CULL_FACE_MODE\",\"FRONT_FACE\",\"DEPTH_RANGE\",\"DEPTH_WRITEMASK\",\"DEPTH_CLEAR_VALUE\",\"DEPTH_FUNC\",\"STENCIL_CLEAR_VALUE\",\"STENCIL_FUNC\",\"STENCIL_FAIL\",\"STENCIL_PASS_DEPTH_FAIL\",\"STENCIL_PASS_DEPTH_PASS\",\"STENCIL_REF\",\"STENCIL_VALUE_MASK\",\"STENCIL_WRITEMASK\",\"STENCIL_BACK_FUNC\",\"STENCIL_BACK_FAIL\",\"STENCIL_BACK_PASS_DEPTH_FAIL\",\"STENCIL_BACK_PASS_DEPTH_PASS\",\"STENCIL_BACK_REF\",\"STENCIL_BACK_VALUE_MASK\",\"STENCIL_BACK_WRITEMASK\",\"VIEWPORT\",\"SCISSOR_BOX\",\"COLOR_CLEAR_VALUE\",\"COLOR_WRITEMASK\",\"UNPACK_ALIGNMENT\",\"PACK_ALIGNMENT\",\"MAX_TEXTURE_SIZE\",\"MAX_VIEWPORT_DIMS\",\"SUBPIXEL_BITS\",\"RED_BITS\",\"GREEN_BITS\",\"BLUE_BITS\",\"ALPHA_BITS\",\"DEPTH_BITS\",\"STENCIL_BITS\",\"POLYGON_OFFSET_UNITS\",\"POLYGON_OFFSET_FACTOR\",\"TEXTURE_BINDING_2D\",\"SAMPLE_BUFFERS\",\"SAMPLES\",\"SAMPLE_COVERAGE_VALUE\",\"SAMPLE_COVERAGE_INVERT\",\"COMPRESSED_TEXTURE_FORMATS\",\"VENDOR\",\"RENDERER\",\"VERSION\",\"IMPLEMENTATION_COLOR_READ_TYPE\",\"IMPLEMENTATION_COLOR_READ_FORMAT\",\"BROWSER_DEFAULT_WEBGL\",\"STATIC_DRAW\",\"STREAM_DRAW\",\"DYNAMIC_DRAW\",\"ARRAY_BUFFER\",\"ELEMENT_ARRAY_BUFFER\",\"BUFFER_SIZE\",\"BUFFER_USAGE\",\"CURRENT_VERTEX_ATTRIB\",\"VERTEX_ATTRIB_ARRAY_ENABLED\",\"VERTEX_ATTRIB_ARRAY_SIZE\",\"VERTEX_ATTRIB_ARRAY_STRIDE\",\"VERTEX_ATTRIB_ARRAY_TYPE\",\"VERTEX_ATTRIB_ARRAY_NORMALIZED\",\"VERTEX_ATTRIB_ARRAY_POINTER\",\"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING\",\"CULL_FACE\",\"FRONT\",\"BACK\",\"FRONT_AND_BACK\",\"BLEND\",\"DEPTH_TEST\",\"DITHER\",\"POLYGON_OFFSET_FILL\",\"SAMPLE_ALPHA_TO_COVERAGE\",\"SAMPLE_COVERAGE\",\"SCISSOR_TEST\",\"STENCIL_TEST\",\"NO_ERROR\",\"INVALID_ENUM\",\"INVALID_VALUE\",\"INVALID_OPERATION\",\"OUT_OF_MEMORY\",\"CONTEXT_LOST_WEBGL\",\"CW\",\"CCW\",\"DONT_CARE\",\"FASTEST\",\"NICEST\",\"GENERATE_MIPMAP_HINT\",\"BYTE\",\"UNSIGNED_BYTE\",\"SHORT\",\"UNSIGNED_SHORT\",\"INT\",\"UNSIGNED_INT\",\"FLOAT\",\"DOUBLE\",\"DEPTH_COMPONENT\",\"ALPHA\",\"RGB\",\"RGBA\",\"LUMINANCE\",\"LUMINANCE_ALPHA\",\"UNSIGNED_SHORT_4_4_4_4\",\"UNSIGNED_SHORT_5_5_5_1\",\"UNSIGNED_SHORT_5_6_5\",\"FRAGMENT_SHADER\",\"VERTEX_SHADER\",\"COMPILE_STATUS\",\"DELETE_STATUS\",\"LINK_STATUS\",\"VALIDATE_STATUS\",\"ATTACHED_SHADERS\",\"ACTIVE_ATTRIBUTES\",\"ACTIVE_UNIFORMS\",\"MAX_VERTEX_ATTRIBS\",\"MAX_VERTEX_UNIFORM_VECTORS\",\"MAX_VARYING_VECTORS\",\"MAX_COMBINED_TEXTURE_IMAGE_UNITS\",\"MAX_VERTEX_TEXTURE_IMAGE_UNITS\",\"MAX_TEXTURE_IMAGE_UNITS\",\"MAX_FRAGMENT_UNIFORM_VECTORS\",\"SHADER_TYPE\",\"SHADING_LANGUAGE_VERSION\",\"CURRENT_PROGRAM\",\"NEVER\",\"ALWAYS\",\"LESS\",\"EQUAL\",\"LEQUAL\",\"GREATER\",\"GEQUAL\",\"NOTEQUAL\",\"KEEP\",\"REPLACE\",\"INCR\",\"DECR\",\"INVERT\",\"INCR_WRAP\",\"DECR_WRAP\",\"NEAREST\",\"LINEAR\",\"NEAREST_MIPMAP_NEAREST\",\"LINEAR_MIPMAP_NEAREST\",\"NEAREST_MIPMAP_LINEAR\",\"LINEAR_MIPMAP_LINEAR\",\"TEXTURE_MAG_FILTER\",\"TEXTURE_MIN_FILTER\",\"TEXTURE_WRAP_S\",\"TEXTURE_WRAP_T\",\"TEXTURE_2D\",\"TEXTURE\",\"TEXTURE_CUBE_MAP\",\"TEXTURE_BINDING_CUBE_MAP\",\"TEXTURE_CUBE_MAP_POSITIVE_X\",\"TEXTURE_CUBE_MAP_NEGATIVE_X\",\"TEXTURE_CUBE_MAP_POSITIVE_Y\",\"TEXTURE_CUBE_MAP_NEGATIVE_Y\",\"TEXTURE_CUBE_MAP_POSITIVE_Z\",\"TEXTURE_CUBE_MAP_NEGATIVE_Z\",\"MAX_CUBE_MAP_TEXTURE_SIZE\",\"TEXTURE0\",\"ACTIVE_TEXTURE\",\"REPEAT\",\"CLAMP_TO_EDGE\",\"MIRRORED_REPEAT\",\"TEXTURE_WIDTH\",\"TEXTURE_HEIGHT\",\"FLOAT_VEC2\",\"FLOAT_VEC3\",\"FLOAT_VEC4\",\"INT_VEC2\",\"INT_VEC3\",\"INT_VEC4\",\"BOOL\",\"BOOL_VEC2\",\"BOOL_VEC3\",\"BOOL_VEC4\",\"FLOAT_MAT2\",\"FLOAT_MAT3\",\"FLOAT_MAT4\",\"SAMPLER_2D\",\"SAMPLER_CUBE\",\"LOW_FLOAT\",\"MEDIUM_FLOAT\",\"HIGH_FLOAT\",\"LOW_INT\",\"MEDIUM_INT\",\"HIGH_INT\",\"FRAMEBUFFER\",\"RENDERBUFFER\",\"RGBA4\",\"RGB5_A1\",\"RGB565\",\"DEPTH_COMPONENT16\",\"STENCIL_INDEX\",\"STENCIL_INDEX8\",\"DEPTH_STENCIL\",\"RENDERBUFFER_WIDTH\",\"RENDERBUFFER_HEIGHT\",\"RENDERBUFFER_INTERNAL_FORMAT\",\"RENDERBUFFER_RED_SIZE\",\"RENDERBUFFER_GREEN_SIZE\",\"RENDERBUFFER_BLUE_SIZE\",\"RENDERBUFFER_ALPHA_SIZE\",\"RENDERBUFFER_DEPTH_SIZE\",\"RENDERBUFFER_STENCIL_SIZE\",\"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE\",\"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\",\"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL\",\"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE\",\"COLOR_ATTACHMENT0\",\"DEPTH_ATTACHMENT\",\"STENCIL_ATTACHMENT\",\"DEPTH_STENCIL_ATTACHMENT\",\"NONE\",\"FRAMEBUFFER_COMPLETE\",\"FRAMEBUFFER_INCOMPLETE_ATTACHMENT\",\"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\",\"FRAMEBUFFER_INCOMPLETE_DIMENSIONS\",\"FRAMEBUFFER_UNSUPPORTED\",\"FRAMEBUFFER_BINDING\",\"RENDERBUFFER_BINDING\",\"READ_FRAMEBUFFER\",\"DRAW_FRAMEBUFFER\",\"MAX_RENDERBUFFER_SIZE\",\"INVALID_FRAMEBUFFER_OPERATION\",\"UNPACK_FLIP_Y_WEBGL\",\"UNPACK_PREMULTIPLY_ALPHA_WEBGL\",\"UNPACK_COLORSPACE_CONVERSION_WEBGL\",\"READ_BUFFER\",\"UNPACK_ROW_LENGTH\",\"UNPACK_SKIP_ROWS\",\"UNPACK_SKIP_PIXELS\",\"PACK_ROW_LENGTH\",\"PACK_SKIP_ROWS\",\"PACK_SKIP_PIXELS\",\"TEXTURE_BINDING_3D\",\"UNPACK_SKIP_IMAGES\",\"UNPACK_IMAGE_HEIGHT\",\"MAX_3D_TEXTURE_SIZE\",\"MAX_ELEMENTS_VERTICES\",\"MAX_ELEMENTS_INDICES\",\"MAX_TEXTURE_LOD_BIAS\",\"MAX_FRAGMENT_UNIFORM_COMPONENTS\",\"MAX_VERTEX_UNIFORM_COMPONENTS\",\"MAX_ARRAY_TEXTURE_LAYERS\",\"MIN_PROGRAM_TEXEL_OFFSET\",\"MAX_PROGRAM_TEXEL_OFFSET\",\"MAX_VARYING_COMPONENTS\",\"FRAGMENT_SHADER_DERIVATIVE_HINT\",\"RASTERIZER_DISCARD\",\"VERTEX_ARRAY_BINDING\",\"MAX_VERTEX_OUTPUT_COMPONENTS\",\"MAX_FRAGMENT_INPUT_COMPONENTS\",\"MAX_SERVER_WAIT_TIMEOUT\",\"MAX_ELEMENT_INDEX\",\"RED\",\"RGB8\",\"RGBA8\",\"RGB10_A2\",\"TEXTURE_3D\",\"TEXTURE_WRAP_R\",\"TEXTURE_MIN_LOD\",\"TEXTURE_MAX_LOD\",\"TEXTURE_BASE_LEVEL\",\"TEXTURE_MAX_LEVEL\",\"TEXTURE_COMPARE_MODE\",\"TEXTURE_COMPARE_FUNC\",\"SRGB\",\"SRGB8\",\"SRGB8_ALPHA8\",\"COMPARE_REF_TO_TEXTURE\",\"RGBA32F\",\"RGB32F\",\"RGBA16F\",\"RGB16F\",\"TEXTURE_2D_ARRAY\",\"TEXTURE_BINDING_2D_ARRAY\",\"R11F_G11F_B10F\",\"RGB9_E5\",\"RGBA32UI\",\"RGB32UI\",\"RGBA16UI\",\"RGB16UI\",\"RGBA8UI\",\"RGB8UI\",\"RGBA32I\",\"RGB32I\",\"RGBA16I\",\"RGB16I\",\"RGBA8I\",\"RGB8I\",\"RED_INTEGER\",\"RGB_INTEGER\",\"RGBA_INTEGER\",\"R8\",\"RG8\",\"R16F\",\"R32F\",\"RG16F\",\"RG32F\",\"R8I\",\"R8UI\",\"R16I\",\"R16UI\",\"R32I\",\"R32UI\",\"RG8I\",\"RG8UI\",\"RG16I\",\"RG16UI\",\"RG32I\",\"RG32UI\",\"R8_SNORM\",\"RG8_SNORM\",\"RGB8_SNORM\",\"RGBA8_SNORM\",\"RGB10_A2UI\",\"TEXTURE_IMMUTABLE_FORMAT\",\"TEXTURE_IMMUTABLE_LEVELS\",\"UNSIGNED_INT_2_10_10_10_REV\",\"UNSIGNED_INT_10F_11F_11F_REV\",\"UNSIGNED_INT_5_9_9_9_REV\",\"FLOAT_32_UNSIGNED_INT_24_8_REV\",\"UNSIGNED_INT_24_8\",\"HALF_FLOAT\",\"RG\",\"RG_INTEGER\",\"INT_2_10_10_10_REV\",\"CURRENT_QUERY\",\"QUERY_RESULT\",\"QUERY_RESULT_AVAILABLE\",\"ANY_SAMPLES_PASSED\",\"ANY_SAMPLES_PASSED_CONSERVATIVE\",\"MAX_DRAW_BUFFERS\",\"DRAW_BUFFER0\",\"DRAW_BUFFER1\",\"DRAW_BUFFER2\",\"DRAW_BUFFER3\",\"DRAW_BUFFER4\",\"DRAW_BUFFER5\",\"DRAW_BUFFER6\",\"DRAW_BUFFER7\",\"DRAW_BUFFER8\",\"DRAW_BUFFER9\",\"DRAW_BUFFER10\",\"DRAW_BUFFER11\",\"DRAW_BUFFER12\",\"DRAW_BUFFER13\",\"DRAW_BUFFER14\",\"DRAW_BUFFER15\",\"MAX_COLOR_ATTACHMENTS\",\"COLOR_ATTACHMENT1\",\"COLOR_ATTACHMENT2\",\"COLOR_ATTACHMENT3\",\"COLOR_ATTACHMENT4\",\"COLOR_ATTACHMENT5\",\"COLOR_ATTACHMENT6\",\"COLOR_ATTACHMENT7\",\"COLOR_ATTACHMENT8\",\"COLOR_ATTACHMENT9\",\"COLOR_ATTACHMENT10\",\"COLOR_ATTACHMENT11\",\"COLOR_ATTACHMENT12\",\"COLOR_ATTACHMENT13\",\"COLOR_ATTACHMENT14\",\"COLOR_ATTACHMENT15\",\"SAMPLER_3D\",\"SAMPLER_2D_SHADOW\",\"SAMPLER_2D_ARRAY\",\"SAMPLER_2D_ARRAY_SHADOW\",\"SAMPLER_CUBE_SHADOW\",\"INT_SAMPLER_2D\",\"INT_SAMPLER_3D\",\"INT_SAMPLER_CUBE\",\"INT_SAMPLER_2D_ARRAY\",\"UNSIGNED_INT_SAMPLER_2D\",\"UNSIGNED_INT_SAMPLER_3D\",\"UNSIGNED_INT_SAMPLER_CUBE\",\"UNSIGNED_INT_SAMPLER_2D_ARRAY\",\"MAX_SAMPLES\",\"SAMPLER_BINDING\",\"PIXEL_PACK_BUFFER\",\"PIXEL_UNPACK_BUFFER\",\"PIXEL_PACK_BUFFER_BINDING\",\"PIXEL_UNPACK_BUFFER_BINDING\",\"COPY_READ_BUFFER\",\"COPY_WRITE_BUFFER\",\"COPY_READ_BUFFER_BINDING\",\"COPY_WRITE_BUFFER_BINDING\",\"FLOAT_MAT2x3\",\"FLOAT_MAT2x4\",\"FLOAT_MAT3x2\",\"FLOAT_MAT3x4\",\"FLOAT_MAT4x2\",\"FLOAT_MAT4x3\",\"UNSIGNED_INT_VEC2\",\"UNSIGNED_INT_VEC3\",\"UNSIGNED_INT_VEC4\",\"UNSIGNED_NORMALIZED\",\"SIGNED_NORMALIZED\",\"VERTEX_ATTRIB_ARRAY_INTEGER\",\"VERTEX_ATTRIB_ARRAY_DIVISOR\",\"TRANSFORM_FEEDBACK_BUFFER_MODE\",\"MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS\",\"TRANSFORM_FEEDBACK_VARYINGS\",\"TRANSFORM_FEEDBACK_BUFFER_START\",\"TRANSFORM_FEEDBACK_BUFFER_SIZE\",\"TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN\",\"MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS\",\"MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS\",\"INTERLEAVED_ATTRIBS\",\"SEPARATE_ATTRIBS\",\"TRANSFORM_FEEDBACK_BUFFER\",\"TRANSFORM_FEEDBACK_BUFFER_BINDING\",\"TRANSFORM_FEEDBACK\",\"TRANSFORM_FEEDBACK_PAUSED\",\"TRANSFORM_FEEDBACK_ACTIVE\",\"TRANSFORM_FEEDBACK_BINDING\",\"FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING\",\"FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE\",\"FRAMEBUFFER_ATTACHMENT_RED_SIZE\",\"FRAMEBUFFER_ATTACHMENT_GREEN_SIZE\",\"FRAMEBUFFER_ATTACHMENT_BLUE_SIZE\",\"FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE\",\"FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE\",\"FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE\",\"FRAMEBUFFER_DEFAULT\",\"DEPTH24_STENCIL8\",\"DRAW_FRAMEBUFFER_BINDING\",\"READ_FRAMEBUFFER_BINDING\",\"RENDERBUFFER_SAMPLES\",\"FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER\",\"FRAMEBUFFER_INCOMPLETE_MULTISAMPLE\",\"UNIFORM_BUFFER\",\"UNIFORM_BUFFER_BINDING\",\"UNIFORM_BUFFER_START\",\"UNIFORM_BUFFER_SIZE\",\"MAX_VERTEX_UNIFORM_BLOCKS\",\"MAX_FRAGMENT_UNIFORM_BLOCKS\",\"MAX_COMBINED_UNIFORM_BLOCKS\",\"MAX_UNIFORM_BUFFER_BINDINGS\",\"MAX_UNIFORM_BLOCK_SIZE\",\"MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS\",\"MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS\",\"UNIFORM_BUFFER_OFFSET_ALIGNMENT\",\"ACTIVE_UNIFORM_BLOCKS\",\"UNIFORM_TYPE\",\"UNIFORM_SIZE\",\"UNIFORM_BLOCK_INDEX\",\"UNIFORM_OFFSET\",\"UNIFORM_ARRAY_STRIDE\",\"UNIFORM_MATRIX_STRIDE\",\"UNIFORM_IS_ROW_MAJOR\",\"UNIFORM_BLOCK_BINDING\",\"UNIFORM_BLOCK_DATA_SIZE\",\"UNIFORM_BLOCK_ACTIVE_UNIFORMS\",\"UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES\",\"UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER\",\"UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER\",\"OBJECT_TYPE\",\"SYNC_CONDITION\",\"SYNC_STATUS\",\"SYNC_FLAGS\",\"SYNC_FENCE\",\"SYNC_GPU_COMMANDS_COMPLETE\",\"UNSIGNALED\",\"SIGNALED\",\"ALREADY_SIGNALED\",\"TIMEOUT_EXPIRED\",\"CONDITION_SATISFIED\",\"WAIT_FAILED\",\"SYNC_FLUSH_COMMANDS_BIT\",\"COLOR\",\"DEPTH\",\"STENCIL\",\"MIN\",\"MAX\",\"DEPTH_COMPONENT24\",\"STREAM_READ\",\"STREAM_COPY\",\"STATIC_READ\",\"STATIC_COPY\",\"DYNAMIC_READ\",\"DYNAMIC_COPY\",\"DEPTH_COMPONENT32F\",\"DEPTH32F_STENCIL8\",\"INVALID_INDEX\",\"TIMEOUT_IGNORED\",\"MAX_CLIENT_WAIT_TIMEOUT_WEBGL\",\"VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE\",\"UNMASKED_VENDOR_WEBGL\",\"UNMASKED_RENDERER_WEBGL\",\"MAX_TEXTURE_MAX_ANISOTROPY_EXT\",\"TEXTURE_MAX_ANISOTROPY_EXT\",\"COMPRESSED_RGB_S3TC_DXT1_EXT\",\"COMPRESSED_RGBA_S3TC_DXT1_EXT\",\"COMPRESSED_RGBA_S3TC_DXT3_EXT\",\"COMPRESSED_RGBA_S3TC_DXT5_EXT\",\"COMPRESSED_R11_EAC\",\"COMPRESSED_SIGNED_R11_EAC\",\"COMPRESSED_RG11_EAC\",\"COMPRESSED_SIGNED_RG11_EAC\",\"COMPRESSED_RGB8_ETC2\",\"COMPRESSED_RGBA8_ETC2_EAC\",\"COMPRESSED_SRGB8_ETC2\",\"COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\",\"COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2\",\"COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2\",\"COMPRESSED_RGB_PVRTC_4BPPV1_IMG\",\"COMPRESSED_RGBA_PVRTC_4BPPV1_IMG\",\"COMPRESSED_RGB_PVRTC_2BPPV1_IMG\",\"COMPRESSED_RGBA_PVRTC_2BPPV1_IMG\",\"COMPRESSED_RGB_ETC1_WEBGL\",\"COMPRESSED_RGB_ATC_WEBGL\",\"COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL\",\"COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL\",\"UNSIGNED_INT_24_8_WEBGL\",\"HALF_FLOAT_OES\",\"RGBA32F_EXT\",\"RGB32F_EXT\",\"FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT\",\"UNSIGNED_NORMALIZED_EXT\",\"MIN_EXT\",\"MAX_EXT\",\"SRGB_EXT\",\"SRGB_ALPHA_EXT\",\"SRGB8_ALPHA8_EXT\",\"FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT\",\"FRAGMENT_SHADER_DERIVATIVE_HINT_OES\",\"COLOR_ATTACHMENT0_WEBGL\",\"COLOR_ATTACHMENT1_WEBGL\",\"COLOR_ATTACHMENT2_WEBGL\",\"COLOR_ATTACHMENT3_WEBGL\",\"COLOR_ATTACHMENT4_WEBGL\",\"COLOR_ATTACHMENT5_WEBGL\",\"COLOR_ATTACHMENT6_WEBGL\",\"COLOR_ATTACHMENT7_WEBGL\",\"COLOR_ATTACHMENT8_WEBGL\",\"COLOR_ATTACHMENT9_WEBGL\",\"COLOR_ATTACHMENT10_WEBGL\",\"COLOR_ATTACHMENT11_WEBGL\",\"COLOR_ATTACHMENT12_WEBGL\",\"COLOR_ATTACHMENT13_WEBGL\",\"COLOR_ATTACHMENT14_WEBGL\",\"COLOR_ATTACHMENT15_WEBGL\",\"DRAW_BUFFER0_WEBGL\",\"DRAW_BUFFER1_WEBGL\",\"DRAW_BUFFER2_WEBGL\",\"DRAW_BUFFER3_WEBGL\",\"DRAW_BUFFER4_WEBGL\",\"DRAW_BUFFER5_WEBGL\",\"DRAW_BUFFER6_WEBGL\",\"DRAW_BUFFER7_WEBGL\",\"DRAW_BUFFER8_WEBGL\",\"DRAW_BUFFER9_WEBGL\",\"DRAW_BUFFER10_WEBGL\",\"DRAW_BUFFER11_WEBGL\",\"DRAW_BUFFER12_WEBGL\",\"DRAW_BUFFER13_WEBGL\",\"DRAW_BUFFER14_WEBGL\",\"DRAW_BUFFER15_WEBGL\",\"MAX_COLOR_ATTACHMENTS_WEBGL\",\"MAX_DRAW_BUFFERS_WEBGL\",\"VERTEX_ARRAY_BINDING_OES\",\"QUERY_COUNTER_BITS_EXT\",\"CURRENT_QUERY_EXT\",\"QUERY_RESULT_EXT\",\"QUERY_RESULT_AVAILABLE_EXT\",\"TIME_ELAPSED_EXT\",\"TIMESTAMP_EXT\",\"GPU_DISJOINT_EXT\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/echarts.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/echarts.js","canonical":"models/echarts","resolution":"ESM","id":"7bc4e47bd5","hash":"7bc4e47bd53263e99c29b9581971572ee0defed4d955309b24547bc9164c655d","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ECharts = exports.EChartsView = exports.EChartsEvent = void 0;\nvar _a, _b;\nconst bokeh_events_1 = require(\"@bokehjs/core/bokeh_events\");\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst event_to_object_1 = require(\"./event-to-object\");\nconst layout_1 = require(\"./layout\");\nconst mouse_events = [\n    'click', 'dblclick', 'mousedown', 'mousemove', 'mouseup', 'mouseover', 'mouseout',\n    'globalout', 'contextmenu'\n];\nconst events = [\n    'highlight', 'downplay', 'selectchanged', 'legendselectchangedEvent', 'legendselected',\n    'legendunselected', 'legendselectall', 'legendinverseselect', 'legendscroll', 'datazoom',\n    'datarangeselected', 'timelineplaychanged', 'restore', 'dataviewchanged', 'magictypechanged',\n    'geoselectchanged', 'geoselected', 'geounselected', 'axisareaselected', 'brush', 'brushEnd',\n    'rushselected', 'globalcursortaken', 'rendered', 'finished'\n];\nconst all_events = mouse_events.concat(events);\nclass EChartsEvent extends bokeh_events_1.ModelEvent {\n    constructor(type, data, query) {\n        super();\n        this.type = type;\n        this.data = data;\n        this.query = query;\n    }\n    get event_values() {\n        return { model: this.origin, type: this.type, data: this.data, query: this.query };\n    }\n}\nexports.EChartsEvent = EChartsEvent;\n_a = EChartsEvent;\nEChartsEvent.__name__ = \"EChartsEvent\";\n(() => {\n    _a.prototype.event_name = \"echarts_event\";\n})();\nclass EChartsView extends layout_1.HTMLBoxView {\n    constructor() {\n        super(...arguments);\n        this._callbacks = [];\n    }\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.data.change, () => this._plot());\n        const { width, height, renderer, theme, event_config, js_events } = this.model.properties;\n        this.on_change([width, height], () => this._resize());\n        this.on_change([theme, renderer], () => {\n            this.render();\n            this._chart.resize();\n        });\n        this.on_change([event_config, js_events], () => this._subscribe());\n    }\n    render() {\n        if (this._chart != null)\n            window.echarts.dispose(this._chart);\n        super.render();\n        this.container = (0, dom_1.div)({ style: \"height: 100%; width: 100%;\" });\n        const config = { width: this.model.width, height: this.model.height, renderer: this.model.renderer };\n        this._chart = window.echarts.init(this.container, this.model.theme, config);\n        this._plot();\n        this._subscribe();\n        this.shadow_el.append(this.container);\n    }\n    remove() {\n        super.remove();\n        if (this._chart != null)\n            window.echarts.dispose(this._chart);\n    }\n    after_layout() {\n        super.after_layout();\n        this._chart.resize();\n    }\n    _plot() {\n        if (window.echarts == null)\n            return;\n        this._chart.setOption(this.model.data, this.model.options);\n    }\n    _resize() {\n        this._chart.resize({ width: this.model.width, height: this.model.height });\n    }\n    _subscribe() {\n        if (window.echarts == null)\n            return;\n        for (const [event_type, callback] of this._callbacks)\n            this._chart.off(event_type, callback);\n        this._callbacks = [];\n        for (const event_type in this.model.event_config) {\n            if (!all_events.includes(event_type)) {\n                console.warn(`Could not subscribe to unknown Echarts event: ${event_type}.`);\n                continue;\n            }\n            const queries = this.model.event_config[event_type];\n            for (const query of queries) {\n                const callback = (event) => {\n                    var _c;\n                    const processed = Object.assign({}, event);\n                    processed.event = (0, event_to_object_1.serializeEvent)((_c = event.event) === null || _c === void 0 ? void 0 : _c.event);\n                    const serialized = JSON.parse(JSON.stringify(processed));\n                    this.model.trigger_event(new EChartsEvent(event_type, serialized, query));\n                };\n                if (query == null)\n                    this._chart.on(event_type, query, callback);\n                else\n                    this._chart.on(event_type, callback);\n                this._callbacks.push([event_type, callback]);\n            }\n        }\n        for (const event_type in this.model.js_events) {\n            if (!all_events.includes(event_type)) {\n                console.warn(`Could not subscribe to unknown Echarts event: ${event_type}.`);\n                continue;\n            }\n            const handlers = this.model.js_events[event_type];\n            for (const handler of handlers) {\n                const callback = (event) => {\n                    handler.callback.execute(this._chart, event);\n                };\n                if ('query' in handler)\n                    this._chart.on(event_type, handler.query, callback);\n                else\n                    this._chart.on(event_type, callback);\n                this._callbacks.push([event_type, callback]);\n            }\n        }\n    }\n}\nexports.EChartsView = EChartsView;\nEChartsView.__name__ = \"EChartsView\";\nclass ECharts extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.ECharts = ECharts;\n_b = ECharts;\nECharts.__name__ = \"ECharts\";\nECharts.__module__ = \"panel.models.echarts\";\n(() => {\n    _b.prototype.default_view = EChartsView;\n    _b.define(({ Any, String }) => ({\n        data: [Any, {}],\n        options: [Any, {}],\n        event_config: [Any, {}],\n        js_events: [Any, {}],\n        theme: [String, \"default\"],\n        renderer: [String, \"canvas\"]\n    }));\n})();\n//# sourceMappingURL=echarts.js.map\n","type":"js","dependency_paths":[["./event-to-object","/croot/panel_1706539561184/work/panel/dist/lib/models/event-to-object.js"],["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"EChartsEvent"},{"type":"named","name":"EChartsView"},{"type":"named","name":"ECharts"}],"externals":[],"shims":[]},"code":{"source":"/* models/echarts.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a, _b;\n    const bokeh_events_1 = require(\"@bokehjs/core/bokeh_events\");\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const event_to_object_1 = require(\"490942d778\") /* ./event-to-object */;\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    const mouse_events = [\n        'click', 'dblclick', 'mousedown', 'mousemove', 'mouseup', 'mouseover', 'mouseout',\n        'globalout', 'contextmenu'\n    ];\n    const events = [\n        'highlight', 'downplay', 'selectchanged', 'legendselectchangedEvent', 'legendselected',\n        'legendunselected', 'legendselectall', 'legendinverseselect', 'legendscroll', 'datazoom',\n        'datarangeselected', 'timelineplaychanged', 'restore', 'dataviewchanged', 'magictypechanged',\n        'geoselectchanged', 'geoselected', 'geounselected', 'axisareaselected', 'brush', 'brushEnd',\n        'rushselected', 'globalcursortaken', 'rendered', 'finished'\n    ];\n    const all_events = mouse_events.concat(events);\n    class EChartsEvent extends bokeh_events_1.ModelEvent {\n        constructor(type, data, query) {\n            super();\n            this.type = type;\n            this.data = data;\n            this.query = query;\n        }\n        get event_values() {\n            return { model: this.origin, type: this.type, data: this.data, query: this.query };\n        }\n    }\n    exports.EChartsEvent = EChartsEvent;\n    _a = EChartsEvent;\n    EChartsEvent.__name__ = \"EChartsEvent\";\n    (() => {\n        _a.prototype.event_name = \"echarts_event\";\n    })();\n    class EChartsView extends layout_1.HTMLBoxView {\n        constructor() {\n            super(...arguments);\n            this._callbacks = [];\n        }\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.data.change, () => this._plot());\n            const { width, height, renderer, theme, event_config, js_events } = this.model.properties;\n            this.on_change([width, height], () => this._resize());\n            this.on_change([theme, renderer], () => {\n                this.render();\n                this._chart.resize();\n            });\n            this.on_change([event_config, js_events], () => this._subscribe());\n        }\n        render() {\n            if (this._chart != null)\n                window.echarts.dispose(this._chart);\n            super.render();\n            this.container = (0, dom_1.div)({ style: \"height: 100%; width: 100%;\" });\n            const config = { width: this.model.width, height: this.model.height, renderer: this.model.renderer };\n            this._chart = window.echarts.init(this.container, this.model.theme, config);\n            this._plot();\n            this._subscribe();\n            this.shadow_el.append(this.container);\n        }\n        remove() {\n            super.remove();\n            if (this._chart != null)\n                window.echarts.dispose(this._chart);\n        }\n        after_layout() {\n            super.after_layout();\n            this._chart.resize();\n        }\n        _plot() {\n            if (window.echarts == null)\n                return;\n            this._chart.setOption(this.model.data, this.model.options);\n        }\n        _resize() {\n            this._chart.resize({ width: this.model.width, height: this.model.height });\n        }\n        _subscribe() {\n            if (window.echarts == null)\n                return;\n            for (const [event_type, callback] of this._callbacks)\n                this._chart.off(event_type, callback);\n            this._callbacks = [];\n            for (const event_type in this.model.event_config) {\n                if (!all_events.includes(event_type)) {\n                    console.warn(`Could not subscribe to unknown Echarts event: ${event_type}.`);\n                    continue;\n                }\n                const queries = this.model.event_config[event_type];\n                for (const query of queries) {\n                    const callback = (event) => {\n                        var _c;\n                        const processed = Object.assign({}, event);\n                        processed.event = (0, event_to_object_1.serializeEvent)((_c = event.event) === null || _c === void 0 ? void 0 : _c.event);\n                        const serialized = JSON.parse(JSON.stringify(processed));\n                        this.model.trigger_event(new EChartsEvent(event_type, serialized, query));\n                    };\n                    if (query == null)\n                        this._chart.on(event_type, query, callback);\n                    else\n                        this._chart.on(event_type, callback);\n                    this._callbacks.push([event_type, callback]);\n                }\n            }\n            for (const event_type in this.model.js_events) {\n                if (!all_events.includes(event_type)) {\n                    console.warn(`Could not subscribe to unknown Echarts event: ${event_type}.`);\n                    continue;\n                }\n                const handlers = this.model.js_events[event_type];\n                for (const handler of handlers) {\n                    const callback = (event) => {\n                        handler.callback.execute(this._chart, event);\n                    };\n                    if ('query' in handler)\n                        this._chart.on(event_type, handler.query, callback);\n                    else\n                        this._chart.on(event_type, callback);\n                    this._callbacks.push([event_type, callback]);\n                }\n            }\n        }\n    }\n    exports.EChartsView = EChartsView;\n    EChartsView.__name__ = \"EChartsView\";\n    class ECharts extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.ECharts = ECharts;\n    _b = ECharts;\n    ECharts.__name__ = \"ECharts\";\n    ECharts.__module__ = \"panel.models.echarts\";\n    (() => {\n        _b.prototype.default_view = EChartsView;\n        _b.define(({ Any, String }) => ({\n            data: [Any, {}],\n            options: [Any, {}],\n            event_config: [Any, {}],\n            js_events: [Any, {}],\n            theme: [String, \"default\"],\n            renderer: [String, \"canvas\"]\n        }));\n    })();\n}\n","min_source":"function _(e,t,s,n,i){var o,h;n();const c=e(\"@bokehjs/core/bokeh_events\"),r=e(\"@bokehjs/core/dom\"),a=e(\"490942d778\"),l=e(\"cac5f3ed28\"),d=[\"click\",\"dblclick\",\"mousedown\",\"mousemove\",\"mouseup\",\"mouseover\",\"mouseout\",\"globalout\",\"contextmenu\"].concat([\"highlight\",\"downplay\",\"selectchanged\",\"legendselectchangedEvent\",\"legendselected\",\"legendunselected\",\"legendselectall\",\"legendinverseselect\",\"legendscroll\",\"datazoom\",\"datarangeselected\",\"timelineplaychanged\",\"restore\",\"dataviewchanged\",\"magictypechanged\",\"geoselectchanged\",\"geoselected\",\"geounselected\",\"axisareaselected\",\"brush\",\"brushEnd\",\"rushselected\",\"globalcursortaken\",\"rendered\",\"finished\"]);class _ extends c.ModelEvent{constructor(e,t,s){super(),this.type=e,this.data=t,this.query=s}get event_values(){return{model:this.origin,type:this.type,data:this.data,query:this.query}}}s.EChartsEvent=_,o=_,_.__name__=\"EChartsEvent\",o.prototype.event_name=\"echarts_event\";class u extends l.HTMLBoxView{constructor(){super(...arguments),this._callbacks=[]}connect_signals(){super.connect_signals(),this.connect(this.model.properties.data.change,(()=>this._plot()));const{width:e,height:t,renderer:s,theme:n,event_config:i,js_events:o}=this.model.properties;this.on_change([e,t],(()=>this._resize())),this.on_change([n,s],(()=>{this.render(),this._chart.resize()})),this.on_change([i,o],(()=>this._subscribe()))}render(){null!=this._chart&&window.echarts.dispose(this._chart),super.render(),this.container=(0,r.div)({style:\"height: 100%; width: 100%;\"});const e={width:this.model.width,height:this.model.height,renderer:this.model.renderer};this._chart=window.echarts.init(this.container,this.model.theme,e),this._plot(),this._subscribe(),this.shadow_el.append(this.container)}remove(){super.remove(),null!=this._chart&&window.echarts.dispose(this._chart)}after_layout(){super.after_layout(),this._chart.resize()}_plot(){null!=window.echarts&&this._chart.setOption(this.model.data,this.model.options)}_resize(){this._chart.resize({width:this.model.width,height:this.model.height})}_subscribe(){if(null!=window.echarts){for(const[e,t]of this._callbacks)this._chart.off(e,t);this._callbacks=[];for(const e in this.model.event_config){if(!d.includes(e)){console.warn(`Could not subscribe to unknown Echarts event: ${e}.`);continue}const t=this.model.event_config[e];for(const s of t){const t=t=>{var n;const i=Object.assign({},t);i.event=(0,a.serializeEvent)(null===(n=t.event)||void 0===n?void 0:n.event);const o=JSON.parse(JSON.stringify(i));this.model.trigger_event(new _(e,o,s))};null==s?this._chart.on(e,s,t):this._chart.on(e,t),this._callbacks.push([e,t])}}for(const e in this.model.js_events){if(!d.includes(e)){console.warn(`Could not subscribe to unknown Echarts event: ${e}.`);continue}const t=this.model.js_events[e];for(const s of t){const t=e=>{s.callback.execute(this._chart,e)};\"query\"in s?this._chart.on(e,s.query,t):this._chart.on(e,t),this._callbacks.push([e,t])}}}}}s.EChartsView=u,u.__name__=\"EChartsView\";class g extends l.HTMLBox{constructor(e){super(e)}}s.ECharts=g,h=g,g.__name__=\"ECharts\",g.__module__=\"panel.models.echarts\",h.prototype.default_view=u,h.define((({Any:e,String:t})=>({data:[e,{}],options:[e,{}],event_config:[e,{}],js_events:[e,{}],theme:[t,\"default\"],renderer:[t,\"canvas\"]})))}\n//# sourceMappingURL=echarts.min.js.map","min_map":"{\"version\":3,\"file\":\"echarts.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"_b\",\"bokeh_events_1\",\"dom_1\",\"event_to_object_1\",\"layout_1\",\"all_events\",\"concat\",\"EChartsEvent\",\"ModelEvent\",\"constructor\",\"type\",\"data\",\"query\",\"super\",\"this\",\"event_values\",\"model\",\"origin\",\"__name__\",\"prototype\",\"event_name\",\"EChartsView\",\"HTMLBoxView\",\"arguments\",\"_callbacks\",\"connect_signals\",\"connect\",\"properties\",\"change\",\"_plot\",\"width\",\"height\",\"renderer\",\"theme\",\"event_config\",\"js_events\",\"on_change\",\"_resize\",\"render\",\"_chart\",\"resize\",\"_subscribe\",\"window\",\"echarts\",\"dispose\",\"container\",\"div\",\"style\",\"config\",\"init\",\"shadow_el\",\"append\",\"remove\",\"after_layout\",\"setOption\",\"options\",\"event_type\",\"callback\",\"off\",\"includes\",\"console\",\"warn\",\"queries\",\"event\",\"_c\",\"processed\",\"Object\",\"assign\",\"serializeEvent\",\"serialized\",\"JSON\",\"parse\",\"stringify\",\"trigger_event\",\"on\",\"push\",\"handlers\",\"handler\",\"execute\",\"ECharts\",\"HTMLBox\",\"attrs\",\"__module__\",\"default_view\",\"define\",\"Any\",\"String\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/event-to-object.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/event-to-object.js","canonical":"models/event-to-object","resolution":"ESM","id":"490942d778","hash":"490942d778011620ab5e73b52727f968f28c8e013213a1905184ff788c3be8d7","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serializeEvent = void 0;\n/*\nThe MIT License (MIT)\n\nCopyright (c) 2019 Ryan S. Morshead\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\nfunction serializeEvent(event) {\n    const data = {};\n    // support for CustomEvents: the whole `detail` object is serialized\n    if (event.detail !== undefined) {\n        Object.assign(data, { detail: JSON.parse(JSON.stringify(event.detail)) });\n    }\n    if (event.type in eventTransforms) {\n        Object.assign(data, eventTransforms[event.type](event));\n    }\n    data.target = serializeDomElement(event.target);\n    data.currentTarget =\n        event.target === event.currentTarget\n            ? data.target\n            : serializeDomElement(event.currentTarget);\n    data.relatedTarget = serializeDomElement(event.relatedTarget);\n    return data;\n}\nexports.serializeEvent = serializeEvent;\nfunction serializeDomElement(element) {\n    let elementData = null;\n    if (element) {\n        elementData = defaultElementTransform(element);\n        if (element.tagName in elementTransforms) {\n            elementTransforms[element.tagName].forEach((trans) => Object.assign(elementData, trans(element)));\n        }\n    }\n    return elementData;\n}\nconst elementTransformCategories = {\n    hasValue: (element) => ({\n        value: element.value,\n    }),\n    hasCurrentTime: (element) => ({\n        currentTime: element.currentTime,\n    }),\n    hasFiles: (element) => {\n        if ((element === null || element === void 0 ? void 0 : element.type) === \"file\") {\n            return {\n                files: Array.from(element.files).map((file) => ({\n                    lastModified: file.lastModified,\n                    name: file.name,\n                    size: file.size,\n                    type: file.type,\n                })),\n            };\n        }\n        else {\n            return {};\n        }\n    },\n};\nfunction defaultElementTransform(element) {\n    try {\n        return { boundingClientRect: Object.assign({}, element.getBoundingClientRect()) };\n    }\n    catch (_a) {\n        return {};\n    }\n}\nconst elementTagCategories = {\n    hasValue: [\n        \"BUTTON\",\n        \"INPUT\",\n        \"OPTION\",\n        \"LI\",\n        \"METER\",\n        \"PROGRESS\",\n        \"PARAM\",\n        \"SELECT\",\n        \"TEXTAREA\",\n    ],\n    hasCurrentTime: [\"AUDIO\", \"VIDEO\"],\n    hasFiles: [\"INPUT\"],\n};\nconst elementTransforms = {};\nObject.keys(elementTagCategories).forEach((category) => {\n    elementTagCategories[category].forEach((type) => {\n        const transforms = elementTransforms[type] || (elementTransforms[type] = []);\n        transforms.push(elementTransformCategories[category]);\n    });\n});\nclass EventTransformCategories {\n    clipboard(event) {\n        return {\n            clipboardData: event.clipboardData,\n        };\n    }\n    composition(event) {\n        return {\n            data: event.data,\n        };\n    }\n    keyboard(event) {\n        return {\n            altKey: event.altKey,\n            charCode: event.charCode,\n            ctrlKey: event.ctrlKey,\n            key: event.key,\n            keyCode: event.keyCode,\n            locale: event.locale,\n            location: event.location,\n            metaKey: event.metaKey,\n            repeat: event.repeat,\n            shiftKey: event.shiftKey,\n            which: event.which,\n        };\n    }\n    mouse(event) {\n        return {\n            altKey: event.altKey,\n            button: event.button,\n            buttons: event.buttons,\n            clientX: event.clientX,\n            clientY: event.clientY,\n            ctrlKey: event.ctrlKey,\n            metaKey: event.metaKey,\n            pageX: event.pageX,\n            pageY: event.pageY,\n            screenX: event.screenX,\n            screenY: event.screenY,\n            shiftKey: event.shiftKey,\n        };\n    }\n    pointer(event) {\n        return Object.assign(Object.assign({}, this.mouse(event)), { pointerId: event.pointerId, width: event.width, height: event.height, pressure: event.pressure, tiltX: event.tiltX, tiltY: event.tiltY, pointerType: event.pointerType, isPrimary: event.isPrimary });\n    }\n    selection() {\n        return {\n            selectedText: window.getSelection().toString()\n        };\n    }\n    ;\n    touch(event) {\n        return {\n            altKey: event.altKey,\n            ctrlKey: event.ctrlKey,\n            metaKey: event.metaKey,\n            shiftKey: event.shiftKey,\n        };\n    }\n    ui(event) {\n        return {\n            detail: event.detail,\n        };\n    }\n    wheel(event) {\n        return {\n            deltaMode: event.deltaMode,\n            deltaX: event.deltaX,\n            deltaY: event.deltaY,\n            deltaZ: event.deltaZ,\n        };\n    }\n    animation(event) {\n        return {\n            animationName: event.animationName,\n            pseudoElement: event.pseudoElement,\n            elapsedTime: event.elapsedTime,\n        };\n    }\n    transition(event) {\n        return {\n            propertyName: event.propertyName,\n            pseudoElement: event.pseudoElement,\n            elapsedTime: event.elapsedTime,\n        };\n    }\n}\nEventTransformCategories.__name__ = \"EventTransformCategories\";\nconst eventTypeCategories = {\n    clipboard: [\"copy\", \"cut\", \"paste\"],\n    composition: [\"compositionend\", \"compositionstart\", \"compositionupdate\"],\n    keyboard: [\"keydown\", \"keypress\", \"keyup\"],\n    mouse: [\n        \"click\",\n        \"contextmenu\",\n        \"doubleclick\",\n        \"drag\",\n        \"dragend\",\n        \"dragenter\",\n        \"dragexit\",\n        \"dragleave\",\n        \"dragover\",\n        \"dragstart\",\n        \"drop\",\n        \"mousedown\",\n        \"mouseenter\",\n        \"mouseleave\",\n        \"mousemove\",\n        \"mouseout\",\n        \"mouseover\",\n        \"mouseup\",\n    ],\n    pointer: [\n        \"pointerdown\",\n        \"pointermove\",\n        \"pointerup\",\n        \"pointercancel\",\n        \"gotpointercapture\",\n        \"lostpointercapture\",\n        \"pointerenter\",\n        \"pointerleave\",\n        \"pointerover\",\n        \"pointerout\",\n    ],\n    selection: [\"select\"],\n    touch: [\"touchcancel\", \"touchend\", \"touchmove\", \"touchstart\"],\n    ui: [\"scroll\"],\n    wheel: [\"wheel\"],\n    animation: [\"animationstart\", \"animationend\", \"animationiteration\"],\n    transition: [\"transitionend\"],\n};\nconst eventTransforms = {};\nconst eventTransformCategories = new EventTransformCategories();\nObject.keys(eventTypeCategories).forEach((category) => {\n    eventTypeCategories[category].forEach((type) => {\n        eventTransforms[type] = eventTransformCategories[category];\n    });\n});\n//# sourceMappingURL=event-to-object.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"serializeEvent"}],"externals":[],"shims":[]},"code":{"source":"/* models/event-to-object.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    /*\n    The MIT License (MIT)\n    \n    Copyright (c) 2019 Ryan S. Morshead\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n    */\n    function serializeEvent(event) {\n        const data = {};\n        // support for CustomEvents: the whole `detail` object is serialized\n        if (event.detail !== undefined) {\n            Object.assign(data, { detail: JSON.parse(JSON.stringify(event.detail)) });\n        }\n        if (event.type in eventTransforms) {\n            Object.assign(data, eventTransforms[event.type](event));\n        }\n        data.target = serializeDomElement(event.target);\n        data.currentTarget =\n            event.target === event.currentTarget\n                ? data.target\n                : serializeDomElement(event.currentTarget);\n        data.relatedTarget = serializeDomElement(event.relatedTarget);\n        return data;\n    }\n    exports.serializeEvent = serializeEvent;\n    function serializeDomElement(element) {\n        let elementData = null;\n        if (element) {\n            elementData = defaultElementTransform(element);\n            if (element.tagName in elementTransforms) {\n                elementTransforms[element.tagName].forEach((trans) => Object.assign(elementData, trans(element)));\n            }\n        }\n        return elementData;\n    }\n    const elementTransformCategories = {\n        hasValue: (element) => ({\n            value: element.value,\n        }),\n        hasCurrentTime: (element) => ({\n            currentTime: element.currentTime,\n        }),\n        hasFiles: (element) => {\n            if ((element === null || element === void 0 ? void 0 : element.type) === \"file\") {\n                return {\n                    files: Array.from(element.files).map((file) => ({\n                        lastModified: file.lastModified,\n                        name: file.name,\n                        size: file.size,\n                        type: file.type,\n                    })),\n                };\n            }\n            else {\n                return {};\n            }\n        },\n    };\n    function defaultElementTransform(element) {\n        try {\n            return { boundingClientRect: Object.assign({}, element.getBoundingClientRect()) };\n        }\n        catch (_a) {\n            return {};\n        }\n    }\n    const elementTagCategories = {\n        hasValue: [\n            \"BUTTON\",\n            \"INPUT\",\n            \"OPTION\",\n            \"LI\",\n            \"METER\",\n            \"PROGRESS\",\n            \"PARAM\",\n            \"SELECT\",\n            \"TEXTAREA\",\n        ],\n        hasCurrentTime: [\"AUDIO\", \"VIDEO\"],\n        hasFiles: [\"INPUT\"],\n    };\n    const elementTransforms = {};\n    Object.keys(elementTagCategories).forEach((category) => {\n        elementTagCategories[category].forEach((type) => {\n            const transforms = elementTransforms[type] || (elementTransforms[type] = []);\n            transforms.push(elementTransformCategories[category]);\n        });\n    });\n    class EventTransformCategories {\n        clipboard(event) {\n            return {\n                clipboardData: event.clipboardData,\n            };\n        }\n        composition(event) {\n            return {\n                data: event.data,\n            };\n        }\n        keyboard(event) {\n            return {\n                altKey: event.altKey,\n                charCode: event.charCode,\n                ctrlKey: event.ctrlKey,\n                key: event.key,\n                keyCode: event.keyCode,\n                locale: event.locale,\n                location: event.location,\n                metaKey: event.metaKey,\n                repeat: event.repeat,\n                shiftKey: event.shiftKey,\n                which: event.which,\n            };\n        }\n        mouse(event) {\n            return {\n                altKey: event.altKey,\n                button: event.button,\n                buttons: event.buttons,\n                clientX: event.clientX,\n                clientY: event.clientY,\n                ctrlKey: event.ctrlKey,\n                metaKey: event.metaKey,\n                pageX: event.pageX,\n                pageY: event.pageY,\n                screenX: event.screenX,\n                screenY: event.screenY,\n                shiftKey: event.shiftKey,\n            };\n        }\n        pointer(event) {\n            return Object.assign(Object.assign({}, this.mouse(event)), { pointerId: event.pointerId, width: event.width, height: event.height, pressure: event.pressure, tiltX: event.tiltX, tiltY: event.tiltY, pointerType: event.pointerType, isPrimary: event.isPrimary });\n        }\n        selection() {\n            return {\n                selectedText: window.getSelection().toString()\n            };\n        }\n        ;\n        touch(event) {\n            return {\n                altKey: event.altKey,\n                ctrlKey: event.ctrlKey,\n                metaKey: event.metaKey,\n                shiftKey: event.shiftKey,\n            };\n        }\n        ui(event) {\n            return {\n                detail: event.detail,\n            };\n        }\n        wheel(event) {\n            return {\n                deltaMode: event.deltaMode,\n                deltaX: event.deltaX,\n                deltaY: event.deltaY,\n                deltaZ: event.deltaZ,\n            };\n        }\n        animation(event) {\n            return {\n                animationName: event.animationName,\n                pseudoElement: event.pseudoElement,\n                elapsedTime: event.elapsedTime,\n            };\n        }\n        transition(event) {\n            return {\n                propertyName: event.propertyName,\n                pseudoElement: event.pseudoElement,\n                elapsedTime: event.elapsedTime,\n            };\n        }\n    }\n    EventTransformCategories.__name__ = \"EventTransformCategories\";\n    const eventTypeCategories = {\n        clipboard: [\"copy\", \"cut\", \"paste\"],\n        composition: [\"compositionend\", \"compositionstart\", \"compositionupdate\"],\n        keyboard: [\"keydown\", \"keypress\", \"keyup\"],\n        mouse: [\n            \"click\",\n            \"contextmenu\",\n            \"doubleclick\",\n            \"drag\",\n            \"dragend\",\n            \"dragenter\",\n            \"dragexit\",\n            \"dragleave\",\n            \"dragover\",\n            \"dragstart\",\n            \"drop\",\n            \"mousedown\",\n            \"mouseenter\",\n            \"mouseleave\",\n            \"mousemove\",\n            \"mouseout\",\n            \"mouseover\",\n            \"mouseup\",\n        ],\n        pointer: [\n            \"pointerdown\",\n            \"pointermove\",\n            \"pointerup\",\n            \"pointercancel\",\n            \"gotpointercapture\",\n            \"lostpointercapture\",\n            \"pointerenter\",\n            \"pointerleave\",\n            \"pointerover\",\n            \"pointerout\",\n        ],\n        selection: [\"select\"],\n        touch: [\"touchcancel\", \"touchend\", \"touchmove\", \"touchstart\"],\n        ui: [\"scroll\"],\n        wheel: [\"wheel\"],\n        animation: [\"animationstart\", \"animationend\", \"animationiteration\"],\n        transition: [\"transitionend\"],\n    };\n    const eventTransforms = {};\n    const eventTransformCategories = new EventTransformCategories();\n    Object.keys(eventTypeCategories).forEach((category) => {\n        eventTypeCategories[category].forEach((type) => {\n            eventTransforms[type] = eventTransformCategories[category];\n        });\n    });\n}\n","min_source":"function _(e,t,a,r,n){function i(e){let t=null;return e&&(t=function(e){try{return{boundingClientRect:Object.assign({},e.getBoundingClientRect())}}catch(e){return{}}}(e),e.tagName in l&&l[e.tagName].forEach((a=>Object.assign(t,a(e))))),t}r(),a.serializeEvent=\n/*\n    The MIT License (MIT)\n    \n    Copyright (c) 2019 Ryan S. Morshead\n    \n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    \n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    \n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n    */\nfunction(e){const t={};return void 0!==e.detail&&Object.assign(t,{detail:JSON.parse(JSON.stringify(e.detail))}),e.type in d&&Object.assign(t,d[e.type](e)),t.target=i(e.target),t.currentTarget=e.target===e.currentTarget?t.target:i(e.currentTarget),t.relatedTarget=i(e.relatedTarget),t};const o={hasValue:e=>({value:e.value}),hasCurrentTime:e=>({currentTime:e.currentTime}),hasFiles:e=>\"file\"===(null==e?void 0:e.type)?{files:Array.from(e.files).map((e=>({lastModified:e.lastModified,name:e.name,size:e.size,type:e.type})))}:{}};const s={hasValue:[\"BUTTON\",\"INPUT\",\"OPTION\",\"LI\",\"METER\",\"PROGRESS\",\"PARAM\",\"SELECT\",\"TEXTAREA\"],hasCurrentTime:[\"AUDIO\",\"VIDEO\"],hasFiles:[\"INPUT\"]},l={};Object.keys(s).forEach((e=>{s[e].forEach((t=>{(l[t]||(l[t]=[])).push(o[e])}))}));class c{clipboard(e){return{clipboardData:e.clipboardData}}composition(e){return{data:e.data}}keyboard(e){return{altKey:e.altKey,charCode:e.charCode,ctrlKey:e.ctrlKey,key:e.key,keyCode:e.keyCode,locale:e.locale,location:e.location,metaKey:e.metaKey,repeat:e.repeat,shiftKey:e.shiftKey,which:e.which}}mouse(e){return{altKey:e.altKey,button:e.button,buttons:e.buttons,clientX:e.clientX,clientY:e.clientY,ctrlKey:e.ctrlKey,metaKey:e.metaKey,pageX:e.pageX,pageY:e.pageY,screenX:e.screenX,screenY:e.screenY,shiftKey:e.shiftKey}}pointer(e){return Object.assign(Object.assign({},this.mouse(e)),{pointerId:e.pointerId,width:e.width,height:e.height,pressure:e.pressure,tiltX:e.tiltX,tiltY:e.tiltY,pointerType:e.pointerType,isPrimary:e.isPrimary})}selection(){return{selectedText:window.getSelection().toString()}}touch(e){return{altKey:e.altKey,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey}}ui(e){return{detail:e.detail}}wheel(e){return{deltaMode:e.deltaMode,deltaX:e.deltaX,deltaY:e.deltaY,deltaZ:e.deltaZ}}animation(e){return{animationName:e.animationName,pseudoElement:e.pseudoElement,elapsedTime:e.elapsedTime}}transition(e){return{propertyName:e.propertyName,pseudoElement:e.pseudoElement,elapsedTime:e.elapsedTime}}}c.__name__=\"EventTransformCategories\";const u={clipboard:[\"copy\",\"cut\",\"paste\"],composition:[\"compositionend\",\"compositionstart\",\"compositionupdate\"],keyboard:[\"keydown\",\"keypress\",\"keyup\"],mouse:[\"click\",\"contextmenu\",\"doubleclick\",\"drag\",\"dragend\",\"dragenter\",\"dragexit\",\"dragleave\",\"dragover\",\"dragstart\",\"drop\",\"mousedown\",\"mouseenter\",\"mouseleave\",\"mousemove\",\"mouseout\",\"mouseover\",\"mouseup\"],pointer:[\"pointerdown\",\"pointermove\",\"pointerup\",\"pointercancel\",\"gotpointercapture\",\"lostpointercapture\",\"pointerenter\",\"pointerleave\",\"pointerover\",\"pointerout\"],selection:[\"select\"],touch:[\"touchcancel\",\"touchend\",\"touchmove\",\"touchstart\"],ui:[\"scroll\"],wheel:[\"wheel\"],animation:[\"animationstart\",\"animationend\",\"animationiteration\"],transition:[\"transitionend\"]},d={},p=new c;Object.keys(u).forEach((e=>{u[e].forEach((t=>{d[t]=p[e]}))}))}\n//# sourceMappingURL=event-to-object.min.js.map","min_map":"{\"version\":3,\"file\":\"event-to-object.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"serializeDomElement\",\"element\",\"elementData\",\"boundingClientRect\",\"Object\",\"assign\",\"getBoundingClientRect\",\"_a\",\"defaultElementTransform\",\"tagName\",\"elementTransforms\",\"forEach\",\"trans\",\"serializeEvent\",\"event\",\"data\",\"undefined\",\"detail\",\"JSON\",\"parse\",\"stringify\",\"type\",\"eventTransforms\",\"target\",\"currentTarget\",\"relatedTarget\",\"elementTransformCategories\",\"hasValue\",\"value\",\"hasCurrentTime\",\"currentTime\",\"hasFiles\",\"files\",\"Array\",\"from\",\"map\",\"file\",\"lastModified\",\"name\",\"size\",\"elementTagCategories\",\"keys\",\"category\",\"push\",\"EventTransformCategories\",\"clipboard\",\"clipboardData\",\"composition\",\"keyboard\",\"altKey\",\"charCode\",\"ctrlKey\",\"key\",\"keyCode\",\"locale\",\"location\",\"metaKey\",\"repeat\",\"shiftKey\",\"which\",\"mouse\",\"button\",\"buttons\",\"clientX\",\"clientY\",\"pageX\",\"pageY\",\"screenX\",\"screenY\",\"pointer\",\"this\",\"pointerId\",\"width\",\"height\",\"pressure\",\"tiltX\",\"tiltY\",\"pointerType\",\"isPrimary\",\"selection\",\"selectedText\",\"window\",\"getSelection\",\"toString\",\"touch\",\"ui\",\"wheel\",\"deltaMode\",\"deltaX\",\"deltaY\",\"deltaZ\",\"animation\",\"animationName\",\"pseudoElement\",\"elapsedTime\",\"transition\",\"propertyName\",\"__name__\",\"eventTypeCategories\",\"eventTransformCategories\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/file_download.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/file_download.js","canonical":"models/file_download","resolution":"ESM","id":"ab30c7afd7","hash":"ab30c7afd7244a86995b9fbec53722109eaa68c0693774075f20ece16697779f","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileDownload = exports.FileDownloadView = void 0;\nconst tslib_1 = require(\"tslib\");\nvar _a;\nconst build_views_1 = require(\"@bokehjs/core/build_views\");\nconst enums_1 = require(\"@bokehjs/core/enums\");\nconst input_widget_1 = require(\"@bokehjs/models/widgets/input_widget\");\nconst icon_1 = require(\"@bokehjs/models/ui/icons/icon\");\nconst buttons_css_1 = tslib_1.__importStar(require(\"@bokehjs/styles/buttons.css\")), buttons = buttons_css_1;\nconst dom_1 = require(\"@bokehjs/core/dom\");\nfunction dataURItoBlob(dataURI) {\n    // convert base64 to raw binary data held in a string\n    const byteString = atob(dataURI.split(',')[1]);\n    // separate out the mime component\n    const mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n    // write the bytes of the string to an ArrayBuffer\n    const ab = new ArrayBuffer(byteString.length);\n    const ia = new Uint8Array(ab);\n    for (let i = 0; i < byteString.length; i++) {\n        ia[i] = byteString.charCodeAt(i);\n    }\n    // write the ArrayBuffer to a blob, and you're done\n    var bb = new Blob([ab], { type: mimeString });\n    return bb;\n}\nclass FileDownloadView extends input_widget_1.InputWidgetView {\n    constructor() {\n        super(...arguments);\n        this._downloadable = false;\n        this._prev_href = \"\";\n        this._prev_download = \"\";\n    }\n    *children() {\n        yield* super.children();\n        if (this.icon_view != null)\n            yield this.icon_view;\n    }\n    *controls() {\n        yield this.anchor_el;\n        yield this.button_el;\n    }\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.button_type.change, () => this._update_button_style());\n        this.connect(this.model.properties.filename.change, () => this._update_download());\n        this.connect(this.model.properties._transfers.change, () => this._handle_click());\n        this.connect(this.model.properties.label.change, () => this._update_label());\n    }\n    remove() {\n        if (this.icon_view != null)\n            this.icon_view.remove();\n        super.remove();\n    }\n    async lazy_initialize() {\n        await super.lazy_initialize();\n        const { icon } = this.model;\n        if (icon != null) {\n            this.icon_view = await (0, build_views_1.build_view)(icon, { parent: this });\n        }\n    }\n    render() {\n        super.render();\n        this.group_el.style.display = \"flex\";\n        this.group_el.style.alignItems = \"stretch\";\n        // Create an anchor HTML element that is styled as a bokeh button.\n        // When its 'href' and 'download' attributes are set, it's a downloadable link:\n        // * A click triggers a download\n        // * A right click allows to \"Save as\" the file\n        // There are three main cases:\n        // 1. embed=True: The widget is a download link\n        // 2. auto=False: The widget is first a button and becomes a download link after the first click\n        // 3. auto=True: The widget is a button, i.e right click to \"Save as...\" won't work\n        this.anchor_el = document.createElement('a');\n        this.button_el = (0, dom_1.button)({\n            disabled: this.model.disabled\n        });\n        if (this.icon_view != null) {\n            const separator = this.model.label != \"\" ? (0, dom_1.nbsp)() : (0, dom_1.text)(\"\");\n            (0, dom_1.prepend)(this.button_el, this.icon_view.el, separator);\n            this.icon_view.render();\n        }\n        this._update_button_style();\n        this._update_label();\n        // Changing the disabled property calls render() so it needs to be handled here.\n        // This callback is inherited from ControlView in bokehjs.\n        if (this.model.disabled) {\n            this.anchor_el.setAttribute(\"disabled\", \"\");\n            this._downloadable = false;\n        }\n        else {\n            this.anchor_el.removeAttribute(\"disabled\");\n            // auto=False + toggle Disabled ==> Needs to reset the link as it was.\n            if (this._prev_download)\n                this.anchor_el.download = this._prev_download;\n            if (this._prev_href)\n                this.anchor_el.href = this._prev_href;\n            if (this.anchor_el.download && this.anchor_el.download)\n                this._downloadable = true;\n        }\n        // If embedded the button is just a download link.\n        // Otherwise clicks will be handled by the code itself, allowing for more interactivity.\n        if (this.model.embed)\n            this._make_link_downloadable();\n        else {\n            // Add a \"click\" listener, note that it's not going to\n            // handle right clicks (they won't increment 'clicks')\n            this._click_listener = this._increment_clicks.bind(this);\n            this.anchor_el.addEventListener(\"click\", this._click_listener);\n        }\n        this.button_el.appendChild(this.anchor_el);\n        this.group_el.appendChild(this.button_el);\n    }\n    stylesheets() {\n        return [...super.stylesheets(), buttons_css_1.default];\n    }\n    _increment_clicks() {\n        this.model.clicks = this.model.clicks + 1;\n    }\n    _handle_click() {\n        // When auto=False the button becomes a link which no longer\n        // requires being updated.\n        if ((!this.model.auto && this._downloadable) || this.anchor_el.hasAttribute(\"disabled\"))\n            return;\n        this._make_link_downloadable();\n        if (!this.model.embed && this.model.auto) {\n            // Temporarily removing the event listener to emulate a click\n            // event on the anchor link which will trigger a download.\n            this.anchor_el.removeEventListener(\"click\", this._click_listener);\n            this.anchor_el.click();\n            // In this case #3 the widget is not a link so these attributes are removed.\n            this.anchor_el.removeAttribute(\"href\");\n            this.anchor_el.removeAttribute(\"download\");\n            this.anchor_el.addEventListener(\"click\", this._click_listener);\n        }\n        // Store the current state for handling changes of the disabled property.\n        this._prev_href = this.anchor_el.getAttribute(\"href\");\n        this._prev_download = this.anchor_el.getAttribute(\"download\");\n    }\n    _make_link_downloadable() {\n        this._update_href();\n        this._update_download();\n        if (this.anchor_el.download && this.anchor_el.href) {\n            this._downloadable = true;\n        }\n    }\n    _update_href() {\n        if (this.model.data) {\n            const blob = dataURItoBlob(this.model.data);\n            this.anchor_el.href = URL.createObjectURL(blob);\n        }\n    }\n    _update_download() {\n        if (this.model.filename) {\n            this.anchor_el.download = this.model.filename;\n        }\n    }\n    _update_label() {\n        this.anchor_el.textContent = this.model.label;\n    }\n    _update_button_style() {\n        const btn_type = buttons[`btn_${this.model.button_type}`];\n        if (!this.button_el.hasAttribute(\"class\")) { // When the widget is rendered.\n            this.button_el.classList.add(buttons.btn);\n            this.button_el.classList.add(btn_type);\n        }\n        else { // When the button type is changed.\n            const prev_button_type = this.anchor_el.classList.item(1);\n            if (prev_button_type)\n                this.button_el.classList.replace(prev_button_type, btn_type);\n        }\n    }\n}\nexports.FileDownloadView = FileDownloadView;\nFileDownloadView.__name__ = \"FileDownloadView\";\nclass FileDownload extends input_widget_1.InputWidget {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.FileDownload = FileDownload;\n_a = FileDownload;\nFileDownload.__name__ = \"FileDownload\";\nFileDownload.__module__ = \"panel.models.widgets\";\n(() => {\n    _a.prototype.default_view = FileDownloadView;\n    _a.define(({ Boolean, Int, Nullable, Ref, String }) => ({\n        auto: [Boolean, false],\n        clicks: [Int, 0],\n        data: [Nullable(String), null],\n        embed: [Boolean, false],\n        icon: [Nullable(Ref(icon_1.Icon)), null],\n        label: [String, \"Download\"],\n        filename: [Nullable(String), null],\n        button_type: [enums_1.ButtonType, \"default\"],\n        _transfers: [Int, 0],\n    }));\n    _a.override({\n        title: \"\",\n    });\n})();\n//# sourceMappingURL=file_download.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"FileDownloadView"},{"type":"named","name":"FileDownload"}],"externals":[],"shims":[]},"code":{"source":"/* models/file_download.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    var _a;\n    const build_views_1 = require(\"@bokehjs/core/build_views\");\n    const enums_1 = require(\"@bokehjs/core/enums\");\n    const input_widget_1 = require(\"@bokehjs/models/widgets/input_widget\");\n    const icon_1 = require(\"@bokehjs/models/ui/icons/icon\");\n    const buttons_css_1 = tslib_1.__importStar(require(\"@bokehjs/styles/buttons.css\")), buttons = buttons_css_1;\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    function dataURItoBlob(dataURI) {\n        // convert base64 to raw binary data held in a string\n        const byteString = atob(dataURI.split(',')[1]);\n        // separate out the mime component\n        const mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n        // write the bytes of the string to an ArrayBuffer\n        const ab = new ArrayBuffer(byteString.length);\n        const ia = new Uint8Array(ab);\n        for (let i = 0; i < byteString.length; i++) {\n            ia[i] = byteString.charCodeAt(i);\n        }\n        // write the ArrayBuffer to a blob, and you're done\n        var bb = new Blob([ab], { type: mimeString });\n        return bb;\n    }\n    class FileDownloadView extends input_widget_1.InputWidgetView {\n        constructor() {\n            super(...arguments);\n            this._downloadable = false;\n            this._prev_href = \"\";\n            this._prev_download = \"\";\n        }\n        *children() {\n            yield* super.children();\n            if (this.icon_view != null)\n                yield this.icon_view;\n        }\n        *controls() {\n            yield this.anchor_el;\n            yield this.button_el;\n        }\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.button_type.change, () => this._update_button_style());\n            this.connect(this.model.properties.filename.change, () => this._update_download());\n            this.connect(this.model.properties._transfers.change, () => this._handle_click());\n            this.connect(this.model.properties.label.change, () => this._update_label());\n        }\n        remove() {\n            if (this.icon_view != null)\n                this.icon_view.remove();\n            super.remove();\n        }\n        async lazy_initialize() {\n            await super.lazy_initialize();\n            const { icon } = this.model;\n            if (icon != null) {\n                this.icon_view = await (0, build_views_1.build_view)(icon, { parent: this });\n            }\n        }\n        render() {\n            super.render();\n            this.group_el.style.display = \"flex\";\n            this.group_el.style.alignItems = \"stretch\";\n            // Create an anchor HTML element that is styled as a bokeh button.\n            // When its 'href' and 'download' attributes are set, it's a downloadable link:\n            // * A click triggers a download\n            // * A right click allows to \"Save as\" the file\n            // There are three main cases:\n            // 1. embed=True: The widget is a download link\n            // 2. auto=False: The widget is first a button and becomes a download link after the first click\n            // 3. auto=True: The widget is a button, i.e right click to \"Save as...\" won't work\n            this.anchor_el = document.createElement('a');\n            this.button_el = (0, dom_1.button)({\n                disabled: this.model.disabled\n            });\n            if (this.icon_view != null) {\n                const separator = this.model.label != \"\" ? (0, dom_1.nbsp)() : (0, dom_1.text)(\"\");\n                (0, dom_1.prepend)(this.button_el, this.icon_view.el, separator);\n                this.icon_view.render();\n            }\n            this._update_button_style();\n            this._update_label();\n            // Changing the disabled property calls render() so it needs to be handled here.\n            // This callback is inherited from ControlView in bokehjs.\n            if (this.model.disabled) {\n                this.anchor_el.setAttribute(\"disabled\", \"\");\n                this._downloadable = false;\n            }\n            else {\n                this.anchor_el.removeAttribute(\"disabled\");\n                // auto=False + toggle Disabled ==> Needs to reset the link as it was.\n                if (this._prev_download)\n                    this.anchor_el.download = this._prev_download;\n                if (this._prev_href)\n                    this.anchor_el.href = this._prev_href;\n                if (this.anchor_el.download && this.anchor_el.download)\n                    this._downloadable = true;\n            }\n            // If embedded the button is just a download link.\n            // Otherwise clicks will be handled by the code itself, allowing for more interactivity.\n            if (this.model.embed)\n                this._make_link_downloadable();\n            else {\n                // Add a \"click\" listener, note that it's not going to\n                // handle right clicks (they won't increment 'clicks')\n                this._click_listener = this._increment_clicks.bind(this);\n                this.anchor_el.addEventListener(\"click\", this._click_listener);\n            }\n            this.button_el.appendChild(this.anchor_el);\n            this.group_el.appendChild(this.button_el);\n        }\n        stylesheets() {\n            return [...super.stylesheets(), buttons_css_1.default];\n        }\n        _increment_clicks() {\n            this.model.clicks = this.model.clicks + 1;\n        }\n        _handle_click() {\n            // When auto=False the button becomes a link which no longer\n            // requires being updated.\n            if ((!this.model.auto && this._downloadable) || this.anchor_el.hasAttribute(\"disabled\"))\n                return;\n            this._make_link_downloadable();\n            if (!this.model.embed && this.model.auto) {\n                // Temporarily removing the event listener to emulate a click\n                // event on the anchor link which will trigger a download.\n                this.anchor_el.removeEventListener(\"click\", this._click_listener);\n                this.anchor_el.click();\n                // In this case #3 the widget is not a link so these attributes are removed.\n                this.anchor_el.removeAttribute(\"href\");\n                this.anchor_el.removeAttribute(\"download\");\n                this.anchor_el.addEventListener(\"click\", this._click_listener);\n            }\n            // Store the current state for handling changes of the disabled property.\n            this._prev_href = this.anchor_el.getAttribute(\"href\");\n            this._prev_download = this.anchor_el.getAttribute(\"download\");\n        }\n        _make_link_downloadable() {\n            this._update_href();\n            this._update_download();\n            if (this.anchor_el.download && this.anchor_el.href) {\n                this._downloadable = true;\n            }\n        }\n        _update_href() {\n            if (this.model.data) {\n                const blob = dataURItoBlob(this.model.data);\n                this.anchor_el.href = URL.createObjectURL(blob);\n            }\n        }\n        _update_download() {\n            if (this.model.filename) {\n                this.anchor_el.download = this.model.filename;\n            }\n        }\n        _update_label() {\n            this.anchor_el.textContent = this.model.label;\n        }\n        _update_button_style() {\n            const btn_type = buttons[`btn_${this.model.button_type}`];\n            if (!this.button_el.hasAttribute(\"class\")) { // When the widget is rendered.\n                this.button_el.classList.add(buttons.btn);\n                this.button_el.classList.add(btn_type);\n            }\n            else { // When the button type is changed.\n                const prev_button_type = this.anchor_el.classList.item(1);\n                if (prev_button_type)\n                    this.button_el.classList.replace(prev_button_type, btn_type);\n            }\n        }\n    }\n    exports.FileDownloadView = FileDownloadView;\n    FileDownloadView.__name__ = \"FileDownloadView\";\n    class FileDownload extends input_widget_1.InputWidget {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.FileDownload = FileDownload;\n    _a = FileDownload;\n    FileDownload.__name__ = \"FileDownload\";\n    FileDownload.__module__ = \"panel.models.widgets\";\n    (() => {\n        _a.prototype.default_view = FileDownloadView;\n        _a.define(({ Boolean, Int, Nullable, Ref, String }) => ({\n            auto: [Boolean, false],\n            clicks: [Int, 0],\n            data: [Nullable(String), null],\n            embed: [Boolean, false],\n            icon: [Nullable(Ref(icon_1.Icon)), null],\n            label: [String, \"Download\"],\n            filename: [Nullable(String), null],\n            button_type: [enums_1.ButtonType, \"default\"],\n            _transfers: [Int, 0],\n        }));\n        _a.override({\n            title: \"\",\n        });\n    })();\n}\n","min_source":"function _(e,t,i,l,s){l();const o=e(\"tslib\");var n;const h=e(\"@bokehjs/core/build_views\"),a=e(\"@bokehjs/core/enums\"),d=e(\"@bokehjs/models/widgets/input_widget\"),_=e(\"@bokehjs/models/ui/icons/icon\"),r=o.__importStar(e(\"@bokehjs/styles/buttons.css\")),c=r,u=e(\"@bokehjs/core/dom\");class b extends d.InputWidgetView{constructor(){super(...arguments),this._downloadable=!1,this._prev_href=\"\",this._prev_download=\"\"}*children(){yield*super.children(),null!=this.icon_view&&(yield this.icon_view)}*controls(){yield this.anchor_el,yield this.button_el}connect_signals(){super.connect_signals(),this.connect(this.model.properties.button_type.change,(()=>this._update_button_style())),this.connect(this.model.properties.filename.change,(()=>this._update_download())),this.connect(this.model.properties._transfers.change,(()=>this._handle_click())),this.connect(this.model.properties.label.change,(()=>this._update_label()))}remove(){null!=this.icon_view&&this.icon_view.remove(),super.remove()}async lazy_initialize(){await super.lazy_initialize();const{icon:e}=this.model;null!=e&&(this.icon_view=await(0,h.build_view)(e,{parent:this}))}render(){if(super.render(),this.group_el.style.display=\"flex\",this.group_el.style.alignItems=\"stretch\",this.anchor_el=document.createElement(\"a\"),this.button_el=(0,u.button)({disabled:this.model.disabled}),null!=this.icon_view){const e=\"\"!=this.model.label?(0,u.nbsp)():(0,u.text)(\"\");(0,u.prepend)(this.button_el,this.icon_view.el,e),this.icon_view.render()}this._update_button_style(),this._update_label(),this.model.disabled?(this.anchor_el.setAttribute(\"disabled\",\"\"),this._downloadable=!1):(this.anchor_el.removeAttribute(\"disabled\"),this._prev_download&&(this.anchor_el.download=this._prev_download),this._prev_href&&(this.anchor_el.href=this._prev_href),this.anchor_el.download&&this.anchor_el.download&&(this._downloadable=!0)),this.model.embed?this._make_link_downloadable():(this._click_listener=this._increment_clicks.bind(this),this.anchor_el.addEventListener(\"click\",this._click_listener)),this.button_el.appendChild(this.anchor_el),this.group_el.appendChild(this.button_el)}stylesheets(){return[...super.stylesheets(),r.default]}_increment_clicks(){this.model.clicks=this.model.clicks+1}_handle_click(){!this.model.auto&&this._downloadable||this.anchor_el.hasAttribute(\"disabled\")||(this._make_link_downloadable(),!this.model.embed&&this.model.auto&&(this.anchor_el.removeEventListener(\"click\",this._click_listener),this.anchor_el.click(),this.anchor_el.removeAttribute(\"href\"),this.anchor_el.removeAttribute(\"download\"),this.anchor_el.addEventListener(\"click\",this._click_listener)),this._prev_href=this.anchor_el.getAttribute(\"href\"),this._prev_download=this.anchor_el.getAttribute(\"download\"))}_make_link_downloadable(){this._update_href(),this._update_download(),this.anchor_el.download&&this.anchor_el.href&&(this._downloadable=!0)}_update_href(){if(this.model.data){const e=function(e){const t=atob(e.split(\",\")[1]),i=e.split(\",\")[0].split(\":\")[1].split(\";\")[0],l=new ArrayBuffer(t.length),s=new Uint8Array(l);for(let e=0;e<t.length;e++)s[e]=t.charCodeAt(e);return new Blob([l],{type:i})}(this.model.data);this.anchor_el.href=URL.createObjectURL(e)}}_update_download(){this.model.filename&&(this.anchor_el.download=this.model.filename)}_update_label(){this.anchor_el.textContent=this.model.label}_update_button_style(){const e=c[`btn_${this.model.button_type}`];if(this.button_el.hasAttribute(\"class\")){const t=this.anchor_el.classList.item(1);t&&this.button_el.classList.replace(t,e)}else this.button_el.classList.add(c.btn),this.button_el.classList.add(e)}}i.FileDownloadView=b,b.__name__=\"FileDownloadView\";class p extends d.InputWidget{constructor(e){super(e)}}i.FileDownload=p,n=p,p.__name__=\"FileDownload\",p.__module__=\"panel.models.widgets\",n.prototype.default_view=b,n.define((({Boolean:e,Int:t,Nullable:i,Ref:l,String:s})=>({auto:[e,!1],clicks:[t,0],data:[i(s),null],embed:[e,!1],icon:[i(l(_.Icon)),null],label:[s,\"Download\"],filename:[i(s),null],button_type:[a.ButtonType,\"default\"],_transfers:[t,0]}))),n.override({title:\"\"})}\n//# sourceMappingURL=file_download.min.js.map","min_map":"{\"version\":3,\"file\":\"file_download.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"tslib_1\",\"_a\",\"build_views_1\",\"enums_1\",\"input_widget_1\",\"icon_1\",\"buttons_css_1\",\"__importStar\",\"buttons\",\"dom_1\",\"FileDownloadView\",\"InputWidgetView\",\"constructor\",\"super\",\"arguments\",\"this\",\"_downloadable\",\"_prev_href\",\"_prev_download\",\"children\",\"icon_view\",\"controls\",\"anchor_el\",\"button_el\",\"connect_signals\",\"connect\",\"model\",\"properties\",\"button_type\",\"change\",\"_update_button_style\",\"filename\",\"_update_download\",\"_transfers\",\"_handle_click\",\"label\",\"_update_label\",\"remove\",\"lazy_initialize\",\"icon\",\"build_view\",\"parent\",\"render\",\"group_el\",\"style\",\"display\",\"alignItems\",\"document\",\"createElement\",\"button\",\"disabled\",\"separator\",\"nbsp\",\"text\",\"prepend\",\"el\",\"setAttribute\",\"removeAttribute\",\"download\",\"href\",\"embed\",\"_make_link_downloadable\",\"_click_listener\",\"_increment_clicks\",\"bind\",\"addEventListener\",\"appendChild\",\"stylesheets\",\"default\",\"clicks\",\"auto\",\"hasAttribute\",\"removeEventListener\",\"click\",\"getAttribute\",\"_update_href\",\"data\",\"blob\",\"dataURI\",\"byteString\",\"atob\",\"split\",\"mimeString\",\"ab\",\"ArrayBuffer\",\"length\",\"ia\",\"Uint8Array\",\"i\",\"charCodeAt\",\"Blob\",\"type\",\"dataURItoBlob\",\"URL\",\"createObjectURL\",\"textContent\",\"btn_type\",\"prev_button_type\",\"classList\",\"item\",\"replace\",\"add\",\"btn\",\"__name__\",\"FileDownload\",\"InputWidget\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Boolean\",\"Int\",\"Nullable\",\"Ref\",\"String\",\"Icon\",\"ButtonType\",\"override\",\"title\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/html.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/html.js","canonical":"models/html","resolution":"ESM","id":"3db2e41978","hash":"3db2e41978b8f850b5df169475a4ea18d8c644dbcf877dedff85377fb346c0b5","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HTML = exports.HTMLView = exports.runScripts = exports.htmlDecode = exports.DOMEvent = void 0;\nvar _a, _b;\nconst bokeh_events_1 = require(\"@bokehjs/core/bokeh_events\");\nconst markup_1 = require(\"@bokehjs/models/widgets/markup\");\nconst layout_1 = require(\"./layout\");\nconst event_to_object_1 = require(\"./event-to-object\");\nclass DOMEvent extends bokeh_events_1.ModelEvent {\n    constructor(node, data) {\n        super();\n        this.node = node;\n        this.data = data;\n    }\n    get event_values() {\n        return { model: this.origin, node: this.node, data: this.data };\n    }\n}\nexports.DOMEvent = DOMEvent;\n_a = DOMEvent;\nDOMEvent.__name__ = \"DOMEvent\";\n(() => {\n    _a.prototype.event_name = \"dom_event\";\n})();\nfunction htmlDecode(input) {\n    var doc = new DOMParser().parseFromString(input, \"text/html\");\n    return doc.documentElement.textContent;\n}\nexports.htmlDecode = htmlDecode;\nfunction runScripts(node) {\n    Array.from(node.querySelectorAll(\"script\")).forEach((oldScript) => {\n        const newScript = document.createElement(\"script\");\n        Array.from(oldScript.attributes)\n            .forEach((attr) => newScript.setAttribute(attr.name, attr.value));\n        newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n        if (oldScript.parentNode)\n            oldScript.parentNode.replaceChild(newScript, oldScript);\n    });\n}\nexports.runScripts = runScripts;\nclass HTMLView extends layout_1.PanelMarkupView {\n    constructor() {\n        super(...arguments);\n        this._event_listeners = {};\n    }\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.text.change, () => {\n            const html = this.process_tex();\n            this.set_html(html);\n        });\n        this.connect(this.model.properties.visible.change, () => {\n            if (this.model.visible)\n                this.container.style.visibility = 'visible';\n        });\n        this.connect(this.model.properties.events.change, () => {\n            this._remove_event_listeners();\n            this._setup_event_listeners();\n        });\n    }\n    rerender() {\n        this.render();\n        this.invalidate_layout();\n    }\n    set_html(html) {\n        if (html) {\n            this.container.innerHTML = html;\n            if (this.model.run_scripts)\n                runScripts(this.container);\n            this._setup_event_listeners();\n        }\n    }\n    render() {\n        super.render();\n        this.container.style.visibility = 'hidden';\n        this.shadow_el.appendChild(this.container);\n        if (this.provider.status == \"failed\" || this.provider.status == \"loaded\")\n            this._has_finished = true;\n        const html = this.process_tex();\n        this.watch_stylesheets();\n        this.set_html(html);\n    }\n    style_redraw() {\n        if (this.model.visible)\n            this.container.style.visibility = 'visible';\n    }\n    process_tex() {\n        const decoded = htmlDecode(this.model.text);\n        const text = decoded || this.model.text;\n        if (this.model.disable_math || !this.contains_tex(text))\n            return text;\n        const tex_parts = this.provider.MathJax.find_tex(text);\n        const processed_text = [];\n        let last_index = 0;\n        for (const part of tex_parts) {\n            processed_text.push(text.slice(last_index, part.start.n));\n            processed_text.push(this.provider.MathJax.tex2svg(part.math, { display: part.display }).outerHTML);\n            last_index = part.end.n;\n        }\n        if (last_index < text.length)\n            processed_text.push(text.slice(last_index));\n        return processed_text.join(\"\");\n    }\n    contains_tex(html) {\n        if (!this.provider.MathJax)\n            return false;\n        return this.provider.MathJax.find_tex(html).length > 0;\n    }\n    _remove_event_listeners() {\n        for (const node in this._event_listeners) {\n            const el = document.getElementById(node);\n            if (el == null) {\n                console.warn(`DOM node '${node}' could not be found. Cannot subscribe to DOM events.`);\n                continue;\n            }\n            for (const event_name in this._event_listeners[node]) {\n                const event_callback = this._event_listeners[node][event_name];\n                el.removeEventListener(event_name, event_callback);\n            }\n        }\n        this._event_listeners = {};\n    }\n    _setup_event_listeners() {\n        for (const node in this.model.events) {\n            const el = document.getElementById(node);\n            if (el == null) {\n                console.warn(`DOM node '${node}' could not be found. Cannot subscribe to DOM events.`);\n                continue;\n            }\n            for (const event_name of this.model.events[node]) {\n                const callback = (event) => {\n                    this.model.trigger_event(new DOMEvent(node, (0, event_to_object_1.serializeEvent)(event)));\n                };\n                el.addEventListener(event_name, callback);\n                if (!(node in this._event_listeners))\n                    this._event_listeners[node] = {};\n                this._event_listeners[node][event_name] = callback;\n            }\n        }\n    }\n}\nexports.HTMLView = HTMLView;\nHTMLView.__name__ = \"HTMLView\";\nclass HTML extends markup_1.Markup {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.HTML = HTML;\n_b = HTML;\nHTML.__name__ = \"HTML\";\nHTML.__module__ = \"panel.models.markup\";\n(() => {\n    _b.prototype.default_view = HTMLView;\n    _b.define(({ Any, Boolean }) => ({\n        events: [Any, {}],\n        run_scripts: [Boolean, true]\n    }));\n})();\n//# sourceMappingURL=html.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"],["./event-to-object","/croot/panel_1706539561184/work/panel/dist/lib/models/event-to-object.js"]],"dependency_map":[],"exported":[{"type":"named","name":"DOMEvent"},{"type":"named","name":"htmlDecode"},{"type":"named","name":"runScripts"},{"type":"named","name":"HTMLView"},{"type":"named","name":"HTML"}],"externals":[],"shims":[]},"code":{"source":"/* models/html.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a, _b;\n    const bokeh_events_1 = require(\"@bokehjs/core/bokeh_events\");\n    const markup_1 = require(\"@bokehjs/models/widgets/markup\");\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    const event_to_object_1 = require(\"490942d778\") /* ./event-to-object */;\n    class DOMEvent extends bokeh_events_1.ModelEvent {\n        constructor(node, data) {\n            super();\n            this.node = node;\n            this.data = data;\n        }\n        get event_values() {\n            return { model: this.origin, node: this.node, data: this.data };\n        }\n    }\n    exports.DOMEvent = DOMEvent;\n    _a = DOMEvent;\n    DOMEvent.__name__ = \"DOMEvent\";\n    (() => {\n        _a.prototype.event_name = \"dom_event\";\n    })();\n    function htmlDecode(input) {\n        var doc = new DOMParser().parseFromString(input, \"text/html\");\n        return doc.documentElement.textContent;\n    }\n    exports.htmlDecode = htmlDecode;\n    function runScripts(node) {\n        Array.from(node.querySelectorAll(\"script\")).forEach((oldScript) => {\n            const newScript = document.createElement(\"script\");\n            Array.from(oldScript.attributes)\n                .forEach((attr) => newScript.setAttribute(attr.name, attr.value));\n            newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n            if (oldScript.parentNode)\n                oldScript.parentNode.replaceChild(newScript, oldScript);\n        });\n    }\n    exports.runScripts = runScripts;\n    class HTMLView extends layout_1.PanelMarkupView {\n        constructor() {\n            super(...arguments);\n            this._event_listeners = {};\n        }\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.text.change, () => {\n                const html = this.process_tex();\n                this.set_html(html);\n            });\n            this.connect(this.model.properties.visible.change, () => {\n                if (this.model.visible)\n                    this.container.style.visibility = 'visible';\n            });\n            this.connect(this.model.properties.events.change, () => {\n                this._remove_event_listeners();\n                this._setup_event_listeners();\n            });\n        }\n        rerender() {\n            this.render();\n            this.invalidate_layout();\n        }\n        set_html(html) {\n            if (html) {\n                this.container.innerHTML = html;\n                if (this.model.run_scripts)\n                    runScripts(this.container);\n                this._setup_event_listeners();\n            }\n        }\n        render() {\n            super.render();\n            this.container.style.visibility = 'hidden';\n            this.shadow_el.appendChild(this.container);\n            if (this.provider.status == \"failed\" || this.provider.status == \"loaded\")\n                this._has_finished = true;\n            const html = this.process_tex();\n            this.watch_stylesheets();\n            this.set_html(html);\n        }\n        style_redraw() {\n            if (this.model.visible)\n                this.container.style.visibility = 'visible';\n        }\n        process_tex() {\n            const decoded = htmlDecode(this.model.text);\n            const text = decoded || this.model.text;\n            if (this.model.disable_math || !this.contains_tex(text))\n                return text;\n            const tex_parts = this.provider.MathJax.find_tex(text);\n            const processed_text = [];\n            let last_index = 0;\n            for (const part of tex_parts) {\n                processed_text.push(text.slice(last_index, part.start.n));\n                processed_text.push(this.provider.MathJax.tex2svg(part.math, { display: part.display }).outerHTML);\n                last_index = part.end.n;\n            }\n            if (last_index < text.length)\n                processed_text.push(text.slice(last_index));\n            return processed_text.join(\"\");\n        }\n        contains_tex(html) {\n            if (!this.provider.MathJax)\n                return false;\n            return this.provider.MathJax.find_tex(html).length > 0;\n        }\n        _remove_event_listeners() {\n            for (const node in this._event_listeners) {\n                const el = document.getElementById(node);\n                if (el == null) {\n                    console.warn(`DOM node '${node}' could not be found. Cannot subscribe to DOM events.`);\n                    continue;\n                }\n                for (const event_name in this._event_listeners[node]) {\n                    const event_callback = this._event_listeners[node][event_name];\n                    el.removeEventListener(event_name, event_callback);\n                }\n            }\n            this._event_listeners = {};\n        }\n        _setup_event_listeners() {\n            for (const node in this.model.events) {\n                const el = document.getElementById(node);\n                if (el == null) {\n                    console.warn(`DOM node '${node}' could not be found. Cannot subscribe to DOM events.`);\n                    continue;\n                }\n                for (const event_name of this.model.events[node]) {\n                    const callback = (event) => {\n                        this.model.trigger_event(new DOMEvent(node, (0, event_to_object_1.serializeEvent)(event)));\n                    };\n                    el.addEventListener(event_name, callback);\n                    if (!(node in this._event_listeners))\n                        this._event_listeners[node] = {};\n                    this._event_listeners[node][event_name] = callback;\n                }\n            }\n        }\n    }\n    exports.HTMLView = HTMLView;\n    HTMLView.__name__ = \"HTMLView\";\n    class HTML extends markup_1.Markup {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.HTML = HTML;\n    _b = HTML;\n    HTML.__name__ = \"HTML\";\n    HTML.__module__ = \"panel.models.markup\";\n    (() => {\n        _b.prototype.default_view = HTMLView;\n        _b.define(({ Any, Boolean }) => ({\n            events: [Any, {}],\n            run_scripts: [Boolean, true]\n        }));\n    })();\n}\n","min_source":"function _(e,t,s,n,i){var r,o;n();const l=e(\"@bokehjs/core/bokeh_events\"),h=e(\"@bokehjs/models/widgets/markup\"),a=e(\"cac5f3ed28\"),d=e(\"490942d778\");class c extends l.ModelEvent{constructor(e,t){super(),this.node=e,this.data=t}get event_values(){return{model:this.origin,node:this.node,data:this.data}}}function _(e){return(new DOMParser).parseFromString(e,\"text/html\").documentElement.textContent}function u(e){Array.from(e.querySelectorAll(\"script\")).forEach((e=>{const t=document.createElement(\"script\");Array.from(e.attributes).forEach((e=>t.setAttribute(e.name,e.value))),t.appendChild(document.createTextNode(e.innerHTML)),e.parentNode&&e.parentNode.replaceChild(t,e)}))}s.DOMEvent=c,r=c,c.__name__=\"DOMEvent\",r.prototype.event_name=\"dom_event\",s.htmlDecode=_,s.runScripts=u;class v extends a.PanelMarkupView{constructor(){super(...arguments),this._event_listeners={}}connect_signals(){super.connect_signals(),this.connect(this.model.properties.text.change,(()=>{const e=this.process_tex();this.set_html(e)})),this.connect(this.model.properties.visible.change,(()=>{this.model.visible&&(this.container.style.visibility=\"visible\")})),this.connect(this.model.properties.events.change,(()=>{this._remove_event_listeners(),this._setup_event_listeners()}))}rerender(){this.render(),this.invalidate_layout()}set_html(e){e&&(this.container.innerHTML=e,this.model.run_scripts&&u(this.container),this._setup_event_listeners())}render(){super.render(),this.container.style.visibility=\"hidden\",this.shadow_el.appendChild(this.container),\"failed\"!=this.provider.status&&\"loaded\"!=this.provider.status||(this._has_finished=!0);const e=this.process_tex();this.watch_stylesheets(),this.set_html(e)}style_redraw(){this.model.visible&&(this.container.style.visibility=\"visible\")}process_tex(){const e=_(this.model.text)||this.model.text;if(this.model.disable_math||!this.contains_tex(e))return e;const t=this.provider.MathJax.find_tex(e),s=[];let n=0;for(const i of t)s.push(e.slice(n,i.start.n)),s.push(this.provider.MathJax.tex2svg(i.math,{display:i.display}).outerHTML),n=i.end.n;return n<e.length&&s.push(e.slice(n)),s.join(\"\")}contains_tex(e){return!!this.provider.MathJax&&this.provider.MathJax.find_tex(e).length>0}_remove_event_listeners(){for(const e in this._event_listeners){const t=document.getElementById(e);if(null!=t)for(const s in this._event_listeners[e]){const n=this._event_listeners[e][s];t.removeEventListener(s,n)}else console.warn(`DOM node '${e}' could not be found. Cannot subscribe to DOM events.`)}this._event_listeners={}}_setup_event_listeners(){for(const e in this.model.events){const t=document.getElementById(e);if(null!=t)for(const s of this.model.events[e]){const n=t=>{this.model.trigger_event(new c(e,(0,d.serializeEvent)(t)))};t.addEventListener(s,n),e in this._event_listeners||(this._event_listeners[e]={}),this._event_listeners[e][s]=n}else console.warn(`DOM node '${e}' could not be found. Cannot subscribe to DOM events.`)}}}s.HTMLView=v,v.__name__=\"HTMLView\";class p extends h.Markup{constructor(e){super(e)}}s.HTML=p,o=p,p.__name__=\"HTML\",p.__module__=\"panel.models.markup\",o.prototype.default_view=v,o.define((({Any:e,Boolean:t})=>({events:[e,{}],run_scripts:[t,!0]})))}\n//# sourceMappingURL=html.min.js.map","min_map":"{\"version\":3,\"file\":\"html.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"_b\",\"bokeh_events_1\",\"markup_1\",\"layout_1\",\"event_to_object_1\",\"DOMEvent\",\"ModelEvent\",\"constructor\",\"node\",\"data\",\"super\",\"this\",\"event_values\",\"model\",\"origin\",\"htmlDecode\",\"input\",\"DOMParser\",\"parseFromString\",\"documentElement\",\"textContent\",\"runScripts\",\"Array\",\"from\",\"querySelectorAll\",\"forEach\",\"oldScript\",\"newScript\",\"document\",\"createElement\",\"attributes\",\"attr\",\"setAttribute\",\"name\",\"value\",\"appendChild\",\"createTextNode\",\"innerHTML\",\"parentNode\",\"replaceChild\",\"__name__\",\"prototype\",\"event_name\",\"HTMLView\",\"PanelMarkupView\",\"arguments\",\"_event_listeners\",\"connect_signals\",\"connect\",\"properties\",\"text\",\"change\",\"html\",\"process_tex\",\"set_html\",\"visible\",\"container\",\"style\",\"visibility\",\"events\",\"_remove_event_listeners\",\"_setup_event_listeners\",\"rerender\",\"render\",\"invalidate_layout\",\"run_scripts\",\"shadow_el\",\"provider\",\"status\",\"_has_finished\",\"watch_stylesheets\",\"style_redraw\",\"disable_math\",\"contains_tex\",\"tex_parts\",\"MathJax\",\"find_tex\",\"processed_text\",\"last_index\",\"part\",\"push\",\"slice\",\"start\",\"n\",\"tex2svg\",\"math\",\"display\",\"outerHTML\",\"end\",\"length\",\"join\",\"el\",\"getElementById\",\"event_callback\",\"removeEventListener\",\"console\",\"warn\",\"callback\",\"event\",\"trigger_event\",\"serializeEvent\",\"addEventListener\",\"HTML\",\"Markup\",\"attrs\",\"__module__\",\"default_view\",\"define\",\"Any\",\"Boolean\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/ipywidget.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/ipywidget.js","canonical":"models/ipywidget","resolution":"ESM","id":"4dfd782539","hash":"4dfd7825397d7fa8db87f2c87607bb84b628a49ce8709a82789728948ccf4736","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IPyWidget = exports.IPyWidgetView = void 0;\nvar _a;\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst layout_1 = require(\"./layout\");\nconst Jupyter = window.Jupyter;\nclass IPyWidgetView extends layout_1.HTMLBoxView {\n    initialize() {\n        super.initialize();\n        let manager;\n        if ((Jupyter != null) && (Jupyter.notebook != null))\n            manager = Jupyter.notebook.kernel.widget_manager;\n        else if (window.PyViz.widget_manager != null)\n            manager = window.PyViz.widget_manager;\n        else {\n            console.warn(\"Panel IPyWidget model could not find a WidgetManager\");\n            return;\n        }\n        this.manager = manager;\n        this.ipychildren = [];\n    }\n    remove() {\n        this.ipyview.remove();\n        super.remove();\n    }\n    _ipy_stylesheets() {\n        const stylesheets = [];\n        for (const child of document.head.children) {\n            if (child instanceof HTMLStyleElement) {\n                const raw_css = child.textContent;\n                if (raw_css != null) {\n                    const css = raw_css.replace(/:root/g, \":host\");\n                    stylesheets.push(new dom_1.InlineStyleSheet(css));\n                }\n            }\n        }\n        return stylesheets;\n    }\n    stylesheets() {\n        return [...super.stylesheets(), ...this._ipy_stylesheets()];\n    }\n    render() {\n        super.render();\n        const { spec, state } = this.model.bundle;\n        this.manager.set_state(state).then(async (models) => {\n            const model = models.find((item) => item.model_id == spec.model_id);\n            if (model == null)\n                return;\n            const view = await this.manager.create_view(model, { el: this.el });\n            this.ipyview = view;\n            this.ipychildren = [];\n            if (view.children_views) {\n                for (const child of view.children_views.views)\n                    this.ipychildren.push(await child);\n            }\n            this.shadow_el.appendChild(this.ipyview.el);\n            this.ipyview.trigger('displayed', this.ipyview);\n            for (const child of this.ipychildren)\n                child.trigger('displayed', child);\n            this.invalidate_layout();\n        });\n    }\n}\nexports.IPyWidgetView = IPyWidgetView;\nIPyWidgetView.__name__ = \"IPyWidgetView\";\nclass IPyWidget extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.IPyWidget = IPyWidget;\n_a = IPyWidget;\nIPyWidget.__name__ = \"IPyWidget\";\nIPyWidget.__module__ = \"panel.models.ipywidget\";\n(() => {\n    _a.prototype.default_view = IPyWidgetView;\n    _a.define(({ Any }) => ({\n        bundle: [Any, {}],\n    }));\n})();\n//# sourceMappingURL=ipywidget.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"IPyWidgetView"},{"type":"named","name":"IPyWidget"}],"externals":[],"shims":[]},"code":{"source":"/* models/ipywidget.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    const Jupyter = window.Jupyter;\n    class IPyWidgetView extends layout_1.HTMLBoxView {\n        initialize() {\n            super.initialize();\n            let manager;\n            if ((Jupyter != null) && (Jupyter.notebook != null))\n                manager = Jupyter.notebook.kernel.widget_manager;\n            else if (window.PyViz.widget_manager != null)\n                manager = window.PyViz.widget_manager;\n            else {\n                console.warn(\"Panel IPyWidget model could not find a WidgetManager\");\n                return;\n            }\n            this.manager = manager;\n            this.ipychildren = [];\n        }\n        remove() {\n            this.ipyview.remove();\n            super.remove();\n        }\n        _ipy_stylesheets() {\n            const stylesheets = [];\n            for (const child of document.head.children) {\n                if (child instanceof HTMLStyleElement) {\n                    const raw_css = child.textContent;\n                    if (raw_css != null) {\n                        const css = raw_css.replace(/:root/g, \":host\");\n                        stylesheets.push(new dom_1.InlineStyleSheet(css));\n                    }\n                }\n            }\n            return stylesheets;\n        }\n        stylesheets() {\n            return [...super.stylesheets(), ...this._ipy_stylesheets()];\n        }\n        render() {\n            super.render();\n            const { spec, state } = this.model.bundle;\n            this.manager.set_state(state).then(async (models) => {\n                const model = models.find((item) => item.model_id == spec.model_id);\n                if (model == null)\n                    return;\n                const view = await this.manager.create_view(model, { el: this.el });\n                this.ipyview = view;\n                this.ipychildren = [];\n                if (view.children_views) {\n                    for (const child of view.children_views.views)\n                        this.ipychildren.push(await child);\n                }\n                this.shadow_el.appendChild(this.ipyview.el);\n                this.ipyview.trigger('displayed', this.ipyview);\n                for (const child of this.ipychildren)\n                    child.trigger('displayed', child);\n                this.invalidate_layout();\n            });\n        }\n    }\n    exports.IPyWidgetView = IPyWidgetView;\n    IPyWidgetView.__name__ = \"IPyWidgetView\";\n    class IPyWidget extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.IPyWidget = IPyWidget;\n    _a = IPyWidget;\n    IPyWidget.__name__ = \"IPyWidget\";\n    IPyWidget.__module__ = \"panel.models.ipywidget\";\n    (() => {\n        _a.prototype.default_view = IPyWidgetView;\n        _a.define(({ Any }) => ({\n            bundle: [Any, {}],\n        }));\n    })();\n}\n","min_source":"function _(e,i,t,n,s){var o;n();const l=e(\"@bokehjs/core/dom\"),d=e(\"cac5f3ed28\"),r=window.Jupyter;class a extends d.HTMLBoxView{initialize(){let e;if(super.initialize(),null!=r&&null!=r.notebook)e=r.notebook.kernel.widget_manager;else{if(null==window.PyViz.widget_manager)return void console.warn(\"Panel IPyWidget model could not find a WidgetManager\");e=window.PyViz.widget_manager}this.manager=e,this.ipychildren=[]}remove(){this.ipyview.remove(),super.remove()}_ipy_stylesheets(){const e=[];for(const i of document.head.children)if(i instanceof HTMLStyleElement){const t=i.textContent;if(null!=t){const i=t.replace(/:root/g,\":host\");e.push(new l.InlineStyleSheet(i))}}return e}stylesheets(){return[...super.stylesheets(),...this._ipy_stylesheets()]}render(){super.render();const{spec:e,state:i}=this.model.bundle;this.manager.set_state(i).then((async i=>{const t=i.find((i=>i.model_id==e.model_id));if(null==t)return;const n=await this.manager.create_view(t,{el:this.el});if(this.ipyview=n,this.ipychildren=[],n.children_views)for(const e of n.children_views.views)this.ipychildren.push(await e);this.shadow_el.appendChild(this.ipyview.el),this.ipyview.trigger(\"displayed\",this.ipyview);for(const e of this.ipychildren)e.trigger(\"displayed\",e);this.invalidate_layout()}))}}t.IPyWidgetView=a,a.__name__=\"IPyWidgetView\";class h extends d.HTMLBox{constructor(e){super(e)}}t.IPyWidget=h,o=h,h.__name__=\"IPyWidget\",h.__module__=\"panel.models.ipywidget\",o.prototype.default_view=a,o.define((({Any:e})=>({bundle:[e,{}]})))}\n//# sourceMappingURL=ipywidget.min.js.map","min_map":"{\"version\":3,\"file\":\"ipywidget.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"dom_1\",\"layout_1\",\"Jupyter\",\"window\",\"IPyWidgetView\",\"HTMLBoxView\",\"initialize\",\"manager\",\"super\",\"notebook\",\"kernel\",\"widget_manager\",\"PyViz\",\"console\",\"warn\",\"this\",\"ipychildren\",\"remove\",\"ipyview\",\"_ipy_stylesheets\",\"stylesheets\",\"child\",\"document\",\"head\",\"children\",\"HTMLStyleElement\",\"raw_css\",\"textContent\",\"css\",\"replace\",\"push\",\"InlineStyleSheet\",\"render\",\"spec\",\"state\",\"model\",\"bundle\",\"set_state\",\"then\",\"async\",\"models\",\"find\",\"item\",\"model_id\",\"view\",\"create_view\",\"el\",\"children_views\",\"views\",\"shadow_el\",\"appendChild\",\"trigger\",\"invalidate_layout\",\"__name__\",\"IPyWidget\",\"HTMLBox\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Any\"],\"sources\":[\"0\"],\"mappings\":\"AAA0B,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAEvE,IAAIC,EADJF,IAEA,MAAMG,EAAQN,EAAQ,qBAChBO,EAAWP,EAAQ,cACnBQ,EAAUC,OAAOD,QACvB,MAAME,UAAsBH,EAASI,YACjC,UAAAC,GAEI,IAAIC,EACJ,GAFAC,MAAMF,aAEU,MAAXJ,GAAyC,MAApBA,EAAQO,SAC9BF,EAAUL,EAAQO,SAASC,OAAOC,mBACjC,IAAmC,MAA/BR,OAAOS,MAAMD,eAIlB,YADAE,QAAQC,KAAK,wDAFbP,EAAUJ,OAAOS,MAAMD,cAI3B,CACAI,KAAKR,QAAUA,EACfQ,KAAKC,YAAc,EACvB,CACA,MAAAC,GACIF,KAAKG,QAAQD,SACbT,MAAMS,QACV,CACA,gBAAAE,GACI,MAAMC,EAAc,GACpB,IAAK,MAAMC,KAASC,SAASC,KAAKC,SAC9B,GAAIH,aAAiBI,iBAAkB,CACnC,MAAMC,EAAUL,EAAMM,YACtB,GAAe,MAAXD,EAAiB,CACjB,MAAME,EAAMF,EAAQG,QAAQ,SAAU,SACtCT,EAAYU,KAAK,IAAI9B,EAAM+B,iBAAiBH,GAChD,CACJ,CAEJ,OAAOR,CACX,CACA,WAAAA,GACI,MAAO,IAAIZ,MAAMY,iBAAkBL,KAAKI,mBAC5C,CACA,MAAAa,GACIxB,MAAMwB,SACN,MAAMC,KAAEA,EAAIC,MAAEA,GAAUnB,KAAKoB,MAAMC,OACnCrB,KAAKR,QAAQ8B,UAAUH,GAAOI,MAAKC,MAAOC,IACtC,MAAML,EAAQK,EAAOC,MAAMC,GAASA,EAAKC,UAAYV,EAAKU,WAC1D,GAAa,MAATR,EACA,OACJ,MAAMS,QAAa7B,KAAKR,QAAQsC,YAAYV,EAAO,CAAEW,GAAI/B,KAAK+B,KAG9D,GAFA/B,KAAKG,QAAU0B,EACf7B,KAAKC,YAAc,GACf4B,EAAKG,eACL,IAAK,MAAM1B,KAASuB,EAAKG,eAAeC,MACpCjC,KAAKC,YAAYc,WAAWT,GAEpCN,KAAKkC,UAAUC,YAAYnC,KAAKG,QAAQ4B,IACxC/B,KAAKG,QAAQiC,QAAQ,YAAapC,KAAKG,SACvC,IAAK,MAAMG,KAASN,KAAKC,YACrBK,EAAM8B,QAAQ,YAAa9B,GAC/BN,KAAKqC,mBAAmB,GAEhC,EAEJxD,EAAQQ,cAAgBA,EACxBA,EAAciD,SAAW,gBACzB,MAAMC,UAAkBrD,EAASsD,QAC7B,WAAAC,CAAYC,GACRjD,MAAMiD,EACV,EAEJ7D,EAAQ0D,UAAYA,EACpBvD,EAAKuD,EACLA,EAAUD,SAAW,YACrBC,EAAUI,WAAa,yBAEnB3D,EAAG4D,UAAUC,aAAexD,EAC5BL,EAAG8D,QAAO,EAAGC,UAAU,CACnB1B,OAAQ,CAAC0B,EAAK,CAAC,MAG3B\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/json.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/json.js","canonical":"models/json","resolution":"ESM","id":"e954d48822","hash":"e954d48822f5da43c2089d4aa48ad914109ac7cfafa33059c1a8a7bba6850d46","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSON = exports.JSONTheme = exports.JSONView = void 0;\nconst tslib_1 = require(\"tslib\");\nvar _a;\nconst kinds_1 = require(\"@bokehjs/core/kinds\");\nconst markup_1 = require(\"@bokehjs/models/widgets/markup\");\nconst json_formatter_js_1 = tslib_1.__importDefault(require(\"json-formatter-js\"));\nconst layout_1 = require(\"./layout\");\nclass JSONView extends layout_1.PanelMarkupView {\n    connect_signals() {\n        super.connect_signals();\n        const { depth, hover_preview, text, theme } = this.model.properties;\n        this.on_change([depth, hover_preview, text, theme], () => this.render());\n    }\n    render() {\n        super.render();\n        const text = this.model.text.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\n        let json;\n        try {\n            json = window.JSON.parse(text);\n        }\n        catch (err) {\n            this.container.innerHTML = \"<b>Invalid JSON:</b> \" + err.toString();\n            return;\n        }\n        const config = { hoverPreviewEnabled: this.model.hover_preview, theme: this.model.theme };\n        const depth = this.model.depth == null ? Infinity : this.model.depth;\n        const formatter = new json_formatter_js_1.default(json, depth, config);\n        const rendered = formatter.render();\n        let style = \"border-radius: 5px; padding: 10px; width: 100%; height: 100%;\";\n        if (this.model.theme == \"dark\")\n            rendered.style.cssText = \"background-color: rgb(30, 30, 30);\" + style;\n        else\n            rendered.style.cssText = style;\n        this.container.append(rendered);\n    }\n}\nexports.JSONView = JSONView;\nJSONView.__name__ = \"JSONView\";\nexports.JSONTheme = (0, kinds_1.Enum)(\"dark\", \"light\");\nclass JSON extends markup_1.Markup {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.JSON = JSON;\n_a = JSON;\nJSON.__name__ = \"JSON\";\nJSON.__module__ = \"panel.models.markup\";\n(() => {\n    _a.prototype.default_view = JSONView;\n    _a.define(({ Array, Boolean, Int, Nullable, String }) => ({\n        css: [Array(String), []],\n        depth: [Nullable(Int), 1],\n        hover_preview: [Boolean, false],\n        theme: [exports.JSONTheme, \"dark\"],\n    }));\n})();\n//# sourceMappingURL=json.js.map\n","type":"js","dependency_paths":[["json-formatter-js","/croot/panel_1706539561184/work/panel/node_modules/json-formatter-js/dist/json-formatter.esm.js"],["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"JSONView"},{"type":"named","name":"JSON"}],"externals":[],"shims":[]},"code":{"source":"/* models/json.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    var _a;\n    const kinds_1 = require(\"@bokehjs/core/kinds\");\n    const markup_1 = require(\"@bokehjs/models/widgets/markup\");\n    const json_formatter_js_1 = tslib_1.__importDefault(require(\"18bba7b7e1\") /* json-formatter-js */);\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    class JSONView extends layout_1.PanelMarkupView {\n        connect_signals() {\n            super.connect_signals();\n            const { depth, hover_preview, text, theme } = this.model.properties;\n            this.on_change([depth, hover_preview, text, theme], () => this.render());\n        }\n        render() {\n            super.render();\n            const text = this.model.text.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\n            let json;\n            try {\n                json = window.JSON.parse(text);\n            }\n            catch (err) {\n                this.container.innerHTML = \"<b>Invalid JSON:</b> \" + err.toString();\n                return;\n            }\n            const config = { hoverPreviewEnabled: this.model.hover_preview, theme: this.model.theme };\n            const depth = this.model.depth == null ? Infinity : this.model.depth;\n            const formatter = new json_formatter_js_1.default(json, depth, config);\n            const rendered = formatter.render();\n            let style = \"border-radius: 5px; padding: 10px; width: 100%; height: 100%;\";\n            if (this.model.theme == \"dark\")\n                rendered.style.cssText = \"background-color: rgb(30, 30, 30);\" + style;\n            else\n                rendered.style.cssText = style;\n            this.container.append(rendered);\n        }\n    }\n    exports.JSONView = JSONView;\n    JSONView.__name__ = \"JSONView\";\n    exports.JSONTheme = (0, kinds_1.Enum)(\"dark\", \"light\");\n    class JSON extends markup_1.Markup {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.JSON = JSON;\n    _a = JSON;\n    JSON.__name__ = \"JSON\";\n    JSON.__module__ = \"panel.models.markup\";\n    (() => {\n        _a.prototype.default_view = JSONView;\n        _a.define(({ Array, Boolean, Int, Nullable, String }) => ({\n            css: [Array(String), []],\n            depth: [Nullable(Int), 1],\n            hover_preview: [Boolean, false],\n            theme: [exports.JSONTheme, \"dark\"],\n        }));\n    })();\n}\n","min_source":"function _(e,t,r,n,s){n();const o=e(\"tslib\");var i;const d=e(\"@bokehjs/core/kinds\"),a=e(\"@bokehjs/models/widgets/markup\"),l=o.__importDefault(e(\"18bba7b7e1\")),h=e(\"cac5f3ed28\");class c extends h.PanelMarkupView{connect_signals(){super.connect_signals();const{depth:e,hover_preview:t,text:r,theme:n}=this.model.properties;this.on_change([e,t,r,n],(()=>this.render()))}render(){super.render();const e=this.model.text.replace(/(\\r\\n|\\n|\\r)/gm,\"\");let t;try{t=window.JSON.parse(e)}catch(e){return void(this.container.innerHTML=\"<b>Invalid JSON:</b> \"+e.toString())}const r={hoverPreviewEnabled:this.model.hover_preview,theme:this.model.theme},n=null==this.model.depth?1/0:this.model.depth,s=new l.default(t,n,r).render();let o=\"border-radius: 5px; padding: 10px; width: 100%; height: 100%;\";\"dark\"==this.model.theme?s.style.cssText=\"background-color: rgb(30, 30, 30);\"+o:s.style.cssText=o,this.container.append(s)}}r.JSONView=c,c.__name__=\"JSONView\",r.JSONTheme=(0,d.Enum)(\"dark\",\"light\");class p extends a.Markup{constructor(e){super(e)}}r.JSON=p,i=p,p.__name__=\"JSON\",p.__module__=\"panel.models.markup\",i.prototype.default_view=c,i.define((({Array:e,Boolean:t,Int:n,Nullable:s,String:o})=>({css:[e(o),[]],depth:[s(n),1],hover_preview:[t,!1],theme:[r.JSONTheme,\"dark\"]})))}\n//# sourceMappingURL=json.min.js.map","min_map":"{\"version\":3,\"file\":\"json.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"tslib_1\",\"_a\",\"kinds_1\",\"markup_1\",\"json_formatter_js_1\",\"__importDefault\",\"layout_1\",\"JSONView\",\"PanelMarkupView\",\"connect_signals\",\"super\",\"depth\",\"hover_preview\",\"text\",\"theme\",\"this\",\"model\",\"properties\",\"on_change\",\"render\",\"replace\",\"json\",\"window\",\"JSON\",\"parse\",\"err\",\"container\",\"innerHTML\",\"toString\",\"config\",\"hoverPreviewEnabled\",\"Infinity\",\"rendered\",\"default\",\"style\",\"cssText\",\"append\",\"__name__\",\"JSONTheme\",\"Enum\",\"Markup\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Array\",\"Boolean\",\"Int\",\"Nullable\",\"String\",\"css\"],\"sources\":[\"0\"],\"mappings\":\"AAAqB,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAClED,IACA,MAAME,EAAUL,EAAQ,SACxB,IAAIM,EACJ,MAAMC,EAAUP,EAAQ,uBAClBQ,EAAWR,EAAQ,kCACnBS,EAAsBJ,EAAQK,gBAAgBV,EAAQ,eACtDW,EAAWX,EAAQ,cACzB,MAAMY,UAAiBD,EAASE,gBAC5B,eAAAC,GACIC,MAAMD,kBACN,MAAME,MAAEA,EAAKC,cAAEA,EAAaC,KAAEA,EAAIC,MAAEA,GAAUC,KAAKC,MAAMC,WACzDF,KAAKG,UAAU,CAACP,EAAOC,EAAeC,EAAMC,IAAQ,IAAMC,KAAKI,UACnE,CACA,MAAAA,GACIT,MAAMS,SACN,MAAMN,EAAOE,KAAKC,MAAMH,KAAKO,QAAQ,iBAAkB,IACvD,IAAIC,EACJ,IACIA,EAAOC,OAAOC,KAAKC,MAAMX,EAC7B,CACA,MAAOY,GAEH,YADAV,KAAKW,UAAUC,UAAY,wBAA0BF,EAAIG,WAE7D,CACA,MAAMC,EAAS,CAAEC,oBAAqBf,KAAKC,MAAMJ,cAAeE,MAAOC,KAAKC,MAAMF,OAC5EH,EAA4B,MAApBI,KAAKC,MAAML,MAAgBoB,IAAWhB,KAAKC,MAAML,MAEzDqB,EADY,IAAI5B,EAAoB6B,QAAQZ,EAAMV,EAAOkB,GACpCV,SAC3B,IAAIe,EAAQ,gEACY,QAApBnB,KAAKC,MAAMF,MACXkB,EAASE,MAAMC,QAAU,qCAAuCD,EAEhEF,EAASE,MAAMC,QAAUD,EAC7BnB,KAAKW,UAAUU,OAAOJ,EAC1B,EAEJnC,EAAQU,SAAWA,EACnBA,EAAS8B,SAAW,WACpBxC,EAAQyC,WAAY,EAAIpC,EAAQqC,MAAM,OAAQ,SAC9C,MAAMhB,UAAapB,EAASqC,OACxB,WAAAC,CAAYC,GACRhC,MAAMgC,EACV,EAEJ7C,EAAQ0B,KAAOA,EACftB,EAAKsB,EACLA,EAAKc,SAAW,OAChBd,EAAKoB,WAAa,sBAEd1C,EAAG2C,UAAUC,aAAetC,EAC5BN,EAAG6C,QAAO,EAAGC,QAAOC,UAASC,MAAKC,WAAUC,aAAa,CACrDC,IAAK,CAACL,EAAMI,GAAS,IACrBxC,MAAO,CAACuC,EAASD,GAAM,GACvBrC,cAAe,CAACoC,GAAS,GACzBlC,MAAO,CAACjB,EAAQyC,UAAW,WAGvC\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/json-formatter-js/dist/json-formatter.esm.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"json-formatter-js/dist/json-formatter.esm.js","resolution":"ESM","id":"18bba7b7e1","hash":"18bba7b7e18022b23717b657d1be5021d9005d8e8a3583db1fc07a08ad65e208","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction t(t) { return null === t ? \"null\" : typeof t; }\nfunction e(t) { return !!t && \"object\" == typeof t; }\nfunction r(t) { if (void 0 === t)\n    return \"\"; if (null === t)\n    return \"Object\"; if (\"object\" == typeof t && !t.constructor)\n    return \"Object\"; var e = /function ([^(]*)/.exec(t.constructor.toString()); return e && e.length > 1 ? e[1] : \"\"; }\nfunction n(t, e, r) { return \"null\" === t || \"undefined\" === t ? t : (\"string\" !== t && \"stringifiable\" !== t || (r = '\"' + r.replace(/\"/g, '\\\\\"') + '\"'), \"function\" === t ? e.toString().replace(/[\\r\\n]/g, \"\").replace(/\\{.*\\}/, \"\") + \"{…}\" : r); }\nfunction o(o) { var i = \"\"; return e(o) ? (i = r(o), Array.isArray(o) && (i += \"[\" + o.length + \"]\")) : i = n(t(o), o, o), i; }\nfunction i(t) { return \"json-formatter-\" + t; }\nfunction s(t, e, r) { var n = document.createElement(t); return e && n.classList.add(i(e)), void 0 !== r && (r instanceof Node ? n.appendChild(r) : n.appendChild(document.createTextNode(String(r)))), n; }\n!function (t) { if (t && \"undefined\" != typeof window) {\n    var e = document.createElement(\"style\");\n    e.setAttribute(\"media\", \"screen\"), e.innerHTML = t, document.head.appendChild(e);\n} }('.json-formatter-row {\\n  font-family: monospace;\\n}\\n.json-formatter-row,\\n.json-formatter-row a,\\n.json-formatter-row a:hover {\\n  color: black;\\n  text-decoration: none;\\n}\\n.json-formatter-row .json-formatter-row {\\n  margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty {\\n  opacity: 0.5;\\n  margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n  display: none;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n  content: \"No properties\";\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n  content: \"[]\";\\n}\\n.json-formatter-row .json-formatter-string,\\n.json-formatter-row .json-formatter-stringifiable {\\n  color: green;\\n  white-space: pre;\\n  word-wrap: break-word;\\n}\\n.json-formatter-row .json-formatter-number {\\n  color: blue;\\n}\\n.json-formatter-row .json-formatter-boolean {\\n  color: red;\\n}\\n.json-formatter-row .json-formatter-null {\\n  color: #855A00;\\n}\\n.json-formatter-row .json-formatter-undefined {\\n  color: #ca0b69;\\n}\\n.json-formatter-row .json-formatter-function {\\n  color: #FF20ED;\\n}\\n.json-formatter-row .json-formatter-date {\\n  background-color: rgba(0, 0, 0, 0.05);\\n}\\n.json-formatter-row .json-formatter-url {\\n  text-decoration: underline;\\n  color: blue;\\n  cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-bracket {\\n  color: blue;\\n}\\n.json-formatter-row .json-formatter-key {\\n  color: #00008B;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler-link {\\n  cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-toggler {\\n  line-height: 1.2rem;\\n  font-size: 0.7rem;\\n  vertical-align: middle;\\n  opacity: 0.6;\\n  cursor: pointer;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler:after {\\n  display: inline-block;\\n  transition: transform 100ms ease-in;\\n  content: \"►\";\\n}\\n.json-formatter-row > a > .json-formatter-preview-text {\\n  opacity: 0;\\n  transition: opacity 0.15s ease-in;\\n  font-style: italic;\\n}\\n.json-formatter-row:hover > a > .json-formatter-preview-text {\\n  opacity: 0.6;\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n  transform: rotate(90deg);\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n  display: inline-block;\\n}\\n.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n  display: none;\\n}\\n.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n  display: block;\\n}\\n.json-formatter-dark.json-formatter-row {\\n  font-family: monospace;\\n}\\n.json-formatter-dark.json-formatter-row,\\n.json-formatter-dark.json-formatter-row a,\\n.json-formatter-dark.json-formatter-row a:hover {\\n  color: white;\\n  text-decoration: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-row {\\n  margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty {\\n  opacity: 0.5;\\n  margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n  display: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n  content: \"No properties\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n  content: \"[]\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-string,\\n.json-formatter-dark.json-formatter-row .json-formatter-stringifiable {\\n  color: #31F031;\\n  white-space: pre;\\n  word-wrap: break-word;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-number {\\n  color: #66C2FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-boolean {\\n  color: #EC4242;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-null {\\n  color: #EEC97D;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-undefined {\\n  color: #ef8fbe;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-function {\\n  color: #FD48CB;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-date {\\n  background-color: rgba(255, 255, 255, 0.05);\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-url {\\n  text-decoration: underline;\\n  color: #027BFF;\\n  cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-bracket {\\n  color: #9494FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-key {\\n  color: #23A0DB;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler-link {\\n  cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler {\\n  line-height: 1.2rem;\\n  font-size: 0.7rem;\\n  vertical-align: middle;\\n  opacity: 0.6;\\n  cursor: pointer;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler:after {\\n  display: inline-block;\\n  transition: transform 100ms ease-in;\\n  content: \"►\";\\n}\\n.json-formatter-dark.json-formatter-row > a > .json-formatter-preview-text {\\n  opacity: 0;\\n  transition: opacity 0.15s ease-in;\\n  font-style: italic;\\n}\\n.json-formatter-dark.json-formatter-row:hover > a > .json-formatter-preview-text {\\n  opacity: 0.6;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n  transform: rotate(90deg);\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n  display: inline-block;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n  display: none;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n  display: block;\\n}\\n');\nvar a = /(^\\d{1,4}[\\.|\\\\/|-]\\d{1,2}[\\.|\\\\/|-]\\d{1,4})(\\s*(?:0?[1-9]:[0-5]|1(?=[012])\\d:[0-5])\\d\\s*[ap]m)?$/, f = /\\d{2}:\\d{2}:\\d{2} GMT-\\d{4}/, m = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/, l = window.requestAnimationFrame || function (t) { return t(), 0; }, d = { hoverPreviewEnabled: !1, hoverPreviewArrayCount: 100, hoverPreviewFieldCount: 5, animateOpen: !0, animateClose: !0, theme: null, useToJSON: !0, sortPropertiesBy: null }, c = function () { function c(t, e, r, n) { void 0 === e && (e = 1), void 0 === r && (r = d), this.json = t, this.open = e, this.config = r, this.key = n, this._isOpen = null, void 0 === this.config.hoverPreviewEnabled && (this.config.hoverPreviewEnabled = d.hoverPreviewEnabled), void 0 === this.config.hoverPreviewArrayCount && (this.config.hoverPreviewArrayCount = d.hoverPreviewArrayCount), void 0 === this.config.hoverPreviewFieldCount && (this.config.hoverPreviewFieldCount = d.hoverPreviewFieldCount), void 0 === this.config.useToJSON && (this.config.useToJSON = d.useToJSON), \"\" === this.key && (this.key = '\"\"'); } return Object.defineProperty(c.prototype, \"isOpen\", { get: function () { return null !== this._isOpen ? this._isOpen : this.open > 0; }, set: function (t) { this._isOpen = t; }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"isDate\", { get: function () { return this.json instanceof Date || \"string\" === this.type && (a.test(this.json) || m.test(this.json) || f.test(this.json)); }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"isUrl\", { get: function () { return \"string\" === this.type && 0 === this.json.indexOf(\"http\"); }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"isArray\", { get: function () { return Array.isArray(this.json); }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"isObject\", { get: function () { return e(this.json); }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"isEmptyObject\", { get: function () { return !this.keys.length && !this.isArray; }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"isEmpty\", { get: function () { return this.isEmptyObject || this.keys && !this.keys.length && this.isArray; }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"useToJSON\", { get: function () { return this.config.useToJSON && \"stringifiable\" === this.type; }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"hasKey\", { get: function () { return void 0 !== this.key; }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"constructorName\", { get: function () { return r(this.json); }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"type\", { get: function () { return this.config.useToJSON && this.json && this.json.toJSON ? \"stringifiable\" : t(this.json); }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"keys\", { get: function () { if (this.isObject) {\n        var t = Object.keys(this.json);\n        return !this.isArray && this.config.sortPropertiesBy ? t.sort(this.config.sortPropertiesBy) : t;\n    } return []; }, enumerable: !0, configurable: !0 }), c.prototype.toggleOpen = function () { this.isOpen = !this.isOpen, this.element && (this.isOpen ? this.appendChildren(this.config.animateOpen) : this.removeChildren(this.config.animateClose), this.element.classList.toggle(i(\"open\"))); }, c.prototype.openAtDepth = function (t) { void 0 === t && (t = 1), t < 0 || (this.open = t, this.isOpen = 0 !== t, this.element && (this.removeChildren(!1), 0 === t ? this.element.classList.remove(i(\"open\")) : (this.appendChildren(this.config.animateOpen), this.element.classList.add(i(\"open\"))))); }, c.prototype.getInlinepreview = function () { var t = this; if (this.isArray)\n    return this.json.length > this.config.hoverPreviewArrayCount ? \"Array[\" + this.json.length + \"]\" : \"[\" + this.json.map(o).join(\", \") + \"]\"; var e = this.keys, r = e.slice(0, this.config.hoverPreviewFieldCount).map((function (e) { return e + \":\" + o(t.json[e]); })), n = e.length >= this.config.hoverPreviewFieldCount ? \"…\" : \"\"; return \"{\" + r.join(\", \") + n + \"}\"; }, c.prototype.render = function () { this.element = s(\"div\", \"row\"); var t = this.isObject ? s(\"a\", \"toggler-link\") : s(\"span\"); if (this.isObject && !this.useToJSON && t.appendChild(s(\"span\", \"toggler\")), this.hasKey && t.appendChild(s(\"span\", \"key\", this.key + \":\")), this.isObject && !this.useToJSON) {\n    var e = s(\"span\", \"value\"), r = s(\"span\"), o = s(\"span\", \"constructor-name\", this.constructorName);\n    if (r.appendChild(o), this.isArray) {\n        var a = s(\"span\");\n        a.appendChild(s(\"span\", \"bracket\", \"[\")), a.appendChild(s(\"span\", \"number\", this.json.length)), a.appendChild(s(\"span\", \"bracket\", \"]\")), r.appendChild(a);\n    }\n    e.appendChild(r), t.appendChild(e);\n}\nelse {\n    (e = this.isUrl ? s(\"a\") : s(\"span\")).classList.add(i(this.type)), this.isDate && e.classList.add(i(\"date\")), this.isUrl && (e.classList.add(i(\"url\")), e.setAttribute(\"href\", this.json));\n    var f = n(this.type, this.json, this.useToJSON ? this.json.toJSON() : this.json);\n    e.appendChild(document.createTextNode(f)), t.appendChild(e);\n} if (this.isObject && this.config.hoverPreviewEnabled) {\n    var m = s(\"span\", \"preview-text\");\n    m.appendChild(document.createTextNode(this.getInlinepreview())), t.appendChild(m);\n} var l = s(\"div\", \"children\"); return this.isObject && l.classList.add(i(\"object\")), this.isArray && l.classList.add(i(\"array\")), this.isEmpty && l.classList.add(i(\"empty\")), this.config && this.config.theme && this.element.classList.add(i(this.config.theme)), this.isOpen && this.element.classList.add(i(\"open\")), this.element.appendChild(t), this.element.appendChild(l), this.isObject && this.isOpen && this.appendChildren(), this.isObject && !this.useToJSON && t.addEventListener(\"click\", this.toggleOpen.bind(this)), this.element; }, c.prototype.appendChildren = function (t) { var e = this; void 0 === t && (t = !1); var r = this.element.querySelector(\"div.\" + i(\"children\")); if (r && !this.isEmpty)\n    if (t) {\n        var n = 0, o = function () { var t = e.keys[n], i = new c(e.json[t], e.open - 1, e.config, t); r.appendChild(i.render()), (n += 1) < e.keys.length && (n > 10 ? o() : l(o)); };\n        l(o);\n    }\n    else\n        this.keys.forEach((function (t) { var n = new c(e.json[t], e.open - 1, e.config, t); r.appendChild(n.render()); })); }, c.prototype.removeChildren = function (t) { void 0 === t && (t = !1); var e = this.element.querySelector(\"div.\" + i(\"children\")); if (t) {\n    var r = 0, n = function () { e && e.children.length && (e.removeChild(e.children[0]), (r += 1) > 10 ? n() : l(n)); };\n    l(n);\n}\nelse\n    e && (e.innerHTML = \"\"); }, c; }();\nexports.default = c;\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"default"}],"externals":[],"shims":[]},"code":{"source":"/* json-formatter-js/dist/json-formatter.esm.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    function t(t) { return null === t ? \"null\" : typeof t; }\n    function e(t) { return !!t && \"object\" == typeof t; }\n    function r(t) {\n        if (void 0 === t)\n            return \"\";\n        if (null === t)\n            return \"Object\";\n        if (\"object\" == typeof t && !t.constructor)\n            return \"Object\";\n        var e = /function ([^(]*)/.exec(t.constructor.toString());\n        return e && e.length > 1 ? e[1] : \"\";\n    }\n    function n(t, e, r) { return \"null\" === t || \"undefined\" === t ? t : (\"string\" !== t && \"stringifiable\" !== t || (r = '\"' + r.replace(/\"/g, '\\\\\"') + '\"'), \"function\" === t ? e.toString().replace(/[\\r\\n]/g, \"\").replace(/\\{.*\\}/, \"\") + \"{…}\" : r); }\n    function o(o) { var i = \"\"; return e(o) ? (i = r(o), Array.isArray(o) && (i += \"[\" + o.length + \"]\")) : i = n(t(o), o, o), i; }\n    function i(t) { return \"json-formatter-\" + t; }\n    function s(t, e, r) { var n = document.createElement(t); return e && n.classList.add(i(e)), void 0 !== r && (r instanceof Node ? n.appendChild(r) : n.appendChild(document.createTextNode(String(r)))), n; }\n    !function (t) {\n        if (t && \"undefined\" != typeof window) {\n            var e = document.createElement(\"style\");\n            e.setAttribute(\"media\", \"screen\"), e.innerHTML = t, document.head.appendChild(e);\n        }\n    }('.json-formatter-row {\\n  font-family: monospace;\\n}\\n.json-formatter-row,\\n.json-formatter-row a,\\n.json-formatter-row a:hover {\\n  color: black;\\n  text-decoration: none;\\n}\\n.json-formatter-row .json-formatter-row {\\n  margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty {\\n  opacity: 0.5;\\n  margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n  display: none;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n  content: \"No properties\";\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n  content: \"[]\";\\n}\\n.json-formatter-row .json-formatter-string,\\n.json-formatter-row .json-formatter-stringifiable {\\n  color: green;\\n  white-space: pre;\\n  word-wrap: break-word;\\n}\\n.json-formatter-row .json-formatter-number {\\n  color: blue;\\n}\\n.json-formatter-row .json-formatter-boolean {\\n  color: red;\\n}\\n.json-formatter-row .json-formatter-null {\\n  color: #855A00;\\n}\\n.json-formatter-row .json-formatter-undefined {\\n  color: #ca0b69;\\n}\\n.json-formatter-row .json-formatter-function {\\n  color: #FF20ED;\\n}\\n.json-formatter-row .json-formatter-date {\\n  background-color: rgba(0, 0, 0, 0.05);\\n}\\n.json-formatter-row .json-formatter-url {\\n  text-decoration: underline;\\n  color: blue;\\n  cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-bracket {\\n  color: blue;\\n}\\n.json-formatter-row .json-formatter-key {\\n  color: #00008B;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler-link {\\n  cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-toggler {\\n  line-height: 1.2rem;\\n  font-size: 0.7rem;\\n  vertical-align: middle;\\n  opacity: 0.6;\\n  cursor: pointer;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler:after {\\n  display: inline-block;\\n  transition: transform 100ms ease-in;\\n  content: \"►\";\\n}\\n.json-formatter-row > a > .json-formatter-preview-text {\\n  opacity: 0;\\n  transition: opacity 0.15s ease-in;\\n  font-style: italic;\\n}\\n.json-formatter-row:hover > a > .json-formatter-preview-text {\\n  opacity: 0.6;\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n  transform: rotate(90deg);\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n  display: inline-block;\\n}\\n.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n  display: none;\\n}\\n.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n  display: block;\\n}\\n.json-formatter-dark.json-formatter-row {\\n  font-family: monospace;\\n}\\n.json-formatter-dark.json-formatter-row,\\n.json-formatter-dark.json-formatter-row a,\\n.json-formatter-dark.json-formatter-row a:hover {\\n  color: white;\\n  text-decoration: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-row {\\n  margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty {\\n  opacity: 0.5;\\n  margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n  display: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n  content: \"No properties\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n  content: \"[]\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-string,\\n.json-formatter-dark.json-formatter-row .json-formatter-stringifiable {\\n  color: #31F031;\\n  white-space: pre;\\n  word-wrap: break-word;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-number {\\n  color: #66C2FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-boolean {\\n  color: #EC4242;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-null {\\n  color: #EEC97D;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-undefined {\\n  color: #ef8fbe;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-function {\\n  color: #FD48CB;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-date {\\n  background-color: rgba(255, 255, 255, 0.05);\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-url {\\n  text-decoration: underline;\\n  color: #027BFF;\\n  cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-bracket {\\n  color: #9494FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-key {\\n  color: #23A0DB;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler-link {\\n  cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler {\\n  line-height: 1.2rem;\\n  font-size: 0.7rem;\\n  vertical-align: middle;\\n  opacity: 0.6;\\n  cursor: pointer;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler:after {\\n  display: inline-block;\\n  transition: transform 100ms ease-in;\\n  content: \"►\";\\n}\\n.json-formatter-dark.json-formatter-row > a > .json-formatter-preview-text {\\n  opacity: 0;\\n  transition: opacity 0.15s ease-in;\\n  font-style: italic;\\n}\\n.json-formatter-dark.json-formatter-row:hover > a > .json-formatter-preview-text {\\n  opacity: 0.6;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n  transform: rotate(90deg);\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n  display: inline-block;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n  display: none;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n  display: block;\\n}\\n');\n    var a = /(^\\d{1,4}[\\.|\\\\/|-]\\d{1,2}[\\.|\\\\/|-]\\d{1,4})(\\s*(?:0?[1-9]:[0-5]|1(?=[012])\\d:[0-5])\\d\\s*[ap]m)?$/, f = /\\d{2}:\\d{2}:\\d{2} GMT-\\d{4}/, m = /\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/, l = window.requestAnimationFrame || function (t) { return t(), 0; }, d = { hoverPreviewEnabled: !1, hoverPreviewArrayCount: 100, hoverPreviewFieldCount: 5, animateOpen: !0, animateClose: !0, theme: null, useToJSON: !0, sortPropertiesBy: null }, c = function () {\n        function c(t, e, r, n) { void 0 === e && (e = 1), void 0 === r && (r = d), this.json = t, this.open = e, this.config = r, this.key = n, this._isOpen = null, void 0 === this.config.hoverPreviewEnabled && (this.config.hoverPreviewEnabled = d.hoverPreviewEnabled), void 0 === this.config.hoverPreviewArrayCount && (this.config.hoverPreviewArrayCount = d.hoverPreviewArrayCount), void 0 === this.config.hoverPreviewFieldCount && (this.config.hoverPreviewFieldCount = d.hoverPreviewFieldCount), void 0 === this.config.useToJSON && (this.config.useToJSON = d.useToJSON), \"\" === this.key && (this.key = '\"\"'); }\n        return Object.defineProperty(c.prototype, \"isOpen\", { get: function () { return null !== this._isOpen ? this._isOpen : this.open > 0; }, set: function (t) { this._isOpen = t; }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"isDate\", { get: function () { return this.json instanceof Date || \"string\" === this.type && (a.test(this.json) || m.test(this.json) || f.test(this.json)); }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"isUrl\", { get: function () { return \"string\" === this.type && 0 === this.json.indexOf(\"http\"); }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"isArray\", { get: function () { return Array.isArray(this.json); }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"isObject\", { get: function () { return e(this.json); }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"isEmptyObject\", { get: function () { return !this.keys.length && !this.isArray; }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"isEmpty\", { get: function () { return this.isEmptyObject || this.keys && !this.keys.length && this.isArray; }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"useToJSON\", { get: function () { return this.config.useToJSON && \"stringifiable\" === this.type; }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"hasKey\", { get: function () { return void 0 !== this.key; }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"constructorName\", { get: function () { return r(this.json); }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"type\", { get: function () { return this.config.useToJSON && this.json && this.json.toJSON ? \"stringifiable\" : t(this.json); }, enumerable: !0, configurable: !0 }), Object.defineProperty(c.prototype, \"keys\", { get: function () {\n                if (this.isObject) {\n                    var t = Object.keys(this.json);\n                    return !this.isArray && this.config.sortPropertiesBy ? t.sort(this.config.sortPropertiesBy) : t;\n                }\n                return [];\n            }, enumerable: !0, configurable: !0 }), c.prototype.toggleOpen = function () { this.isOpen = !this.isOpen, this.element && (this.isOpen ? this.appendChildren(this.config.animateOpen) : this.removeChildren(this.config.animateClose), this.element.classList.toggle(i(\"open\"))); }, c.prototype.openAtDepth = function (t) { void 0 === t && (t = 1), t < 0 || (this.open = t, this.isOpen = 0 !== t, this.element && (this.removeChildren(!1), 0 === t ? this.element.classList.remove(i(\"open\")) : (this.appendChildren(this.config.animateOpen), this.element.classList.add(i(\"open\"))))); }, c.prototype.getInlinepreview = function () {\n            var t = this;\n            if (this.isArray)\n                return this.json.length > this.config.hoverPreviewArrayCount ? \"Array[\" + this.json.length + \"]\" : \"[\" + this.json.map(o).join(\", \") + \"]\";\n            var e = this.keys, r = e.slice(0, this.config.hoverPreviewFieldCount).map((function (e) { return e + \":\" + o(t.json[e]); })), n = e.length >= this.config.hoverPreviewFieldCount ? \"…\" : \"\";\n            return \"{\" + r.join(\", \") + n + \"}\";\n        }, c.prototype.render = function () {\n            this.element = s(\"div\", \"row\");\n            var t = this.isObject ? s(\"a\", \"toggler-link\") : s(\"span\");\n            if (this.isObject && !this.useToJSON && t.appendChild(s(\"span\", \"toggler\")), this.hasKey && t.appendChild(s(\"span\", \"key\", this.key + \":\")), this.isObject && !this.useToJSON) {\n                var e = s(\"span\", \"value\"), r = s(\"span\"), o = s(\"span\", \"constructor-name\", this.constructorName);\n                if (r.appendChild(o), this.isArray) {\n                    var a = s(\"span\");\n                    a.appendChild(s(\"span\", \"bracket\", \"[\")), a.appendChild(s(\"span\", \"number\", this.json.length)), a.appendChild(s(\"span\", \"bracket\", \"]\")), r.appendChild(a);\n                }\n                e.appendChild(r), t.appendChild(e);\n            }\n            else {\n                (e = this.isUrl ? s(\"a\") : s(\"span\")).classList.add(i(this.type)), this.isDate && e.classList.add(i(\"date\")), this.isUrl && (e.classList.add(i(\"url\")), e.setAttribute(\"href\", this.json));\n                var f = n(this.type, this.json, this.useToJSON ? this.json.toJSON() : this.json);\n                e.appendChild(document.createTextNode(f)), t.appendChild(e);\n            }\n            if (this.isObject && this.config.hoverPreviewEnabled) {\n                var m = s(\"span\", \"preview-text\");\n                m.appendChild(document.createTextNode(this.getInlinepreview())), t.appendChild(m);\n            }\n            var l = s(\"div\", \"children\");\n            return this.isObject && l.classList.add(i(\"object\")), this.isArray && l.classList.add(i(\"array\")), this.isEmpty && l.classList.add(i(\"empty\")), this.config && this.config.theme && this.element.classList.add(i(this.config.theme)), this.isOpen && this.element.classList.add(i(\"open\")), this.element.appendChild(t), this.element.appendChild(l), this.isObject && this.isOpen && this.appendChildren(), this.isObject && !this.useToJSON && t.addEventListener(\"click\", this.toggleOpen.bind(this)), this.element;\n        }, c.prototype.appendChildren = function (t) {\n            var e = this;\n            void 0 === t && (t = !1);\n            var r = this.element.querySelector(\"div.\" + i(\"children\"));\n            if (r && !this.isEmpty)\n                if (t) {\n                    var n = 0, o = function () { var t = e.keys[n], i = new c(e.json[t], e.open - 1, e.config, t); r.appendChild(i.render()), (n += 1) < e.keys.length && (n > 10 ? o() : l(o)); };\n                    l(o);\n                }\n                else\n                    this.keys.forEach((function (t) { var n = new c(e.json[t], e.open - 1, e.config, t); r.appendChild(n.render()); }));\n        }, c.prototype.removeChildren = function (t) {\n            void 0 === t && (t = !1);\n            var e = this.element.querySelector(\"div.\" + i(\"children\"));\n            if (t) {\n                var r = 0, n = function () { e && e.children.length && (e.removeChild(e.children[0]), (r += 1) > 10 ? n() : l(n)); };\n                l(n);\n            }\n            else\n                e && (e.innerHTML = \"\");\n        }, c;\n    }();\n    exports.default = c;\n}\n","min_source":"function _(t,e,r,n,o){function i(t){return null===t?\"null\":typeof t}function s(t){return!!t&&\"object\"==typeof t}function a(t){if(void 0===t)return\"\";if(null===t)return\"Object\";if(\"object\"==typeof t&&!t.constructor)return\"Object\";var e=/function ([^(]*)/.exec(t.constructor.toString());return e&&e.length>1?e[1]:\"\"}function f(t,e,r){return\"null\"===t||\"undefined\"===t?t:(\"string\"!==t&&\"stringifiable\"!==t||(r='\"'+r.replace(/\"/g,'\\\\\"')+'\"'),\"function\"===t?e.toString().replace(/[\\r\\n]/g,\"\").replace(/\\{.*\\}/,\"\")+\"{\\u2026}\":r)}function m(t){var e=\"\";return s(t)?(e=a(t),Array.isArray(t)&&(e+=\"[\"+t.length+\"]\")):e=f(i(t),t,t),e}function l(t){return\"json-formatter-\"+t}function d(t,e,r){var n=document.createElement(t);return e&&n.classList.add(l(e)),void 0!==r&&(r instanceof Node?n.appendChild(r):n.appendChild(document.createTextNode(String(r)))),n}n(),function(t){if(t&&\"undefined\"!=typeof window){var e=document.createElement(\"style\");e.setAttribute(\"media\",\"screen\"),e.innerHTML=t,document.head.appendChild(e)}}('.json-formatter-row {\\n  font-family: monospace;\\n}\\n.json-formatter-row,\\n.json-formatter-row a,\\n.json-formatter-row a:hover {\\n  color: black;\\n  text-decoration: none;\\n}\\n.json-formatter-row .json-formatter-row {\\n  margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty {\\n  opacity: 0.5;\\n  margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n  display: none;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n  content: \"No properties\";\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n  content: \"[]\";\\n}\\n.json-formatter-row .json-formatter-string,\\n.json-formatter-row .json-formatter-stringifiable {\\n  color: green;\\n  white-space: pre;\\n  word-wrap: break-word;\\n}\\n.json-formatter-row .json-formatter-number {\\n  color: blue;\\n}\\n.json-formatter-row .json-formatter-boolean {\\n  color: red;\\n}\\n.json-formatter-row .json-formatter-null {\\n  color: #855A00;\\n}\\n.json-formatter-row .json-formatter-undefined {\\n  color: #ca0b69;\\n}\\n.json-formatter-row .json-formatter-function {\\n  color: #FF20ED;\\n}\\n.json-formatter-row .json-formatter-date {\\n  background-color: rgba(0, 0, 0, 0.05);\\n}\\n.json-formatter-row .json-formatter-url {\\n  text-decoration: underline;\\n  color: blue;\\n  cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-bracket {\\n  color: blue;\\n}\\n.json-formatter-row .json-formatter-key {\\n  color: #00008B;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler-link {\\n  cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-toggler {\\n  line-height: 1.2rem;\\n  font-size: 0.7rem;\\n  vertical-align: middle;\\n  opacity: 0.6;\\n  cursor: pointer;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler:after {\\n  display: inline-block;\\n  transition: transform 100ms ease-in;\\n  content: \"\\u25ba\";\\n}\\n.json-formatter-row > a > .json-formatter-preview-text {\\n  opacity: 0;\\n  transition: opacity 0.15s ease-in;\\n  font-style: italic;\\n}\\n.json-formatter-row:hover > a > .json-formatter-preview-text {\\n  opacity: 0.6;\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n  transform: rotate(90deg);\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n  display: inline-block;\\n}\\n.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n  display: none;\\n}\\n.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n  display: block;\\n}\\n.json-formatter-dark.json-formatter-row {\\n  font-family: monospace;\\n}\\n.json-formatter-dark.json-formatter-row,\\n.json-formatter-dark.json-formatter-row a,\\n.json-formatter-dark.json-formatter-row a:hover {\\n  color: white;\\n  text-decoration: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-row {\\n  margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty {\\n  opacity: 0.5;\\n  margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n  display: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n  content: \"No properties\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n  content: \"[]\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-string,\\n.json-formatter-dark.json-formatter-row .json-formatter-stringifiable {\\n  color: #31F031;\\n  white-space: pre;\\n  word-wrap: break-word;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-number {\\n  color: #66C2FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-boolean {\\n  color: #EC4242;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-null {\\n  color: #EEC97D;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-undefined {\\n  color: #ef8fbe;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-function {\\n  color: #FD48CB;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-date {\\n  background-color: rgba(255, 255, 255, 0.05);\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-url {\\n  text-decoration: underline;\\n  color: #027BFF;\\n  cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-bracket {\\n  color: #9494FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-key {\\n  color: #23A0DB;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler-link {\\n  cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler {\\n  line-height: 1.2rem;\\n  font-size: 0.7rem;\\n  vertical-align: middle;\\n  opacity: 0.6;\\n  cursor: pointer;\\n  padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler:after {\\n  display: inline-block;\\n  transition: transform 100ms ease-in;\\n  content: \"\\u25ba\";\\n}\\n.json-formatter-dark.json-formatter-row > a > .json-formatter-preview-text {\\n  opacity: 0;\\n  transition: opacity 0.15s ease-in;\\n  font-style: italic;\\n}\\n.json-formatter-dark.json-formatter-row:hover > a > .json-formatter-preview-text {\\n  opacity: 0.6;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n  transform: rotate(90deg);\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n  display: inline-block;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n  display: none;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n  display: block;\\n}\\n');var c=/(^\\d{1,4}[\\.|\\\\/|-]\\d{1,2}[\\.|\\\\/|-]\\d{1,4})(\\s*(?:0?[1-9]:[0-5]|1(?=[012])\\d:[0-5])\\d\\s*[ap]m)?$/,p=/\\d{2}:\\d{2}:\\d{2} GMT-\\d{4}/,j=/\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/,h=window.requestAnimationFrame||function(t){return t(),0},u={hoverPreviewEnabled:!1,hoverPreviewArrayCount:100,hoverPreviewFieldCount:5,animateOpen:!0,animateClose:!0,theme:null,useToJSON:!0,sortPropertiesBy:null},g=function(){function t(t,e,r,n){void 0===e&&(e=1),void 0===r&&(r=u),this.json=t,this.open=e,this.config=r,this.key=n,this._isOpen=null,void 0===this.config.hoverPreviewEnabled&&(this.config.hoverPreviewEnabled=u.hoverPreviewEnabled),void 0===this.config.hoverPreviewArrayCount&&(this.config.hoverPreviewArrayCount=u.hoverPreviewArrayCount),void 0===this.config.hoverPreviewFieldCount&&(this.config.hoverPreviewFieldCount=u.hoverPreviewFieldCount),void 0===this.config.useToJSON&&(this.config.useToJSON=u.useToJSON),\"\"===this.key&&(this.key='\"\"')}return Object.defineProperty(t.prototype,\"isOpen\",{get:function(){return null!==this._isOpen?this._isOpen:this.open>0},set:function(t){this._isOpen=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"isDate\",{get:function(){return this.json instanceof Date||\"string\"===this.type&&(c.test(this.json)||j.test(this.json)||p.test(this.json))},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"isUrl\",{get:function(){return\"string\"===this.type&&0===this.json.indexOf(\"http\")},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"isArray\",{get:function(){return Array.isArray(this.json)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"isObject\",{get:function(){return s(this.json)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"isEmptyObject\",{get:function(){return!this.keys.length&&!this.isArray},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"isEmpty\",{get:function(){return this.isEmptyObject||this.keys&&!this.keys.length&&this.isArray},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"useToJSON\",{get:function(){return this.config.useToJSON&&\"stringifiable\"===this.type},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"hasKey\",{get:function(){return void 0!==this.key},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"constructorName\",{get:function(){return a(this.json)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"type\",{get:function(){return this.config.useToJSON&&this.json&&this.json.toJSON?\"stringifiable\":i(this.json)},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,\"keys\",{get:function(){if(this.isObject){var t=Object.keys(this.json);return!this.isArray&&this.config.sortPropertiesBy?t.sort(this.config.sortPropertiesBy):t}return[]},enumerable:!0,configurable:!0}),t.prototype.toggleOpen=function(){this.isOpen=!this.isOpen,this.element&&(this.isOpen?this.appendChildren(this.config.animateOpen):this.removeChildren(this.config.animateClose),this.element.classList.toggle(l(\"open\")))},t.prototype.openAtDepth=function(t){void 0===t&&(t=1),t<0||(this.open=t,this.isOpen=0!==t,this.element&&(this.removeChildren(!1),0===t?this.element.classList.remove(l(\"open\")):(this.appendChildren(this.config.animateOpen),this.element.classList.add(l(\"open\")))))},t.prototype.getInlinepreview=function(){var t=this;if(this.isArray)return this.json.length>this.config.hoverPreviewArrayCount?\"Array[\"+this.json.length+\"]\":\"[\"+this.json.map(m).join(\", \")+\"]\";var e=this.keys,r=e.slice(0,this.config.hoverPreviewFieldCount).map((function(e){return e+\":\"+m(t.json[e])})),n=e.length>=this.config.hoverPreviewFieldCount?\"\\u2026\":\"\";return\"{\"+r.join(\", \")+n+\"}\"},t.prototype.render=function(){this.element=d(\"div\",\"row\");var t=this.isObject?d(\"a\",\"toggler-link\"):d(\"span\");if(this.isObject&&!this.useToJSON&&t.appendChild(d(\"span\",\"toggler\")),this.hasKey&&t.appendChild(d(\"span\",\"key\",this.key+\":\")),this.isObject&&!this.useToJSON){var e=d(\"span\",\"value\"),r=d(\"span\"),n=d(\"span\",\"constructor-name\",this.constructorName);if(r.appendChild(n),this.isArray){var o=d(\"span\");o.appendChild(d(\"span\",\"bracket\",\"[\")),o.appendChild(d(\"span\",\"number\",this.json.length)),o.appendChild(d(\"span\",\"bracket\",\"]\")),r.appendChild(o)}e.appendChild(r),t.appendChild(e)}else{(e=this.isUrl?d(\"a\"):d(\"span\")).classList.add(l(this.type)),this.isDate&&e.classList.add(l(\"date\")),this.isUrl&&(e.classList.add(l(\"url\")),e.setAttribute(\"href\",this.json));var i=f(this.type,this.json,this.useToJSON?this.json.toJSON():this.json);e.appendChild(document.createTextNode(i)),t.appendChild(e)}if(this.isObject&&this.config.hoverPreviewEnabled){var s=d(\"span\",\"preview-text\");s.appendChild(document.createTextNode(this.getInlinepreview())),t.appendChild(s)}var a=d(\"div\",\"children\");return this.isObject&&a.classList.add(l(\"object\")),this.isArray&&a.classList.add(l(\"array\")),this.isEmpty&&a.classList.add(l(\"empty\")),this.config&&this.config.theme&&this.element.classList.add(l(this.config.theme)),this.isOpen&&this.element.classList.add(l(\"open\")),this.element.appendChild(t),this.element.appendChild(a),this.isObject&&this.isOpen&&this.appendChildren(),this.isObject&&!this.useToJSON&&t.addEventListener(\"click\",this.toggleOpen.bind(this)),this.element},t.prototype.appendChildren=function(e){var r=this;void 0===e&&(e=!1);var n=this.element.querySelector(\"div.\"+l(\"children\"));if(n&&!this.isEmpty)if(e){var o=0,i=function(){var e=r.keys[o],s=new t(r.json[e],r.open-1,r.config,e);n.appendChild(s.render()),(o+=1)<r.keys.length&&(o>10?i():h(i))};h(i)}else this.keys.forEach((function(e){var o=new t(r.json[e],r.open-1,r.config,e);n.appendChild(o.render())}))},t.prototype.removeChildren=function(t){void 0===t&&(t=!1);var e=this.element.querySelector(\"div.\"+l(\"children\"));if(t){var r=0,n=function(){e&&e.children.length&&(e.removeChild(e.children[0]),(r+=1)>10?n():h(n))};h(n)}else e&&(e.innerHTML=\"\")},t}();r.default=g}\n//# sourceMappingURL=json-formatter.esm.min.js.map","min_map":"{\"version\":3,\"file\":\"json-formatter.esm.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"t\",\"e\",\"r\",\"constructor\",\"exec\",\"toString\",\"length\",\"n\",\"replace\",\"o\",\"i\",\"Array\",\"isArray\",\"s\",\"document\",\"createElement\",\"classList\",\"add\",\"Node\",\"appendChild\",\"createTextNode\",\"String\",\"window\",\"setAttribute\",\"innerHTML\",\"head\",\"a\",\"f\",\"m\",\"l\",\"requestAnimationFrame\",\"d\",\"hoverPreviewEnabled\",\"hoverPreviewArrayCount\",\"hoverPreviewFieldCount\",\"animateOpen\",\"animateClose\",\"theme\",\"useToJSON\",\"sortPropertiesBy\",\"c\",\"this\",\"json\",\"open\",\"config\",\"key\",\"_isOpen\",\"Object\",\"defineProperty\",\"prototype\",\"get\",\"set\",\"enumerable\",\"configurable\",\"Date\",\"type\",\"test\",\"indexOf\",\"keys\",\"isEmptyObject\",\"toJSON\",\"isObject\",\"sort\",\"toggleOpen\",\"isOpen\",\"element\",\"appendChildren\",\"removeChildren\",\"toggle\",\"openAtDepth\",\"remove\",\"getInlinepreview\",\"map\",\"join\",\"slice\",\"render\",\"hasKey\",\"constructorName\",\"isUrl\",\"isDate\",\"isEmpty\",\"addEventListener\",\"bind\",\"querySelector\",\"forEach\",\"children\",\"removeChild\",\"default\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/jsoneditor.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/jsoneditor.js","canonical":"models/jsoneditor","resolution":"ESM","id":"3c56a75fcf","hash":"3c56a75fcf9742ee83b95e812572b1df9ae86c8ec823e550b6cb54dc5e7183c4","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSONEditor = exports.JSONEditorView = exports.JSONEditEvent = void 0;\nvar _a, _b;\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst bokeh_events_1 = require(\"@bokehjs/core/bokeh_events\");\nconst layout_1 = require(\"./layout\");\nclass JSONEditEvent extends bokeh_events_1.ModelEvent {\n    constructor(data) {\n        super();\n        this.data = data;\n    }\n    get event_values() {\n        return { model: this.origin, data: this.data };\n    }\n}\nexports.JSONEditEvent = JSONEditEvent;\n_a = JSONEditEvent;\nJSONEditEvent.__name__ = \"JSONEditEvent\";\n(() => {\n    _a.prototype.event_name = \"json_edit\";\n})();\nclass JSONEditorView extends layout_1.HTMLBoxView {\n    connect_signals() {\n        super.connect_signals();\n        const { data, disabled, templates, menu, mode, search, schema } = this.model.properties;\n        this.on_change([data], () => this.editor.update(this.model.data));\n        this.on_change([templates], () => {\n            this.editor.options.templates = this.model.templates;\n        });\n        this.on_change([menu], () => {\n            this.editor.options.menu = this.model.menu;\n        });\n        this.on_change([search], () => {\n            this.editor.options.search = this.model.search;\n        });\n        this.on_change([schema], () => {\n            this.editor.options.schema = this.model.schema;\n        });\n        this.on_change([disabled, mode], () => {\n            const mode = this.model.disabled ? 'view' : this.model.mode;\n            this.editor.setMode(mode);\n        });\n    }\n    stylesheets() {\n        const styles = super.stylesheets();\n        for (const css of this.model.css)\n            styles.push(new dom_1.ImportedStyleSheet(css));\n        return styles;\n    }\n    remove() {\n        super.remove();\n        this.editor.destroy();\n    }\n    render() {\n        super.render();\n        const mode = this.model.disabled ? 'view' : this.model.mode;\n        this.editor = new window.JSONEditor(this.shadow_el, {\n            menu: this.model.menu,\n            mode: mode,\n            onChangeJSON: (json) => {\n                this.model.data = json;\n            },\n            onSelectionChange: (start, end) => {\n                this.model.selection = [start, end];\n            },\n            search: this.model.search,\n            schema: this.model.schema,\n            templates: this.model.templates,\n        });\n        this.editor.set(this.model.data);\n    }\n}\nexports.JSONEditorView = JSONEditorView;\nJSONEditorView.__name__ = \"JSONEditorView\";\nclass JSONEditor extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.JSONEditor = JSONEditor;\n_b = JSONEditor;\nJSONEditor.__name__ = \"JSONEditor\";\nJSONEditor.__module__ = \"panel.models.jsoneditor\";\n(() => {\n    _b.prototype.default_view = JSONEditorView;\n    _b.define(({ Any, Array, Boolean, String }) => ({\n        css: [Array(String), []],\n        data: [Any, {}],\n        mode: [String, 'tree'],\n        menu: [Boolean, true],\n        search: [Boolean, true],\n        selection: [Array(Any), []],\n        schema: [Any, null],\n        templates: [Array(Any), []],\n    }));\n})();\n//# sourceMappingURL=jsoneditor.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"JSONEditEvent"},{"type":"named","name":"JSONEditorView"},{"type":"named","name":"JSONEditor"}],"externals":[],"shims":[]},"code":{"source":"/* models/jsoneditor.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a, _b;\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const bokeh_events_1 = require(\"@bokehjs/core/bokeh_events\");\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    class JSONEditEvent extends bokeh_events_1.ModelEvent {\n        constructor(data) {\n            super();\n            this.data = data;\n        }\n        get event_values() {\n            return { model: this.origin, data: this.data };\n        }\n    }\n    exports.JSONEditEvent = JSONEditEvent;\n    _a = JSONEditEvent;\n    JSONEditEvent.__name__ = \"JSONEditEvent\";\n    (() => {\n        _a.prototype.event_name = \"json_edit\";\n    })();\n    class JSONEditorView extends layout_1.HTMLBoxView {\n        connect_signals() {\n            super.connect_signals();\n            const { data, disabled, templates, menu, mode, search, schema } = this.model.properties;\n            this.on_change([data], () => this.editor.update(this.model.data));\n            this.on_change([templates], () => {\n                this.editor.options.templates = this.model.templates;\n            });\n            this.on_change([menu], () => {\n                this.editor.options.menu = this.model.menu;\n            });\n            this.on_change([search], () => {\n                this.editor.options.search = this.model.search;\n            });\n            this.on_change([schema], () => {\n                this.editor.options.schema = this.model.schema;\n            });\n            this.on_change([disabled, mode], () => {\n                const mode = this.model.disabled ? 'view' : this.model.mode;\n                this.editor.setMode(mode);\n            });\n        }\n        stylesheets() {\n            const styles = super.stylesheets();\n            for (const css of this.model.css)\n                styles.push(new dom_1.ImportedStyleSheet(css));\n            return styles;\n        }\n        remove() {\n            super.remove();\n            this.editor.destroy();\n        }\n        render() {\n            super.render();\n            const mode = this.model.disabled ? 'view' : this.model.mode;\n            this.editor = new window.JSONEditor(this.shadow_el, {\n                menu: this.model.menu,\n                mode: mode,\n                onChangeJSON: (json) => {\n                    this.model.data = json;\n                },\n                onSelectionChange: (start, end) => {\n                    this.model.selection = [start, end];\n                },\n                search: this.model.search,\n                schema: this.model.schema,\n                templates: this.model.templates,\n            });\n            this.editor.set(this.model.data);\n        }\n    }\n    exports.JSONEditorView = JSONEditorView;\n    JSONEditorView.__name__ = \"JSONEditorView\";\n    class JSONEditor extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.JSONEditor = JSONEditor;\n    _b = JSONEditor;\n    JSONEditor.__name__ = \"JSONEditor\";\n    JSONEditor.__module__ = \"panel.models.jsoneditor\";\n    (() => {\n        _b.prototype.default_view = JSONEditorView;\n        _b.define(({ Any, Array, Boolean, String }) => ({\n            css: [Array(String), []],\n            data: [Any, {}],\n            mode: [String, 'tree'],\n            menu: [Boolean, true],\n            search: [Boolean, true],\n            selection: [Array(Any), []],\n            schema: [Any, null],\n            templates: [Array(Any), []],\n        }));\n    })();\n}\n","min_source":"function _(e,t,s,o,i){var d,n;o();const h=e(\"@bokehjs/core/dom\"),a=e(\"@bokehjs/core/bokeh_events\"),r=e(\"cac5f3ed28\");class m extends a.ModelEvent{constructor(e){super(),this.data=e}get event_values(){return{model:this.origin,data:this.data}}}s.JSONEditEvent=m,d=m,m.__name__=\"JSONEditEvent\",d.prototype.event_name=\"json_edit\";class l extends r.HTMLBoxView{connect_signals(){super.connect_signals();const{data:e,disabled:t,templates:s,menu:o,mode:i,search:d,schema:n}=this.model.properties;this.on_change([e],(()=>this.editor.update(this.model.data))),this.on_change([s],(()=>{this.editor.options.templates=this.model.templates})),this.on_change([o],(()=>{this.editor.options.menu=this.model.menu})),this.on_change([d],(()=>{this.editor.options.search=this.model.search})),this.on_change([n],(()=>{this.editor.options.schema=this.model.schema})),this.on_change([t,i],(()=>{const e=this.model.disabled?\"view\":this.model.mode;this.editor.setMode(e)}))}stylesheets(){const e=super.stylesheets();for(const t of this.model.css)e.push(new h.ImportedStyleSheet(t));return e}remove(){super.remove(),this.editor.destroy()}render(){super.render();const e=this.model.disabled?\"view\":this.model.mode;this.editor=new window.JSONEditor(this.shadow_el,{menu:this.model.menu,mode:e,onChangeJSON:e=>{this.model.data=e},onSelectionChange:(e,t)=>{this.model.selection=[e,t]},search:this.model.search,schema:this.model.schema,templates:this.model.templates}),this.editor.set(this.model.data)}}s.JSONEditorView=l,l.__name__=\"JSONEditorView\";class c extends r.HTMLBox{constructor(e){super(e)}}s.JSONEditor=c,n=c,c.__name__=\"JSONEditor\",c.__module__=\"panel.models.jsoneditor\",n.prototype.default_view=l,n.define((({Any:e,Array:t,Boolean:s,String:o})=>({css:[t(o),[]],data:[e,{}],mode:[o,\"tree\"],menu:[s,!0],search:[s,!0],selection:[t(e),[]],schema:[e,null],templates:[t(e),[]]})))}\n//# sourceMappingURL=jsoneditor.min.js.map","min_map":"{\"version\":3,\"file\":\"jsoneditor.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"_b\",\"dom_1\",\"bokeh_events_1\",\"layout_1\",\"JSONEditEvent\",\"ModelEvent\",\"constructor\",\"data\",\"super\",\"this\",\"event_values\",\"model\",\"origin\",\"__name__\",\"prototype\",\"event_name\",\"JSONEditorView\",\"HTMLBoxView\",\"connect_signals\",\"disabled\",\"templates\",\"menu\",\"mode\",\"search\",\"schema\",\"properties\",\"on_change\",\"editor\",\"update\",\"options\",\"setMode\",\"stylesheets\",\"styles\",\"css\",\"push\",\"ImportedStyleSheet\",\"remove\",\"destroy\",\"render\",\"window\",\"JSONEditor\",\"shadow_el\",\"onChangeJSON\",\"json\",\"onSelectionChange\",\"start\",\"end\",\"selection\",\"set\",\"HTMLBox\",\"attrs\",\"__module__\",\"default_view\",\"define\",\"Any\",\"Array\",\"Boolean\",\"String\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/katex.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/katex.js","canonical":"models/katex","resolution":"ESM","id":"001dfd2dde","hash":"001dfd2ddec0c1617bb51524d143bd8939b0719f681d79a39ab62f040cf1b791","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.KaTeX = exports.KaTeXView = void 0;\nvar _a;\nconst markup_1 = require(\"@bokehjs/models/widgets/markup\");\nconst layout_1 = require(\"./layout\");\nclass KaTeXView extends layout_1.PanelMarkupView {\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.text.change, () => this.render());\n    }\n    render() {\n        super.render();\n        this.container.innerHTML = this.model.text;\n        if (!window.renderMathInElement) {\n            return;\n        }\n        window.renderMathInElement(this.shadow_el, {\n            delimiters: [\n                { left: \"$$\", right: \"$$\", display: true },\n                { left: \"\\\\[\", right: \"\\\\]\", display: true },\n                { left: \"$\", right: \"$\", display: false },\n                { left: \"\\\\(\", right: \"\\\\)\", display: false }\n            ]\n        });\n    }\n}\nexports.KaTeXView = KaTeXView;\nKaTeXView.__name__ = \"KaTeXView\";\nclass KaTeX extends markup_1.Markup {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.KaTeX = KaTeX;\n_a = KaTeX;\nKaTeX.__name__ = \"KaTeX\";\nKaTeX.__module__ = \"panel.models.katex\";\n(() => {\n    _a.prototype.default_view = KaTeXView;\n})();\n//# sourceMappingURL=katex.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"KaTeXView"},{"type":"named","name":"KaTeX"}],"externals":[],"shims":[]},"code":{"source":"/* models/katex.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const markup_1 = require(\"@bokehjs/models/widgets/markup\");\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    class KaTeXView extends layout_1.PanelMarkupView {\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.text.change, () => this.render());\n        }\n        render() {\n            super.render();\n            this.container.innerHTML = this.model.text;\n            if (!window.renderMathInElement) {\n                return;\n            }\n            window.renderMathInElement(this.shadow_el, {\n                delimiters: [\n                    { left: \"$$\", right: \"$$\", display: true },\n                    { left: \"\\\\[\", right: \"\\\\]\", display: true },\n                    { left: \"$\", right: \"$\", display: false },\n                    { left: \"\\\\(\", right: \"\\\\)\", display: false }\n                ]\n            });\n        }\n    }\n    exports.KaTeXView = KaTeXView;\n    KaTeXView.__name__ = \"KaTeXView\";\n    class KaTeX extends markup_1.Markup {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.KaTeX = KaTeX;\n    _a = KaTeX;\n    KaTeX.__name__ = \"KaTeX\";\n    KaTeX.__module__ = \"panel.models.katex\";\n    (() => {\n        _a.prototype.default_view = KaTeXView;\n    })();\n}\n","min_source":"function _(e,t,n,s,i){var r;s();const a=e(\"@bokehjs/models/widgets/markup\"),l=e(\"cac5f3ed28\");class d extends l.PanelMarkupView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.text.change,(()=>this.render()))}render(){super.render(),this.container.innerHTML=this.model.text,window.renderMathInElement&&window.renderMathInElement(this.shadow_el,{delimiters:[{left:\"$$\",right:\"$$\",display:!0},{left:\"\\\\[\",right:\"\\\\]\",display:!0},{left:\"$\",right:\"$\",display:!1},{left:\"\\\\(\",right:\"\\\\)\",display:!1}]})}}n.KaTeXView=d,d.__name__=\"KaTeXView\";class o extends a.Markup{constructor(e){super(e)}}n.KaTeX=o,r=o,o.__name__=\"KaTeX\",o.__module__=\"panel.models.katex\",r.prototype.default_view=d}\n//# sourceMappingURL=katex.min.js.map","min_map":"{\"version\":3,\"file\":\"katex.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"markup_1\",\"layout_1\",\"KaTeXView\",\"PanelMarkupView\",\"connect_signals\",\"super\",\"this\",\"connect\",\"model\",\"properties\",\"text\",\"change\",\"render\",\"container\",\"innerHTML\",\"window\",\"renderMathInElement\",\"shadow_el\",\"delimiters\",\"left\",\"right\",\"display\",\"__name__\",\"KaTeX\",\"Markup\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\"],\"sources\":[\"0\"],\"mappings\":\"AAAsB,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAEnE,IAAIC,EADJF,IAEA,MAAMG,EAAWN,EAAQ,kCACnBO,EAAWP,EAAQ,cACzB,MAAMQ,UAAkBD,EAASE,gBAC7B,eAAAC,GACIC,MAAMD,kBACNE,KAAKC,QAAQD,KAAKE,MAAMC,WAAWC,KAAKC,QAAQ,IAAML,KAAKM,UAC/D,CACA,MAAAA,GACIP,MAAMO,SACNN,KAAKO,UAAUC,UAAYR,KAAKE,MAAME,KACjCK,OAAOC,qBAGZD,OAAOC,oBAAoBV,KAAKW,UAAW,CACvCC,WAAY,CACR,CAAEC,KAAM,KAAMC,MAAO,KAAMC,SAAS,GACpC,CAAEF,KAAM,MAAOC,MAAO,MAAOC,SAAS,GACtC,CAAEF,KAAM,IAAKC,MAAO,IAAKC,SAAS,GAClC,CAAEF,KAAM,MAAOC,MAAO,MAAOC,SAAS,KAGlD,EAEJzB,EAAQM,UAAYA,EACpBA,EAAUoB,SAAW,YACrB,MAAMC,UAAcvB,EAASwB,OACzB,WAAAC,CAAYC,GACRrB,MAAMqB,EACV,EAEJ9B,EAAQ2B,MAAQA,EAChBxB,EAAKwB,EACLA,EAAMD,SAAW,QACjBC,EAAMI,WAAa,qBAEf5B,EAAG6B,UAAUC,aAAe3B,CAEpC\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/location.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/location.js","canonical":"models/location","resolution":"ESM","id":"a85ed38ee9","hash":"a85ed38ee91385b8abf9dbc23caea5c70b4bed4efd29c244359197245df2395f","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Location = exports.LocationView = void 0;\nvar _a;\nconst view_1 = require(\"@bokehjs/core/view\");\nconst model_1 = require(\"@bokehjs/model\");\nclass LocationView extends view_1.View {\n    initialize() {\n        super.initialize();\n        this.model.pathname = window.location.pathname;\n        this.model.search = window.location.search;\n        this.model.hash = window.location.hash;\n        // Readonly parameters on python side\n        this.model.href = window.location.href;\n        this.model.hostname = window.location.hostname;\n        this.model.protocol = window.location.protocol;\n        this.model.port = window.location.port;\n        this._hash_listener = () => {\n            this.model.hash = window.location.hash;\n        };\n        window.addEventListener('hashchange', this._hash_listener);\n        this._has_finished = true;\n        this.notify_finished();\n    }\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.pathname.change, () => this.update('pathname'));\n        this.connect(this.model.properties.search.change, () => this.update('search'));\n        this.connect(this.model.properties.hash.change, () => this.update('hash'));\n        this.connect(this.model.properties.reload.change, () => this.update('reload'));\n    }\n    remove() {\n        super.remove();\n        window.removeEventListener('hashchange', this._hash_listener);\n    }\n    update(change) {\n        if (!this.model.reload || (change === 'reload')) {\n            window.history.pushState({}, '', `${this.model.pathname}${this.model.search}${this.model.hash}`);\n            this.model.href = window.location.href;\n            if (change === 'reload')\n                window.location.reload();\n        }\n        else {\n            if (change == 'pathname')\n                window.location.pathname = this.model.pathname;\n            if (change == 'search')\n                window.location.search = this.model.search;\n            if (change == 'hash')\n                window.location.hash = this.model.hash;\n        }\n    }\n}\nexports.LocationView = LocationView;\nLocationView.__name__ = \"LocationView\";\nclass Location extends model_1.Model {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.Location = Location;\n_a = Location;\nLocation.__name__ = \"Location\";\nLocation.__module__ = \"panel.models.location\";\n(() => {\n    _a.prototype.default_view = LocationView;\n    _a.define(({ Boolean, String }) => ({\n        href: [String, \"\"],\n        hostname: [String, \"\"],\n        pathname: [String, \"\"],\n        protocol: [String, \"\"],\n        port: [String, \"\"],\n        search: [String, \"\"],\n        hash: [String, \"\"],\n        reload: [Boolean, false],\n    }));\n})();\n//# sourceMappingURL=location.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"LocationView"},{"type":"named","name":"Location"}],"externals":[],"shims":[]},"code":{"source":"/* models/location.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const view_1 = require(\"@bokehjs/core/view\");\n    const model_1 = require(\"@bokehjs/model\");\n    class LocationView extends view_1.View {\n        initialize() {\n            super.initialize();\n            this.model.pathname = window.location.pathname;\n            this.model.search = window.location.search;\n            this.model.hash = window.location.hash;\n            // Readonly parameters on python side\n            this.model.href = window.location.href;\n            this.model.hostname = window.location.hostname;\n            this.model.protocol = window.location.protocol;\n            this.model.port = window.location.port;\n            this._hash_listener = () => {\n                this.model.hash = window.location.hash;\n            };\n            window.addEventListener('hashchange', this._hash_listener);\n            this._has_finished = true;\n            this.notify_finished();\n        }\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.pathname.change, () => this.update('pathname'));\n            this.connect(this.model.properties.search.change, () => this.update('search'));\n            this.connect(this.model.properties.hash.change, () => this.update('hash'));\n            this.connect(this.model.properties.reload.change, () => this.update('reload'));\n        }\n        remove() {\n            super.remove();\n            window.removeEventListener('hashchange', this._hash_listener);\n        }\n        update(change) {\n            if (!this.model.reload || (change === 'reload')) {\n                window.history.pushState({}, '', `${this.model.pathname}${this.model.search}${this.model.hash}`);\n                this.model.href = window.location.href;\n                if (change === 'reload')\n                    window.location.reload();\n            }\n            else {\n                if (change == 'pathname')\n                    window.location.pathname = this.model.pathname;\n                if (change == 'search')\n                    window.location.search = this.model.search;\n                if (change == 'hash')\n                    window.location.hash = this.model.hash;\n            }\n        }\n    }\n    exports.LocationView = LocationView;\n    LocationView.__name__ = \"LocationView\";\n    class Location extends model_1.Model {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.Location = Location;\n    _a = Location;\n    Location.__name__ = \"Location\";\n    Location.__module__ = \"panel.models.location\";\n    (() => {\n        _a.prototype.default_view = LocationView;\n        _a.define(({ Boolean, String }) => ({\n            href: [String, \"\"],\n            hostname: [String, \"\"],\n            pathname: [String, \"\"],\n            protocol: [String, \"\"],\n            port: [String, \"\"],\n            search: [String, \"\"],\n            hash: [String, \"\"],\n            reload: [Boolean, false],\n        }));\n    })();\n}\n","min_source":"function _(e,o,t,h,i){var a;h();const s=e(\"@bokehjs/core/view\"),n=e(\"@bokehjs/model\");class d extends s.View{initialize(){super.initialize(),this.model.pathname=window.location.pathname,this.model.search=window.location.search,this.model.hash=window.location.hash,this.model.href=window.location.href,this.model.hostname=window.location.hostname,this.model.protocol=window.location.protocol,this.model.port=window.location.port,this._hash_listener=()=>{this.model.hash=window.location.hash},window.addEventListener(\"hashchange\",this._hash_listener),this._has_finished=!0,this.notify_finished()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.pathname.change,(()=>this.update(\"pathname\"))),this.connect(this.model.properties.search.change,(()=>this.update(\"search\"))),this.connect(this.model.properties.hash.change,(()=>this.update(\"hash\"))),this.connect(this.model.properties.reload.change,(()=>this.update(\"reload\")))}remove(){super.remove(),window.removeEventListener(\"hashchange\",this._hash_listener)}update(e){this.model.reload&&\"reload\"!==e?(\"pathname\"==e&&(window.location.pathname=this.model.pathname),\"search\"==e&&(window.location.search=this.model.search),\"hash\"==e&&(window.location.hash=this.model.hash)):(window.history.pushState({},\"\",`${this.model.pathname}${this.model.search}${this.model.hash}`),this.model.href=window.location.href,\"reload\"===e&&window.location.reload())}}t.LocationView=d,d.__name__=\"LocationView\";class l extends n.Model{constructor(e){super(e)}}t.Location=l,a=l,l.__name__=\"Location\",l.__module__=\"panel.models.location\",a.prototype.default_view=d,a.define((({Boolean:e,String:o})=>({href:[o,\"\"],hostname:[o,\"\"],pathname:[o,\"\"],protocol:[o,\"\"],port:[o,\"\"],search:[o,\"\"],hash:[o,\"\"],reload:[e,!1]})))}\n//# sourceMappingURL=location.min.js.map","min_map":"{\"version\":3,\"file\":\"location.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"view_1\",\"model_1\",\"LocationView\",\"View\",\"initialize\",\"super\",\"this\",\"model\",\"pathname\",\"window\",\"location\",\"search\",\"hash\",\"href\",\"hostname\",\"protocol\",\"port\",\"_hash_listener\",\"addEventListener\",\"_has_finished\",\"notify_finished\",\"connect_signals\",\"connect\",\"properties\",\"change\",\"update\",\"reload\",\"remove\",\"removeEventListener\",\"history\",\"pushState\",\"__name__\",\"Location\",\"Model\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Boolean\",\"String\"],\"sources\":[\"0\"],\"mappings\":\"AAAyB,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAEtE,IAAIC,EADJF,IAEA,MAAMG,EAASN,EAAQ,sBACjBO,EAAUP,EAAQ,kBACxB,MAAMQ,UAAqBF,EAAOG,KAC9B,UAAAC,GACIC,MAAMD,aACNE,KAAKC,MAAMC,SAAWC,OAAOC,SAASF,SACtCF,KAAKC,MAAMI,OAASF,OAAOC,SAASC,OACpCL,KAAKC,MAAMK,KAAOH,OAAOC,SAASE,KAElCN,KAAKC,MAAMM,KAAOJ,OAAOC,SAASG,KAClCP,KAAKC,MAAMO,SAAWL,OAAOC,SAASI,SACtCR,KAAKC,MAAMQ,SAAWN,OAAOC,SAASK,SACtCT,KAAKC,MAAMS,KAAOP,OAAOC,SAASM,KAClCV,KAAKW,eAAiB,KAClBX,KAAKC,MAAMK,KAAOH,OAAOC,SAASE,IAAI,EAE1CH,OAAOS,iBAAiB,aAAcZ,KAAKW,gBAC3CX,KAAKa,eAAgB,EACrBb,KAAKc,iBACT,CACA,eAAAC,GACIhB,MAAMgB,kBACNf,KAAKgB,QAAQhB,KAAKC,MAAMgB,WAAWf,SAASgB,QAAQ,IAAMlB,KAAKmB,OAAO,cACtEnB,KAAKgB,QAAQhB,KAAKC,MAAMgB,WAAWZ,OAAOa,QAAQ,IAAMlB,KAAKmB,OAAO,YACpEnB,KAAKgB,QAAQhB,KAAKC,MAAMgB,WAAWX,KAAKY,QAAQ,IAAMlB,KAAKmB,OAAO,UAClEnB,KAAKgB,QAAQhB,KAAKC,MAAMgB,WAAWG,OAAOF,QAAQ,IAAMlB,KAAKmB,OAAO,WACxE,CACA,MAAAE,GACItB,MAAMsB,SACNlB,OAAOmB,oBAAoB,aAActB,KAAKW,eAClD,CACA,MAAAQ,CAAOD,GACElB,KAAKC,MAAMmB,QAAsB,WAAXF,GAOT,YAAVA,IACAf,OAAOC,SAASF,SAAWF,KAAKC,MAAMC,UAC5B,UAAVgB,IACAf,OAAOC,SAASC,OAASL,KAAKC,MAAMI,QAC1B,QAAVa,IACAf,OAAOC,SAASE,KAAON,KAAKC,MAAMK,QAXtCH,OAAOoB,QAAQC,UAAU,CAAC,EAAG,GAAI,GAAGxB,KAAKC,MAAMC,WAAWF,KAAKC,MAAMI,SAASL,KAAKC,MAAMK,QACzFN,KAAKC,MAAMM,KAAOJ,OAAOC,SAASG,KACnB,WAAXW,GACAf,OAAOC,SAASgB,SAU5B,EAEJ9B,EAAQM,aAAeA,EACvBA,EAAa6B,SAAW,eACxB,MAAMC,UAAiB/B,EAAQgC,MAC3B,WAAAC,CAAYC,GACR9B,MAAM8B,EACV,EAEJvC,EAAQoC,SAAWA,EACnBjC,EAAKiC,EACLA,EAASD,SAAW,WACpBC,EAASI,WAAa,wBAElBrC,EAAGsC,UAAUC,aAAepC,EAC5BH,EAAGwC,QAAO,EAAGC,UAASC,aAAa,CAC/B5B,KAAM,CAAC4B,EAAQ,IACf3B,SAAU,CAAC2B,EAAQ,IACnBjC,SAAU,CAACiC,EAAQ,IACnB1B,SAAU,CAAC0B,EAAQ,IACnBzB,KAAM,CAACyB,EAAQ,IACf9B,OAAQ,CAAC8B,EAAQ,IACjB7B,KAAM,CAAC6B,EAAQ,IACff,OAAQ,CAACc,GAAS,MAG9B\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/mathjax.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/mathjax.js","canonical":"models/mathjax","resolution":"ESM","id":"ca760ebc92","hash":"ca760ebc92cc7cae64d2e5c8226525398bd17b61fcd3be960faee5710033e9fe","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MathJax = exports.MathJaxView = void 0;\nvar _a;\nconst markup_1 = require(\"@bokehjs/models/widgets/markup\");\nconst layout_1 = require(\"./layout\");\nclass MathJaxView extends layout_1.PanelMarkupView {\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.text.change, () => this.render());\n    }\n    render() {\n        super.render();\n        this.container.innerHTML = this.has_math_disabled() ? this.model.text : this.process_tex(this.model.text);\n    }\n}\nexports.MathJaxView = MathJaxView;\nMathJaxView.__name__ = \"MathJaxView\";\nclass MathJax extends markup_1.Markup {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.MathJax = MathJax;\n_a = MathJax;\nMathJax.__name__ = \"MathJax\";\nMathJax.__module__ = \"panel.models.mathjax\";\n(() => {\n    _a.prototype.default_view = MathJaxView;\n})();\n//# sourceMappingURL=mathjax.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"MathJaxView"},{"type":"named","name":"MathJax"}],"externals":[],"shims":[]},"code":{"source":"/* models/mathjax.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const markup_1 = require(\"@bokehjs/models/widgets/markup\");\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    class MathJaxView extends layout_1.PanelMarkupView {\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.text.change, () => this.render());\n        }\n        render() {\n            super.render();\n            this.container.innerHTML = this.has_math_disabled() ? this.model.text : this.process_tex(this.model.text);\n        }\n    }\n    exports.MathJaxView = MathJaxView;\n    MathJaxView.__name__ = \"MathJaxView\";\n    class MathJax extends markup_1.Markup {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.MathJax = MathJax;\n    _a = MathJax;\n    MathJax.__name__ = \"MathJax\";\n    MathJax.__module__ = \"panel.models.mathjax\";\n    (() => {\n        _a.prototype.default_view = MathJaxView;\n    })();\n}\n","min_source":"function _(e,t,s,a,n){var r;a();const i=e(\"@bokehjs/models/widgets/markup\"),o=e(\"cac5f3ed28\");class _ extends o.PanelMarkupView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.text.change,(()=>this.render()))}render(){super.render(),this.container.innerHTML=this.has_math_disabled()?this.model.text:this.process_tex(this.model.text)}}s.MathJaxView=_,_.__name__=\"MathJaxView\";class c extends i.Markup{constructor(e){super(e)}}s.MathJax=c,r=c,c.__name__=\"MathJax\",c.__module__=\"panel.models.mathjax\",r.prototype.default_view=_}\n//# sourceMappingURL=mathjax.min.js.map","min_map":"{\"version\":3,\"file\":\"mathjax.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"markup_1\",\"layout_1\",\"MathJaxView\",\"PanelMarkupView\",\"connect_signals\",\"super\",\"this\",\"connect\",\"model\",\"properties\",\"text\",\"change\",\"render\",\"container\",\"innerHTML\",\"has_math_disabled\",\"process_tex\",\"__name__\",\"MathJax\",\"Markup\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\"],\"sources\":[\"0\"],\"mappings\":\"AAAwB,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAErE,IAAIC,EADJF,IAEA,MAAMG,EAAWN,EAAQ,kCACnBO,EAAWP,EAAQ,cACzB,MAAMQ,UAAoBD,EAASE,gBAC/B,eAAAC,GACIC,MAAMD,kBACNE,KAAKC,QAAQD,KAAKE,MAAMC,WAAWC,KAAKC,QAAQ,IAAML,KAAKM,UAC/D,CACA,MAAAA,GACIP,MAAMO,SACNN,KAAKO,UAAUC,UAAYR,KAAKS,oBAAsBT,KAAKE,MAAME,KAAOJ,KAAKU,YAAYV,KAAKE,MAAME,KACxG,EAEJd,EAAQM,YAAcA,EACtBA,EAAYe,SAAW,cACvB,MAAMC,UAAgBlB,EAASmB,OAC3B,WAAAC,CAAYC,GACRhB,MAAMgB,EACV,EAEJzB,EAAQsB,QAAUA,EAClBnB,EAAKmB,EACLA,EAAQD,SAAW,UACnBC,EAAQI,WAAa,uBAEjBvB,EAAGwB,UAAUC,aAAetB,CAEpC\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/pdf.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/pdf.js","canonical":"models/pdf","resolution":"ESM","id":"46cccf2270","hash":"46cccf22701bcfdb470e3a34238a23ccc80ad4011bba2ba12b20a609e28bcc33","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PDF = exports.PDFView = void 0;\nvar _a;\nconst markup_1 = require(\"@bokehjs/models/widgets/markup\");\nconst layout_1 = require(\"./layout\");\nconst html_1 = require(\"./html\");\nclass PDFView extends layout_1.PanelMarkupView {\n    connect_signals() {\n        super.connect_signals();\n        const p = this.model.properties;\n        const { text, width, height, embed, start_page } = p;\n        this.on_change([text, width, height, embed, start_page], () => {\n            this.update();\n        });\n    }\n    render() {\n        super.render();\n        this.update();\n    }\n    update() {\n        if (this.model.embed) {\n            const blob = this.convert_base64_to_blob();\n            const url = URL.createObjectURL(blob);\n            const w = this.model.width || \"100%\";\n            const h = this.model.height || \"100%\";\n            this.container.innerHTML = `<embed src=\"${url}#page=${this.model.start_page}\" type=\"application/pdf\" width=\"${w}\" height=\"${h}\"></embed>`;\n        }\n        else {\n            const html = (0, html_1.htmlDecode)(this.model.text);\n            this.container.innerHTML = html || \"\";\n        }\n    }\n    convert_base64_to_blob() {\n        const byteCharacters = atob(this.model.text);\n        const sliceSize = 512;\n        var byteArrays = [];\n        for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n            const slice = byteCharacters.slice(offset, offset + sliceSize);\n            const byteNumbers = new Uint8Array(slice.length);\n            for (let i = 0; i < slice.length; i++) {\n                byteNumbers[i] = slice.charCodeAt(i);\n            }\n            byteArrays.push(byteNumbers);\n        }\n        return new Blob(byteArrays, { type: \"application/pdf\" });\n    }\n}\nexports.PDFView = PDFView;\nPDFView.__name__ = \"PDFView\";\nclass PDF extends markup_1.Markup {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.PDF = PDF;\n_a = PDF;\nPDF.__name__ = \"PDF\";\nPDF.__module__ = \"panel.models.markup\";\n(() => {\n    _a.prototype.default_view = PDFView;\n    _a.define(({ Number, Boolean }) => ({\n        embed: [Boolean, true],\n        start_page: [Number, 1],\n    }));\n})();\n//# sourceMappingURL=pdf.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"],["./html","/croot/panel_1706539561184/work/panel/dist/lib/models/html.js"]],"dependency_map":[],"exported":[{"type":"named","name":"PDFView"},{"type":"named","name":"PDF"}],"externals":[],"shims":[]},"code":{"source":"/* models/pdf.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const markup_1 = require(\"@bokehjs/models/widgets/markup\");\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    const html_1 = require(\"3db2e41978\") /* ./html */;\n    class PDFView extends layout_1.PanelMarkupView {\n        connect_signals() {\n            super.connect_signals();\n            const p = this.model.properties;\n            const { text, width, height, embed, start_page } = p;\n            this.on_change([text, width, height, embed, start_page], () => {\n                this.update();\n            });\n        }\n        render() {\n            super.render();\n            this.update();\n        }\n        update() {\n            if (this.model.embed) {\n                const blob = this.convert_base64_to_blob();\n                const url = URL.createObjectURL(blob);\n                const w = this.model.width || \"100%\";\n                const h = this.model.height || \"100%\";\n                this.container.innerHTML = `<embed src=\"${url}#page=${this.model.start_page}\" type=\"application/pdf\" width=\"${w}\" height=\"${h}\"></embed>`;\n            }\n            else {\n                const html = (0, html_1.htmlDecode)(this.model.text);\n                this.container.innerHTML = html || \"\";\n            }\n        }\n        convert_base64_to_blob() {\n            const byteCharacters = atob(this.model.text);\n            const sliceSize = 512;\n            var byteArrays = [];\n            for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n                const slice = byteCharacters.slice(offset, offset + sliceSize);\n                const byteNumbers = new Uint8Array(slice.length);\n                for (let i = 0; i < slice.length; i++) {\n                    byteNumbers[i] = slice.charCodeAt(i);\n                }\n                byteArrays.push(byteNumbers);\n            }\n            return new Blob(byteArrays, { type: \"application/pdf\" });\n        }\n    }\n    exports.PDFView = PDFView;\n    PDFView.__name__ = \"PDFView\";\n    class PDF extends markup_1.Markup {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.PDF = PDF;\n    _a = PDF;\n    PDF.__name__ = \"PDF\";\n    PDF.__module__ = \"panel.models.markup\";\n    (() => {\n        _a.prototype.default_view = PDFView;\n        _a.define(({ Number, Boolean }) => ({\n            embed: [Boolean, true],\n            start_page: [Number, 1],\n        }));\n    })();\n}\n","min_source":"function _(e,t,s,n,o){var a;n();const i=e(\"@bokehjs/models/widgets/markup\"),r=e(\"cac5f3ed28\"),d=e(\"3db2e41978\");class l extends r.PanelMarkupView{connect_signals(){super.connect_signals();const e=this.model.properties,{text:t,width:s,height:n,embed:o,start_page:a}=e;this.on_change([t,s,n,o,a],(()=>{this.update()}))}render(){super.render(),this.update()}update(){if(this.model.embed){const e=this.convert_base64_to_blob(),t=URL.createObjectURL(e),s=this.model.width||\"100%\",n=this.model.height||\"100%\";this.container.innerHTML=`<embed src=\"${t}#page=${this.model.start_page}\" type=\"application/pdf\" width=\"${s}\" height=\"${n}\"></embed>`}else{const e=(0,d.htmlDecode)(this.model.text);this.container.innerHTML=e||\"\"}}convert_base64_to_blob(){const e=atob(this.model.text);var t=[];for(let s=0;s<e.length;s+=512){const n=e.slice(s,s+512),o=new Uint8Array(n.length);for(let e=0;e<n.length;e++)o[e]=n.charCodeAt(e);t.push(o)}return new Blob(t,{type:\"application/pdf\"})}}s.PDFView=l,l.__name__=\"PDFView\";class c extends i.Markup{constructor(e){super(e)}}s.PDF=c,a=c,c.__name__=\"PDF\",c.__module__=\"panel.models.markup\",a.prototype.default_view=l,a.define((({Number:e,Boolean:t})=>({embed:[t,!0],start_page:[e,1]})))}\n//# sourceMappingURL=pdf.min.js.map","min_map":"{\"version\":3,\"file\":\"pdf.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"markup_1\",\"layout_1\",\"html_1\",\"PDFView\",\"PanelMarkupView\",\"connect_signals\",\"super\",\"p\",\"this\",\"model\",\"properties\",\"text\",\"width\",\"height\",\"embed\",\"start_page\",\"on_change\",\"update\",\"render\",\"blob\",\"convert_base64_to_blob\",\"url\",\"URL\",\"createObjectURL\",\"w\",\"h\",\"container\",\"innerHTML\",\"html\",\"htmlDecode\",\"byteCharacters\",\"atob\",\"byteArrays\",\"offset\",\"length\",\"slice\",\"byteNumbers\",\"Uint8Array\",\"i\",\"charCodeAt\",\"push\",\"Blob\",\"type\",\"__name__\",\"PDF\",\"Markup\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Number\",\"Boolean\"],\"sources\":[\"0\"],\"mappings\":\"AAAoB,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAEjE,IAAIC,EADJF,IAEA,MAAMG,EAAWN,EAAQ,kCACnBO,EAAWP,EAAQ,cACnBQ,EAASR,EAAQ,cACvB,MAAMS,UAAgBF,EAASG,gBAC3B,eAAAC,GACIC,MAAMD,kBACN,MAAME,EAAIC,KAAKC,MAAMC,YACfC,KAAEA,EAAIC,MAAEA,EAAKC,OAAEA,EAAMC,MAAEA,EAAKC,WAAEA,GAAeR,EACnDC,KAAKQ,UAAU,CAACL,EAAMC,EAAOC,EAAQC,EAAOC,IAAa,KACrDP,KAAKS,QAAQ,GAErB,CACA,MAAAC,GACIZ,MAAMY,SACNV,KAAKS,QACT,CACA,MAAAA,GACI,GAAIT,KAAKC,MAAMK,MAAO,CAClB,MAAMK,EAAOX,KAAKY,yBACZC,EAAMC,IAAIC,gBAAgBJ,GAC1BK,EAAIhB,KAAKC,MAAMG,OAAS,OACxBa,EAAIjB,KAAKC,MAAMI,QAAU,OAC/BL,KAAKkB,UAAUC,UAAY,eAAeN,UAAYb,KAAKC,MAAMM,6CAA6CS,cAAcC,aAChI,KACK,CACD,MAAMG,GAAO,EAAI1B,EAAO2B,YAAYrB,KAAKC,MAAME,MAC/CH,KAAKkB,UAAUC,UAAYC,GAAQ,EACvC,CACJ,CACA,sBAAAR,GACI,MAAMU,EAAiBC,KAAKvB,KAAKC,MAAME,MAEvC,IAAIqB,EAAa,GACjB,IAAK,IAAIC,EAAS,EAAGA,EAASH,EAAeI,OAAQD,GAFnC,IAEwD,CACtE,MAAME,EAAQL,EAAeK,MAAMF,EAAQA,EAH7B,KAIRG,EAAc,IAAIC,WAAWF,EAAMD,QACzC,IAAK,IAAII,EAAI,EAAGA,EAAIH,EAAMD,OAAQI,IAC9BF,EAAYE,GAAKH,EAAMI,WAAWD,GAEtCN,EAAWQ,KAAKJ,EACpB,CACA,OAAO,IAAIK,KAAKT,EAAY,CAAEU,KAAM,mBACxC,EAEJ9C,EAAQO,QAAUA,EAClBA,EAAQwC,SAAW,UACnB,MAAMC,UAAY5C,EAAS6C,OACvB,WAAAC,CAAYC,GACRzC,MAAMyC,EACV,EAEJnD,EAAQgD,IAAMA,EACd7C,EAAK6C,EACLA,EAAID,SAAW,MACfC,EAAII,WAAa,sBAEbjD,EAAGkD,UAAUC,aAAe/C,EAC5BJ,EAAGoD,QAAO,EAAGC,SAAQC,cAAc,CAC/BvC,MAAO,CAACuC,GAAS,GACjBtC,WAAY,CAACqC,EAAQ,MAGjC\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/perspective.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/perspective.js","canonical":"models/perspective","resolution":"ESM","id":"8349fbd43e","hash":"8349fbd43e325a1afcbfdb83b391edd7982152a8275f11a8210bd414303d23aa","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Perspective = exports.PerspectiveView = exports.PerspectiveClickEvent = void 0;\nvar _a, _b;\nconst bokeh_events_1 = require(\"@bokehjs/core/bokeh_events\");\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst column_data_source_1 = require(\"@bokehjs/models/sources/column_data_source\");\nconst layout_1 = require(\"./layout\");\nconst THEMES = {\n    'material-dark': 'Material Dark',\n    'material': 'Material Light',\n    'vaporwave': 'Vaporwave',\n    'solarized': 'Solarized',\n    'solarized-dark': 'Solarized Dark',\n    'monokai': 'Monokai'\n};\nconst PLUGINS = {\n    'datagrid': 'Datagrid',\n    'd3_x_bar': 'X Bar',\n    'd3_y_bar': 'Y Bar',\n    'd3_xy_line': 'X/Y Line',\n    'd3_y_line': 'Y Line',\n    'd3_y_area': 'Y Area',\n    'd3_y_scatter': 'Y Scatter',\n    'd3_xy_scatter': 'X/Y Scatter',\n    'd3_treemap': 'Treemap',\n    'd3_candlestick': 'Candlestick',\n    'd3_sunburst': 'Sunburst',\n    'd3_heatmap': 'Heatmap',\n    'd3_ohlc': 'OHLC'\n};\nfunction objectFlip(obj) {\n    const ret = {};\n    Object.keys(obj).forEach(key => {\n        ret[obj[key]] = key;\n    });\n    return ret;\n}\nconst PLUGINS_REVERSE = objectFlip(PLUGINS);\nconst THEMES_REVERSE = objectFlip(THEMES);\nclass PerspectiveClickEvent extends bokeh_events_1.ModelEvent {\n    constructor(config, column_names, row) {\n        super();\n        this.config = config;\n        this.column_names = column_names;\n        this.row = row;\n    }\n    get event_values() {\n        return { model: this.origin, config: this.config, column_names: this.column_names, row: this.row };\n    }\n}\nexports.PerspectiveClickEvent = PerspectiveClickEvent;\n_a = PerspectiveClickEvent;\nPerspectiveClickEvent.__name__ = \"PerspectiveClickEvent\";\n(() => {\n    _a.prototype.event_name = \"perspective-click\";\n})();\nclass PerspectiveView extends layout_1.HTMLBoxView {\n    constructor() {\n        super(...arguments);\n        this._updating = false;\n        this._config_listener = null;\n        this._current_config = null;\n        this._loaded = false;\n    }\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.source.properties.data.change, () => this.setData());\n        this.connect(this.model.source.streaming, () => this.stream());\n        this.connect(this.model.source.patching, () => this.patch());\n        this.connect(this.model.properties.schema.change, () => {\n            this.worker.table(this.model.schema).then((table) => {\n                this.table = table;\n                this.table.update(this.data);\n                this.perspective_element.load(this.table);\n            });\n        });\n        this.connect(this.model.properties.toggle_config.change, () => {\n            this.perspective_element.toggleConfig();\n        });\n        this.connect(this.model.properties.columns.change, () => {\n            if (this._updating)\n                return;\n            this.perspective_element.restore({ \"columns\": this.model.columns });\n        });\n        this.connect(this.model.properties.expressions.change, () => {\n            if (this._updating)\n                return;\n            this.perspective_element.restore({ \"expressions\": this.model.expressions });\n        });\n        this.connect(this.model.properties.split_by.change, () => {\n            if (this._updating)\n                return;\n            this.perspective_element.restore({ \"split_by\": this.model.split_by });\n        });\n        this.connect(this.model.properties.group_by.change, () => {\n            if (this._updating)\n                return;\n            this.perspective_element.restore({ \"group_by\": this.model.group_by });\n        });\n        this.connect(this.model.properties.aggregates.change, () => {\n            if (this._updating)\n                return;\n            this.perspective_element.restore({ \"aggregates\": this.model.aggregates });\n        });\n        this.connect(this.model.properties.filters.change, () => {\n            if (this._updating)\n                return;\n            this.perspective_element.restore({ \"filter\": this.model.filters });\n        });\n        this.connect(this.model.properties.sort.change, () => {\n            if (this._updating)\n                return;\n            this.perspective_element.restore({ \"sort\": this.model.sort });\n        });\n        this.connect(this.model.properties.plugin.change, () => {\n            if (this._updating)\n                return;\n            this.perspective_element.restore({ \"plugin\": PLUGINS[this.model.plugin] });\n        });\n        this.connect(this.model.properties.selectable.change, () => {\n            if (this._updating)\n                return;\n            this.perspective_element.restore({ \"plugin_config\": Object.assign(Object.assign({}, this._current_config), { selectable: this.model.selectable }) });\n        });\n        this.connect(this.model.properties.editable.change, () => {\n            if (this._updating)\n                return;\n            this.perspective_element.restore({ \"plugin_config\": Object.assign(Object.assign({}, this._current_config), { editable: this.model.editable }) });\n        });\n        this.connect(this.model.properties.theme.change, () => {\n            if (this._updating)\n                return;\n            this.perspective_element.restore({ \"theme\": THEMES[this.model.theme] }).catch(() => { });\n        });\n    }\n    disconnect_signals() {\n        if (this._config_listener != null)\n            this.perspective_element.removeEventListener(\"perspective-config-update\", this._config_listener);\n        this._config_listener = null;\n        super.disconnect_signals();\n    }\n    remove() {\n        this.perspective_element.delete(() => this.worker.terminate());\n        super.remove();\n    }\n    render() {\n        super.render();\n        this.worker = window.perspective.worker();\n        const container = (0, dom_1.div)({\n            class: \"pnx-perspective-viewer\",\n            style: {\n                zIndex: 0,\n            }\n        });\n        container.innerHTML = \"<perspective-viewer style='height:100%; width:100%;'></perspective-viewer>\";\n        this.perspective_element = container.children[0];\n        this.perspective_element.resetThemes([...Object.values(THEMES)]).catch(() => { });\n        if (this.model.toggle_config)\n            this.perspective_element.toggleConfig();\n        (0, layout_1.set_size)(container, this.model);\n        this.shadow_el.appendChild(container);\n        this.worker.table(this.model.schema).then((table) => {\n            this.table = table;\n            this.table.update(this.data);\n            this.perspective_element.load(this.table);\n            const plugin_config = Object.assign(Object.assign({}, this.model.plugin_config), { editable: this.model.editable, selectable: this.model.selectable });\n            this.perspective_element.restore({\n                aggregates: this.model.aggregates,\n                columns: this.model.columns,\n                expressions: this.model.expressions,\n                filter: this.model.filters,\n                split_by: this.model.split_by,\n                group_by: this.model.group_by,\n                plugin: PLUGINS[this.model.plugin],\n                plugin_config: plugin_config,\n                sort: this.model.sort,\n                theme: THEMES[this.model.theme]\n            }).catch(() => { });\n            this.perspective_element.save().then((config) => {\n                this._current_config = config;\n            });\n            this._config_listener = () => this.sync_config();\n            this.perspective_element.addEventListener(\"perspective-config-update\", this._config_listener);\n            this.perspective_element.addEventListener(\"perspective-click\", (event) => {\n                this.model.trigger_event(new PerspectiveClickEvent(event.detail.config, event.detail.column_names, event.detail.row));\n            });\n            this._loaded = true;\n        });\n    }\n    sync_config() {\n        if (this._updating)\n            return true;\n        this.perspective_element.save().then((config) => {\n            this._current_config = config;\n            const props = {};\n            for (let option in config) {\n                let value = config[option];\n                if (value === undefined || (option == 'plugin' && value === \"debug\") || option === 'settings')\n                    continue;\n                if (option === 'filter')\n                    option = 'filters';\n                else if (option === 'plugin')\n                    value = PLUGINS_REVERSE[value];\n                else if (option === 'theme')\n                    value = THEMES_REVERSE[value];\n                props[option] = value;\n            }\n            this._updating = true;\n            this.model.setv(props);\n            this._updating = false;\n        });\n        return true;\n    }\n    get data() {\n        const data = {};\n        for (const column of this.model.source.columns()) {\n            let array = this.model.source.get_array(column);\n            if (this.model.schema[column] == 'datetime' && array.includes(-9223372036854776)) {\n                array = array.map((v) => v === -9223372036854776 ? null : v);\n            }\n            data[column] = array;\n        }\n        return data;\n    }\n    setData() {\n        if (!this._loaded)\n            return;\n        for (const col of this.model.source.columns()) {\n            if (!(col in this.model.schema))\n                return;\n        }\n        this.table.replace(this.data);\n    }\n    stream() {\n        if (this._loaded)\n            this.table.replace(this.data);\n    }\n    patch() {\n        if (this._loaded)\n            this.table.replace(this.data);\n    }\n}\nexports.PerspectiveView = PerspectiveView;\nPerspectiveView.__name__ = \"PerspectiveView\";\nclass Perspective extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.Perspective = Perspective;\n_b = Perspective;\nPerspective.__name__ = \"Perspective\";\nPerspective.__module__ = \"panel.models.perspective\";\n(() => {\n    _b.prototype.default_view = PerspectiveView;\n    _b.define(({ Any, Array, Boolean, Ref, Nullable, String }) => ({\n        aggregates: [Any, {}],\n        columns: [Array(Nullable(String)), []],\n        expressions: [Nullable(Array(String)), null],\n        split_by: [Nullable(Array(String)), null],\n        editable: [Boolean, true],\n        filters: [Nullable(Array(Any)), null],\n        group_by: [Nullable(Array(String)), null],\n        plugin: [String,],\n        plugin_config: [Any, {}],\n        selectable: [Boolean, true],\n        schema: [Any, {}],\n        toggle_config: [Boolean, true],\n        sort: [Nullable(Array(Array(String))), null],\n        source: [Ref(column_data_source_1.ColumnDataSource),],\n        theme: [String, 'material']\n    }));\n})();\n//# sourceMappingURL=perspective.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"PerspectiveClickEvent"},{"type":"named","name":"PerspectiveView"},{"type":"named","name":"Perspective"}],"externals":[],"shims":[]},"code":{"source":"/* models/perspective.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a, _b;\n    const bokeh_events_1 = require(\"@bokehjs/core/bokeh_events\");\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const column_data_source_1 = require(\"@bokehjs/models/sources/column_data_source\");\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    const THEMES = {\n        'material-dark': 'Material Dark',\n        'material': 'Material Light',\n        'vaporwave': 'Vaporwave',\n        'solarized': 'Solarized',\n        'solarized-dark': 'Solarized Dark',\n        'monokai': 'Monokai'\n    };\n    const PLUGINS = {\n        'datagrid': 'Datagrid',\n        'd3_x_bar': 'X Bar',\n        'd3_y_bar': 'Y Bar',\n        'd3_xy_line': 'X/Y Line',\n        'd3_y_line': 'Y Line',\n        'd3_y_area': 'Y Area',\n        'd3_y_scatter': 'Y Scatter',\n        'd3_xy_scatter': 'X/Y Scatter',\n        'd3_treemap': 'Treemap',\n        'd3_candlestick': 'Candlestick',\n        'd3_sunburst': 'Sunburst',\n        'd3_heatmap': 'Heatmap',\n        'd3_ohlc': 'OHLC'\n    };\n    function objectFlip(obj) {\n        const ret = {};\n        Object.keys(obj).forEach(key => {\n            ret[obj[key]] = key;\n        });\n        return ret;\n    }\n    const PLUGINS_REVERSE = objectFlip(PLUGINS);\n    const THEMES_REVERSE = objectFlip(THEMES);\n    class PerspectiveClickEvent extends bokeh_events_1.ModelEvent {\n        constructor(config, column_names, row) {\n            super();\n            this.config = config;\n            this.column_names = column_names;\n            this.row = row;\n        }\n        get event_values() {\n            return { model: this.origin, config: this.config, column_names: this.column_names, row: this.row };\n        }\n    }\n    exports.PerspectiveClickEvent = PerspectiveClickEvent;\n    _a = PerspectiveClickEvent;\n    PerspectiveClickEvent.__name__ = \"PerspectiveClickEvent\";\n    (() => {\n        _a.prototype.event_name = \"perspective-click\";\n    })();\n    class PerspectiveView extends layout_1.HTMLBoxView {\n        constructor() {\n            super(...arguments);\n            this._updating = false;\n            this._config_listener = null;\n            this._current_config = null;\n            this._loaded = false;\n        }\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.source.properties.data.change, () => this.setData());\n            this.connect(this.model.source.streaming, () => this.stream());\n            this.connect(this.model.source.patching, () => this.patch());\n            this.connect(this.model.properties.schema.change, () => {\n                this.worker.table(this.model.schema).then((table) => {\n                    this.table = table;\n                    this.table.update(this.data);\n                    this.perspective_element.load(this.table);\n                });\n            });\n            this.connect(this.model.properties.toggle_config.change, () => {\n                this.perspective_element.toggleConfig();\n            });\n            this.connect(this.model.properties.columns.change, () => {\n                if (this._updating)\n                    return;\n                this.perspective_element.restore({ \"columns\": this.model.columns });\n            });\n            this.connect(this.model.properties.expressions.change, () => {\n                if (this._updating)\n                    return;\n                this.perspective_element.restore({ \"expressions\": this.model.expressions });\n            });\n            this.connect(this.model.properties.split_by.change, () => {\n                if (this._updating)\n                    return;\n                this.perspective_element.restore({ \"split_by\": this.model.split_by });\n            });\n            this.connect(this.model.properties.group_by.change, () => {\n                if (this._updating)\n                    return;\n                this.perspective_element.restore({ \"group_by\": this.model.group_by });\n            });\n            this.connect(this.model.properties.aggregates.change, () => {\n                if (this._updating)\n                    return;\n                this.perspective_element.restore({ \"aggregates\": this.model.aggregates });\n            });\n            this.connect(this.model.properties.filters.change, () => {\n                if (this._updating)\n                    return;\n                this.perspective_element.restore({ \"filter\": this.model.filters });\n            });\n            this.connect(this.model.properties.sort.change, () => {\n                if (this._updating)\n                    return;\n                this.perspective_element.restore({ \"sort\": this.model.sort });\n            });\n            this.connect(this.model.properties.plugin.change, () => {\n                if (this._updating)\n                    return;\n                this.perspective_element.restore({ \"plugin\": PLUGINS[this.model.plugin] });\n            });\n            this.connect(this.model.properties.selectable.change, () => {\n                if (this._updating)\n                    return;\n                this.perspective_element.restore({ \"plugin_config\": Object.assign(Object.assign({}, this._current_config), { selectable: this.model.selectable }) });\n            });\n            this.connect(this.model.properties.editable.change, () => {\n                if (this._updating)\n                    return;\n                this.perspective_element.restore({ \"plugin_config\": Object.assign(Object.assign({}, this._current_config), { editable: this.model.editable }) });\n            });\n            this.connect(this.model.properties.theme.change, () => {\n                if (this._updating)\n                    return;\n                this.perspective_element.restore({ \"theme\": THEMES[this.model.theme] }).catch(() => { });\n            });\n        }\n        disconnect_signals() {\n            if (this._config_listener != null)\n                this.perspective_element.removeEventListener(\"perspective-config-update\", this._config_listener);\n            this._config_listener = null;\n            super.disconnect_signals();\n        }\n        remove() {\n            this.perspective_element.delete(() => this.worker.terminate());\n            super.remove();\n        }\n        render() {\n            super.render();\n            this.worker = window.perspective.worker();\n            const container = (0, dom_1.div)({\n                class: \"pnx-perspective-viewer\",\n                style: {\n                    zIndex: 0,\n                }\n            });\n            container.innerHTML = \"<perspective-viewer style='height:100%; width:100%;'></perspective-viewer>\";\n            this.perspective_element = container.children[0];\n            this.perspective_element.resetThemes([...Object.values(THEMES)]).catch(() => { });\n            if (this.model.toggle_config)\n                this.perspective_element.toggleConfig();\n            (0, layout_1.set_size)(container, this.model);\n            this.shadow_el.appendChild(container);\n            this.worker.table(this.model.schema).then((table) => {\n                this.table = table;\n                this.table.update(this.data);\n                this.perspective_element.load(this.table);\n                const plugin_config = Object.assign(Object.assign({}, this.model.plugin_config), { editable: this.model.editable, selectable: this.model.selectable });\n                this.perspective_element.restore({\n                    aggregates: this.model.aggregates,\n                    columns: this.model.columns,\n                    expressions: this.model.expressions,\n                    filter: this.model.filters,\n                    split_by: this.model.split_by,\n                    group_by: this.model.group_by,\n                    plugin: PLUGINS[this.model.plugin],\n                    plugin_config: plugin_config,\n                    sort: this.model.sort,\n                    theme: THEMES[this.model.theme]\n                }).catch(() => { });\n                this.perspective_element.save().then((config) => {\n                    this._current_config = config;\n                });\n                this._config_listener = () => this.sync_config();\n                this.perspective_element.addEventListener(\"perspective-config-update\", this._config_listener);\n                this.perspective_element.addEventListener(\"perspective-click\", (event) => {\n                    this.model.trigger_event(new PerspectiveClickEvent(event.detail.config, event.detail.column_names, event.detail.row));\n                });\n                this._loaded = true;\n            });\n        }\n        sync_config() {\n            if (this._updating)\n                return true;\n            this.perspective_element.save().then((config) => {\n                this._current_config = config;\n                const props = {};\n                for (let option in config) {\n                    let value = config[option];\n                    if (value === undefined || (option == 'plugin' && value === \"debug\") || option === 'settings')\n                        continue;\n                    if (option === 'filter')\n                        option = 'filters';\n                    else if (option === 'plugin')\n                        value = PLUGINS_REVERSE[value];\n                    else if (option === 'theme')\n                        value = THEMES_REVERSE[value];\n                    props[option] = value;\n                }\n                this._updating = true;\n                this.model.setv(props);\n                this._updating = false;\n            });\n            return true;\n        }\n        get data() {\n            const data = {};\n            for (const column of this.model.source.columns()) {\n                let array = this.model.source.get_array(column);\n                if (this.model.schema[column] == 'datetime' && array.includes(-9223372036854776)) {\n                    array = array.map((v) => v === -9223372036854776 ? null : v);\n                }\n                data[column] = array;\n            }\n            return data;\n        }\n        setData() {\n            if (!this._loaded)\n                return;\n            for (const col of this.model.source.columns()) {\n                if (!(col in this.model.schema))\n                    return;\n            }\n            this.table.replace(this.data);\n        }\n        stream() {\n            if (this._loaded)\n                this.table.replace(this.data);\n        }\n        patch() {\n            if (this._loaded)\n                this.table.replace(this.data);\n        }\n    }\n    exports.PerspectiveView = PerspectiveView;\n    PerspectiveView.__name__ = \"PerspectiveView\";\n    class Perspective extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.Perspective = Perspective;\n    _b = Perspective;\n    Perspective.__name__ = \"Perspective\";\n    Perspective.__module__ = \"panel.models.perspective\";\n    (() => {\n        _b.prototype.default_view = PerspectiveView;\n        _b.define(({ Any, Array, Boolean, Ref, Nullable, String }) => ({\n            aggregates: [Any, {}],\n            columns: [Array(Nullable(String)), []],\n            expressions: [Nullable(Array(String)), null],\n            split_by: [Nullable(Array(String)), null],\n            editable: [Boolean, true],\n            filters: [Nullable(Array(Any)), null],\n            group_by: [Nullable(Array(String)), null],\n            plugin: [String,],\n            plugin_config: [Any, {}],\n            selectable: [Boolean, true],\n            schema: [Any, {}],\n            toggle_config: [Boolean, true],\n            sort: [Nullable(Array(Array(String))), null],\n            source: [Ref(column_data_source_1.ColumnDataSource),],\n            theme: [String, 'material']\n        }));\n    })();\n}\n","min_source":"function _(e,t,s,i,n){var r,o;i();const l=e(\"@bokehjs/core/bokeh_events\"),c=e(\"@bokehjs/core/dom\"),a=e(\"@bokehjs/models/sources/column_data_source\"),h=e(\"cac5f3ed28\"),p={\"material-dark\":\"Material Dark\",material:\"Material Light\",vaporwave:\"Vaporwave\",solarized:\"Solarized\",\"solarized-dark\":\"Solarized Dark\",monokai:\"Monokai\"},d={datagrid:\"Datagrid\",d3_x_bar:\"X Bar\",d3_y_bar:\"Y Bar\",d3_xy_line:\"X/Y Line\",d3_y_line:\"Y Line\",d3_y_area:\"Y Area\",d3_y_scatter:\"Y Scatter\",d3_xy_scatter:\"X/Y Scatter\",d3_treemap:\"Treemap\",d3_candlestick:\"Candlestick\",d3_sunburst:\"Sunburst\",d3_heatmap:\"Heatmap\",d3_ohlc:\"OHLC\"};function _(e){const t={};return Object.keys(e).forEach((s=>{t[e[s]]=s})),t}const m=_(d),g=_(p);class u extends l.ModelEvent{constructor(e,t,s){super(),this.config=e,this.column_names=t,this.row=s}get event_values(){return{model:this.origin,config:this.config,column_names:this.column_names,row:this.row}}}s.PerspectiveClickEvent=u,r=u,u.__name__=\"PerspectiveClickEvent\",r.prototype.event_name=\"perspective-click\";class v extends h.HTMLBoxView{constructor(){super(...arguments),this._updating=!1,this._config_listener=null,this._current_config=null,this._loaded=!1}connect_signals(){super.connect_signals(),this.connect(this.model.source.properties.data.change,(()=>this.setData())),this.connect(this.model.source.streaming,(()=>this.stream())),this.connect(this.model.source.patching,(()=>this.patch())),this.connect(this.model.properties.schema.change,(()=>{this.worker.table(this.model.schema).then((e=>{this.table=e,this.table.update(this.data),this.perspective_element.load(this.table)}))})),this.connect(this.model.properties.toggle_config.change,(()=>{this.perspective_element.toggleConfig()})),this.connect(this.model.properties.columns.change,(()=>{this._updating||this.perspective_element.restore({columns:this.model.columns})})),this.connect(this.model.properties.expressions.change,(()=>{this._updating||this.perspective_element.restore({expressions:this.model.expressions})})),this.connect(this.model.properties.split_by.change,(()=>{this._updating||this.perspective_element.restore({split_by:this.model.split_by})})),this.connect(this.model.properties.group_by.change,(()=>{this._updating||this.perspective_element.restore({group_by:this.model.group_by})})),this.connect(this.model.properties.aggregates.change,(()=>{this._updating||this.perspective_element.restore({aggregates:this.model.aggregates})})),this.connect(this.model.properties.filters.change,(()=>{this._updating||this.perspective_element.restore({filter:this.model.filters})})),this.connect(this.model.properties.sort.change,(()=>{this._updating||this.perspective_element.restore({sort:this.model.sort})})),this.connect(this.model.properties.plugin.change,(()=>{this._updating||this.perspective_element.restore({plugin:d[this.model.plugin]})})),this.connect(this.model.properties.selectable.change,(()=>{this._updating||this.perspective_element.restore({plugin_config:Object.assign(Object.assign({},this._current_config),{selectable:this.model.selectable})})})),this.connect(this.model.properties.editable.change,(()=>{this._updating||this.perspective_element.restore({plugin_config:Object.assign(Object.assign({},this._current_config),{editable:this.model.editable})})})),this.connect(this.model.properties.theme.change,(()=>{this._updating||this.perspective_element.restore({theme:p[this.model.theme]}).catch((()=>{}))}))}disconnect_signals(){null!=this._config_listener&&this.perspective_element.removeEventListener(\"perspective-config-update\",this._config_listener),this._config_listener=null,super.disconnect_signals()}remove(){this.perspective_element.delete((()=>this.worker.terminate())),super.remove()}render(){super.render(),this.worker=window.perspective.worker();const e=(0,c.div)({class:\"pnx-perspective-viewer\",style:{zIndex:0}});e.innerHTML=\"<perspective-viewer style='height:100%; width:100%;'></perspective-viewer>\",this.perspective_element=e.children[0],this.perspective_element.resetThemes([...Object.values(p)]).catch((()=>{})),this.model.toggle_config&&this.perspective_element.toggleConfig(),(0,h.set_size)(e,this.model),this.shadow_el.appendChild(e),this.worker.table(this.model.schema).then((e=>{this.table=e,this.table.update(this.data),this.perspective_element.load(this.table);const t=Object.assign(Object.assign({},this.model.plugin_config),{editable:this.model.editable,selectable:this.model.selectable});this.perspective_element.restore({aggregates:this.model.aggregates,columns:this.model.columns,expressions:this.model.expressions,filter:this.model.filters,split_by:this.model.split_by,group_by:this.model.group_by,plugin:d[this.model.plugin],plugin_config:t,sort:this.model.sort,theme:p[this.model.theme]}).catch((()=>{})),this.perspective_element.save().then((e=>{this._current_config=e})),this._config_listener=()=>this.sync_config(),this.perspective_element.addEventListener(\"perspective-config-update\",this._config_listener),this.perspective_element.addEventListener(\"perspective-click\",(e=>{this.model.trigger_event(new u(e.detail.config,e.detail.column_names,e.detail.row))})),this._loaded=!0}))}sync_config(){return this._updating||this.perspective_element.save().then((e=>{this._current_config=e;const t={};for(let s in e){let i=e[s];void 0===i||\"plugin\"==s&&\"debug\"===i||\"settings\"===s||(\"filter\"===s?s=\"filters\":\"plugin\"===s?i=m[i]:\"theme\"===s&&(i=g[i]),t[s]=i)}this._updating=!0,this.model.setv(t),this._updating=!1})),!0}get data(){const e={};for(const t of this.model.source.columns()){let s=this.model.source.get_array(t);\"datetime\"==this.model.schema[t]&&s.includes(-9223372036854776)&&(s=s.map((e=>-9223372036854776===e?null:e))),e[t]=s}return e}setData(){if(this._loaded){for(const e of this.model.source.columns())if(!(e in this.model.schema))return;this.table.replace(this.data)}}stream(){this._loaded&&this.table.replace(this.data)}patch(){this._loaded&&this.table.replace(this.data)}}s.PerspectiveView=v,v.__name__=\"PerspectiveView\";class b extends h.HTMLBox{constructor(e){super(e)}}s.Perspective=b,o=b,b.__name__=\"Perspective\",b.__module__=\"panel.models.perspective\",o.prototype.default_view=v,o.define((({Any:e,Array:t,Boolean:s,Ref:i,Nullable:n,String:r})=>({aggregates:[e,{}],columns:[t(n(r)),[]],expressions:[n(t(r)),null],split_by:[n(t(r)),null],editable:[s,!0],filters:[n(t(e)),null],group_by:[n(t(r)),null],plugin:[r],plugin_config:[e,{}],selectable:[s,!0],schema:[e,{}],toggle_config:[s,!0],sort:[n(t(t(r))),null],source:[i(a.ColumnDataSource)],theme:[r,\"material\"]})))}\n//# sourceMappingURL=perspective.min.js.map","min_map":"{\"version\":3,\"file\":\"perspective.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"_b\",\"bokeh_events_1\",\"dom_1\",\"column_data_source_1\",\"layout_1\",\"THEMES\",\"material\",\"vaporwave\",\"solarized\",\"monokai\",\"PLUGINS\",\"datagrid\",\"d3_x_bar\",\"d3_y_bar\",\"d3_xy_line\",\"d3_y_line\",\"d3_y_area\",\"d3_y_scatter\",\"d3_xy_scatter\",\"d3_treemap\",\"d3_candlestick\",\"d3_sunburst\",\"d3_heatmap\",\"d3_ohlc\",\"objectFlip\",\"obj\",\"ret\",\"Object\",\"keys\",\"forEach\",\"key\",\"PLUGINS_REVERSE\",\"THEMES_REVERSE\",\"PerspectiveClickEvent\",\"ModelEvent\",\"constructor\",\"config\",\"column_names\",\"row\",\"super\",\"this\",\"event_values\",\"model\",\"origin\",\"__name__\",\"prototype\",\"event_name\",\"PerspectiveView\",\"HTMLBoxView\",\"arguments\",\"_updating\",\"_config_listener\",\"_current_config\",\"_loaded\",\"connect_signals\",\"connect\",\"source\",\"properties\",\"data\",\"change\",\"setData\",\"streaming\",\"stream\",\"patching\",\"patch\",\"schema\",\"worker\",\"table\",\"then\",\"update\",\"perspective_element\",\"load\",\"toggle_config\",\"toggleConfig\",\"columns\",\"restore\",\"expressions\",\"split_by\",\"group_by\",\"aggregates\",\"filters\",\"filter\",\"sort\",\"plugin\",\"selectable\",\"plugin_config\",\"assign\",\"editable\",\"theme\",\"catch\",\"disconnect_signals\",\"removeEventListener\",\"remove\",\"delete\",\"terminate\",\"render\",\"window\",\"perspective\",\"container\",\"div\",\"class\",\"style\",\"zIndex\",\"innerHTML\",\"children\",\"resetThemes\",\"values\",\"set_size\",\"shadow_el\",\"appendChild\",\"save\",\"sync_config\",\"addEventListener\",\"event\",\"trigger_event\",\"detail\",\"props\",\"option\",\"value\",\"undefined\",\"setv\",\"column\",\"array\",\"get_array\",\"includes\",\"map\",\"v\",\"col\",\"replace\",\"Perspective\",\"HTMLBox\",\"attrs\",\"__module__\",\"default_view\",\"define\",\"Any\",\"Array\",\"Boolean\",\"Ref\",\"Nullable\",\"String\",\"ColumnDataSource\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/player.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/player.js","canonical":"models/player","resolution":"ESM","id":"9148c6a6f9","hash":"9148c6a6f9b61d0ffb0a367872beab2491debbfc38610d41863b9367ea39a166","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Player = exports.LoopPolicy = exports.PlayerView = void 0;\nvar _a;\nconst kinds_1 = require(\"@bokehjs/core/kinds\");\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst widget_1 = require(\"@bokehjs/models/widgets/widget\");\nconst SVG_STRINGS = {\n    slower: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-minus\" width=\"24\" \\\n height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\"\\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" \\\n   fill=\"none\"/><path d=\"M5 12l14 0\" /></svg>',\n    first: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-track-prev-filled\" \\\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" \\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\\\n   <path d=\"M20.341 4.247l-8 7a1 1 0 0 0 0 1.506l8 7c.647 .565 1.659 .106 1.659 -.753v-14c0 -.86 \\\n    -1.012 -1.318 -1.659 -.753z\" stroke-width=\"0\" fill=\"currentColor\" /><path d=\"M9.341 4.247l-8 7a1 \\\n     1 0 0 0 0 1.506l8 7c.647 .565 1.659 .106 1.659 -.753v-14c0 -.86 -1.012 -1.318 -1.659 -.753z\" \\\n      stroke-width=\"0\" fill=\"currentColor\" /></svg>',\n    previous: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-skip-back-filled\" \\\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" \\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/> \\\n   <path d=\"M19.496 4.136l-12 7a1 1 0 0 0 0 1.728l12 7a1 1 0 0 0 1.504 -.864v-14a1 1 0 0 0 -1.504 -.864z\" \\\n    stroke-width=\"0\" fill=\"currentColor\" /><path d=\"M4 4a1 1 0 0 1 .993 .883l.007 .117v14a1 1 0 0 1 -1.993 \\\n     .117l-.007 -.117v-14a1 1 0 0 1 1 -1z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',\n    reverse: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-play-filled\"\\\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\"\\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"transform: scaleX(-1);\"><path stroke=\"none\"\\\n   d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M6 4v16a1 1 0 0 0 1.524 .852l13 -8a1 1 0 0 0 0 -1.704l-13\\\n    -8a1 1 0 0 0 -1.524 .852z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',\n    pause: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-pause-filled\" \\\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" \\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" \\\n   fill=\"none\"/><path d=\"M9 4h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h2a2 2 0 0 0 2 -2v-12a2 2 0 \\\n    0 0 -2 -2z\" stroke-width=\"0\" fill=\"currentColor\" /><path d=\"M17 4h-2a2 2 0 0 0 -2 2v12a2 \\\n     2 0 0 0 2 2h2a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',\n    play: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-play-filled\" \\\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" \\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" \\\n   fill=\"none\"/><path d=\"M6 4v16a1 1 0 0 0 1.524 .852l13 -8a1 1 0 0 0 0 -1.704l-13 -8a1 \\\n    1 0 0 0 -1.524 .852z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',\n    next: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-skip-forward-filled\" \\\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" \\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/> \\\n  <path d=\"M3 5v14a1 1 0 0 0 1.504 .864l12 -7a1 1 0 0 0 0 -1.728l-12 -7a1 1 0 0 0 -1.504 .864z\" \\\n   stroke-width=\"0\" fill=\"currentColor\" /><path d=\"M20 4a1 1 0 0 1 .993 .883l.007 .117v14a1 1 0 0 \\\n    1 -1.993 .117l-.007 -.117v-14a1 1 0 0 1 1 -1z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',\n    last: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-track-next-filled\" \\\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" \\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" \\\n   fill=\"none\"/><path d=\"M2 5v14c0 .86 1.012 1.318 1.659 .753l8 -7a1 1 0 0 0 0 -1.506l-8 \\\n   -7c-.647 -.565 -1.659 -.106 -1.659 .753z\" stroke-width=\"0\" fill=\"currentColor\" /><path \\\n    d=\"M13 5v14c0 .86 1.012 1.318 1.659 .753l8 -7a1 1 0 0 0 0 -1.506l-8 -7c-.647 -.565 -1.659 \\\n     -.106 -1.659 .753z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',\n    faster: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-plus\" \\\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" \\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" \\\n   fill=\"none\"/><path d=\"M12 5l0 14\" /><path d=\"M5 12l14 0\" /></svg>',\n};\nfunction press(btn_list) {\n    btn_list.forEach((btn) => btn.style.borderStyle = 'inset');\n}\nfunction unpress(btn_list) {\n    btn_list.forEach((btn) => btn.style.borderStyle = 'outset');\n}\nclass PlayerView extends widget_1.WidgetView {\n    constructor() {\n        super(...arguments);\n        this._changing = false;\n    }\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.direction.change, () => this.set_direction());\n        this.connect(this.model.properties.value.change, () => this.render());\n        this.connect(this.model.properties.loop_policy.change, () => this.set_loop_state(this.model.loop_policy));\n        this.connect(this.model.properties.disabled.change, () => this.toggle_disable());\n        this.connect(this.model.properties.show_loop_controls.change, () => {\n            if (this.model.show_loop_controls && this.loop_state.parentNode != this.groupEl)\n                this.groupEl.appendChild(this.loop_state);\n            else if (!this.model.show_loop_controls && this.loop_state.parentNode == this.groupEl)\n                this.groupEl.removeChild(this.loop_state);\n        });\n    }\n    toggle_disable() {\n        this.sliderEl.disabled = this.model.disabled;\n        for (const el of this.buttonEl.children) {\n            const anyEl = el;\n            anyEl.disabled = this.model.disabled;\n        }\n        for (const el of this.loop_state.children) {\n            if (el.tagName == \"input\") {\n                const anyEl = el;\n                anyEl.disabled = this.model.disabled;\n            }\n        }\n    }\n    get_height() {\n        return 250;\n    }\n    render() {\n        if (this.sliderEl == null) {\n            super.render();\n        }\n        else {\n            this.sliderEl.min = String(this.model.start);\n            this.sliderEl.max = String(this.model.end);\n            this.sliderEl.value = String(this.model.value);\n            return;\n        }\n        // Layout to group the elements\n        this.groupEl = (0, dom_1.div)();\n        this.groupEl.style.display = \"flex\";\n        this.groupEl.style.flexDirection = \"column\";\n        this.groupEl.style.alignItems = \"center\";\n        // Slider\n        this.sliderEl = document.createElement('input');\n        this.sliderEl.style.width = \"100%\";\n        this.sliderEl.setAttribute(\"type\", \"range\");\n        this.sliderEl.value = String(this.model.value);\n        this.sliderEl.min = String(this.model.start);\n        this.sliderEl.max = String(this.model.end);\n        this.sliderEl.addEventListener('input', (ev) => {\n            this.set_frame(parseInt(ev.target.value), false);\n        });\n        this.sliderEl.addEventListener('change', (ev) => {\n            this.set_frame(parseInt(ev.target.value));\n        });\n        // Buttons\n        const button_div = (0, dom_1.div)();\n        this.buttonEl = button_div;\n        button_div.style.cssText = \"margin: 0 auto; display: flex; padding: 5px; align-items: stretch; width: 100%;\";\n        const button_style_small = \"text-align: center; min-width: 20px; flex-grow: 1; margin: 2px\";\n        const button_style = \"text-align: center; min-width: 40px; flex-grow: 2; margin: 2px\";\n        const slower = document.createElement('button');\n        slower.style.cssText = button_style_small;\n        slower.innerHTML = SVG_STRINGS['slower'];\n        slower.onclick = () => this.slower();\n        button_div.appendChild(slower);\n        const first = document.createElement('button');\n        first.style.cssText = button_style;\n        first.innerHTML = SVG_STRINGS['first'];\n        first.onclick = () => this.first_frame();\n        button_div.appendChild(first);\n        const previous = document.createElement('button');\n        previous.style.cssText = button_style;\n        previous.innerHTML = SVG_STRINGS['previous'];\n        previous.onclick = () => this.previous_frame();\n        button_div.appendChild(previous);\n        const reverse = document.createElement('button');\n        reverse.style.cssText = button_style;\n        reverse.innerHTML = SVG_STRINGS['reverse'];\n        reverse.onclick = () => this.reverse_animation();\n        button_div.appendChild(reverse);\n        const pause = document.createElement('button');\n        pause.style.cssText = button_style;\n        pause.innerHTML = SVG_STRINGS['pause'];\n        pause.onclick = () => this.pause_animation();\n        button_div.appendChild(pause);\n        const play = document.createElement('button');\n        play.style.cssText = button_style;\n        play.innerHTML = SVG_STRINGS['play'];\n        play.onclick = () => this.play_animation();\n        button_div.appendChild(play);\n        const next = document.createElement('button');\n        next.style.cssText = button_style;\n        next.innerHTML = SVG_STRINGS['next'];\n        next.onclick = () => this.next_frame();\n        button_div.appendChild(next);\n        const last = document.createElement('button');\n        last.style.cssText = button_style;\n        last.innerHTML = SVG_STRINGS['last'];\n        last.onclick = () => this.last_frame();\n        button_div.appendChild(last);\n        const faster = document.createElement('button');\n        faster.style.cssText = button_style_small;\n        faster.innerHTML = SVG_STRINGS['faster'];\n        faster.onclick = () => this.faster();\n        button_div.appendChild(faster);\n        // toggle\n        this._toggle_reverse = () => {\n            unpress([pause, play]);\n            press([reverse]);\n        };\n        this._toogle_pause = () => {\n            unpress([reverse, play]);\n            press([pause]);\n        };\n        this._toggle_play = () => {\n            unpress([reverse, pause]);\n            press([play]);\n        };\n        // Loop control\n        this.loop_state = document.createElement('form');\n        this.loop_state.style.cssText = \"margin: 0 auto; display: table\";\n        const once = document.createElement('input');\n        once.type = \"radio\";\n        once.value = \"once\";\n        once.name = \"state\";\n        const once_label = document.createElement('label');\n        once_label.innerHTML = \"Once\";\n        once_label.style.cssText = \"padding: 0 10px 0 5px; user-select:none;\";\n        const loop = document.createElement('input');\n        loop.setAttribute(\"type\", \"radio\");\n        loop.setAttribute(\"value\", \"loop\");\n        loop.setAttribute(\"name\", \"state\");\n        const loop_label = document.createElement('label');\n        loop_label.innerHTML = \"Loop\";\n        loop_label.style.cssText = \"padding: 0 10px 0 5px; user-select:none;\";\n        const reflect = document.createElement('input');\n        reflect.setAttribute(\"type\", \"radio\");\n        reflect.setAttribute(\"value\", \"reflect\");\n        reflect.setAttribute(\"name\", \"state\");\n        const reflect_label = document.createElement('label');\n        reflect_label.innerHTML = \"Reflect\";\n        reflect_label.style.cssText = \"padding: 0 10px 0 5px; user-select:none;\";\n        if (this.model.loop_policy == \"once\")\n            once.checked = true;\n        else if (this.model.loop_policy == \"loop\")\n            loop.checked = true;\n        else\n            reflect.checked = true;\n        // Compose everything\n        this.loop_state.appendChild(once);\n        this.loop_state.appendChild(once_label);\n        this.loop_state.appendChild(loop);\n        this.loop_state.appendChild(loop_label);\n        this.loop_state.appendChild(reflect);\n        this.loop_state.appendChild(reflect_label);\n        this.groupEl.appendChild(this.sliderEl);\n        this.groupEl.appendChild(button_div);\n        if (this.model.show_loop_controls)\n            this.groupEl.appendChild(this.loop_state);\n        this.toggle_disable();\n        this.shadow_el.appendChild(this.groupEl);\n    }\n    set_frame(frame, throttled = true) {\n        this.model.value = frame;\n        if (throttled)\n            this.model.value_throttled = frame;\n        if (this.sliderEl.value != String(frame))\n            this.sliderEl.value = String(frame);\n    }\n    get_loop_state() {\n        var button_group = this.loop_state.state;\n        for (var i = 0; i < button_group.length; i++) {\n            var button = button_group[i];\n            if (button.checked)\n                return button.value;\n        }\n        return \"once\";\n    }\n    set_loop_state(state) {\n        var button_group = this.loop_state.state;\n        for (var i = 0; i < button_group.length; i++) {\n            var button = button_group[i];\n            if (button.value == state)\n                button.checked = true;\n        }\n    }\n    next_frame() {\n        this.set_frame(Math.min(this.model.end, this.model.value + this.model.step));\n    }\n    previous_frame() {\n        this.set_frame(Math.max(this.model.start, this.model.value - this.model.step));\n    }\n    first_frame() {\n        this.set_frame(this.model.start);\n    }\n    last_frame() {\n        this.set_frame(this.model.end);\n    }\n    slower() {\n        this.model.interval = Math.round(this.model.interval / 0.7);\n        if (this.model.direction > 0)\n            this.play_animation();\n        else if (this.model.direction < 0)\n            this.reverse_animation();\n    }\n    faster() {\n        this.model.interval = Math.round(this.model.interval * 0.7);\n        if (this.model.direction > 0)\n            this.play_animation();\n        else if (this.model.direction < 0)\n            this.reverse_animation();\n    }\n    anim_step_forward() {\n        if (this.model.value < this.model.end) {\n            this.next_frame();\n        }\n        else {\n            var loop_state = this.get_loop_state();\n            if (loop_state == \"loop\") {\n                this.first_frame();\n            }\n            else if (loop_state == \"reflect\") {\n                this.last_frame();\n                this.reverse_animation();\n            }\n            else {\n                this.pause_animation();\n                this.last_frame();\n            }\n        }\n    }\n    anim_step_reverse() {\n        if (this.model.value > this.model.start) {\n            this.previous_frame();\n        }\n        else {\n            var loop_state = this.get_loop_state();\n            if (loop_state == \"loop\") {\n                this.last_frame();\n            }\n            else if (loop_state == \"reflect\") {\n                this.first_frame();\n                this.play_animation();\n            }\n            else {\n                this.pause_animation();\n                this.first_frame();\n            }\n        }\n    }\n    set_direction() {\n        if (this._changing)\n            return;\n        else if (this.model.direction === 0)\n            this.pause_animation();\n        else if (this.model.direction === 1)\n            this.play_animation();\n        else if (this.model.direction === -1)\n            this.reverse_animation();\n    }\n    pause_animation() {\n        this._toogle_pause();\n        this._changing = true;\n        this.model.direction = 0;\n        this._changing = false;\n        if (this.timer) {\n            clearInterval(this.timer);\n            this.timer = null;\n        }\n    }\n    play_animation() {\n        this.pause_animation();\n        this._toggle_play();\n        this._changing = true;\n        this.model.direction = 1;\n        this._changing = false;\n        if (!this.timer)\n            this.timer = setInterval(() => this.anim_step_forward(), this.model.interval);\n    }\n    reverse_animation() {\n        this.pause_animation();\n        this._toggle_reverse();\n        this._changing = true;\n        this.model.direction = -1;\n        this._changing = false;\n        if (!this.timer)\n            this.timer = setInterval(() => this.anim_step_reverse(), this.model.interval);\n    }\n}\nexports.PlayerView = PlayerView;\nPlayerView.__name__ = \"PlayerView\";\nexports.LoopPolicy = (0, kinds_1.Enum)(\"once\", \"loop\", \"reflect\");\nclass Player extends widget_1.Widget {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.Player = Player;\n_a = Player;\nPlayer.__name__ = \"Player\";\nPlayer.__module__ = \"panel.models.widgets\";\n(() => {\n    _a.prototype.default_view = PlayerView;\n    _a.define(({ Boolean, Int }) => ({\n        direction: [Int, 0],\n        interval: [Int, 500],\n        start: [Int, 0],\n        end: [Int, 10],\n        step: [Int, 1],\n        loop_policy: [exports.LoopPolicy, \"once\"],\n        value: [Int, 0],\n        value_throttled: [Int, 0],\n        show_loop_controls: [Boolean, true],\n    }));\n    _a.override({ width: 400 });\n})();\n//# sourceMappingURL=player.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"PlayerView"},{"type":"named","name":"Player"}],"externals":[],"shims":[]},"code":{"source":"/* models/player.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const kinds_1 = require(\"@bokehjs/core/kinds\");\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const widget_1 = require(\"@bokehjs/models/widgets/widget\");\n    const SVG_STRINGS = {\n        slower: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-minus\" width=\"24\" \\\n height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\"\\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" \\\n   fill=\"none\"/><path d=\"M5 12l14 0\" /></svg>',\n        first: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-track-prev-filled\" \\\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" \\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\\\n   <path d=\"M20.341 4.247l-8 7a1 1 0 0 0 0 1.506l8 7c.647 .565 1.659 .106 1.659 -.753v-14c0 -.86 \\\n    -1.012 -1.318 -1.659 -.753z\" stroke-width=\"0\" fill=\"currentColor\" /><path d=\"M9.341 4.247l-8 7a1 \\\n     1 0 0 0 0 1.506l8 7c.647 .565 1.659 .106 1.659 -.753v-14c0 -.86 -1.012 -1.318 -1.659 -.753z\" \\\n      stroke-width=\"0\" fill=\"currentColor\" /></svg>',\n        previous: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-skip-back-filled\" \\\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" \\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/> \\\n   <path d=\"M19.496 4.136l-12 7a1 1 0 0 0 0 1.728l12 7a1 1 0 0 0 1.504 -.864v-14a1 1 0 0 0 -1.504 -.864z\" \\\n    stroke-width=\"0\" fill=\"currentColor\" /><path d=\"M4 4a1 1 0 0 1 .993 .883l.007 .117v14a1 1 0 0 1 -1.993 \\\n     .117l-.007 -.117v-14a1 1 0 0 1 1 -1z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',\n        reverse: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-play-filled\"\\\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\"\\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"transform: scaleX(-1);\"><path stroke=\"none\"\\\n   d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M6 4v16a1 1 0 0 0 1.524 .852l13 -8a1 1 0 0 0 0 -1.704l-13\\\n    -8a1 1 0 0 0 -1.524 .852z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',\n        pause: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-pause-filled\" \\\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" \\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" \\\n   fill=\"none\"/><path d=\"M9 4h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h2a2 2 0 0 0 2 -2v-12a2 2 0 \\\n    0 0 -2 -2z\" stroke-width=\"0\" fill=\"currentColor\" /><path d=\"M17 4h-2a2 2 0 0 0 -2 2v12a2 \\\n     2 0 0 0 2 2h2a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',\n        play: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-play-filled\" \\\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" \\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" \\\n   fill=\"none\"/><path d=\"M6 4v16a1 1 0 0 0 1.524 .852l13 -8a1 1 0 0 0 0 -1.704l-13 -8a1 \\\n    1 0 0 0 -1.524 .852z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',\n        next: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-skip-forward-filled\" \\\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" \\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/> \\\n  <path d=\"M3 5v14a1 1 0 0 0 1.504 .864l12 -7a1 1 0 0 0 0 -1.728l-12 -7a1 1 0 0 0 -1.504 .864z\" \\\n   stroke-width=\"0\" fill=\"currentColor\" /><path d=\"M20 4a1 1 0 0 1 .993 .883l.007 .117v14a1 1 0 0 \\\n    1 -1.993 .117l-.007 -.117v-14a1 1 0 0 1 1 -1z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',\n        last: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-track-next-filled\" \\\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" \\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" \\\n   fill=\"none\"/><path d=\"M2 5v14c0 .86 1.012 1.318 1.659 .753l8 -7a1 1 0 0 0 0 -1.506l-8 \\\n   -7c-.647 -.565 -1.659 -.106 -1.659 .753z\" stroke-width=\"0\" fill=\"currentColor\" /><path \\\n    d=\"M13 5v14c0 .86 1.012 1.318 1.659 .753l8 -7a1 1 0 0 0 0 -1.506l-8 -7c-.647 -.565 -1.659 \\\n     -.106 -1.659 .753z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',\n        faster: '<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-plus\" \\\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\" \\\n  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" \\\n   fill=\"none\"/><path d=\"M12 5l0 14\" /><path d=\"M5 12l14 0\" /></svg>',\n    };\n    function press(btn_list) {\n        btn_list.forEach((btn) => btn.style.borderStyle = 'inset');\n    }\n    function unpress(btn_list) {\n        btn_list.forEach((btn) => btn.style.borderStyle = 'outset');\n    }\n    class PlayerView extends widget_1.WidgetView {\n        constructor() {\n            super(...arguments);\n            this._changing = false;\n        }\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.direction.change, () => this.set_direction());\n            this.connect(this.model.properties.value.change, () => this.render());\n            this.connect(this.model.properties.loop_policy.change, () => this.set_loop_state(this.model.loop_policy));\n            this.connect(this.model.properties.disabled.change, () => this.toggle_disable());\n            this.connect(this.model.properties.show_loop_controls.change, () => {\n                if (this.model.show_loop_controls && this.loop_state.parentNode != this.groupEl)\n                    this.groupEl.appendChild(this.loop_state);\n                else if (!this.model.show_loop_controls && this.loop_state.parentNode == this.groupEl)\n                    this.groupEl.removeChild(this.loop_state);\n            });\n        }\n        toggle_disable() {\n            this.sliderEl.disabled = this.model.disabled;\n            for (const el of this.buttonEl.children) {\n                const anyEl = el;\n                anyEl.disabled = this.model.disabled;\n            }\n            for (const el of this.loop_state.children) {\n                if (el.tagName == \"input\") {\n                    const anyEl = el;\n                    anyEl.disabled = this.model.disabled;\n                }\n            }\n        }\n        get_height() {\n            return 250;\n        }\n        render() {\n            if (this.sliderEl == null) {\n                super.render();\n            }\n            else {\n                this.sliderEl.min = String(this.model.start);\n                this.sliderEl.max = String(this.model.end);\n                this.sliderEl.value = String(this.model.value);\n                return;\n            }\n            // Layout to group the elements\n            this.groupEl = (0, dom_1.div)();\n            this.groupEl.style.display = \"flex\";\n            this.groupEl.style.flexDirection = \"column\";\n            this.groupEl.style.alignItems = \"center\";\n            // Slider\n            this.sliderEl = document.createElement('input');\n            this.sliderEl.style.width = \"100%\";\n            this.sliderEl.setAttribute(\"type\", \"range\");\n            this.sliderEl.value = String(this.model.value);\n            this.sliderEl.min = String(this.model.start);\n            this.sliderEl.max = String(this.model.end);\n            this.sliderEl.addEventListener('input', (ev) => {\n                this.set_frame(parseInt(ev.target.value), false);\n            });\n            this.sliderEl.addEventListener('change', (ev) => {\n                this.set_frame(parseInt(ev.target.value));\n            });\n            // Buttons\n            const button_div = (0, dom_1.div)();\n            this.buttonEl = button_div;\n            button_div.style.cssText = \"margin: 0 auto; display: flex; padding: 5px; align-items: stretch; width: 100%;\";\n            const button_style_small = \"text-align: center; min-width: 20px; flex-grow: 1; margin: 2px\";\n            const button_style = \"text-align: center; min-width: 40px; flex-grow: 2; margin: 2px\";\n            const slower = document.createElement('button');\n            slower.style.cssText = button_style_small;\n            slower.innerHTML = SVG_STRINGS['slower'];\n            slower.onclick = () => this.slower();\n            button_div.appendChild(slower);\n            const first = document.createElement('button');\n            first.style.cssText = button_style;\n            first.innerHTML = SVG_STRINGS['first'];\n            first.onclick = () => this.first_frame();\n            button_div.appendChild(first);\n            const previous = document.createElement('button');\n            previous.style.cssText = button_style;\n            previous.innerHTML = SVG_STRINGS['previous'];\n            previous.onclick = () => this.previous_frame();\n            button_div.appendChild(previous);\n            const reverse = document.createElement('button');\n            reverse.style.cssText = button_style;\n            reverse.innerHTML = SVG_STRINGS['reverse'];\n            reverse.onclick = () => this.reverse_animation();\n            button_div.appendChild(reverse);\n            const pause = document.createElement('button');\n            pause.style.cssText = button_style;\n            pause.innerHTML = SVG_STRINGS['pause'];\n            pause.onclick = () => this.pause_animation();\n            button_div.appendChild(pause);\n            const play = document.createElement('button');\n            play.style.cssText = button_style;\n            play.innerHTML = SVG_STRINGS['play'];\n            play.onclick = () => this.play_animation();\n            button_div.appendChild(play);\n            const next = document.createElement('button');\n            next.style.cssText = button_style;\n            next.innerHTML = SVG_STRINGS['next'];\n            next.onclick = () => this.next_frame();\n            button_div.appendChild(next);\n            const last = document.createElement('button');\n            last.style.cssText = button_style;\n            last.innerHTML = SVG_STRINGS['last'];\n            last.onclick = () => this.last_frame();\n            button_div.appendChild(last);\n            const faster = document.createElement('button');\n            faster.style.cssText = button_style_small;\n            faster.innerHTML = SVG_STRINGS['faster'];\n            faster.onclick = () => this.faster();\n            button_div.appendChild(faster);\n            // toggle\n            this._toggle_reverse = () => {\n                unpress([pause, play]);\n                press([reverse]);\n            };\n            this._toogle_pause = () => {\n                unpress([reverse, play]);\n                press([pause]);\n            };\n            this._toggle_play = () => {\n                unpress([reverse, pause]);\n                press([play]);\n            };\n            // Loop control\n            this.loop_state = document.createElement('form');\n            this.loop_state.style.cssText = \"margin: 0 auto; display: table\";\n            const once = document.createElement('input');\n            once.type = \"radio\";\n            once.value = \"once\";\n            once.name = \"state\";\n            const once_label = document.createElement('label');\n            once_label.innerHTML = \"Once\";\n            once_label.style.cssText = \"padding: 0 10px 0 5px; user-select:none;\";\n            const loop = document.createElement('input');\n            loop.setAttribute(\"type\", \"radio\");\n            loop.setAttribute(\"value\", \"loop\");\n            loop.setAttribute(\"name\", \"state\");\n            const loop_label = document.createElement('label');\n            loop_label.innerHTML = \"Loop\";\n            loop_label.style.cssText = \"padding: 0 10px 0 5px; user-select:none;\";\n            const reflect = document.createElement('input');\n            reflect.setAttribute(\"type\", \"radio\");\n            reflect.setAttribute(\"value\", \"reflect\");\n            reflect.setAttribute(\"name\", \"state\");\n            const reflect_label = document.createElement('label');\n            reflect_label.innerHTML = \"Reflect\";\n            reflect_label.style.cssText = \"padding: 0 10px 0 5px; user-select:none;\";\n            if (this.model.loop_policy == \"once\")\n                once.checked = true;\n            else if (this.model.loop_policy == \"loop\")\n                loop.checked = true;\n            else\n                reflect.checked = true;\n            // Compose everything\n            this.loop_state.appendChild(once);\n            this.loop_state.appendChild(once_label);\n            this.loop_state.appendChild(loop);\n            this.loop_state.appendChild(loop_label);\n            this.loop_state.appendChild(reflect);\n            this.loop_state.appendChild(reflect_label);\n            this.groupEl.appendChild(this.sliderEl);\n            this.groupEl.appendChild(button_div);\n            if (this.model.show_loop_controls)\n                this.groupEl.appendChild(this.loop_state);\n            this.toggle_disable();\n            this.shadow_el.appendChild(this.groupEl);\n        }\n        set_frame(frame, throttled = true) {\n            this.model.value = frame;\n            if (throttled)\n                this.model.value_throttled = frame;\n            if (this.sliderEl.value != String(frame))\n                this.sliderEl.value = String(frame);\n        }\n        get_loop_state() {\n            var button_group = this.loop_state.state;\n            for (var i = 0; i < button_group.length; i++) {\n                var button = button_group[i];\n                if (button.checked)\n                    return button.value;\n            }\n            return \"once\";\n        }\n        set_loop_state(state) {\n            var button_group = this.loop_state.state;\n            for (var i = 0; i < button_group.length; i++) {\n                var button = button_group[i];\n                if (button.value == state)\n                    button.checked = true;\n            }\n        }\n        next_frame() {\n            this.set_frame(Math.min(this.model.end, this.model.value + this.model.step));\n        }\n        previous_frame() {\n            this.set_frame(Math.max(this.model.start, this.model.value - this.model.step));\n        }\n        first_frame() {\n            this.set_frame(this.model.start);\n        }\n        last_frame() {\n            this.set_frame(this.model.end);\n        }\n        slower() {\n            this.model.interval = Math.round(this.model.interval / 0.7);\n            if (this.model.direction > 0)\n                this.play_animation();\n            else if (this.model.direction < 0)\n                this.reverse_animation();\n        }\n        faster() {\n            this.model.interval = Math.round(this.model.interval * 0.7);\n            if (this.model.direction > 0)\n                this.play_animation();\n            else if (this.model.direction < 0)\n                this.reverse_animation();\n        }\n        anim_step_forward() {\n            if (this.model.value < this.model.end) {\n                this.next_frame();\n            }\n            else {\n                var loop_state = this.get_loop_state();\n                if (loop_state == \"loop\") {\n                    this.first_frame();\n                }\n                else if (loop_state == \"reflect\") {\n                    this.last_frame();\n                    this.reverse_animation();\n                }\n                else {\n                    this.pause_animation();\n                    this.last_frame();\n                }\n            }\n        }\n        anim_step_reverse() {\n            if (this.model.value > this.model.start) {\n                this.previous_frame();\n            }\n            else {\n                var loop_state = this.get_loop_state();\n                if (loop_state == \"loop\") {\n                    this.last_frame();\n                }\n                else if (loop_state == \"reflect\") {\n                    this.first_frame();\n                    this.play_animation();\n                }\n                else {\n                    this.pause_animation();\n                    this.first_frame();\n                }\n            }\n        }\n        set_direction() {\n            if (this._changing)\n                return;\n            else if (this.model.direction === 0)\n                this.pause_animation();\n            else if (this.model.direction === 1)\n                this.play_animation();\n            else if (this.model.direction === -1)\n                this.reverse_animation();\n        }\n        pause_animation() {\n            this._toogle_pause();\n            this._changing = true;\n            this.model.direction = 0;\n            this._changing = false;\n            if (this.timer) {\n                clearInterval(this.timer);\n                this.timer = null;\n            }\n        }\n        play_animation() {\n            this.pause_animation();\n            this._toggle_play();\n            this._changing = true;\n            this.model.direction = 1;\n            this._changing = false;\n            if (!this.timer)\n                this.timer = setInterval(() => this.anim_step_forward(), this.model.interval);\n        }\n        reverse_animation() {\n            this.pause_animation();\n            this._toggle_reverse();\n            this._changing = true;\n            this.model.direction = -1;\n            this._changing = false;\n            if (!this.timer)\n                this.timer = setInterval(() => this.anim_step_reverse(), this.model.interval);\n        }\n    }\n    exports.PlayerView = PlayerView;\n    PlayerView.__name__ = \"PlayerView\";\n    exports.LoopPolicy = (0, kinds_1.Enum)(\"once\", \"loop\", \"reflect\");\n    class Player extends widget_1.Widget {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.Player = Player;\n    _a = Player;\n    Player.__name__ = \"Player\";\n    Player.__module__ = \"panel.models.widgets\";\n    (() => {\n        _a.prototype.default_view = PlayerView;\n        _a.define(({ Boolean, Int }) => ({\n            direction: [Int, 0],\n            interval: [Int, 500],\n            start: [Int, 0],\n            end: [Int, 10],\n            step: [Int, 1],\n            loop_policy: [exports.LoopPolicy, \"once\"],\n            value: [Int, 0],\n            value_throttled: [Int, 0],\n            show_loop_controls: [Boolean, true],\n        }));\n        _a.override({ width: 400 });\n    })();\n}\n","min_source":"function _(e,t,i,o,s){var l;o();const n=e(\"@bokehjs/core/kinds\"),r=e(\"@bokehjs/core/dom\"),a=e(\"@bokehjs/models/widgets/widget\"),h='<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-minus\" width=\"24\"  height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\"  stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\"    fill=\"none\"/><path d=\"M5 12l14 0\" /></svg>',d='<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-track-prev-filled\"  width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\"   stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>   <path d=\"M20.341 4.247l-8 7a1 1 0 0 0 0 1.506l8 7c.647 .565 1.659 .106 1.659 -.753v-14c0 -.86     -1.012 -1.318 -1.659 -.753z\" stroke-width=\"0\" fill=\"currentColor\" /><path d=\"M9.341 4.247l-8 7a1      1 0 0 0 0 1.506l8 7c.647 .565 1.659 .106 1.659 -.753v-14c0 -.86 -1.012 -1.318 -1.659 -.753z\"       stroke-width=\"0\" fill=\"currentColor\" /></svg>',c='<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-skip-back-filled\"  width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\"   stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>    <path d=\"M19.496 4.136l-12 7a1 1 0 0 0 0 1.728l12 7a1 1 0 0 0 1.504 -.864v-14a1 1 0 0 0 -1.504 -.864z\"     stroke-width=\"0\" fill=\"currentColor\" /><path d=\"M4 4a1 1 0 0 1 .993 .883l.007 .117v14a1 1 0 0 1 -1.993      .117l-.007 -.117v-14a1 1 0 0 1 1 -1z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',p='<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-play-filled\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\"  stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"transform: scaleX(-1);\"><path stroke=\"none\"   d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M6 4v16a1 1 0 0 0 1.524 .852l13 -8a1 1 0 0 0 0 -1.704l-13    -8a1 1 0 0 0 -1.524 .852z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',m='<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-pause-filled\"  width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\"   stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\"    fill=\"none\"/><path d=\"M9 4h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h2a2 2 0 0 0 2 -2v-12a2 2 0     0 0 -2 -2z\" stroke-width=\"0\" fill=\"currentColor\" /><path d=\"M17 4h-2a2 2 0 0 0 -2 2v12a2      2 0 0 0 2 2h2a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',u='<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-play-filled\"  width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\"   stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\"    fill=\"none\"/><path d=\"M6 4v16a1 1 0 0 0 1.524 .852l13 -8a1 1 0 0 0 0 -1.704l-13 -8a1     1 0 0 0 -1.524 .852z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',_='<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-skip-forward-filled\"  width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\"   stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>   <path d=\"M3 5v14a1 1 0 0 0 1.504 .864l12 -7a1 1 0 0 0 0 -1.728l-12 -7a1 1 0 0 0 -1.504 .864z\"    stroke-width=\"0\" fill=\"currentColor\" /><path d=\"M20 4a1 1 0 0 1 .993 .883l.007 .117v14a1 1 0 0     1 -1.993 .117l-.007 -.117v-14a1 1 0 0 1 1 -1z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',g='<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-player-track-next-filled\"  width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\"   stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\"    fill=\"none\"/><path d=\"M2 5v14c0 .86 1.012 1.318 1.659 .753l8 -7a1 1 0 0 0 0 -1.506l-8    -7c-.647 -.565 -1.659 -.106 -1.659 .753z\" stroke-width=\"0\" fill=\"currentColor\" /><path     d=\"M13 5v14c0 .86 1.012 1.318 1.659 .753l8 -7a1 1 0 0 0 0 -1.506l-8 -7c-.647 -.565 -1.659      -.106 -1.659 .753z\" stroke-width=\"0\" fill=\"currentColor\" /></svg>',v='<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon icon-tabler icon-tabler-plus\"  width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" fill=\"none\"   stroke-linecap=\"round\" stroke-linejoin=\"round\"><path stroke=\"none\" d=\"M0 0h24v24H0z\"    fill=\"none\"/><path d=\"M12 5l0 14\" /><path d=\"M5 12l14 0\" /></svg>';function f(e){e.forEach((e=>e.style.borderStyle=\"inset\"))}function w(e){e.forEach((e=>e.style.borderStyle=\"outset\"))}class k extends a.WidgetView{constructor(){super(...arguments),this._changing=!1}connect_signals(){super.connect_signals(),this.connect(this.model.properties.direction.change,(()=>this.set_direction())),this.connect(this.model.properties.value.change,(()=>this.render())),this.connect(this.model.properties.loop_policy.change,(()=>this.set_loop_state(this.model.loop_policy))),this.connect(this.model.properties.disabled.change,(()=>this.toggle_disable())),this.connect(this.model.properties.show_loop_controls.change,(()=>{this.model.show_loop_controls&&this.loop_state.parentNode!=this.groupEl?this.groupEl.appendChild(this.loop_state):this.model.show_loop_controls||this.loop_state.parentNode!=this.groupEl||this.groupEl.removeChild(this.loop_state)}))}toggle_disable(){this.sliderEl.disabled=this.model.disabled;for(const e of this.buttonEl.children){e.disabled=this.model.disabled}for(const e of this.loop_state.children)if(\"input\"==e.tagName){e.disabled=this.model.disabled}}get_height(){return 250}render(){if(null!=this.sliderEl)return this.sliderEl.min=String(this.model.start),this.sliderEl.max=String(this.model.end),void(this.sliderEl.value=String(this.model.value));super.render(),this.groupEl=(0,r.div)(),this.groupEl.style.display=\"flex\",this.groupEl.style.flexDirection=\"column\",this.groupEl.style.alignItems=\"center\",this.sliderEl=document.createElement(\"input\"),this.sliderEl.style.width=\"100%\",this.sliderEl.setAttribute(\"type\",\"range\"),this.sliderEl.value=String(this.model.value),this.sliderEl.min=String(this.model.start),this.sliderEl.max=String(this.model.end),this.sliderEl.addEventListener(\"input\",(e=>{this.set_frame(parseInt(e.target.value),!1)})),this.sliderEl.addEventListener(\"change\",(e=>{this.set_frame(parseInt(e.target.value))}));const e=(0,r.div)();this.buttonEl=e,e.style.cssText=\"margin: 0 auto; display: flex; padding: 5px; align-items: stretch; width: 100%;\";const t=\"text-align: center; min-width: 20px; flex-grow: 1; margin: 2px\",i=\"text-align: center; min-width: 40px; flex-grow: 2; margin: 2px\",o=document.createElement(\"button\");o.style.cssText=t,o.innerHTML=h,o.onclick=()=>this.slower(),e.appendChild(o);const s=document.createElement(\"button\");s.style.cssText=i,s.innerHTML=d,s.onclick=()=>this.first_frame(),e.appendChild(s);const l=document.createElement(\"button\");l.style.cssText=i,l.innerHTML=c,l.onclick=()=>this.previous_frame(),e.appendChild(l);const n=document.createElement(\"button\");n.style.cssText=i,n.innerHTML=p,n.onclick=()=>this.reverse_animation(),e.appendChild(n);const a=document.createElement(\"button\");a.style.cssText=i,a.innerHTML=m,a.onclick=()=>this.pause_animation(),e.appendChild(a);const k=document.createElement(\"button\");k.style.cssText=i,k.innerHTML=u,k.onclick=()=>this.play_animation(),e.appendChild(k);const x=document.createElement(\"button\");x.style.cssText=i,x.innerHTML=_,x.onclick=()=>this.next_frame(),e.appendChild(x);const y=document.createElement(\"button\");y.style.cssText=i,y.innerHTML=g,y.onclick=()=>this.last_frame(),e.appendChild(y);const b=document.createElement(\"button\");b.style.cssText=t,b.innerHTML=v,b.onclick=()=>this.faster(),e.appendChild(b),this._toggle_reverse=()=>{w([a,k]),f([n])},this._toogle_pause=()=>{w([n,k]),f([a])},this._toggle_play=()=>{w([n,a]),f([k])},this.loop_state=document.createElement(\"form\"),this.loop_state.style.cssText=\"margin: 0 auto; display: table\";const E=document.createElement(\"input\");E.type=\"radio\",E.value=\"once\",E.name=\"state\";const C=document.createElement(\"label\");C.innerHTML=\"Once\",C.style.cssText=\"padding: 0 10px 0 5px; user-select:none;\";const M=document.createElement(\"input\");M.setAttribute(\"type\",\"radio\"),M.setAttribute(\"value\",\"loop\"),M.setAttribute(\"name\",\"state\");const T=document.createElement(\"label\");T.innerHTML=\"Loop\",T.style.cssText=\"padding: 0 10px 0 5px; user-select:none;\";const z=document.createElement(\"input\");z.setAttribute(\"type\",\"radio\"),z.setAttribute(\"value\",\"reflect\"),z.setAttribute(\"name\",\"state\");const H=document.createElement(\"label\");H.innerHTML=\"Reflect\",H.style.cssText=\"padding: 0 10px 0 5px; user-select:none;\",\"once\"==this.model.loop_policy?E.checked=!0:\"loop\"==this.model.loop_policy?M.checked=!0:z.checked=!0,this.loop_state.appendChild(E),this.loop_state.appendChild(C),this.loop_state.appendChild(M),this.loop_state.appendChild(T),this.loop_state.appendChild(z),this.loop_state.appendChild(H),this.groupEl.appendChild(this.sliderEl),this.groupEl.appendChild(e),this.model.show_loop_controls&&this.groupEl.appendChild(this.loop_state),this.toggle_disable(),this.shadow_el.appendChild(this.groupEl)}set_frame(e,t=!0){this.model.value=e,t&&(this.model.value_throttled=e),this.sliderEl.value!=String(e)&&(this.sliderEl.value=String(e))}get_loop_state(){for(var e=this.loop_state.state,t=0;t<e.length;t++){var i=e[t];if(i.checked)return i.value}return\"once\"}set_loop_state(e){for(var t=this.loop_state.state,i=0;i<t.length;i++){var o=t[i];o.value==e&&(o.checked=!0)}}next_frame(){this.set_frame(Math.min(this.model.end,this.model.value+this.model.step))}previous_frame(){this.set_frame(Math.max(this.model.start,this.model.value-this.model.step))}first_frame(){this.set_frame(this.model.start)}last_frame(){this.set_frame(this.model.end)}slower(){this.model.interval=Math.round(this.model.interval/.7),this.model.direction>0?this.play_animation():this.model.direction<0&&this.reverse_animation()}faster(){this.model.interval=Math.round(.7*this.model.interval),this.model.direction>0?this.play_animation():this.model.direction<0&&this.reverse_animation()}anim_step_forward(){if(this.model.value<this.model.end)this.next_frame();else{var e=this.get_loop_state();\"loop\"==e?this.first_frame():\"reflect\"==e?(this.last_frame(),this.reverse_animation()):(this.pause_animation(),this.last_frame())}}anim_step_reverse(){if(this.model.value>this.model.start)this.previous_frame();else{var e=this.get_loop_state();\"loop\"==e?this.last_frame():\"reflect\"==e?(this.first_frame(),this.play_animation()):(this.pause_animation(),this.first_frame())}}set_direction(){this._changing||(0===this.model.direction?this.pause_animation():1===this.model.direction?this.play_animation():-1===this.model.direction&&this.reverse_animation())}pause_animation(){this._toogle_pause(),this._changing=!0,this.model.direction=0,this._changing=!1,this.timer&&(clearInterval(this.timer),this.timer=null)}play_animation(){this.pause_animation(),this._toggle_play(),this._changing=!0,this.model.direction=1,this._changing=!1,this.timer||(this.timer=setInterval((()=>this.anim_step_forward()),this.model.interval))}reverse_animation(){this.pause_animation(),this._toggle_reverse(),this._changing=!0,this.model.direction=-1,this._changing=!1,this.timer||(this.timer=setInterval((()=>this.anim_step_reverse()),this.model.interval))}}i.PlayerView=k,k.__name__=\"PlayerView\",i.LoopPolicy=(0,n.Enum)(\"once\",\"loop\",\"reflect\");class x extends a.Widget{constructor(e){super(e)}}i.Player=x,l=x,x.__name__=\"Player\",x.__module__=\"panel.models.widgets\",l.prototype.default_view=k,l.define((({Boolean:e,Int:t})=>({direction:[t,0],interval:[t,500],start:[t,0],end:[t,10],step:[t,1],loop_policy:[i.LoopPolicy,\"once\"],value:[t,0],value_throttled:[t,0],show_loop_controls:[e,!0]}))),l.override({width:400})}\n//# sourceMappingURL=player.min.js.map","min_map":"{\"version\":3,\"file\":\"player.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"kinds_1\",\"dom_1\",\"widget_1\",\"SVG_STRINGS\",\"press\",\"btn_list\",\"forEach\",\"btn\",\"style\",\"borderStyle\",\"unpress\",\"PlayerView\",\"WidgetView\",\"constructor\",\"super\",\"arguments\",\"this\",\"_changing\",\"connect_signals\",\"connect\",\"model\",\"properties\",\"direction\",\"change\",\"set_direction\",\"value\",\"render\",\"loop_policy\",\"set_loop_state\",\"disabled\",\"toggle_disable\",\"show_loop_controls\",\"loop_state\",\"parentNode\",\"groupEl\",\"appendChild\",\"removeChild\",\"sliderEl\",\"el\",\"buttonEl\",\"children\",\"tagName\",\"get_height\",\"min\",\"String\",\"start\",\"max\",\"end\",\"div\",\"display\",\"flexDirection\",\"alignItems\",\"document\",\"createElement\",\"width\",\"setAttribute\",\"addEventListener\",\"ev\",\"set_frame\",\"parseInt\",\"target\",\"button_div\",\"cssText\",\"button_style_small\",\"button_style\",\"slower\",\"innerHTML\",\"onclick\",\"first\",\"first_frame\",\"previous\",\"previous_frame\",\"reverse\",\"reverse_animation\",\"pause\",\"pause_animation\",\"play\",\"play_animation\",\"next\",\"next_frame\",\"last\",\"last_frame\",\"faster\",\"_toggle_reverse\",\"_toogle_pause\",\"_toggle_play\",\"once\",\"type\",\"name\",\"once_label\",\"loop\",\"loop_label\",\"reflect\",\"reflect_label\",\"checked\",\"shadow_el\",\"frame\",\"throttled\",\"value_throttled\",\"get_loop_state\",\"button_group\",\"state\",\"i\",\"length\",\"button\",\"Math\",\"step\",\"interval\",\"round\",\"anim_step_forward\",\"anim_step_reverse\",\"timer\",\"clearInterval\",\"setInterval\",\"__name__\",\"LoopPolicy\",\"Enum\",\"Player\",\"Widget\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Boolean\",\"Int\",\"override\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/plotly.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/plotly.js","canonical":"models/plotly","resolution":"ESM","id":"dd1700da9e","hash":"dd1700da9e7821dbd73346635d419f2bdd156d68822f7ff401262ea6126ef86f","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PlotlyPlot = exports.PlotlyPlotView = void 0;\nvar _a;\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst object_1 = require(\"@bokehjs/core/util/object\");\nconst eq_1 = require(\"@bokehjs/core/util/eq\");\nconst column_data_source_1 = require(\"@bokehjs/models/sources/column_data_source\");\nconst debounce_1 = require(\"debounce\");\nconst util_1 = require(\"./util\");\nconst layout_1 = require(\"./layout\");\nfunction convertUndefined(obj) {\n    Object\n        .entries(obj)\n        .forEach(([key, value]) => {\n        if (!!value && (typeof value === 'object')) {\n            convertUndefined(value);\n        }\n        else if (value === undefined) {\n            obj[key] = null;\n        }\n    });\n    return obj;\n}\nconst filterEventData = (gd, eventData, event) => {\n    // Ported from dash-core-components/src/components/Graph.react.js\n    let filteredEventData = Array.isArray(eventData) ? [] : {};\n    if (event === \"click\" || event === \"hover\" || event === \"selected\") {\n        const points = [];\n        if (eventData === undefined || eventData === null) {\n            return null;\n        }\n        /*\n         * remove `data`, `layout`, `xaxis`, etc\n         * objects from the event data since they're so big\n         * and cause JSON stringify circular structure errors.\n         *\n         * also, pull down the `customdata` point from the data array\n         * into the event object\n         */\n        const data = gd.data;\n        for (let i = 0; i < eventData.points.length; i++) {\n            const fullPoint = eventData.points[i];\n            let pointData = {};\n            for (let property in fullPoint) {\n                const val = fullPoint[property];\n                if (fullPoint.hasOwnProperty(property) &&\n                    !Array.isArray(val) && !(0, util_1.isPlainObject)(val) &&\n                    val !== undefined) {\n                    pointData[property] = val;\n                }\n            }\n            if (fullPoint !== undefined && fullPoint !== null) {\n                if (fullPoint.hasOwnProperty(\"curveNumber\") &&\n                    fullPoint.hasOwnProperty(\"pointNumber\") &&\n                    data[fullPoint[\"curveNumber\"]].hasOwnProperty(\"customdata\")) {\n                    pointData[\"customdata\"] =\n                        data[fullPoint[\"curveNumber\"]].customdata[fullPoint[\"pointNumber\"]];\n                }\n                // specific to histogram. see https://github.com/plotly/plotly.js/pull/2113/\n                if (fullPoint.hasOwnProperty('pointNumbers')) {\n                    pointData[\"pointNumbers\"] = fullPoint.pointNumbers;\n                }\n            }\n            points[i] = pointData;\n        }\n        filteredEventData[\"points\"] = points;\n    }\n    else if (event === 'relayout' || event === 'restyle') {\n        /*\n         * relayout shouldn't include any big objects\n         * it will usually just contain the ranges of the axes like\n         * \"xaxis.range[0]\": 0.7715822247381828,\n         * \"xaxis.range[1]\": 3.0095292008680063`\n         */\n        for (let property in eventData) {\n            if (eventData.hasOwnProperty(property)) {\n                filteredEventData[property] = eventData[property];\n            }\n        }\n    }\n    if (eventData.hasOwnProperty('range')) {\n        filteredEventData[\"range\"] = eventData[\"range\"];\n    }\n    if (eventData.hasOwnProperty('lassoPoints')) {\n        filteredEventData[\"lassoPoints\"] = eventData[\"lassoPoints\"];\n    }\n    return convertUndefined(filteredEventData);\n};\nconst _isHidden = (gd) => {\n    var display = window.getComputedStyle(gd).display;\n    return !display || display === 'none';\n};\nclass PlotlyPlotView extends layout_1.HTMLBoxView {\n    constructor() {\n        super(...arguments);\n        this._settingViewport = false;\n        this._plotInitialized = false;\n        this._rendered = false;\n        this._reacting = false;\n        this._relayouting = false;\n        this._end_relayouting = (0, debounce_1.debounce)(() => {\n            this._relayouting = false;\n        }, 2000, false);\n    }\n    connect_signals() {\n        super.connect_signals();\n        const { data, data_sources, layout, relayout, restyle } = this.model.properties;\n        this.on_change([data, data_sources, layout], () => {\n            const render_count = this.model._render_count;\n            setTimeout(() => {\n                if (this.model._render_count === render_count)\n                    this.model._render_count += 1;\n            }, 250);\n        });\n        this.on_change([relayout], () => {\n            if (this.model.relayout == null)\n                return;\n            window.Plotly.relayout(this.container, this.model.relayout);\n            this.model.relayout = null;\n        });\n        this.on_change([restyle], () => {\n            if (this.model.restyle == null)\n                return;\n            window.Plotly.restyle(this.container, this.model.restyle.data, this.model.restyle.traces);\n            this.model.restyle = null;\n        });\n        this.connect(this.model.properties.viewport_update_policy.change, () => {\n            this._updateSetViewportFunction();\n        });\n        this.connect(this.model.properties.viewport_update_throttle.change, () => {\n            this._updateSetViewportFunction();\n        });\n        this.connect(this.model.properties._render_count.change, () => {\n            this.plot();\n        });\n        this.connect(this.model.properties.frames.change, () => {\n            this.plot(true);\n        });\n        this.connect(this.model.properties.viewport.change, () => this._updateViewportFromProperty());\n    }\n    remove() {\n        window.Plotly.purge(this.container);\n        super.remove();\n    }\n    render() {\n        super.render();\n        this.container = (0, dom_1.div)();\n        (0, layout_1.set_size)(this.container, this.model);\n        this._rendered = false;\n        this.shadow_el.appendChild(this.container);\n        this.watch_stylesheets();\n        this.plot().then(() => {\n            this._rendered = true;\n            if (this.model.relayout != null)\n                window.Plotly.relayout(this.container, this.model.relayout);\n            window.Plotly.Plots.resize(this.container);\n        });\n    }\n    style_redraw() {\n        if (this._rendered)\n            window.Plotly.Plots.resize(this.container);\n    }\n    after_layout() {\n        super.after_layout();\n        if (this._rendered)\n            window.Plotly.Plots.resize(this.container);\n    }\n    _trace_data() {\n        const data = [];\n        for (let i = 0; i < this.model.data.length; i++)\n            data.push(this._get_trace(i, false));\n        return data;\n    }\n    _layout_data() {\n        const newLayout = (0, util_1.deepCopy)(this.model.layout);\n        if (this._relayouting) {\n            const { layout } = this.container;\n            // For each xaxis* and yaxis* property of layout, if the value has a 'range'\n            // property then use this in newLayout\n            Object.keys(layout).reduce((value, key) => {\n                if (key.slice(1, 5) === \"axis\" && 'range' in value) {\n                    newLayout[key].range = value.range;\n                }\n            }, {});\n        }\n        return newLayout;\n    }\n    _install_callbacks() {\n        //  - plotly_relayout\n        this.container.on('plotly_relayout', (eventData) => {\n            if (eventData['_update_from_property'] !== true) {\n                this.model.relayout_data = filterEventData(this.container, eventData, 'relayout');\n                this._updateViewportProperty();\n                this._end_relayouting();\n            }\n        });\n        //  - plotly_relayouting\n        this.container.on('plotly_relayouting', () => {\n            if (this.model.viewport_update_policy !== 'mouseup') {\n                this._relayouting = true;\n                this._updateViewportProperty();\n            }\n        });\n        //  - plotly_restyle\n        this.container.on('plotly_restyle', (eventData) => {\n            this.model.restyle_data = filterEventData(this.container, eventData, 'restyle');\n            this._updateViewportProperty();\n        });\n        //  - plotly_click\n        this.container.on('plotly_click', (eventData) => {\n            this.model.click_data = filterEventData(this.container, eventData, 'click');\n        });\n        //  - plotly_hover\n        this.container.on('plotly_hover', (eventData) => {\n            this.model.hover_data = filterEventData(this.container, eventData, 'hover');\n        });\n        //  - plotly_selected\n        this.container.on('plotly_selected', (eventData) => {\n            this.model.selected_data = filterEventData(this.container, eventData, 'selected');\n        });\n        //  - plotly_clickannotation\n        this.container.on('plotly_clickannotation', (eventData) => {\n            delete eventData[\"event\"];\n            delete eventData[\"fullAnnotation\"];\n            this.model.clickannotation_data = eventData;\n        });\n        //  - plotly_deselect\n        this.container.on('plotly_deselect', () => {\n            this.model.selected_data = null;\n        });\n        //  - plotly_unhover\n        this.container.on('plotly_unhover', () => {\n            this.model.hover_data = null;\n        });\n    }\n    async plot(new_plot = false) {\n        if (!window.Plotly)\n            return;\n        const data = this._trace_data();\n        const newLayout = this._layout_data();\n        this._reacting = true;\n        if (new_plot) {\n            const obj = { data: data, layout: newLayout, config: this.model.config, frames: this.model.frames };\n            await window.Plotly.newPlot(this.container, obj);\n        }\n        else {\n            await window.Plotly.react(this.container, data, newLayout, this.model.config);\n            if (this.model.frames != null)\n                await window.Plotly.addFrames(this.container, this.model.frames);\n        }\n        this._updateSetViewportFunction();\n        this._updateViewportProperty();\n        if (!this._plotInitialized)\n            this._install_callbacks();\n        else if (!_isHidden(this.container))\n            window.Plotly.Plots.resize(this.container);\n        this._reacting = false;\n        this._plotInitialized = true;\n    }\n    _get_trace(index, update) {\n        const trace = (0, object_1.clone)(this.model.data[index]);\n        const cds = this.model.data_sources[index];\n        for (const column of cds.columns()) {\n            let array = cds.get_array(column)[0];\n            if (array.shape != null && array.shape.length > 1) {\n                array = (0, util_1.reshape)(array, array.shape);\n            }\n            let prop_path = column.split(\".\");\n            let prop = prop_path[prop_path.length - 1];\n            let prop_parent = trace;\n            for (let k of prop_path.slice(0, -1)) {\n                prop_parent = prop_parent[k];\n            }\n            if (update && prop_path.length == 1) {\n                prop_parent[prop] = [array];\n            }\n            else {\n                prop_parent[prop] = array;\n            }\n        }\n        return trace;\n    }\n    _updateViewportFromProperty() {\n        if (!window.Plotly || this._settingViewport || this._reacting || !this.model.viewport) {\n            return;\n        }\n        const fullLayout = this.container._fullLayout;\n        // Call relayout if viewport differs from fullLayout\n        Object.keys(this.model.viewport).reduce((value, key) => {\n            if (!(0, eq_1.is_equal)((0, util_1.get)(fullLayout, key), value)) {\n                let clonedViewport = (0, util_1.deepCopy)(this.model.viewport);\n                clonedViewport['_update_from_property'] = true;\n                this._settingViewport = true;\n                window.Plotly.relayout(this.el, clonedViewport).then(() => {\n                    this._settingViewport = false;\n                });\n                return false;\n            }\n            else {\n                return true;\n            }\n        }, {});\n    }\n    _updateViewportProperty() {\n        const fullLayout = this.container._fullLayout;\n        let viewport = {};\n        // Get range for all xaxis and yaxis properties\n        for (let prop in fullLayout) {\n            if (!fullLayout.hasOwnProperty(prop))\n                continue;\n            let maybe_axis = prop.slice(0, 5);\n            if (maybe_axis === 'xaxis' || maybe_axis === 'yaxis')\n                viewport[prop + '.range'] = (0, util_1.deepCopy)(fullLayout[prop].range);\n        }\n        if (!(0, eq_1.is_equal)(viewport, this.model.viewport))\n            this._setViewport(viewport);\n    }\n    _updateSetViewportFunction() {\n        if (this.model.viewport_update_policy === \"continuous\" ||\n            this.model.viewport_update_policy === \"mouseup\") {\n            this._setViewport = (viewport) => {\n                if (!this._settingViewport) {\n                    this._settingViewport = true;\n                    this.model.viewport = viewport;\n                    this._settingViewport = false;\n                }\n            };\n        }\n        else {\n            this._setViewport = (0, util_1.throttle)((viewport) => {\n                if (!this._settingViewport) {\n                    this._settingViewport = true;\n                    this.model.viewport = viewport;\n                    this._settingViewport = false;\n                }\n            }, this.model.viewport_update_throttle);\n        }\n    }\n}\nexports.PlotlyPlotView = PlotlyPlotView;\nPlotlyPlotView.__name__ = \"PlotlyPlotView\";\nclass PlotlyPlot extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.PlotlyPlot = PlotlyPlot;\n_a = PlotlyPlot;\nPlotlyPlot.__name__ = \"PlotlyPlot\";\nPlotlyPlot.__module__ = \"panel.models.plotly\";\n(() => {\n    _a.prototype.default_view = PlotlyPlotView;\n    _a.define(({ Array, Any, Nullable, Number, Ref, String }) => ({\n        data: [Array(Any), []],\n        layout: [Any, {}],\n        config: [Any, {}],\n        frames: [Nullable(Array(Any)), null],\n        data_sources: [Array(Ref(column_data_source_1.ColumnDataSource)), []],\n        relayout: [Nullable(Any), {}],\n        restyle: [Nullable(Any), {}],\n        relayout_data: [Any, {}],\n        restyle_data: [Array(Any), []],\n        click_data: [Any, {}],\n        hover_data: [Any, {}],\n        clickannotation_data: [Any, {}],\n        selected_data: [Any, {}],\n        viewport: [Any, {}],\n        viewport_update_policy: [String, \"mouseup\"],\n        viewport_update_throttle: [Number, 200],\n        _render_count: [Number, 0],\n    }));\n})();\n//# sourceMappingURL=plotly.js.map\n","type":"js","dependency_paths":[["debounce","/croot/panel_1706539561184/work/panel/node_modules/debounce/index.js"],["./util","/croot/panel_1706539561184/work/panel/dist/lib/models/util.js"],["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"PlotlyPlotView"},{"type":"named","name":"PlotlyPlot"}],"externals":[],"shims":[]},"code":{"source":"/* models/plotly.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const object_1 = require(\"@bokehjs/core/util/object\");\n    const eq_1 = require(\"@bokehjs/core/util/eq\");\n    const column_data_source_1 = require(\"@bokehjs/models/sources/column_data_source\");\n    const debounce_1 = require(\"99a25e6992\") /* debounce */;\n    const util_1 = require(\"9f4006d93a\") /* ./util */;\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    function convertUndefined(obj) {\n        Object\n            .entries(obj)\n            .forEach(([key, value]) => {\n            if (!!value && (typeof value === 'object')) {\n                convertUndefined(value);\n            }\n            else if (value === undefined) {\n                obj[key] = null;\n            }\n        });\n        return obj;\n    }\n    const filterEventData = (gd, eventData, event) => {\n        // Ported from dash-core-components/src/components/Graph.react.js\n        let filteredEventData = Array.isArray(eventData) ? [] : {};\n        if (event === \"click\" || event === \"hover\" || event === \"selected\") {\n            const points = [];\n            if (eventData === undefined || eventData === null) {\n                return null;\n            }\n            /*\n             * remove `data`, `layout`, `xaxis`, etc\n             * objects from the event data since they're so big\n             * and cause JSON stringify circular structure errors.\n             *\n             * also, pull down the `customdata` point from the data array\n             * into the event object\n             */\n            const data = gd.data;\n            for (let i = 0; i < eventData.points.length; i++) {\n                const fullPoint = eventData.points[i];\n                let pointData = {};\n                for (let property in fullPoint) {\n                    const val = fullPoint[property];\n                    if (fullPoint.hasOwnProperty(property) &&\n                        !Array.isArray(val) && !(0, util_1.isPlainObject)(val) &&\n                        val !== undefined) {\n                        pointData[property] = val;\n                    }\n                }\n                if (fullPoint !== undefined && fullPoint !== null) {\n                    if (fullPoint.hasOwnProperty(\"curveNumber\") &&\n                        fullPoint.hasOwnProperty(\"pointNumber\") &&\n                        data[fullPoint[\"curveNumber\"]].hasOwnProperty(\"customdata\")) {\n                        pointData[\"customdata\"] =\n                            data[fullPoint[\"curveNumber\"]].customdata[fullPoint[\"pointNumber\"]];\n                    }\n                    // specific to histogram. see https://github.com/plotly/plotly.js/pull/2113/\n                    if (fullPoint.hasOwnProperty('pointNumbers')) {\n                        pointData[\"pointNumbers\"] = fullPoint.pointNumbers;\n                    }\n                }\n                points[i] = pointData;\n            }\n            filteredEventData[\"points\"] = points;\n        }\n        else if (event === 'relayout' || event === 'restyle') {\n            /*\n             * relayout shouldn't include any big objects\n             * it will usually just contain the ranges of the axes like\n             * \"xaxis.range[0]\": 0.7715822247381828,\n             * \"xaxis.range[1]\": 3.0095292008680063`\n             */\n            for (let property in eventData) {\n                if (eventData.hasOwnProperty(property)) {\n                    filteredEventData[property] = eventData[property];\n                }\n            }\n        }\n        if (eventData.hasOwnProperty('range')) {\n            filteredEventData[\"range\"] = eventData[\"range\"];\n        }\n        if (eventData.hasOwnProperty('lassoPoints')) {\n            filteredEventData[\"lassoPoints\"] = eventData[\"lassoPoints\"];\n        }\n        return convertUndefined(filteredEventData);\n    };\n    const _isHidden = (gd) => {\n        var display = window.getComputedStyle(gd).display;\n        return !display || display === 'none';\n    };\n    class PlotlyPlotView extends layout_1.HTMLBoxView {\n        constructor() {\n            super(...arguments);\n            this._settingViewport = false;\n            this._plotInitialized = false;\n            this._rendered = false;\n            this._reacting = false;\n            this._relayouting = false;\n            this._end_relayouting = (0, debounce_1.debounce)(() => {\n                this._relayouting = false;\n            }, 2000, false);\n        }\n        connect_signals() {\n            super.connect_signals();\n            const { data, data_sources, layout, relayout, restyle } = this.model.properties;\n            this.on_change([data, data_sources, layout], () => {\n                const render_count = this.model._render_count;\n                setTimeout(() => {\n                    if (this.model._render_count === render_count)\n                        this.model._render_count += 1;\n                }, 250);\n            });\n            this.on_change([relayout], () => {\n                if (this.model.relayout == null)\n                    return;\n                window.Plotly.relayout(this.container, this.model.relayout);\n                this.model.relayout = null;\n            });\n            this.on_change([restyle], () => {\n                if (this.model.restyle == null)\n                    return;\n                window.Plotly.restyle(this.container, this.model.restyle.data, this.model.restyle.traces);\n                this.model.restyle = null;\n            });\n            this.connect(this.model.properties.viewport_update_policy.change, () => {\n                this._updateSetViewportFunction();\n            });\n            this.connect(this.model.properties.viewport_update_throttle.change, () => {\n                this._updateSetViewportFunction();\n            });\n            this.connect(this.model.properties._render_count.change, () => {\n                this.plot();\n            });\n            this.connect(this.model.properties.frames.change, () => {\n                this.plot(true);\n            });\n            this.connect(this.model.properties.viewport.change, () => this._updateViewportFromProperty());\n        }\n        remove() {\n            window.Plotly.purge(this.container);\n            super.remove();\n        }\n        render() {\n            super.render();\n            this.container = (0, dom_1.div)();\n            (0, layout_1.set_size)(this.container, this.model);\n            this._rendered = false;\n            this.shadow_el.appendChild(this.container);\n            this.watch_stylesheets();\n            this.plot().then(() => {\n                this._rendered = true;\n                if (this.model.relayout != null)\n                    window.Plotly.relayout(this.container, this.model.relayout);\n                window.Plotly.Plots.resize(this.container);\n            });\n        }\n        style_redraw() {\n            if (this._rendered)\n                window.Plotly.Plots.resize(this.container);\n        }\n        after_layout() {\n            super.after_layout();\n            if (this._rendered)\n                window.Plotly.Plots.resize(this.container);\n        }\n        _trace_data() {\n            const data = [];\n            for (let i = 0; i < this.model.data.length; i++)\n                data.push(this._get_trace(i, false));\n            return data;\n        }\n        _layout_data() {\n            const newLayout = (0, util_1.deepCopy)(this.model.layout);\n            if (this._relayouting) {\n                const { layout } = this.container;\n                // For each xaxis* and yaxis* property of layout, if the value has a 'range'\n                // property then use this in newLayout\n                Object.keys(layout).reduce((value, key) => {\n                    if (key.slice(1, 5) === \"axis\" && 'range' in value) {\n                        newLayout[key].range = value.range;\n                    }\n                }, {});\n            }\n            return newLayout;\n        }\n        _install_callbacks() {\n            //  - plotly_relayout\n            this.container.on('plotly_relayout', (eventData) => {\n                if (eventData['_update_from_property'] !== true) {\n                    this.model.relayout_data = filterEventData(this.container, eventData, 'relayout');\n                    this._updateViewportProperty();\n                    this._end_relayouting();\n                }\n            });\n            //  - plotly_relayouting\n            this.container.on('plotly_relayouting', () => {\n                if (this.model.viewport_update_policy !== 'mouseup') {\n                    this._relayouting = true;\n                    this._updateViewportProperty();\n                }\n            });\n            //  - plotly_restyle\n            this.container.on('plotly_restyle', (eventData) => {\n                this.model.restyle_data = filterEventData(this.container, eventData, 'restyle');\n                this._updateViewportProperty();\n            });\n            //  - plotly_click\n            this.container.on('plotly_click', (eventData) => {\n                this.model.click_data = filterEventData(this.container, eventData, 'click');\n            });\n            //  - plotly_hover\n            this.container.on('plotly_hover', (eventData) => {\n                this.model.hover_data = filterEventData(this.container, eventData, 'hover');\n            });\n            //  - plotly_selected\n            this.container.on('plotly_selected', (eventData) => {\n                this.model.selected_data = filterEventData(this.container, eventData, 'selected');\n            });\n            //  - plotly_clickannotation\n            this.container.on('plotly_clickannotation', (eventData) => {\n                delete eventData[\"event\"];\n                delete eventData[\"fullAnnotation\"];\n                this.model.clickannotation_data = eventData;\n            });\n            //  - plotly_deselect\n            this.container.on('plotly_deselect', () => {\n                this.model.selected_data = null;\n            });\n            //  - plotly_unhover\n            this.container.on('plotly_unhover', () => {\n                this.model.hover_data = null;\n            });\n        }\n        async plot(new_plot = false) {\n            if (!window.Plotly)\n                return;\n            const data = this._trace_data();\n            const newLayout = this._layout_data();\n            this._reacting = true;\n            if (new_plot) {\n                const obj = { data: data, layout: newLayout, config: this.model.config, frames: this.model.frames };\n                await window.Plotly.newPlot(this.container, obj);\n            }\n            else {\n                await window.Plotly.react(this.container, data, newLayout, this.model.config);\n                if (this.model.frames != null)\n                    await window.Plotly.addFrames(this.container, this.model.frames);\n            }\n            this._updateSetViewportFunction();\n            this._updateViewportProperty();\n            if (!this._plotInitialized)\n                this._install_callbacks();\n            else if (!_isHidden(this.container))\n                window.Plotly.Plots.resize(this.container);\n            this._reacting = false;\n            this._plotInitialized = true;\n        }\n        _get_trace(index, update) {\n            const trace = (0, object_1.clone)(this.model.data[index]);\n            const cds = this.model.data_sources[index];\n            for (const column of cds.columns()) {\n                let array = cds.get_array(column)[0];\n                if (array.shape != null && array.shape.length > 1) {\n                    array = (0, util_1.reshape)(array, array.shape);\n                }\n                let prop_path = column.split(\".\");\n                let prop = prop_path[prop_path.length - 1];\n                let prop_parent = trace;\n                for (let k of prop_path.slice(0, -1)) {\n                    prop_parent = prop_parent[k];\n                }\n                if (update && prop_path.length == 1) {\n                    prop_parent[prop] = [array];\n                }\n                else {\n                    prop_parent[prop] = array;\n                }\n            }\n            return trace;\n        }\n        _updateViewportFromProperty() {\n            if (!window.Plotly || this._settingViewport || this._reacting || !this.model.viewport) {\n                return;\n            }\n            const fullLayout = this.container._fullLayout;\n            // Call relayout if viewport differs from fullLayout\n            Object.keys(this.model.viewport).reduce((value, key) => {\n                if (!(0, eq_1.is_equal)((0, util_1.get)(fullLayout, key), value)) {\n                    let clonedViewport = (0, util_1.deepCopy)(this.model.viewport);\n                    clonedViewport['_update_from_property'] = true;\n                    this._settingViewport = true;\n                    window.Plotly.relayout(this.el, clonedViewport).then(() => {\n                        this._settingViewport = false;\n                    });\n                    return false;\n                }\n                else {\n                    return true;\n                }\n            }, {});\n        }\n        _updateViewportProperty() {\n            const fullLayout = this.container._fullLayout;\n            let viewport = {};\n            // Get range for all xaxis and yaxis properties\n            for (let prop in fullLayout) {\n                if (!fullLayout.hasOwnProperty(prop))\n                    continue;\n                let maybe_axis = prop.slice(0, 5);\n                if (maybe_axis === 'xaxis' || maybe_axis === 'yaxis')\n                    viewport[prop + '.range'] = (0, util_1.deepCopy)(fullLayout[prop].range);\n            }\n            if (!(0, eq_1.is_equal)(viewport, this.model.viewport))\n                this._setViewport(viewport);\n        }\n        _updateSetViewportFunction() {\n            if (this.model.viewport_update_policy === \"continuous\" ||\n                this.model.viewport_update_policy === \"mouseup\") {\n                this._setViewport = (viewport) => {\n                    if (!this._settingViewport) {\n                        this._settingViewport = true;\n                        this.model.viewport = viewport;\n                        this._settingViewport = false;\n                    }\n                };\n            }\n            else {\n                this._setViewport = (0, util_1.throttle)((viewport) => {\n                    if (!this._settingViewport) {\n                        this._settingViewport = true;\n                        this.model.viewport = viewport;\n                        this._settingViewport = false;\n                    }\n                }, this.model.viewport_update_throttle);\n            }\n        }\n    }\n    exports.PlotlyPlotView = PlotlyPlotView;\n    PlotlyPlotView.__name__ = \"PlotlyPlotView\";\n    class PlotlyPlot extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.PlotlyPlot = PlotlyPlot;\n    _a = PlotlyPlot;\n    PlotlyPlot.__name__ = \"PlotlyPlot\";\n    PlotlyPlot.__module__ = \"panel.models.plotly\";\n    (() => {\n        _a.prototype.default_view = PlotlyPlotView;\n        _a.define(({ Array, Any, Nullable, Number, Ref, String }) => ({\n            data: [Array(Any), []],\n            layout: [Any, {}],\n            config: [Any, {}],\n            frames: [Nullable(Array(Any)), null],\n            data_sources: [Array(Ref(column_data_source_1.ColumnDataSource)), []],\n            relayout: [Nullable(Any), {}],\n            restyle: [Nullable(Any), {}],\n            relayout_data: [Any, {}],\n            restyle_data: [Array(Any), []],\n            click_data: [Any, {}],\n            hover_data: [Any, {}],\n            clickannotation_data: [Any, {}],\n            selected_data: [Any, {}],\n            viewport: [Any, {}],\n            viewport_update_policy: [String, \"mouseup\"],\n            viewport_update_throttle: [Number, 200],\n            _render_count: [Number, 0],\n        }));\n    })();\n}\n","min_source":"function _(t,e,o,i,r){var s;i();const n=t(\"@bokehjs/core/dom\"),l=t(\"@bokehjs/core/util/object\"),a=t(\"@bokehjs/core/util/eq\"),h=t(\"@bokehjs/models/sources/column_data_source\"),d=t(\"99a25e6992\"),c=t(\"9f4006d93a\"),p=t(\"cac5f3ed28\");function _(t){return Object.entries(t).forEach((([e,o])=>{o&&\"object\"==typeof o?_(o):void 0===o&&(t[e]=null)})),t}const u=(t,e,o)=>{let i=Array.isArray(e)?[]:{};if(\"click\"===o||\"hover\"===o||\"selected\"===o){const o=[];if(null==e)return null;const r=t.data;for(let t=0;t<e.points.length;t++){const i=e.points[t];let s={};for(let t in i){const e=i[t];!i.hasOwnProperty(t)||Array.isArray(e)||(0,c.isPlainObject)(e)||void 0===e||(s[t]=e)}null!=i&&(i.hasOwnProperty(\"curveNumber\")&&i.hasOwnProperty(\"pointNumber\")&&r[i.curveNumber].hasOwnProperty(\"customdata\")&&(s.customdata=r[i.curveNumber].customdata[i.pointNumber]),i.hasOwnProperty(\"pointNumbers\")&&(s.pointNumbers=i.pointNumbers)),o[t]=s}i.points=o}else if(\"relayout\"===o||\"restyle\"===o)for(let t in e)e.hasOwnProperty(t)&&(i[t]=e[t]);return e.hasOwnProperty(\"range\")&&(i.range=e.range),e.hasOwnProperty(\"lassoPoints\")&&(i.lassoPoints=e.lassoPoints),_(i)};class y extends p.HTMLBoxView{constructor(){super(...arguments),this._settingViewport=!1,this._plotInitialized=!1,this._rendered=!1,this._reacting=!1,this._relayouting=!1,this._end_relayouting=(0,d.debounce)((()=>{this._relayouting=!1}),2e3,!1)}connect_signals(){super.connect_signals();const{data:t,data_sources:e,layout:o,relayout:i,restyle:r}=this.model.properties;this.on_change([t,e,o],(()=>{const t=this.model._render_count;setTimeout((()=>{this.model._render_count===t&&(this.model._render_count+=1)}),250)})),this.on_change([i],(()=>{null!=this.model.relayout&&(window.Plotly.relayout(this.container,this.model.relayout),this.model.relayout=null)})),this.on_change([r],(()=>{null!=this.model.restyle&&(window.Plotly.restyle(this.container,this.model.restyle.data,this.model.restyle.traces),this.model.restyle=null)})),this.connect(this.model.properties.viewport_update_policy.change,(()=>{this._updateSetViewportFunction()})),this.connect(this.model.properties.viewport_update_throttle.change,(()=>{this._updateSetViewportFunction()})),this.connect(this.model.properties._render_count.change,(()=>{this.plot()})),this.connect(this.model.properties.frames.change,(()=>{this.plot(!0)})),this.connect(this.model.properties.viewport.change,(()=>this._updateViewportFromProperty()))}remove(){window.Plotly.purge(this.container),super.remove()}render(){super.render(),this.container=(0,n.div)(),(0,p.set_size)(this.container,this.model),this._rendered=!1,this.shadow_el.appendChild(this.container),this.watch_stylesheets(),this.plot().then((()=>{this._rendered=!0,null!=this.model.relayout&&window.Plotly.relayout(this.container,this.model.relayout),window.Plotly.Plots.resize(this.container)}))}style_redraw(){this._rendered&&window.Plotly.Plots.resize(this.container)}after_layout(){super.after_layout(),this._rendered&&window.Plotly.Plots.resize(this.container)}_trace_data(){const t=[];for(let e=0;e<this.model.data.length;e++)t.push(this._get_trace(e,!1));return t}_layout_data(){const t=(0,c.deepCopy)(this.model.layout);if(this._relayouting){const{layout:e}=this.container;Object.keys(e).reduce(((e,o)=>{\"axis\"===o.slice(1,5)&&\"range\"in e&&(t[o].range=e.range)}),{})}return t}_install_callbacks(){this.container.on(\"plotly_relayout\",(t=>{!0!==t._update_from_property&&(this.model.relayout_data=u(this.container,t,\"relayout\"),this._updateViewportProperty(),this._end_relayouting())})),this.container.on(\"plotly_relayouting\",(()=>{\"mouseup\"!==this.model.viewport_update_policy&&(this._relayouting=!0,this._updateViewportProperty())})),this.container.on(\"plotly_restyle\",(t=>{this.model.restyle_data=u(this.container,t,\"restyle\"),this._updateViewportProperty()})),this.container.on(\"plotly_click\",(t=>{this.model.click_data=u(this.container,t,\"click\")})),this.container.on(\"plotly_hover\",(t=>{this.model.hover_data=u(this.container,t,\"hover\")})),this.container.on(\"plotly_selected\",(t=>{this.model.selected_data=u(this.container,t,\"selected\")})),this.container.on(\"plotly_clickannotation\",(t=>{delete t.event,delete t.fullAnnotation,this.model.clickannotation_data=t})),this.container.on(\"plotly_deselect\",(()=>{this.model.selected_data=null})),this.container.on(\"plotly_unhover\",(()=>{this.model.hover_data=null}))}async plot(t=!1){if(!window.Plotly)return;const e=this._trace_data(),o=this._layout_data();if(this._reacting=!0,t){const t={data:e,layout:o,config:this.model.config,frames:this.model.frames};await window.Plotly.newPlot(this.container,t)}else await window.Plotly.react(this.container,e,o,this.model.config),null!=this.model.frames&&await window.Plotly.addFrames(this.container,this.model.frames);var i,r;this._updateSetViewportFunction(),this._updateViewportProperty(),this._plotInitialized?(i=this.container,(r=window.getComputedStyle(i).display)&&\"none\"!==r&&window.Plotly.Plots.resize(this.container)):this._install_callbacks(),this._reacting=!1,this._plotInitialized=!0}_get_trace(t,e){const o=(0,l.clone)(this.model.data[t]),i=this.model.data_sources[t];for(const t of i.columns()){let r=i.get_array(t)[0];null!=r.shape&&r.shape.length>1&&(r=(0,c.reshape)(r,r.shape));let s=t.split(\".\"),n=s[s.length-1],l=o;for(let t of s.slice(0,-1))l=l[t];e&&1==s.length?l[n]=[r]:l[n]=r}return o}_updateViewportFromProperty(){if(!window.Plotly||this._settingViewport||this._reacting||!this.model.viewport)return;const t=this.container._fullLayout;Object.keys(this.model.viewport).reduce(((e,o)=>{if((0,a.is_equal)((0,c.get)(t,o),e))return!0;{let t=(0,c.deepCopy)(this.model.viewport);return t._update_from_property=!0,this._settingViewport=!0,window.Plotly.relayout(this.el,t).then((()=>{this._settingViewport=!1})),!1}}),{})}_updateViewportProperty(){const t=this.container._fullLayout;let e={};for(let o in t){if(!t.hasOwnProperty(o))continue;let i=o.slice(0,5);\"xaxis\"!==i&&\"yaxis\"!==i||(e[o+\".range\"]=(0,c.deepCopy)(t[o].range))}(0,a.is_equal)(e,this.model.viewport)||this._setViewport(e)}_updateSetViewportFunction(){\"continuous\"===this.model.viewport_update_policy||\"mouseup\"===this.model.viewport_update_policy?this._setViewport=t=>{this._settingViewport||(this._settingViewport=!0,this.model.viewport=t,this._settingViewport=!1)}:this._setViewport=(0,c.throttle)((t=>{this._settingViewport||(this._settingViewport=!0,this.model.viewport=t,this._settingViewport=!1)}),this.model.viewport_update_throttle)}}o.PlotlyPlotView=y,y.__name__=\"PlotlyPlotView\";class w extends p.HTMLBox{constructor(t){super(t)}}o.PlotlyPlot=w,s=w,w.__name__=\"PlotlyPlot\",w.__module__=\"panel.models.plotly\",s.prototype.default_view=y,s.define((({Array:t,Any:e,Nullable:o,Number:i,Ref:r,String:s})=>({data:[t(e),[]],layout:[e,{}],config:[e,{}],frames:[o(t(e)),null],data_sources:[t(r(h.ColumnDataSource)),[]],relayout:[o(e),{}],restyle:[o(e),{}],relayout_data:[e,{}],restyle_data:[t(e),[]],click_data:[e,{}],hover_data:[e,{}],clickannotation_data:[e,{}],selected_data:[e,{}],viewport:[e,{}],viewport_update_policy:[s,\"mouseup\"],viewport_update_throttle:[i,200],_render_count:[i,0]})))}\n//# sourceMappingURL=plotly.min.js.map","min_map":"{\"version\":3,\"file\":\"plotly.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"dom_1\",\"object_1\",\"eq_1\",\"column_data_source_1\",\"debounce_1\",\"util_1\",\"layout_1\",\"convertUndefined\",\"obj\",\"Object\",\"entries\",\"forEach\",\"key\",\"value\",\"undefined\",\"filterEventData\",\"gd\",\"eventData\",\"event\",\"filteredEventData\",\"Array\",\"isArray\",\"points\",\"data\",\"i\",\"length\",\"fullPoint\",\"pointData\",\"property\",\"val\",\"hasOwnProperty\",\"isPlainObject\",\"customdata\",\"pointNumbers\",\"PlotlyPlotView\",\"HTMLBoxView\",\"constructor\",\"super\",\"arguments\",\"this\",\"_settingViewport\",\"_plotInitialized\",\"_rendered\",\"_reacting\",\"_relayouting\",\"_end_relayouting\",\"debounce\",\"connect_signals\",\"data_sources\",\"layout\",\"relayout\",\"restyle\",\"model\",\"properties\",\"on_change\",\"render_count\",\"_render_count\",\"setTimeout\",\"window\",\"Plotly\",\"container\",\"traces\",\"connect\",\"viewport_update_policy\",\"change\",\"_updateSetViewportFunction\",\"viewport_update_throttle\",\"plot\",\"frames\",\"viewport\",\"_updateViewportFromProperty\",\"remove\",\"purge\",\"render\",\"div\",\"set_size\",\"shadow_el\",\"appendChild\",\"watch_stylesheets\",\"then\",\"Plots\",\"resize\",\"style_redraw\",\"after_layout\",\"_trace_data\",\"push\",\"_get_trace\",\"_layout_data\",\"newLayout\",\"deepCopy\",\"keys\",\"reduce\",\"slice\",\"range\",\"_install_callbacks\",\"on\",\"relayout_data\",\"_updateViewportProperty\",\"restyle_data\",\"click_data\",\"hover_data\",\"selected_data\",\"clickannotation_data\",\"new_plot\",\"config\",\"newPlot\",\"react\",\"addFrames\",\"display\",\"getComputedStyle\",\"index\",\"update\",\"trace\",\"clone\",\"cds\",\"column\",\"columns\",\"array\",\"get_array\",\"shape\",\"reshape\",\"prop_path\",\"split\",\"prop\",\"prop_parent\",\"k\",\"fullLayout\",\"_fullLayout\",\"is_equal\",\"get\",\"clonedViewport\",\"el\",\"maybe_axis\",\"_setViewport\",\"throttle\",\"__name__\",\"PlotlyPlot\",\"HTMLBox\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Any\",\"Nullable\",\"Number\",\"Ref\",\"String\",\"ColumnDataSource\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/util.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/util.js","canonical":"models/util","resolution":"ESM","id":"9f4006d93a","hash":"9f4006d93a1afbe082f67eb4e6683d26abfdc444c79c1878d1d59eaf66998da8","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reshape = exports.isPlainObject = exports.deepCopy = exports.throttle = exports.get = void 0;\nconst array_1 = require(\"@bokehjs/core/util/array\");\nconst get = (obj, path, defaultValue = undefined) => {\n    const travel = (regexp) => String.prototype.split\n        .call(path, regexp)\n        .filter(Boolean)\n        .reduce((res, key) => (res !== null && res !== undefined ? res[key] : res), obj);\n    const result = travel(/[,[\\]]+?/) || travel(/[,[\\].]+?/);\n    return result === undefined || result === obj ? defaultValue : result;\n};\nexports.get = get;\nfunction throttle(func, timeFrame) {\n    var lastTime = 0;\n    return function () {\n        var now = Number(new Date());\n        if (now - lastTime >= timeFrame) {\n            func();\n            lastTime = now;\n        }\n    };\n}\nexports.throttle = throttle;\nfunction deepCopy(obj) {\n    var copy;\n    // Handle the 3 simple types, and null or undefined\n    if (null == obj || \"object\" != typeof obj)\n        return obj;\n    // Handle Array\n    if (obj instanceof Array) {\n        copy = [];\n        for (var i = 0, len = obj.length; i < len; i++) {\n            copy[i] = deepCopy(obj[i]);\n        }\n        return copy;\n    }\n    // Handle Object\n    if (obj instanceof Object) {\n        const copy = {};\n        for (const attr in obj) {\n            const key = attr;\n            if (obj.hasOwnProperty(key))\n                copy[key] = deepCopy(obj[key]);\n        }\n        return copy;\n    }\n    throw new Error(\"Unable to copy obj! Its type isn't supported.\");\n}\nexports.deepCopy = deepCopy;\nfunction isPlainObject(obj) {\n    return Object.prototype.toString.call(obj) === '[object Object]';\n}\nexports.isPlainObject = isPlainObject;\nfunction reshape(arr, dim) {\n    let elemIndex = 0;\n    if (!dim || !arr)\n        return [];\n    function _nest(dimIndex) {\n        let result = [];\n        if (dimIndex === dim.length - 1) {\n            result = (0, array_1.concat)(arr.slice(elemIndex, elemIndex + dim[dimIndex]));\n            elemIndex += dim[dimIndex];\n        }\n        else {\n            for (let i = 0; i < dim[dimIndex]; i++) {\n                result.push(_nest(dimIndex + 1));\n            }\n        }\n        return result;\n    }\n    return _nest(0);\n}\nexports.reshape = reshape;\n//# sourceMappingURL=util.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"throttle"},{"type":"named","name":"deepCopy"},{"type":"named","name":"isPlainObject"},{"type":"named","name":"reshape"}],"externals":[],"shims":[]},"code":{"source":"/* models/util.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const array_1 = require(\"@bokehjs/core/util/array\");\n    const get = (obj, path, defaultValue = undefined) => {\n        const travel = (regexp) => String.prototype.split\n            .call(path, regexp)\n            .filter(Boolean)\n            .reduce((res, key) => (res !== null && res !== undefined ? res[key] : res), obj);\n        const result = travel(/[,[\\]]+?/) || travel(/[,[\\].]+?/);\n        return result === undefined || result === obj ? defaultValue : result;\n    };\n    exports.get = get;\n    function throttle(func, timeFrame) {\n        var lastTime = 0;\n        return function () {\n            var now = Number(new Date());\n            if (now - lastTime >= timeFrame) {\n                func();\n                lastTime = now;\n            }\n        };\n    }\n    exports.throttle = throttle;\n    function deepCopy(obj) {\n        var copy;\n        // Handle the 3 simple types, and null or undefined\n        if (null == obj || \"object\" != typeof obj)\n            return obj;\n        // Handle Array\n        if (obj instanceof Array) {\n            copy = [];\n            for (var i = 0, len = obj.length; i < len; i++) {\n                copy[i] = deepCopy(obj[i]);\n            }\n            return copy;\n        }\n        // Handle Object\n        if (obj instanceof Object) {\n            const copy = {};\n            for (const attr in obj) {\n                const key = attr;\n                if (obj.hasOwnProperty(key))\n                    copy[key] = deepCopy(obj[key]);\n            }\n            return copy;\n        }\n        throw new Error(\"Unable to copy obj! Its type isn't supported.\");\n    }\n    exports.deepCopy = deepCopy;\n    function isPlainObject(obj) {\n        return Object.prototype.toString.call(obj) === '[object Object]';\n    }\n    exports.isPlainObject = isPlainObject;\n    function reshape(arr, dim) {\n        let elemIndex = 0;\n        if (!dim || !arr)\n            return [];\n        function _nest(dimIndex) {\n            let result = [];\n            if (dimIndex === dim.length - 1) {\n                result = (0, array_1.concat)(arr.slice(elemIndex, elemIndex + dim[dimIndex]));\n                elemIndex += dim[dimIndex];\n            }\n            else {\n                for (let i = 0; i < dim[dimIndex]; i++) {\n                    result.push(_nest(dimIndex + 1));\n                }\n            }\n            return result;\n        }\n        return _nest(0);\n    }\n    exports.reshape = reshape;\n}\n","min_source":"function _(t,e,n,r,o){r();const c=t(\"@bokehjs/core/util/array\");n.get=(t,e,n=void 0)=>{const r=n=>String.prototype.split.call(e,n).filter(Boolean).reduce(((t,e)=>null!=t?t[e]:t),t),o=r(/[,[\\]]+?/)||r(/[,[\\].]+?/);return void 0===o||o===t?n:o},n.throttle=function(t,e){var n=0;return function(){var r=Number(new Date);r-n>=e&&(t(),n=r)}},n.deepCopy=function t(e){var n;if(null==e||\"object\"!=typeof e)return e;if(e instanceof Array){n=[];for(var r=0,o=e.length;r<o;r++)n[r]=t(e[r]);return n}if(e instanceof Object){const n={};for(const r in e){const o=r;e.hasOwnProperty(o)&&(n[o]=t(e[o]))}return n}throw new Error(\"Unable to copy obj! Its type isn't supported.\")},n.isPlainObject=function(t){return\"[object Object]\"===Object.prototype.toString.call(t)},n.reshape=function(t,e){let n=0;return e&&t?function r(o){let i=[];if(o===e.length-1)i=(0,c.concat)(t.slice(n,n+e[o])),n+=e[o];else for(let t=0;t<e[o];t++)i.push(r(o+1));return i}(0):[]}}\n//# sourceMappingURL=util.min.js.map","min_map":"{\"version\":3,\"file\":\"util.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"array_1\",\"get\",\"obj\",\"path\",\"defaultValue\",\"undefined\",\"travel\",\"regexp\",\"String\",\"prototype\",\"split\",\"call\",\"filter\",\"Boolean\",\"reduce\",\"res\",\"key\",\"result\",\"throttle\",\"func\",\"timeFrame\",\"lastTime\",\"now\",\"Number\",\"Date\",\"deepCopy\",\"copy\",\"Array\",\"i\",\"len\",\"length\",\"Object\",\"attr\",\"hasOwnProperty\",\"Error\",\"isPlainObject\",\"toString\",\"reshape\",\"arr\",\"dim\",\"elemIndex\",\"_nest\",\"dimIndex\",\"concat\",\"slice\",\"push\"],\"sources\":[\"0\"],\"mappings\":\"AAAqB,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAClED,IACA,MAAME,EAAUL,EAAQ,4BASxBE,EAAQI,IARI,CAACC,EAAKC,EAAMC,OAAeC,KACnC,MAAMC,EAAUC,GAAWC,OAAOC,UAAUC,MACvCC,KAAKR,EAAMI,GACXK,OAAOC,SACPC,QAAO,CAACC,EAAKC,IAASD,QAAoCA,EAAIC,GAAOD,GAAMb,GAC1Ee,EAASX,EAAO,aAAeA,EAAO,aAC5C,YAAkBD,IAAXY,GAAwBA,IAAWf,EAAME,EAAea,CAAM,EAazEpB,EAAQqB,SAVR,SAAkBC,EAAMC,GACpB,IAAIC,EAAW,EACf,OAAO,WACH,IAAIC,EAAMC,OAAO,IAAIC,MACjBF,EAAMD,GAAYD,IAClBD,IACAE,EAAWC,EAEnB,CACJ,EA2BAzB,EAAQ4B,SAzBR,SAASA,EAASvB,GACd,IAAIwB,EAEJ,GAAI,MAAQxB,GAAO,iBAAmBA,EAClC,OAAOA,EAEX,GAAIA,aAAeyB,MAAO,CACtBD,EAAO,GACP,IAAK,IAAIE,EAAI,EAAGC,EAAM3B,EAAI4B,OAAQF,EAAIC,EAAKD,IACvCF,EAAKE,GAAKH,EAASvB,EAAI0B,IAE3B,OAAOF,CACX,CAEA,GAAIxB,aAAe6B,OAAQ,CACvB,MAAML,EAAO,CAAC,EACd,IAAK,MAAMM,KAAQ9B,EAAK,CACpB,MAAMc,EAAMgB,EACR9B,EAAI+B,eAAejB,KACnBU,EAAKV,GAAOS,EAASvB,EAAIc,IACjC,CACA,OAAOU,CACX,CACA,MAAM,IAAIQ,MAAM,gDACpB,EAKArC,EAAQsC,cAHR,SAAuBjC,GACnB,MAA+C,oBAAxC6B,OAAOtB,UAAU2B,SAASzB,KAAKT,EAC1C,EAqBAL,EAAQwC,QAnBR,SAAiBC,EAAKC,GAClB,IAAIC,EAAY,EAChB,OAAKD,GAAQD,EAEb,SAASG,EAAMC,GACX,IAAIzB,EAAS,GACb,GAAIyB,IAAaH,EAAIT,OAAS,EAC1Bb,GAAS,EAAIjB,EAAQ2C,QAAQL,EAAIM,MAAMJ,EAAWA,EAAYD,EAAIG,KAClEF,GAAaD,EAAIG,QAGjB,IAAK,IAAId,EAAI,EAAGA,EAAIW,EAAIG,GAAWd,IAC/BX,EAAO4B,KAAKJ,EAAMC,EAAW,IAGrC,OAAOzB,CACX,CACOwB,CAAM,GAdF,EAef,CAEJ\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/progress.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/progress.js","canonical":"models/progress","resolution":"ESM","id":"e6caa5bc95","hash":"e6caa5bc95478b14b2c3828292e99f5ee5f51628c41362dc1a01f041285e3c36","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Progress = exports.ProgressView = void 0;\nvar _a;\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst layout_1 = require(\"./layout\");\nclass ProgressView extends layout_1.HTMLBoxView {\n    connect_signals() {\n        super.connect_signals();\n        const render = () => this.render();\n        this.connect(this.model.properties.height.change, render);\n        this.connect(this.model.properties.width.change, render);\n        this.connect(this.model.properties.height_policy.change, render);\n        this.connect(this.model.properties.width_policy.change, render);\n        this.connect(this.model.properties.sizing_mode.change, render);\n        this.connect(this.model.properties.active.change, () => this.setCSS());\n        this.connect(this.model.properties.bar_color.change, () => this.setCSS());\n        this.connect(this.model.properties.css_classes.change, () => this.setCSS());\n        this.connect(this.model.properties.value.change, () => this.setValue());\n        this.connect(this.model.properties.max.change, () => this.setMax());\n    }\n    render() {\n        super.render();\n        const style = Object.assign(Object.assign({}, this.model.styles), { display: \"inline-block\" });\n        this.progressEl = document.createElement('progress');\n        this.setValue();\n        this.setMax();\n        // Set styling\n        this.setCSS();\n        for (const prop in style)\n            this.progressEl.style.setProperty(prop, style[prop]);\n        this.shadow_el.appendChild(this.progressEl);\n    }\n    stylesheets() {\n        const styles = super.stylesheets();\n        for (const css of this.model.css)\n            styles.push(new dom_1.ImportedStyleSheet(css));\n        return styles;\n    }\n    setCSS() {\n        let css = this.model.css_classes.join(\" \") + \" \" + this.model.bar_color;\n        if (this.model.active)\n            css = css + \" active\";\n        this.progressEl.className = css;\n    }\n    setValue() {\n        if (this.model.value == null)\n            this.progressEl.value = 0;\n        else if (this.model.value >= 0)\n            this.progressEl.value = this.model.value;\n        else if (this.model.value < 0)\n            this.progressEl.removeAttribute(\"value\");\n    }\n    setMax() {\n        if (this.model.max != null)\n            this.progressEl.max = this.model.max;\n    }\n}\nexports.ProgressView = ProgressView;\nProgressView.__name__ = \"ProgressView\";\nclass Progress extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.Progress = Progress;\n_a = Progress;\nProgress.__name__ = \"Progress\";\nProgress.__module__ = \"panel.models.widgets\";\n(() => {\n    _a.prototype.default_view = ProgressView;\n    _a.define(({ Any, Array, Boolean, Number, String }) => ({\n        active: [Boolean, true],\n        bar_color: [String, 'primary'],\n        css: [Array(String), []],\n        max: [Number, 100],\n        value: [Any, null],\n    }));\n})();\n//# sourceMappingURL=progress.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"ProgressView"},{"type":"named","name":"Progress"}],"externals":[],"shims":[]},"code":{"source":"/* models/progress.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    class ProgressView extends layout_1.HTMLBoxView {\n        connect_signals() {\n            super.connect_signals();\n            const render = () => this.render();\n            this.connect(this.model.properties.height.change, render);\n            this.connect(this.model.properties.width.change, render);\n            this.connect(this.model.properties.height_policy.change, render);\n            this.connect(this.model.properties.width_policy.change, render);\n            this.connect(this.model.properties.sizing_mode.change, render);\n            this.connect(this.model.properties.active.change, () => this.setCSS());\n            this.connect(this.model.properties.bar_color.change, () => this.setCSS());\n            this.connect(this.model.properties.css_classes.change, () => this.setCSS());\n            this.connect(this.model.properties.value.change, () => this.setValue());\n            this.connect(this.model.properties.max.change, () => this.setMax());\n        }\n        render() {\n            super.render();\n            const style = Object.assign(Object.assign({}, this.model.styles), { display: \"inline-block\" });\n            this.progressEl = document.createElement('progress');\n            this.setValue();\n            this.setMax();\n            // Set styling\n            this.setCSS();\n            for (const prop in style)\n                this.progressEl.style.setProperty(prop, style[prop]);\n            this.shadow_el.appendChild(this.progressEl);\n        }\n        stylesheets() {\n            const styles = super.stylesheets();\n            for (const css of this.model.css)\n                styles.push(new dom_1.ImportedStyleSheet(css));\n            return styles;\n        }\n        setCSS() {\n            let css = this.model.css_classes.join(\" \") + \" \" + this.model.bar_color;\n            if (this.model.active)\n                css = css + \" active\";\n            this.progressEl.className = css;\n        }\n        setValue() {\n            if (this.model.value == null)\n                this.progressEl.value = 0;\n            else if (this.model.value >= 0)\n                this.progressEl.value = this.model.value;\n            else if (this.model.value < 0)\n                this.progressEl.removeAttribute(\"value\");\n        }\n        setMax() {\n            if (this.model.max != null)\n                this.progressEl.max = this.model.max;\n        }\n    }\n    exports.ProgressView = ProgressView;\n    ProgressView.__name__ = \"ProgressView\";\n    class Progress extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.Progress = Progress;\n    _a = Progress;\n    Progress.__name__ = \"Progress\";\n    Progress.__module__ = \"panel.models.widgets\";\n    (() => {\n        _a.prototype.default_view = ProgressView;\n        _a.define(({ Any, Array, Boolean, Number, String }) => ({\n            active: [Boolean, true],\n            bar_color: [String, 'primary'],\n            css: [Array(String), []],\n            max: [Number, 100],\n            value: [Any, null],\n        }));\n    })();\n}\n","min_source":"function _(e,s,t,o,i){var r;o();const l=e(\"@bokehjs/core/dom\"),h=e(\"cac5f3ed28\");class n extends h.HTMLBoxView{connect_signals(){super.connect_signals();const e=()=>this.render();this.connect(this.model.properties.height.change,e),this.connect(this.model.properties.width.change,e),this.connect(this.model.properties.height_policy.change,e),this.connect(this.model.properties.width_policy.change,e),this.connect(this.model.properties.sizing_mode.change,e),this.connect(this.model.properties.active.change,(()=>this.setCSS())),this.connect(this.model.properties.bar_color.change,(()=>this.setCSS())),this.connect(this.model.properties.css_classes.change,(()=>this.setCSS())),this.connect(this.model.properties.value.change,(()=>this.setValue())),this.connect(this.model.properties.max.change,(()=>this.setMax()))}render(){super.render();const e=Object.assign(Object.assign({},this.model.styles),{display:\"inline-block\"});this.progressEl=document.createElement(\"progress\"),this.setValue(),this.setMax(),this.setCSS();for(const s in e)this.progressEl.style.setProperty(s,e[s]);this.shadow_el.appendChild(this.progressEl)}stylesheets(){const e=super.stylesheets();for(const s of this.model.css)e.push(new l.ImportedStyleSheet(s));return e}setCSS(){let e=this.model.css_classes.join(\" \")+\" \"+this.model.bar_color;this.model.active&&(e+=\" active\"),this.progressEl.className=e}setValue(){null==this.model.value?this.progressEl.value=0:this.model.value>=0?this.progressEl.value=this.model.value:this.model.value<0&&this.progressEl.removeAttribute(\"value\")}setMax(){null!=this.model.max&&(this.progressEl.max=this.model.max)}}t.ProgressView=n,n.__name__=\"ProgressView\";class c extends h.HTMLBox{constructor(e){super(e)}}t.Progress=c,r=c,c.__name__=\"Progress\",c.__module__=\"panel.models.widgets\",r.prototype.default_view=n,r.define((({Any:e,Array:s,Boolean:t,Number:o,String:i})=>({active:[t,!0],bar_color:[i,\"primary\"],css:[s(i),[]],max:[o,100],value:[e,null]})))}\n//# sourceMappingURL=progress.min.js.map","min_map":"{\"version\":3,\"file\":\"progress.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"dom_1\",\"layout_1\",\"ProgressView\",\"HTMLBoxView\",\"connect_signals\",\"super\",\"render\",\"this\",\"connect\",\"model\",\"properties\",\"height\",\"change\",\"width\",\"height_policy\",\"width_policy\",\"sizing_mode\",\"active\",\"setCSS\",\"bar_color\",\"css_classes\",\"value\",\"setValue\",\"max\",\"setMax\",\"style\",\"Object\",\"assign\",\"styles\",\"display\",\"progressEl\",\"document\",\"createElement\",\"prop\",\"setProperty\",\"shadow_el\",\"appendChild\",\"stylesheets\",\"css\",\"push\",\"ImportedStyleSheet\",\"join\",\"className\",\"removeAttribute\",\"__name__\",\"Progress\",\"HTMLBox\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Any\",\"Array\",\"Boolean\",\"Number\",\"String\"],\"sources\":[\"0\"],\"mappings\":\"AAAyB,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAEtE,IAAIC,EADJF,IAEA,MAAMG,EAAQN,EAAQ,qBAChBO,EAAWP,EAAQ,cACzB,MAAMQ,UAAqBD,EAASE,YAChC,eAAAC,GACIC,MAAMD,kBACN,MAAME,EAAS,IAAMC,KAAKD,SAC1BC,KAAKC,QAAQD,KAAKE,MAAMC,WAAWC,OAAOC,OAAQN,GAClDC,KAAKC,QAAQD,KAAKE,MAAMC,WAAWG,MAAMD,OAAQN,GACjDC,KAAKC,QAAQD,KAAKE,MAAMC,WAAWI,cAAcF,OAAQN,GACzDC,KAAKC,QAAQD,KAAKE,MAAMC,WAAWK,aAAaH,OAAQN,GACxDC,KAAKC,QAAQD,KAAKE,MAAMC,WAAWM,YAAYJ,OAAQN,GACvDC,KAAKC,QAAQD,KAAKE,MAAMC,WAAWO,OAAOL,QAAQ,IAAML,KAAKW,WAC7DX,KAAKC,QAAQD,KAAKE,MAAMC,WAAWS,UAAUP,QAAQ,IAAML,KAAKW,WAChEX,KAAKC,QAAQD,KAAKE,MAAMC,WAAWU,YAAYR,QAAQ,IAAML,KAAKW,WAClEX,KAAKC,QAAQD,KAAKE,MAAMC,WAAWW,MAAMT,QAAQ,IAAML,KAAKe,aAC5Df,KAAKC,QAAQD,KAAKE,MAAMC,WAAWa,IAAIX,QAAQ,IAAML,KAAKiB,UAC9D,CACA,MAAAlB,GACID,MAAMC,SACN,MAAMmB,EAAQC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGpB,KAAKE,MAAMmB,QAAS,CAAEC,QAAS,iBAC7EtB,KAAKuB,WAAaC,SAASC,cAAc,YACzCzB,KAAKe,WACLf,KAAKiB,SAELjB,KAAKW,SACL,IAAK,MAAMe,KAAQR,EACflB,KAAKuB,WAAWL,MAAMS,YAAYD,EAAMR,EAAMQ,IAClD1B,KAAK4B,UAAUC,YAAY7B,KAAKuB,WACpC,CACA,WAAAO,GACI,MAAMT,EAASvB,MAAMgC,cACrB,IAAK,MAAMC,KAAO/B,KAAKE,MAAM6B,IACzBV,EAAOW,KAAK,IAAIvC,EAAMwC,mBAAmBF,IAC7C,OAAOV,CACX,CACA,MAAAV,GACI,IAAIoB,EAAM/B,KAAKE,MAAMW,YAAYqB,KAAK,KAAO,IAAMlC,KAAKE,MAAMU,UAC1DZ,KAAKE,MAAMQ,SACXqB,GAAY,WAChB/B,KAAKuB,WAAWY,UAAYJ,CAChC,CACA,QAAAhB,GAC4B,MAApBf,KAAKE,MAAMY,MACXd,KAAKuB,WAAWT,MAAQ,EACnBd,KAAKE,MAAMY,OAAS,EACzBd,KAAKuB,WAAWT,MAAQd,KAAKE,MAAMY,MAC9Bd,KAAKE,MAAMY,MAAQ,GACxBd,KAAKuB,WAAWa,gBAAgB,QACxC,CACA,MAAAnB,GAC0B,MAAlBjB,KAAKE,MAAMc,MACXhB,KAAKuB,WAAWP,IAAMhB,KAAKE,MAAMc,IACzC,EAEJ3B,EAAQM,aAAeA,EACvBA,EAAa0C,SAAW,eACxB,MAAMC,UAAiB5C,EAAS6C,QAC5B,WAAAC,CAAYC,GACR3C,MAAM2C,EACV,EAEJpD,EAAQiD,SAAWA,EACnB9C,EAAK8C,EACLA,EAASD,SAAW,WACpBC,EAASI,WAAa,uBAElBlD,EAAGmD,UAAUC,aAAejD,EAC5BH,EAAGqD,QAAO,EAAGC,MAAKC,QAAOC,UAASC,SAAQC,aAAa,CACnDxC,OAAQ,CAACsC,GAAS,GAClBpC,UAAW,CAACsC,EAAQ,WACpBnB,IAAK,CAACgB,EAAMG,GAAS,IACrBlC,IAAK,CAACiC,EAAQ,KACdnC,MAAO,CAACgC,EAAK,SAGzB\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/quill.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/quill.js","canonical":"models/quill","resolution":"ESM","id":"361033d351","hash":"361033d35100570f585529261ed77197dc7958d8978f4e9551f635e4027e92a3","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.QuillInput = exports.QuillInputView = void 0;\nvar _a;\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst layout_1 = require(\"./layout\");\nclass QuillInputView extends layout_1.HTMLBoxView {\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.disabled.change, () => this.quill.enable(!this.model.disabled));\n        this.connect(this.model.properties.visible.change, () => {\n            if (this.model.visible)\n                this.container.style.visibility = 'visible';\n        });\n        this.connect(this.model.properties.text.change, () => {\n            if (this._editing)\n                return;\n            this._editing = true;\n            this.quill.enable(false);\n            this.quill.setContents([]);\n            this.quill.clipboard.dangerouslyPasteHTML(this.model.text);\n            this.quill.enable(!this.model.disabled);\n            this._editing = false;\n        });\n        const { mode, toolbar, placeholder } = this.model.properties;\n        this.on_change([placeholder], () => {\n            this.quill.root.setAttribute('data-placeholder', this.model.placeholder);\n        });\n        this.on_change([mode, toolbar], () => {\n            this.render();\n            this._layout_toolbar();\n        });\n    }\n    _layout_toolbar() {\n        if (this._toolbar == null) {\n            this.el.style.removeProperty('padding-top');\n        }\n        else {\n            const height = this._toolbar.getBoundingClientRect().height + 1;\n            this.el.style.paddingTop = height + \"px\";\n            this._toolbar.style.marginTop = -height + \"px\";\n        }\n    }\n    render() {\n        super.render();\n        this.container = (0, dom_1.div)({ style: \"visibility: hidden;\" });\n        this.shadow_el.appendChild(this.container);\n        const theme = (this.model.mode === 'bubble') ? 'bubble' : 'snow';\n        this.watch_stylesheets();\n        this.quill = new window.Quill(this.container, {\n            modules: {\n                toolbar: this.model.toolbar\n            },\n            readOnly: true,\n            placeholder: this.model.placeholder,\n            theme: theme\n        });\n        // Apply ShadowDOM patch found at:\n        // https://github.com/quilljs/quill/issues/2961#issuecomment-1775999845\n        const hasShadowRootSelection = !!(document.createElement('div').attachShadow({ mode: 'open' }).getSelection);\n        // Each browser engine has a different implementation for retrieving the Range\n        const getNativeRange = (rootNode) => {\n            try {\n                if (hasShadowRootSelection) {\n                    // In Chromium, the shadow root has a getSelection function which returns the range\n                    return rootNode.getSelection().getRangeAt(0);\n                }\n                else {\n                    const selection = window.getSelection();\n                    if (selection.getComposedRanges) {\n                        // Webkit range retrieval is done with getComposedRanges (see: https://bugs.webkit.org/show_bug.cgi?id=163921)\n                        return selection.getComposedRanges(rootNode)[0];\n                    }\n                    else {\n                        // Gecko implements the range API properly in Native Shadow: https://developer.mozilla.org/en-US/docs/Web/API/Selection/getRangeAt\n                        return selection.getRangeAt(0);\n                    }\n                }\n            }\n            catch (_b) {\n                return null;\n            }\n        };\n        /**\n         * Original implementation uses document.active element which does not work in Native Shadow.\n         * Replace document.activeElement with shadowRoot.activeElement\n         **/\n        this.quill.selection.hasFocus = () => {\n            const rootNode = this.quill.root.getRootNode();\n            return rootNode.activeElement === this.quill.root;\n        };\n        /**\n         * Original implementation uses document.getSelection which does not work in Native Shadow.\n         * Replace document.getSelection with shadow dom equivalent (different for each browser)\n         **/\n        this.quill.selection.getNativeRange = () => {\n            const rootNode = this.quill.root.getRootNode();\n            const nativeRange = getNativeRange(rootNode);\n            return !!nativeRange ? this.quill.selection.normalizeNative(nativeRange) : null;\n        };\n        /**\n         * Original implementation relies on Selection.addRange to programmatically set the range, which does not work\n         * in Webkit with Native Shadow. Selection.addRange works fine in Chromium and Gecko.\n         **/\n        this.quill.selection.setNativeRange = (startNode, startOffset) => {\n            var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n            var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n            var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n            if (startNode != null && (this.quill.selection.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n                return;\n            }\n            var selection = document.getSelection();\n            if (selection == null)\n                return;\n            if (startNode != null) {\n                if (!this.quill.selection.hasFocus())\n                    this.quill.selection.root.focus();\n                var native = (this.quill.selection.getNativeRange() || {}).native;\n                if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n                    if (startNode.tagName == \"BR\") {\n                        startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n                        startNode = startNode.parentNode;\n                    }\n                    if (endNode.tagName == \"BR\") {\n                        endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n                        endNode = endNode.parentNode;\n                    }\n                    selection.setBaseAndExtent(startNode, startOffset, endNode, endOffset);\n                }\n            }\n            else {\n                selection.removeAllRanges();\n                this.quill.selection.root.blur();\n                document.body.focus();\n            }\n        };\n        this._editor = this.shadow_el.querySelector('.ql-editor');\n        this._toolbar = this.shadow_el.querySelector('.ql-toolbar');\n        const delta = this.quill.clipboard.convert(this.model.text);\n        this.quill.setContents(delta);\n        this.quill.on('text-change', () => {\n            if (this._editing)\n                return;\n            this._editing = true;\n            this.model.text = this._editor.innerHTML;\n            this._editing = false;\n        });\n        if (!this.model.disabled)\n            this.quill.enable(!this.model.disabled);\n        document.addEventListener(\"selectionchange\", (..._args) => {\n            // Update selection and some other properties\n            this.quill.selection.update();\n        });\n    }\n    style_redraw() {\n        if (this.model.visible)\n            this.container.style.visibility = 'visible';\n        const delta = this.quill.clipboard.convert(this.model.text);\n        this.quill.setContents(delta);\n        this.invalidate_layout();\n    }\n    after_layout() {\n        super.after_layout();\n        this._layout_toolbar();\n    }\n}\nexports.QuillInputView = QuillInputView;\nQuillInputView.__name__ = \"QuillInputView\";\nclass QuillInput extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.QuillInput = QuillInput;\n_a = QuillInput;\nQuillInput.__name__ = \"QuillInput\";\nQuillInput.__module__ = \"panel.models.quill\";\n(() => {\n    _a.prototype.default_view = QuillInputView;\n    _a.define(({ Any, String }) => ({\n        mode: [String, 'toolbar'],\n        placeholder: [String, ''],\n        text: [String, ''],\n        toolbar: [Any, null],\n    }));\n    _a.override({\n        height: 300\n    });\n})();\n//# sourceMappingURL=quill.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"QuillInputView"},{"type":"named","name":"QuillInput"}],"externals":[],"shims":[]},"code":{"source":"/* models/quill.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    class QuillInputView extends layout_1.HTMLBoxView {\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.disabled.change, () => this.quill.enable(!this.model.disabled));\n            this.connect(this.model.properties.visible.change, () => {\n                if (this.model.visible)\n                    this.container.style.visibility = 'visible';\n            });\n            this.connect(this.model.properties.text.change, () => {\n                if (this._editing)\n                    return;\n                this._editing = true;\n                this.quill.enable(false);\n                this.quill.setContents([]);\n                this.quill.clipboard.dangerouslyPasteHTML(this.model.text);\n                this.quill.enable(!this.model.disabled);\n                this._editing = false;\n            });\n            const { mode, toolbar, placeholder } = this.model.properties;\n            this.on_change([placeholder], () => {\n                this.quill.root.setAttribute('data-placeholder', this.model.placeholder);\n            });\n            this.on_change([mode, toolbar], () => {\n                this.render();\n                this._layout_toolbar();\n            });\n        }\n        _layout_toolbar() {\n            if (this._toolbar == null) {\n                this.el.style.removeProperty('padding-top');\n            }\n            else {\n                const height = this._toolbar.getBoundingClientRect().height + 1;\n                this.el.style.paddingTop = height + \"px\";\n                this._toolbar.style.marginTop = -height + \"px\";\n            }\n        }\n        render() {\n            super.render();\n            this.container = (0, dom_1.div)({ style: \"visibility: hidden;\" });\n            this.shadow_el.appendChild(this.container);\n            const theme = (this.model.mode === 'bubble') ? 'bubble' : 'snow';\n            this.watch_stylesheets();\n            this.quill = new window.Quill(this.container, {\n                modules: {\n                    toolbar: this.model.toolbar\n                },\n                readOnly: true,\n                placeholder: this.model.placeholder,\n                theme: theme\n            });\n            // Apply ShadowDOM patch found at:\n            // https://github.com/quilljs/quill/issues/2961#issuecomment-1775999845\n            const hasShadowRootSelection = !!(document.createElement('div').attachShadow({ mode: 'open' }).getSelection);\n            // Each browser engine has a different implementation for retrieving the Range\n            const getNativeRange = (rootNode) => {\n                try {\n                    if (hasShadowRootSelection) {\n                        // In Chromium, the shadow root has a getSelection function which returns the range\n                        return rootNode.getSelection().getRangeAt(0);\n                    }\n                    else {\n                        const selection = window.getSelection();\n                        if (selection.getComposedRanges) {\n                            // Webkit range retrieval is done with getComposedRanges (see: https://bugs.webkit.org/show_bug.cgi?id=163921)\n                            return selection.getComposedRanges(rootNode)[0];\n                        }\n                        else {\n                            // Gecko implements the range API properly in Native Shadow: https://developer.mozilla.org/en-US/docs/Web/API/Selection/getRangeAt\n                            return selection.getRangeAt(0);\n                        }\n                    }\n                }\n                catch (_b) {\n                    return null;\n                }\n            };\n            /**\n             * Original implementation uses document.active element which does not work in Native Shadow.\n             * Replace document.activeElement with shadowRoot.activeElement\n             **/\n            this.quill.selection.hasFocus = () => {\n                const rootNode = this.quill.root.getRootNode();\n                return rootNode.activeElement === this.quill.root;\n            };\n            /**\n             * Original implementation uses document.getSelection which does not work in Native Shadow.\n             * Replace document.getSelection with shadow dom equivalent (different for each browser)\n             **/\n            this.quill.selection.getNativeRange = () => {\n                const rootNode = this.quill.root.getRootNode();\n                const nativeRange = getNativeRange(rootNode);\n                return !!nativeRange ? this.quill.selection.normalizeNative(nativeRange) : null;\n            };\n            /**\n             * Original implementation relies on Selection.addRange to programmatically set the range, which does not work\n             * in Webkit with Native Shadow. Selection.addRange works fine in Chromium and Gecko.\n             **/\n            this.quill.selection.setNativeRange = (startNode, startOffset) => {\n                var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n                var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n                var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n                if (startNode != null && (this.quill.selection.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n                    return;\n                }\n                var selection = document.getSelection();\n                if (selection == null)\n                    return;\n                if (startNode != null) {\n                    if (!this.quill.selection.hasFocus())\n                        this.quill.selection.root.focus();\n                    var native = (this.quill.selection.getNativeRange() || {}).native;\n                    if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n                        if (startNode.tagName == \"BR\") {\n                            startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n                            startNode = startNode.parentNode;\n                        }\n                        if (endNode.tagName == \"BR\") {\n                            endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n                            endNode = endNode.parentNode;\n                        }\n                        selection.setBaseAndExtent(startNode, startOffset, endNode, endOffset);\n                    }\n                }\n                else {\n                    selection.removeAllRanges();\n                    this.quill.selection.root.blur();\n                    document.body.focus();\n                }\n            };\n            this._editor = this.shadow_el.querySelector('.ql-editor');\n            this._toolbar = this.shadow_el.querySelector('.ql-toolbar');\n            const delta = this.quill.clipboard.convert(this.model.text);\n            this.quill.setContents(delta);\n            this.quill.on('text-change', () => {\n                if (this._editing)\n                    return;\n                this._editing = true;\n                this.model.text = this._editor.innerHTML;\n                this._editing = false;\n            });\n            if (!this.model.disabled)\n                this.quill.enable(!this.model.disabled);\n            document.addEventListener(\"selectionchange\", (..._args) => {\n                // Update selection and some other properties\n                this.quill.selection.update();\n            });\n        }\n        style_redraw() {\n            if (this.model.visible)\n                this.container.style.visibility = 'visible';\n            const delta = this.quill.clipboard.convert(this.model.text);\n            this.quill.setContents(delta);\n            this.invalidate_layout();\n        }\n        after_layout() {\n            super.after_layout();\n            this._layout_toolbar();\n        }\n    }\n    exports.QuillInputView = QuillInputView;\n    QuillInputView.__name__ = \"QuillInputView\";\n    class QuillInput extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.QuillInput = QuillInput;\n    _a = QuillInput;\n    QuillInput.__name__ = \"QuillInput\";\n    QuillInput.__module__ = \"panel.models.quill\";\n    (() => {\n        _a.prototype.default_view = QuillInputView;\n        _a.define(({ Any, String }) => ({\n            mode: [String, 'toolbar'],\n            placeholder: [String, ''],\n            text: [String, ''],\n            toolbar: [Any, null],\n        }));\n        _a.override({\n            height: 300\n        });\n    })();\n}\n","min_source":"function _(e,t,i,l,o){var s;l();const n=e(\"@bokehjs/core/dom\"),a=e(\"cac5f3ed28\");class d extends a.HTMLBoxView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.disabled.change,(()=>this.quill.enable(!this.model.disabled))),this.connect(this.model.properties.visible.change,(()=>{this.model.visible&&(this.container.style.visibility=\"visible\")})),this.connect(this.model.properties.text.change,(()=>{this._editing||(this._editing=!0,this.quill.enable(!1),this.quill.setContents([]),this.quill.clipboard.dangerouslyPasteHTML(this.model.text),this.quill.enable(!this.model.disabled),this._editing=!1)}));const{mode:e,toolbar:t,placeholder:i}=this.model.properties;this.on_change([i],(()=>{this.quill.root.setAttribute(\"data-placeholder\",this.model.placeholder)})),this.on_change([e,t],(()=>{this.render(),this._layout_toolbar()}))}_layout_toolbar(){if(null==this._toolbar)this.el.style.removeProperty(\"padding-top\");else{const e=this._toolbar.getBoundingClientRect().height+1;this.el.style.paddingTop=e+\"px\",this._toolbar.style.marginTop=-e+\"px\"}}render(){super.render(),this.container=(0,n.div)({style:\"visibility: hidden;\"}),this.shadow_el.appendChild(this.container);const e=\"bubble\"===this.model.mode?\"bubble\":\"snow\";this.watch_stylesheets(),this.quill=new window.Quill(this.container,{modules:{toolbar:this.model.toolbar},readOnly:!0,placeholder:this.model.placeholder,theme:e});const t=!!document.createElement(\"div\").attachShadow({mode:\"open\"}).getSelection;this.quill.selection.hasFocus=()=>this.quill.root.getRootNode().activeElement===this.quill.root,this.quill.selection.getNativeRange=()=>{const e=(e=>{try{if(t)return e.getSelection().getRangeAt(0);{const t=window.getSelection();return t.getComposedRanges?t.getComposedRanges(e)[0]:t.getRangeAt(0)}}catch(e){return null}})(this.quill.root.getRootNode());return e?this.quill.selection.normalizeNative(e):null},this.quill.selection.setNativeRange=(e,t)=>{var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e,l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(null==e||null!=this.quill.selection.root.parentNode&&null!=e.parentNode&&null!=i.parentNode){var s=document.getSelection();if(null!=s)if(null!=e){this.quill.selection.hasFocus()||this.quill.selection.root.focus();var n=(this.quill.selection.getNativeRange()||{}).native;(null==n||o||e!==n.startContainer||t!==n.startOffset||i!==n.endContainer||l!==n.endOffset)&&(\"BR\"==e.tagName&&(t=[].indexOf.call(e.parentNode.childNodes,e),e=e.parentNode),\"BR\"==i.tagName&&(l=[].indexOf.call(i.parentNode.childNodes,i),i=i.parentNode),s.setBaseAndExtent(e,t,i,l))}else s.removeAllRanges(),this.quill.selection.root.blur(),document.body.focus()}},this._editor=this.shadow_el.querySelector(\".ql-editor\"),this._toolbar=this.shadow_el.querySelector(\".ql-toolbar\");const i=this.quill.clipboard.convert(this.model.text);this.quill.setContents(i),this.quill.on(\"text-change\",(()=>{this._editing||(this._editing=!0,this.model.text=this._editor.innerHTML,this._editing=!1)})),this.model.disabled||this.quill.enable(!this.model.disabled),document.addEventListener(\"selectionchange\",((...e)=>{this.quill.selection.update()}))}style_redraw(){this.model.visible&&(this.container.style.visibility=\"visible\");const e=this.quill.clipboard.convert(this.model.text);this.quill.setContents(e),this.invalidate_layout()}after_layout(){super.after_layout(),this._layout_toolbar()}}i.QuillInputView=d,d.__name__=\"QuillInputView\";class h extends a.HTMLBox{constructor(e){super(e)}}i.QuillInput=h,s=h,h.__name__=\"QuillInput\",h.__module__=\"panel.models.quill\",s.prototype.default_view=d,s.define((({Any:e,String:t})=>({mode:[t,\"toolbar\"],placeholder:[t,\"\"],text:[t,\"\"],toolbar:[e,null]}))),s.override({height:300})}\n//# sourceMappingURL=quill.min.js.map","min_map":"{\"version\":3,\"file\":\"quill.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"dom_1\",\"layout_1\",\"QuillInputView\",\"HTMLBoxView\",\"connect_signals\",\"super\",\"this\",\"connect\",\"model\",\"properties\",\"disabled\",\"change\",\"quill\",\"enable\",\"visible\",\"container\",\"style\",\"visibility\",\"text\",\"_editing\",\"setContents\",\"clipboard\",\"dangerouslyPasteHTML\",\"mode\",\"toolbar\",\"placeholder\",\"on_change\",\"root\",\"setAttribute\",\"render\",\"_layout_toolbar\",\"_toolbar\",\"el\",\"removeProperty\",\"height\",\"getBoundingClientRect\",\"paddingTop\",\"marginTop\",\"div\",\"shadow_el\",\"appendChild\",\"theme\",\"watch_stylesheets\",\"window\",\"Quill\",\"modules\",\"readOnly\",\"hasShadowRootSelection\",\"document\",\"createElement\",\"attachShadow\",\"selection\",\"hasFocus\",\"getRootNode\",\"activeElement\",\"getNativeRange\",\"nativeRange\",\"rootNode\",\"getSelection\",\"getRangeAt\",\"getComposedRanges\",\"_b\",\"normalizeNative\",\"setNativeRange\",\"startNode\",\"startOffset\",\"endNode\",\"arguments\",\"length\",\"undefined\",\"endOffset\",\"force\",\"parentNode\",\"focus\",\"native\",\"startContainer\",\"endContainer\",\"tagName\",\"indexOf\",\"call\",\"childNodes\",\"setBaseAndExtent\",\"removeAllRanges\",\"blur\",\"body\",\"_editor\",\"querySelector\",\"delta\",\"convert\",\"on\",\"innerHTML\",\"addEventListener\",\"_args\",\"update\",\"style_redraw\",\"invalidate_layout\",\"after_layout\",\"__name__\",\"QuillInput\",\"HTMLBox\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Any\",\"String\",\"override\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/radio_button_group.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/radio_button_group.js","canonical":"models/radio_button_group","resolution":"ESM","id":"81e6ca704a","hash":"81e6ca704acf1cebefc34d1b016c425df8e3a13187f318d5f6a83e96e77f3b5b","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RadioButtonGroup = exports.RadioButtonGroupView = void 0;\nvar _a;\nconst tooltip_1 = require(\"@bokehjs/models/ui/tooltip\");\nconst build_views_1 = require(\"@bokehjs/core/build_views\");\nconst radio_button_group_1 = require(\"@bokehjs/models/widgets/radio_button_group\");\nclass RadioButtonGroupView extends radio_button_group_1.RadioButtonGroupView {\n    *children() {\n        yield* super.children();\n        if (this.tooltip != null)\n            yield this.tooltip;\n    }\n    async lazy_initialize() {\n        await super.lazy_initialize();\n        const { tooltip } = this.model;\n        if (tooltip != null)\n            this.tooltip = await (0, build_views_1.build_view)(tooltip, { parent: this });\n    }\n    remove() {\n        var _b;\n        (_b = this.tooltip) === null || _b === void 0 ? void 0 : _b.remove();\n        super.remove();\n    }\n    render() {\n        super.render();\n        const toggle = (visible) => {\n            var _b;\n            (_b = this.tooltip) === null || _b === void 0 ? void 0 : _b.model.setv({\n                visible,\n            });\n        };\n        let timer;\n        this.el.addEventListener(\"mouseenter\", () => {\n            timer = setTimeout(() => toggle(true), this.model.tooltip_delay);\n        });\n        this.el.addEventListener(\"mouseleave\", () => {\n            clearTimeout(timer);\n            toggle(false);\n        });\n    }\n}\nexports.RadioButtonGroupView = RadioButtonGroupView;\nRadioButtonGroupView.__name__ = \"RadioButtonGroupView\";\nclass RadioButtonGroup extends radio_button_group_1.RadioButtonGroup {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.RadioButtonGroup = RadioButtonGroup;\n_a = RadioButtonGroup;\nRadioButtonGroup.__name__ = \"RadioButtonGroup\";\nRadioButtonGroup.__module__ = \"panel.models.widgets\";\n(() => {\n    _a.prototype.default_view = RadioButtonGroupView;\n    _a.define(({ Nullable, Ref, Number }) => ({\n        tooltip: [Nullable(Ref(tooltip_1.Tooltip)), null],\n        tooltip_delay: [Number, 500],\n    }));\n})();\n//# sourceMappingURL=radio_button_group.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"RadioButtonGroupView"},{"type":"named","name":"RadioButtonGroup"}],"externals":[],"shims":[]},"code":{"source":"/* models/radio_button_group.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const tooltip_1 = require(\"@bokehjs/models/ui/tooltip\");\n    const build_views_1 = require(\"@bokehjs/core/build_views\");\n    const radio_button_group_1 = require(\"@bokehjs/models/widgets/radio_button_group\");\n    class RadioButtonGroupView extends radio_button_group_1.RadioButtonGroupView {\n        *children() {\n            yield* super.children();\n            if (this.tooltip != null)\n                yield this.tooltip;\n        }\n        async lazy_initialize() {\n            await super.lazy_initialize();\n            const { tooltip } = this.model;\n            if (tooltip != null)\n                this.tooltip = await (0, build_views_1.build_view)(tooltip, { parent: this });\n        }\n        remove() {\n            var _b;\n            (_b = this.tooltip) === null || _b === void 0 ? void 0 : _b.remove();\n            super.remove();\n        }\n        render() {\n            super.render();\n            const toggle = (visible) => {\n                var _b;\n                (_b = this.tooltip) === null || _b === void 0 ? void 0 : _b.model.setv({\n                    visible,\n                });\n            };\n            let timer;\n            this.el.addEventListener(\"mouseenter\", () => {\n                timer = setTimeout(() => toggle(true), this.model.tooltip_delay);\n            });\n            this.el.addEventListener(\"mouseleave\", () => {\n                clearTimeout(timer);\n                toggle(false);\n            });\n        }\n    }\n    exports.RadioButtonGroupView = RadioButtonGroupView;\n    RadioButtonGroupView.__name__ = \"RadioButtonGroupView\";\n    class RadioButtonGroup extends radio_button_group_1.RadioButtonGroup {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.RadioButtonGroup = RadioButtonGroup;\n    _a = RadioButtonGroup;\n    RadioButtonGroup.__name__ = \"RadioButtonGroup\";\n    RadioButtonGroup.__module__ = \"panel.models.widgets\";\n    (() => {\n        _a.prototype.default_view = RadioButtonGroupView;\n        _a.define(({ Nullable, Ref, Number }) => ({\n            tooltip: [Nullable(Ref(tooltip_1.Tooltip)), null],\n            tooltip_delay: [Number, 500],\n        }));\n    })();\n}\n","min_source":"function _(e,t,o,i,l){var s;i();const n=e(\"@bokehjs/models/ui/tooltip\"),u=e(\"@bokehjs/core/build_views\"),d=e(\"@bokehjs/models/widgets/radio_button_group\");class r extends d.RadioButtonGroupView{*children(){yield*super.children(),null!=this.tooltip&&(yield this.tooltip)}async lazy_initialize(){await super.lazy_initialize();const{tooltip:e}=this.model;null!=e&&(this.tooltip=await(0,u.build_view)(e,{parent:this}))}remove(){var e;null===(e=this.tooltip)||void 0===e||e.remove(),super.remove()}render(){super.render();const e=e=>{var t;null===(t=this.tooltip)||void 0===t||t.model.setv({visible:e})};let t;this.el.addEventListener(\"mouseenter\",(()=>{t=setTimeout((()=>e(!0)),this.model.tooltip_delay)})),this.el.addEventListener(\"mouseleave\",(()=>{clearTimeout(t),e(!1)}))}}o.RadioButtonGroupView=r,r.__name__=\"RadioButtonGroupView\";class a extends d.RadioButtonGroup{constructor(e){super(e)}}o.RadioButtonGroup=a,s=a,a.__name__=\"RadioButtonGroup\",a.__module__=\"panel.models.widgets\",s.prototype.default_view=r,s.define((({Nullable:e,Ref:t,Number:o})=>({tooltip:[e(t(n.Tooltip)),null],tooltip_delay:[o,500]})))}\n//# sourceMappingURL=radio_button_group.min.js.map","min_map":"{\"version\":3,\"file\":\"radio_button_group.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"tooltip_1\",\"build_views_1\",\"radio_button_group_1\",\"RadioButtonGroupView\",\"children\",\"super\",\"this\",\"tooltip\",\"lazy_initialize\",\"model\",\"build_view\",\"parent\",\"remove\",\"_b\",\"render\",\"toggle\",\"visible\",\"setv\",\"timer\",\"el\",\"addEventListener\",\"setTimeout\",\"tooltip_delay\",\"clearTimeout\",\"__name__\",\"RadioButtonGroup\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Nullable\",\"Ref\",\"Number\",\"Tooltip\"],\"sources\":[\"0\"],\"mappings\":\"AAAmC,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAEhF,IAAIC,EADJF,IAEA,MAAMG,EAAYN,EAAQ,8BACpBO,EAAgBP,EAAQ,6BACxBQ,EAAuBR,EAAQ,8CACrC,MAAMS,UAA6BD,EAAqBC,qBACpD,SAACC,SACUC,MAAMD,WACO,MAAhBE,KAAKC,gBACCD,KAAKC,QACnB,CACA,qBAAMC,SACIH,MAAMG,kBACZ,MAAMD,QAAEA,GAAYD,KAAKG,MACV,MAAXF,IACAD,KAAKC,cAAgB,EAAIN,EAAcS,YAAYH,EAAS,CAAEI,OAAQL,OAC9E,CACA,MAAAM,GACI,IAAIC,EACoB,QAAvBA,EAAKP,KAAKC,eAA4B,IAAPM,GAAyBA,EAAGD,SAC5DP,MAAMO,QACV,CACA,MAAAE,GACIT,MAAMS,SACN,MAAMC,EAAUC,IACZ,IAAIH,EACoB,QAAvBA,EAAKP,KAAKC,eAA4B,IAAPM,GAAyBA,EAAGJ,MAAMQ,KAAK,CACnED,WACF,EAEN,IAAIE,EACJZ,KAAKa,GAAGC,iBAAiB,cAAc,KACnCF,EAAQG,YAAW,IAAMN,GAAO,IAAOT,KAAKG,MAAMa,cAAc,IAEpEhB,KAAKa,GAAGC,iBAAiB,cAAc,KACnCG,aAAaL,GACbH,GAAO,EAAM,GAErB,EAEJnB,EAAQO,qBAAuBA,EAC/BA,EAAqBqB,SAAW,uBAChC,MAAMC,UAAyBvB,EAAqBuB,iBAChD,WAAAC,CAAYC,GACRtB,MAAMsB,EACV,EAEJ/B,EAAQ6B,iBAAmBA,EAC3B1B,EAAK0B,EACLA,EAAiBD,SAAW,mBAC5BC,EAAiBG,WAAa,uBAE1B7B,EAAG8B,UAAUC,aAAe3B,EAC5BJ,EAAGgC,QAAO,EAAGC,WAAUC,MAAKC,aAAa,CACrC3B,QAAS,CAACyB,EAASC,EAAIjC,EAAUmC,UAAW,MAC5Cb,cAAe,CAACY,EAAQ,QAGpC\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/reactive_html.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/reactive_html.js","canonical":"models/reactive_html","resolution":"ESM","id":"93e5d50dc2","hash":"93e5d50dc2fdee5324885db09bb66be61b4e0e6d1fcb594ac3f6138a6380fec8","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReactiveHTML = exports.ReactiveHTMLView = void 0;\nvar _a;\nconst preact_1 = require(\"preact\");\nconst hooks_1 = require(\"preact/hooks\");\nconst preact_2 = require(\"htm/preact\");\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst types_1 = require(\"@bokehjs/core/util/types\");\nconst data_1 = require(\"./data\");\nconst event_to_object_1 = require(\"./event-to-object\");\nconst html_1 = require(\"./html\");\nconst layout_1 = require(\"./layout\");\nfunction serialize_attrs(attrs) {\n    const serialized = {};\n    for (const attr in attrs) {\n        let value = attrs[attr];\n        if (typeof value !== \"string\")\n            value = value;\n        else if (value !== \"\" && (value === \"NaN\" || !isNaN(Number(value))))\n            value = Number(value);\n        else if (value === 'false' || value === 'true')\n            value = value === 'true' ? true : false;\n        serialized[attr] = value;\n    }\n    return serialized;\n}\nfunction escapeRegex(string) {\n    return string.replace(/[-\\/\\\\^$*+?.()|[\\]]/g, '\\\\$&');\n}\nfunction extractToken(template, str, tokens) {\n    const tokenMapping = {};\n    for (const match of tokens)\n        tokenMapping[`{${match}}`] = \"(.*)\";\n    const tokenList = [];\n    let regexpTemplate = \"^\" + escapeRegex(template) + \"$\";\n    // Find the order of the tokens\n    let i, tokenIndex, tokenEntry;\n    for (const m in tokenMapping) {\n        tokenIndex = template.indexOf(m);\n        // Token found\n        if (tokenIndex > -1) {\n            regexpTemplate = regexpTemplate.replace(m, tokenMapping[m]);\n            tokenEntry = {\n                index: tokenIndex,\n                token: m\n            };\n            for (i = 0; i < tokenList.length && tokenList[i].index < tokenIndex; i++)\n                ;\n            // Insert it at index i\n            if (i < tokenList.length)\n                tokenList.splice(i, 0, tokenEntry);\n            else\n                tokenList.push(tokenEntry);\n        }\n    }\n    regexpTemplate = regexpTemplate.replace(/\\{[^{}]+\\}/g, '.*');\n    var match = new RegExp(regexpTemplate).exec(str);\n    let result = null;\n    if (match) {\n        result = {};\n        // Find your token entry\n        for (i = 0; i < tokenList.length; i++)\n            result[tokenList[i].token.slice(1, -1)] = match[i + 1];\n    }\n    return result;\n}\nfunction element_lookup(root, el_id) {\n    let el = root.getElementById(el_id);\n    if (el == null) {\n        el = document.getElementById(el_id);\n    }\n    return el;\n}\nclass ReactiveHTMLView extends layout_1.HTMLBoxView {\n    constructor() {\n        super(...arguments);\n        this._parent = null;\n        this._changing = false;\n        this._event_listeners = {};\n        this._mutation_observers = [];\n        this._script_fns = {};\n        this._state = {};\n    }\n    initialize() {\n        super.initialize();\n        this.html = (0, html_1.htmlDecode)(this.model.html) || this.model.html;\n    }\n    _recursive_connect(model, update_children, path) {\n        for (const prop in model.properties) {\n            let subpath;\n            if (path.length)\n                subpath = `${path}.${prop}`;\n            else\n                subpath = prop;\n            const obj = model[prop];\n            if (obj == null)\n                continue;\n            if (obj.properties != null)\n                this._recursive_connect(obj, true, subpath);\n            this.connect(model.properties[prop].change, () => {\n                if (update_children) {\n                    for (const node in this.model.children) {\n                        if (this.model.children[node] == prop) {\n                            let children = model[prop];\n                            if (!(0, types_1.isArray)(children))\n                                children = [children];\n                            this._render_node(node, children);\n                            return;\n                        }\n                    }\n                }\n                if (!this._changing) {\n                    this._update(subpath);\n                }\n            });\n        }\n    }\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.children.change, async () => {\n            this.html = (0, html_1.htmlDecode)(this.model.html) || this.model.html;\n            await this.rebuild();\n        });\n        this._recursive_connect(this.model.data, true, '');\n        this.connect(this.model.properties.events.change, () => {\n            this._remove_event_listeners();\n            this._setup_event_listeners();\n        });\n        this.connect_scripts();\n    }\n    connect_scripts() {\n        const id = this.model.data.id;\n        for (let prop in this.model.scripts) {\n            const scripts = this.model.scripts[prop];\n            let data_model = this.model.data;\n            let attr;\n            if (prop.indexOf('.') >= 0) {\n                const path = prop.split('.');\n                attr = path[path.length - 1];\n                for (const p of path.slice(0, -1))\n                    data_model = data_model[p];\n            }\n            else {\n                attr = prop;\n            }\n            for (const script of scripts) {\n                const decoded_script = (0, html_1.htmlDecode)(script) || script;\n                const script_fn = this._render_script(decoded_script, id);\n                this._script_fns[prop] = script_fn;\n                const property = data_model.properties[attr];\n                if (property == null)\n                    continue;\n                const is_event_param = this.model.event_params.includes(prop);\n                this.connect(property.change, () => {\n                    if (!this._changing && !(is_event_param && !data_model[prop])) {\n                        this.run_script(prop);\n                        if (is_event_param)\n                            data_model.setv({ [prop]: false });\n                    }\n                });\n            }\n        }\n    }\n    run_script(property, silent = false) {\n        const script_fn = this._script_fns[property];\n        if (script_fn === undefined) {\n            if (!silent)\n                console.log(`Script '${property}' could not be found.`);\n            return;\n        }\n        const this_obj = {\n            get_records: (property, index) => this.get_records(property, index)\n        };\n        for (const name in this._script_fns)\n            this_obj[name] = () => this.run_script(name);\n        return script_fn(this.model, this.model.data, this._state, this, (s) => this.run_script(s), this_obj);\n    }\n    get_records(property, index = true) {\n        return (0, data_1.dict_to_records)(this.model.data[property], index);\n    }\n    disconnect_signals() {\n        super.disconnect_signals();\n        this._remove_event_listeners();\n        this._remove_mutation_observers();\n    }\n    remove() {\n        this.run_script('remove', true);\n        super.remove();\n    }\n    get child_models() {\n        const models = [];\n        for (const parent in this.model.children) {\n            for (const model of this.model.children[parent])\n                if (typeof model !== 'string')\n                    models.push(model);\n        }\n        return models;\n    }\n    _after_layout() {\n        this.run_script('after_layout', true);\n    }\n    render() {\n        this.empty();\n        this._update_stylesheets();\n        this._update_css_classes();\n        this._apply_styles();\n        this._apply_visible();\n        this.container = (0, dom_1.div)({ style: \"display: contents;\" });\n        this.shadow_el.append(this.container);\n        this._update();\n        this._render_children();\n        this._setup_mutation_observers();\n        this._setup_event_listeners();\n        this.run_script('render', true);\n    }\n    _send_event(elname, attr, event) {\n        let serialized = (0, event_to_object_1.serializeEvent)(event);\n        serialized.type = attr;\n        for (const key in serialized) {\n            if (serialized[key] === undefined)\n                delete serialized[key];\n        }\n        this.model.trigger_event(new html_1.DOMEvent(elname, serialized));\n    }\n    _render_child(model, el) {\n        const view = this._child_views.get(model);\n        if (view == null)\n            el.innerHTML = (0, html_1.htmlDecode)(model) || model;\n        else {\n            el.appendChild(view.el);\n            view.render();\n            view.after_render();\n        }\n    }\n    _render_node(node, children) {\n        const id = this.model.data.id;\n        if (this.model.looped.indexOf(node) > -1) {\n            for (let i = 0; i < children.length; i++) {\n                const el = element_lookup(this.shadow_el, `${node}-${i}-${id}`);\n                if (el == null) {\n                    console.warn(`DOM node '${node}-${i}-${id}' could not be found. Cannot render children.`);\n                    continue;\n                }\n                this._render_child(children[i], el);\n            }\n        }\n        else {\n            const el = element_lookup(this.shadow_el, `${node}-${id}`);\n            if (el == null) {\n                console.warn(`DOM node '${node}-${id}' could not be found. Cannot render children.`);\n                return;\n            }\n            for (const child of children)\n                this._render_child(child, el);\n        }\n    }\n    _render_children() {\n        for (const node in this.model.children) {\n            let children = this.model.children[node];\n            if (typeof children == \"string\") {\n                children = this.model.data[children];\n                if (!(0, types_1.isArray)(children))\n                    children = [children];\n            }\n            this._render_node(node, children);\n        }\n    }\n    _render_html(literal, state = {}) {\n        let htm = literal.replace(/[`]/g, '\\\\$&');\n        let callbacks = '';\n        const methods = [];\n        for (const elname in this.model.callbacks) {\n            for (const callback of this.model.callbacks[elname]) {\n                const [cb, method] = callback;\n                let definition;\n                htm = htm.replaceAll('${' + method + '}', '$--{' + method + '}');\n                if (method.startsWith('script(')) {\n                    const meth = (method\n                        .replace(\"('\", \"_\").replace(\"')\", \"\")\n                        .replace('(\"', \"_\").replace('\")', \"\")\n                        .replace('-', '_'));\n                    const script_name = meth.replaceAll(\"script_\", \"\");\n                    htm = htm.replaceAll(method, meth);\n                    definition = `\n          const ${meth} = (event) => {\n            view._state.event = event\n            view.run_script(\"${script_name}\")\n            delete view._state.event\n          }\n          `;\n                }\n                else {\n                    definition = `\n          const ${method} = (event) => {\n            let elname = \"${elname}\"\n            if (RegExp(\"\\{\\{.*loop\\.index.*\\}\\}\").test(elname)) {\n              const pattern = RegExp(elname.replace(/\\{\\{(.+?)\\}\\}/g, String.fromCharCode(92) + \"d+\"))\n              for (const p of event.path) {\n                if (pattern.exec(p.id) != null) {\n                  elname = p.id.split(\"-\").slice(null, -1).join(\"-\")\n                  break\n                }\n              }\n            }\n            view._send_event(elname, \"${cb}\", event)\n          }\n          `;\n                }\n                if (methods.indexOf(method) > -1)\n                    continue;\n                methods.push(method);\n                callbacks = callbacks + definition;\n            }\n        }\n        htm = (htm\n            .replaceAll('${model.', '$-{model.')\n            .replaceAll('${', '${data.')\n            .replaceAll('$-{model.', '${model.')\n            .replaceAll('$--{', '${'));\n        return new Function(\"view, model, data, state, html, useCallback\", callbacks + \"return html`\" + htm + \"`;\")(this, this.model, this.model.data, state, preact_2.html, hooks_1.useCallback);\n    }\n    _render_script(literal, id) {\n        const scripts = [];\n        for (const elname of this.model.nodes) {\n            const elvar = elname.replace('-', '_');\n            if (literal.indexOf(elvar) === -1)\n                continue;\n            const script = `\n      let ${elvar} = view.shadow_el.getElementById('${elname}-${id}')\n      if (${elvar} == null)\n        ${elvar} = document.getElementById('${elname}-${id}')\n      if (${elvar} == null) {\n        console.warn(\"DOM node '${elname}' could not be found. Cannot execute callback.\")\n        return\n      }\n      `;\n            scripts.push(script);\n        }\n        const event = `\n    let event = null\n    if (state.event !== undefined) {\n      event = state.event\n    }\n    `;\n        scripts.push(event);\n        scripts.push(literal);\n        return new Function(\"model, data, state, view, script, self\", scripts.join('\\n'));\n    }\n    _remove_mutation_observers() {\n        for (const observer of this._mutation_observers)\n            observer.disconnect();\n        this._mutation_observers = [];\n    }\n    _setup_mutation_observers() {\n        const id = this.model.data.id;\n        for (const name in this.model.attrs) {\n            const el = element_lookup(this.shadow_el, `${name}-${id}`);\n            if (el == null) {\n                console.warn(`DOM node '${name}-${id}' could not be found. Cannot set up MutationObserver.`);\n                continue;\n            }\n            const observer = new MutationObserver(() => {\n                this._update_model(el, name);\n            });\n            observer.observe(el, { attributes: true });\n            this._mutation_observers.push(observer);\n        }\n    }\n    _remove_event_listeners() {\n        const id = this.model.data.id;\n        for (const node in this._event_listeners) {\n            const el = element_lookup(this.shadow_el, `${node}-${id}`);\n            if (el == null)\n                continue;\n            for (const event_name in this._event_listeners[node]) {\n                const event_callback = this._event_listeners[node][event_name];\n                el.removeEventListener(event_name, event_callback);\n            }\n        }\n        this._event_listeners = {};\n    }\n    _setup_event_listeners() {\n        const id = this.model.data.id;\n        for (const node in this.model.events) {\n            const el = element_lookup(this.shadow_el, `${node}-${id}`);\n            if (el == null) {\n                console.warn(`DOM node '${node}-${id}' could not be found. Cannot subscribe to DOM events.`);\n                continue;\n            }\n            const node_events = this.model.events[node];\n            for (const event_name in node_events) {\n                const event_callback = (event) => {\n                    this._send_event(node, event_name, event);\n                    if (node in this.model.attrs && node_events[event_name])\n                        this._update_model(el, node);\n                };\n                el.addEventListener(event_name, event_callback);\n                if (!(node in this._event_listeners))\n                    this._event_listeners[node] = {};\n                this._event_listeners[node][event_name] = event_callback;\n            }\n        }\n    }\n    _update(property = null) {\n        if (property == null || (this.html.indexOf(`\\${${property}}`) > -1)) {\n            const rendered = this._render_html(this.html);\n            if (rendered == null)\n                return;\n            try {\n                this._changing = true;\n                (0, preact_1.render)(rendered, this.container);\n            }\n            finally {\n                this._changing = false;\n            }\n        }\n    }\n    _update_model(el, name) {\n        if (this._changing)\n            return;\n        const attrs = {};\n        for (const attr_info of this.model.attrs[name]) {\n            const [attr, tokens, template] = attr_info;\n            let value = attr === 'children' ? el.innerHTML : el[attr];\n            if (tokens.length === 1 && (`{${tokens[0]}}` === template))\n                attrs[tokens[0]] = value;\n            else if (typeof value === 'string') {\n                value = extractToken(template, value, tokens);\n                if (value == null)\n                    console.warn(`Could not resolve parameters in ${name} element ${attr} attribute value ${value}.`);\n                else {\n                    for (const param in value) {\n                        if (value[param] === undefined)\n                            console.warn(`Could not resolve ${param} in ${name} element ${attr} attribute value ${value}.`);\n                        else\n                            attrs[param] = value[param];\n                    }\n                }\n            }\n        }\n        try {\n            this._changing = true;\n            this.model.data.setv(serialize_attrs(attrs));\n        }\n        catch (_b) {\n            console.log('Could not serialize', attrs);\n        }\n        finally {\n            this._changing = false;\n        }\n    }\n}\nexports.ReactiveHTMLView = ReactiveHTMLView;\nReactiveHTMLView.__name__ = \"ReactiveHTMLView\";\nclass ReactiveHTML extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.ReactiveHTML = ReactiveHTML;\n_a = ReactiveHTML;\nReactiveHTML.__name__ = \"ReactiveHTML\";\nReactiveHTML.__module__ = \"panel.models.reactive_html\";\n(() => {\n    _a.prototype.default_view = ReactiveHTMLView;\n    _a.define(({ Array, Any, String }) => ({\n        attrs: [Any, {}],\n        callbacks: [Any, {}],\n        children: [Any, {}],\n        data: [Any,],\n        event_params: [Array(String), []],\n        events: [Any, {}],\n        html: [String, \"\"],\n        looped: [Array(String), []],\n        nodes: [Array(String), []],\n        scripts: [Any, {}],\n    }));\n})();\n//# sourceMappingURL=reactive_html.js.map\n","type":"js","dependency_paths":[["preact","/croot/panel_1706539561184/work/panel/node_modules/preact/dist/preact.module.js"],["preact/hooks","/croot/panel_1706539561184/work/panel/node_modules/preact/hooks/dist/hooks.module.js"],["htm/preact","/croot/panel_1706539561184/work/panel/node_modules/htm/preact/index.module.js"],["./data","/croot/panel_1706539561184/work/panel/dist/lib/models/data.js"],["./event-to-object","/croot/panel_1706539561184/work/panel/dist/lib/models/event-to-object.js"],["./html","/croot/panel_1706539561184/work/panel/dist/lib/models/html.js"],["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"ReactiveHTMLView"},{"type":"named","name":"ReactiveHTML"}],"externals":[],"shims":[]},"code":{"source":"/* models/reactive_html.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const preact_1 = require(\"1b70f5b1d3\") /* preact */;\n    const hooks_1 = require(\"283ce7811c\") /* preact/hooks */;\n    const preact_2 = require(\"b3f51db71c\") /* htm/preact */;\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const types_1 = require(\"@bokehjs/core/util/types\");\n    const data_1 = require(\"4e27eda472\") /* ./data */;\n    const event_to_object_1 = require(\"490942d778\") /* ./event-to-object */;\n    const html_1 = require(\"3db2e41978\") /* ./html */;\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    function serialize_attrs(attrs) {\n        const serialized = {};\n        for (const attr in attrs) {\n            let value = attrs[attr];\n            if (typeof value !== \"string\")\n                value = value;\n            else if (value !== \"\" && (value === \"NaN\" || !isNaN(Number(value))))\n                value = Number(value);\n            else if (value === 'false' || value === 'true')\n                value = value === 'true' ? true : false;\n            serialized[attr] = value;\n        }\n        return serialized;\n    }\n    function escapeRegex(string) {\n        return string.replace(/[-\\/\\\\^$*+?.()|[\\]]/g, '\\\\$&');\n    }\n    function extractToken(template, str, tokens) {\n        const tokenMapping = {};\n        for (const match of tokens)\n            tokenMapping[`{${match}}`] = \"(.*)\";\n        const tokenList = [];\n        let regexpTemplate = \"^\" + escapeRegex(template) + \"$\";\n        // Find the order of the tokens\n        let i, tokenIndex, tokenEntry;\n        for (const m in tokenMapping) {\n            tokenIndex = template.indexOf(m);\n            // Token found\n            if (tokenIndex > -1) {\n                regexpTemplate = regexpTemplate.replace(m, tokenMapping[m]);\n                tokenEntry = {\n                    index: tokenIndex,\n                    token: m\n                };\n                for (i = 0; i < tokenList.length && tokenList[i].index < tokenIndex; i++)\n                    ;\n                // Insert it at index i\n                if (i < tokenList.length)\n                    tokenList.splice(i, 0, tokenEntry);\n                else\n                    tokenList.push(tokenEntry);\n            }\n        }\n        regexpTemplate = regexpTemplate.replace(/\\{[^{}]+\\}/g, '.*');\n        var match = new RegExp(regexpTemplate).exec(str);\n        let result = null;\n        if (match) {\n            result = {};\n            // Find your token entry\n            for (i = 0; i < tokenList.length; i++)\n                result[tokenList[i].token.slice(1, -1)] = match[i + 1];\n        }\n        return result;\n    }\n    function element_lookup(root, el_id) {\n        let el = root.getElementById(el_id);\n        if (el == null) {\n            el = document.getElementById(el_id);\n        }\n        return el;\n    }\n    class ReactiveHTMLView extends layout_1.HTMLBoxView {\n        constructor() {\n            super(...arguments);\n            this._parent = null;\n            this._changing = false;\n            this._event_listeners = {};\n            this._mutation_observers = [];\n            this._script_fns = {};\n            this._state = {};\n        }\n        initialize() {\n            super.initialize();\n            this.html = (0, html_1.htmlDecode)(this.model.html) || this.model.html;\n        }\n        _recursive_connect(model, update_children, path) {\n            for (const prop in model.properties) {\n                let subpath;\n                if (path.length)\n                    subpath = `${path}.${prop}`;\n                else\n                    subpath = prop;\n                const obj = model[prop];\n                if (obj == null)\n                    continue;\n                if (obj.properties != null)\n                    this._recursive_connect(obj, true, subpath);\n                this.connect(model.properties[prop].change, () => {\n                    if (update_children) {\n                        for (const node in this.model.children) {\n                            if (this.model.children[node] == prop) {\n                                let children = model[prop];\n                                if (!(0, types_1.isArray)(children))\n                                    children = [children];\n                                this._render_node(node, children);\n                                return;\n                            }\n                        }\n                    }\n                    if (!this._changing) {\n                        this._update(subpath);\n                    }\n                });\n            }\n        }\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.children.change, async () => {\n                this.html = (0, html_1.htmlDecode)(this.model.html) || this.model.html;\n                await this.rebuild();\n            });\n            this._recursive_connect(this.model.data, true, '');\n            this.connect(this.model.properties.events.change, () => {\n                this._remove_event_listeners();\n                this._setup_event_listeners();\n            });\n            this.connect_scripts();\n        }\n        connect_scripts() {\n            const id = this.model.data.id;\n            for (let prop in this.model.scripts) {\n                const scripts = this.model.scripts[prop];\n                let data_model = this.model.data;\n                let attr;\n                if (prop.indexOf('.') >= 0) {\n                    const path = prop.split('.');\n                    attr = path[path.length - 1];\n                    for (const p of path.slice(0, -1))\n                        data_model = data_model[p];\n                }\n                else {\n                    attr = prop;\n                }\n                for (const script of scripts) {\n                    const decoded_script = (0, html_1.htmlDecode)(script) || script;\n                    const script_fn = this._render_script(decoded_script, id);\n                    this._script_fns[prop] = script_fn;\n                    const property = data_model.properties[attr];\n                    if (property == null)\n                        continue;\n                    const is_event_param = this.model.event_params.includes(prop);\n                    this.connect(property.change, () => {\n                        if (!this._changing && !(is_event_param && !data_model[prop])) {\n                            this.run_script(prop);\n                            if (is_event_param)\n                                data_model.setv({ [prop]: false });\n                        }\n                    });\n                }\n            }\n        }\n        run_script(property, silent = false) {\n            const script_fn = this._script_fns[property];\n            if (script_fn === undefined) {\n                if (!silent)\n                    console.log(`Script '${property}' could not be found.`);\n                return;\n            }\n            const this_obj = {\n                get_records: (property, index) => this.get_records(property, index)\n            };\n            for (const name in this._script_fns)\n                this_obj[name] = () => this.run_script(name);\n            return script_fn(this.model, this.model.data, this._state, this, (s) => this.run_script(s), this_obj);\n        }\n        get_records(property, index = true) {\n            return (0, data_1.dict_to_records)(this.model.data[property], index);\n        }\n        disconnect_signals() {\n            super.disconnect_signals();\n            this._remove_event_listeners();\n            this._remove_mutation_observers();\n        }\n        remove() {\n            this.run_script('remove', true);\n            super.remove();\n        }\n        get child_models() {\n            const models = [];\n            for (const parent in this.model.children) {\n                for (const model of this.model.children[parent])\n                    if (typeof model !== 'string')\n                        models.push(model);\n            }\n            return models;\n        }\n        _after_layout() {\n            this.run_script('after_layout', true);\n        }\n        render() {\n            this.empty();\n            this._update_stylesheets();\n            this._update_css_classes();\n            this._apply_styles();\n            this._apply_visible();\n            this.container = (0, dom_1.div)({ style: \"display: contents;\" });\n            this.shadow_el.append(this.container);\n            this._update();\n            this._render_children();\n            this._setup_mutation_observers();\n            this._setup_event_listeners();\n            this.run_script('render', true);\n        }\n        _send_event(elname, attr, event) {\n            let serialized = (0, event_to_object_1.serializeEvent)(event);\n            serialized.type = attr;\n            for (const key in serialized) {\n                if (serialized[key] === undefined)\n                    delete serialized[key];\n            }\n            this.model.trigger_event(new html_1.DOMEvent(elname, serialized));\n        }\n        _render_child(model, el) {\n            const view = this._child_views.get(model);\n            if (view == null)\n                el.innerHTML = (0, html_1.htmlDecode)(model) || model;\n            else {\n                el.appendChild(view.el);\n                view.render();\n                view.after_render();\n            }\n        }\n        _render_node(node, children) {\n            const id = this.model.data.id;\n            if (this.model.looped.indexOf(node) > -1) {\n                for (let i = 0; i < children.length; i++) {\n                    const el = element_lookup(this.shadow_el, `${node}-${i}-${id}`);\n                    if (el == null) {\n                        console.warn(`DOM node '${node}-${i}-${id}' could not be found. Cannot render children.`);\n                        continue;\n                    }\n                    this._render_child(children[i], el);\n                }\n            }\n            else {\n                const el = element_lookup(this.shadow_el, `${node}-${id}`);\n                if (el == null) {\n                    console.warn(`DOM node '${node}-${id}' could not be found. Cannot render children.`);\n                    return;\n                }\n                for (const child of children)\n                    this._render_child(child, el);\n            }\n        }\n        _render_children() {\n            for (const node in this.model.children) {\n                let children = this.model.children[node];\n                if (typeof children == \"string\") {\n                    children = this.model.data[children];\n                    if (!(0, types_1.isArray)(children))\n                        children = [children];\n                }\n                this._render_node(node, children);\n            }\n        }\n        _render_html(literal, state = {}) {\n            let htm = literal.replace(/[`]/g, '\\\\$&');\n            let callbacks = '';\n            const methods = [];\n            for (const elname in this.model.callbacks) {\n                for (const callback of this.model.callbacks[elname]) {\n                    const [cb, method] = callback;\n                    let definition;\n                    htm = htm.replaceAll('${' + method + '}', '$--{' + method + '}');\n                    if (method.startsWith('script(')) {\n                        const meth = (method\n                            .replace(\"('\", \"_\").replace(\"')\", \"\")\n                            .replace('(\"', \"_\").replace('\")', \"\")\n                            .replace('-', '_'));\n                        const script_name = meth.replaceAll(\"script_\", \"\");\n                        htm = htm.replaceAll(method, meth);\n                        definition = `\n          const ${meth} = (event) => {\n            view._state.event = event\n            view.run_script(\"${script_name}\")\n            delete view._state.event\n          }\n          `;\n                    }\n                    else {\n                        definition = `\n          const ${method} = (event) => {\n            let elname = \"${elname}\"\n            if (RegExp(\"\\{\\{.*loop\\.index.*\\}\\}\").test(elname)) {\n              const pattern = RegExp(elname.replace(/\\{\\{(.+?)\\}\\}/g, String.fromCharCode(92) + \"d+\"))\n              for (const p of event.path) {\n                if (pattern.exec(p.id) != null) {\n                  elname = p.id.split(\"-\").slice(null, -1).join(\"-\")\n                  break\n                }\n              }\n            }\n            view._send_event(elname, \"${cb}\", event)\n          }\n          `;\n                    }\n                    if (methods.indexOf(method) > -1)\n                        continue;\n                    methods.push(method);\n                    callbacks = callbacks + definition;\n                }\n            }\n            htm = (htm\n                .replaceAll('${model.', '$-{model.')\n                .replaceAll('${', '${data.')\n                .replaceAll('$-{model.', '${model.')\n                .replaceAll('$--{', '${'));\n            return new Function(\"view, model, data, state, html, useCallback\", callbacks + \"return html`\" + htm + \"`;\")(this, this.model, this.model.data, state, preact_2.html, hooks_1.useCallback);\n        }\n        _render_script(literal, id) {\n            const scripts = [];\n            for (const elname of this.model.nodes) {\n                const elvar = elname.replace('-', '_');\n                if (literal.indexOf(elvar) === -1)\n                    continue;\n                const script = `\n      let ${elvar} = view.shadow_el.getElementById('${elname}-${id}')\n      if (${elvar} == null)\n        ${elvar} = document.getElementById('${elname}-${id}')\n      if (${elvar} == null) {\n        console.warn(\"DOM node '${elname}' could not be found. Cannot execute callback.\")\n        return\n      }\n      `;\n                scripts.push(script);\n            }\n            const event = `\n    let event = null\n    if (state.event !== undefined) {\n      event = state.event\n    }\n    `;\n            scripts.push(event);\n            scripts.push(literal);\n            return new Function(\"model, data, state, view, script, self\", scripts.join('\\n'));\n        }\n        _remove_mutation_observers() {\n            for (const observer of this._mutation_observers)\n                observer.disconnect();\n            this._mutation_observers = [];\n        }\n        _setup_mutation_observers() {\n            const id = this.model.data.id;\n            for (const name in this.model.attrs) {\n                const el = element_lookup(this.shadow_el, `${name}-${id}`);\n                if (el == null) {\n                    console.warn(`DOM node '${name}-${id}' could not be found. Cannot set up MutationObserver.`);\n                    continue;\n                }\n                const observer = new MutationObserver(() => {\n                    this._update_model(el, name);\n                });\n                observer.observe(el, { attributes: true });\n                this._mutation_observers.push(observer);\n            }\n        }\n        _remove_event_listeners() {\n            const id = this.model.data.id;\n            for (const node in this._event_listeners) {\n                const el = element_lookup(this.shadow_el, `${node}-${id}`);\n                if (el == null)\n                    continue;\n                for (const event_name in this._event_listeners[node]) {\n                    const event_callback = this._event_listeners[node][event_name];\n                    el.removeEventListener(event_name, event_callback);\n                }\n            }\n            this._event_listeners = {};\n        }\n        _setup_event_listeners() {\n            const id = this.model.data.id;\n            for (const node in this.model.events) {\n                const el = element_lookup(this.shadow_el, `${node}-${id}`);\n                if (el == null) {\n                    console.warn(`DOM node '${node}-${id}' could not be found. Cannot subscribe to DOM events.`);\n                    continue;\n                }\n                const node_events = this.model.events[node];\n                for (const event_name in node_events) {\n                    const event_callback = (event) => {\n                        this._send_event(node, event_name, event);\n                        if (node in this.model.attrs && node_events[event_name])\n                            this._update_model(el, node);\n                    };\n                    el.addEventListener(event_name, event_callback);\n                    if (!(node in this._event_listeners))\n                        this._event_listeners[node] = {};\n                    this._event_listeners[node][event_name] = event_callback;\n                }\n            }\n        }\n        _update(property = null) {\n            if (property == null || (this.html.indexOf(`\\${${property}}`) > -1)) {\n                const rendered = this._render_html(this.html);\n                if (rendered == null)\n                    return;\n                try {\n                    this._changing = true;\n                    (0, preact_1.render)(rendered, this.container);\n                }\n                finally {\n                    this._changing = false;\n                }\n            }\n        }\n        _update_model(el, name) {\n            if (this._changing)\n                return;\n            const attrs = {};\n            for (const attr_info of this.model.attrs[name]) {\n                const [attr, tokens, template] = attr_info;\n                let value = attr === 'children' ? el.innerHTML : el[attr];\n                if (tokens.length === 1 && (`{${tokens[0]}}` === template))\n                    attrs[tokens[0]] = value;\n                else if (typeof value === 'string') {\n                    value = extractToken(template, value, tokens);\n                    if (value == null)\n                        console.warn(`Could not resolve parameters in ${name} element ${attr} attribute value ${value}.`);\n                    else {\n                        for (const param in value) {\n                            if (value[param] === undefined)\n                                console.warn(`Could not resolve ${param} in ${name} element ${attr} attribute value ${value}.`);\n                            else\n                                attrs[param] = value[param];\n                        }\n                    }\n                }\n            }\n            try {\n                this._changing = true;\n                this.model.data.setv(serialize_attrs(attrs));\n            }\n            catch (_b) {\n                console.log('Could not serialize', attrs);\n            }\n            finally {\n                this._changing = false;\n            }\n        }\n    }\n    exports.ReactiveHTMLView = ReactiveHTMLView;\n    ReactiveHTMLView.__name__ = \"ReactiveHTMLView\";\n    class ReactiveHTML extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.ReactiveHTML = ReactiveHTML;\n    _a = ReactiveHTML;\n    ReactiveHTML.__name__ = \"ReactiveHTML\";\n    ReactiveHTML.__module__ = \"panel.models.reactive_html\";\n    (() => {\n        _a.prototype.default_view = ReactiveHTMLView;\n        _a.define(({ Array, Any, String }) => ({\n            attrs: [Any, {}],\n            callbacks: [Any, {}],\n            children: [Any, {}],\n            data: [Any,],\n            event_params: [Array(String), []],\n            events: [Any, {}],\n            html: [String, \"\"],\n            looped: [Array(String), []],\n            nodes: [Array(String), []],\n            scripts: [Any, {}],\n        }));\n    })();\n}\n","min_source":"function _(e,t,n,s,i){var o;s();const r=e(\"1b70f5b1d3\"),l=e(\"283ce7811c\"),c=e(\"b3f51db71c\"),d=e(\"@bokehjs/core/dom\"),h=e(\"@bokehjs/core/util/types\"),a=e(\"4e27eda472\"),_=e(\"490942d778\"),u=e(\"3db2e41978\"),p=e(\"cac5f3ed28\");function m(e,t,n){const s={};for(const e of n)s[`{${e}}`]=\"(.*)\";const i=[];let o=\"^\"+(e.replace(/[-\\/\\\\^$*+?.()|[\\]]/g,\"\\\\$&\")+\"$\");let r,l,c;for(const t in s)if(l=e.indexOf(t),l>-1){for(o=o.replace(t,s[t]),c={index:l,token:t},r=0;r<i.length&&i[r].index<l;r++);r<i.length?i.splice(r,0,c):i.push(c)}o=o.replace(/\\{[^{}]+\\}/g,\".*\");var d=new RegExp(o).exec(t);let h=null;if(d)for(h={},r=0;r<i.length;r++)h[i[r].token.slice(1,-1)]=d[r+1];return h}function f(e,t){let n=e.getElementById(t);return null==n&&(n=document.getElementById(t)),n}class v extends p.HTMLBoxView{constructor(){super(...arguments),this._parent=null,this._changing=!1,this._event_listeners={},this._mutation_observers=[],this._script_fns={},this._state={}}initialize(){super.initialize(),this.html=(0,u.htmlDecode)(this.model.html)||this.model.html}_recursive_connect(e,t,n){for(const s in e.properties){let i;i=n.length?`${n}.${s}`:s;const o=e[s];null!=o&&(null!=o.properties&&this._recursive_connect(o,!0,i),this.connect(e.properties[s].change,(()=>{if(t)for(const t in this.model.children)if(this.model.children[t]==s){let n=e[s];return(0,h.isArray)(n)||(n=[n]),void this._render_node(t,n)}this._changing||this._update(i)})))}}connect_signals(){super.connect_signals(),this.connect(this.model.properties.children.change,(async()=>{this.html=(0,u.htmlDecode)(this.model.html)||this.model.html,await this.rebuild()})),this._recursive_connect(this.model.data,!0,\"\"),this.connect(this.model.properties.events.change,(()=>{this._remove_event_listeners(),this._setup_event_listeners()})),this.connect_scripts()}connect_scripts(){const e=this.model.data.id;for(let t in this.model.scripts){const n=this.model.scripts[t];let s,i=this.model.data;if(t.indexOf(\".\")>=0){const e=t.split(\".\");s=e[e.length-1];for(const t of e.slice(0,-1))i=i[t]}else s=t;for(const o of n){const n=(0,u.htmlDecode)(o)||o,r=this._render_script(n,e);this._script_fns[t]=r;const l=i.properties[s];if(null==l)continue;const c=this.model.event_params.includes(t);this.connect(l.change,(()=>{this._changing||c&&!i[t]||(this.run_script(t),c&&i.setv({[t]:!1}))}))}}}run_script(e,t=!1){const n=this._script_fns[e];if(void 0===n)return void(t||console.log(`Script '${e}' could not be found.`));const s={get_records:(e,t)=>this.get_records(e,t)};for(const e in this._script_fns)s[e]=()=>this.run_script(e);return n(this.model,this.model.data,this._state,this,(e=>this.run_script(e)),s)}get_records(e,t=!0){return(0,a.dict_to_records)(this.model.data[e],t)}disconnect_signals(){super.disconnect_signals(),this._remove_event_listeners(),this._remove_mutation_observers()}remove(){this.run_script(\"remove\",!0),super.remove()}get child_models(){const e=[];for(const t in this.model.children)for(const n of this.model.children[t])\"string\"!=typeof n&&e.push(n);return e}_after_layout(){this.run_script(\"after_layout\",!0)}render(){this.empty(),this._update_stylesheets(),this._update_css_classes(),this._apply_styles(),this._apply_visible(),this.container=(0,d.div)({style:\"display: contents;\"}),this.shadow_el.append(this.container),this._update(),this._render_children(),this._setup_mutation_observers(),this._setup_event_listeners(),this.run_script(\"render\",!0)}_send_event(e,t,n){let s=(0,_.serializeEvent)(n);s.type=t;for(const e in s)void 0===s[e]&&delete s[e];this.model.trigger_event(new u.DOMEvent(e,s))}_render_child(e,t){const n=this._child_views.get(e);null==n?t.innerHTML=(0,u.htmlDecode)(e)||e:(t.appendChild(n.el),n.render(),n.after_render())}_render_node(e,t){const n=this.model.data.id;if(this.model.looped.indexOf(e)>-1)for(let s=0;s<t.length;s++){const i=f(this.shadow_el,`${e}-${s}-${n}`);null!=i?this._render_child(t[s],i):console.warn(`DOM node '${e}-${s}-${n}' could not be found. Cannot render children.`)}else{const s=f(this.shadow_el,`${e}-${n}`);if(null==s)return void console.warn(`DOM node '${e}-${n}' could not be found. Cannot render children.`);for(const e of t)this._render_child(e,s)}}_render_children(){for(const e in this.model.children){let t=this.model.children[e];\"string\"==typeof t&&(t=this.model.data[t],(0,h.isArray)(t)||(t=[t])),this._render_node(e,t)}}_render_html(e,t={}){let n=e.replace(/[`]/g,\"\\\\$&\"),s=\"\";const i=[];for(const e in this.model.callbacks)for(const t of this.model.callbacks[e]){const[o,r]=t;let l;if(n=n.replaceAll(\"${\"+r+\"}\",\"$--{\"+r+\"}\"),r.startsWith(\"script(\")){const e=r.replace(\"('\",\"_\").replace(\"')\",\"\").replace('(\"',\"_\").replace('\")',\"\").replace(\"-\",\"_\"),t=e.replaceAll(\"script_\",\"\");n=n.replaceAll(r,e),l=`\\n          const ${e} = (event) => {\\n            view._state.event = event\\n            view.run_script(\"${t}\")\\n            delete view._state.event\\n          }\\n          `}else l=`\\n          const ${r} = (event) => {\\n            let elname = \"${e}\"\\n            if (RegExp(\"{{.*loop.index.*}}\").test(elname)) {\\n              const pattern = RegExp(elname.replace(/{{(.+?)}}/g, String.fromCharCode(92) + \"d+\"))\\n              for (const p of event.path) {\\n                if (pattern.exec(p.id) != null) {\\n                  elname = p.id.split(\"-\").slice(null, -1).join(\"-\")\\n                  break\\n                }\\n              }\\n            }\\n            view._send_event(elname, \"${o}\", event)\\n          }\\n          `;i.indexOf(r)>-1||(i.push(r),s+=l)}return n=n.replaceAll(\"${model.\",\"$-{model.\").replaceAll(\"${\",\"${data.\").replaceAll(\"$-{model.\",\"${model.\").replaceAll(\"$--{\",\"${\"),new Function(\"view, model, data, state, html, useCallback\",s+\"return html`\"+n+\"`;\")(this,this.model,this.model.data,t,c.html,l.useCallback)}_render_script(e,t){const n=[];for(const s of this.model.nodes){const i=s.replace(\"-\",\"_\");if(-1===e.indexOf(i))continue;const o=`\\n      let ${i} = view.shadow_el.getElementById('${s}-${t}')\\n      if (${i} == null)\\n        ${i} = document.getElementById('${s}-${t}')\\n      if (${i} == null) {\\n        console.warn(\"DOM node '${s}' could not be found. Cannot execute callback.\")\\n        return\\n      }\\n      `;n.push(o)}return n.push(\"\\n    let event = null\\n    if (state.event !== undefined) {\\n      event = state.event\\n    }\\n    \"),n.push(e),new Function(\"model, data, state, view, script, self\",n.join(\"\\n\"))}_remove_mutation_observers(){for(const e of this._mutation_observers)e.disconnect();this._mutation_observers=[]}_setup_mutation_observers(){const e=this.model.data.id;for(const t in this.model.attrs){const n=f(this.shadow_el,`${t}-${e}`);if(null==n){console.warn(`DOM node '${t}-${e}' could not be found. Cannot set up MutationObserver.`);continue}const s=new MutationObserver((()=>{this._update_model(n,t)}));s.observe(n,{attributes:!0}),this._mutation_observers.push(s)}}_remove_event_listeners(){const e=this.model.data.id;for(const t in this._event_listeners){const n=f(this.shadow_el,`${t}-${e}`);if(null!=n)for(const e in this._event_listeners[t]){const s=this._event_listeners[t][e];n.removeEventListener(e,s)}}this._event_listeners={}}_setup_event_listeners(){const e=this.model.data.id;for(const t in this.model.events){const n=f(this.shadow_el,`${t}-${e}`);if(null==n){console.warn(`DOM node '${t}-${e}' could not be found. Cannot subscribe to DOM events.`);continue}const s=this.model.events[t];for(const e in s){const i=i=>{this._send_event(t,e,i),t in this.model.attrs&&s[e]&&this._update_model(n,t)};n.addEventListener(e,i),t in this._event_listeners||(this._event_listeners[t]={}),this._event_listeners[t][e]=i}}}_update(e=null){if(null==e||this.html.indexOf(`\\${${e}}`)>-1){const e=this._render_html(this.html);if(null==e)return;try{this._changing=!0,(0,r.render)(e,this.container)}finally{this._changing=!1}}}_update_model(e,t){if(this._changing)return;const n={};for(const s of this.model.attrs[t]){const[i,o,r]=s;let l=\"children\"===i?e.innerHTML:e[i];if(1===o.length&&`{${o[0]}}`===r)n[o[0]]=l;else if(\"string\"==typeof l)if(l=m(r,l,o),null==l)console.warn(`Could not resolve parameters in ${t} element ${i} attribute value ${l}.`);else for(const e in l)void 0===l[e]?console.warn(`Could not resolve ${e} in ${t} element ${i} attribute value ${l}.`):n[e]=l[e]}try{this._changing=!0,this.model.data.setv(function(e){const t={};for(const n in e){let s=e[n];\"string\"!=typeof s||(\"\"===s||\"NaN\"!==s&&isNaN(Number(s))?\"false\"!==s&&\"true\"!==s||(s=\"true\"===s):s=Number(s)),t[n]=s}return t}(n))}catch(e){console.log(\"Could not serialize\",n)}finally{this._changing=!1}}}n.ReactiveHTMLView=v,v.__name__=\"ReactiveHTMLView\";class $ extends p.HTMLBox{constructor(e){super(e)}}n.ReactiveHTML=$,o=$,$.__name__=\"ReactiveHTML\",$.__module__=\"panel.models.reactive_html\",o.prototype.default_view=v,o.define((({Array:e,Any:t,String:n})=>({attrs:[t,{}],callbacks:[t,{}],children:[t,{}],data:[t],event_params:[e(n),[]],events:[t,{}],html:[n,\"\"],looped:[e(n),[]],nodes:[e(n),[]],scripts:[t,{}]})))}\n//# sourceMappingURL=reactive_html.min.js.map","min_map":"{\"version\":3,\"file\":\"reactive_html.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"preact_1\",\"hooks_1\",\"preact_2\",\"dom_1\",\"types_1\",\"data_1\",\"event_to_object_1\",\"html_1\",\"layout_1\",\"extractToken\",\"template\",\"str\",\"tokens\",\"tokenMapping\",\"match\",\"tokenList\",\"regexpTemplate\",\"replace\",\"i\",\"tokenIndex\",\"tokenEntry\",\"m\",\"indexOf\",\"index\",\"token\",\"length\",\"splice\",\"push\",\"RegExp\",\"exec\",\"result\",\"slice\",\"element_lookup\",\"root\",\"el_id\",\"el\",\"getElementById\",\"document\",\"ReactiveHTMLView\",\"HTMLBoxView\",\"constructor\",\"super\",\"arguments\",\"this\",\"_parent\",\"_changing\",\"_event_listeners\",\"_mutation_observers\",\"_script_fns\",\"_state\",\"initialize\",\"html\",\"htmlDecode\",\"model\",\"_recursive_connect\",\"update_children\",\"path\",\"prop\",\"properties\",\"subpath\",\"obj\",\"connect\",\"change\",\"node\",\"children\",\"isArray\",\"_render_node\",\"_update\",\"connect_signals\",\"async\",\"rebuild\",\"data\",\"events\",\"_remove_event_listeners\",\"_setup_event_listeners\",\"connect_scripts\",\"id\",\"scripts\",\"attr\",\"data_model\",\"split\",\"p\",\"script\",\"decoded_script\",\"script_fn\",\"_render_script\",\"property\",\"is_event_param\",\"event_params\",\"includes\",\"run_script\",\"setv\",\"silent\",\"undefined\",\"console\",\"log\",\"this_obj\",\"get_records\",\"name\",\"s\",\"dict_to_records\",\"disconnect_signals\",\"_remove_mutation_observers\",\"remove\",\"child_models\",\"models\",\"parent\",\"_after_layout\",\"render\",\"empty\",\"_update_stylesheets\",\"_update_css_classes\",\"_apply_styles\",\"_apply_visible\",\"container\",\"div\",\"style\",\"shadow_el\",\"append\",\"_render_children\",\"_setup_mutation_observers\",\"_send_event\",\"elname\",\"event\",\"serialized\",\"serializeEvent\",\"type\",\"key\",\"trigger_event\",\"DOMEvent\",\"_render_child\",\"view\",\"_child_views\",\"get\",\"innerHTML\",\"appendChild\",\"after_render\",\"looped\",\"warn\",\"child\",\"_render_html\",\"literal\",\"state\",\"htm\",\"callbacks\",\"methods\",\"callback\",\"cb\",\"method\",\"definition\",\"replaceAll\",\"startsWith\",\"meth\",\"script_name\",\"Function\",\"useCallback\",\"nodes\",\"elvar\",\"join\",\"observer\",\"disconnect\",\"attrs\",\"MutationObserver\",\"_update_model\",\"observe\",\"attributes\",\"event_name\",\"event_callback\",\"removeEventListener\",\"node_events\",\"addEventListener\",\"rendered\",\"attr_info\",\"value\",\"param\",\"isNaN\",\"Number\",\"serialize_attrs\",\"_b\",\"__name__\",\"ReactiveHTML\",\"HTMLBox\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Array\",\"Any\",\"String\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/preact/dist/preact.module.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"preact/dist/preact.module.js","resolution":"ESM","id":"1b70f5b1d3","hash":"1b70f5b1d3b4991a8be1ff14e553da00cdac09bb1a39d09471165a74fd532a80","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toChildArray = exports.render = exports.options = exports.isValidElement = exports.hydrate = exports.h = exports.createRef = exports.createElement = exports.createContext = exports.cloneElement = exports.Fragment = exports.Component = void 0;\nvar n, l, u, i, t, r, o, f, e = {}, c = [], s = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\nfunction a(n, l) { for (var u in l)\n    n[u] = l[u]; return n; }\nfunction h(n) { var l = n.parentNode; l && l.removeChild(n); }\nfunction v(l, u, i) { var t, r, o, f = {}; for (o in u)\n    \"key\" == o ? t = u[o] : \"ref\" == o ? r = u[o] : f[o] = u[o]; if (arguments.length > 2 && (f.children = arguments.length > 3 ? n.call(arguments, 2) : i), \"function\" == typeof l && null != l.defaultProps)\n    for (o in l.defaultProps)\n        void 0 === f[o] && (f[o] = l.defaultProps[o]); return y(l, f, t, r, null); }\nexports.createElement = v;\nexports.h = v;\nfunction y(n, i, t, r, o) { var f = { type: n, props: i, key: t, ref: r, __k: null, __: null, __b: 0, __e: null, __d: void 0, __c: null, __h: null, constructor: void 0, __v: null == o ? ++u : o }; return null == o && null != l.vnode && l.vnode(f), f; }\nfunction p() { return { current: null }; }\nexports.createRef = p;\nfunction d(n) { return n.children; }\nexports.Fragment = d;\nfunction _(n, l) { this.props = n, this.context = l; }\nexports.Component = _;\nfunction k(n, l) { if (null == l)\n    return n.__ ? k(n.__, n.__.__k.indexOf(n) + 1) : null; for (var u; l < n.__k.length; l++)\n    if (null != (u = n.__k[l]) && null != u.__e)\n        return u.__e; return \"function\" == typeof n.type ? k(n) : null; }\nfunction b(n) { var l, u; if (null != (n = n.__) && null != n.__c) {\n    for (n.__e = n.__c.base = null, l = 0; l < n.__k.length; l++)\n        if (null != (u = n.__k[l]) && null != u.__e) {\n            n.__e = n.__c.base = u.__e;\n            break;\n        }\n    return b(n);\n} }\nfunction g(n) { (!n.__d && (n.__d = !0) && t.push(n) && !m.__r++ || r !== l.debounceRendering) && ((r = l.debounceRendering) || o)(m); }\nfunction m() { var n, l, u, i, r, o, f, e; for (t.sort(function (n, l) { return n.__v.__b - l.__v.__b; }); n = t.shift();)\n    n.__d && (l = t.length, i = void 0, r = void 0, f = (o = (u = n).__v).__e, (e = u.__P) && (i = [], (r = a({}, o)).__v = o.__v + 1, z(e, o, r, u.__n, void 0 !== e.ownerSVGElement, null != o.__h ? [f] : null, i, null == f ? k(o) : f, o.__h), L(i, o), o.__e != f && b(o)), t.length > l && t.sort(function (n, l) { return n.__v.__b - l.__v.__b; })); m.__r = 0; }\nfunction w(n, l, u, i, t, r, o, f, s, a) { var h, v, p, _, b, g, m, w = i && i.__k || c, A = w.length; for (u.__k = [], h = 0; h < l.length; h++)\n    if (null != (_ = u.__k[h] = null == (_ = l[h]) || \"boolean\" == typeof _ ? null : \"string\" == typeof _ || \"number\" == typeof _ || \"bigint\" == typeof _ ? y(null, _, null, null, _) : Array.isArray(_) ? y(d, { children: _ }, null, null, null) : _.__b > 0 ? y(_.type, _.props, _.key, _.ref ? _.ref : null, _.__v) : _)) {\n        if (_.__ = u, _.__b = u.__b + 1, null === (p = w[h]) || p && _.key == p.key && _.type === p.type)\n            w[h] = void 0;\n        else\n            for (v = 0; v < A; v++) {\n                if ((p = w[v]) && _.key == p.key && _.type === p.type) {\n                    w[v] = void 0;\n                    break;\n                }\n                p = null;\n            }\n        z(n, _, p = p || e, t, r, o, f, s, a), b = _.__e, (v = _.ref) && p.ref != v && (m || (m = []), p.ref && m.push(p.ref, null, _), m.push(v, _.__c || b, _)), null != b ? (null == g && (g = b), \"function\" == typeof _.type && _.__k === p.__k ? _.__d = s = x(_, s, n) : s = P(n, _, p, w, b, s), \"function\" == typeof u.type && (u.__d = s)) : s && p.__e == s && s.parentNode != n && (s = k(p));\n    } for (u.__e = g, h = A; h--;)\n    null != w[h] && (\"function\" == typeof u.type && null != w[h].__e && w[h].__e == u.__d && (u.__d = C(i).nextSibling), O(w[h], w[h])); if (m)\n    for (h = 0; h < m.length; h++)\n        N(m[h], m[++h], m[++h]); }\nfunction x(n, l, u) { for (var i, t = n.__k, r = 0; t && r < t.length; r++)\n    (i = t[r]) && (i.__ = n, l = \"function\" == typeof i.type ? x(i, l, u) : P(u, i, i, t, i.__e, l)); return l; }\nfunction A(n, l) { return l = l || [], null == n || \"boolean\" == typeof n || (Array.isArray(n) ? n.some(function (n) { A(n, l); }) : l.push(n)), l; }\nexports.toChildArray = A;\nfunction P(n, l, u, i, t, r) { var o, f, e; if (void 0 !== l.__d)\n    o = l.__d, l.__d = void 0;\nelse if (null == u || t != r || null == t.parentNode)\n    n: if (null == r || r.parentNode !== n)\n        n.appendChild(t), o = null;\n    else {\n        for (f = r, e = 0; (f = f.nextSibling) && e < i.length; e += 1)\n            if (f == t)\n                break n;\n        n.insertBefore(t, r), o = r;\n    } return void 0 !== o ? o : t.nextSibling; }\nfunction C(n) { var l, u, i; if (null == n.type || \"string\" == typeof n.type)\n    return n.__e; if (n.__k)\n    for (l = n.__k.length - 1; l >= 0; l--)\n        if ((u = n.__k[l]) && (i = C(u)))\n            return i; return null; }\nfunction $(n, l, u, i, t) { var r; for (r in u)\n    \"children\" === r || \"key\" === r || r in l || I(n, r, null, u[r], i); for (r in l)\n    t && \"function\" != typeof l[r] || \"children\" === r || \"key\" === r || \"value\" === r || \"checked\" === r || u[r] === l[r] || I(n, r, l[r], u[r], i); }\nfunction H(n, l, u) { \"-\" === l[0] ? n.setProperty(l, null == u ? \"\" : u) : n[l] = null == u ? \"\" : \"number\" != typeof u || s.test(l) ? u : u + \"px\"; }\nfunction I(n, l, u, i, t) { var r; n: if (\"style\" === l)\n    if (\"string\" == typeof u)\n        n.style.cssText = u;\n    else {\n        if (\"string\" == typeof i && (n.style.cssText = i = \"\"), i)\n            for (l in i)\n                u && l in u || H(n.style, l, \"\");\n        if (u)\n            for (l in u)\n                i && u[l] === i[l] || H(n.style, l, u[l]);\n    }\nelse if (\"o\" === l[0] && \"n\" === l[1])\n    r = l !== (l = l.replace(/Capture$/, \"\")), l = l.toLowerCase() in n ? l.toLowerCase().slice(2) : l.slice(2), n.l || (n.l = {}), n.l[l + r] = u, u ? i || n.addEventListener(l, r ? j : T, r) : n.removeEventListener(l, r ? j : T, r);\nelse if (\"dangerouslySetInnerHTML\" !== l) {\n    if (t)\n        l = l.replace(/xlink(H|:h)/, \"h\").replace(/sName$/, \"s\");\n    else if (\"width\" !== l && \"height\" !== l && \"href\" !== l && \"list\" !== l && \"form\" !== l && \"tabIndex\" !== l && \"download\" !== l && l in n)\n        try {\n            n[l] = null == u ? \"\" : u;\n            break n;\n        }\n        catch (n) { }\n    \"function\" == typeof u || (null == u || !1 === u && -1 == l.indexOf(\"-\") ? n.removeAttribute(l) : n.setAttribute(l, u));\n} }\nfunction T(n) { return this.l[n.type + !1](l.event ? l.event(n) : n); }\nfunction j(n) { return this.l[n.type + !0](l.event ? l.event(n) : n); }\nfunction z(n, u, i, t, r, o, f, e, c) { var s, h, v, y, p, k, b, g, m, x, A, P, C, $, H, I = u.type; if (void 0 !== u.constructor)\n    return null; null != i.__h && (c = i.__h, e = u.__e = i.__e, u.__h = null, o = [e]), (s = l.__b) && s(u); try {\n    n: if (\"function\" == typeof I) {\n        if (g = u.props, m = (s = I.contextType) && t[s.__c], x = s ? m ? m.props.value : s.__ : t, i.__c ? b = (h = u.__c = i.__c).__ = h.__E : (\"prototype\" in I && I.prototype.render ? u.__c = h = new I(g, x) : (u.__c = h = new _(g, x), h.constructor = I, h.render = S), m && m.sub(h), h.props = g, h.state || (h.state = {}), h.context = x, h.__n = t, v = h.__d = !0, h.__h = [], h._sb = []), null == h.__s && (h.__s = h.state), null != I.getDerivedStateFromProps && (h.__s == h.state && (h.__s = a({}, h.__s)), a(h.__s, I.getDerivedStateFromProps(g, h.__s))), y = h.props, p = h.state, h.__v = u, v)\n            null == I.getDerivedStateFromProps && null != h.componentWillMount && h.componentWillMount(), null != h.componentDidMount && h.__h.push(h.componentDidMount);\n        else {\n            if (null == I.getDerivedStateFromProps && g !== y && null != h.componentWillReceiveProps && h.componentWillReceiveProps(g, x), !h.__e && null != h.shouldComponentUpdate && !1 === h.shouldComponentUpdate(g, h.__s, x) || u.__v === i.__v) {\n                for (u.__v !== i.__v && (h.props = g, h.state = h.__s, h.__d = !1), h.__e = !1, u.__e = i.__e, u.__k = i.__k, u.__k.forEach(function (n) { n && (n.__ = u); }), A = 0; A < h._sb.length; A++)\n                    h.__h.push(h._sb[A]);\n                h._sb = [], h.__h.length && f.push(h);\n                break n;\n            }\n            null != h.componentWillUpdate && h.componentWillUpdate(g, h.__s, x), null != h.componentDidUpdate && h.__h.push(function () { h.componentDidUpdate(y, p, k); });\n        }\n        if (h.context = x, h.props = g, h.__P = n, P = l.__r, C = 0, \"prototype\" in I && I.prototype.render) {\n            for (h.state = h.__s, h.__d = !1, P && P(u), s = h.render(h.props, h.state, h.context), $ = 0; $ < h._sb.length; $++)\n                h.__h.push(h._sb[$]);\n            h._sb = [];\n        }\n        else\n            do {\n                h.__d = !1, P && P(u), s = h.render(h.props, h.state, h.context), h.state = h.__s;\n            } while (h.__d && ++C < 25);\n        h.state = h.__s, null != h.getChildContext && (t = a(a({}, t), h.getChildContext())), v || null == h.getSnapshotBeforeUpdate || (k = h.getSnapshotBeforeUpdate(y, p)), H = null != s && s.type === d && null == s.key ? s.props.children : s, w(n, Array.isArray(H) ? H : [H], u, i, t, r, o, f, e, c), h.base = u.__e, u.__h = null, h.__h.length && f.push(h), b && (h.__E = h.__ = null), h.__e = !1;\n    }\n    else\n        null == o && u.__v === i.__v ? (u.__k = i.__k, u.__e = i.__e) : u.__e = M(i.__e, u, i, t, r, o, f, c);\n    (s = l.diffed) && s(u);\n}\ncatch (n) {\n    u.__v = null, (c || null != o) && (u.__e = e, u.__h = !!c, o[o.indexOf(e)] = null), l.__e(n, u, i);\n} }\nfunction L(n, u) { l.__c && l.__c(u, n), n.some(function (u) { try {\n    n = u.__h, u.__h = [], n.some(function (n) { n.call(u); });\n}\ncatch (n) {\n    l.__e(n, u.__v);\n} }); }\nfunction M(l, u, i, t, r, o, f, c) { var s, a, v, y = i.props, p = u.props, d = u.type, _ = 0; if (\"svg\" === d && (r = !0), null != o)\n    for (; _ < o.length; _++)\n        if ((s = o[_]) && \"setAttribute\" in s == !!d && (d ? s.localName === d : 3 === s.nodeType)) {\n            l = s, o[_] = null;\n            break;\n        } if (null == l) {\n    if (null === d)\n        return document.createTextNode(p);\n    l = r ? document.createElementNS(\"http://www.w3.org/2000/svg\", d) : document.createElement(d, p.is && p), o = null, c = !1;\n} if (null === d)\n    y === p || c && l.data === p || (l.data = p);\nelse {\n    if (o = o && n.call(l.childNodes), a = (y = i.props || e).dangerouslySetInnerHTML, v = p.dangerouslySetInnerHTML, !c) {\n        if (null != o)\n            for (y = {}, _ = 0; _ < l.attributes.length; _++)\n                y[l.attributes[_].name] = l.attributes[_].value;\n        (v || a) && (v && (a && v.__html == a.__html || v.__html === l.innerHTML) || (l.innerHTML = v && v.__html || \"\"));\n    }\n    if ($(l, p, y, r, c), v)\n        u.__k = [];\n    else if (_ = u.props.children, w(l, Array.isArray(_) ? _ : [_], u, i, t, r && \"foreignObject\" !== d, o, f, o ? o[0] : i.__k && k(i, 0), c), null != o)\n        for (_ = o.length; _--;)\n            null != o[_] && h(o[_]);\n    c || (\"value\" in p && void 0 !== (_ = p.value) && (_ !== l.value || \"progress\" === d && !_ || \"option\" === d && _ !== y.value) && I(l, \"value\", _, y.value, !1), \"checked\" in p && void 0 !== (_ = p.checked) && _ !== l.checked && I(l, \"checked\", _, y.checked, !1));\n} return l; }\nfunction N(n, u, i) { try {\n    \"function\" == typeof n ? n(u) : n.current = u;\n}\ncatch (n) {\n    l.__e(n, i);\n} }\nfunction O(n, u, i) { var t, r; if (l.unmount && l.unmount(n), (t = n.ref) && (t.current && t.current !== n.__e || N(t, null, u)), null != (t = n.__c)) {\n    if (t.componentWillUnmount)\n        try {\n            t.componentWillUnmount();\n        }\n        catch (n) {\n            l.__e(n, u);\n        }\n    t.base = t.__P = null, n.__c = void 0;\n} if (t = n.__k)\n    for (r = 0; r < t.length; r++)\n        t[r] && O(t[r], u, i || \"function\" != typeof n.type); i || null == n.__e || h(n.__e), n.__ = n.__e = n.__d = void 0; }\nfunction S(n, l, u) { return this.constructor(n, u); }\nfunction q(u, i, t) { var r, o, f; l.__ && l.__(u, i), o = (r = \"function\" == typeof t) ? null : t && t.__k || i.__k, f = [], z(i, u = (!r && t || i).__k = v(d, null, [u]), o || e, e, void 0 !== i.ownerSVGElement, !r && t ? [t] : o ? null : i.firstChild ? n.call(i.childNodes) : null, f, !r && t ? t : o ? o.__e : i.firstChild, r), L(f, u); }\nexports.render = q;\nfunction B(n, l) { q(n, l, B); }\nexports.hydrate = B;\nfunction D(l, u, i) { var t, r, o, f = a({}, l.props); for (o in u)\n    \"key\" == o ? t = u[o] : \"ref\" == o ? r = u[o] : f[o] = u[o]; return arguments.length > 2 && (f.children = arguments.length > 3 ? n.call(arguments, 2) : i), y(l.type, f, t || l.key, r || l.ref, null); }\nexports.cloneElement = D;\nfunction E(n, l) { var u = { __c: l = \"__cC\" + f++, __: n, Consumer: function (n, l) { return n.children(l); }, Provider: function (n) { var u, i; return this.getChildContext || (u = [], (i = {})[l] = this, this.getChildContext = function () { return i; }, this.shouldComponentUpdate = function (n) { this.props.value !== n.value && u.some(function (n) { n.__e = !0, g(n); }); }, this.sub = function (n) { u.push(n); var l = n.componentWillUnmount; n.componentWillUnmount = function () { u.splice(u.indexOf(n), 1), l && l.call(n); }; }), n.children; } }; return u.Provider.__ = u.Consumer.contextType = u; }\nexports.createContext = E;\nn = c.slice, exports.options = l = { __e: function (n, l, u, i) { for (var t, r, o; l = l.__;)\n        if ((t = l.__c) && !t.__)\n            try {\n                if ((r = t.constructor) && null != r.getDerivedStateFromError && (t.setState(r.getDerivedStateFromError(n)), o = t.__d), null != t.componentDidCatch && (t.componentDidCatch(n, i || {}), o = t.__d), o)\n                    return t.__E = t;\n            }\n            catch (l) {\n                n = l;\n            } throw n; } }, u = 0, exports.isValidElement = i = function (n) { return null != n && void 0 === n.constructor; }, _.prototype.setState = function (n, l) { var u; u = null != this.__s && this.__s !== this.state ? this.__s : this.__s = a({}, this.state), \"function\" == typeof n && (n = n(a({}, u), this.props)), n && a(u, n), null != n && this.__v && (l && this._sb.push(l), g(this)); }, _.prototype.forceUpdate = function (n) { this.__v && (this.__e = !0, n && this.__h.push(n), g(this)); }, _.prototype.render = d, t = [], o = \"function\" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, m.__r = 0, f = 0;\n//# sourceMappingURL=preact.module.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[],"externals":[],"shims":[]},"code":{"source":"/* preact/dist/preact.module.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var n, l, u, i, t, r, o, f, e = {}, c = [], s = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n    function a(n, l) {\n        for (var u in l)\n            n[u] = l[u];\n        return n;\n    }\n    function h(n) { var l = n.parentNode; l && l.removeChild(n); }\n    function v(l, u, i) {\n        var t, r, o, f = {};\n        for (o in u)\n            \"key\" == o ? t = u[o] : \"ref\" == o ? r = u[o] : f[o] = u[o];\n        if (arguments.length > 2 && (f.children = arguments.length > 3 ? n.call(arguments, 2) : i), \"function\" == typeof l && null != l.defaultProps)\n            for (o in l.defaultProps)\n                void 0 === f[o] && (f[o] = l.defaultProps[o]);\n        return y(l, f, t, r, null);\n    }\n    exports.createElement = v;\n    exports.h = v;\n    function y(n, i, t, r, o) { var f = { type: n, props: i, key: t, ref: r, __k: null, __: null, __b: 0, __e: null, __d: void 0, __c: null, __h: null, constructor: void 0, __v: null == o ? ++u : o }; return null == o && null != l.vnode && l.vnode(f), f; }\n    function p() { return { current: null }; }\n    exports.createRef = p;\n    function d(n) { return n.children; }\n    exports.Fragment = d;\n    function _(n, l) { this.props = n, this.context = l; }\n    exports.Component = _;\n    function k(n, l) {\n        if (null == l)\n            return n.__ ? k(n.__, n.__.__k.indexOf(n) + 1) : null;\n        for (var u; l < n.__k.length; l++)\n            if (null != (u = n.__k[l]) && null != u.__e)\n                return u.__e;\n        return \"function\" == typeof n.type ? k(n) : null;\n    }\n    function b(n) {\n        var l, u;\n        if (null != (n = n.__) && null != n.__c) {\n            for (n.__e = n.__c.base = null, l = 0; l < n.__k.length; l++)\n                if (null != (u = n.__k[l]) && null != u.__e) {\n                    n.__e = n.__c.base = u.__e;\n                    break;\n                }\n            return b(n);\n        }\n    }\n    function g(n) { (!n.__d && (n.__d = !0) && t.push(n) && !m.__r++ || r !== l.debounceRendering) && ((r = l.debounceRendering) || o)(m); }\n    function m() {\n        var n, l, u, i, r, o, f, e;\n        for (t.sort(function (n, l) { return n.__v.__b - l.__v.__b; }); n = t.shift();)\n            n.__d && (l = t.length, i = void 0, r = void 0, f = (o = (u = n).__v).__e, (e = u.__P) && (i = [], (r = a({}, o)).__v = o.__v + 1, z(e, o, r, u.__n, void 0 !== e.ownerSVGElement, null != o.__h ? [f] : null, i, null == f ? k(o) : f, o.__h), L(i, o), o.__e != f && b(o)), t.length > l && t.sort(function (n, l) { return n.__v.__b - l.__v.__b; }));\n        m.__r = 0;\n    }\n    function w(n, l, u, i, t, r, o, f, s, a) {\n        var h, v, p, _, b, g, m, w = i && i.__k || c, A = w.length;\n        for (u.__k = [], h = 0; h < l.length; h++)\n            if (null != (_ = u.__k[h] = null == (_ = l[h]) || \"boolean\" == typeof _ ? null : \"string\" == typeof _ || \"number\" == typeof _ || \"bigint\" == typeof _ ? y(null, _, null, null, _) : Array.isArray(_) ? y(d, { children: _ }, null, null, null) : _.__b > 0 ? y(_.type, _.props, _.key, _.ref ? _.ref : null, _.__v) : _)) {\n                if (_.__ = u, _.__b = u.__b + 1, null === (p = w[h]) || p && _.key == p.key && _.type === p.type)\n                    w[h] = void 0;\n                else\n                    for (v = 0; v < A; v++) {\n                        if ((p = w[v]) && _.key == p.key && _.type === p.type) {\n                            w[v] = void 0;\n                            break;\n                        }\n                        p = null;\n                    }\n                z(n, _, p = p || e, t, r, o, f, s, a), b = _.__e, (v = _.ref) && p.ref != v && (m || (m = []), p.ref && m.push(p.ref, null, _), m.push(v, _.__c || b, _)), null != b ? (null == g && (g = b), \"function\" == typeof _.type && _.__k === p.__k ? _.__d = s = x(_, s, n) : s = P(n, _, p, w, b, s), \"function\" == typeof u.type && (u.__d = s)) : s && p.__e == s && s.parentNode != n && (s = k(p));\n            }\n        for (u.__e = g, h = A; h--;)\n            null != w[h] && (\"function\" == typeof u.type && null != w[h].__e && w[h].__e == u.__d && (u.__d = C(i).nextSibling), O(w[h], w[h]));\n        if (m)\n            for (h = 0; h < m.length; h++)\n                N(m[h], m[++h], m[++h]);\n    }\n    function x(n, l, u) {\n        for (var i, t = n.__k, r = 0; t && r < t.length; r++)\n            (i = t[r]) && (i.__ = n, l = \"function\" == typeof i.type ? x(i, l, u) : P(u, i, i, t, i.__e, l));\n        return l;\n    }\n    function A(n, l) { return l = l || [], null == n || \"boolean\" == typeof n || (Array.isArray(n) ? n.some(function (n) { A(n, l); }) : l.push(n)), l; }\n    exports.toChildArray = A;\n    function P(n, l, u, i, t, r) {\n        var o, f, e;\n        if (void 0 !== l.__d)\n            o = l.__d, l.__d = void 0;\n        else if (null == u || t != r || null == t.parentNode)\n            n: if (null == r || r.parentNode !== n)\n                n.appendChild(t), o = null;\n            else {\n                for (f = r, e = 0; (f = f.nextSibling) && e < i.length; e += 1)\n                    if (f == t)\n                        break n;\n                n.insertBefore(t, r), o = r;\n            }\n        return void 0 !== o ? o : t.nextSibling;\n    }\n    function C(n) {\n        var l, u, i;\n        if (null == n.type || \"string\" == typeof n.type)\n            return n.__e;\n        if (n.__k)\n            for (l = n.__k.length - 1; l >= 0; l--)\n                if ((u = n.__k[l]) && (i = C(u)))\n                    return i;\n        return null;\n    }\n    function $(n, l, u, i, t) {\n        var r;\n        for (r in u)\n            \"children\" === r || \"key\" === r || r in l || I(n, r, null, u[r], i);\n        for (r in l)\n            t && \"function\" != typeof l[r] || \"children\" === r || \"key\" === r || \"value\" === r || \"checked\" === r || u[r] === l[r] || I(n, r, l[r], u[r], i);\n    }\n    function H(n, l, u) { \"-\" === l[0] ? n.setProperty(l, null == u ? \"\" : u) : n[l] = null == u ? \"\" : \"number\" != typeof u || s.test(l) ? u : u + \"px\"; }\n    function I(n, l, u, i, t) {\n        var r;\n        n: if (\"style\" === l)\n            if (\"string\" == typeof u)\n                n.style.cssText = u;\n            else {\n                if (\"string\" == typeof i && (n.style.cssText = i = \"\"), i)\n                    for (l in i)\n                        u && l in u || H(n.style, l, \"\");\n                if (u)\n                    for (l in u)\n                        i && u[l] === i[l] || H(n.style, l, u[l]);\n            }\n        else if (\"o\" === l[0] && \"n\" === l[1])\n            r = l !== (l = l.replace(/Capture$/, \"\")), l = l.toLowerCase() in n ? l.toLowerCase().slice(2) : l.slice(2), n.l || (n.l = {}), n.l[l + r] = u, u ? i || n.addEventListener(l, r ? j : T, r) : n.removeEventListener(l, r ? j : T, r);\n        else if (\"dangerouslySetInnerHTML\" !== l) {\n            if (t)\n                l = l.replace(/xlink(H|:h)/, \"h\").replace(/sName$/, \"s\");\n            else if (\"width\" !== l && \"height\" !== l && \"href\" !== l && \"list\" !== l && \"form\" !== l && \"tabIndex\" !== l && \"download\" !== l && l in n)\n                try {\n                    n[l] = null == u ? \"\" : u;\n                    break n;\n                }\n                catch (n) { }\n            \"function\" == typeof u || (null == u || !1 === u && -1 == l.indexOf(\"-\") ? n.removeAttribute(l) : n.setAttribute(l, u));\n        }\n    }\n    function T(n) { return this.l[n.type + !1](l.event ? l.event(n) : n); }\n    function j(n) { return this.l[n.type + !0](l.event ? l.event(n) : n); }\n    function z(n, u, i, t, r, o, f, e, c) {\n        var s, h, v, y, p, k, b, g, m, x, A, P, C, $, H, I = u.type;\n        if (void 0 !== u.constructor)\n            return null;\n        null != i.__h && (c = i.__h, e = u.__e = i.__e, u.__h = null, o = [e]), (s = l.__b) && s(u);\n        try {\n            n: if (\"function\" == typeof I) {\n                if (g = u.props, m = (s = I.contextType) && t[s.__c], x = s ? m ? m.props.value : s.__ : t, i.__c ? b = (h = u.__c = i.__c).__ = h.__E : (\"prototype\" in I && I.prototype.render ? u.__c = h = new I(g, x) : (u.__c = h = new _(g, x), h.constructor = I, h.render = S), m && m.sub(h), h.props = g, h.state || (h.state = {}), h.context = x, h.__n = t, v = h.__d = !0, h.__h = [], h._sb = []), null == h.__s && (h.__s = h.state), null != I.getDerivedStateFromProps && (h.__s == h.state && (h.__s = a({}, h.__s)), a(h.__s, I.getDerivedStateFromProps(g, h.__s))), y = h.props, p = h.state, h.__v = u, v)\n                    null == I.getDerivedStateFromProps && null != h.componentWillMount && h.componentWillMount(), null != h.componentDidMount && h.__h.push(h.componentDidMount);\n                else {\n                    if (null == I.getDerivedStateFromProps && g !== y && null != h.componentWillReceiveProps && h.componentWillReceiveProps(g, x), !h.__e && null != h.shouldComponentUpdate && !1 === h.shouldComponentUpdate(g, h.__s, x) || u.__v === i.__v) {\n                        for (u.__v !== i.__v && (h.props = g, h.state = h.__s, h.__d = !1), h.__e = !1, u.__e = i.__e, u.__k = i.__k, u.__k.forEach(function (n) { n && (n.__ = u); }), A = 0; A < h._sb.length; A++)\n                            h.__h.push(h._sb[A]);\n                        h._sb = [], h.__h.length && f.push(h);\n                        break n;\n                    }\n                    null != h.componentWillUpdate && h.componentWillUpdate(g, h.__s, x), null != h.componentDidUpdate && h.__h.push(function () { h.componentDidUpdate(y, p, k); });\n                }\n                if (h.context = x, h.props = g, h.__P = n, P = l.__r, C = 0, \"prototype\" in I && I.prototype.render) {\n                    for (h.state = h.__s, h.__d = !1, P && P(u), s = h.render(h.props, h.state, h.context), $ = 0; $ < h._sb.length; $++)\n                        h.__h.push(h._sb[$]);\n                    h._sb = [];\n                }\n                else\n                    do {\n                        h.__d = !1, P && P(u), s = h.render(h.props, h.state, h.context), h.state = h.__s;\n                    } while (h.__d && ++C < 25);\n                h.state = h.__s, null != h.getChildContext && (t = a(a({}, t), h.getChildContext())), v || null == h.getSnapshotBeforeUpdate || (k = h.getSnapshotBeforeUpdate(y, p)), H = null != s && s.type === d && null == s.key ? s.props.children : s, w(n, Array.isArray(H) ? H : [H], u, i, t, r, o, f, e, c), h.base = u.__e, u.__h = null, h.__h.length && f.push(h), b && (h.__E = h.__ = null), h.__e = !1;\n            }\n            else\n                null == o && u.__v === i.__v ? (u.__k = i.__k, u.__e = i.__e) : u.__e = M(i.__e, u, i, t, r, o, f, c);\n            (s = l.diffed) && s(u);\n        }\n        catch (n) {\n            u.__v = null, (c || null != o) && (u.__e = e, u.__h = !!c, o[o.indexOf(e)] = null), l.__e(n, u, i);\n        }\n    }\n    function L(n, u) {\n        l.__c && l.__c(u, n), n.some(function (u) {\n            try {\n                n = u.__h, u.__h = [], n.some(function (n) { n.call(u); });\n            }\n            catch (n) {\n                l.__e(n, u.__v);\n            }\n        });\n    }\n    function M(l, u, i, t, r, o, f, c) {\n        var s, a, v, y = i.props, p = u.props, d = u.type, _ = 0;\n        if (\"svg\" === d && (r = !0), null != o)\n            for (; _ < o.length; _++)\n                if ((s = o[_]) && \"setAttribute\" in s == !!d && (d ? s.localName === d : 3 === s.nodeType)) {\n                    l = s, o[_] = null;\n                    break;\n                }\n        if (null == l) {\n            if (null === d)\n                return document.createTextNode(p);\n            l = r ? document.createElementNS(\"http://www.w3.org/2000/svg\", d) : document.createElement(d, p.is && p), o = null, c = !1;\n        }\n        if (null === d)\n            y === p || c && l.data === p || (l.data = p);\n        else {\n            if (o = o && n.call(l.childNodes), a = (y = i.props || e).dangerouslySetInnerHTML, v = p.dangerouslySetInnerHTML, !c) {\n                if (null != o)\n                    for (y = {}, _ = 0; _ < l.attributes.length; _++)\n                        y[l.attributes[_].name] = l.attributes[_].value;\n                (v || a) && (v && (a && v.__html == a.__html || v.__html === l.innerHTML) || (l.innerHTML = v && v.__html || \"\"));\n            }\n            if ($(l, p, y, r, c), v)\n                u.__k = [];\n            else if (_ = u.props.children, w(l, Array.isArray(_) ? _ : [_], u, i, t, r && \"foreignObject\" !== d, o, f, o ? o[0] : i.__k && k(i, 0), c), null != o)\n                for (_ = o.length; _--;)\n                    null != o[_] && h(o[_]);\n            c || (\"value\" in p && void 0 !== (_ = p.value) && (_ !== l.value || \"progress\" === d && !_ || \"option\" === d && _ !== y.value) && I(l, \"value\", _, y.value, !1), \"checked\" in p && void 0 !== (_ = p.checked) && _ !== l.checked && I(l, \"checked\", _, y.checked, !1));\n        }\n        return l;\n    }\n    function N(n, u, i) {\n        try {\n            \"function\" == typeof n ? n(u) : n.current = u;\n        }\n        catch (n) {\n            l.__e(n, i);\n        }\n    }\n    function O(n, u, i) {\n        var t, r;\n        if (l.unmount && l.unmount(n), (t = n.ref) && (t.current && t.current !== n.__e || N(t, null, u)), null != (t = n.__c)) {\n            if (t.componentWillUnmount)\n                try {\n                    t.componentWillUnmount();\n                }\n                catch (n) {\n                    l.__e(n, u);\n                }\n            t.base = t.__P = null, n.__c = void 0;\n        }\n        if (t = n.__k)\n            for (r = 0; r < t.length; r++)\n                t[r] && O(t[r], u, i || \"function\" != typeof n.type);\n        i || null == n.__e || h(n.__e), n.__ = n.__e = n.__d = void 0;\n    }\n    function S(n, l, u) { return this.constructor(n, u); }\n    function q(u, i, t) { var r, o, f; l.__ && l.__(u, i), o = (r = \"function\" == typeof t) ? null : t && t.__k || i.__k, f = [], z(i, u = (!r && t || i).__k = v(d, null, [u]), o || e, e, void 0 !== i.ownerSVGElement, !r && t ? [t] : o ? null : i.firstChild ? n.call(i.childNodes) : null, f, !r && t ? t : o ? o.__e : i.firstChild, r), L(f, u); }\n    exports.render = q;\n    function B(n, l) { q(n, l, B); }\n    exports.hydrate = B;\n    function D(l, u, i) {\n        var t, r, o, f = a({}, l.props);\n        for (o in u)\n            \"key\" == o ? t = u[o] : \"ref\" == o ? r = u[o] : f[o] = u[o];\n        return arguments.length > 2 && (f.children = arguments.length > 3 ? n.call(arguments, 2) : i), y(l.type, f, t || l.key, r || l.ref, null);\n    }\n    exports.cloneElement = D;\n    function E(n, l) { var u = { __c: l = \"__cC\" + f++, __: n, Consumer: function (n, l) { return n.children(l); }, Provider: function (n) { var u, i; return this.getChildContext || (u = [], (i = {})[l] = this, this.getChildContext = function () { return i; }, this.shouldComponentUpdate = function (n) { this.props.value !== n.value && u.some(function (n) { n.__e = !0, g(n); }); }, this.sub = function (n) { u.push(n); var l = n.componentWillUnmount; n.componentWillUnmount = function () { u.splice(u.indexOf(n), 1), l && l.call(n); }; }), n.children; } }; return u.Provider.__ = u.Consumer.contextType = u; }\n    exports.createContext = E;\n    n = c.slice, exports.options = l = { __e: function (n, l, u, i) {\n            for (var t, r, o; l = l.__;)\n                if ((t = l.__c) && !t.__)\n                    try {\n                        if ((r = t.constructor) && null != r.getDerivedStateFromError && (t.setState(r.getDerivedStateFromError(n)), o = t.__d), null != t.componentDidCatch && (t.componentDidCatch(n, i || {}), o = t.__d), o)\n                            return t.__E = t;\n                    }\n                    catch (l) {\n                        n = l;\n                    }\n            throw n;\n        } }, u = 0, exports.isValidElement = i = function (n) { return null != n && void 0 === n.constructor; }, _.prototype.setState = function (n, l) { var u; u = null != this.__s && this.__s !== this.state ? this.__s : this.__s = a({}, this.state), \"function\" == typeof n && (n = n(a({}, u), this.props)), n && a(u, n), null != n && this.__v && (l && this._sb.push(l), g(this)); }, _.prototype.forceUpdate = function (n) { this.__v && (this.__e = !0, n && this.__h.push(n), g(this)); }, _.prototype.render = d, t = [], o = \"function\" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, m.__r = 0, f = 0;\n}\n","min_source":"function _(e,n,t,_,l){_();var o,r,i,u,s,c,f,p={},a=[],d=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function h(e,n){for(var t in n)e[t]=n[t];return e}function v(e){var n=e.parentNode;n&&n.removeChild(e)}function y(e,n,t){var _,l,r,i={};for(r in n)\"key\"==r?_=n[r]:\"ref\"==r?l=n[r]:i[r]=n[r];if(arguments.length>2&&(i.children=arguments.length>3?o.call(arguments,2):t),\"function\"==typeof e&&null!=e.defaultProps)for(r in e.defaultProps)void 0===i[r]&&(i[r]=e.defaultProps[r]);return m(e,i,_,l,null)}function m(e,n,t,_,l){var o={type:e,props:n,key:t,ref:_,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==l?++i:l};return null==l&&null!=r.vnode&&r.vnode(o),o}function g(e){return e.children}function k(e,n){this.props=e,this.context=n}function b(e,n){if(null==n)return e.__?b(e.__,e.__.__k.indexOf(e)+1):null;for(var t;n<e.__k.length;n++)if(null!=(t=e.__k[n])&&null!=t.__e)return t.__e;return\"function\"==typeof e.type?b(e):null}function x(e){var n,t;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,n=0;n<e.__k.length;n++)if(null!=(t=e.__k[n])&&null!=t.__e){e.__e=e.__c.base=t.__e;break}return x(e)}}function C(e){(!e.__d&&(e.__d=!0)&&u.push(e)&&!S.__r++||s!==r.debounceRendering)&&((s=r.debounceRendering)||c)(S)}function S(){var e,n,t,_,l,o,r,i;for(u.sort((function(e,n){return e.__v.__b-n.__v.__b}));e=u.shift();)e.__d&&(n=u.length,_=void 0,l=void 0,r=(o=(t=e).__v).__e,(i=t.__P)&&(_=[],(l=h({},o)).__v=o.__v+1,W(i,o,l,t.__n,void 0!==i.ownerSVGElement,null!=o.__h?[r]:null,_,null==r?b(o):r,o.__h),L(_,o),o.__e!=r&&x(o)),u.length>n&&u.sort((function(e,n){return e.__v.__b-n.__v.__b})));S.__r=0}function P(e,n,t,_,l,o,r,i,u,s){var c,f,d,h,v,y,k,x=_&&_.__k||a,C=x.length;for(t.__k=[],c=0;c<n.length;c++)if(null!=(h=t.__k[c]=null==(h=n[c])||\"boolean\"==typeof h?null:\"string\"==typeof h||\"number\"==typeof h||\"bigint\"==typeof h?m(null,h,null,null,h):Array.isArray(h)?m(g,{children:h},null,null,null):h.__b>0?m(h.type,h.props,h.key,h.ref?h.ref:null,h.__v):h)){if(h.__=t,h.__b=t.__b+1,null===(d=x[c])||d&&h.key==d.key&&h.type===d.type)x[c]=void 0;else for(f=0;f<C;f++){if((d=x[f])&&h.key==d.key&&h.type===d.type){x[f]=void 0;break}d=null}W(e,h,d=d||p,l,o,r,i,u,s),v=h.__e,(f=h.ref)&&d.ref!=f&&(k||(k=[]),d.ref&&k.push(d.ref,null,h),k.push(f,h.__c||v,h)),null!=v?(null==y&&(y=v),\"function\"==typeof h.type&&h.__k===d.__k?h.__d=u=w(h,u,e):u=E(e,h,d,x,v,u),\"function\"==typeof t.type&&(t.__d=u)):u&&d.__e==u&&u.parentNode!=e&&(u=b(d))}for(t.__e=y,c=C;c--;)null!=x[c]&&(\"function\"==typeof t.type&&null!=x[c].__e&&x[c].__e==t.__d&&(t.__d=U(_).nextSibling),H(x[c],x[c]));if(k)for(c=0;c<k.length;c++)F(k[c],k[++c],k[++c])}function w(e,n,t){for(var _,l=e.__k,o=0;l&&o<l.length;o++)(_=l[o])&&(_.__=e,n=\"function\"==typeof _.type?w(_,n,t):E(t,_,_,l,_.__e,n));return n}function E(e,n,t,_,l,o){var r,i,u;if(void 0!==n.__d)r=n.__d,n.__d=void 0;else if(null==t||l!=o||null==l.parentNode)e:if(null==o||o.parentNode!==e)e.appendChild(l),r=null;else{for(i=o,u=0;(i=i.nextSibling)&&u<_.length;u+=1)if(i==l)break e;e.insertBefore(l,o),r=o}return void 0!==r?r:l.nextSibling}function U(e){var n,t,_;if(null==e.type||\"string\"==typeof e.type)return e.__e;if(e.__k)for(n=e.__k.length-1;n>=0;n--)if((t=e.__k[n])&&(_=U(t)))return _;return null}function A(e,n,t){\"-\"===n[0]?e.setProperty(n,null==t?\"\":t):e[n]=null==t?\"\":\"number\"!=typeof t||d.test(n)?t:t+\"px\"}function D(e,n,t,_,l){var o;e:if(\"style\"===n)if(\"string\"==typeof t)e.style.cssText=t;else{if(\"string\"==typeof _&&(e.style.cssText=_=\"\"),_)for(n in _)t&&n in t||A(e.style,n,\"\");if(t)for(n in t)_&&t[n]===_[n]||A(e.style,n,t[n])}else if(\"o\"===n[0]&&\"n\"===n[1])o=n!==(n=n.replace(/Capture$/,\"\")),n=n.toLowerCase()in e?n.toLowerCase().slice(2):n.slice(2),e.l||(e.l={}),e.l[n+o]=t,t?_||e.addEventListener(n,o?N:T,o):e.removeEventListener(n,o?N:T,o);else if(\"dangerouslySetInnerHTML\"!==n){if(l)n=n.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!==n&&\"height\"!==n&&\"href\"!==n&&\"list\"!==n&&\"form\"!==n&&\"tabIndex\"!==n&&\"download\"!==n&&n in e)try{e[n]=null==t?\"\":t;break e}catch(e){}\"function\"==typeof t||(null==t||!1===t&&-1==n.indexOf(\"-\")?e.removeAttribute(n):e.setAttribute(n,t))}}function T(e){return this.l[e.type+!1](r.event?r.event(e):e)}function N(e){return this.l[e.type+!0](r.event?r.event(e):e)}function W(e,n,t,_,l,o,i,u,s){var c,f,p,a,d,v,y,m,b,x,C,S,w,E,U,A=n.type;if(void 0!==n.constructor)return null;null!=t.__h&&(s=t.__h,u=n.__e=t.__e,n.__h=null,o=[u]),(c=r.__b)&&c(n);try{e:if(\"function\"==typeof A){if(m=n.props,b=(c=A.contextType)&&_[c.__c],x=c?b?b.props.value:c.__:_,t.__c?y=(f=n.__c=t.__c).__=f.__E:(\"prototype\"in A&&A.prototype.render?n.__c=f=new A(m,x):(n.__c=f=new k(m,x),f.constructor=A,f.render=O),b&&b.sub(f),f.props=m,f.state||(f.state={}),f.context=x,f.__n=_,p=f.__d=!0,f.__h=[],f._sb=[]),null==f.__s&&(f.__s=f.state),null!=A.getDerivedStateFromProps&&(f.__s==f.state&&(f.__s=h({},f.__s)),h(f.__s,A.getDerivedStateFromProps(m,f.__s))),a=f.props,d=f.state,f.__v=n,p)null==A.getDerivedStateFromProps&&null!=f.componentWillMount&&f.componentWillMount(),null!=f.componentDidMount&&f.__h.push(f.componentDidMount);else{if(null==A.getDerivedStateFromProps&&m!==a&&null!=f.componentWillReceiveProps&&f.componentWillReceiveProps(m,x),!f.__e&&null!=f.shouldComponentUpdate&&!1===f.shouldComponentUpdate(m,f.__s,x)||n.__v===t.__v){for(n.__v!==t.__v&&(f.props=m,f.state=f.__s,f.__d=!1),f.__e=!1,n.__e=t.__e,n.__k=t.__k,n.__k.forEach((function(e){e&&(e.__=n)})),C=0;C<f._sb.length;C++)f.__h.push(f._sb[C]);f._sb=[],f.__h.length&&i.push(f);break e}null!=f.componentWillUpdate&&f.componentWillUpdate(m,f.__s,x),null!=f.componentDidUpdate&&f.__h.push((function(){f.componentDidUpdate(a,d,v)}))}if(f.context=x,f.props=m,f.__P=e,S=r.__r,w=0,\"prototype\"in A&&A.prototype.render){for(f.state=f.__s,f.__d=!1,S&&S(n),c=f.render(f.props,f.state,f.context),E=0;E<f._sb.length;E++)f.__h.push(f._sb[E]);f._sb=[]}else do{f.__d=!1,S&&S(n),c=f.render(f.props,f.state,f.context),f.state=f.__s}while(f.__d&&++w<25);f.state=f.__s,null!=f.getChildContext&&(_=h(h({},_),f.getChildContext())),p||null==f.getSnapshotBeforeUpdate||(v=f.getSnapshotBeforeUpdate(a,d)),U=null!=c&&c.type===g&&null==c.key?c.props.children:c,P(e,Array.isArray(U)?U:[U],n,t,_,l,o,i,u,s),f.base=n.__e,n.__h=null,f.__h.length&&i.push(f),y&&(f.__E=f.__=null),f.__e=!1}else null==o&&n.__v===t.__v?(n.__k=t.__k,n.__e=t.__e):n.__e=M(t.__e,n,t,_,l,o,i,s);(c=r.diffed)&&c(n)}catch(e){n.__v=null,(s||null!=o)&&(n.__e=u,n.__h=!!s,o[o.indexOf(u)]=null),r.__e(e,n,t)}}function L(e,n){r.__c&&r.__c(n,e),e.some((function(n){try{e=n.__h,n.__h=[],e.some((function(e){e.call(n)}))}catch(e){r.__e(e,n.__v)}}))}function M(e,n,t,_,l,r,i,u){var s,c,f,a=t.props,d=n.props,h=n.type,y=0;if(\"svg\"===h&&(l=!0),null!=r)for(;y<r.length;y++)if((s=r[y])&&\"setAttribute\"in s==!!h&&(h?s.localName===h:3===s.nodeType)){e=s,r[y]=null;break}if(null==e){if(null===h)return document.createTextNode(d);e=l?document.createElementNS(\"http://www.w3.org/2000/svg\",h):document.createElement(h,d.is&&d),r=null,u=!1}if(null===h)a===d||u&&e.data===d||(e.data=d);else{if(r=r&&o.call(e.childNodes),c=(a=t.props||p).dangerouslySetInnerHTML,f=d.dangerouslySetInnerHTML,!u){if(null!=r)for(a={},y=0;y<e.attributes.length;y++)a[e.attributes[y].name]=e.attributes[y].value;(f||c)&&(f&&(c&&f.__html==c.__html||f.__html===e.innerHTML)||(e.innerHTML=f&&f.__html||\"\"))}if(function(e,n,t,_,l){var o;for(o in t)\"children\"===o||\"key\"===o||o in n||D(e,o,null,t[o],_);for(o in n)l&&\"function\"!=typeof n[o]||\"children\"===o||\"key\"===o||\"value\"===o||\"checked\"===o||t[o]===n[o]||D(e,o,n[o],t[o],_)}(e,d,a,l,u),f)n.__k=[];else if(y=n.props.children,P(e,Array.isArray(y)?y:[y],n,t,_,l&&\"foreignObject\"!==h,r,i,r?r[0]:t.__k&&b(t,0),u),null!=r)for(y=r.length;y--;)null!=r[y]&&v(r[y]);u||(\"value\"in d&&void 0!==(y=d.value)&&(y!==e.value||\"progress\"===h&&!y||\"option\"===h&&y!==a.value)&&D(e,\"value\",y,a.value,!1),\"checked\"in d&&void 0!==(y=d.checked)&&y!==e.checked&&D(e,\"checked\",y,a.checked,!1))}return e}function F(e,n,t){try{\"function\"==typeof e?e(n):e.current=n}catch(e){r.__e(e,t)}}function H(e,n,t){var _,l;if(r.unmount&&r.unmount(e),(_=e.ref)&&(_.current&&_.current!==e.__e||F(_,null,n)),null!=(_=e.__c)){if(_.componentWillUnmount)try{_.componentWillUnmount()}catch(e){r.__e(e,n)}_.base=_.__P=null,e.__c=void 0}if(_=e.__k)for(l=0;l<_.length;l++)_[l]&&H(_[l],n,t||\"function\"!=typeof e.type);t||null==e.__e||v(e.__e),e.__=e.__e=e.__d=void 0}function O(e,n,t){return this.constructor(e,t)}function R(e,n,t){var _,l,i;r.__&&r.__(e,n),l=(_=\"function\"==typeof t)?null:t&&t.__k||n.__k,i=[],W(n,e=(!_&&t||n).__k=y(g,null,[e]),l||p,p,void 0!==n.ownerSVGElement,!_&&t?[t]:l?null:n.firstChild?o.call(n.childNodes):null,i,!_&&t?t:l?l.__e:n.firstChild,_),L(i,e)}t.createElement=y,t.h=y,t.createRef=function(){return{current:null}},t.Fragment=g,t.Component=k,t.toChildArray=function e(n,t){return t=t||[],null==n||\"boolean\"==typeof n||(Array.isArray(n)?n.some((function(n){e(n,t)})):t.push(n)),t},t.render=R,t.hydrate=function e(n,t){R(n,t,e)},t.cloneElement=function(e,n,t){var _,l,r,i=h({},e.props);for(r in n)\"key\"==r?_=n[r]:\"ref\"==r?l=n[r]:i[r]=n[r];return arguments.length>2&&(i.children=arguments.length>3?o.call(arguments,2):t),m(e.type,i,_||e.key,l||e.ref,null)},t.createContext=function(e,n){var t={__c:n=\"__cC\"+f++,__:e,Consumer:function(e,n){return e.children(n)},Provider:function(e){var t,_;return this.getChildContext||(t=[],(_={})[n]=this,this.getChildContext=function(){return _},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&t.some((function(e){e.__e=!0,C(e)}))},this.sub=function(e){t.push(e);var n=e.componentWillUnmount;e.componentWillUnmount=function(){t.splice(t.indexOf(e),1),n&&n.call(e)}}),e.children}};return t.Provider.__=t.Consumer.contextType=t},o=a.slice,t.options=r={__e:function(e,n,t,_){for(var l,o,r;n=n.__;)if((l=n.__c)&&!l.__)try{if((o=l.constructor)&&null!=o.getDerivedStateFromError&&(l.setState(o.getDerivedStateFromError(e)),r=l.__d),null!=l.componentDidCatch&&(l.componentDidCatch(e,_||{}),r=l.__d),r)return l.__E=l}catch(n){e=n}throw e}},i=0,t.isValidElement=function(e){return null!=e&&void 0===e.constructor},k.prototype.setState=function(e,n){var t;t=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=h({},this.state),\"function\"==typeof e&&(e=e(h({},t),this.props)),e&&h(t,e),null!=e&&this.__v&&(n&&this._sb.push(n),C(this))},k.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),C(this))},k.prototype.render=g,u=[],c=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,S.__r=0,f=0}\n//# sourceMappingURL=preact.module.min.js.map","min_map":"{\"version\":3,\"file\":\"preact.module.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"n\",\"l\",\"u\",\"t\",\"r\",\"o\",\"f\",\"e\",\"c\",\"s\",\"a\",\"h\",\"parentNode\",\"removeChild\",\"v\",\"i\",\"arguments\",\"length\",\"children\",\"call\",\"defaultProps\",\"y\",\"type\",\"props\",\"key\",\"ref\",\"__k\",\"__\",\"__b\",\"__e\",\"__d\",\"__c\",\"__h\",\"constructor\",\"__v\",\"vnode\",\"d\",\"this\",\"context\",\"k\",\"indexOf\",\"b\",\"base\",\"g\",\"push\",\"m\",\"__r\",\"debounceRendering\",\"sort\",\"shift\",\"__P\",\"z\",\"__n\",\"ownerSVGElement\",\"L\",\"w\",\"p\",\"A\",\"Array\",\"isArray\",\"x\",\"P\",\"C\",\"nextSibling\",\"O\",\"N\",\"appendChild\",\"insertBefore\",\"H\",\"setProperty\",\"test\",\"I\",\"style\",\"cssText\",\"replace\",\"toLowerCase\",\"slice\",\"addEventListener\",\"j\",\"T\",\"removeEventListener\",\"removeAttribute\",\"setAttribute\",\"event\",\"$\",\"contextType\",\"value\",\"__E\",\"prototype\",\"render\",\"S\",\"sub\",\"state\",\"_sb\",\"__s\",\"getDerivedStateFromProps\",\"componentWillMount\",\"componentDidMount\",\"componentWillReceiveProps\",\"shouldComponentUpdate\",\"forEach\",\"componentWillUpdate\",\"componentDidUpdate\",\"getChildContext\",\"getSnapshotBeforeUpdate\",\"M\",\"diffed\",\"some\",\"localName\",\"nodeType\",\"document\",\"createTextNode\",\"createElementNS\",\"createElement\",\"is\",\"data\",\"childNodes\",\"dangerouslySetInnerHTML\",\"attributes\",\"name\",\"__html\",\"innerHTML\",\"checked\",\"current\",\"unmount\",\"componentWillUnmount\",\"q\",\"firstChild\",\"createRef\",\"Fragment\",\"Component\",\"toChildArray\",\"hydrate\",\"B\",\"cloneElement\",\"createContext\",\"Consumer\",\"Provider\",\"splice\",\"options\",\"getDerivedStateFromError\",\"setState\",\"componentDidCatch\",\"isValidElement\",\"forceUpdate\",\"Promise\",\"then\",\"bind\",\"resolve\",\"setTimeout\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/preact/hooks/dist/hooks.module.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"preact/hooks/dist/hooks.module.js","resolution":"ESM","id":"283ce7811c","hash":"283ce7811cbdffb2ad433b7f65f19acfe42c8b3951a2db2755d756667c0ac79a","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useState = exports.useRef = exports.useReducer = exports.useMemo = exports.useLayoutEffect = exports.useImperativeHandle = exports.useId = exports.useErrorBoundary = exports.useEffect = exports.useDebugValue = exports.useContext = exports.useCallback = void 0;\nconst preact_1 = require(\"preact\");\nvar t, r, u, i, o = 0, f = [], c = [], e = preact_1.options.__b, a = preact_1.options.__r, v = preact_1.options.diffed, l = preact_1.options.__c, m = preact_1.options.unmount;\nfunction d(t, u) { preact_1.options.__h && preact_1.options.__h(r, t, o || u), o = 0; var i = r.__H || (r.__H = { __: [], __h: [] }); return t >= i.__.length && i.__.push({ __V: c }), i.__[t]; }\nfunction p(n) { return o = 1, y(B, n); }\nexports.useState = p;\nfunction y(n, u, i) { var o = d(t++, 2); if (o.t = n, !o.__c && (o.__ = [i ? i(u) : B(void 0, u), function (n) { var t = o.__N ? o.__N[0] : o.__[0], r = o.t(t, n); t !== r && (o.__N = [r, o.__[1]], o.__c.setState({})); }], o.__c = r, !r.u)) {\n    r.u = !0;\n    var f = r.shouldComponentUpdate;\n    r.shouldComponentUpdate = function (n, t, r) { if (!o.__c.__H)\n        return !0; var u = o.__c.__H.__.filter(function (n) { return n.__c; }); if (u.every(function (n) { return !n.__N; }))\n        return !f || f.call(this, n, t, r); var i = !1; return u.forEach(function (n) { if (n.__N) {\n        var t = n.__[0];\n        n.__ = n.__N, n.__N = void 0, t !== n.__[0] && (i = !0);\n    } }), !(!i && o.__c.props === n) && (!f || f.call(this, n, t, r)); };\n} return o.__N || o.__; }\nexports.useReducer = y;\nfunction h(u, i) { var o = d(t++, 3); !preact_1.options.__s && z(o.__H, i) && (o.__ = u, o.i = i, r.__H.__h.push(o)); }\nexports.useEffect = h;\nfunction s(u, i) { var o = d(t++, 4); !preact_1.options.__s && z(o.__H, i) && (o.__ = u, o.i = i, r.__h.push(o)); }\nexports.useLayoutEffect = s;\nfunction _(n) { return o = 5, F(function () { return { current: n }; }, []); }\nexports.useRef = _;\nfunction A(n, t, r) { o = 6, s(function () { return \"function\" == typeof n ? (n(t()), function () { return n(null); }) : n ? (n.current = t(), function () { return n.current = null; }) : void 0; }, null == r ? r : r.concat(n)); }\nexports.useImperativeHandle = A;\nfunction F(n, r) { var u = d(t++, 7); return z(u.__H, r) ? (u.__V = n(), u.i = r, u.__h = n, u.__V) : u.__; }\nexports.useMemo = F;\nfunction T(n, t) { return o = 8, F(function () { return n; }, t); }\nexports.useCallback = T;\nfunction q(n) { var u = r.context[n.__c], i = d(t++, 9); return i.c = n, u ? (null == i.__ && (i.__ = !0, u.sub(r)), u.props.value) : n.__; }\nexports.useContext = q;\nfunction x(t, r) { preact_1.options.useDebugValue && preact_1.options.useDebugValue(r ? r(t) : t); }\nexports.useDebugValue = x;\nfunction P(n) { var u = d(t++, 10), i = p(); return u.__ = n, r.componentDidCatch || (r.componentDidCatch = function (n, t) { u.__ && u.__(n, t), i[1](n); }), [i[0], function () { i[1](void 0); }]; }\nexports.useErrorBoundary = P;\nfunction V() { var n = d(t++, 11); if (!n.__) {\n    for (var u = r.__v; null !== u && !u.__m && null !== u.__;)\n        u = u.__;\n    var i = u.__m || (u.__m = [0, 0]);\n    n.__ = \"P\" + i[0] + \"-\" + i[1]++;\n} return n.__; }\nexports.useId = V;\nfunction b() { for (var t; t = f.shift();)\n    if (t.__P && t.__H)\n        try {\n            t.__H.__h.forEach(k), t.__H.__h.forEach(w), t.__H.__h = [];\n        }\n        catch (r) {\n            t.__H.__h = [], preact_1.options.__e(r, t.__v);\n        } }\npreact_1.options.__b = function (n) { r = null, e && e(n); }, preact_1.options.__r = function (n) { a && a(n), t = 0; var i = (r = n.__c).__H; i && (u === r ? (i.__h = [], r.__h = [], i.__.forEach(function (n) { n.__N && (n.__ = n.__N), n.__V = c, n.__N = n.i = void 0; })) : (i.__h.forEach(k), i.__h.forEach(w), i.__h = [])), u = r; }, preact_1.options.diffed = function (t) { v && v(t); var o = t.__c; o && o.__H && (o.__H.__h.length && (1 !== f.push(o) && i === preact_1.options.requestAnimationFrame || ((i = preact_1.options.requestAnimationFrame) || j)(b)), o.__H.__.forEach(function (n) { n.i && (n.__H = n.i), n.__V !== c && (n.__ = n.__V), n.i = void 0, n.__V = c; })), u = r = null; }, preact_1.options.__c = function (t, r) { r.some(function (t) { try {\n    t.__h.forEach(k), t.__h = t.__h.filter(function (n) { return !n.__ || w(n); });\n}\ncatch (u) {\n    r.some(function (n) { n.__h && (n.__h = []); }), r = [], preact_1.options.__e(u, t.__v);\n} }), l && l(t, r); }, preact_1.options.unmount = function (t) { m && m(t); var r, u = t.__c; u && u.__H && (u.__H.__.forEach(function (n) { try {\n    k(n);\n}\ncatch (n) {\n    r = n;\n} }), u.__H = void 0, r && preact_1.options.__e(r, u.__v)); };\nvar g = \"function\" == typeof requestAnimationFrame;\nfunction j(n) { var t, r = function () { clearTimeout(u), g && cancelAnimationFrame(t), setTimeout(n); }, u = setTimeout(r, 100); g && (t = requestAnimationFrame(r)); }\nfunction k(n) { var t = r, u = n.__c; \"function\" == typeof u && (n.__c = void 0, u()), r = t; }\nfunction w(n) { var t = r; n.__c = n.__(), r = t; }\nfunction z(n, t) { return !n || n.length !== t.length || t.some(function (t, r) { return t !== n[r]; }); }\nfunction B(n, t) { return \"function\" == typeof t ? t(n) : t; }\n//# sourceMappingURL=hooks.module.js.map\n","type":"js","dependency_paths":[["preact","/croot/panel_1706539561184/work/panel/node_modules/preact/dist/preact.module.js"]],"dependency_map":[],"exported":[],"externals":[],"shims":[]},"code":{"source":"/* preact/hooks/dist/hooks.module.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const preact_1 = require(\"1b70f5b1d3\") /* preact */;\n    var t, r, u, i, o = 0, f = [], c = [], e = preact_1.options.__b, a = preact_1.options.__r, v = preact_1.options.diffed, l = preact_1.options.__c, m = preact_1.options.unmount;\n    function d(t, u) { preact_1.options.__h && preact_1.options.__h(r, t, o || u), o = 0; var i = r.__H || (r.__H = { __: [], __h: [] }); return t >= i.__.length && i.__.push({ __V: c }), i.__[t]; }\n    function p(n) { return o = 1, y(B, n); }\n    exports.useState = p;\n    function y(n, u, i) {\n        var o = d(t++, 2);\n        if (o.t = n, !o.__c && (o.__ = [i ? i(u) : B(void 0, u), function (n) { var t = o.__N ? o.__N[0] : o.__[0], r = o.t(t, n); t !== r && (o.__N = [r, o.__[1]], o.__c.setState({})); }], o.__c = r, !r.u)) {\n            r.u = !0;\n            var f = r.shouldComponentUpdate;\n            r.shouldComponentUpdate = function (n, t, r) {\n                if (!o.__c.__H)\n                    return !0;\n                var u = o.__c.__H.__.filter(function (n) { return n.__c; });\n                if (u.every(function (n) { return !n.__N; }))\n                    return !f || f.call(this, n, t, r);\n                var i = !1;\n                return u.forEach(function (n) {\n                    if (n.__N) {\n                        var t = n.__[0];\n                        n.__ = n.__N, n.__N = void 0, t !== n.__[0] && (i = !0);\n                    }\n                }), !(!i && o.__c.props === n) && (!f || f.call(this, n, t, r));\n            };\n        }\n        return o.__N || o.__;\n    }\n    exports.useReducer = y;\n    function h(u, i) { var o = d(t++, 3); !preact_1.options.__s && z(o.__H, i) && (o.__ = u, o.i = i, r.__H.__h.push(o)); }\n    exports.useEffect = h;\n    function s(u, i) { var o = d(t++, 4); !preact_1.options.__s && z(o.__H, i) && (o.__ = u, o.i = i, r.__h.push(o)); }\n    exports.useLayoutEffect = s;\n    function _(n) { return o = 5, F(function () { return { current: n }; }, []); }\n    exports.useRef = _;\n    function A(n, t, r) { o = 6, s(function () { return \"function\" == typeof n ? (n(t()), function () { return n(null); }) : n ? (n.current = t(), function () { return n.current = null; }) : void 0; }, null == r ? r : r.concat(n)); }\n    exports.useImperativeHandle = A;\n    function F(n, r) { var u = d(t++, 7); return z(u.__H, r) ? (u.__V = n(), u.i = r, u.__h = n, u.__V) : u.__; }\n    exports.useMemo = F;\n    function T(n, t) { return o = 8, F(function () { return n; }, t); }\n    exports.useCallback = T;\n    function q(n) { var u = r.context[n.__c], i = d(t++, 9); return i.c = n, u ? (null == i.__ && (i.__ = !0, u.sub(r)), u.props.value) : n.__; }\n    exports.useContext = q;\n    function x(t, r) { preact_1.options.useDebugValue && preact_1.options.useDebugValue(r ? r(t) : t); }\n    exports.useDebugValue = x;\n    function P(n) { var u = d(t++, 10), i = p(); return u.__ = n, r.componentDidCatch || (r.componentDidCatch = function (n, t) { u.__ && u.__(n, t), i[1](n); }), [i[0], function () { i[1](void 0); }]; }\n    exports.useErrorBoundary = P;\n    function V() {\n        var n = d(t++, 11);\n        if (!n.__) {\n            for (var u = r.__v; null !== u && !u.__m && null !== u.__;)\n                u = u.__;\n            var i = u.__m || (u.__m = [0, 0]);\n            n.__ = \"P\" + i[0] + \"-\" + i[1]++;\n        }\n        return n.__;\n    }\n    exports.useId = V;\n    function b() {\n        for (var t; t = f.shift();)\n            if (t.__P && t.__H)\n                try {\n                    t.__H.__h.forEach(k), t.__H.__h.forEach(w), t.__H.__h = [];\n                }\n                catch (r) {\n                    t.__H.__h = [], preact_1.options.__e(r, t.__v);\n                }\n    }\n    preact_1.options.__b = function (n) { r = null, e && e(n); }, preact_1.options.__r = function (n) { a && a(n), t = 0; var i = (r = n.__c).__H; i && (u === r ? (i.__h = [], r.__h = [], i.__.forEach(function (n) { n.__N && (n.__ = n.__N), n.__V = c, n.__N = n.i = void 0; })) : (i.__h.forEach(k), i.__h.forEach(w), i.__h = [])), u = r; }, preact_1.options.diffed = function (t) { v && v(t); var o = t.__c; o && o.__H && (o.__H.__h.length && (1 !== f.push(o) && i === preact_1.options.requestAnimationFrame || ((i = preact_1.options.requestAnimationFrame) || j)(b)), o.__H.__.forEach(function (n) { n.i && (n.__H = n.i), n.__V !== c && (n.__ = n.__V), n.i = void 0, n.__V = c; })), u = r = null; }, preact_1.options.__c = function (t, r) {\n        r.some(function (t) {\n            try {\n                t.__h.forEach(k), t.__h = t.__h.filter(function (n) { return !n.__ || w(n); });\n            }\n            catch (u) {\n                r.some(function (n) { n.__h && (n.__h = []); }), r = [], preact_1.options.__e(u, t.__v);\n            }\n        }), l && l(t, r);\n    }, preact_1.options.unmount = function (t) {\n        m && m(t);\n        var r, u = t.__c;\n        u && u.__H && (u.__H.__.forEach(function (n) {\n            try {\n                k(n);\n            }\n            catch (n) {\n                r = n;\n            }\n        }), u.__H = void 0, r && preact_1.options.__e(r, u.__v));\n    };\n    var g = \"function\" == typeof requestAnimationFrame;\n    function j(n) { var t, r = function () { clearTimeout(u), g && cancelAnimationFrame(t), setTimeout(n); }, u = setTimeout(r, 100); g && (t = requestAnimationFrame(r)); }\n    function k(n) { var t = r, u = n.__c; \"function\" == typeof u && (n.__c = void 0, u()), r = t; }\n    function w(n) { var t = r; n.__c = n.__(), r = t; }\n    function z(n, t) { return !n || n.length !== t.length || t.some(function (t, r) { return t !== n[r]; }); }\n    function B(n, t) { return \"function\" == typeof t ? t(n) : t; }\n}\n","min_source":"function _(_,n,t,o,u){o();const i=_(\"1b70f5b1d3\");var r,e,c,f,a=0,s=[],h=[],p=i.options.__b,v=i.options.__r,l=i.options.diffed,m=i.options.__c,d=i.options.unmount;function H(_,n){i.options.__h&&i.options.__h(e,_,a||n),a=0;var t=e.__H||(e.__H={__:[],__h:[]});return _>=t.__.length&&t.__.push({__V:h}),t.__[_]}function E(_){return a=1,N(q,_)}function N(_,n,t){var o=H(r++,2);if(o.t=_,!o.__c&&(o.__=[t?t(n):q(void 0,n),function(_){var n=o.__N?o.__N[0]:o.__[0],t=o.t(n,_);n!==t&&(o.__N=[t,o.__[1]],o.__c.setState({}))}],o.__c=e,!e.u)){e.u=!0;var u=e.shouldComponentUpdate;e.shouldComponentUpdate=function(_,n,t){if(!o.__c.__H)return!0;var i=o.__c.__H.__.filter((function(_){return _.__c}));if(i.every((function(_){return!_.__N})))return!u||u.call(this,_,n,t);var r=!1;return i.forEach((function(_){if(_.__N){var n=_.__[0];_.__=_.__N,_.__N=void 0,n!==_.__[0]&&(r=!0)}})),!(!r&&o.__c.props===_)&&(!u||u.call(this,_,n,t))}}return o.__N||o.__}function y(_,n){var t=H(r++,4);!i.options.__s&&F(t.__H,n)&&(t.__=_,t.i=n,e.__h.push(t))}function V(_,n){var t=H(r++,7);return F(t.__H,n)?(t.__V=_(),t.i=n,t.__h=_,t.__V):t.__}function b(){for(var _;_=s.shift();)if(_.__P&&_.__H)try{_.__H.__h.forEach(A),_.__H.__h.forEach(D),_.__H.__h=[]}catch(n){_.__H.__h=[],i.options.__e(n,_.__v)}}t.useState=E,t.useReducer=N,t.useEffect=function(_,n){var t=H(r++,3);!i.options.__s&&F(t.__H,n)&&(t.__=_,t.i=n,e.__H.__h.push(t))},t.useLayoutEffect=y,t.useRef=function(_){return a=5,V((function(){return{current:_}}),[])},t.useImperativeHandle=function(_,n,t){a=6,y((function(){return\"function\"==typeof _?(_(n()),function(){return _(null)}):_?(_.current=n(),function(){return _.current=null}):void 0}),null==t?t:t.concat(_))},t.useMemo=V,t.useCallback=function(_,n){return a=8,V((function(){return _}),n)},t.useContext=function(_){var n=e.context[_.__c],t=H(r++,9);return t.c=_,n?(null==t.__&&(t.__=!0,n.sub(e)),n.props.value):_.__},t.useDebugValue=function(_,n){i.options.useDebugValue&&i.options.useDebugValue(n?n(_):_)},t.useErrorBoundary=function(_){var n=H(r++,10),t=E();return n.__=_,e.componentDidCatch||(e.componentDidCatch=function(_,o){n.__&&n.__(_,o),t[1](_)}),[t[0],function(){t[1](void 0)}]},t.useId=function(){var _=H(r++,11);if(!_.__){for(var n=e.__v;null!==n&&!n.__m&&null!==n.__;)n=n.__;var t=n.__m||(n.__m=[0,0]);_.__=\"P\"+t[0]+\"-\"+t[1]++}return _.__},i.options.__b=function(_){e=null,p&&p(_)},i.options.__r=function(_){v&&v(_),r=0;var n=(e=_.__c).__H;n&&(c===e?(n.__h=[],e.__h=[],n.__.forEach((function(_){_.__N&&(_.__=_.__N),_.__V=h,_.__N=_.i=void 0}))):(n.__h.forEach(A),n.__h.forEach(D),n.__h=[])),c=e},i.options.diffed=function(_){l&&l(_);var n=_.__c;n&&n.__H&&(n.__H.__h.length&&(1!==s.push(n)&&f===i.options.requestAnimationFrame||((f=i.options.requestAnimationFrame)||C)(b)),n.__H.__.forEach((function(_){_.i&&(_.__H=_.i),_.__V!==h&&(_.__=_.__V),_.i=void 0,_.__V=h}))),c=e=null},i.options.__c=function(_,n){n.some((function(_){try{_.__h.forEach(A),_.__h=_.__h.filter((function(_){return!_.__||D(_)}))}catch(t){n.some((function(_){_.__h&&(_.__h=[])})),n=[],i.options.__e(t,_.__v)}})),m&&m(_,n)},i.options.unmount=function(_){d&&d(_);var n,t=_.__c;t&&t.__H&&(t.__H.__.forEach((function(_){try{A(_)}catch(_){n=_}})),t.__H=void 0,n&&i.options.__e(n,t.__v))};var g=\"function\"==typeof requestAnimationFrame;function C(_){var n,t=function(){clearTimeout(o),g&&cancelAnimationFrame(n),setTimeout(_)},o=setTimeout(t,100);g&&(n=requestAnimationFrame(t))}function A(_){var n=e,t=_.__c;\"function\"==typeof t&&(_.__c=void 0,t()),e=n}function D(_){var n=e;_.__c=_.__(),e=n}function F(_,n){return!_||_.length!==n.length||n.some((function(n,t){return n!==_[t]}))}function q(_,n){return\"function\"==typeof n?n(_):n}}\n//# sourceMappingURL=hooks.module.min.js.map","min_map":"{\"version\":3,\"file\":\"hooks.module.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"preact_1\",\"t\",\"r\",\"u\",\"i\",\"o\",\"f\",\"c\",\"e\",\"options\",\"__b\",\"a\",\"__r\",\"v\",\"diffed\",\"l\",\"__c\",\"m\",\"unmount\",\"d\",\"__h\",\"__H\",\"__\",\"length\",\"push\",\"__V\",\"p\",\"n\",\"y\",\"B\",\"__N\",\"setState\",\"shouldComponentUpdate\",\"filter\",\"every\",\"call\",\"this\",\"forEach\",\"props\",\"s\",\"__s\",\"z\",\"F\",\"b\",\"shift\",\"__P\",\"k\",\"w\",\"__e\",\"__v\",\"useState\",\"useReducer\",\"useEffect\",\"useLayoutEffect\",\"useRef\",\"current\",\"useImperativeHandle\",\"concat\",\"useMemo\",\"useCallback\",\"useContext\",\"context\",\"sub\",\"value\",\"useDebugValue\",\"useErrorBoundary\",\"componentDidCatch\",\"useId\",\"__m\",\"requestAnimationFrame\",\"j\",\"some\",\"g\",\"clearTimeout\",\"cancelAnimationFrame\",\"setTimeout\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/htm/preact/index.module.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"htm/preact/index.module.js","resolution":"ESM","id":"b3f51db71c","hash":"b3f51db71c12eabba61819feb74ace7cadc2744af41866c3fcad2ab960415746","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.html = exports.Component = exports.render = exports.h = void 0;\nconst tslib_1 = require(\"tslib\");\nconst preact_1 = require(\"preact\");\nvar preact_2 = require(\"preact\");\nObject.defineProperty(exports, \"h\", { enumerable: true, get: function () { return preact_2.h; } });\nObject.defineProperty(exports, \"render\", { enumerable: true, get: function () { return preact_2.render; } });\nObject.defineProperty(exports, \"Component\", { enumerable: true, get: function () { return preact_2.Component; } });\nconst htm_1 = tslib_1.__importDefault(require(\"htm\"));\nvar m = htm_1.default.bind(preact_1.h);\nexports.html = m;\n","type":"js","dependency_paths":[["preact","/croot/panel_1706539561184/work/panel/node_modules/preact/dist/preact.module.js"],["htm","/croot/panel_1706539561184/work/panel/node_modules/htm/dist/htm.module.js"]],"dependency_map":[],"exported":[{"type":"bindings","bindings":[[null,"h"],[null,"render"],[null,"Component"]],"module":"preact"}],"externals":[],"shims":[]},"code":{"source":"/* htm/preact/index.module.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    const preact_1 = require(\"1b70f5b1d3\") /* preact */;\n    var preact_2 = require(\"1b70f5b1d3\") /* preact */;\n    __esExport(\"h\", preact_2.h);\n    __esExport(\"render\", preact_2.render);\n    __esExport(\"Component\", preact_2.Component);\n    const htm_1 = tslib_1.__importDefault(require(\"ab33dd3f38\") /* htm */);\n    var m = htm_1.default.bind(preact_1.h);\n    exports.html = m;\n}\n","min_source":"function _(n,t,d,e,b){e();const o=n(\"tslib\"),r=n(\"1b70f5b1d3\");var f=n(\"1b70f5b1d3\");b(\"h\",f.h),b(\"render\",f.render),b(\"Component\",f.Component);var a=o.__importDefault(n(\"ab33dd3f38\")).default.bind(r.h);d.html=a}\n//# sourceMappingURL=index.module.min.js.map","min_map":"{\"version\":3,\"file\":\"index.module.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"tslib_1\",\"preact_1\",\"preact_2\",\"h\",\"render\",\"Component\",\"m\",\"__importDefault\",\"default\",\"bind\",\"html\"],\"sources\":[\"0\"],\"mappings\":\"AAAiC,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAC9ED,IACA,MAAME,EAAUL,EAAQ,SAClBM,EAAWN,EAAQ,cACzB,IAAIO,EAAWP,EAAQ,cACvBI,EAAW,IAAKG,EAASC,GACzBJ,EAAW,SAAUG,EAASE,QAC9BL,EAAW,YAAaG,EAASG,WAEjC,IAAIC,EADUN,EAAQO,gBAAgBZ,EAAQ,eAChCa,QAAQC,KAAKR,EAASE,GACpCN,EAAQa,KAAOJ,CACnB\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/htm/dist/htm.module.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"htm/dist/htm.module.js","resolution":"ESM","id":"ab33dd3f38","hash":"ab33dd3f38059b9be4d5f5350128eefb2356639c4e0bbe9d9e8b3ba75847e9e4","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar n = function (t, s, r, e) { var u; s[0] = 0; for (var h = 1; h < s.length; h++) {\n    var p = s[h++], a = s[h] ? (s[0] |= p ? 1 : 2, r[s[h++]]) : s[++h];\n    3 === p ? e[0] = a : 4 === p ? e[1] = Object.assign(e[1] || {}, a) : 5 === p ? (e[1] = e[1] || {})[s[++h]] = a : 6 === p ? e[1][s[++h]] += a + \"\" : p ? (u = t.apply(a, n(t, a, r, [\"\", null])), e.push(u), a[0] ? s[0] |= 2 : (s[h - 2] = 0, s[h] = u)) : e.push(a);\n} return e; }, t = new Map;\nfunction default_1(s) { var r = t.get(this); return r || (r = new Map, t.set(this, r)), (r = n(this, r.get(s) || (r.set(s, r = function (n) { for (var t, s, r = 1, e = \"\", u = \"\", h = [0], p = function (n) { 1 === r && (n || (e = e.replace(/^\\s*\\n\\s*|\\s*\\n\\s*$/g, \"\"))) ? h.push(0, n, e) : 3 === r && (n || e) ? (h.push(3, n, e), r = 2) : 2 === r && \"...\" === e && n ? h.push(4, n, 0) : 2 === r && e && !n ? h.push(5, 0, !0, e) : r >= 5 && ((e || !n && 5 === r) && (h.push(r, 0, e, s), r = 6), n && (h.push(r, n, 0, s), r = 6)), e = \"\"; }, a = 0; a < n.length; a++) {\n    a && (1 === r && p(), p(a));\n    for (var l = 0; l < n[a].length; l++)\n        t = n[a][l], 1 === r ? \"<\" === t ? (p(), h = [h], r = 3) : e += t : 4 === r ? \"--\" === e && \">\" === t ? (r = 1, e = \"\") : e = t + e[0] : u ? t === u ? u = \"\" : e += t : '\"' === t || \"'\" === t ? u = t : \">\" === t ? (p(), r = 1) : r && (\"=\" === t ? (r = 5, s = e, e = \"\") : \"/\" === t && (r < 5 || \">\" === n[a][l + 1]) ? (p(), 3 === r && (h = h[0]), r = h, (h = h[0]).push(2, 0, r), r = 0) : \" \" === t || \"\\t\" === t || \"\\n\" === t || \"\\r\" === t ? (p(), r = 2) : e += t), 3 === r && \"!--\" === e && (r = 4, h = h[0]);\n} return p(), h; }(s)), r), arguments, [])).length > 1 ? r : r[0]; }\nexports.default = default_1;\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[],"externals":[],"shims":[]},"code":{"source":"/* htm/dist/htm.module.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var n = function (t, s, r, e) {\n        var u;\n        s[0] = 0;\n        for (var h = 1; h < s.length; h++) {\n            var p = s[h++], a = s[h] ? (s[0] |= p ? 1 : 2, r[s[h++]]) : s[++h];\n            3 === p ? e[0] = a : 4 === p ? e[1] = Object.assign(e[1] || {}, a) : 5 === p ? (e[1] = e[1] || {})[s[++h]] = a : 6 === p ? e[1][s[++h]] += a + \"\" : p ? (u = t.apply(a, n(t, a, r, [\"\", null])), e.push(u), a[0] ? s[0] |= 2 : (s[h - 2] = 0, s[h] = u)) : e.push(a);\n        }\n        return e;\n    }, t = new Map;\n    function default_1(s) {\n        var r = t.get(this);\n        return r || (r = new Map, t.set(this, r)), (r = n(this, r.get(s) || (r.set(s, r = function (n) {\n            for (var t, s, r = 1, e = \"\", u = \"\", h = [0], p = function (n) { 1 === r && (n || (e = e.replace(/^\\s*\\n\\s*|\\s*\\n\\s*$/g, \"\"))) ? h.push(0, n, e) : 3 === r && (n || e) ? (h.push(3, n, e), r = 2) : 2 === r && \"...\" === e && n ? h.push(4, n, 0) : 2 === r && e && !n ? h.push(5, 0, !0, e) : r >= 5 && ((e || !n && 5 === r) && (h.push(r, 0, e, s), r = 6), n && (h.push(r, n, 0, s), r = 6)), e = \"\"; }, a = 0; a < n.length; a++) {\n                a && (1 === r && p(), p(a));\n                for (var l = 0; l < n[a].length; l++)\n                    t = n[a][l], 1 === r ? \"<\" === t ? (p(), h = [h], r = 3) : e += t : 4 === r ? \"--\" === e && \">\" === t ? (r = 1, e = \"\") : e = t + e[0] : u ? t === u ? u = \"\" : e += t : '\"' === t || \"'\" === t ? u = t : \">\" === t ? (p(), r = 1) : r && (\"=\" === t ? (r = 5, s = e, e = \"\") : \"/\" === t && (r < 5 || \">\" === n[a][l + 1]) ? (p(), 3 === r && (h = h[0]), r = h, (h = h[0]).push(2, 0, r), r = 0) : \" \" === t || \"\\t\" === t || \"\\n\" === t || \"\\r\" === t ? (p(), r = 2) : e += t), 3 === r && \"!--\" === e && (r = 4, h = h[0]);\n            }\n            return p(), h;\n        }(s)), r), arguments, [])).length > 1 ? r : r[0];\n    }\n    exports.default = default_1;\n}\n","min_source":"function _(n,t,s,u,r){u();var e=function(n,t,s,u){var r;t[0]=0;for(var h=1;h<t.length;h++){var p=t[h++],a=t[h]?(t[0]|=p?1:2,s[t[h++]]):t[++h];3===p?u[0]=a:4===p?u[1]=Object.assign(u[1]||{},a):5===p?(u[1]=u[1]||{})[t[++h]]=a:6===p?u[1][t[++h]]+=a+\"\":p?(r=n.apply(a,e(n,a,s,[\"\",null])),u.push(r),a[0]?t[0]|=2:(t[h-2]=0,t[h]=r)):u.push(a)}return u},h=new Map;s.default=function(n){var t=h.get(this);return t||(t=new Map,h.set(this,t)),(t=e(this,t.get(n)||(t.set(n,t=function(n){for(var t,s,u=1,r=\"\",e=\"\",h=[0],p=function(n){1===u&&(n||(r=r.replace(/^\\s*\\n\\s*|\\s*\\n\\s*$/g,\"\")))?h.push(0,n,r):3===u&&(n||r)?(h.push(3,n,r),u=2):2===u&&\"...\"===r&&n?h.push(4,n,0):2===u&&r&&!n?h.push(5,0,!0,r):u>=5&&((r||!n&&5===u)&&(h.push(u,0,r,s),u=6),n&&(h.push(u,n,0,s),u=6)),r=\"\"},a=0;a<n.length;a++){a&&(1===u&&p(),p(a));for(var f=0;f<n[a].length;f++)t=n[a][f],1===u?\"<\"===t?(p(),h=[h],u=3):r+=t:4===u?\"--\"===r&&\">\"===t?(u=1,r=\"\"):r=t+r[0]:e?t===e?e=\"\":r+=t:'\"'===t||\"'\"===t?e=t:\">\"===t?(p(),u=1):u&&(\"=\"===t?(u=5,s=r,r=\"\"):\"/\"===t&&(u<5||\">\"===n[a][f+1])?(p(),3===u&&(h=h[0]),u=h,(h=h[0]).push(2,0,u),u=0):\" \"===t||\"\\t\"===t||\"\\n\"===t||\"\\r\"===t?(p(),u=2):r+=t),3===u&&\"!--\"===r&&(u=4,h=h[0])}return p(),h}(n)),t),arguments,[])).length>1?t:t[0]}}\n//# sourceMappingURL=htm.module.min.js.map","min_map":"{\"version\":3,\"file\":\"htm.module.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"n\",\"t\",\"s\",\"r\",\"e\",\"u\",\"h\",\"length\",\"p\",\"a\",\"Object\",\"assign\",\"apply\",\"push\",\"Map\",\"default\",\"get\",\"this\",\"set\",\"replace\",\"l\",\"arguments\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/singleselect.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/singleselect.js","canonical":"models/singleselect","resolution":"ESM","id":"665213fba5","hash":"665213fba5d5b9bddfb0e73024586bbbdb24ae122c7e1ebdb454d010b77b02dc","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SingleSelect = exports.SingleSelectView = void 0;\nconst tslib_1 = require(\"tslib\");\nvar _a;\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst types_1 = require(\"@bokehjs/core/util/types\");\nconst input_widget_1 = require(\"@bokehjs/models/widgets/input_widget\");\nconst inputs = tslib_1.__importStar(require(\"@bokehjs/styles/widgets/inputs.css\"));\nclass SingleSelectView extends input_widget_1.InputWidgetView {\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.value.change, () => this.render_selection());\n        this.connect(this.model.properties.options.change, () => this.render());\n        this.connect(this.model.properties.disabled_options.change, () => this.render());\n        this.connect(this.model.properties.size.change, () => this.render());\n        this.connect(this.model.properties.disabled.change, () => this.render());\n    }\n    render() {\n        super.render();\n        const options = this.model.options.map((opt) => {\n            let value, _label;\n            if ((0, types_1.isString)(opt))\n                value = _label = opt;\n            else\n                [value, _label] = opt;\n            let disabled = this.model.disabled_options.includes(value);\n            return (0, dom_1.option)({ value: value, disabled: disabled }, _label);\n        });\n        this.input_el = (0, dom_1.select)({\n            multiple: false,\n            class: inputs.input,\n            name: this.model.name,\n            disabled: this.model.disabled,\n        }, options);\n        this.input_el.style.backgroundImage = 'none';\n        this.input_el.addEventListener(\"change\", () => this.change_input());\n        this.group_el.appendChild(this.input_el);\n        this.render_selection();\n    }\n    render_selection() {\n        const selected = this.model.value;\n        for (const el of this.input_el.querySelectorAll('option'))\n            if (el.value === selected)\n                el.selected = true;\n        // Note that some browser implementations might not reduce\n        // the number of visible options for size <= 3.\n        this.input_el.size = this.model.size;\n    }\n    change_input() {\n        const is_focused = this.el.querySelector('select:focus') != null;\n        let value = null;\n        for (const el of this.shadow_el.querySelectorAll('option')) {\n            if (el.selected) {\n                value = el.value;\n                break;\n            }\n        }\n        this.model.value = value;\n        super.change_input();\n        // Restore focus back to the <select> afterwards,\n        // so that even if python on_change callback is invoked,\n        // focus remains on <select> and one can seamlessly scroll\n        // up/down.\n        if (is_focused)\n            this.input_el.focus();\n    }\n}\nexports.SingleSelectView = SingleSelectView;\nSingleSelectView.__name__ = \"SingleSelectView\";\nclass SingleSelect extends input_widget_1.InputWidget {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.SingleSelect = SingleSelect;\n_a = SingleSelect;\nSingleSelect.__name__ = \"SingleSelect\";\nSingleSelect.__module__ = \"panel.models.widgets\";\n(() => {\n    _a.prototype.default_view = SingleSelectView;\n    _a.define(({ Any, Array, Int, Nullable, String }) => ({\n        disabled_options: [Array(String), []],\n        options: [Array(Any), []],\n        size: [Int, 4],\n        value: [Nullable(String), null],\n    }));\n})();\n//# sourceMappingURL=singleselect.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"SingleSelectView"},{"type":"named","name":"SingleSelect"}],"externals":[],"shims":[]},"code":{"source":"/* models/singleselect.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    var _a;\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const types_1 = require(\"@bokehjs/core/util/types\");\n    const input_widget_1 = require(\"@bokehjs/models/widgets/input_widget\");\n    const inputs = tslib_1.__importStar(require(\"@bokehjs/styles/widgets/inputs.css\"));\n    class SingleSelectView extends input_widget_1.InputWidgetView {\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.value.change, () => this.render_selection());\n            this.connect(this.model.properties.options.change, () => this.render());\n            this.connect(this.model.properties.disabled_options.change, () => this.render());\n            this.connect(this.model.properties.size.change, () => this.render());\n            this.connect(this.model.properties.disabled.change, () => this.render());\n        }\n        render() {\n            super.render();\n            const options = this.model.options.map((opt) => {\n                let value, _label;\n                if ((0, types_1.isString)(opt))\n                    value = _label = opt;\n                else\n                    [value, _label] = opt;\n                let disabled = this.model.disabled_options.includes(value);\n                return (0, dom_1.option)({ value: value, disabled: disabled }, _label);\n            });\n            this.input_el = (0, dom_1.select)({\n                multiple: false,\n                class: inputs.input,\n                name: this.model.name,\n                disabled: this.model.disabled,\n            }, options);\n            this.input_el.style.backgroundImage = 'none';\n            this.input_el.addEventListener(\"change\", () => this.change_input());\n            this.group_el.appendChild(this.input_el);\n            this.render_selection();\n        }\n        render_selection() {\n            const selected = this.model.value;\n            for (const el of this.input_el.querySelectorAll('option'))\n                if (el.value === selected)\n                    el.selected = true;\n            // Note that some browser implementations might not reduce\n            // the number of visible options for size <= 3.\n            this.input_el.size = this.model.size;\n        }\n        change_input() {\n            const is_focused = this.el.querySelector('select:focus') != null;\n            let value = null;\n            for (const el of this.shadow_el.querySelectorAll('option')) {\n                if (el.selected) {\n                    value = el.value;\n                    break;\n                }\n            }\n            this.model.value = value;\n            super.change_input();\n            // Restore focus back to the <select> afterwards,\n            // so that even if python on_change callback is invoked,\n            // focus remains on <select> and one can seamlessly scroll\n            // up/down.\n            if (is_focused)\n                this.input_el.focus();\n        }\n    }\n    exports.SingleSelectView = SingleSelectView;\n    SingleSelectView.__name__ = \"SingleSelectView\";\n    class SingleSelect extends input_widget_1.InputWidget {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.SingleSelect = SingleSelect;\n    _a = SingleSelect;\n    SingleSelect.__name__ = \"SingleSelect\";\n    SingleSelect.__module__ = \"panel.models.widgets\";\n    (() => {\n        _a.prototype.default_view = SingleSelectView;\n        _a.define(({ Any, Array, Int, Nullable, String }) => ({\n            disabled_options: [Array(String), []],\n            options: [Array(Any), []],\n            size: [Int, 4],\n            value: [Nullable(String), null],\n        }));\n    })();\n}\n","min_source":"function _(e,t,s,i,n){i();const l=e(\"tslib\");var o;const d=e(\"@bokehjs/core/dom\"),r=e(\"@bokehjs/core/util/types\"),c=e(\"@bokehjs/models/widgets/input_widget\"),h=l.__importStar(e(\"@bokehjs/styles/widgets/inputs.css\"));class p extends c.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.value.change,(()=>this.render_selection())),this.connect(this.model.properties.options.change,(()=>this.render())),this.connect(this.model.properties.disabled_options.change,(()=>this.render())),this.connect(this.model.properties.size.change,(()=>this.render())),this.connect(this.model.properties.disabled.change,(()=>this.render()))}render(){super.render();const e=this.model.options.map((e=>{let t,s;(0,r.isString)(e)?t=s=e:[t,s]=e;let i=this.model.disabled_options.includes(t);return(0,d.option)({value:t,disabled:i},s)}));this.input_el=(0,d.select)({multiple:!1,class:h.input,name:this.model.name,disabled:this.model.disabled},e),this.input_el.style.backgroundImage=\"none\",this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.group_el.appendChild(this.input_el),this.render_selection()}render_selection(){const e=this.model.value;for(const t of this.input_el.querySelectorAll(\"option\"))t.value===e&&(t.selected=!0);this.input_el.size=this.model.size}change_input(){const e=null!=this.el.querySelector(\"select:focus\");let t=null;for(const e of this.shadow_el.querySelectorAll(\"option\"))if(e.selected){t=e.value;break}this.model.value=t,super.change_input(),e&&this.input_el.focus()}}s.SingleSelectView=p,p.__name__=\"SingleSelectView\";class a extends c.InputWidget{constructor(e){super(e)}}s.SingleSelect=a,o=a,a.__name__=\"SingleSelect\",a.__module__=\"panel.models.widgets\",o.prototype.default_view=p,o.define((({Any:e,Array:t,Int:s,Nullable:i,String:n})=>({disabled_options:[t(n),[]],options:[t(e),[]],size:[s,4],value:[i(n),null]})))}\n//# sourceMappingURL=singleselect.min.js.map","min_map":"{\"version\":3,\"file\":\"singleselect.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"tslib_1\",\"_a\",\"dom_1\",\"types_1\",\"input_widget_1\",\"inputs\",\"__importStar\",\"SingleSelectView\",\"InputWidgetView\",\"connect_signals\",\"super\",\"this\",\"connect\",\"model\",\"properties\",\"value\",\"change\",\"render_selection\",\"options\",\"render\",\"disabled_options\",\"size\",\"disabled\",\"map\",\"opt\",\"_label\",\"isString\",\"includes\",\"option\",\"input_el\",\"select\",\"multiple\",\"class\",\"input\",\"name\",\"style\",\"backgroundImage\",\"addEventListener\",\"change_input\",\"group_el\",\"appendChild\",\"selected\",\"el\",\"querySelectorAll\",\"is_focused\",\"querySelector\",\"shadow_el\",\"focus\",\"__name__\",\"SingleSelect\",\"InputWidget\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Any\",\"Array\",\"Int\",\"Nullable\",\"String\"],\"sources\":[\"0\"],\"mappings\":\"AAA6B,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAC1ED,IACA,MAAME,EAAUL,EAAQ,SACxB,IAAIM,EACJ,MAAMC,EAAQP,EAAQ,qBAChBQ,EAAUR,EAAQ,4BAClBS,EAAiBT,EAAQ,wCACzBU,EAASL,EAAQM,aAAaX,EAAQ,uCAC5C,MAAMY,UAAyBH,EAAeI,gBAC1C,eAAAC,GACIC,MAAMD,kBACNE,KAAKC,QAAQD,KAAKE,MAAMC,WAAWC,MAAMC,QAAQ,IAAML,KAAKM,qBAC5DN,KAAKC,QAAQD,KAAKE,MAAMC,WAAWI,QAAQF,QAAQ,IAAML,KAAKQ,WAC9DR,KAAKC,QAAQD,KAAKE,MAAMC,WAAWM,iBAAiBJ,QAAQ,IAAML,KAAKQ,WACvER,KAAKC,QAAQD,KAAKE,MAAMC,WAAWO,KAAKL,QAAQ,IAAML,KAAKQ,WAC3DR,KAAKC,QAAQD,KAAKE,MAAMC,WAAWQ,SAASN,QAAQ,IAAML,KAAKQ,UACnE,CACA,MAAAA,GACIT,MAAMS,SACN,MAAMD,EAAUP,KAAKE,MAAMK,QAAQK,KAAKC,IACpC,IAAIT,EAAOU,GACP,EAAItB,EAAQuB,UAAUF,GACtBT,EAAQU,EAASD,GAEhBT,EAAOU,GAAUD,EACtB,IAAIF,EAAWX,KAAKE,MAAMO,iBAAiBO,SAASZ,GACpD,OAAO,EAAIb,EAAM0B,QAAQ,CAAEb,MAAOA,EAAOO,SAAUA,GAAYG,EAAO,IAE1Ed,KAAKkB,UAAW,EAAI3B,EAAM4B,QAAQ,CAC9BC,UAAU,EACVC,MAAO3B,EAAO4B,MACdC,KAAMvB,KAAKE,MAAMqB,KACjBZ,SAAUX,KAAKE,MAAMS,UACtBJ,GACHP,KAAKkB,SAASM,MAAMC,gBAAkB,OACtCzB,KAAKkB,SAASQ,iBAAiB,UAAU,IAAM1B,KAAK2B,iBACpD3B,KAAK4B,SAASC,YAAY7B,KAAKkB,UAC/BlB,KAAKM,kBACT,CACA,gBAAAA,GACI,MAAMwB,EAAW9B,KAAKE,MAAME,MAC5B,IAAK,MAAM2B,KAAM/B,KAAKkB,SAASc,iBAAiB,UACxCD,EAAG3B,QAAU0B,IACbC,EAAGD,UAAW,GAGtB9B,KAAKkB,SAASR,KAAOV,KAAKE,MAAMQ,IACpC,CACA,YAAAiB,GACI,MAAMM,EAAsD,MAAzCjC,KAAK+B,GAAGG,cAAc,gBACzC,IAAI9B,EAAQ,KACZ,IAAK,MAAM2B,KAAM/B,KAAKmC,UAAUH,iBAAiB,UAC7C,GAAID,EAAGD,SAAU,CACb1B,EAAQ2B,EAAG3B,MACX,KACJ,CAEJJ,KAAKE,MAAME,MAAQA,EACnBL,MAAM4B,eAKFM,GACAjC,KAAKkB,SAASkB,OACtB,EAEJlD,EAAQU,iBAAmBA,EAC3BA,EAAiByC,SAAW,mBAC5B,MAAMC,UAAqB7C,EAAe8C,YACtC,WAAAC,CAAYC,GACR1C,MAAM0C,EACV,EAEJvD,EAAQoD,aAAeA,EACvBhD,EAAKgD,EACLA,EAAaD,SAAW,eACxBC,EAAaI,WAAa,uBAEtBpD,EAAGqD,UAAUC,aAAehD,EAC5BN,EAAGuD,QAAO,EAAGC,MAAKC,QAAOC,MAAKC,WAAUC,aAAa,CACjDzC,iBAAkB,CAACsC,EAAMG,GAAS,IAClC3C,QAAS,CAACwC,EAAMD,GAAM,IACtBpC,KAAM,CAACsC,EAAK,GACZ5C,MAAO,CAAC6C,EAASC,GAAS,SAGtC\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/speech_to_text.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/speech_to_text.js","canonical":"models/speech_to_text","resolution":"ESM","id":"7651136c44","hash":"7651136c44c5392d4784e8d26e6d3e9335527d4d3e29702c5d139574cfeaa52a","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpeechToText = exports.SpeechToTextView = void 0;\nvar _a;\nconst layout_1 = require(\"./layout\");\nconst iconStarted = `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"22px\" style=\"vertical-align: middle;\" fill=\"currentColor\" class=\"bi bi-mic\" viewBox=\"0 0 16 16\">\n  <path fill-rule=\"evenodd\" d=\"M3.5 6.5A.5.5 0 0 1 4 7v1a4 4 0 0 0 8 0V7a.5.5 0 0 1 1 0v1a5 5 0 0 1-4.5 4.975V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 .5-.5z\"/>\n  <path fill-rule=\"evenodd\" d=\"M10 8V3a2 2 0 1 0-4 0v5a2 2 0 1 0 4 0zM8 0a3 3 0 0 0-3 3v5a3 3 0 0 0 6 0V3a3 3 0 0 0-3-3z\"/>\n</svg>`;\nconst iconNotStarted = `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"22px\" style=\"vertical-align: middle;\" fill=\"currentColor\" class=\"bi bi-mic-mute\" viewBox=\"0 0 16 16\">\n<path fill-rule=\"evenodd\" d=\"M12.734 9.613A4.995 4.995 0 0 0 13 8V7a.5.5 0 0 0-1 0v1c0 .274-.027.54-.08.799l.814.814zm-2.522 1.72A4 4 0 0 1 4 8V7a.5.5 0 0 0-1 0v1a5 5 0 0 0 4.5 4.975V15h-3a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1h-3v-2.025a4.973 4.973 0 0 0 2.43-.923l-.718-.719zM11 7.88V3a3 3 0 0 0-5.842-.963l.845.845A2 2 0 0 1 10 3v3.879l1 1zM8.738 9.86l.748.748A3 3 0 0 1 5 8V6.121l1 1V8a2 2 0 0 0 2.738 1.86zm4.908 3.494l-12-12 .708-.708 12 12-.708.707z\"/>\n</svg>`;\nconst titleStarted = \"Click to STOP the speech recognition.\";\nconst titleNotStarted = \"Click to START the speech recognition.\";\nconst { webkitSpeechRecognition } = window;\nconst { webkitSpeechGrammarList } = window;\nfunction htmlToElement(html) {\n    var template = document.createElement('template');\n    html = html.trim(); // Never return a text node of whitespace as the result\n    template.innerHTML = html;\n    return template.content.firstChild;\n}\nfunction deserializeGrammars(grammars) {\n    if (grammars) {\n        var speechRecognitionList = new webkitSpeechGrammarList();\n        for (let grammar of grammars) {\n            if (grammar.src)\n                speechRecognitionList.addFromString(grammar.src, grammar.weight);\n            else if (grammar.uri)\n                speechRecognitionList.addFromURI(grammar.uri, grammar.weight);\n        }\n        return speechRecognitionList;\n    }\n    else\n        return null;\n}\nfunction round(value) {\n    return Math.round((value + Number.EPSILON) * 100) / 100;\n}\nfunction serializeResults(results_) {\n    const results = [];\n    for (let result of results_) {\n        let alternatives = [];\n        let item = { is_final: result.isFinal, alternatives: alternatives };\n        for (let i = 0; i < result.length; i++) {\n            let alternative = {\n                confidence: round(result[i].confidence),\n                transcript: result[i].transcript\n            };\n            alternatives.push(alternative);\n        }\n        item.alternatives = alternatives;\n        results.push(item);\n    }\n    return results;\n}\nclass SpeechToTextView extends layout_1.HTMLBoxView {\n    initialize() {\n        super.initialize();\n        this.recognition = new webkitSpeechRecognition();\n        this.recognition.lang = this.model.lang;\n        this.recognition.continuous = this.model.continuous;\n        this.recognition.interimResults = this.model.interim_results;\n        this.recognition.maxAlternatives = this.model.max_alternatives;\n        this.recognition.serviceURI = this.model.service_uri;\n        this.setGrammars();\n        this.recognition.onresult = (event) => {\n            this.model.results = serializeResults(event.results);\n        };\n        this.recognition.onerror = (event) => {\n            console.log(\"SpeechToText Error\");\n            console.log(event);\n        };\n        this.recognition.onnomatch = (event) => {\n            console.log(\"SpeechToText No Match\");\n            console.log(event);\n        };\n        this.recognition.onaudiostart = () => this.model.audio_started = true;\n        this.recognition.onaudioend = () => this.model.audio_started = false;\n        this.recognition.onsoundstart = () => this.model.sound_started = true;\n        this.recognition.onsoundend = () => this.model.sound_started = false;\n        this.recognition.onspeechstart = () => this.model.speech_started = true;\n        this.recognition.onspeechend = () => this.model.speech_started = false;\n        this.recognition.onstart = () => {\n            this.buttonEl.onclick = () => { this.recognition.stop(); };\n            this.buttonEl.innerHTML = this.iconStarted();\n            this.buttonEl.setAttribute(\"title\", titleStarted);\n            this.model.started = true;\n        };\n        this.recognition.onend = () => {\n            this.buttonEl.onclick = () => { this.recognition.start(); };\n            this.buttonEl.innerHTML = this.iconNotStarted();\n            this.buttonEl.setAttribute(\"title\", titleNotStarted);\n            this.model.started = false;\n        };\n        this.buttonEl = htmlToElement(`<button class=\"bk bk-btn bk-btn-${this.model.button_type}\" type=\"button\" title=\"${titleNotStarted}\"></button>`);\n        this.buttonEl.innerHTML = this.iconNotStarted();\n        this.buttonEl.onclick = () => this.recognition.start();\n    }\n    iconStarted() {\n        if (this.model.button_started !== '')\n            return this.model.button_started;\n        else\n            return iconStarted;\n    }\n    iconNotStarted() {\n        if (this.model.button_not_started !== '')\n            return this.model.button_not_started;\n        else\n            return iconNotStarted;\n    }\n    setIcon() {\n        if (this.model.started)\n            this.buttonEl.innerHTML = this.iconStarted();\n        else\n            this.buttonEl.innerHTML = this.iconNotStarted();\n    }\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.start.change, () => {\n            this.model.start = false;\n            this.recognition.start();\n        });\n        this.connect(this.model.properties.stop.change, () => {\n            this.model.stop = false;\n            this.recognition.stop();\n        });\n        this.connect(this.model.properties.abort.change, () => {\n            this.model.abort = false;\n            this.recognition.abort();\n        });\n        this.connect(this.model.properties.grammars.change, () => this.setGrammars());\n        this.connect(this.model.properties.lang.change, () => this.recognition.lang = this.model.lang);\n        this.connect(this.model.properties.continuous.change, () => this.recognition.continuous = this.model.continuous);\n        this.connect(this.model.properties.interim_results.change, () => this.recognition.interimResults = this.model.interim_results);\n        this.connect(this.model.properties.max_alternatives.change, () => this.recognition.maxAlternatives = this.model.max_alternatives);\n        this.connect(this.model.properties.service_uri.change, () => this.recognition.serviceURI = this.model.service_uri);\n        this.connect(this.model.properties.button_type.change, () => this.buttonEl.className = `bk bk-btn bk-btn-${this.model.button_type}`);\n        this.connect(this.model.properties.button_hide.change, () => this.render());\n        const { button_not_started, button_started } = this.model.properties;\n        this.on_change([button_not_started, button_started], () => this.setIcon());\n    }\n    setGrammars() {\n        this.recognition.grammars = deserializeGrammars(this.model.grammars);\n    }\n    render() {\n        super.render();\n        if (!this.model.button_hide)\n            this.shadow_el.appendChild(this.buttonEl);\n    }\n}\nexports.SpeechToTextView = SpeechToTextView;\nSpeechToTextView.__name__ = \"SpeechToTextView\";\nclass SpeechToText extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.SpeechToText = SpeechToText;\n_a = SpeechToText;\nSpeechToText.__name__ = \"SpeechToText\";\nSpeechToText.__module__ = \"panel.models.speech_to_text\";\n(() => {\n    _a.prototype.default_view = SpeechToTextView;\n    _a.define(({ Any, Array, Boolean, Number, String }) => ({\n        start: [Boolean, false],\n        stop: [Boolean, false],\n        abort: [Boolean, false],\n        grammars: [Array(Any), []],\n        lang: [String, ''],\n        continuous: [Boolean, false],\n        interim_results: [Boolean, false],\n        max_alternatives: [Number, 1],\n        service_uri: [String, ''],\n        started: [Boolean, false],\n        audio_started: [Boolean, false],\n        sound_started: [Boolean, false],\n        speech_started: [Boolean, false],\n        button_type: [String, 'light'],\n        button_hide: [Boolean, false],\n        button_not_started: [String, ''],\n        button_started: [String, ''],\n        results: [Array(Any), []],\n    }));\n})();\n//# sourceMappingURL=speech_to_text.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"SpeechToTextView"},{"type":"named","name":"SpeechToText"}],"externals":[],"shims":[]},"code":{"source":"/* models/speech_to_text.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    const iconStarted = `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"22px\" style=\"vertical-align: middle;\" fill=\"currentColor\" class=\"bi bi-mic\" viewBox=\"0 0 16 16\">\n  <path fill-rule=\"evenodd\" d=\"M3.5 6.5A.5.5 0 0 1 4 7v1a4 4 0 0 0 8 0V7a.5.5 0 0 1 1 0v1a5 5 0 0 1-4.5 4.975V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 .5-.5z\"/>\n  <path fill-rule=\"evenodd\" d=\"M10 8V3a2 2 0 1 0-4 0v5a2 2 0 1 0 4 0zM8 0a3 3 0 0 0-3 3v5a3 3 0 0 0 6 0V3a3 3 0 0 0-3-3z\"/>\n</svg>`;\n    const iconNotStarted = `<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"22px\" style=\"vertical-align: middle;\" fill=\"currentColor\" class=\"bi bi-mic-mute\" viewBox=\"0 0 16 16\">\n<path fill-rule=\"evenodd\" d=\"M12.734 9.613A4.995 4.995 0 0 0 13 8V7a.5.5 0 0 0-1 0v1c0 .274-.027.54-.08.799l.814.814zm-2.522 1.72A4 4 0 0 1 4 8V7a.5.5 0 0 0-1 0v1a5 5 0 0 0 4.5 4.975V15h-3a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1h-3v-2.025a4.973 4.973 0 0 0 2.43-.923l-.718-.719zM11 7.88V3a3 3 0 0 0-5.842-.963l.845.845A2 2 0 0 1 10 3v3.879l1 1zM8.738 9.86l.748.748A3 3 0 0 1 5 8V6.121l1 1V8a2 2 0 0 0 2.738 1.86zm4.908 3.494l-12-12 .708-.708 12 12-.708.707z\"/>\n</svg>`;\n    const titleStarted = \"Click to STOP the speech recognition.\";\n    const titleNotStarted = \"Click to START the speech recognition.\";\n    const { webkitSpeechRecognition } = window;\n    const { webkitSpeechGrammarList } = window;\n    function htmlToElement(html) {\n        var template = document.createElement('template');\n        html = html.trim(); // Never return a text node of whitespace as the result\n        template.innerHTML = html;\n        return template.content.firstChild;\n    }\n    function deserializeGrammars(grammars) {\n        if (grammars) {\n            var speechRecognitionList = new webkitSpeechGrammarList();\n            for (let grammar of grammars) {\n                if (grammar.src)\n                    speechRecognitionList.addFromString(grammar.src, grammar.weight);\n                else if (grammar.uri)\n                    speechRecognitionList.addFromURI(grammar.uri, grammar.weight);\n            }\n            return speechRecognitionList;\n        }\n        else\n            return null;\n    }\n    function round(value) {\n        return Math.round((value + Number.EPSILON) * 100) / 100;\n    }\n    function serializeResults(results_) {\n        const results = [];\n        for (let result of results_) {\n            let alternatives = [];\n            let item = { is_final: result.isFinal, alternatives: alternatives };\n            for (let i = 0; i < result.length; i++) {\n                let alternative = {\n                    confidence: round(result[i].confidence),\n                    transcript: result[i].transcript\n                };\n                alternatives.push(alternative);\n            }\n            item.alternatives = alternatives;\n            results.push(item);\n        }\n        return results;\n    }\n    class SpeechToTextView extends layout_1.HTMLBoxView {\n        initialize() {\n            super.initialize();\n            this.recognition = new webkitSpeechRecognition();\n            this.recognition.lang = this.model.lang;\n            this.recognition.continuous = this.model.continuous;\n            this.recognition.interimResults = this.model.interim_results;\n            this.recognition.maxAlternatives = this.model.max_alternatives;\n            this.recognition.serviceURI = this.model.service_uri;\n            this.setGrammars();\n            this.recognition.onresult = (event) => {\n                this.model.results = serializeResults(event.results);\n            };\n            this.recognition.onerror = (event) => {\n                console.log(\"SpeechToText Error\");\n                console.log(event);\n            };\n            this.recognition.onnomatch = (event) => {\n                console.log(\"SpeechToText No Match\");\n                console.log(event);\n            };\n            this.recognition.onaudiostart = () => this.model.audio_started = true;\n            this.recognition.onaudioend = () => this.model.audio_started = false;\n            this.recognition.onsoundstart = () => this.model.sound_started = true;\n            this.recognition.onsoundend = () => this.model.sound_started = false;\n            this.recognition.onspeechstart = () => this.model.speech_started = true;\n            this.recognition.onspeechend = () => this.model.speech_started = false;\n            this.recognition.onstart = () => {\n                this.buttonEl.onclick = () => { this.recognition.stop(); };\n                this.buttonEl.innerHTML = this.iconStarted();\n                this.buttonEl.setAttribute(\"title\", titleStarted);\n                this.model.started = true;\n            };\n            this.recognition.onend = () => {\n                this.buttonEl.onclick = () => { this.recognition.start(); };\n                this.buttonEl.innerHTML = this.iconNotStarted();\n                this.buttonEl.setAttribute(\"title\", titleNotStarted);\n                this.model.started = false;\n            };\n            this.buttonEl = htmlToElement(`<button class=\"bk bk-btn bk-btn-${this.model.button_type}\" type=\"button\" title=\"${titleNotStarted}\"></button>`);\n            this.buttonEl.innerHTML = this.iconNotStarted();\n            this.buttonEl.onclick = () => this.recognition.start();\n        }\n        iconStarted() {\n            if (this.model.button_started !== '')\n                return this.model.button_started;\n            else\n                return iconStarted;\n        }\n        iconNotStarted() {\n            if (this.model.button_not_started !== '')\n                return this.model.button_not_started;\n            else\n                return iconNotStarted;\n        }\n        setIcon() {\n            if (this.model.started)\n                this.buttonEl.innerHTML = this.iconStarted();\n            else\n                this.buttonEl.innerHTML = this.iconNotStarted();\n        }\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.start.change, () => {\n                this.model.start = false;\n                this.recognition.start();\n            });\n            this.connect(this.model.properties.stop.change, () => {\n                this.model.stop = false;\n                this.recognition.stop();\n            });\n            this.connect(this.model.properties.abort.change, () => {\n                this.model.abort = false;\n                this.recognition.abort();\n            });\n            this.connect(this.model.properties.grammars.change, () => this.setGrammars());\n            this.connect(this.model.properties.lang.change, () => this.recognition.lang = this.model.lang);\n            this.connect(this.model.properties.continuous.change, () => this.recognition.continuous = this.model.continuous);\n            this.connect(this.model.properties.interim_results.change, () => this.recognition.interimResults = this.model.interim_results);\n            this.connect(this.model.properties.max_alternatives.change, () => this.recognition.maxAlternatives = this.model.max_alternatives);\n            this.connect(this.model.properties.service_uri.change, () => this.recognition.serviceURI = this.model.service_uri);\n            this.connect(this.model.properties.button_type.change, () => this.buttonEl.className = `bk bk-btn bk-btn-${this.model.button_type}`);\n            this.connect(this.model.properties.button_hide.change, () => this.render());\n            const { button_not_started, button_started } = this.model.properties;\n            this.on_change([button_not_started, button_started], () => this.setIcon());\n        }\n        setGrammars() {\n            this.recognition.grammars = deserializeGrammars(this.model.grammars);\n        }\n        render() {\n            super.render();\n            if (!this.model.button_hide)\n                this.shadow_el.appendChild(this.buttonEl);\n        }\n    }\n    exports.SpeechToTextView = SpeechToTextView;\n    SpeechToTextView.__name__ = \"SpeechToTextView\";\n    class SpeechToText extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.SpeechToText = SpeechToText;\n    _a = SpeechToText;\n    SpeechToText.__name__ = \"SpeechToText\";\n    SpeechToText.__module__ = \"panel.models.speech_to_text\";\n    (() => {\n        _a.prototype.default_view = SpeechToTextView;\n        _a.define(({ Any, Array, Boolean, Number, String }) => ({\n            start: [Boolean, false],\n            stop: [Boolean, false],\n            abort: [Boolean, false],\n            grammars: [Array(Any), []],\n            lang: [String, ''],\n            continuous: [Boolean, false],\n            interim_results: [Boolean, false],\n            max_alternatives: [Number, 1],\n            service_uri: [String, ''],\n            started: [Boolean, false],\n            audio_started: [Boolean, false],\n            sound_started: [Boolean, false],\n            speech_started: [Boolean, false],\n            button_type: [String, 'light'],\n            button_hide: [Boolean, false],\n            button_not_started: [String, ''],\n            button_started: [String, ''],\n            results: [Array(Any), []],\n        }));\n    })();\n}\n","min_source":"function _(t,e,i,o,n){var s;o();const r=t(\"cac5f3ed28\"),h=\"Click to START the speech recognition.\",{webkitSpeechRecognition:a}=window,{webkitSpeechGrammarList:l}=window;class c extends r.HTMLBoxView{initialize(){var t,e;super.initialize(),this.recognition=new a,this.recognition.lang=this.model.lang,this.recognition.continuous=this.model.continuous,this.recognition.interimResults=this.model.interim_results,this.recognition.maxAlternatives=this.model.max_alternatives,this.recognition.serviceURI=this.model.service_uri,this.setGrammars(),this.recognition.onresult=t=>{this.model.results=function(t){const e=[];for(let o of t){let t=[],n={is_final:o.isFinal,alternatives:t};for(let e=0;e<o.length;e++){let n={confidence:(i=o[e].confidence,Math.round(100*(i+Number.EPSILON))/100),transcript:o[e].transcript};t.push(n)}n.alternatives=t,e.push(n)}var i;return e}(t.results)},this.recognition.onerror=t=>{console.log(\"SpeechToText Error\"),console.log(t)},this.recognition.onnomatch=t=>{console.log(\"SpeechToText No Match\"),console.log(t)},this.recognition.onaudiostart=()=>this.model.audio_started=!0,this.recognition.onaudioend=()=>this.model.audio_started=!1,this.recognition.onsoundstart=()=>this.model.sound_started=!0,this.recognition.onsoundend=()=>this.model.sound_started=!1,this.recognition.onspeechstart=()=>this.model.speech_started=!0,this.recognition.onspeechend=()=>this.model.speech_started=!1,this.recognition.onstart=()=>{this.buttonEl.onclick=()=>{this.recognition.stop()},this.buttonEl.innerHTML=this.iconStarted(),this.buttonEl.setAttribute(\"title\",\"Click to STOP the speech recognition.\"),this.model.started=!0},this.recognition.onend=()=>{this.buttonEl.onclick=()=>{this.recognition.start()},this.buttonEl.innerHTML=this.iconNotStarted(),this.buttonEl.setAttribute(\"title\",h),this.model.started=!1},this.buttonEl=(t=`<button class=\"bk bk-btn bk-btn-${this.model.button_type}\" type=\"button\" title=\"${h}\"></button>`,e=document.createElement(\"template\"),t=t.trim(),e.innerHTML=t,e.content.firstChild),this.buttonEl.innerHTML=this.iconNotStarted(),this.buttonEl.onclick=()=>this.recognition.start()}iconStarted(){return\"\"!==this.model.button_started?this.model.button_started:'<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"22px\" style=\"vertical-align: middle;\" fill=\"currentColor\" class=\"bi bi-mic\" viewBox=\"0 0 16 16\">\\n  <path fill-rule=\"evenodd\" d=\"M3.5 6.5A.5.5 0 0 1 4 7v1a4 4 0 0 0 8 0V7a.5.5 0 0 1 1 0v1a5 5 0 0 1-4.5 4.975V15h3a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1h3v-2.025A5 5 0 0 1 3 8V7a.5.5 0 0 1 .5-.5z\"/>\\n  <path fill-rule=\"evenodd\" d=\"M10 8V3a2 2 0 1 0-4 0v5a2 2 0 1 0 4 0zM8 0a3 3 0 0 0-3 3v5a3 3 0 0 0 6 0V3a3 3 0 0 0-3-3z\"/>\\n</svg>'}iconNotStarted(){return\"\"!==this.model.button_not_started?this.model.button_not_started:'<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"22px\" style=\"vertical-align: middle;\" fill=\"currentColor\" class=\"bi bi-mic-mute\" viewBox=\"0 0 16 16\">\\n<path fill-rule=\"evenodd\" d=\"M12.734 9.613A4.995 4.995 0 0 0 13 8V7a.5.5 0 0 0-1 0v1c0 .274-.027.54-.08.799l.814.814zm-2.522 1.72A4 4 0 0 1 4 8V7a.5.5 0 0 0-1 0v1a5 5 0 0 0 4.5 4.975V15h-3a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1h-3v-2.025a4.973 4.973 0 0 0 2.43-.923l-.718-.719zM11 7.88V3a3 3 0 0 0-5.842-.963l.845.845A2 2 0 0 1 10 3v3.879l1 1zM8.738 9.86l.748.748A3 3 0 0 1 5 8V6.121l1 1V8a2 2 0 0 0 2.738 1.86zm4.908 3.494l-12-12 .708-.708 12 12-.708.707z\"/>\\n</svg>'}setIcon(){this.model.started?this.buttonEl.innerHTML=this.iconStarted():this.buttonEl.innerHTML=this.iconNotStarted()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.start.change,(()=>{this.model.start=!1,this.recognition.start()})),this.connect(this.model.properties.stop.change,(()=>{this.model.stop=!1,this.recognition.stop()})),this.connect(this.model.properties.abort.change,(()=>{this.model.abort=!1,this.recognition.abort()})),this.connect(this.model.properties.grammars.change,(()=>this.setGrammars())),this.connect(this.model.properties.lang.change,(()=>this.recognition.lang=this.model.lang)),this.connect(this.model.properties.continuous.change,(()=>this.recognition.continuous=this.model.continuous)),this.connect(this.model.properties.interim_results.change,(()=>this.recognition.interimResults=this.model.interim_results)),this.connect(this.model.properties.max_alternatives.change,(()=>this.recognition.maxAlternatives=this.model.max_alternatives)),this.connect(this.model.properties.service_uri.change,(()=>this.recognition.serviceURI=this.model.service_uri)),this.connect(this.model.properties.button_type.change,(()=>this.buttonEl.className=`bk bk-btn bk-btn-${this.model.button_type}`)),this.connect(this.model.properties.button_hide.change,(()=>this.render()));const{button_not_started:t,button_started:e}=this.model.properties;this.on_change([t,e],(()=>this.setIcon()))}setGrammars(){this.recognition.grammars=function(t){if(t){var e=new l;for(let i of t)i.src?e.addFromString(i.src,i.weight):i.uri&&e.addFromURI(i.uri,i.weight);return e}return null}(this.model.grammars)}render(){super.render(),this.model.button_hide||this.shadow_el.appendChild(this.buttonEl)}}i.SpeechToTextView=c,c.__name__=\"SpeechToTextView\";class d extends r.HTMLBox{constructor(t){super(t)}}i.SpeechToText=d,s=d,d.__name__=\"SpeechToText\",d.__module__=\"panel.models.speech_to_text\",s.prototype.default_view=c,s.define((({Any:t,Array:e,Boolean:i,Number:o,String:n})=>({start:[i,!1],stop:[i,!1],abort:[i,!1],grammars:[e(t),[]],lang:[n,\"\"],continuous:[i,!1],interim_results:[i,!1],max_alternatives:[o,1],service_uri:[n,\"\"],started:[i,!1],audio_started:[i,!1],sound_started:[i,!1],speech_started:[i,!1],button_type:[n,\"light\"],button_hide:[i,!1],button_not_started:[n,\"\"],button_started:[n,\"\"],results:[e(t),[]]})))}\n//# sourceMappingURL=speech_to_text.min.js.map","min_map":"{\"version\":3,\"file\":\"speech_to_text.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"layout_1\",\"titleNotStarted\",\"webkitSpeechRecognition\",\"window\",\"webkitSpeechGrammarList\",\"SpeechToTextView\",\"HTMLBoxView\",\"initialize\",\"html\",\"template\",\"super\",\"this\",\"recognition\",\"lang\",\"model\",\"continuous\",\"interimResults\",\"interim_results\",\"maxAlternatives\",\"max_alternatives\",\"serviceURI\",\"service_uri\",\"setGrammars\",\"onresult\",\"event\",\"results\",\"results_\",\"result\",\"alternatives\",\"item\",\"is_final\",\"isFinal\",\"i\",\"length\",\"alternative\",\"confidence\",\"value\",\"Math\",\"round\",\"Number\",\"EPSILON\",\"transcript\",\"push\",\"serializeResults\",\"onerror\",\"console\",\"log\",\"onnomatch\",\"onaudiostart\",\"audio_started\",\"onaudioend\",\"onsoundstart\",\"sound_started\",\"onsoundend\",\"onspeechstart\",\"speech_started\",\"onspeechend\",\"onstart\",\"buttonEl\",\"onclick\",\"stop\",\"innerHTML\",\"iconStarted\",\"setAttribute\",\"started\",\"onend\",\"start\",\"iconNotStarted\",\"button_type\",\"document\",\"createElement\",\"trim\",\"content\",\"firstChild\",\"button_started\",\"button_not_started\",\"setIcon\",\"connect_signals\",\"connect\",\"properties\",\"change\",\"abort\",\"grammars\",\"className\",\"button_hide\",\"render\",\"on_change\",\"speechRecognitionList\",\"grammar\",\"src\",\"addFromString\",\"weight\",\"uri\",\"addFromURI\",\"deserializeGrammars\",\"shadow_el\",\"appendChild\",\"__name__\",\"SpeechToText\",\"HTMLBox\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Any\",\"Array\",\"Boolean\",\"String\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/state.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/state.js","canonical":"models/state","resolution":"ESM","id":"1bb5a1aca6","hash":"1bb5a1aca603c5a6d14ec1fb8eb57ceed8156ec182042ca3db205109e8bda1cf","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.State = exports.StateView = void 0;\nvar _a;\nconst view_1 = require(\"@bokehjs/core/view\");\nconst array_1 = require(\"@bokehjs/core/util/array\");\nconst model_1 = require(\"@bokehjs/model\");\nconst receiver_1 = require(\"@bokehjs/protocol/receiver\");\nfunction get_json(file, callback) {\n    var xobj = new XMLHttpRequest();\n    xobj.overrideMimeType(\"application/json\");\n    xobj.open('GET', file, true);\n    xobj.onreadystatechange = function () {\n        if (xobj.readyState == 4 && xobj.status == 200) {\n            callback(xobj.responseText);\n        }\n    };\n    xobj.send(null);\n}\nclass StateView extends view_1.View {\n}\nexports.StateView = StateView;\nStateView.__name__ = \"StateView\";\nclass State extends model_1.Model {\n    constructor(attrs) {\n        super(attrs);\n        this._receiver = new receiver_1.Receiver();\n        this._cache = {};\n    }\n    apply_state(state) {\n        this._receiver.consume(state.header);\n        this._receiver.consume(state.metadata);\n        this._receiver.consume(state.content);\n        if (this._receiver.message && this.document)\n            this.document.apply_json_patch(this._receiver.message.content);\n    }\n    _receive_json(result, path) {\n        const state = JSON.parse(result);\n        this._cache[path] = state;\n        let current = this.state;\n        for (const i of this.values) {\n            if (current instanceof Map)\n                current = current.get(i);\n            else\n                current = current[i];\n        }\n        if (current === path)\n            this.apply_state(state);\n        else if (this._cache[current])\n            this.apply_state(this._cache[current]);\n    }\n    set_state(widget, value) {\n        let values = (0, array_1.copy)(this.values);\n        const index = this.widgets[widget.id];\n        values[index] = value;\n        let state = this.state;\n        for (const i of values) {\n            if (state instanceof Map)\n                state = state.get(i);\n            else\n                state = state[i];\n        }\n        this.values = values;\n        if (this.json) {\n            if (this._cache[state]) {\n                this.apply_state(this._cache[state]);\n            }\n            else {\n                get_json(state, (result) => this._receive_json(result, state));\n            }\n        }\n        else {\n            this.apply_state(state);\n        }\n    }\n}\nexports.State = State;\n_a = State;\nState.__name__ = \"State\";\nState.__module__ = \"panel.models.state\";\n(() => {\n    _a.prototype.default_view = StateView;\n    _a.define(({ Any, Boolean }) => ({\n        json: [Boolean, false],\n        state: [Any, {}],\n        widgets: [Any, {}],\n        values: [Any, []],\n    }));\n})();\n//# sourceMappingURL=state.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"StateView"},{"type":"named","name":"State"}],"externals":[],"shims":[]},"code":{"source":"/* models/state.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const view_1 = require(\"@bokehjs/core/view\");\n    const array_1 = require(\"@bokehjs/core/util/array\");\n    const model_1 = require(\"@bokehjs/model\");\n    const receiver_1 = require(\"@bokehjs/protocol/receiver\");\n    function get_json(file, callback) {\n        var xobj = new XMLHttpRequest();\n        xobj.overrideMimeType(\"application/json\");\n        xobj.open('GET', file, true);\n        xobj.onreadystatechange = function () {\n            if (xobj.readyState == 4 && xobj.status == 200) {\n                callback(xobj.responseText);\n            }\n        };\n        xobj.send(null);\n    }\n    class StateView extends view_1.View {\n    }\n    exports.StateView = StateView;\n    StateView.__name__ = \"StateView\";\n    class State extends model_1.Model {\n        constructor(attrs) {\n            super(attrs);\n            this._receiver = new receiver_1.Receiver();\n            this._cache = {};\n        }\n        apply_state(state) {\n            this._receiver.consume(state.header);\n            this._receiver.consume(state.metadata);\n            this._receiver.consume(state.content);\n            if (this._receiver.message && this.document)\n                this.document.apply_json_patch(this._receiver.message.content);\n        }\n        _receive_json(result, path) {\n            const state = JSON.parse(result);\n            this._cache[path] = state;\n            let current = this.state;\n            for (const i of this.values) {\n                if (current instanceof Map)\n                    current = current.get(i);\n                else\n                    current = current[i];\n            }\n            if (current === path)\n                this.apply_state(state);\n            else if (this._cache[current])\n                this.apply_state(this._cache[current]);\n        }\n        set_state(widget, value) {\n            let values = (0, array_1.copy)(this.values);\n            const index = this.widgets[widget.id];\n            values[index] = value;\n            let state = this.state;\n            for (const i of values) {\n                if (state instanceof Map)\n                    state = state.get(i);\n                else\n                    state = state[i];\n            }\n            this.values = values;\n            if (this.json) {\n                if (this._cache[state]) {\n                    this.apply_state(this._cache[state]);\n                }\n                else {\n                    get_json(state, (result) => this._receive_json(result, state));\n                }\n            }\n            else {\n                this.apply_state(state);\n            }\n        }\n    }\n    exports.State = State;\n    _a = State;\n    State.__name__ = \"State\";\n    State.__module__ = \"panel.models.state\";\n    (() => {\n        _a.prototype.default_view = StateView;\n        _a.define(({ Any, Boolean }) => ({\n            json: [Boolean, false],\n            state: [Any, {}],\n            widgets: [Any, {}],\n            values: [Any, []],\n        }));\n    })();\n}\n","min_source":"function _(e,t,s,a,i){var o;a();const c=e(\"@bokehjs/core/view\"),n=e(\"@bokehjs/core/util/array\"),h=e(\"@bokehjs/model\"),_=e(\"@bokehjs/protocol/receiver\");class r extends c.View{}s.StateView=r,r.__name__=\"StateView\";class p extends h.Model{constructor(e){super(e),this._receiver=new _.Receiver,this._cache={}}apply_state(e){this._receiver.consume(e.header),this._receiver.consume(e.metadata),this._receiver.consume(e.content),this._receiver.message&&this.document&&this.document.apply_json_patch(this._receiver.message.content)}_receive_json(e,t){const s=JSON.parse(e);this._cache[t]=s;let a=this.state;for(const e of this.values)a=a instanceof Map?a.get(e):a[e];a===t?this.apply_state(s):this._cache[a]&&this.apply_state(this._cache[a])}set_state(e,t){let s=(0,n.copy)(this.values);s[this.widgets[e.id]]=t;let a=this.state;for(const e of s)a=a instanceof Map?a.get(e):a[e];var i,o,c;this.values=s,this.json?this._cache[a]?this.apply_state(this._cache[a]):(i=a,o=e=>this._receive_json(e,a),(c=new XMLHttpRequest).overrideMimeType(\"application/json\"),c.open(\"GET\",i,!0),c.onreadystatechange=function(){4==c.readyState&&200==c.status&&o(c.responseText)},c.send(null)):this.apply_state(a)}}s.State=p,o=p,p.__name__=\"State\",p.__module__=\"panel.models.state\",o.prototype.default_view=r,o.define((({Any:e,Boolean:t})=>({json:[t,!1],state:[e,{}],widgets:[e,{}],values:[e,[]]})))}\n//# sourceMappingURL=state.min.js.map","min_map":"{\"version\":3,\"file\":\"state.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"view_1\",\"array_1\",\"model_1\",\"receiver_1\",\"StateView\",\"View\",\"__name__\",\"State\",\"Model\",\"constructor\",\"attrs\",\"super\",\"this\",\"_receiver\",\"Receiver\",\"_cache\",\"apply_state\",\"state\",\"consume\",\"header\",\"metadata\",\"content\",\"message\",\"document\",\"apply_json_patch\",\"_receive_json\",\"result\",\"path\",\"JSON\",\"parse\",\"current\",\"i\",\"values\",\"Map\",\"get\",\"set_state\",\"widget\",\"value\",\"copy\",\"widgets\",\"id\",\"file\",\"callback\",\"xobj\",\"json\",\"XMLHttpRequest\",\"overrideMimeType\",\"open\",\"onreadystatechange\",\"readyState\",\"status\",\"responseText\",\"send\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Any\",\"Boolean\"],\"sources\":[\"0\"],\"mappings\":\"AAAsB,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAEnE,IAAIC,EADJF,IAEA,MAAMG,EAASN,EAAQ,sBACjBO,EAAUP,EAAQ,4BAClBQ,EAAUR,EAAQ,kBAClBS,EAAaT,EAAQ,8BAY3B,MAAMU,UAAkBJ,EAAOK,MAE/BT,EAAQQ,UAAYA,EACpBA,EAAUE,SAAW,YACrB,MAAMC,UAAcL,EAAQM,MACxB,WAAAC,CAAYC,GACRC,MAAMD,GACNE,KAAKC,UAAY,IAAIV,EAAWW,SAChCF,KAAKG,OAAS,CAAC,CACnB,CACA,WAAAC,CAAYC,GACRL,KAAKC,UAAUK,QAAQD,EAAME,QAC7BP,KAAKC,UAAUK,QAAQD,EAAMG,UAC7BR,KAAKC,UAAUK,QAAQD,EAAMI,SACzBT,KAAKC,UAAUS,SAAWV,KAAKW,UAC/BX,KAAKW,SAASC,iBAAiBZ,KAAKC,UAAUS,QAAQD,QAC9D,CACA,aAAAI,CAAcC,EAAQC,GAClB,MAAMV,EAAQW,KAAKC,MAAMH,GACzBd,KAAKG,OAAOY,GAAQV,EACpB,IAAIa,EAAUlB,KAAKK,MACnB,IAAK,MAAMc,KAAKnB,KAAKoB,OAEbF,EADAA,aAAmBG,IACTH,EAAQI,IAAIH,GAEZD,EAAQC,GAEtBD,IAAYH,EACZf,KAAKI,YAAYC,GACZL,KAAKG,OAAOe,IACjBlB,KAAKI,YAAYJ,KAAKG,OAAOe,GACrC,CACA,SAAAK,CAAUC,EAAQC,GACd,IAAIL,GAAS,EAAI/B,EAAQqC,MAAM1B,KAAKoB,QAEpCA,EADcpB,KAAK2B,QAAQH,EAAOI,KAClBH,EAChB,IAAIpB,EAAQL,KAAKK,MACjB,IAAK,MAAMc,KAAKC,EAERf,EADAA,aAAiBgB,IACThB,EAAMiB,IAAIH,GAEVd,EAAMc,GApD9B,IAAkBU,EAAMC,EAChBC,EAqDA/B,KAAKoB,OAASA,EACVpB,KAAKgC,KACDhC,KAAKG,OAAOE,GACZL,KAAKI,YAAYJ,KAAKG,OAAOE,KAzD3BwB,EA4DOxB,EA5DDyB,EA4DShB,GAAWd,KAAKa,cAAcC,EAAQT,IA3D/D0B,EAAO,IAAIE,gBACVC,iBAAiB,oBACtBH,EAAKI,KAAK,MAAON,GAAM,GACvBE,EAAKK,mBAAqB,WACC,GAAnBL,EAAKM,YAAkC,KAAfN,EAAKO,QAC7BR,EAASC,EAAKQ,aAEtB,EACAR,EAAKS,KAAK,OAuDFxC,KAAKI,YAAYC,EAEzB,EAEJrB,EAAQW,MAAQA,EAChBR,EAAKQ,EACLA,EAAMD,SAAW,QACjBC,EAAM8C,WAAa,qBAEftD,EAAGuD,UAAUC,aAAenD,EAC5BL,EAAGyD,QAAO,EAAGC,MAAKC,cAAc,CAC5Bd,KAAM,CAACc,GAAS,GAChBzC,MAAO,CAACwC,EAAK,CAAC,GACdlB,QAAS,CAACkB,EAAK,CAAC,GAChBzB,OAAQ,CAACyB,EAAK,OAG1B\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/tabs.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/tabs.js","canonical":"models/tabs","resolution":"ESM","id":"8013e805da","hash":"8013e805da708d13b354a9c32ce230fb818530c2a886971cf60182d356148d2f","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Tabs = exports.TabsView = void 0;\nconst tslib_1 = require(\"tslib\");\nvar _a;\nconst tabs = tslib_1.__importStar(require(\"@bokehjs/styles/tabs.css\"));\nconst grid_1 = require(\"@bokehjs/core/layout/grid\");\nconst enums_1 = require(\"@bokehjs/core/enums\");\nconst alignments_1 = require(\"@bokehjs/models/layouts/alignments\");\nconst tabs_1 = require(\"@bokehjs/models/layouts/tabs\");\nconst layout_dom_1 = require(\"@bokehjs/models/layouts/layout_dom\");\nfunction show(element) {\n    element.style.visibility = \"\";\n    element.style.opacity = \"\";\n}\nfunction hide(element) {\n    element.style.visibility = \"hidden\";\n    element.style.opacity = \"0\";\n}\nclass TabsView extends tabs_1.TabsView {\n    connect_signals() {\n        super.connect_signals();\n        let view = this;\n        while (view != null) {\n            if (view.model.type.endsWith('Tabs')) {\n                view.connect(view.model.properties.active.change, () => this.update_zindex());\n            }\n            view = view.parent || view._parent; // Handle ReactiveHTML\n        }\n    }\n    get is_visible() {\n        let parent = this.parent;\n        let current_view = this;\n        while (parent != null) {\n            if (parent.model.type.endsWith('Tabs')) {\n                if (parent.child_views.indexOf(current_view) !== parent.model.active) {\n                    return false;\n                }\n            }\n            current_view = parent;\n            parent = parent.parent || parent._parent; // Handle ReactiveHTML\n        }\n        return true;\n    }\n    render() {\n        super.render();\n        this.update_zindex();\n    }\n    update_zindex() {\n        const { child_views } = this;\n        for (const child_view of child_views) {\n            if (child_view != null && child_view.el != null) {\n                child_view.el.style.zIndex = \"\";\n            }\n        }\n        if (this.is_visible) {\n            const active = child_views[this.model.active];\n            if (active != null && active.el != null)\n                active.el.style.zIndex = \"1\";\n        }\n    }\n    _after_layout() {\n        layout_dom_1.LayoutDOMView.prototype._after_layout.call(this);\n        const { child_views } = this;\n        for (const child_view of child_views) {\n            if (child_view !== undefined)\n                hide(child_view.el);\n        }\n        const { active } = this.model;\n        if (active in child_views) {\n            const tab = child_views[active];\n            if (tab !== undefined)\n                show(tab.el);\n        }\n    }\n    _update_layout() {\n        layout_dom_1.LayoutDOMView.prototype._update_layout.call(this);\n        const loc = this.model.tabs_location;\n        this.class_list.remove([...enums_1.Location].map((loc) => tabs[loc]));\n        this.class_list.add(tabs[loc]);\n        const layoutable = new grid_1.Container();\n        for (const view of this.child_views) {\n            if (view == undefined)\n                continue;\n            view.style.append(\":host\", { grid_area: \"stack\" });\n            if (view instanceof layout_dom_1.LayoutDOMView && view.layout != null) {\n                layoutable.add({ r0: 0, c0: 0, r1: 1, c1: 1 }, view);\n            }\n        }\n        if (layoutable.size != 0) {\n            this.layout = new alignments_1.GridAlignmentLayout(layoutable);\n            this.layout.set_sizing();\n        }\n        else {\n            delete this.layout;\n        }\n    }\n    update_active() {\n        const i = this.model.active;\n        const { header_els } = this;\n        for (const el of header_els) {\n            el.classList.remove(tabs.active);\n        }\n        if (i in header_els) {\n            header_els[i].classList.add(tabs.active);\n        }\n        const { child_views } = this;\n        for (const child_view of child_views) {\n            hide(child_view.el);\n        }\n        if (i in child_views) {\n            const view = child_views[i];\n            show(view.el);\n            if (view.invalidate_render == null)\n                view.invalidate_render();\n        }\n    }\n}\nexports.TabsView = TabsView;\nTabsView.__name__ = \"TabsView\";\nclass Tabs extends tabs_1.Tabs {\n}\nexports.Tabs = Tabs;\n_a = Tabs;\nTabs.__name__ = \"Tabs\";\nTabs.__module__ = \"panel.models.tabs\";\n(() => {\n    _a.prototype.default_view = TabsView;\n})();\n//# sourceMappingURL=tabs.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"TabsView"},{"type":"named","name":"Tabs"}],"externals":[],"shims":[]},"code":{"source":"/* models/tabs.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    var _a;\n    const tabs = tslib_1.__importStar(require(\"@bokehjs/styles/tabs.css\"));\n    const grid_1 = require(\"@bokehjs/core/layout/grid\");\n    const enums_1 = require(\"@bokehjs/core/enums\");\n    const alignments_1 = require(\"@bokehjs/models/layouts/alignments\");\n    const tabs_1 = require(\"@bokehjs/models/layouts/tabs\");\n    const layout_dom_1 = require(\"@bokehjs/models/layouts/layout_dom\");\n    function show(element) {\n        element.style.visibility = \"\";\n        element.style.opacity = \"\";\n    }\n    function hide(element) {\n        element.style.visibility = \"hidden\";\n        element.style.opacity = \"0\";\n    }\n    class TabsView extends tabs_1.TabsView {\n        connect_signals() {\n            super.connect_signals();\n            let view = this;\n            while (view != null) {\n                if (view.model.type.endsWith('Tabs')) {\n                    view.connect(view.model.properties.active.change, () => this.update_zindex());\n                }\n                view = view.parent || view._parent; // Handle ReactiveHTML\n            }\n        }\n        get is_visible() {\n            let parent = this.parent;\n            let current_view = this;\n            while (parent != null) {\n                if (parent.model.type.endsWith('Tabs')) {\n                    if (parent.child_views.indexOf(current_view) !== parent.model.active) {\n                        return false;\n                    }\n                }\n                current_view = parent;\n                parent = parent.parent || parent._parent; // Handle ReactiveHTML\n            }\n            return true;\n        }\n        render() {\n            super.render();\n            this.update_zindex();\n        }\n        update_zindex() {\n            const { child_views } = this;\n            for (const child_view of child_views) {\n                if (child_view != null && child_view.el != null) {\n                    child_view.el.style.zIndex = \"\";\n                }\n            }\n            if (this.is_visible) {\n                const active = child_views[this.model.active];\n                if (active != null && active.el != null)\n                    active.el.style.zIndex = \"1\";\n            }\n        }\n        _after_layout() {\n            layout_dom_1.LayoutDOMView.prototype._after_layout.call(this);\n            const { child_views } = this;\n            for (const child_view of child_views) {\n                if (child_view !== undefined)\n                    hide(child_view.el);\n            }\n            const { active } = this.model;\n            if (active in child_views) {\n                const tab = child_views[active];\n                if (tab !== undefined)\n                    show(tab.el);\n            }\n        }\n        _update_layout() {\n            layout_dom_1.LayoutDOMView.prototype._update_layout.call(this);\n            const loc = this.model.tabs_location;\n            this.class_list.remove([...enums_1.Location].map((loc) => tabs[loc]));\n            this.class_list.add(tabs[loc]);\n            const layoutable = new grid_1.Container();\n            for (const view of this.child_views) {\n                if (view == undefined)\n                    continue;\n                view.style.append(\":host\", { grid_area: \"stack\" });\n                if (view instanceof layout_dom_1.LayoutDOMView && view.layout != null) {\n                    layoutable.add({ r0: 0, c0: 0, r1: 1, c1: 1 }, view);\n                }\n            }\n            if (layoutable.size != 0) {\n                this.layout = new alignments_1.GridAlignmentLayout(layoutable);\n                this.layout.set_sizing();\n            }\n            else {\n                delete this.layout;\n            }\n        }\n        update_active() {\n            const i = this.model.active;\n            const { header_els } = this;\n            for (const el of header_els) {\n                el.classList.remove(tabs.active);\n            }\n            if (i in header_els) {\n                header_els[i].classList.add(tabs.active);\n            }\n            const { child_views } = this;\n            for (const child_view of child_views) {\n                hide(child_view.el);\n            }\n            if (i in child_views) {\n                const view = child_views[i];\n                show(view.el);\n                if (view.invalidate_render == null)\n                    view.invalidate_render();\n            }\n        }\n    }\n    exports.TabsView = TabsView;\n    TabsView.__name__ = \"TabsView\";\n    class Tabs extends tabs_1.Tabs {\n    }\n    exports.Tabs = Tabs;\n    _a = Tabs;\n    Tabs.__name__ = \"Tabs\";\n    Tabs.__module__ = \"panel.models.tabs\";\n    (() => {\n        _a.prototype.default_view = TabsView;\n    })();\n}\n","min_source":"function _(e,t,s,i,l){i();var o;const a=e(\"tslib\").__importStar(e(\"@bokehjs/styles/tabs.css\")),n=e(\"@bokehjs/core/layout/grid\"),c=e(\"@bokehjs/core/enums\"),d=e(\"@bokehjs/models/layouts/alignments\"),r=e(\"@bokehjs/models/layouts/tabs\"),_=e(\"@bokehjs/models/layouts/layout_dom\");function u(e){e.style.visibility=\"\",e.style.opacity=\"\"}function h(e){e.style.visibility=\"hidden\",e.style.opacity=\"0\"}class y extends r.TabsView{connect_signals(){super.connect_signals();let e=this;for(;null!=e;)e.model.type.endsWith(\"Tabs\")&&e.connect(e.model.properties.active.change,(()=>this.update_zindex())),e=e.parent||e._parent}get is_visible(){let e=this.parent,t=this;for(;null!=e;){if(e.model.type.endsWith(\"Tabs\")&&e.child_views.indexOf(t)!==e.model.active)return!1;t=e,e=e.parent||e._parent}return!0}render(){super.render(),this.update_zindex()}update_zindex(){const{child_views:e}=this;for(const t of e)null!=t&&null!=t.el&&(t.el.style.zIndex=\"\");if(this.is_visible){const t=e[this.model.active];null!=t&&null!=t.el&&(t.el.style.zIndex=\"1\")}}_after_layout(){_.LayoutDOMView.prototype._after_layout.call(this);const{child_views:e}=this;for(const t of e)void 0!==t&&h(t.el);const{active:t}=this.model;if(t in e){const s=e[t];void 0!==s&&u(s.el)}}_update_layout(){_.LayoutDOMView.prototype._update_layout.call(this);const e=this.model.tabs_location;this.class_list.remove([...c.Location].map((e=>a[e]))),this.class_list.add(a[e]);const t=new n.Container;for(const e of this.child_views)null!=e&&(e.style.append(\":host\",{grid_area:\"stack\"}),e instanceof _.LayoutDOMView&&null!=e.layout&&t.add({r0:0,c0:0,r1:1,c1:1},e));0!=t.size?(this.layout=new d.GridAlignmentLayout(t),this.layout.set_sizing()):delete this.layout}update_active(){const e=this.model.active,{header_els:t}=this;for(const e of t)e.classList.remove(a.active);e in t&&t[e].classList.add(a.active);const{child_views:s}=this;for(const e of s)h(e.el);if(e in s){const t=s[e];u(t.el),null==t.invalidate_render&&t.invalidate_render()}}}s.TabsView=y,y.__name__=\"TabsView\";class p extends r.Tabs{}s.Tabs=p,o=p,p.__name__=\"Tabs\",p.__module__=\"panel.models.tabs\",o.prototype.default_view=y}\n//# sourceMappingURL=tabs.min.js.map","min_map":"{\"version\":3,\"file\":\"tabs.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"tabs\",\"__importStar\",\"grid_1\",\"enums_1\",\"alignments_1\",\"tabs_1\",\"layout_dom_1\",\"show\",\"element\",\"style\",\"visibility\",\"opacity\",\"hide\",\"TabsView\",\"connect_signals\",\"super\",\"view\",\"this\",\"model\",\"type\",\"endsWith\",\"connect\",\"properties\",\"active\",\"change\",\"update_zindex\",\"parent\",\"_parent\",\"is_visible\",\"current_view\",\"child_views\",\"indexOf\",\"render\",\"child_view\",\"el\",\"zIndex\",\"_after_layout\",\"LayoutDOMView\",\"prototype\",\"call\",\"undefined\",\"tab\",\"_update_layout\",\"loc\",\"tabs_location\",\"class_list\",\"remove\",\"Location\",\"map\",\"add\",\"layoutable\",\"Container\",\"append\",\"grid_area\",\"layout\",\"r0\",\"c0\",\"r1\",\"c1\",\"size\",\"GridAlignmentLayout\",\"set_sizing\",\"update_active\",\"i\",\"header_els\",\"classList\",\"invalidate_render\",\"__name__\",\"Tabs\",\"__module__\",\"default_view\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/terminal.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/terminal.js","canonical":"models/terminal","resolution":"ESM","id":"4a0674b147","hash":"4a0674b1479ced9c915c7e02147948057bb56578ea151be2f4864541c3606543","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Terminal = exports.TerminalView = exports.KeystrokeEvent = void 0;\nvar _a, _b;\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst bokeh_events_1 = require(\"@bokehjs/core/bokeh_events\");\nconst layout_1 = require(\"./layout\");\nclass KeystrokeEvent extends bokeh_events_1.ModelEvent {\n    constructor(key) {\n        super();\n        this.key = key;\n    }\n    get event_values() {\n        return { model: this.origin, key: this.key };\n    }\n}\nexports.KeystrokeEvent = KeystrokeEvent;\n_a = KeystrokeEvent;\nKeystrokeEvent.__name__ = \"KeystrokeEvent\";\n(() => {\n    _a.prototype.event_name = \"keystroke\";\n})();\nclass TerminalView extends layout_1.HTMLBoxView {\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.output.change, this.write);\n        this.connect(this.model.properties._clears.change, this.clear);\n    }\n    render() {\n        super.render();\n        this.container = (0, dom_1.div)({ class: \"terminal-container\" });\n        (0, layout_1.set_size)(this.container, this.model);\n        this.term = this.getNewTerminal();\n        this.term.onData((value) => {\n            this.handleOnData(value);\n        });\n        this.webLinksAddon = this.getNewWebLinksAddon();\n        this.term.loadAddon(this.webLinksAddon);\n        this.term.open(this.container);\n        this.term.onRender(() => {\n            if (!this._rendered)\n                this.fit();\n        });\n        this.write();\n        this.shadow_el.appendChild(this.container);\n    }\n    getNewTerminal() {\n        const wn = window;\n        if (wn.Terminal)\n            return new wn.Terminal(this.model.options);\n        else\n            return new wn.xtermjs.Terminal(this.model.options);\n    }\n    getNewWebLinksAddon() {\n        const wn = window;\n        return new wn.WebLinksAddon.WebLinksAddon();\n    }\n    handleOnData(value) {\n        this.model.trigger_event(new KeystrokeEvent(value));\n    }\n    write() {\n        const text = this.model.output;\n        if (text == null || !text.length)\n            return;\n        // https://stackoverflow.com/questions/65367607/how-to-handle-new-line-in-xterm-js-while-writing-data-into-the-terminal\n        const cleaned = text.replace(/\\r?\\n/g, \"\\r\\n\");\n        // var text = Array.from(cleaned, (x) => x.charCodeAt(0))\n        this.term.write(cleaned);\n    }\n    clear() {\n        this.term.clear();\n    }\n    fit() {\n        const width = this.container.offsetWidth;\n        const height = this.container.offsetHeight;\n        const renderer = this.term._core._renderService;\n        const cell_width = renderer.dimensions.actualCellWidth || 9;\n        const cell_height = renderer.dimensions.actualCellHeight || 18;\n        if (width == null || height == null || width <= 0 || height <= 0)\n            return;\n        const cols = Math.max(2, Math.floor(width / cell_width));\n        const rows = Math.max(1, Math.floor(height / cell_height));\n        if (this.term.rows !== rows || this.term.cols !== cols)\n            this.term.resize(cols, rows);\n        this.model.ncols = cols;\n        this.model.nrows = rows;\n        this._rendered = true;\n    }\n    after_layout() {\n        super.after_layout();\n        this.fit();\n    }\n}\nexports.TerminalView = TerminalView;\nTerminalView.__name__ = \"TerminalView\";\n// The Bokeh .ts model corresponding to the Bokeh .py model\nclass Terminal extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.Terminal = Terminal;\n_b = Terminal;\nTerminal.__name__ = \"Terminal\";\nTerminal.__module__ = \"panel.models.terminal\";\n(() => {\n    _b.prototype.default_view = TerminalView;\n    _b.define(({ Any, Int, String }) => ({\n        _clears: [Int, 0],\n        options: [Any, {}],\n        output: [String, ''],\n        ncols: [Int, 0],\n        nrows: [Int, 0],\n    }));\n})();\n//# sourceMappingURL=terminal.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"KeystrokeEvent"},{"type":"named","name":"TerminalView"},{"type":"named","name":"Terminal"}],"externals":[],"shims":[]},"code":{"source":"/* models/terminal.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a, _b;\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const bokeh_events_1 = require(\"@bokehjs/core/bokeh_events\");\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    class KeystrokeEvent extends bokeh_events_1.ModelEvent {\n        constructor(key) {\n            super();\n            this.key = key;\n        }\n        get event_values() {\n            return { model: this.origin, key: this.key };\n        }\n    }\n    exports.KeystrokeEvent = KeystrokeEvent;\n    _a = KeystrokeEvent;\n    KeystrokeEvent.__name__ = \"KeystrokeEvent\";\n    (() => {\n        _a.prototype.event_name = \"keystroke\";\n    })();\n    class TerminalView extends layout_1.HTMLBoxView {\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.output.change, this.write);\n            this.connect(this.model.properties._clears.change, this.clear);\n        }\n        render() {\n            super.render();\n            this.container = (0, dom_1.div)({ class: \"terminal-container\" });\n            (0, layout_1.set_size)(this.container, this.model);\n            this.term = this.getNewTerminal();\n            this.term.onData((value) => {\n                this.handleOnData(value);\n            });\n            this.webLinksAddon = this.getNewWebLinksAddon();\n            this.term.loadAddon(this.webLinksAddon);\n            this.term.open(this.container);\n            this.term.onRender(() => {\n                if (!this._rendered)\n                    this.fit();\n            });\n            this.write();\n            this.shadow_el.appendChild(this.container);\n        }\n        getNewTerminal() {\n            const wn = window;\n            if (wn.Terminal)\n                return new wn.Terminal(this.model.options);\n            else\n                return new wn.xtermjs.Terminal(this.model.options);\n        }\n        getNewWebLinksAddon() {\n            const wn = window;\n            return new wn.WebLinksAddon.WebLinksAddon();\n        }\n        handleOnData(value) {\n            this.model.trigger_event(new KeystrokeEvent(value));\n        }\n        write() {\n            const text = this.model.output;\n            if (text == null || !text.length)\n                return;\n            // https://stackoverflow.com/questions/65367607/how-to-handle-new-line-in-xterm-js-while-writing-data-into-the-terminal\n            const cleaned = text.replace(/\\r?\\n/g, \"\\r\\n\");\n            // var text = Array.from(cleaned, (x) => x.charCodeAt(0))\n            this.term.write(cleaned);\n        }\n        clear() {\n            this.term.clear();\n        }\n        fit() {\n            const width = this.container.offsetWidth;\n            const height = this.container.offsetHeight;\n            const renderer = this.term._core._renderService;\n            const cell_width = renderer.dimensions.actualCellWidth || 9;\n            const cell_height = renderer.dimensions.actualCellHeight || 18;\n            if (width == null || height == null || width <= 0 || height <= 0)\n                return;\n            const cols = Math.max(2, Math.floor(width / cell_width));\n            const rows = Math.max(1, Math.floor(height / cell_height));\n            if (this.term.rows !== rows || this.term.cols !== cols)\n                this.term.resize(cols, rows);\n            this.model.ncols = cols;\n            this.model.nrows = rows;\n            this._rendered = true;\n        }\n        after_layout() {\n            super.after_layout();\n            this.fit();\n        }\n    }\n    exports.TerminalView = TerminalView;\n    TerminalView.__name__ = \"TerminalView\";\n    // The Bokeh .ts model corresponding to the Bokeh .py model\n    class Terminal extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.Terminal = Terminal;\n    _b = Terminal;\n    Terminal.__name__ = \"Terminal\";\n    Terminal.__module__ = \"panel.models.terminal\";\n    (() => {\n        _b.prototype.default_view = TerminalView;\n        _b.define(({ Any, Int, String }) => ({\n            _clears: [Int, 0],\n            options: [Any, {}],\n            output: [String, ''],\n            ncols: [Int, 0],\n            nrows: [Int, 0],\n        }));\n    })();\n}\n","min_source":"function _(e,t,n,s,i){var r,o;s();const a=e(\"@bokehjs/core/dom\"),l=e(\"@bokehjs/core/bokeh_events\"),h=e(\"cac5f3ed28\");class d extends l.ModelEvent{constructor(e){super(),this.key=e}get event_values(){return{model:this.origin,key:this.key}}}n.KeystrokeEvent=d,r=d,d.__name__=\"KeystrokeEvent\",r.prototype.event_name=\"keystroke\";class c extends h.HTMLBoxView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.output.change,this.write),this.connect(this.model.properties._clears.change,this.clear)}render(){super.render(),this.container=(0,a.div)({class:\"terminal-container\"}),(0,h.set_size)(this.container,this.model),this.term=this.getNewTerminal(),this.term.onData((e=>{this.handleOnData(e)})),this.webLinksAddon=this.getNewWebLinksAddon(),this.term.loadAddon(this.webLinksAddon),this.term.open(this.container),this.term.onRender((()=>{this._rendered||this.fit()})),this.write(),this.shadow_el.appendChild(this.container)}getNewTerminal(){const e=window;return e.Terminal?new e.Terminal(this.model.options):new e.xtermjs.Terminal(this.model.options)}getNewWebLinksAddon(){return new window.WebLinksAddon.WebLinksAddon}handleOnData(e){this.model.trigger_event(new d(e))}write(){const e=this.model.output;if(null==e||!e.length)return;const t=e.replace(/\\r?\\n/g,\"\\r\\n\");this.term.write(t)}clear(){this.term.clear()}fit(){const e=this.container.offsetWidth,t=this.container.offsetHeight,n=this.term._core._renderService,s=n.dimensions.actualCellWidth||9,i=n.dimensions.actualCellHeight||18;if(null==e||null==t||e<=0||t<=0)return;const r=Math.max(2,Math.floor(e/s)),o=Math.max(1,Math.floor(t/i));this.term.rows===o&&this.term.cols===r||this.term.resize(r,o),this.model.ncols=r,this.model.nrows=o,this._rendered=!0}after_layout(){super.after_layout(),this.fit()}}n.TerminalView=c,c.__name__=\"TerminalView\";class m extends h.HTMLBox{constructor(e){super(e)}}n.Terminal=m,o=m,m.__name__=\"Terminal\",m.__module__=\"panel.models.terminal\",o.prototype.default_view=c,o.define((({Any:e,Int:t,String:n})=>({_clears:[t,0],options:[e,{}],output:[n,\"\"],ncols:[t,0],nrows:[t,0]})))}\n//# sourceMappingURL=terminal.min.js.map","min_map":"{\"version\":3,\"file\":\"terminal.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"_b\",\"dom_1\",\"bokeh_events_1\",\"layout_1\",\"KeystrokeEvent\",\"ModelEvent\",\"constructor\",\"key\",\"super\",\"this\",\"event_values\",\"model\",\"origin\",\"__name__\",\"prototype\",\"event_name\",\"TerminalView\",\"HTMLBoxView\",\"connect_signals\",\"connect\",\"properties\",\"output\",\"change\",\"write\",\"_clears\",\"clear\",\"render\",\"container\",\"div\",\"class\",\"set_size\",\"term\",\"getNewTerminal\",\"onData\",\"value\",\"handleOnData\",\"webLinksAddon\",\"getNewWebLinksAddon\",\"loadAddon\",\"open\",\"onRender\",\"_rendered\",\"fit\",\"shadow_el\",\"appendChild\",\"wn\",\"window\",\"Terminal\",\"options\",\"xtermjs\",\"WebLinksAddon\",\"trigger_event\",\"text\",\"length\",\"cleaned\",\"replace\",\"width\",\"offsetWidth\",\"height\",\"offsetHeight\",\"renderer\",\"_core\",\"_renderService\",\"cell_width\",\"dimensions\",\"actualCellWidth\",\"cell_height\",\"actualCellHeight\",\"cols\",\"Math\",\"max\",\"floor\",\"rows\",\"resize\",\"ncols\",\"nrows\",\"after_layout\",\"HTMLBox\",\"attrs\",\"__module__\",\"default_view\",\"define\",\"Any\",\"Int\",\"String\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/textarea_input.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/textarea_input.js","canonical":"models/textarea_input","resolution":"ESM","id":"59f46adc8c","hash":"59f46adc8c099949de76ccea7265a2c28a7bcf7c4315b7afe88aa62dc968404f","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TextAreaInput = exports.TextAreaInputView = void 0;\nvar _a;\nconst textarea_input_1 = require(\"@bokehjs/models/widgets/textarea_input\");\nclass TextAreaInputView extends textarea_input_1.TextAreaInputView {\n    connect_signals() {\n        super.connect_signals();\n        const { value, max_rows } = this.model.properties;\n        this.on_change([max_rows, value], () => this.update_rows());\n    }\n    update_rows() {\n        if (!this.model.auto_grow) {\n            return;\n        }\n        // Use this.el directly to access the textarea element\n        const textarea = this.input_el;\n        const textLines = textarea.value.split(\"\\n\");\n        const numRows = Math.max(textLines.length, this.model.rows, 1);\n        textarea.rows = Math.min(numRows, this.model.max_rows || Infinity);\n    }\n    render() {\n        super.render();\n        this.update_rows();\n        this.el.addEventListener(\"input\", () => {\n            this.update_rows();\n        });\n    }\n}\nexports.TextAreaInputView = TextAreaInputView;\nTextAreaInputView.__name__ = \"TextAreaInputView\";\nclass TextAreaInput extends textarea_input_1.TextAreaInput {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.TextAreaInput = TextAreaInput;\n_a = TextAreaInput;\nTextAreaInput.__name__ = \"TextAreaInput\";\nTextAreaInput.__module__ = \"panel.models.widgets\";\n(() => {\n    _a.prototype.default_view = TextAreaInputView;\n    _a.define(({ Boolean, Int, Nullable }) => ({\n        auto_grow: [Boolean, false],\n        max_rows: [Nullable(Int), null]\n    }));\n})();\n//# sourceMappingURL=textarea_input.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"TextAreaInputView"},{"type":"named","name":"TextAreaInput"}],"externals":[],"shims":[]},"code":{"source":"/* models/textarea_input.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const textarea_input_1 = require(\"@bokehjs/models/widgets/textarea_input\");\n    class TextAreaInputView extends textarea_input_1.TextAreaInputView {\n        connect_signals() {\n            super.connect_signals();\n            const { value, max_rows } = this.model.properties;\n            this.on_change([max_rows, value], () => this.update_rows());\n        }\n        update_rows() {\n            if (!this.model.auto_grow) {\n                return;\n            }\n            // Use this.el directly to access the textarea element\n            const textarea = this.input_el;\n            const textLines = textarea.value.split(\"\\n\");\n            const numRows = Math.max(textLines.length, this.model.rows, 1);\n            textarea.rows = Math.min(numRows, this.model.max_rows || Infinity);\n        }\n        render() {\n            super.render();\n            this.update_rows();\n            this.el.addEventListener(\"input\", () => {\n                this.update_rows();\n            });\n        }\n    }\n    exports.TextAreaInputView = TextAreaInputView;\n    TextAreaInputView.__name__ = \"TextAreaInputView\";\n    class TextAreaInput extends textarea_input_1.TextAreaInput {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.TextAreaInput = TextAreaInput;\n    _a = TextAreaInput;\n    TextAreaInput.__name__ = \"TextAreaInput\";\n    TextAreaInput.__module__ = \"panel.models.widgets\";\n    (() => {\n        _a.prototype.default_view = TextAreaInputView;\n        _a.define(({ Boolean, Int, Nullable }) => ({\n            auto_grow: [Boolean, false],\n            max_rows: [Nullable(Int), null]\n        }));\n    })();\n}\n","min_source":"function _(e,t,s,n,a){var o;n();const r=e(\"@bokehjs/models/widgets/textarea_input\");class i extends r.TextAreaInputView{connect_signals(){super.connect_signals();const{value:e,max_rows:t}=this.model.properties;this.on_change([t,e],(()=>this.update_rows()))}update_rows(){if(!this.model.auto_grow)return;const e=this.input_el,t=e.value.split(\"\\n\"),s=Math.max(t.length,this.model.rows,1);e.rows=Math.min(s,this.model.max_rows||1/0)}render(){super.render(),this.update_rows(),this.el.addEventListener(\"input\",(()=>{this.update_rows()}))}}s.TextAreaInputView=i,i.__name__=\"TextAreaInputView\";class _ extends r.TextAreaInput{constructor(e){super(e)}}s.TextAreaInput=_,o=_,_.__name__=\"TextAreaInput\",_.__module__=\"panel.models.widgets\",o.prototype.default_view=i,o.define((({Boolean:e,Int:t,Nullable:s})=>({auto_grow:[e,!1],max_rows:[s(t),null]})))}\n//# sourceMappingURL=textarea_input.min.js.map","min_map":"{\"version\":3,\"file\":\"textarea_input.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"textarea_input_1\",\"TextAreaInputView\",\"connect_signals\",\"super\",\"value\",\"max_rows\",\"this\",\"model\",\"properties\",\"on_change\",\"update_rows\",\"auto_grow\",\"textarea\",\"input_el\",\"textLines\",\"split\",\"numRows\",\"Math\",\"max\",\"length\",\"rows\",\"min\",\"Infinity\",\"render\",\"el\",\"addEventListener\",\"__name__\",\"TextAreaInput\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Boolean\",\"Int\",\"Nullable\"],\"sources\":[\"0\"],\"mappings\":\"AAA+B,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAE5E,IAAIC,EADJF,IAEA,MAAMG,EAAmBN,EAAQ,0CACjC,MAAMO,UAA0BD,EAAiBC,kBAC7C,eAAAC,GACIC,MAAMD,kBACN,MAAME,MAAEA,EAAKC,SAAEA,GAAaC,KAAKC,MAAMC,WACvCF,KAAKG,UAAU,CAACJ,EAAUD,IAAQ,IAAME,KAAKI,eACjD,CACA,WAAAA,GACI,IAAKJ,KAAKC,MAAMI,UACZ,OAGJ,MAAMC,EAAWN,KAAKO,SAChBC,EAAYF,EAASR,MAAMW,MAAM,MACjCC,EAAUC,KAAKC,IAAIJ,EAAUK,OAAQb,KAAKC,MAAMa,KAAM,GAC5DR,EAASQ,KAAOH,KAAKI,IAAIL,EAASV,KAAKC,MAAMF,UAAYiB,IAC7D,CACA,MAAAC,GACIpB,MAAMoB,SACNjB,KAAKI,cACLJ,KAAKkB,GAAGC,iBAAiB,SAAS,KAC9BnB,KAAKI,aAAa,GAE1B,EAEJd,EAAQK,kBAAoBA,EAC5BA,EAAkByB,SAAW,oBAC7B,MAAMC,UAAsB3B,EAAiB2B,cACzC,WAAAC,CAAYC,GACR1B,MAAM0B,EACV,EAEJjC,EAAQ+B,cAAgBA,EACxB5B,EAAK4B,EACLA,EAAcD,SAAW,gBACzBC,EAAcG,WAAa,uBAEvB/B,EAAGgC,UAAUC,aAAe/B,EAC5BF,EAAGkC,QAAO,EAAGC,UAASC,MAAKC,eAAe,CACtCzB,UAAW,CAACuB,GAAS,GACrB7B,SAAU,CAAC+B,EAASD,GAAM,SAGtC\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/text_to_speech.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/text_to_speech.js","canonical":"models/text_to_speech","resolution":"ESM","id":"a44f0bd49f","hash":"a44f0bd49f8beab854edf53168c33776766430db10ee47876ddd18de2da037a5","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TextToSpeech = exports.TextToSpeechView = void 0;\nvar _a;\nconst layout_1 = require(\"./layout\");\nfunction toVoicesList(voices) {\n    var voicesList = [];\n    for (let voice of voices) {\n        var item = {\n            default: voice.default,\n            lang: voice.lang,\n            local_service: voice.localService,\n            name: voice.name,\n            voice_uri: voice.voiceURI,\n        };\n        voicesList.push(item);\n    }\n    return voicesList;\n}\nclass TextToSpeechView extends layout_1.HTMLBoxView {\n    initialize() {\n        super.initialize();\n        this.model.paused = speechSynthesis.paused;\n        this.model.pending = speechSynthesis.pending;\n        this.model.speaking = speechSynthesis.speaking;\n        // Hack: Keeps speeking for longer texts\n        // https://stackoverflow.com/questions/21947730/chrome-speech-synthesis-with-longer-texts\n        this._callback = window.setInterval(function () {\n            if (!speechSynthesis.paused && speechSynthesis.speaking) {\n                window.speechSynthesis.resume();\n            }\n        }, 10000);\n        const populateVoiceList = () => {\n            if (typeof speechSynthesis === 'undefined')\n                return;\n            // According to https://talkrapp.com/speechSynthesis.html not all voices are available\n            // The article includes code for ios to handle this. Might be useful.\n            this.voices = speechSynthesis.getVoices();\n            if (!this.voices)\n                return;\n            this.model.voices = toVoicesList(this.voices);\n        };\n        populateVoiceList();\n        if (typeof speechSynthesis !== 'undefined' && speechSynthesis.onvoiceschanged !== undefined)\n            speechSynthesis.onvoiceschanged = populateVoiceList;\n    }\n    remove() {\n        if (this._callback != null)\n            clearInterval(this._callback);\n        speechSynthesis.cancel();\n        super.remove();\n    }\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.speak.change, () => {\n            this.speak();\n        });\n        this.connect(this.model.properties.pause.change, () => {\n            this.model.pause = false;\n            speechSynthesis.pause();\n        });\n        this.connect(this.model.properties.resume.change, () => {\n            this.model.resume = false;\n            speechSynthesis.resume();\n        });\n        this.connect(this.model.properties.cancel.change, () => {\n            this.model.cancel = false;\n            speechSynthesis.cancel();\n        });\n    }\n    speak() {\n        let utterance = new SpeechSynthesisUtterance(this.model.speak.text);\n        utterance.pitch = this.model.speak.pitch;\n        utterance.volume = this.model.speak.volume;\n        utterance.rate = this.model.speak.rate;\n        if (this.model.voices) {\n            for (let voice of this.voices) {\n                if (voice.name === this.model.speak.voice)\n                    utterance.voice = voice;\n            }\n        }\n        utterance.onpause = () => this.model.paused = true;\n        utterance.onstart = () => {\n            this.model.speaking = true;\n            this.model.paused = false;\n            this.model.pending = speechSynthesis.pending;\n        };\n        utterance.onresume = () => this.model.paused = false;\n        utterance.onend = () => {\n            this.model.speaking = false;\n            this.model.paused = false;\n            this.model.pending = speechSynthesis.pending;\n        };\n        speechSynthesis.speak(utterance);\n        this.model.paused = speechSynthesis.paused;\n        this.model.pending = speechSynthesis.pending;\n    }\n    render() {\n        super.render();\n        // Hack: This will make sure voices are assigned when\n        // Bokeh/ Panel is served first time with --show option.\n        if (!this.model.voices)\n            this.model.voices = toVoicesList(this.voices);\n        if (this.model.speak != null && this.model.speak.text)\n            this.speak();\n    }\n}\nexports.TextToSpeechView = TextToSpeechView;\nTextToSpeechView.__name__ = \"TextToSpeechView\";\nclass TextToSpeech extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.TextToSpeech = TextToSpeech;\n_a = TextToSpeech;\nTextToSpeech.__name__ = \"TextToSpeech\";\nTextToSpeech.__module__ = \"panel.models.text_to_speech\";\n(() => {\n    _a.prototype.default_view = TextToSpeechView;\n    _a.define(({ Any, Array, Boolean }) => ({\n        paused: [Boolean, false],\n        pending: [Boolean, false],\n        speaking: [Boolean, false],\n        voices: [Array(Any), []],\n        cancel: [Boolean, false],\n        pause: [Boolean, false],\n        resume: [Boolean, false],\n        speak: [Any, {}],\n    }));\n})();\n//# sourceMappingURL=text_to_speech.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"TextToSpeechView"},{"type":"named","name":"TextToSpeech"}],"externals":[],"shims":[]},"code":{"source":"/* models/text_to_speech.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    function toVoicesList(voices) {\n        var voicesList = [];\n        for (let voice of voices) {\n            var item = {\n                default: voice.default,\n                lang: voice.lang,\n                local_service: voice.localService,\n                name: voice.name,\n                voice_uri: voice.voiceURI,\n            };\n            voicesList.push(item);\n        }\n        return voicesList;\n    }\n    class TextToSpeechView extends layout_1.HTMLBoxView {\n        initialize() {\n            super.initialize();\n            this.model.paused = speechSynthesis.paused;\n            this.model.pending = speechSynthesis.pending;\n            this.model.speaking = speechSynthesis.speaking;\n            // Hack: Keeps speeking for longer texts\n            // https://stackoverflow.com/questions/21947730/chrome-speech-synthesis-with-longer-texts\n            this._callback = window.setInterval(function () {\n                if (!speechSynthesis.paused && speechSynthesis.speaking) {\n                    window.speechSynthesis.resume();\n                }\n            }, 10000);\n            const populateVoiceList = () => {\n                if (typeof speechSynthesis === 'undefined')\n                    return;\n                // According to https://talkrapp.com/speechSynthesis.html not all voices are available\n                // The article includes code for ios to handle this. Might be useful.\n                this.voices = speechSynthesis.getVoices();\n                if (!this.voices)\n                    return;\n                this.model.voices = toVoicesList(this.voices);\n            };\n            populateVoiceList();\n            if (typeof speechSynthesis !== 'undefined' && speechSynthesis.onvoiceschanged !== undefined)\n                speechSynthesis.onvoiceschanged = populateVoiceList;\n        }\n        remove() {\n            if (this._callback != null)\n                clearInterval(this._callback);\n            speechSynthesis.cancel();\n            super.remove();\n        }\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.speak.change, () => {\n                this.speak();\n            });\n            this.connect(this.model.properties.pause.change, () => {\n                this.model.pause = false;\n                speechSynthesis.pause();\n            });\n            this.connect(this.model.properties.resume.change, () => {\n                this.model.resume = false;\n                speechSynthesis.resume();\n            });\n            this.connect(this.model.properties.cancel.change, () => {\n                this.model.cancel = false;\n                speechSynthesis.cancel();\n            });\n        }\n        speak() {\n            let utterance = new SpeechSynthesisUtterance(this.model.speak.text);\n            utterance.pitch = this.model.speak.pitch;\n            utterance.volume = this.model.speak.volume;\n            utterance.rate = this.model.speak.rate;\n            if (this.model.voices) {\n                for (let voice of this.voices) {\n                    if (voice.name === this.model.speak.voice)\n                        utterance.voice = voice;\n                }\n            }\n            utterance.onpause = () => this.model.paused = true;\n            utterance.onstart = () => {\n                this.model.speaking = true;\n                this.model.paused = false;\n                this.model.pending = speechSynthesis.pending;\n            };\n            utterance.onresume = () => this.model.paused = false;\n            utterance.onend = () => {\n                this.model.speaking = false;\n                this.model.paused = false;\n                this.model.pending = speechSynthesis.pending;\n            };\n            speechSynthesis.speak(utterance);\n            this.model.paused = speechSynthesis.paused;\n            this.model.pending = speechSynthesis.pending;\n        }\n        render() {\n            super.render();\n            // Hack: This will make sure voices are assigned when\n            // Bokeh/ Panel is served first time with --show option.\n            if (!this.model.voices)\n                this.model.voices = toVoicesList(this.voices);\n            if (this.model.speak != null && this.model.speak.text)\n                this.speak();\n        }\n    }\n    exports.TextToSpeechView = TextToSpeechView;\n    TextToSpeechView.__name__ = \"TextToSpeechView\";\n    class TextToSpeech extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.TextToSpeech = TextToSpeech;\n    _a = TextToSpeech;\n    TextToSpeech.__name__ = \"TextToSpeech\";\n    TextToSpeech.__module__ = \"panel.models.text_to_speech\";\n    (() => {\n        _a.prototype.default_view = TextToSpeechView;\n        _a.define(({ Any, Array, Boolean }) => ({\n            paused: [Boolean, false],\n            pending: [Boolean, false],\n            speaking: [Boolean, false],\n            voices: [Array(Any), []],\n            cancel: [Boolean, false],\n            pause: [Boolean, false],\n            resume: [Boolean, false],\n            speak: [Any, {}],\n        }));\n    })();\n}\n","min_source":"function _(e,s,i,t,n){var h;t();const o=e(\"cac5f3ed28\");function c(e){var s=[];for(let t of e){var i={default:t.default,lang:t.lang,local_service:t.localService,name:t.name,voice_uri:t.voiceURI};s.push(i)}return s}class p extends o.HTMLBoxView{initialize(){super.initialize(),this.model.paused=speechSynthesis.paused,this.model.pending=speechSynthesis.pending,this.model.speaking=speechSynthesis.speaking,this._callback=window.setInterval((function(){!speechSynthesis.paused&&speechSynthesis.speaking&&window.speechSynthesis.resume()}),1e4);const e=()=>{\"undefined\"!=typeof speechSynthesis&&(this.voices=speechSynthesis.getVoices(),this.voices&&(this.model.voices=c(this.voices)))};e(),\"undefined\"!=typeof speechSynthesis&&void 0!==speechSynthesis.onvoiceschanged&&(speechSynthesis.onvoiceschanged=e)}remove(){null!=this._callback&&clearInterval(this._callback),speechSynthesis.cancel(),super.remove()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.speak.change,(()=>{this.speak()})),this.connect(this.model.properties.pause.change,(()=>{this.model.pause=!1,speechSynthesis.pause()})),this.connect(this.model.properties.resume.change,(()=>{this.model.resume=!1,speechSynthesis.resume()})),this.connect(this.model.properties.cancel.change,(()=>{this.model.cancel=!1,speechSynthesis.cancel()}))}speak(){let e=new SpeechSynthesisUtterance(this.model.speak.text);if(e.pitch=this.model.speak.pitch,e.volume=this.model.speak.volume,e.rate=this.model.speak.rate,this.model.voices)for(let s of this.voices)s.name===this.model.speak.voice&&(e.voice=s);e.onpause=()=>this.model.paused=!0,e.onstart=()=>{this.model.speaking=!0,this.model.paused=!1,this.model.pending=speechSynthesis.pending},e.onresume=()=>this.model.paused=!1,e.onend=()=>{this.model.speaking=!1,this.model.paused=!1,this.model.pending=speechSynthesis.pending},speechSynthesis.speak(e),this.model.paused=speechSynthesis.paused,this.model.pending=speechSynthesis.pending}render(){super.render(),this.model.voices||(this.model.voices=c(this.voices)),null!=this.model.speak&&this.model.speak.text&&this.speak()}}i.TextToSpeechView=p,p.__name__=\"TextToSpeechView\";class a extends o.HTMLBox{constructor(e){super(e)}}i.TextToSpeech=a,h=a,a.__name__=\"TextToSpeech\",a.__module__=\"panel.models.text_to_speech\",h.prototype.default_view=p,h.define((({Any:e,Array:s,Boolean:i})=>({paused:[i,!1],pending:[i,!1],speaking:[i,!1],voices:[s(e),[]],cancel:[i,!1],pause:[i,!1],resume:[i,!1],speak:[e,{}]})))}\n//# sourceMappingURL=text_to_speech.min.js.map","min_map":"{\"version\":3,\"file\":\"text_to_speech.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"layout_1\",\"toVoicesList\",\"voices\",\"voicesList\",\"voice\",\"item\",\"default\",\"lang\",\"local_service\",\"localService\",\"name\",\"voice_uri\",\"voiceURI\",\"push\",\"TextToSpeechView\",\"HTMLBoxView\",\"initialize\",\"super\",\"this\",\"model\",\"paused\",\"speechSynthesis\",\"pending\",\"speaking\",\"_callback\",\"window\",\"setInterval\",\"resume\",\"populateVoiceList\",\"getVoices\",\"undefined\",\"onvoiceschanged\",\"remove\",\"clearInterval\",\"cancel\",\"connect_signals\",\"connect\",\"properties\",\"speak\",\"change\",\"pause\",\"utterance\",\"SpeechSynthesisUtterance\",\"text\",\"pitch\",\"volume\",\"rate\",\"onpause\",\"onstart\",\"onresume\",\"onend\",\"render\",\"__name__\",\"TextToSpeech\",\"HTMLBox\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Any\",\"Array\",\"Boolean\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/icon.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/icon.js","canonical":"models/icon","resolution":"ESM","id":"81d14820f0","hash":"81d14820f08e83d88247c24fcd1cfd68bfc86db9f4838c0c49a7a7f3b88ad7d7","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ToggleIcon = exports.ToggleIconView = void 0;\nvar _a;\nconst tabler_icon_1 = require(\"@bokehjs/models/ui/icons/tabler_icon\");\nconst svg_icon_1 = require(\"@bokehjs/models/ui/icons/svg_icon\");\nconst control_1 = require(\"@bokehjs/models/widgets/control\");\nconst build_views_1 = require(\"@bokehjs/core/build_views\");\nclass ToggleIconView extends control_1.ControlView {\n    *controls() { }\n    remove() {\n        var _b;\n        (_b = this.icon_view) === null || _b === void 0 ? void 0 : _b.remove();\n        super.remove();\n    }\n    async lazy_initialize() {\n        await super.lazy_initialize();\n        this.was_svg_icon = this.is_svg_icon(this.model.icon);\n        this.icon_view = await this.build_icon_model(this.model.icon, this.was_svg_icon);\n    }\n    *children() {\n        yield* super.children();\n        yield this.icon_view;\n    }\n    is_svg_icon(icon) {\n        return icon.trim().startsWith('<svg');\n    }\n    toggle_value() {\n        if (this.model.disabled) {\n            return;\n        }\n        this.model.value = !this.model.value;\n        this.update_icon();\n    }\n    connect_signals() {\n        super.connect_signals();\n        const { icon, active_icon, value, disabled } = this.model.properties;\n        this.on_change([active_icon, icon, value], () => this.update_icon());\n        this.on_change(disabled, () => this.update_cursor());\n    }\n    render() {\n        super.render();\n        this.icon_view.render();\n        this.update_icon();\n        this.update_cursor();\n        this.shadow_el.appendChild(this.icon_view.el);\n    }\n    update_cursor() {\n        this.icon_view.el.style.cursor = this.model.disabled ? 'not-allowed' : 'pointer';\n    }\n    async build_icon_model(icon, is_svg_icon) {\n        const size = this.calculate_size();\n        let icon_model;\n        if (is_svg_icon) {\n            icon_model = new svg_icon_1.SVGIcon({ svg: icon, size: size });\n        }\n        else {\n            icon_model = new tabler_icon_1.TablerIcon({ icon_name: icon, size: size });\n        }\n        const icon_view = await (0, build_views_1.build_view)(icon_model, { parent: this });\n        icon_view.el.addEventListener('click', () => this.toggle_value());\n        return icon_view;\n    }\n    async update_icon() {\n        const icon = this.model.value ? this.get_active_icon() : this.model.icon;\n        const is_svg_icon = this.is_svg_icon(icon);\n        if (this.was_svg_icon !== is_svg_icon) {\n            // If the icon type has changed, we need to rebuild the icon view\n            // and invalidate the old one.\n            const icon_view = await this.build_icon_model(icon, is_svg_icon);\n            icon_view.render();\n            this.icon_view.remove();\n            this.icon_view = icon_view;\n            this.was_svg_icon = is_svg_icon;\n            this.update_cursor();\n            this.shadow_el.appendChild(this.icon_view.el);\n        }\n        else if (is_svg_icon) {\n            this.icon_view.model.svg = icon;\n        }\n        else {\n            this.icon_view.model.icon_name = icon;\n        }\n        this.icon_view.el.style.lineHeight = '0';\n    }\n    get_active_icon() {\n        return this.model.active_icon !== '' ? this.model.active_icon : `${this.model.icon}-filled`;\n    }\n    calculate_size() {\n        var _b, _c;\n        if (this.model.size !== null)\n            return this.model.size;\n        const maxWidth = (_b = this.model.width) !== null && _b !== void 0 ? _b : 15;\n        const maxHeight = (_c = this.model.height) !== null && _c !== void 0 ? _c : 15;\n        const size = Math.max(maxWidth, maxHeight);\n        return `${size}px`;\n    }\n}\nexports.ToggleIconView = ToggleIconView;\nToggleIconView.__name__ = \"ToggleIconView\";\nclass ToggleIcon extends control_1.Control {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.ToggleIcon = ToggleIcon;\n_a = ToggleIcon;\nToggleIcon.__name__ = \"ToggleIcon\";\nToggleIcon.__module__ = \"panel.models.icon\";\n(() => {\n    _a.prototype.default_view = ToggleIconView;\n    _a.define(({ Boolean, Nullable, String }) => ({\n        active_icon: [String, \"\"],\n        icon: [String, \"heart\"],\n        size: [Nullable(String), null],\n        value: [Boolean, false],\n    }));\n})();\n//# sourceMappingURL=icon.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"ToggleIconView"},{"type":"named","name":"ToggleIcon"}],"externals":[],"shims":[]},"code":{"source":"/* models/icon.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const tabler_icon_1 = require(\"@bokehjs/models/ui/icons/tabler_icon\");\n    const svg_icon_1 = require(\"@bokehjs/models/ui/icons/svg_icon\");\n    const control_1 = require(\"@bokehjs/models/widgets/control\");\n    const build_views_1 = require(\"@bokehjs/core/build_views\");\n    class ToggleIconView extends control_1.ControlView {\n        *controls() { }\n        remove() {\n            var _b;\n            (_b = this.icon_view) === null || _b === void 0 ? void 0 : _b.remove();\n            super.remove();\n        }\n        async lazy_initialize() {\n            await super.lazy_initialize();\n            this.was_svg_icon = this.is_svg_icon(this.model.icon);\n            this.icon_view = await this.build_icon_model(this.model.icon, this.was_svg_icon);\n        }\n        *children() {\n            yield* super.children();\n            yield this.icon_view;\n        }\n        is_svg_icon(icon) {\n            return icon.trim().startsWith('<svg');\n        }\n        toggle_value() {\n            if (this.model.disabled) {\n                return;\n            }\n            this.model.value = !this.model.value;\n            this.update_icon();\n        }\n        connect_signals() {\n            super.connect_signals();\n            const { icon, active_icon, value, disabled } = this.model.properties;\n            this.on_change([active_icon, icon, value], () => this.update_icon());\n            this.on_change(disabled, () => this.update_cursor());\n        }\n        render() {\n            super.render();\n            this.icon_view.render();\n            this.update_icon();\n            this.update_cursor();\n            this.shadow_el.appendChild(this.icon_view.el);\n        }\n        update_cursor() {\n            this.icon_view.el.style.cursor = this.model.disabled ? 'not-allowed' : 'pointer';\n        }\n        async build_icon_model(icon, is_svg_icon) {\n            const size = this.calculate_size();\n            let icon_model;\n            if (is_svg_icon) {\n                icon_model = new svg_icon_1.SVGIcon({ svg: icon, size: size });\n            }\n            else {\n                icon_model = new tabler_icon_1.TablerIcon({ icon_name: icon, size: size });\n            }\n            const icon_view = await (0, build_views_1.build_view)(icon_model, { parent: this });\n            icon_view.el.addEventListener('click', () => this.toggle_value());\n            return icon_view;\n        }\n        async update_icon() {\n            const icon = this.model.value ? this.get_active_icon() : this.model.icon;\n            const is_svg_icon = this.is_svg_icon(icon);\n            if (this.was_svg_icon !== is_svg_icon) {\n                // If the icon type has changed, we need to rebuild the icon view\n                // and invalidate the old one.\n                const icon_view = await this.build_icon_model(icon, is_svg_icon);\n                icon_view.render();\n                this.icon_view.remove();\n                this.icon_view = icon_view;\n                this.was_svg_icon = is_svg_icon;\n                this.update_cursor();\n                this.shadow_el.appendChild(this.icon_view.el);\n            }\n            else if (is_svg_icon) {\n                this.icon_view.model.svg = icon;\n            }\n            else {\n                this.icon_view.model.icon_name = icon;\n            }\n            this.icon_view.el.style.lineHeight = '0';\n        }\n        get_active_icon() {\n            return this.model.active_icon !== '' ? this.model.active_icon : `${this.model.icon}-filled`;\n        }\n        calculate_size() {\n            var _b, _c;\n            if (this.model.size !== null)\n                return this.model.size;\n            const maxWidth = (_b = this.model.width) !== null && _b !== void 0 ? _b : 15;\n            const maxHeight = (_c = this.model.height) !== null && _c !== void 0 ? _c : 15;\n            const size = Math.max(maxWidth, maxHeight);\n            return `${size}px`;\n        }\n    }\n    exports.ToggleIconView = ToggleIconView;\n    ToggleIconView.__name__ = \"ToggleIconView\";\n    class ToggleIcon extends control_1.Control {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.ToggleIcon = ToggleIcon;\n    _a = ToggleIcon;\n    ToggleIcon.__name__ = \"ToggleIcon\";\n    ToggleIcon.__module__ = \"panel.models.icon\";\n    (() => {\n        _a.prototype.default_view = ToggleIconView;\n        _a.define(({ Boolean, Nullable, String }) => ({\n            active_icon: [String, \"\"],\n            icon: [String, \"heart\"],\n            size: [Nullable(String), null],\n            value: [Boolean, false],\n        }));\n    })();\n}\n","min_source":"function _(i,e,o,s,t){var n;s();const l=i(\"@bokehjs/models/ui/icons/tabler_icon\"),c=i(\"@bokehjs/models/ui/icons/svg_icon\"),_=i(\"@bokehjs/models/widgets/control\"),a=i(\"@bokehjs/core/build_views\");class d extends _.ControlView{*controls(){}remove(){var i;null===(i=this.icon_view)||void 0===i||i.remove(),super.remove()}async lazy_initialize(){await super.lazy_initialize(),this.was_svg_icon=this.is_svg_icon(this.model.icon),this.icon_view=await this.build_icon_model(this.model.icon,this.was_svg_icon)}*children(){yield*super.children(),yield this.icon_view}is_svg_icon(i){return i.trim().startsWith(\"<svg\")}toggle_value(){this.model.disabled||(this.model.value=!this.model.value,this.update_icon())}connect_signals(){super.connect_signals();const{icon:i,active_icon:e,value:o,disabled:s}=this.model.properties;this.on_change([e,i,o],(()=>this.update_icon())),this.on_change(s,(()=>this.update_cursor()))}render(){super.render(),this.icon_view.render(),this.update_icon(),this.update_cursor(),this.shadow_el.appendChild(this.icon_view.el)}update_cursor(){this.icon_view.el.style.cursor=this.model.disabled?\"not-allowed\":\"pointer\"}async build_icon_model(i,e){const o=this.calculate_size();let s;s=e?new c.SVGIcon({svg:i,size:o}):new l.TablerIcon({icon_name:i,size:o});const t=await(0,a.build_view)(s,{parent:this});return t.el.addEventListener(\"click\",(()=>this.toggle_value())),t}async update_icon(){const i=this.model.value?this.get_active_icon():this.model.icon,e=this.is_svg_icon(i);if(this.was_svg_icon!==e){const o=await this.build_icon_model(i,e);o.render(),this.icon_view.remove(),this.icon_view=o,this.was_svg_icon=e,this.update_cursor(),this.shadow_el.appendChild(this.icon_view.el)}else e?this.icon_view.model.svg=i:this.icon_view.model.icon_name=i;this.icon_view.el.style.lineHeight=\"0\"}get_active_icon(){return\"\"!==this.model.active_icon?this.model.active_icon:`${this.model.icon}-filled`}calculate_size(){var i,e;if(null!==this.model.size)return this.model.size;const o=null!==(i=this.model.width)&&void 0!==i?i:15,s=null!==(e=this.model.height)&&void 0!==e?e:15;return`${Math.max(o,s)}px`}}o.ToggleIconView=d,d.__name__=\"ToggleIconView\";class h extends _.Control{constructor(i){super(i)}}o.ToggleIcon=h,n=h,h.__name__=\"ToggleIcon\",h.__module__=\"panel.models.icon\",n.prototype.default_view=d,n.define((({Boolean:i,Nullable:e,String:o})=>({active_icon:[o,\"\"],icon:[o,\"heart\"],size:[e(o),null],value:[i,!1]})))}\n//# sourceMappingURL=icon.min.js.map","min_map":"{\"version\":3,\"file\":\"icon.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"tabler_icon_1\",\"svg_icon_1\",\"control_1\",\"build_views_1\",\"ToggleIconView\",\"ControlView\",\"controls\",\"remove\",\"_b\",\"this\",\"icon_view\",\"super\",\"lazy_initialize\",\"was_svg_icon\",\"is_svg_icon\",\"model\",\"icon\",\"build_icon_model\",\"children\",\"trim\",\"startsWith\",\"toggle_value\",\"disabled\",\"value\",\"update_icon\",\"connect_signals\",\"active_icon\",\"properties\",\"on_change\",\"update_cursor\",\"render\",\"shadow_el\",\"appendChild\",\"el\",\"style\",\"cursor\",\"size\",\"calculate_size\",\"icon_model\",\"SVGIcon\",\"svg\",\"TablerIcon\",\"icon_name\",\"build_view\",\"parent\",\"addEventListener\",\"get_active_icon\",\"lineHeight\",\"_c\",\"maxWidth\",\"width\",\"maxHeight\",\"height\",\"Math\",\"max\",\"__name__\",\"ToggleIcon\",\"Control\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Boolean\",\"Nullable\",\"String\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/tooltip_icon.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/tooltip_icon.js","canonical":"models/tooltip_icon","resolution":"ESM","id":"74000df4a0","hash":"74000df4a0ca85bfd0b66eb9266a8411078e57408f437a149621bed653f0616b","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TooltipIcon = exports.TooltipIconView = void 0;\nconst tslib_1 = require(\"tslib\");\nvar _a;\nconst tooltip_1 = require(\"@bokehjs/models/ui/tooltip\");\nconst layout_dom_1 = require(\"@bokehjs/models/layouts/layout_dom\");\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst inputs_css_1 = tslib_1.__importStar(require(\"@bokehjs/styles/widgets/inputs.css\")), inputs = inputs_css_1;\nconst icons_css_1 = tslib_1.__importDefault(require(\"@bokehjs/styles/icons.css\"));\nclass TooltipIconView extends layout_dom_1.LayoutDOMView {\n    get child_models() {\n        if (this.model.description == null)\n            return [];\n        return [this.model.description];\n    }\n    connect_signals() {\n        super.connect_signals();\n        const { description } = this.model.properties;\n        this.on_change(description, () => this.update_children());\n    }\n    stylesheets() {\n        return [...super.stylesheets(), inputs_css_1.default, icons_css_1.default];\n    }\n    render() {\n        super.render();\n        const icon_el = (0, dom_1.div)({ class: inputs.icon });\n        this.desc_el = (0, dom_1.div)({ class: inputs.description }, icon_el);\n        this.model.description.target = this.desc_el;\n        let persistent = false;\n        const toggle = (visible) => {\n            this.model.description.setv({\n                visible,\n                closable: persistent,\n            });\n            icon_el.classList.toggle(inputs.opaque, visible && persistent);\n        };\n        this.on_change(this.model.description.properties.visible, () => {\n            const { visible } = this.model.description;\n            if (!visible) {\n                persistent = false;\n            }\n            toggle(visible);\n        });\n        this.desc_el.addEventListener('mouseenter', () => {\n            toggle(true);\n        });\n        this.desc_el.addEventListener('mouseleave', () => {\n            if (!persistent)\n                toggle(false);\n        });\n        document.addEventListener('mousedown', (event) => {\n            const path = event.composedPath();\n            const tooltip_view = this._child_views.get(this.model.description);\n            if (tooltip_view !== undefined && path.includes(tooltip_view.el)) {\n                return;\n            }\n            else if (path.includes(this.desc_el)) {\n                persistent = !persistent;\n                toggle(persistent);\n            }\n            else {\n                persistent = false;\n                toggle(false);\n            }\n        });\n        window.addEventListener('blur', () => {\n            persistent = false;\n            toggle(false);\n        });\n        // Label to get highlight when icon is hovered\n        this.shadow_el.appendChild((0, dom_1.label)(this.desc_el));\n    }\n}\nexports.TooltipIconView = TooltipIconView;\nTooltipIconView.__name__ = \"TooltipIconView\";\nclass TooltipIcon extends layout_dom_1.LayoutDOM {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.TooltipIcon = TooltipIcon;\n_a = TooltipIcon;\nTooltipIcon.__name__ = \"TooltipIcon\";\nTooltipIcon.__module__ = 'panel.models.widgets';\n(() => {\n    _a.prototype.default_view = TooltipIconView;\n    _a.define(({ Ref }) => ({\n        description: [Ref(tooltip_1.Tooltip), new tooltip_1.Tooltip()],\n    }));\n})();\n//# sourceMappingURL=tooltip_icon.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"TooltipIconView"},{"type":"named","name":"TooltipIcon"}],"externals":[],"shims":[]},"code":{"source":"/* models/tooltip_icon.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    var _a;\n    const tooltip_1 = require(\"@bokehjs/models/ui/tooltip\");\n    const layout_dom_1 = require(\"@bokehjs/models/layouts/layout_dom\");\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const inputs_css_1 = tslib_1.__importStar(require(\"@bokehjs/styles/widgets/inputs.css\")), inputs = inputs_css_1;\n    const icons_css_1 = tslib_1.__importDefault(require(\"@bokehjs/styles/icons.css\"));\n    class TooltipIconView extends layout_dom_1.LayoutDOMView {\n        get child_models() {\n            if (this.model.description == null)\n                return [];\n            return [this.model.description];\n        }\n        connect_signals() {\n            super.connect_signals();\n            const { description } = this.model.properties;\n            this.on_change(description, () => this.update_children());\n        }\n        stylesheets() {\n            return [...super.stylesheets(), inputs_css_1.default, icons_css_1.default];\n        }\n        render() {\n            super.render();\n            const icon_el = (0, dom_1.div)({ class: inputs.icon });\n            this.desc_el = (0, dom_1.div)({ class: inputs.description }, icon_el);\n            this.model.description.target = this.desc_el;\n            let persistent = false;\n            const toggle = (visible) => {\n                this.model.description.setv({\n                    visible,\n                    closable: persistent,\n                });\n                icon_el.classList.toggle(inputs.opaque, visible && persistent);\n            };\n            this.on_change(this.model.description.properties.visible, () => {\n                const { visible } = this.model.description;\n                if (!visible) {\n                    persistent = false;\n                }\n                toggle(visible);\n            });\n            this.desc_el.addEventListener('mouseenter', () => {\n                toggle(true);\n            });\n            this.desc_el.addEventListener('mouseleave', () => {\n                if (!persistent)\n                    toggle(false);\n            });\n            document.addEventListener('mousedown', (event) => {\n                const path = event.composedPath();\n                const tooltip_view = this._child_views.get(this.model.description);\n                if (tooltip_view !== undefined && path.includes(tooltip_view.el)) {\n                    return;\n                }\n                else if (path.includes(this.desc_el)) {\n                    persistent = !persistent;\n                    toggle(persistent);\n                }\n                else {\n                    persistent = false;\n                    toggle(false);\n                }\n            });\n            window.addEventListener('blur', () => {\n                persistent = false;\n                toggle(false);\n            });\n            // Label to get highlight when icon is hovered\n            this.shadow_el.appendChild((0, dom_1.label)(this.desc_el));\n        }\n    }\n    exports.TooltipIconView = TooltipIconView;\n    TooltipIconView.__name__ = \"TooltipIconView\";\n    class TooltipIcon extends layout_dom_1.LayoutDOM {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.TooltipIcon = TooltipIcon;\n    _a = TooltipIcon;\n    TooltipIcon.__name__ = \"TooltipIcon\";\n    TooltipIcon.__module__ = 'panel.models.widgets';\n    (() => {\n        _a.prototype.default_view = TooltipIconView;\n        _a.define(({ Ref }) => ({\n            description: [Ref(tooltip_1.Tooltip), new tooltip_1.Tooltip()],\n        }));\n    })();\n}\n","min_source":"function _(e,s,t,o,i){o();const l=e(\"tslib\");var d;const n=e(\"@bokehjs/models/ui/tooltip\"),c=e(\"@bokehjs/models/layouts/layout_dom\"),r=e(\"@bokehjs/core/dom\"),p=l.__importStar(e(\"@bokehjs/styles/widgets/inputs.css\")),a=p,h=l.__importDefault(e(\"@bokehjs/styles/icons.css\"));class _ extends c.LayoutDOMView{get child_models(){return null==this.model.description?[]:[this.model.description]}connect_signals(){super.connect_signals();const{description:e}=this.model.properties;this.on_change(e,(()=>this.update_children()))}stylesheets(){return[...super.stylesheets(),p.default,h.default]}render(){super.render();const e=(0,r.div)({class:a.icon});this.desc_el=(0,r.div)({class:a.description},e),this.model.description.target=this.desc_el;let s=!1;const t=t=>{this.model.description.setv({visible:t,closable:s}),e.classList.toggle(a.opaque,t&&s)};this.on_change(this.model.description.properties.visible,(()=>{const{visible:e}=this.model.description;e||(s=!1),t(e)})),this.desc_el.addEventListener(\"mouseenter\",(()=>{t(!0)})),this.desc_el.addEventListener(\"mouseleave\",(()=>{s||t(!1)})),document.addEventListener(\"mousedown\",(e=>{const o=e.composedPath(),i=this._child_views.get(this.model.description);void 0!==i&&o.includes(i.el)||(o.includes(this.desc_el)?(s=!s,t(s)):(s=!1,t(!1)))})),window.addEventListener(\"blur\",(()=>{s=!1,t(!1)})),this.shadow_el.appendChild((0,r.label)(this.desc_el))}}t.TooltipIconView=_,_.__name__=\"TooltipIconView\";class u extends c.LayoutDOM{constructor(e){super(e)}}t.TooltipIcon=u,d=u,u.__name__=\"TooltipIcon\",u.__module__=\"panel.models.widgets\",d.prototype.default_view=_,d.define((({Ref:e})=>({description:[e(n.Tooltip),new n.Tooltip]})))}\n//# sourceMappingURL=tooltip_icon.min.js.map","min_map":"{\"version\":3,\"file\":\"tooltip_icon.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"tslib_1\",\"_a\",\"tooltip_1\",\"layout_dom_1\",\"dom_1\",\"inputs_css_1\",\"__importStar\",\"inputs\",\"icons_css_1\",\"__importDefault\",\"TooltipIconView\",\"LayoutDOMView\",\"child_models\",\"this\",\"model\",\"description\",\"connect_signals\",\"super\",\"properties\",\"on_change\",\"update_children\",\"stylesheets\",\"default\",\"render\",\"icon_el\",\"div\",\"class\",\"icon\",\"desc_el\",\"target\",\"persistent\",\"toggle\",\"visible\",\"setv\",\"closable\",\"classList\",\"opaque\",\"addEventListener\",\"document\",\"event\",\"path\",\"composedPath\",\"tooltip_view\",\"_child_views\",\"get\",\"undefined\",\"includes\",\"el\",\"window\",\"shadow_el\",\"appendChild\",\"label\",\"__name__\",\"TooltipIcon\",\"LayoutDOM\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Ref\",\"Tooltip\"],\"sources\":[\"0\"],\"mappings\":\"AAA6B,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAC1ED,IACA,MAAME,EAAUL,EAAQ,SACxB,IAAIM,EACJ,MAAMC,EAAYP,EAAQ,8BACpBQ,EAAeR,EAAQ,sCACvBS,EAAQT,EAAQ,qBAChBU,EAAeL,EAAQM,aAAaX,EAAQ,uCAAwCY,EAASF,EAC7FG,EAAcR,EAAQS,gBAAgBd,EAAQ,8BACpD,MAAMe,UAAwBP,EAAaQ,cACvC,gBAAIC,GACA,OAA8B,MAA1BC,KAAKC,MAAMC,YACJ,GACJ,CAACF,KAAKC,MAAMC,YACvB,CACA,eAAAC,GACIC,MAAMD,kBACN,MAAMD,YAAEA,GAAgBF,KAAKC,MAAMI,WACnCL,KAAKM,UAAUJ,GAAa,IAAMF,KAAKO,mBAC3C,CACA,WAAAC,GACI,MAAO,IAAIJ,MAAMI,cAAehB,EAAaiB,QAASd,EAAYc,QACtE,CACA,MAAAC,GACIN,MAAMM,SACN,MAAMC,GAAU,EAAIpB,EAAMqB,KAAK,CAAEC,MAAOnB,EAAOoB,OAC/Cd,KAAKe,SAAU,EAAIxB,EAAMqB,KAAK,CAAEC,MAAOnB,EAAOQ,aAAeS,GAC7DX,KAAKC,MAAMC,YAAYc,OAAShB,KAAKe,QACrC,IAAIE,GAAa,EACjB,MAAMC,EAAUC,IACZnB,KAAKC,MAAMC,YAAYkB,KAAK,CACxBD,UACAE,SAAUJ,IAEdN,EAAQW,UAAUJ,OAAOxB,EAAO6B,OAAQJ,GAAWF,EAAW,EAElEjB,KAAKM,UAAUN,KAAKC,MAAMC,YAAYG,WAAWc,SAAS,KACtD,MAAMA,QAAEA,GAAYnB,KAAKC,MAAMC,YAC1BiB,IACDF,GAAa,GAEjBC,EAAOC,EAAQ,IAEnBnB,KAAKe,QAAQS,iBAAiB,cAAc,KACxCN,GAAO,EAAK,IAEhBlB,KAAKe,QAAQS,iBAAiB,cAAc,KACnCP,GACDC,GAAO,EAAM,IAErBO,SAASD,iBAAiB,aAAcE,IACpC,MAAMC,EAAOD,EAAME,eACbC,EAAe7B,KAAK8B,aAAaC,IAAI/B,KAAKC,MAAMC,kBACjC8B,IAAjBH,GAA8BF,EAAKM,SAASJ,EAAaK,MAGpDP,EAAKM,SAASjC,KAAKe,UACxBE,GAAcA,EACdC,EAAOD,KAGPA,GAAa,EACbC,GAAO,IACX,IAEJiB,OAAOX,iBAAiB,QAAQ,KAC5BP,GAAa,EACbC,GAAO,EAAM,IAGjBlB,KAAKoC,UAAUC,aAAY,EAAI9C,EAAM+C,OAAOtC,KAAKe,SACrD,EAEJ/B,EAAQa,gBAAkBA,EAC1BA,EAAgB0C,SAAW,kBAC3B,MAAMC,UAAoBlD,EAAamD,UACnC,WAAAC,CAAYC,GACRvC,MAAMuC,EACV,EAEJ3D,EAAQwD,YAAcA,EACtBpD,EAAKoD,EACLA,EAAYD,SAAW,cACvBC,EAAYI,WAAa,uBAErBxD,EAAGyD,UAAUC,aAAejD,EAC5BT,EAAG2D,QAAO,EAAGC,UAAU,CACnB9C,YAAa,CAAC8C,EAAI3D,EAAU4D,SAAU,IAAI5D,EAAU4D,YAGhE\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/trend.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/trend.js","canonical":"models/trend","resolution":"ESM","id":"c2c4524e04","hash":"c2c4524e0427800a49a6de5c1cd465fba407ae04978c0be73bb54fa108f4060b","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TrendIndicator = exports.TrendIndicatorView = void 0;\nvar _a;\nconst layout_1 = require(\"./layout\");\nconst build_views_1 = require(\"@bokehjs/core/build_views\");\nconst plots_1 = require(\"@bokehjs/models/plots\");\nconst glyphs_1 = require(\"@bokehjs/models/glyphs\");\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst column_data_source_1 = require(\"@bokehjs/models/sources/column_data_source\");\nconst formatters_1 = require(\"@bokehjs/models/formatters\");\nconst red = \"#d9534f\";\nconst green = \"#5cb85c\";\nconst blue = \"#428bca\";\nclass TrendIndicatorView extends layout_1.HTMLBoxView {\n    initialize() {\n        super.initialize();\n        this.containerDiv = (0, dom_1.div)({ style: \"height:100%; width:100%;\" });\n        this.titleDiv = (0, dom_1.div)({ style: \"font-size: 1em; word-wrap: break-word;\" });\n        this.valueDiv = (0, dom_1.div)({ style: \"font-size: 2em\" });\n        this.value2Div = (0, dom_1.div)({ style: \"font-size: 1em; opacity: 0.5; display: inline\" });\n        this.changeDiv = (0, dom_1.div)({ style: \"font-size: 1em; opacity: 0.5; display: inline\" });\n        this.textDiv = (0, dom_1.div)({}, this.titleDiv, this.valueDiv, (0, dom_1.div)({}, this.changeDiv, this.value2Div));\n        this.updateTitle();\n        this.updateValue();\n        this.updateValue2();\n        this.updateValueChange();\n        this.updateTextFontSize();\n        this.plotDiv = (0, dom_1.div)({});\n        this.containerDiv = (0, dom_1.div)({ style: \"height:100%; width:100%\" }, this.textDiv, this.plotDiv);\n        this.updateLayout();\n    }\n    connect_signals() {\n        super.connect_signals();\n        const { pos_color, neg_color } = this.model.properties;\n        this.on_change([pos_color, neg_color], () => this.updateValueChange());\n        const { plot_color, plot_type, width, height, sizing_mode } = this.model.properties;\n        this.on_change([plot_color, plot_type, width, height, sizing_mode], () => this.render());\n        this.connect(this.model.properties.title.change, () => this.updateTitle(true));\n        this.connect(this.model.properties.value.change, () => this.updateValue(true));\n        this.connect(this.model.properties.value_change.change, () => this.updateValue2(true));\n        this.connect(this.model.properties.layout.change, () => this.updateLayout());\n    }\n    async render() {\n        super.render();\n        this.shadow_el.appendChild(this.containerDiv);\n        await this.setPlot();\n    }\n    async setPlot() {\n        this.plot = new plots_1.Plot({\n            background_fill_color: null,\n            border_fill_color: null,\n            outline_line_color: null,\n            min_border: 0,\n            sizing_mode: \"stretch_both\",\n            toolbar_location: null,\n        });\n        var source = this.model.source;\n        if (this.model.plot_type === \"line\") {\n            var line = new glyphs_1.Line({\n                x: { field: this.model.plot_x },\n                y: { field: this.model.plot_y },\n                line_width: 4,\n                line_color: this.model.plot_color,\n            });\n            this.plot.add_glyph(line, source);\n        }\n        else if (this.model.plot_type === \"step\") {\n            var step = new glyphs_1.Step({\n                x: { field: this.model.plot_x },\n                y: { field: this.model.plot_y },\n                line_width: 3,\n                line_color: this.model.plot_color,\n            });\n            this.plot.add_glyph(step, source);\n        }\n        else if (this.model.plot_type === \"area\") {\n            var varea = new glyphs_1.VArea({\n                x: { field: this.model.plot_x },\n                y1: { field: this.model.plot_y },\n                y2: 0,\n                fill_color: this.model.plot_color,\n                fill_alpha: 0.5,\n            });\n            this.plot.add_glyph(varea, source);\n            var line = new glyphs_1.Line({\n                x: { field: this.model.plot_x },\n                y: { field: this.model.plot_y },\n                line_width: 3,\n                line_color: this.model.plot_color,\n            });\n            this.plot.add_glyph(line, source);\n        }\n        else {\n            var vbar = new glyphs_1.VBar({\n                x: { field: this.model.plot_x },\n                top: { field: this.model.plot_y },\n                width: 0.9,\n                line_color: null,\n                fill_color: this.model.plot_color\n            });\n            this.plot.add_glyph(vbar, source);\n        }\n        const view = await (0, build_views_1.build_view)(this.plot);\n        this.plotDiv.innerHTML = \"\";\n        view.render_to(this.plotDiv);\n    }\n    after_layout() {\n        super.after_layout();\n        this.updateTextFontSize();\n    }\n    updateTextFontSize() {\n        this.updateTextFontSizeColumn();\n    }\n    updateTextFontSizeColumn() {\n        let elWidth = this.containerDiv.clientWidth;\n        let elHeight = this.containerDiv.clientHeight;\n        if (this.model.layout === \"column\")\n            elHeight = Math.round(elHeight / 2);\n        else\n            elWidth = Math.round(elWidth / 2);\n        const widthTitle = this.model.title.length;\n        const widthValue = 2 * this._value_format.length;\n        const widthValue2 = this._value_change_format.length + 1;\n        const widthConstraint1 = elWidth / widthTitle * 2.0;\n        const widthConstraint2 = elWidth / widthValue * 1.8;\n        const widthConstraint3 = elWidth / widthValue2 * 2.0;\n        const heightConstraint = elHeight / 6;\n        const fontSize = Math.min(widthConstraint1, widthConstraint2, widthConstraint3, heightConstraint);\n        this.textDiv.style.fontSize = Math.trunc(fontSize) + \"px\";\n        this.textDiv.style.lineHeight = \"1.3\";\n    }\n    updateTitle(update_fontsize = false) {\n        this.titleDiv.innerText = this.model.title;\n        if (update_fontsize)\n            this.updateTextFontSize();\n    }\n    updateValue(update_fontsize = false) {\n        this._value_format = this.model.formatter.doFormat([this.model.value], { loc: 0 })[0];\n        this.valueDiv.innerText = this._value_format;\n        if (update_fontsize)\n            this.updateTextFontSize();\n    }\n    updateValue2(update_fontsize = false) {\n        this._value_change_format = this.model.change_formatter.doFormat([this.model.value_change], { loc: 0 })[0];\n        this.value2Div.innerText = this._value_change_format;\n        this.updateValueChange();\n        if (update_fontsize)\n            this.updateTextFontSize();\n    }\n    updateValueChange() {\n        if (this.model.value_change > 0) {\n            this.changeDiv.innerHTML = \"&#9650;\";\n            this.changeDiv.style.color = this.model.pos_color;\n        }\n        else if (this.model.value_change < 0) {\n            this.changeDiv.innerHTML = \"&#9660;\";\n            this.changeDiv.style.color = this.model.neg_color;\n        }\n        else {\n            this.changeDiv.innerHTML = \"&nbsp;\";\n            this.changeDiv.style.color = \"inherit\";\n        }\n    }\n    updateLayout() {\n        if (this.model.layout === \"column\") {\n            this.containerDiv.style.display = \"block\";\n            this.textDiv.style.height = \"50%\";\n            this.textDiv.style.width = \"100%\";\n            this.plotDiv.style.height = \"50%\";\n            this.plotDiv.style.width = \"100%\";\n        }\n        else {\n            this.containerDiv.style.display = \"flex\";\n            this.textDiv.style.height = \"100%\";\n            this.textDiv.style.width = \"\";\n            this.plotDiv.style.height = \"100%\";\n            this.plotDiv.style.width = \"\";\n            this.textDiv.style.flex = \"1\";\n            this.plotDiv.style.flex = \"1\";\n        }\n        if (this._has_finished)\n            this.invalidate_layout();\n    }\n}\nexports.TrendIndicatorView = TrendIndicatorView;\nTrendIndicatorView.__name__ = \"TrendIndicatorView\";\nclass TrendIndicator extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.TrendIndicator = TrendIndicator;\n_a = TrendIndicator;\nTrendIndicator.__name__ = \"TrendIndicator\";\nTrendIndicator.__module__ = \"panel.models.trend\";\n(() => {\n    _a.prototype.default_view = TrendIndicatorView;\n    _a.define(({ Number, String, Ref }) => ({\n        description: [String, \"\"],\n        formatter: [Ref(formatters_1.TickFormatter), () => new formatters_1.BasicTickFormatter()],\n        change_formatter: [Ref(formatters_1.TickFormatter), () => new formatters_1.NumeralTickFormatter()],\n        layout: [String, \"column\"],\n        source: [Ref(column_data_source_1.ColumnDataSource)],\n        plot_x: [String, \"x\"],\n        plot_y: [String, \"y\"],\n        plot_color: [String, blue],\n        plot_type: [String, \"bar\"],\n        pos_color: [String, green],\n        neg_color: [String, red],\n        title: [String, \"\"],\n        value: [Number, 0],\n        value_change: [Number, 0],\n    }));\n})();\n//# sourceMappingURL=trend.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"TrendIndicatorView"},{"type":"named","name":"TrendIndicator"}],"externals":[],"shims":[]},"code":{"source":"/* models/trend.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    const build_views_1 = require(\"@bokehjs/core/build_views\");\n    const plots_1 = require(\"@bokehjs/models/plots\");\n    const glyphs_1 = require(\"@bokehjs/models/glyphs\");\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const column_data_source_1 = require(\"@bokehjs/models/sources/column_data_source\");\n    const formatters_1 = require(\"@bokehjs/models/formatters\");\n    const red = \"#d9534f\";\n    const green = \"#5cb85c\";\n    const blue = \"#428bca\";\n    class TrendIndicatorView extends layout_1.HTMLBoxView {\n        initialize() {\n            super.initialize();\n            this.containerDiv = (0, dom_1.div)({ style: \"height:100%; width:100%;\" });\n            this.titleDiv = (0, dom_1.div)({ style: \"font-size: 1em; word-wrap: break-word;\" });\n            this.valueDiv = (0, dom_1.div)({ style: \"font-size: 2em\" });\n            this.value2Div = (0, dom_1.div)({ style: \"font-size: 1em; opacity: 0.5; display: inline\" });\n            this.changeDiv = (0, dom_1.div)({ style: \"font-size: 1em; opacity: 0.5; display: inline\" });\n            this.textDiv = (0, dom_1.div)({}, this.titleDiv, this.valueDiv, (0, dom_1.div)({}, this.changeDiv, this.value2Div));\n            this.updateTitle();\n            this.updateValue();\n            this.updateValue2();\n            this.updateValueChange();\n            this.updateTextFontSize();\n            this.plotDiv = (0, dom_1.div)({});\n            this.containerDiv = (0, dom_1.div)({ style: \"height:100%; width:100%\" }, this.textDiv, this.plotDiv);\n            this.updateLayout();\n        }\n        connect_signals() {\n            super.connect_signals();\n            const { pos_color, neg_color } = this.model.properties;\n            this.on_change([pos_color, neg_color], () => this.updateValueChange());\n            const { plot_color, plot_type, width, height, sizing_mode } = this.model.properties;\n            this.on_change([plot_color, plot_type, width, height, sizing_mode], () => this.render());\n            this.connect(this.model.properties.title.change, () => this.updateTitle(true));\n            this.connect(this.model.properties.value.change, () => this.updateValue(true));\n            this.connect(this.model.properties.value_change.change, () => this.updateValue2(true));\n            this.connect(this.model.properties.layout.change, () => this.updateLayout());\n        }\n        async render() {\n            super.render();\n            this.shadow_el.appendChild(this.containerDiv);\n            await this.setPlot();\n        }\n        async setPlot() {\n            this.plot = new plots_1.Plot({\n                background_fill_color: null,\n                border_fill_color: null,\n                outline_line_color: null,\n                min_border: 0,\n                sizing_mode: \"stretch_both\",\n                toolbar_location: null,\n            });\n            var source = this.model.source;\n            if (this.model.plot_type === \"line\") {\n                var line = new glyphs_1.Line({\n                    x: { field: this.model.plot_x },\n                    y: { field: this.model.plot_y },\n                    line_width: 4,\n                    line_color: this.model.plot_color,\n                });\n                this.plot.add_glyph(line, source);\n            }\n            else if (this.model.plot_type === \"step\") {\n                var step = new glyphs_1.Step({\n                    x: { field: this.model.plot_x },\n                    y: { field: this.model.plot_y },\n                    line_width: 3,\n                    line_color: this.model.plot_color,\n                });\n                this.plot.add_glyph(step, source);\n            }\n            else if (this.model.plot_type === \"area\") {\n                var varea = new glyphs_1.VArea({\n                    x: { field: this.model.plot_x },\n                    y1: { field: this.model.plot_y },\n                    y2: 0,\n                    fill_color: this.model.plot_color,\n                    fill_alpha: 0.5,\n                });\n                this.plot.add_glyph(varea, source);\n                var line = new glyphs_1.Line({\n                    x: { field: this.model.plot_x },\n                    y: { field: this.model.plot_y },\n                    line_width: 3,\n                    line_color: this.model.plot_color,\n                });\n                this.plot.add_glyph(line, source);\n            }\n            else {\n                var vbar = new glyphs_1.VBar({\n                    x: { field: this.model.plot_x },\n                    top: { field: this.model.plot_y },\n                    width: 0.9,\n                    line_color: null,\n                    fill_color: this.model.plot_color\n                });\n                this.plot.add_glyph(vbar, source);\n            }\n            const view = await (0, build_views_1.build_view)(this.plot);\n            this.plotDiv.innerHTML = \"\";\n            view.render_to(this.plotDiv);\n        }\n        after_layout() {\n            super.after_layout();\n            this.updateTextFontSize();\n        }\n        updateTextFontSize() {\n            this.updateTextFontSizeColumn();\n        }\n        updateTextFontSizeColumn() {\n            let elWidth = this.containerDiv.clientWidth;\n            let elHeight = this.containerDiv.clientHeight;\n            if (this.model.layout === \"column\")\n                elHeight = Math.round(elHeight / 2);\n            else\n                elWidth = Math.round(elWidth / 2);\n            const widthTitle = this.model.title.length;\n            const widthValue = 2 * this._value_format.length;\n            const widthValue2 = this._value_change_format.length + 1;\n            const widthConstraint1 = elWidth / widthTitle * 2.0;\n            const widthConstraint2 = elWidth / widthValue * 1.8;\n            const widthConstraint3 = elWidth / widthValue2 * 2.0;\n            const heightConstraint = elHeight / 6;\n            const fontSize = Math.min(widthConstraint1, widthConstraint2, widthConstraint3, heightConstraint);\n            this.textDiv.style.fontSize = Math.trunc(fontSize) + \"px\";\n            this.textDiv.style.lineHeight = \"1.3\";\n        }\n        updateTitle(update_fontsize = false) {\n            this.titleDiv.innerText = this.model.title;\n            if (update_fontsize)\n                this.updateTextFontSize();\n        }\n        updateValue(update_fontsize = false) {\n            this._value_format = this.model.formatter.doFormat([this.model.value], { loc: 0 })[0];\n            this.valueDiv.innerText = this._value_format;\n            if (update_fontsize)\n                this.updateTextFontSize();\n        }\n        updateValue2(update_fontsize = false) {\n            this._value_change_format = this.model.change_formatter.doFormat([this.model.value_change], { loc: 0 })[0];\n            this.value2Div.innerText = this._value_change_format;\n            this.updateValueChange();\n            if (update_fontsize)\n                this.updateTextFontSize();\n        }\n        updateValueChange() {\n            if (this.model.value_change > 0) {\n                this.changeDiv.innerHTML = \"&#9650;\";\n                this.changeDiv.style.color = this.model.pos_color;\n            }\n            else if (this.model.value_change < 0) {\n                this.changeDiv.innerHTML = \"&#9660;\";\n                this.changeDiv.style.color = this.model.neg_color;\n            }\n            else {\n                this.changeDiv.innerHTML = \"&nbsp;\";\n                this.changeDiv.style.color = \"inherit\";\n            }\n        }\n        updateLayout() {\n            if (this.model.layout === \"column\") {\n                this.containerDiv.style.display = \"block\";\n                this.textDiv.style.height = \"50%\";\n                this.textDiv.style.width = \"100%\";\n                this.plotDiv.style.height = \"50%\";\n                this.plotDiv.style.width = \"100%\";\n            }\n            else {\n                this.containerDiv.style.display = \"flex\";\n                this.textDiv.style.height = \"100%\";\n                this.textDiv.style.width = \"\";\n                this.plotDiv.style.height = \"100%\";\n                this.plotDiv.style.width = \"\";\n                this.textDiv.style.flex = \"1\";\n                this.plotDiv.style.flex = \"1\";\n            }\n            if (this._has_finished)\n                this.invalidate_layout();\n        }\n    }\n    exports.TrendIndicatorView = TrendIndicatorView;\n    TrendIndicatorView.__name__ = \"TrendIndicatorView\";\n    class TrendIndicator extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.TrendIndicator = TrendIndicator;\n    _a = TrendIndicator;\n    TrendIndicator.__name__ = \"TrendIndicator\";\n    TrendIndicator.__module__ = \"panel.models.trend\";\n    (() => {\n        _a.prototype.default_view = TrendIndicatorView;\n        _a.define(({ Number, String, Ref }) => ({\n            description: [String, \"\"],\n            formatter: [Ref(formatters_1.TickFormatter), () => new formatters_1.BasicTickFormatter()],\n            change_formatter: [Ref(formatters_1.TickFormatter), () => new formatters_1.NumeralTickFormatter()],\n            layout: [String, \"column\"],\n            source: [Ref(column_data_source_1.ColumnDataSource)],\n            plot_x: [String, \"x\"],\n            plot_y: [String, \"y\"],\n            plot_color: [String, blue],\n            plot_type: [String, \"bar\"],\n            pos_color: [String, green],\n            neg_color: [String, red],\n            title: [String, \"\"],\n            value: [Number, 0],\n            value_change: [Number, 0],\n        }));\n    })();\n}\n","min_source":"function _(t,e,i,l,o){var s;l();const h=t(\"cac5f3ed28\"),a=t(\"@bokehjs/core/build_views\"),n=t(\"@bokehjs/models/plots\"),d=t(\"@bokehjs/models/glyphs\"),r=t(\"@bokehjs/core/dom\"),c=t(\"@bokehjs/models/sources/column_data_source\"),p=t(\"@bokehjs/models/formatters\");class _ extends h.HTMLBoxView{initialize(){super.initialize(),this.containerDiv=(0,r.div)({style:\"height:100%; width:100%;\"}),this.titleDiv=(0,r.div)({style:\"font-size: 1em; word-wrap: break-word;\"}),this.valueDiv=(0,r.div)({style:\"font-size: 2em\"}),this.value2Div=(0,r.div)({style:\"font-size: 1em; opacity: 0.5; display: inline\"}),this.changeDiv=(0,r.div)({style:\"font-size: 1em; opacity: 0.5; display: inline\"}),this.textDiv=(0,r.div)({},this.titleDiv,this.valueDiv,(0,r.div)({},this.changeDiv,this.value2Div)),this.updateTitle(),this.updateValue(),this.updateValue2(),this.updateValueChange(),this.updateTextFontSize(),this.plotDiv=(0,r.div)({}),this.containerDiv=(0,r.div)({style:\"height:100%; width:100%\"},this.textDiv,this.plotDiv),this.updateLayout()}connect_signals(){super.connect_signals();const{pos_color:t,neg_color:e}=this.model.properties;this.on_change([t,e],(()=>this.updateValueChange()));const{plot_color:i,plot_type:l,width:o,height:s,sizing_mode:h}=this.model.properties;this.on_change([i,l,o,s,h],(()=>this.render())),this.connect(this.model.properties.title.change,(()=>this.updateTitle(!0))),this.connect(this.model.properties.value.change,(()=>this.updateValue(!0))),this.connect(this.model.properties.value_change.change,(()=>this.updateValue2(!0))),this.connect(this.model.properties.layout.change,(()=>this.updateLayout()))}async render(){super.render(),this.shadow_el.appendChild(this.containerDiv),await this.setPlot()}async setPlot(){this.plot=new n.Plot({background_fill_color:null,border_fill_color:null,outline_line_color:null,min_border:0,sizing_mode:\"stretch_both\",toolbar_location:null});var t=this.model.source;if(\"line\"===this.model.plot_type){var e=new d.Line({x:{field:this.model.plot_x},y:{field:this.model.plot_y},line_width:4,line_color:this.model.plot_color});this.plot.add_glyph(e,t)}else if(\"step\"===this.model.plot_type){var i=new d.Step({x:{field:this.model.plot_x},y:{field:this.model.plot_y},line_width:3,line_color:this.model.plot_color});this.plot.add_glyph(i,t)}else if(\"area\"===this.model.plot_type){var l=new d.VArea({x:{field:this.model.plot_x},y1:{field:this.model.plot_y},y2:0,fill_color:this.model.plot_color,fill_alpha:.5});this.plot.add_glyph(l,t);e=new d.Line({x:{field:this.model.plot_x},y:{field:this.model.plot_y},line_width:3,line_color:this.model.plot_color});this.plot.add_glyph(e,t)}else{var o=new d.VBar({x:{field:this.model.plot_x},top:{field:this.model.plot_y},width:.9,line_color:null,fill_color:this.model.plot_color});this.plot.add_glyph(o,t)}const s=await(0,a.build_view)(this.plot);this.plotDiv.innerHTML=\"\",s.render_to(this.plotDiv)}after_layout(){super.after_layout(),this.updateTextFontSize()}updateTextFontSize(){this.updateTextFontSizeColumn()}updateTextFontSizeColumn(){let t=this.containerDiv.clientWidth,e=this.containerDiv.clientHeight;\"column\"===this.model.layout?e=Math.round(e/2):t=Math.round(t/2);const i=t/this.model.title.length*2,l=t/(2*this._value_format.length)*1.8,o=t/(this._value_change_format.length+1)*2,s=e/6,h=Math.min(i,l,o,s);this.textDiv.style.fontSize=Math.trunc(h)+\"px\",this.textDiv.style.lineHeight=\"1.3\"}updateTitle(t=!1){this.titleDiv.innerText=this.model.title,t&&this.updateTextFontSize()}updateValue(t=!1){this._value_format=this.model.formatter.doFormat([this.model.value],{loc:0})[0],this.valueDiv.innerText=this._value_format,t&&this.updateTextFontSize()}updateValue2(t=!1){this._value_change_format=this.model.change_formatter.doFormat([this.model.value_change],{loc:0})[0],this.value2Div.innerText=this._value_change_format,this.updateValueChange(),t&&this.updateTextFontSize()}updateValueChange(){this.model.value_change>0?(this.changeDiv.innerHTML=\"&#9650;\",this.changeDiv.style.color=this.model.pos_color):this.model.value_change<0?(this.changeDiv.innerHTML=\"&#9660;\",this.changeDiv.style.color=this.model.neg_color):(this.changeDiv.innerHTML=\"&nbsp;\",this.changeDiv.style.color=\"inherit\")}updateLayout(){\"column\"===this.model.layout?(this.containerDiv.style.display=\"block\",this.textDiv.style.height=\"50%\",this.textDiv.style.width=\"100%\",this.plotDiv.style.height=\"50%\",this.plotDiv.style.width=\"100%\"):(this.containerDiv.style.display=\"flex\",this.textDiv.style.height=\"100%\",this.textDiv.style.width=\"\",this.plotDiv.style.height=\"100%\",this.plotDiv.style.width=\"\",this.textDiv.style.flex=\"1\",this.plotDiv.style.flex=\"1\"),this._has_finished&&this.invalidate_layout()}}i.TrendIndicatorView=_,_.__name__=\"TrendIndicatorView\";class u extends h.HTMLBox{constructor(t){super(t)}}i.TrendIndicator=u,s=u,u.__name__=\"TrendIndicator\",u.__module__=\"panel.models.trend\",s.prototype.default_view=_,s.define((({Number:t,String:e,Ref:i})=>({description:[e,\"\"],formatter:[i(p.TickFormatter),()=>new p.BasicTickFormatter],change_formatter:[i(p.TickFormatter),()=>new p.NumeralTickFormatter],layout:[e,\"column\"],source:[i(c.ColumnDataSource)],plot_x:[e,\"x\"],plot_y:[e,\"y\"],plot_color:[e,\"#428bca\"],plot_type:[e,\"bar\"],pos_color:[e,\"#5cb85c\"],neg_color:[e,\"#d9534f\"],title:[e,\"\"],value:[t,0],value_change:[t,0]})))}\n//# sourceMappingURL=trend.min.js.map","min_map":"{\"version\":3,\"file\":\"trend.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"layout_1\",\"build_views_1\",\"plots_1\",\"glyphs_1\",\"dom_1\",\"column_data_source_1\",\"formatters_1\",\"TrendIndicatorView\",\"HTMLBoxView\",\"initialize\",\"super\",\"this\",\"containerDiv\",\"div\",\"style\",\"titleDiv\",\"valueDiv\",\"value2Div\",\"changeDiv\",\"textDiv\",\"updateTitle\",\"updateValue\",\"updateValue2\",\"updateValueChange\",\"updateTextFontSize\",\"plotDiv\",\"updateLayout\",\"connect_signals\",\"pos_color\",\"neg_color\",\"model\",\"properties\",\"on_change\",\"plot_color\",\"plot_type\",\"width\",\"height\",\"sizing_mode\",\"render\",\"connect\",\"title\",\"change\",\"value\",\"value_change\",\"layout\",\"shadow_el\",\"appendChild\",\"setPlot\",\"plot\",\"Plot\",\"background_fill_color\",\"border_fill_color\",\"outline_line_color\",\"min_border\",\"toolbar_location\",\"source\",\"line\",\"Line\",\"x\",\"field\",\"plot_x\",\"y\",\"plot_y\",\"line_width\",\"line_color\",\"add_glyph\",\"step\",\"Step\",\"varea\",\"VArea\",\"y1\",\"y2\",\"fill_color\",\"fill_alpha\",\"vbar\",\"VBar\",\"top\",\"view\",\"build_view\",\"innerHTML\",\"render_to\",\"after_layout\",\"updateTextFontSizeColumn\",\"elWidth\",\"clientWidth\",\"elHeight\",\"clientHeight\",\"Math\",\"round\",\"widthConstraint1\",\"length\",\"widthConstraint2\",\"_value_format\",\"widthConstraint3\",\"_value_change_format\",\"heightConstraint\",\"fontSize\",\"min\",\"trunc\",\"lineHeight\",\"update_fontsize\",\"innerText\",\"formatter\",\"doFormat\",\"loc\",\"change_formatter\",\"color\",\"display\",\"flex\",\"_has_finished\",\"invalidate_layout\",\"__name__\",\"TrendIndicator\",\"HTMLBox\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Number\",\"String\",\"Ref\",\"description\",\"TickFormatter\",\"BasicTickFormatter\",\"NumeralTickFormatter\",\"ColumnDataSource\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/vega.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/vega.js","canonical":"models/vega","resolution":"ESM","id":"b396729d22","hash":"b396729d22335ca30f5a99f1df2ccd181bbb79171f72a938d4ebf2121feb9a2b","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VegaPlot = exports.VegaPlotView = exports.VegaEvent = void 0;\nvar _a, _b;\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst bokeh_events_1 = require(\"@bokehjs/core/bokeh_events\");\nconst types_1 = require(\"@bokehjs/core/util/types\");\nconst layout_dom_1 = require(\"@bokehjs/models/layouts/layout_dom\");\nconst layout_1 = require(\"./layout\");\nconst debounce_1 = require(\"debounce\");\nclass VegaEvent extends bokeh_events_1.ModelEvent {\n    constructor(data) {\n        super();\n        this.data = data;\n    }\n    get event_values() {\n        return { model: this.origin, data: this.data };\n    }\n}\nexports.VegaEvent = VegaEvent;\n_a = VegaEvent;\nVegaEvent.__name__ = \"VegaEvent\";\n(() => {\n    _a.prototype.event_name = \"vega_event\";\n})();\nclass VegaPlotView extends layout_dom_1.LayoutDOMView {\n    constructor() {\n        super(...arguments);\n        this._rendered = false;\n    }\n    connect_signals() {\n        super.connect_signals();\n        const { data, show_actions, theme } = this.model.properties;\n        this._replot = (0, debounce_1.debounce)(() => this._plot(), 20);\n        this.on_change([data, show_actions, theme], () => {\n            this._replot();\n        });\n        this.connect(this.model.properties.data_sources.change, () => this._connect_sources());\n        this.connect(this.model.properties.events.change, () => {\n            for (const event of this.model.events) {\n                if (this._callbacks.indexOf(event) > -1)\n                    continue;\n                this._callbacks.push(event);\n                const callback = (name, value) => this._dispatch_event(name, value);\n                const timeout = this.model.throttle[event] || 20;\n                this.vega_view.addSignalListener(event, (0, debounce_1.debounce)(callback, timeout, false));\n            }\n        });\n        this._connected = [];\n        this._connect_sources();\n    }\n    _connect_sources() {\n        for (const ds in this.model.data_sources) {\n            const cds = this.model.data_sources[ds];\n            if (this._connected.indexOf(ds) < 0) {\n                this.connect(cds.properties.data.change, () => this._replot());\n                this._connected.push(ds);\n            }\n        }\n    }\n    remove() {\n        if (this.vega_view) {\n            this.vega_view.finalize();\n        }\n        super.remove();\n    }\n    _dispatch_event(name, value) {\n        if ('vlPoint' in value && value.vlPoint.or != null) {\n            const indexes = [];\n            for (const index of value.vlPoint.or) {\n                if (index._vgsid_ !== undefined) { // If \"_vgsid_\" property exists\n                    indexes.push(index._vgsid_);\n                }\n                else { // If \"_vgsid_\" property doesn't exist\n                    // Iterate through all properties in the \"index\" object\n                    for (const key in index) {\n                        if (index.hasOwnProperty(key)) { // To ensure key comes from \"index\" object itself, not its prototype\n                            indexes.push({ [key]: index[key] }); // Push a new object with this key-value pair into the array\n                        }\n                    }\n                }\n            }\n            value = indexes;\n        }\n        this.model.trigger_event(new VegaEvent({ type: name, value: value }));\n    }\n    _fetch_datasets() {\n        const datasets = {};\n        for (const ds in this.model.data_sources) {\n            const cds = this.model.data_sources[ds];\n            const data = [];\n            const columns = cds.columns();\n            for (let i = 0; i < cds.get_length(); i++) {\n                const item = {};\n                for (const column of columns) {\n                    item[column] = cds.data[column][i];\n                }\n                data.push(item);\n            }\n            datasets[ds] = data;\n        }\n        return datasets;\n    }\n    get child_models() {\n        return [];\n    }\n    render() {\n        super.render();\n        this._rendered = false;\n        this.container = (0, dom_1.div)();\n        (0, layout_1.set_size)(this.container, this.model);\n        this._callbacks = [];\n        this._plot();\n        this.shadow_el.append(this.container);\n    }\n    _plot() {\n        const data = this.model.data;\n        if ((data == null) || !window.vegaEmbed)\n            return;\n        if (this.model.data_sources && (Object.keys(this.model.data_sources).length > 0)) {\n            const datasets = this._fetch_datasets();\n            if ('data' in datasets) {\n                data.data['values'] = datasets['data'];\n                delete datasets['data'];\n            }\n            if (data.data != null) {\n                const data_objs = (0, types_1.isArray)(data.data) ? data.data : [data.data];\n                for (const d of data_objs) {\n                    if (d.name in datasets) {\n                        d['values'] = datasets[d.name];\n                        delete datasets[d.name];\n                    }\n                }\n            }\n            this.model.data['datasets'] = datasets;\n        }\n        const config = { actions: this.model.show_actions, theme: this.model.theme };\n        window.vegaEmbed(this.container, this.model.data, config).then((result) => {\n            this.vega_view = result.view;\n            this._resize = (0, debounce_1.debounce)(() => this.resize_view(result.view), 50);\n            const callback = (name, value) => this._dispatch_event(name, value);\n            for (const event of this.model.events) {\n                this._callbacks.push(event);\n                const timeout = this.model.throttle[event] || 20;\n                this.vega_view.addSignalListener(event, (0, debounce_1.debounce)(callback, timeout, false));\n            }\n        });\n    }\n    after_layout() {\n        super.after_layout();\n        if (this.vega_view != null) {\n            this._resize();\n        }\n    }\n    resize_view(view) {\n        const canvas = view._renderer.canvas();\n        if (!this._rendered && canvas !== null) {\n            for (const listener of view._eventListeners) {\n                if (listener.type === 'resize')\n                    listener.handler(new Event('resize'));\n            }\n            this._rendered = true;\n        }\n    }\n}\nexports.VegaPlotView = VegaPlotView;\nVegaPlotView.__name__ = \"VegaPlotView\";\nclass VegaPlot extends layout_dom_1.LayoutDOM {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.VegaPlot = VegaPlot;\n_b = VegaPlot;\nVegaPlot.__name__ = \"VegaPlot\";\nVegaPlot.__module__ = \"panel.models.vega\";\n(() => {\n    _b.prototype.default_view = VegaPlotView;\n    _b.define(({ Any, Array, Boolean, Nullable, String }) => ({\n        data: [Any, {}],\n        data_sources: [Any, {}],\n        events: [Array(String), []],\n        show_actions: [Boolean, false],\n        theme: [Nullable(String), null],\n        throttle: [Any, {}]\n    }));\n})();\n//# sourceMappingURL=vega.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"],["debounce","/croot/panel_1706539561184/work/panel/node_modules/debounce/index.js"]],"dependency_map":[],"exported":[{"type":"named","name":"VegaEvent"},{"type":"named","name":"VegaPlotView"},{"type":"named","name":"VegaPlot"}],"externals":[],"shims":[]},"code":{"source":"/* models/vega.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a, _b;\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const bokeh_events_1 = require(\"@bokehjs/core/bokeh_events\");\n    const types_1 = require(\"@bokehjs/core/util/types\");\n    const layout_dom_1 = require(\"@bokehjs/models/layouts/layout_dom\");\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    const debounce_1 = require(\"99a25e6992\") /* debounce */;\n    class VegaEvent extends bokeh_events_1.ModelEvent {\n        constructor(data) {\n            super();\n            this.data = data;\n        }\n        get event_values() {\n            return { model: this.origin, data: this.data };\n        }\n    }\n    exports.VegaEvent = VegaEvent;\n    _a = VegaEvent;\n    VegaEvent.__name__ = \"VegaEvent\";\n    (() => {\n        _a.prototype.event_name = \"vega_event\";\n    })();\n    class VegaPlotView extends layout_dom_1.LayoutDOMView {\n        constructor() {\n            super(...arguments);\n            this._rendered = false;\n        }\n        connect_signals() {\n            super.connect_signals();\n            const { data, show_actions, theme } = this.model.properties;\n            this._replot = (0, debounce_1.debounce)(() => this._plot(), 20);\n            this.on_change([data, show_actions, theme], () => {\n                this._replot();\n            });\n            this.connect(this.model.properties.data_sources.change, () => this._connect_sources());\n            this.connect(this.model.properties.events.change, () => {\n                for (const event of this.model.events) {\n                    if (this._callbacks.indexOf(event) > -1)\n                        continue;\n                    this._callbacks.push(event);\n                    const callback = (name, value) => this._dispatch_event(name, value);\n                    const timeout = this.model.throttle[event] || 20;\n                    this.vega_view.addSignalListener(event, (0, debounce_1.debounce)(callback, timeout, false));\n                }\n            });\n            this._connected = [];\n            this._connect_sources();\n        }\n        _connect_sources() {\n            for (const ds in this.model.data_sources) {\n                const cds = this.model.data_sources[ds];\n                if (this._connected.indexOf(ds) < 0) {\n                    this.connect(cds.properties.data.change, () => this._replot());\n                    this._connected.push(ds);\n                }\n            }\n        }\n        remove() {\n            if (this.vega_view) {\n                this.vega_view.finalize();\n            }\n            super.remove();\n        }\n        _dispatch_event(name, value) {\n            if ('vlPoint' in value && value.vlPoint.or != null) {\n                const indexes = [];\n                for (const index of value.vlPoint.or) {\n                    if (index._vgsid_ !== undefined) { // If \"_vgsid_\" property exists\n                        indexes.push(index._vgsid_);\n                    }\n                    else { // If \"_vgsid_\" property doesn't exist\n                        // Iterate through all properties in the \"index\" object\n                        for (const key in index) {\n                            if (index.hasOwnProperty(key)) { // To ensure key comes from \"index\" object itself, not its prototype\n                                indexes.push({ [key]: index[key] }); // Push a new object with this key-value pair into the array\n                            }\n                        }\n                    }\n                }\n                value = indexes;\n            }\n            this.model.trigger_event(new VegaEvent({ type: name, value: value }));\n        }\n        _fetch_datasets() {\n            const datasets = {};\n            for (const ds in this.model.data_sources) {\n                const cds = this.model.data_sources[ds];\n                const data = [];\n                const columns = cds.columns();\n                for (let i = 0; i < cds.get_length(); i++) {\n                    const item = {};\n                    for (const column of columns) {\n                        item[column] = cds.data[column][i];\n                    }\n                    data.push(item);\n                }\n                datasets[ds] = data;\n            }\n            return datasets;\n        }\n        get child_models() {\n            return [];\n        }\n        render() {\n            super.render();\n            this._rendered = false;\n            this.container = (0, dom_1.div)();\n            (0, layout_1.set_size)(this.container, this.model);\n            this._callbacks = [];\n            this._plot();\n            this.shadow_el.append(this.container);\n        }\n        _plot() {\n            const data = this.model.data;\n            if ((data == null) || !window.vegaEmbed)\n                return;\n            if (this.model.data_sources && (Object.keys(this.model.data_sources).length > 0)) {\n                const datasets = this._fetch_datasets();\n                if ('data' in datasets) {\n                    data.data['values'] = datasets['data'];\n                    delete datasets['data'];\n                }\n                if (data.data != null) {\n                    const data_objs = (0, types_1.isArray)(data.data) ? data.data : [data.data];\n                    for (const d of data_objs) {\n                        if (d.name in datasets) {\n                            d['values'] = datasets[d.name];\n                            delete datasets[d.name];\n                        }\n                    }\n                }\n                this.model.data['datasets'] = datasets;\n            }\n            const config = { actions: this.model.show_actions, theme: this.model.theme };\n            window.vegaEmbed(this.container, this.model.data, config).then((result) => {\n                this.vega_view = result.view;\n                this._resize = (0, debounce_1.debounce)(() => this.resize_view(result.view), 50);\n                const callback = (name, value) => this._dispatch_event(name, value);\n                for (const event of this.model.events) {\n                    this._callbacks.push(event);\n                    const timeout = this.model.throttle[event] || 20;\n                    this.vega_view.addSignalListener(event, (0, debounce_1.debounce)(callback, timeout, false));\n                }\n            });\n        }\n        after_layout() {\n            super.after_layout();\n            if (this.vega_view != null) {\n                this._resize();\n            }\n        }\n        resize_view(view) {\n            const canvas = view._renderer.canvas();\n            if (!this._rendered && canvas !== null) {\n                for (const listener of view._eventListeners) {\n                    if (listener.type === 'resize')\n                        listener.handler(new Event('resize'));\n                }\n                this._rendered = true;\n            }\n        }\n    }\n    exports.VegaPlotView = VegaPlotView;\n    VegaPlotView.__name__ = \"VegaPlotView\";\n    class VegaPlot extends layout_dom_1.LayoutDOM {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.VegaPlot = VegaPlot;\n    _b = VegaPlot;\n    VegaPlot.__name__ = \"VegaPlot\";\n    VegaPlot.__module__ = \"panel.models.vega\";\n    (() => {\n        _b.prototype.default_view = VegaPlotView;\n        _b.define(({ Any, Array, Boolean, Nullable, String }) => ({\n            data: [Any, {}],\n            data_sources: [Any, {}],\n            events: [Array(String), []],\n            show_actions: [Boolean, false],\n            theme: [Nullable(String), null],\n            throttle: [Any, {}]\n        }));\n    })();\n}\n","min_source":"function _(e,t,s,o,n){var a,i;o();const r=e(\"@bokehjs/core/dom\"),c=e(\"@bokehjs/core/bokeh_events\"),d=e(\"@bokehjs/core/util/types\"),h=e(\"@bokehjs/models/layouts/layout_dom\"),l=e(\"cac5f3ed28\"),_=e(\"99a25e6992\");class u extends c.ModelEvent{constructor(e){super(),this.data=e}get event_values(){return{model:this.origin,data:this.data}}}s.VegaEvent=u,a=u,u.__name__=\"VegaEvent\",a.prototype.event_name=\"vega_event\";class v extends h.LayoutDOMView{constructor(){super(...arguments),this._rendered=!1}connect_signals(){super.connect_signals();const{data:e,show_actions:t,theme:s}=this.model.properties;this._replot=(0,_.debounce)((()=>this._plot()),20),this.on_change([e,t,s],(()=>{this._replot()})),this.connect(this.model.properties.data_sources.change,(()=>this._connect_sources())),this.connect(this.model.properties.events.change,(()=>{for(const e of this.model.events){if(this._callbacks.indexOf(e)>-1)continue;this._callbacks.push(e);const t=(e,t)=>this._dispatch_event(e,t),s=this.model.throttle[e]||20;this.vega_view.addSignalListener(e,(0,_.debounce)(t,s,!1))}})),this._connected=[],this._connect_sources()}_connect_sources(){for(const e in this.model.data_sources){const t=this.model.data_sources[e];this._connected.indexOf(e)<0&&(this.connect(t.properties.data.change,(()=>this._replot())),this._connected.push(e))}}remove(){this.vega_view&&this.vega_view.finalize(),super.remove()}_dispatch_event(e,t){if(\"vlPoint\"in t&&null!=t.vlPoint.or){const e=[];for(const s of t.vlPoint.or)if(void 0!==s._vgsid_)e.push(s._vgsid_);else for(const t in s)s.hasOwnProperty(t)&&e.push({[t]:s[t]});t=e}this.model.trigger_event(new u({type:e,value:t}))}_fetch_datasets(){const e={};for(const t in this.model.data_sources){const s=this.model.data_sources[t],o=[],n=s.columns();for(let e=0;e<s.get_length();e++){const t={};for(const o of n)t[o]=s.data[o][e];o.push(t)}e[t]=o}return e}get child_models(){return[]}render(){super.render(),this._rendered=!1,this.container=(0,r.div)(),(0,l.set_size)(this.container,this.model),this._callbacks=[],this._plot(),this.shadow_el.append(this.container)}_plot(){const e=this.model.data;if(null==e||!window.vegaEmbed)return;if(this.model.data_sources&&Object.keys(this.model.data_sources).length>0){const t=this._fetch_datasets();if(\"data\"in t&&(e.data.values=t.data,delete t.data),null!=e.data){const s=(0,d.isArray)(e.data)?e.data:[e.data];for(const e of s)e.name in t&&(e.values=t[e.name],delete t[e.name])}this.model.data.datasets=t}const t={actions:this.model.show_actions,theme:this.model.theme};window.vegaEmbed(this.container,this.model.data,t).then((e=>{this.vega_view=e.view,this._resize=(0,_.debounce)((()=>this.resize_view(e.view)),50);const t=(e,t)=>this._dispatch_event(e,t);for(const e of this.model.events){this._callbacks.push(e);const s=this.model.throttle[e]||20;this.vega_view.addSignalListener(e,(0,_.debounce)(t,s,!1))}}))}after_layout(){super.after_layout(),null!=this.vega_view&&this._resize()}resize_view(e){const t=e._renderer.canvas();if(!this._rendered&&null!==t){for(const t of e._eventListeners)\"resize\"===t.type&&t.handler(new Event(\"resize\"));this._rendered=!0}}}s.VegaPlotView=v,v.__name__=\"VegaPlotView\";class m extends h.LayoutDOM{constructor(e){super(e)}}s.VegaPlot=m,i=m,m.__name__=\"VegaPlot\",m.__module__=\"panel.models.vega\",i.prototype.default_view=v,i.define((({Any:e,Array:t,Boolean:s,Nullable:o,String:n})=>({data:[e,{}],data_sources:[e,{}],events:[t(n),[]],show_actions:[s,!1],theme:[o(n),null],throttle:[e,{}]})))}\n//# sourceMappingURL=vega.min.js.map","min_map":"{\"version\":3,\"file\":\"vega.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"_b\",\"dom_1\",\"bokeh_events_1\",\"types_1\",\"layout_dom_1\",\"layout_1\",\"debounce_1\",\"VegaEvent\",\"ModelEvent\",\"constructor\",\"data\",\"super\",\"this\",\"event_values\",\"model\",\"origin\",\"__name__\",\"prototype\",\"event_name\",\"VegaPlotView\",\"LayoutDOMView\",\"arguments\",\"_rendered\",\"connect_signals\",\"show_actions\",\"theme\",\"properties\",\"_replot\",\"debounce\",\"_plot\",\"on_change\",\"connect\",\"data_sources\",\"change\",\"_connect_sources\",\"events\",\"event\",\"_callbacks\",\"indexOf\",\"push\",\"callback\",\"name\",\"value\",\"_dispatch_event\",\"timeout\",\"throttle\",\"vega_view\",\"addSignalListener\",\"_connected\",\"ds\",\"cds\",\"remove\",\"finalize\",\"vlPoint\",\"or\",\"indexes\",\"index\",\"undefined\",\"_vgsid_\",\"key\",\"hasOwnProperty\",\"trigger_event\",\"type\",\"_fetch_datasets\",\"datasets\",\"columns\",\"i\",\"get_length\",\"item\",\"column\",\"child_models\",\"render\",\"container\",\"div\",\"set_size\",\"shadow_el\",\"append\",\"window\",\"vegaEmbed\",\"Object\",\"keys\",\"length\",\"data_objs\",\"isArray\",\"d\",\"config\",\"actions\",\"then\",\"result\",\"view\",\"_resize\",\"resize_view\",\"after_layout\",\"canvas\",\"_renderer\",\"listener\",\"_eventListeners\",\"handler\",\"Event\",\"VegaPlot\",\"LayoutDOM\",\"attrs\",\"__module__\",\"default_view\",\"define\",\"Any\",\"Array\",\"Boolean\",\"Nullable\",\"String\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/video.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/video.js","canonical":"models/video","resolution":"ESM","id":"e6e8c94f32","hash":"e6e8c94f32e95da21446e3fcaa10fdb43aacb4437d9d10736b180aeeec8174e2","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Video = exports.VideoView = void 0;\nvar _a;\nconst layout_1 = require(\"./layout\");\nclass VideoView extends layout_1.HTMLBoxView {\n    initialize() {\n        super.initialize();\n        this._blocked = false;\n        this._setting = false;\n        this._time = Date.now();\n    }\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.loop.change, () => this.set_loop());\n        this.connect(this.model.properties.paused.change, () => this.set_paused());\n        this.connect(this.model.properties.muted.change, () => this.set_muted());\n        this.connect(this.model.properties.autoplay.change, () => this.set_autoplay());\n        this.connect(this.model.properties.time.change, () => this.set_time());\n        this.connect(this.model.properties.value.change, () => this.set_value());\n        this.connect(this.model.properties.volume.change, () => this.set_volume());\n    }\n    render() {\n        super.render();\n        this.videoEl = document.createElement('video');\n        this.containerEl = document.createElement('div');\n        this.containerEl.className = \"pn-video-container\";\n        this.containerEl.style.height = '100%';\n        this.containerEl.style.width = '100%';\n        this.videoEl.style.objectFit = 'fill';\n        this.videoEl.style.width = '100%';\n        this.videoEl.style.height = '100%';\n        if (!this.model.sizing_mode || this.model.sizing_mode === 'fixed') {\n            if (this.model.height)\n                this.videoEl.height = this.model.height;\n            if (this.model.width)\n                this.videoEl.width = this.model.width;\n        }\n        if (this.model.max_height)\n            this.videoEl.style.maxHeight = `${this.model.max_height}px`;\n        if (this.model.max_width)\n            this.videoEl.style.maxWidth = `${this.model.max_width}px`;\n        this.videoEl.controls = true;\n        this.videoEl.src = this.model.value;\n        this.videoEl.currentTime = this.model.time;\n        this.videoEl.loop = this.model.loop;\n        this.videoEl.muted = this.model.muted;\n        this.videoEl.autoplay = this.model.autoplay;\n        if (this.model.volume != null)\n            this.videoEl.volume = this.model.volume / 100;\n        else\n            this.model.volume = this.videoEl.volume * 100;\n        this.videoEl.onpause = () => this.model.paused = true;\n        this.videoEl.onplay = () => this.model.paused = false;\n        this.videoEl.ontimeupdate = () => this.update_time(this);\n        this.videoEl.onvolumechange = () => this.update_volume(this);\n        this.containerEl.appendChild(this.videoEl);\n        this.shadow_el.appendChild(this.containerEl);\n        if (!this.model.paused)\n            this.videoEl.play();\n    }\n    update_time(view) {\n        if (view._setting) {\n            view._setting = false;\n            return;\n        }\n        if ((Date.now() - view._time) < view.model.throttle)\n            return;\n        view._blocked = true;\n        view.model.time = view.videoEl.currentTime;\n        view._time = Date.now();\n    }\n    update_volume(view) {\n        if (view._setting) {\n            view._setting = false;\n            return;\n        }\n        view._blocked = true;\n        view.model.volume = view.videoEl.volume * 100;\n    }\n    set_loop() {\n        this.videoEl.loop = this.model.loop;\n    }\n    set_muted() {\n        this.videoEl.muted = this.model.muted;\n    }\n    set_autoplay() {\n        this.videoEl.autoplay = this.model.autoplay;\n    }\n    set_paused() {\n        if (!this.videoEl.paused && this.model.paused)\n            this.videoEl.pause();\n        if (this.videoEl.paused && !this.model.paused)\n            this.videoEl.play();\n    }\n    set_volume() {\n        if (this._blocked) {\n            this._blocked = false;\n            return;\n        }\n        this._setting = true;\n        if (this.model.volume != null)\n            this.videoEl.volume = this.model.volume / 100;\n    }\n    set_time() {\n        if (this._blocked) {\n            this._blocked = false;\n            return;\n        }\n        this._setting = true;\n        this.videoEl.currentTime = this.model.time;\n    }\n    set_value() {\n        this.videoEl.src = this.model.value;\n    }\n}\nexports.VideoView = VideoView;\nVideoView.__name__ = \"VideoView\";\nclass Video extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.Video = Video;\n_a = Video;\nVideo.__name__ = \"Video\";\nVideo.__module__ = \"panel.models.widgets\";\n(() => {\n    _a.prototype.default_view = VideoView;\n    _a.define(({ Any, Boolean, Int, Number, Nullable }) => ({\n        loop: [Boolean, false],\n        paused: [Boolean, true],\n        muted: [Boolean, false],\n        autoplay: [Boolean, false],\n        time: [Number, 0],\n        throttle: [Int, 250],\n        value: [Any, ''],\n        volume: [Nullable(Int), null],\n    }));\n})();\n//# sourceMappingURL=video.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"VideoView"},{"type":"named","name":"Video"}],"externals":[],"shims":[]},"code":{"source":"/* models/video.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    class VideoView extends layout_1.HTMLBoxView {\n        initialize() {\n            super.initialize();\n            this._blocked = false;\n            this._setting = false;\n            this._time = Date.now();\n        }\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.loop.change, () => this.set_loop());\n            this.connect(this.model.properties.paused.change, () => this.set_paused());\n            this.connect(this.model.properties.muted.change, () => this.set_muted());\n            this.connect(this.model.properties.autoplay.change, () => this.set_autoplay());\n            this.connect(this.model.properties.time.change, () => this.set_time());\n            this.connect(this.model.properties.value.change, () => this.set_value());\n            this.connect(this.model.properties.volume.change, () => this.set_volume());\n        }\n        render() {\n            super.render();\n            this.videoEl = document.createElement('video');\n            this.containerEl = document.createElement('div');\n            this.containerEl.className = \"pn-video-container\";\n            this.containerEl.style.height = '100%';\n            this.containerEl.style.width = '100%';\n            this.videoEl.style.objectFit = 'fill';\n            this.videoEl.style.width = '100%';\n            this.videoEl.style.height = '100%';\n            if (!this.model.sizing_mode || this.model.sizing_mode === 'fixed') {\n                if (this.model.height)\n                    this.videoEl.height = this.model.height;\n                if (this.model.width)\n                    this.videoEl.width = this.model.width;\n            }\n            if (this.model.max_height)\n                this.videoEl.style.maxHeight = `${this.model.max_height}px`;\n            if (this.model.max_width)\n                this.videoEl.style.maxWidth = `${this.model.max_width}px`;\n            this.videoEl.controls = true;\n            this.videoEl.src = this.model.value;\n            this.videoEl.currentTime = this.model.time;\n            this.videoEl.loop = this.model.loop;\n            this.videoEl.muted = this.model.muted;\n            this.videoEl.autoplay = this.model.autoplay;\n            if (this.model.volume != null)\n                this.videoEl.volume = this.model.volume / 100;\n            else\n                this.model.volume = this.videoEl.volume * 100;\n            this.videoEl.onpause = () => this.model.paused = true;\n            this.videoEl.onplay = () => this.model.paused = false;\n            this.videoEl.ontimeupdate = () => this.update_time(this);\n            this.videoEl.onvolumechange = () => this.update_volume(this);\n            this.containerEl.appendChild(this.videoEl);\n            this.shadow_el.appendChild(this.containerEl);\n            if (!this.model.paused)\n                this.videoEl.play();\n        }\n        update_time(view) {\n            if (view._setting) {\n                view._setting = false;\n                return;\n            }\n            if ((Date.now() - view._time) < view.model.throttle)\n                return;\n            view._blocked = true;\n            view.model.time = view.videoEl.currentTime;\n            view._time = Date.now();\n        }\n        update_volume(view) {\n            if (view._setting) {\n                view._setting = false;\n                return;\n            }\n            view._blocked = true;\n            view.model.volume = view.videoEl.volume * 100;\n        }\n        set_loop() {\n            this.videoEl.loop = this.model.loop;\n        }\n        set_muted() {\n            this.videoEl.muted = this.model.muted;\n        }\n        set_autoplay() {\n            this.videoEl.autoplay = this.model.autoplay;\n        }\n        set_paused() {\n            if (!this.videoEl.paused && this.model.paused)\n                this.videoEl.pause();\n            if (this.videoEl.paused && !this.model.paused)\n                this.videoEl.play();\n        }\n        set_volume() {\n            if (this._blocked) {\n                this._blocked = false;\n                return;\n            }\n            this._setting = true;\n            if (this.model.volume != null)\n                this.videoEl.volume = this.model.volume / 100;\n        }\n        set_time() {\n            if (this._blocked) {\n                this._blocked = false;\n                return;\n            }\n            this._setting = true;\n            this.videoEl.currentTime = this.model.time;\n        }\n        set_value() {\n            this.videoEl.src = this.model.value;\n        }\n    }\n    exports.VideoView = VideoView;\n    VideoView.__name__ = \"VideoView\";\n    class Video extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.Video = Video;\n    _a = Video;\n    Video.__name__ = \"Video\";\n    Video.__module__ = \"panel.models.widgets\";\n    (() => {\n        _a.prototype.default_view = VideoView;\n        _a.define(({ Any, Boolean, Int, Number, Nullable }) => ({\n            loop: [Boolean, false],\n            paused: [Boolean, true],\n            muted: [Boolean, false],\n            autoplay: [Boolean, false],\n            time: [Number, 0],\n            throttle: [Int, 250],\n            value: [Any, ''],\n            volume: [Nullable(Int), null],\n        }));\n    })();\n}\n","min_source":"function _(e,t,i,o,s){var l;o();const d=e(\"cac5f3ed28\");class h extends d.HTMLBoxView{initialize(){super.initialize(),this._blocked=!1,this._setting=!1,this._time=Date.now()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.loop.change,(()=>this.set_loop())),this.connect(this.model.properties.paused.change,(()=>this.set_paused())),this.connect(this.model.properties.muted.change,(()=>this.set_muted())),this.connect(this.model.properties.autoplay.change,(()=>this.set_autoplay())),this.connect(this.model.properties.time.change,(()=>this.set_time())),this.connect(this.model.properties.value.change,(()=>this.set_value())),this.connect(this.model.properties.volume.change,(()=>this.set_volume()))}render(){super.render(),this.videoEl=document.createElement(\"video\"),this.containerEl=document.createElement(\"div\"),this.containerEl.className=\"pn-video-container\",this.containerEl.style.height=\"100%\",this.containerEl.style.width=\"100%\",this.videoEl.style.objectFit=\"fill\",this.videoEl.style.width=\"100%\",this.videoEl.style.height=\"100%\",this.model.sizing_mode&&\"fixed\"!==this.model.sizing_mode||(this.model.height&&(this.videoEl.height=this.model.height),this.model.width&&(this.videoEl.width=this.model.width)),this.model.max_height&&(this.videoEl.style.maxHeight=`${this.model.max_height}px`),this.model.max_width&&(this.videoEl.style.maxWidth=`${this.model.max_width}px`),this.videoEl.controls=!0,this.videoEl.src=this.model.value,this.videoEl.currentTime=this.model.time,this.videoEl.loop=this.model.loop,this.videoEl.muted=this.model.muted,this.videoEl.autoplay=this.model.autoplay,null!=this.model.volume?this.videoEl.volume=this.model.volume/100:this.model.volume=100*this.videoEl.volume,this.videoEl.onpause=()=>this.model.paused=!0,this.videoEl.onplay=()=>this.model.paused=!1,this.videoEl.ontimeupdate=()=>this.update_time(this),this.videoEl.onvolumechange=()=>this.update_volume(this),this.containerEl.appendChild(this.videoEl),this.shadow_el.appendChild(this.containerEl),this.model.paused||this.videoEl.play()}update_time(e){e._setting?e._setting=!1:Date.now()-e._time<e.model.throttle||(e._blocked=!0,e.model.time=e.videoEl.currentTime,e._time=Date.now())}update_volume(e){e._setting?e._setting=!1:(e._blocked=!0,e.model.volume=100*e.videoEl.volume)}set_loop(){this.videoEl.loop=this.model.loop}set_muted(){this.videoEl.muted=this.model.muted}set_autoplay(){this.videoEl.autoplay=this.model.autoplay}set_paused(){!this.videoEl.paused&&this.model.paused&&this.videoEl.pause(),this.videoEl.paused&&!this.model.paused&&this.videoEl.play()}set_volume(){this._blocked?this._blocked=!1:(this._setting=!0,null!=this.model.volume&&(this.videoEl.volume=this.model.volume/100))}set_time(){this._blocked?this._blocked=!1:(this._setting=!0,this.videoEl.currentTime=this.model.time)}set_value(){this.videoEl.src=this.model.value}}i.VideoView=h,h.__name__=\"VideoView\";class m extends d.HTMLBox{constructor(e){super(e)}}i.Video=m,l=m,m.__name__=\"Video\",m.__module__=\"panel.models.widgets\",l.prototype.default_view=h,l.define((({Any:e,Boolean:t,Int:i,Number:o,Nullable:s})=>({loop:[t,!1],paused:[t,!0],muted:[t,!1],autoplay:[t,!1],time:[o,0],throttle:[i,250],value:[e,\"\"],volume:[s(i),null]})))}\n//# sourceMappingURL=video.min.js.map","min_map":"{\"version\":3,\"file\":\"video.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"layout_1\",\"VideoView\",\"HTMLBoxView\",\"initialize\",\"super\",\"this\",\"_blocked\",\"_setting\",\"_time\",\"Date\",\"now\",\"connect_signals\",\"connect\",\"model\",\"properties\",\"loop\",\"change\",\"set_loop\",\"paused\",\"set_paused\",\"muted\",\"set_muted\",\"autoplay\",\"set_autoplay\",\"time\",\"set_time\",\"value\",\"set_value\",\"volume\",\"set_volume\",\"render\",\"videoEl\",\"document\",\"createElement\",\"containerEl\",\"className\",\"style\",\"height\",\"width\",\"objectFit\",\"sizing_mode\",\"max_height\",\"maxHeight\",\"max_width\",\"maxWidth\",\"controls\",\"src\",\"currentTime\",\"onpause\",\"onplay\",\"ontimeupdate\",\"update_time\",\"onvolumechange\",\"update_volume\",\"appendChild\",\"shadow_el\",\"play\",\"view\",\"throttle\",\"pause\",\"__name__\",\"Video\",\"HTMLBox\",\"constructor\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Any\",\"Boolean\",\"Int\",\"Number\",\"Nullable\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/videostream.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/videostream.js","canonical":"models/videostream","resolution":"ESM","id":"2dfabe6882","hash":"2dfabe688294fb3342c6c5a4b8205ae1336be864ed39c9ce0183d195c954e9b5","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VideoStream = exports.VideoStreamView = void 0;\nvar _a;\nconst layout_1 = require(\"./layout\");\nclass VideoStreamView extends layout_1.HTMLBoxView {\n    constructor() {\n        super(...arguments);\n        this.constraints = {\n            'audio': false,\n            'video': true\n        };\n    }\n    initialize() {\n        super.initialize();\n        if (this.model.timeout !== null)\n            this.set_timeout();\n    }\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.timeout.change, () => this.set_timeout());\n        this.connect(this.model.properties.snapshot.change, () => this.snapshot());\n        this.connect(this.model.properties.paused.change, () => this.pause());\n    }\n    pause() {\n        if (this.model.paused) {\n            if (this.timer != null) {\n                clearInterval(this.timer);\n                this.timer = null;\n            }\n            this.videoEl.pause();\n        }\n        else\n            this.videoEl.play();\n        this.set_timeout();\n    }\n    set_timeout() {\n        if (this.timer) {\n            clearInterval(this.timer);\n            this.timer = null;\n        }\n        if (this.model.timeout != null && this.model.timeout > 0)\n            this.timer = setInterval(() => this.snapshot(), this.model.timeout);\n    }\n    snapshot() {\n        this.canvasEl.width = this.videoEl.videoWidth;\n        this.canvasEl.height = this.videoEl.videoHeight;\n        const context = this.canvasEl.getContext('2d');\n        if (context)\n            context.drawImage(this.videoEl, 0, 0, this.canvasEl.width, this.canvasEl.height);\n        this.model.value = this.canvasEl.toDataURL(\"image/\" + this.model.format, 0.95);\n    }\n    remove() {\n        super.remove();\n        if (this.timer) {\n            clearInterval(this.timer);\n            this.timer = null;\n        }\n    }\n    render() {\n        super.render();\n        if (this.videoEl)\n            return;\n        this.videoEl = document.createElement('video');\n        if (!this.model.sizing_mode || this.model.sizing_mode === 'fixed') {\n            if (this.model.height)\n                this.videoEl.height = this.model.height;\n            if (this.model.width)\n                this.videoEl.width = this.model.width;\n        }\n        this.videoEl.style.objectFit = 'fill';\n        this.videoEl.style.minWidth = '100%';\n        this.videoEl.style.minHeight = '100%';\n        this.canvasEl = document.createElement('canvas');\n        this.shadow_el.appendChild(this.videoEl);\n        if (navigator.mediaDevices.getUserMedia) {\n            navigator.mediaDevices.getUserMedia(this.constraints)\n                .then(stream => {\n                this.videoEl.srcObject = stream;\n                if (!this.model.paused) {\n                    this.videoEl.play();\n                }\n            })\n                .catch(console.error);\n        }\n    }\n}\nexports.VideoStreamView = VideoStreamView;\nVideoStreamView.__name__ = \"VideoStreamView\";\nclass VideoStream extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.VideoStream = VideoStream;\n_a = VideoStream;\nVideoStream.__name__ = \"VideoStream\";\nVideoStream.__module__ = \"panel.models.widgets\";\n(() => {\n    _a.prototype.default_view = VideoStreamView;\n    _a.define(({ Any, Boolean, Int, Nullable, String }) => ({\n        format: [String, 'png'],\n        paused: [Boolean, false],\n        snapshot: [Boolean, false],\n        timeout: [Nullable(Int), null],\n        value: [Any]\n    }));\n    _a.override({\n        height: 240,\n        width: 320\n    });\n})();\n//# sourceMappingURL=videostream.js.map\n","type":"js","dependency_paths":[["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"VideoStreamView"},{"type":"named","name":"VideoStream"}],"externals":[],"shims":[]},"code":{"source":"/* models/videostream.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    class VideoStreamView extends layout_1.HTMLBoxView {\n        constructor() {\n            super(...arguments);\n            this.constraints = {\n                'audio': false,\n                'video': true\n            };\n        }\n        initialize() {\n            super.initialize();\n            if (this.model.timeout !== null)\n                this.set_timeout();\n        }\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.timeout.change, () => this.set_timeout());\n            this.connect(this.model.properties.snapshot.change, () => this.snapshot());\n            this.connect(this.model.properties.paused.change, () => this.pause());\n        }\n        pause() {\n            if (this.model.paused) {\n                if (this.timer != null) {\n                    clearInterval(this.timer);\n                    this.timer = null;\n                }\n                this.videoEl.pause();\n            }\n            else\n                this.videoEl.play();\n            this.set_timeout();\n        }\n        set_timeout() {\n            if (this.timer) {\n                clearInterval(this.timer);\n                this.timer = null;\n            }\n            if (this.model.timeout != null && this.model.timeout > 0)\n                this.timer = setInterval(() => this.snapshot(), this.model.timeout);\n        }\n        snapshot() {\n            this.canvasEl.width = this.videoEl.videoWidth;\n            this.canvasEl.height = this.videoEl.videoHeight;\n            const context = this.canvasEl.getContext('2d');\n            if (context)\n                context.drawImage(this.videoEl, 0, 0, this.canvasEl.width, this.canvasEl.height);\n            this.model.value = this.canvasEl.toDataURL(\"image/\" + this.model.format, 0.95);\n        }\n        remove() {\n            super.remove();\n            if (this.timer) {\n                clearInterval(this.timer);\n                this.timer = null;\n            }\n        }\n        render() {\n            super.render();\n            if (this.videoEl)\n                return;\n            this.videoEl = document.createElement('video');\n            if (!this.model.sizing_mode || this.model.sizing_mode === 'fixed') {\n                if (this.model.height)\n                    this.videoEl.height = this.model.height;\n                if (this.model.width)\n                    this.videoEl.width = this.model.width;\n            }\n            this.videoEl.style.objectFit = 'fill';\n            this.videoEl.style.minWidth = '100%';\n            this.videoEl.style.minHeight = '100%';\n            this.canvasEl = document.createElement('canvas');\n            this.shadow_el.appendChild(this.videoEl);\n            if (navigator.mediaDevices.getUserMedia) {\n                navigator.mediaDevices.getUserMedia(this.constraints)\n                    .then(stream => {\n                    this.videoEl.srcObject = stream;\n                    if (!this.model.paused) {\n                        this.videoEl.play();\n                    }\n                })\n                    .catch(console.error);\n            }\n        }\n    }\n    exports.VideoStreamView = VideoStreamView;\n    VideoStreamView.__name__ = \"VideoStreamView\";\n    class VideoStream extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.VideoStream = VideoStream;\n    _a = VideoStream;\n    VideoStream.__name__ = \"VideoStream\";\n    VideoStream.__module__ = \"panel.models.widgets\";\n    (() => {\n        _a.prototype.default_view = VideoStreamView;\n        _a.define(({ Any, Boolean, Int, Nullable, String }) => ({\n            format: [String, 'png'],\n            paused: [Boolean, false],\n            snapshot: [Boolean, false],\n            timeout: [Nullable(Int), null],\n            value: [Any]\n        }));\n        _a.override({\n            height: 240,\n            width: 320\n        });\n    })();\n}\n","min_source":"function _(e,t,i,s,o){var h;s();const l=e(\"cac5f3ed28\");class a extends l.HTMLBoxView{constructor(){super(...arguments),this.constraints={audio:!1,video:!0}}initialize(){super.initialize(),null!==this.model.timeout&&this.set_timeout()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.timeout.change,(()=>this.set_timeout())),this.connect(this.model.properties.snapshot.change,(()=>this.snapshot())),this.connect(this.model.properties.paused.change,(()=>this.pause()))}pause(){this.model.paused?(null!=this.timer&&(clearInterval(this.timer),this.timer=null),this.videoEl.pause()):this.videoEl.play(),this.set_timeout()}set_timeout(){this.timer&&(clearInterval(this.timer),this.timer=null),null!=this.model.timeout&&this.model.timeout>0&&(this.timer=setInterval((()=>this.snapshot()),this.model.timeout))}snapshot(){this.canvasEl.width=this.videoEl.videoWidth,this.canvasEl.height=this.videoEl.videoHeight;const e=this.canvasEl.getContext(\"2d\");e&&e.drawImage(this.videoEl,0,0,this.canvasEl.width,this.canvasEl.height),this.model.value=this.canvasEl.toDataURL(\"image/\"+this.model.format,.95)}remove(){super.remove(),this.timer&&(clearInterval(this.timer),this.timer=null)}render(){super.render(),this.videoEl||(this.videoEl=document.createElement(\"video\"),this.model.sizing_mode&&\"fixed\"!==this.model.sizing_mode||(this.model.height&&(this.videoEl.height=this.model.height),this.model.width&&(this.videoEl.width=this.model.width)),this.videoEl.style.objectFit=\"fill\",this.videoEl.style.minWidth=\"100%\",this.videoEl.style.minHeight=\"100%\",this.canvasEl=document.createElement(\"canvas\"),this.shadow_el.appendChild(this.videoEl),navigator.mediaDevices.getUserMedia&&navigator.mediaDevices.getUserMedia(this.constraints).then((e=>{this.videoEl.srcObject=e,this.model.paused||this.videoEl.play()})).catch(console.error))}}i.VideoStreamView=a,a.__name__=\"VideoStreamView\";class d extends l.HTMLBox{constructor(e){super(e)}}i.VideoStream=d,h=d,d.__name__=\"VideoStream\",d.__module__=\"panel.models.widgets\",h.prototype.default_view=a,h.define((({Any:e,Boolean:t,Int:i,Nullable:s,String:o})=>({format:[o,\"png\"],paused:[t,!1],snapshot:[t,!1],timeout:[s(i),null],value:[e]}))),h.override({height:240,width:320})}\n//# sourceMappingURL=videostream.min.js.map","min_map":"{\"version\":3,\"file\":\"videostream.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"layout_1\",\"VideoStreamView\",\"HTMLBoxView\",\"constructor\",\"super\",\"arguments\",\"this\",\"constraints\",\"audio\",\"video\",\"initialize\",\"model\",\"timeout\",\"set_timeout\",\"connect_signals\",\"connect\",\"properties\",\"change\",\"snapshot\",\"paused\",\"pause\",\"timer\",\"clearInterval\",\"videoEl\",\"play\",\"setInterval\",\"canvasEl\",\"width\",\"videoWidth\",\"height\",\"videoHeight\",\"context\",\"getContext\",\"drawImage\",\"value\",\"toDataURL\",\"format\",\"remove\",\"render\",\"document\",\"createElement\",\"sizing_mode\",\"style\",\"objectFit\",\"minWidth\",\"minHeight\",\"shadow_el\",\"appendChild\",\"navigator\",\"mediaDevices\",\"getUserMedia\",\"then\",\"stream\",\"srcObject\",\"catch\",\"console\",\"error\",\"__name__\",\"VideoStream\",\"HTMLBox\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Any\",\"Boolean\",\"Int\",\"Nullable\",\"String\",\"override\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/vizzu.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/vizzu.js","canonical":"models/vizzu","resolution":"ESM","id":"dfe3c4a2a9","hash":"dfe3c4a2a9d86b98381d028e97721970077a33a842a6b7c705b390d7e54f719f","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VizzuChart = exports.VizzuChartView = exports.VizzuEvent = void 0;\nvar _a;\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst types_1 = require(\"@bokehjs/core/util/types\");\nconst column_data_source_1 = require(\"@bokehjs/models/sources/column_data_source\");\nconst bokeh_events_1 = require(\"@bokehjs/core/bokeh_events\");\nconst debounce_1 = require(\"debounce\");\nconst layout_1 = require(\"./layout\");\nclass VizzuEvent extends bokeh_events_1.ModelEvent {\n    constructor(data) {\n        super();\n        this.data = data;\n        this.event_name = \"vizzu_event\";\n        this.publish = true;\n    }\n    get event_values() {\n        return { model: this.origin, data: this.data };\n    }\n}\nexports.VizzuEvent = VizzuEvent;\nVizzuEvent.__name__ = \"VizzuEvent\";\nconst VECTORIZED_PROPERTIES = ['x', 'y', 'color', 'label', 'lightness', 'size', 'splittedBy', 'dividedBy'];\nclass VizzuChartView extends layout_1.HTMLBoxView {\n    constructor() {\n        super(...arguments);\n        this.update = [];\n        this._animating = false;\n    }\n    connect_signals() {\n        super.connect_signals();\n        const update = (0, debounce_1.debounce)(() => {\n            if (!this.valid_config) {\n                console.warn('Vizzu config not valid given current data.');\n                return;\n            }\n            else if (!this.update.length || this._animating)\n                return;\n            else {\n                let change = {};\n                for (const prop of this.update) {\n                    if (prop === 'config')\n                        change = Object.assign(Object.assign({}, change), { config: this.config() });\n                    else if (prop === 'data')\n                        change = Object.assign(Object.assign({}, change), { data: this.data() });\n                    else\n                        change = Object.assign(Object.assign({}, change), { style: this.model.style });\n                }\n                this._animating = true;\n                this.vizzu_view.animate(change, this.model.duration + 'ms').then(() => {\n                    this._animating = false;\n                    if (this.update.length)\n                        update();\n                });\n                this.update = [];\n            }\n        }, 20);\n        const update_prop = (prop) => {\n            if (!this.update.includes(prop))\n                this.update.push(prop);\n            update();\n        };\n        this.connect(this.model.properties.config.change, () => update_prop('config'));\n        this.connect(this.model.source.properties.data.change, () => update_prop('data'));\n        this.connect(this.model.source.streaming, () => update_prop('data'));\n        this.connect(this.model.source.patching, () => update_prop('data'));\n        this.connect(this.model.properties.tooltip.change, () => {\n            this.vizzu_view.feature('tooltip', this.model.tooltip);\n        });\n        this.connect(this.model.properties.style.change, () => update_prop('style'));\n    }\n    get valid_config() {\n        const columns = this.model.source.columns();\n        if ('channels' in this.model.config) {\n            for (const col of Object.values(this.model.config.channels)) {\n                if ((0, types_1.isArray)(col)) {\n                    for (const c of col) {\n                        if (col != null && !columns.includes(c))\n                            return false;\n                    }\n                }\n                else if ((0, types_1.isObject)(col)) {\n                    for (const prop of Object.keys(col)) {\n                        for (const c of col[prop]) {\n                            if (col != null && !columns.includes(c))\n                                return false;\n                        }\n                    }\n                }\n                else if (col != null && !columns.includes(col))\n                    return false;\n            }\n        }\n        else {\n            for (const prop of VECTORIZED_PROPERTIES) {\n                if (prop in this.model.config && !columns.includes(this.model.config[prop]))\n                    return false;\n            }\n        }\n        return true;\n    }\n    config() {\n        let config = Object.assign({}, this.model.config);\n        if ('channels' in config)\n            config['channels'] = Object.assign({}, config.channels);\n        if (config.preset != undefined)\n            config = window.Vizzu.presets[config.preset](config);\n        return config;\n    }\n    data() {\n        const series = [];\n        for (const column of this.model.columns) {\n            let array = [...this.model.source.get_array(column.name)];\n            if (column.type === 'datetime' || column.type == 'date')\n                column.type = 'dimension';\n            if (column.type === 'dimension')\n                array = array.map(String);\n            series.push(Object.assign(Object.assign({}, column), { values: array }));\n        }\n        return { series };\n    }\n    render() {\n        super.render();\n        this.container = (0, dom_1.div)({ 'style': 'display: contents;' });\n        this.shadow_el.append(this.container);\n        const state = { config: this.config(), data: this.data(), style: this.model.style };\n        this.vizzu_view = new window.Vizzu(this.container, state);\n        this._animating = true;\n        this.vizzu_view.initializing.then((chart) => {\n            chart.on('click', (event) => {\n                this.model.trigger_event(new VizzuEvent(event.data));\n            });\n            chart.feature('tooltip', this.model.tooltip);\n            this._animating = false;\n        });\n    }\n    remove() {\n        if (this.vizzu_view) {\n            this.vizzu_view.detach();\n        }\n        super.remove();\n    }\n}\nexports.VizzuChartView = VizzuChartView;\nVizzuChartView.__name__ = \"VizzuChartView\";\nclass VizzuChart extends layout_1.HTMLBox {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.VizzuChart = VizzuChart;\n_a = VizzuChart;\nVizzuChart.__name__ = \"VizzuChart\";\nVizzuChart.__module__ = \"panel.models.vizzu\";\n(() => {\n    _a.prototype.default_view = VizzuChartView;\n    _a.define(({ Any, Array, Boolean, Number, Ref }) => ({\n        animation: [Any, {}],\n        config: [Any, {}],\n        columns: [Array(Any), []],\n        source: [Ref(column_data_source_1.ColumnDataSource),],\n        duration: [Number, 500],\n        style: [Any, {}],\n        tooltip: [Boolean, false],\n    }));\n})();\n//# sourceMappingURL=vizzu.js.map\n","type":"js","dependency_paths":[["debounce","/croot/panel_1706539561184/work/panel/node_modules/debounce/index.js"],["./layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"]],"dependency_map":[],"exported":[{"type":"named","name":"VizzuEvent"},{"type":"named","name":"VizzuChartView"},{"type":"named","name":"VizzuChart"}],"externals":[],"shims":[]},"code":{"source":"/* models/vizzu.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const types_1 = require(\"@bokehjs/core/util/types\");\n    const column_data_source_1 = require(\"@bokehjs/models/sources/column_data_source\");\n    const bokeh_events_1 = require(\"@bokehjs/core/bokeh_events\");\n    const debounce_1 = require(\"99a25e6992\") /* debounce */;\n    const layout_1 = require(\"cac5f3ed28\") /* ./layout */;\n    class VizzuEvent extends bokeh_events_1.ModelEvent {\n        constructor(data) {\n            super();\n            this.data = data;\n            this.event_name = \"vizzu_event\";\n            this.publish = true;\n        }\n        get event_values() {\n            return { model: this.origin, data: this.data };\n        }\n    }\n    exports.VizzuEvent = VizzuEvent;\n    VizzuEvent.__name__ = \"VizzuEvent\";\n    const VECTORIZED_PROPERTIES = ['x', 'y', 'color', 'label', 'lightness', 'size', 'splittedBy', 'dividedBy'];\n    class VizzuChartView extends layout_1.HTMLBoxView {\n        constructor() {\n            super(...arguments);\n            this.update = [];\n            this._animating = false;\n        }\n        connect_signals() {\n            super.connect_signals();\n            const update = (0, debounce_1.debounce)(() => {\n                if (!this.valid_config) {\n                    console.warn('Vizzu config not valid given current data.');\n                    return;\n                }\n                else if (!this.update.length || this._animating)\n                    return;\n                else {\n                    let change = {};\n                    for (const prop of this.update) {\n                        if (prop === 'config')\n                            change = Object.assign(Object.assign({}, change), { config: this.config() });\n                        else if (prop === 'data')\n                            change = Object.assign(Object.assign({}, change), { data: this.data() });\n                        else\n                            change = Object.assign(Object.assign({}, change), { style: this.model.style });\n                    }\n                    this._animating = true;\n                    this.vizzu_view.animate(change, this.model.duration + 'ms').then(() => {\n                        this._animating = false;\n                        if (this.update.length)\n                            update();\n                    });\n                    this.update = [];\n                }\n            }, 20);\n            const update_prop = (prop) => {\n                if (!this.update.includes(prop))\n                    this.update.push(prop);\n                update();\n            };\n            this.connect(this.model.properties.config.change, () => update_prop('config'));\n            this.connect(this.model.source.properties.data.change, () => update_prop('data'));\n            this.connect(this.model.source.streaming, () => update_prop('data'));\n            this.connect(this.model.source.patching, () => update_prop('data'));\n            this.connect(this.model.properties.tooltip.change, () => {\n                this.vizzu_view.feature('tooltip', this.model.tooltip);\n            });\n            this.connect(this.model.properties.style.change, () => update_prop('style'));\n        }\n        get valid_config() {\n            const columns = this.model.source.columns();\n            if ('channels' in this.model.config) {\n                for (const col of Object.values(this.model.config.channels)) {\n                    if ((0, types_1.isArray)(col)) {\n                        for (const c of col) {\n                            if (col != null && !columns.includes(c))\n                                return false;\n                        }\n                    }\n                    else if ((0, types_1.isObject)(col)) {\n                        for (const prop of Object.keys(col)) {\n                            for (const c of col[prop]) {\n                                if (col != null && !columns.includes(c))\n                                    return false;\n                            }\n                        }\n                    }\n                    else if (col != null && !columns.includes(col))\n                        return false;\n                }\n            }\n            else {\n                for (const prop of VECTORIZED_PROPERTIES) {\n                    if (prop in this.model.config && !columns.includes(this.model.config[prop]))\n                        return false;\n                }\n            }\n            return true;\n        }\n        config() {\n            let config = Object.assign({}, this.model.config);\n            if ('channels' in config)\n                config['channels'] = Object.assign({}, config.channels);\n            if (config.preset != undefined)\n                config = window.Vizzu.presets[config.preset](config);\n            return config;\n        }\n        data() {\n            const series = [];\n            for (const column of this.model.columns) {\n                let array = [...this.model.source.get_array(column.name)];\n                if (column.type === 'datetime' || column.type == 'date')\n                    column.type = 'dimension';\n                if (column.type === 'dimension')\n                    array = array.map(String);\n                series.push(Object.assign(Object.assign({}, column), { values: array }));\n            }\n            return { series };\n        }\n        render() {\n            super.render();\n            this.container = (0, dom_1.div)({ 'style': 'display: contents;' });\n            this.shadow_el.append(this.container);\n            const state = { config: this.config(), data: this.data(), style: this.model.style };\n            this.vizzu_view = new window.Vizzu(this.container, state);\n            this._animating = true;\n            this.vizzu_view.initializing.then((chart) => {\n                chart.on('click', (event) => {\n                    this.model.trigger_event(new VizzuEvent(event.data));\n                });\n                chart.feature('tooltip', this.model.tooltip);\n                this._animating = false;\n            });\n        }\n        remove() {\n            if (this.vizzu_view) {\n                this.vizzu_view.detach();\n            }\n            super.remove();\n        }\n    }\n    exports.VizzuChartView = VizzuChartView;\n    VizzuChartView.__name__ = \"VizzuChartView\";\n    class VizzuChart extends layout_1.HTMLBox {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.VizzuChart = VizzuChart;\n    _a = VizzuChart;\n    VizzuChart.__name__ = \"VizzuChart\";\n    VizzuChart.__module__ = \"panel.models.vizzu\";\n    (() => {\n        _a.prototype.default_view = VizzuChartView;\n        _a.define(({ Any, Array, Boolean, Number, Ref }) => ({\n            animation: [Any, {}],\n            config: [Any, {}],\n            columns: [Array(Any), []],\n            source: [Ref(column_data_source_1.ColumnDataSource),],\n            duration: [Number, 500],\n            style: [Any, {}],\n            tooltip: [Boolean, false],\n        }));\n    })();\n}\n","min_source":"function _(e,t,i,s,n){var o;s();const a=e(\"@bokehjs/core/dom\"),c=e(\"@bokehjs/core/util/types\"),l=e(\"@bokehjs/models/sources/column_data_source\"),r=e(\"@bokehjs/core/bokeh_events\"),h=e(\"99a25e6992\"),d=e(\"cac5f3ed28\");class u extends r.ModelEvent{constructor(e){super(),this.data=e,this.event_name=\"vizzu_event\",this.publish=!0}get event_values(){return{model:this.origin,data:this.data}}}i.VizzuEvent=u,u.__name__=\"VizzuEvent\";const g=[\"x\",\"y\",\"color\",\"label\",\"lightness\",\"size\",\"splittedBy\",\"dividedBy\"];class m extends d.HTMLBoxView{constructor(){super(...arguments),this.update=[],this._animating=!1}connect_signals(){super.connect_signals();const e=(0,h.debounce)((()=>{if(this.valid_config){if(this.update.length&&!this._animating){let t={};for(const e of this.update)t=\"config\"===e?Object.assign(Object.assign({},t),{config:this.config()}):\"data\"===e?Object.assign(Object.assign({},t),{data:this.data()}):Object.assign(Object.assign({},t),{style:this.model.style});this._animating=!0,this.vizzu_view.animate(t,this.model.duration+\"ms\").then((()=>{this._animating=!1,this.update.length&&e()})),this.update=[]}}else console.warn(\"Vizzu config not valid given current data.\")}),20),t=t=>{this.update.includes(t)||this.update.push(t),e()};this.connect(this.model.properties.config.change,(()=>t(\"config\"))),this.connect(this.model.source.properties.data.change,(()=>t(\"data\"))),this.connect(this.model.source.streaming,(()=>t(\"data\"))),this.connect(this.model.source.patching,(()=>t(\"data\"))),this.connect(this.model.properties.tooltip.change,(()=>{this.vizzu_view.feature(\"tooltip\",this.model.tooltip)})),this.connect(this.model.properties.style.change,(()=>t(\"style\")))}get valid_config(){const e=this.model.source.columns();if(\"channels\"in this.model.config){for(const t of Object.values(this.model.config.channels))if((0,c.isArray)(t)){for(const i of t)if(null!=t&&!e.includes(i))return!1}else if((0,c.isObject)(t)){for(const i of Object.keys(t))for(const s of t[i])if(null!=t&&!e.includes(s))return!1}else if(null!=t&&!e.includes(t))return!1}else for(const t of g)if(t in this.model.config&&!e.includes(this.model.config[t]))return!1;return!0}config(){let e=Object.assign({},this.model.config);return\"channels\"in e&&(e.channels=Object.assign({},e.channels)),null!=e.preset&&(e=window.Vizzu.presets[e.preset](e)),e}data(){const e=[];for(const t of this.model.columns){let i=[...this.model.source.get_array(t.name)];\"datetime\"!==t.type&&\"date\"!=t.type||(t.type=\"dimension\"),\"dimension\"===t.type&&(i=i.map(String)),e.push(Object.assign(Object.assign({},t),{values:i}))}return{series:e}}render(){super.render(),this.container=(0,a.div)({style:\"display: contents;\"}),this.shadow_el.append(this.container);const e={config:this.config(),data:this.data(),style:this.model.style};this.vizzu_view=new window.Vizzu(this.container,e),this._animating=!0,this.vizzu_view.initializing.then((e=>{e.on(\"click\",(e=>{this.model.trigger_event(new u(e.data))})),e.feature(\"tooltip\",this.model.tooltip),this._animating=!1}))}remove(){this.vizzu_view&&this.vizzu_view.detach(),super.remove()}}i.VizzuChartView=m,m.__name__=\"VizzuChartView\";class f extends d.HTMLBox{constructor(e){super(e)}}i.VizzuChart=f,o=f,f.__name__=\"VizzuChart\",f.__module__=\"panel.models.vizzu\",o.prototype.default_view=m,o.define((({Any:e,Array:t,Boolean:i,Number:s,Ref:n})=>({animation:[e,{}],config:[e,{}],columns:[t(e),[]],source:[n(l.ColumnDataSource)],duration:[s,500],style:[e,{}],tooltip:[i,!1]})))}\n//# sourceMappingURL=vizzu.min.js.map","min_map":"{\"version\":3,\"file\":\"vizzu.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"dom_1\",\"types_1\",\"column_data_source_1\",\"bokeh_events_1\",\"debounce_1\",\"layout_1\",\"VizzuEvent\",\"ModelEvent\",\"constructor\",\"data\",\"super\",\"this\",\"event_name\",\"publish\",\"event_values\",\"model\",\"origin\",\"__name__\",\"VECTORIZED_PROPERTIES\",\"VizzuChartView\",\"HTMLBoxView\",\"arguments\",\"update\",\"_animating\",\"connect_signals\",\"debounce\",\"valid_config\",\"length\",\"change\",\"prop\",\"Object\",\"assign\",\"config\",\"style\",\"vizzu_view\",\"animate\",\"duration\",\"then\",\"console\",\"warn\",\"update_prop\",\"includes\",\"push\",\"connect\",\"properties\",\"source\",\"streaming\",\"patching\",\"tooltip\",\"feature\",\"columns\",\"col\",\"values\",\"channels\",\"isArray\",\"c\",\"isObject\",\"keys\",\"undefined\",\"preset\",\"window\",\"Vizzu\",\"presets\",\"series\",\"column\",\"array\",\"get_array\",\"name\",\"type\",\"map\",\"String\",\"render\",\"container\",\"div\",\"shadow_el\",\"append\",\"state\",\"initializing\",\"chart\",\"on\",\"event\",\"trigger_event\",\"remove\",\"detach\",\"VizzuChart\",\"HTMLBox\",\"attrs\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Any\",\"Array\",\"Boolean\",\"Number\",\"Ref\",\"animation\",\"ColumnDataSource\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/index.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/vtk/index.js","canonical":"models/vtk/index","resolution":"ESM","id":"c51f25e2a7","hash":"c51f25e2a7971dd6de3a2c3961516d7ffe006a12bb20f4a24b2fb383203c96b8","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VTKSynchronizedPlot = exports.VTKAxes = exports.VTKVolumePlot = exports.VTKJSPlot = void 0;\nvar vtkjs_1 = require(\"./vtkjs\");\nObject.defineProperty(exports, \"VTKJSPlot\", { enumerable: true, get: function () { return vtkjs_1.VTKJSPlot; } });\nvar vtkvolume_1 = require(\"./vtkvolume\");\nObject.defineProperty(exports, \"VTKVolumePlot\", { enumerable: true, get: function () { return vtkvolume_1.VTKVolumePlot; } });\nvar vtkaxes_1 = require(\"./vtkaxes\");\nObject.defineProperty(exports, \"VTKAxes\", { enumerable: true, get: function () { return vtkaxes_1.VTKAxes; } });\nvar vtksynchronized_1 = require(\"./vtksynchronized\");\nObject.defineProperty(exports, \"VTKSynchronizedPlot\", { enumerable: true, get: function () { return vtksynchronized_1.VTKSynchronizedPlot; } });\n//# sourceMappingURL=index.js.map\n","type":"js","dependency_paths":[["./vtkjs","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/vtkjs.js"],["./vtkvolume","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/vtkvolume.js"],["./vtkaxes","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/vtkaxes.js"],["./vtksynchronized","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/vtksynchronized.js"]],"dependency_map":[],"exported":[{"type":"bindings","bindings":[[null,"VTKJSPlot"]],"module":"./vtkjs"},{"type":"bindings","bindings":[[null,"VTKVolumePlot"]],"module":"./vtkvolume"},{"type":"bindings","bindings":[[null,"VTKAxes"]],"module":"./vtkaxes"},{"type":"bindings","bindings":[[null,"VTKSynchronizedPlot"]],"module":"./vtksynchronized"}],"externals":[],"shims":[]},"code":{"source":"/* models/vtk/index.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var vtkjs_1 = require(\"173e6cb054\") /* ./vtkjs */;\n    __esExport(\"VTKJSPlot\", vtkjs_1.VTKJSPlot);\n    var vtkvolume_1 = require(\"9cb70c6ab6\") /* ./vtkvolume */;\n    __esExport(\"VTKVolumePlot\", vtkvolume_1.VTKVolumePlot);\n    var vtkaxes_1 = require(\"5a606f3f35\") /* ./vtkaxes */;\n    __esExport(\"VTKAxes\", vtkaxes_1.VTKAxes);\n    var vtksynchronized_1 = require(\"66775d6392\") /* ./vtksynchronized */;\n    __esExport(\"VTKSynchronizedPlot\", vtksynchronized_1.VTKSynchronizedPlot);\n}\n","min_source":"function _(o,V,l,K,T){K(),T(\"VTKJSPlot\",o(\"173e6cb054\").VTKJSPlot),T(\"VTKVolumePlot\",o(\"9cb70c6ab6\").VTKVolumePlot),T(\"VTKAxes\",o(\"5a606f3f35\").VTKAxes),T(\"VTKSynchronizedPlot\",o(\"66775d6392\").VTKSynchronizedPlot)}\n//# sourceMappingURL=index.min.js.map","min_map":"{\"version\":3,\"file\":\"index.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"VTKJSPlot\",\"VTKVolumePlot\",\"VTKAxes\",\"VTKSynchronizedPlot\"],\"sources\":[\"0\"],\"mappings\":\"AAA0B,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GACvED,IAEAC,EAAW,YADGJ,EAAQ,cACUK,WAEhCD,EAAW,gBADOJ,EAAQ,cACcM,eAExCF,EAAW,UADKJ,EAAQ,cACQO,SAEhCH,EAAW,sBADaJ,EAAQ,cACoBQ,oBACxD\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/vtkjs.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/vtk/vtkjs.js","canonical":"models/vtk/vtkjs","resolution":"ESM","id":"173e6cb054","hash":"173e6cb054b621b39f86be88816dd7c2d501f593f21ee8c49fc2aa9dd927fbec","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VTKJSPlot = exports.VTKJSPlotView = void 0;\nvar _a;\nconst vtklayout_1 = require(\"./vtklayout\");\nconst util_1 = require(\"./util\");\nclass VTKJSPlotView extends vtklayout_1.AbstractVTKView {\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.data.change, () => {\n            this.invalidate_render();\n        });\n    }\n    render() {\n        super.render();\n        this._create_orientation_widget();\n        this._set_axes();\n    }\n    invalidate_render() {\n        this._vtk_renwin = null;\n        super.invalidate_render();\n    }\n    init_vtk_renwin() {\n        this._vtk_renwin = util_1.vtkns.FullScreenRenderWindow.newInstance({\n            rootContainer: this._vtk_container,\n            container: this._vtk_container,\n        });\n    }\n    plot() {\n        if (this.model.data == null) {\n            this._vtk_renwin.getRenderWindow().render();\n            return;\n        }\n        const dataAccessHelper = util_1.vtkns.DataAccessHelper.get(\"zip\", {\n            zipContent: atob(this.model.data),\n            callback: (_zip) => {\n                const sceneImporter = util_1.vtkns.HttpSceneLoader.newInstance({\n                    renderer: this._vtk_renwin.getRenderer(),\n                    dataAccessHelper,\n                });\n                const fn = window.vtk.macro.debounce(() => {\n                    setTimeout(() => {\n                        if (this._axes == null && this.model.axes)\n                            this._set_axes();\n                        this._set_camera_state();\n                        this._get_camera_state();\n                        this._vtk_renwin.getRenderWindow().render();\n                    }, 100);\n                }, 100);\n                sceneImporter.setUrl(\"index.json\");\n                sceneImporter.onReady(fn);\n            },\n        });\n    }\n}\nexports.VTKJSPlotView = VTKJSPlotView;\nVTKJSPlotView.__name__ = \"VTKJSPlotView\";\nclass VTKJSPlot extends vtklayout_1.AbstractVTKPlot {\n}\nexports.VTKJSPlot = VTKJSPlot;\n_a = VTKJSPlot;\nVTKJSPlot.__name__ = \"VTKJSPlot\";\n(() => {\n    _a.prototype.default_view = VTKJSPlotView;\n    _a.define(({ Boolean, Nullable, String }) => ({\n        data: [Nullable(String)],\n        enable_keybindings: [Boolean, false],\n    }));\n})();\n//# sourceMappingURL=vtkjs.js.map\n","type":"js","dependency_paths":[["./vtklayout","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/vtklayout.js"],["./util","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/util.js"]],"dependency_map":[],"exported":[{"type":"named","name":"VTKJSPlotView"},{"type":"named","name":"VTKJSPlot"}],"externals":[],"shims":[]},"code":{"source":"/* models/vtk/vtkjs.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const vtklayout_1 = require(\"1de1ccb7ff\") /* ./vtklayout */;\n    const util_1 = require(\"a76a9b7c23\") /* ./util */;\n    class VTKJSPlotView extends vtklayout_1.AbstractVTKView {\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.data.change, () => {\n                this.invalidate_render();\n            });\n        }\n        render() {\n            super.render();\n            this._create_orientation_widget();\n            this._set_axes();\n        }\n        invalidate_render() {\n            this._vtk_renwin = null;\n            super.invalidate_render();\n        }\n        init_vtk_renwin() {\n            this._vtk_renwin = util_1.vtkns.FullScreenRenderWindow.newInstance({\n                rootContainer: this._vtk_container,\n                container: this._vtk_container,\n            });\n        }\n        plot() {\n            if (this.model.data == null) {\n                this._vtk_renwin.getRenderWindow().render();\n                return;\n            }\n            const dataAccessHelper = util_1.vtkns.DataAccessHelper.get(\"zip\", {\n                zipContent: atob(this.model.data),\n                callback: (_zip) => {\n                    const sceneImporter = util_1.vtkns.HttpSceneLoader.newInstance({\n                        renderer: this._vtk_renwin.getRenderer(),\n                        dataAccessHelper,\n                    });\n                    const fn = window.vtk.macro.debounce(() => {\n                        setTimeout(() => {\n                            if (this._axes == null && this.model.axes)\n                                this._set_axes();\n                            this._set_camera_state();\n                            this._get_camera_state();\n                            this._vtk_renwin.getRenderWindow().render();\n                        }, 100);\n                    }, 100);\n                    sceneImporter.setUrl(\"index.json\");\n                    sceneImporter.onReady(fn);\n                },\n            });\n        }\n    }\n    exports.VTKJSPlotView = VTKJSPlotView;\n    VTKJSPlotView.__name__ = \"VTKJSPlotView\";\n    class VTKJSPlot extends vtklayout_1.AbstractVTKPlot {\n    }\n    exports.VTKJSPlot = VTKJSPlot;\n    _a = VTKJSPlot;\n    VTKJSPlot.__name__ = \"VTKJSPlot\";\n    (() => {\n        _a.prototype.default_view = VTKJSPlotView;\n        _a.define(({ Boolean, Nullable, String }) => ({\n            data: [Nullable(String)],\n            enable_keybindings: [Boolean, false],\n        }));\n    })();\n}\n","min_source":"function _(e,t,n,i,s){var a;i();const r=e(\"1de1ccb7ff\"),_=e(\"a76a9b7c23\");class o extends r.AbstractVTKView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.data.change,(()=>{this.invalidate_render()}))}render(){super.render(),this._create_orientation_widget(),this._set_axes()}invalidate_render(){this._vtk_renwin=null,super.invalidate_render()}init_vtk_renwin(){this._vtk_renwin=_.vtkns.FullScreenRenderWindow.newInstance({rootContainer:this._vtk_container,container:this._vtk_container})}plot(){if(null==this.model.data)return void this._vtk_renwin.getRenderWindow().render();const e=_.vtkns.DataAccessHelper.get(\"zip\",{zipContent:atob(this.model.data),callback:t=>{const n=_.vtkns.HttpSceneLoader.newInstance({renderer:this._vtk_renwin.getRenderer(),dataAccessHelper:e}),i=window.vtk.macro.debounce((()=>{setTimeout((()=>{null==this._axes&&this.model.axes&&this._set_axes(),this._set_camera_state(),this._get_camera_state(),this._vtk_renwin.getRenderWindow().render()}),100)}),100);n.setUrl(\"index.json\"),n.onReady(i)}})}}n.VTKJSPlotView=o,o.__name__=\"VTKJSPlotView\";class d extends r.AbstractVTKPlot{}n.VTKJSPlot=d,a=d,d.__name__=\"VTKJSPlot\",a.prototype.default_view=o,a.define((({Boolean:e,Nullable:t,String:n})=>({data:[t(n)],enable_keybindings:[e,!1]})))}\n//# sourceMappingURL=vtkjs.min.js.map","min_map":"{\"version\":3,\"file\":\"vtkjs.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"vtklayout_1\",\"util_1\",\"VTKJSPlotView\",\"AbstractVTKView\",\"connect_signals\",\"super\",\"this\",\"connect\",\"model\",\"properties\",\"data\",\"change\",\"invalidate_render\",\"render\",\"_create_orientation_widget\",\"_set_axes\",\"_vtk_renwin\",\"init_vtk_renwin\",\"vtkns\",\"FullScreenRenderWindow\",\"newInstance\",\"rootContainer\",\"_vtk_container\",\"container\",\"plot\",\"getRenderWindow\",\"dataAccessHelper\",\"DataAccessHelper\",\"get\",\"zipContent\",\"atob\",\"callback\",\"_zip\",\"sceneImporter\",\"HttpSceneLoader\",\"renderer\",\"getRenderer\",\"fn\",\"window\",\"vtk\",\"macro\",\"debounce\",\"setTimeout\",\"_axes\",\"axes\",\"_set_camera_state\",\"_get_camera_state\",\"setUrl\",\"onReady\",\"__name__\",\"VTKJSPlot\",\"AbstractVTKPlot\",\"prototype\",\"default_view\",\"define\",\"Boolean\",\"Nullable\",\"String\",\"enable_keybindings\"],\"sources\":[\"0\"],\"mappings\":\"AAA0B,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAEvE,IAAIC,EADJF,IAEA,MAAMG,EAAcN,EAAQ,cACtBO,EAASP,EAAQ,cACvB,MAAMQ,UAAsBF,EAAYG,gBACpC,eAAAC,GACIC,MAAMD,kBACNE,KAAKC,QAAQD,KAAKE,MAAMC,WAAWC,KAAKC,QAAQ,KAC5CL,KAAKM,mBAAmB,GAEhC,CACA,MAAAC,GACIR,MAAMQ,SACNP,KAAKQ,6BACLR,KAAKS,WACT,CACA,iBAAAH,GACIN,KAAKU,YAAc,KACnBX,MAAMO,mBACV,CACA,eAAAK,GACIX,KAAKU,YAAcf,EAAOiB,MAAMC,uBAAuBC,YAAY,CAC/DC,cAAef,KAAKgB,eACpBC,UAAWjB,KAAKgB,gBAExB,CACA,IAAAE,GACI,GAAuB,MAAnBlB,KAAKE,MAAME,KAEX,YADAJ,KAAKU,YAAYS,kBAAkBZ,SAGvC,MAAMa,EAAmBzB,EAAOiB,MAAMS,iBAAiBC,IAAI,MAAO,CAC9DC,WAAYC,KAAKxB,KAAKE,MAAME,MAC5BqB,SAAWC,IACP,MAAMC,EAAgBhC,EAAOiB,MAAMgB,gBAAgBd,YAAY,CAC3De,SAAU7B,KAAKU,YAAYoB,cAC3BV,qBAEEW,EAAKC,OAAOC,IAAIC,MAAMC,UAAS,KACjCC,YAAW,KACW,MAAdpC,KAAKqC,OAAiBrC,KAAKE,MAAMoC,MACjCtC,KAAKS,YACTT,KAAKuC,oBACLvC,KAAKwC,oBACLxC,KAAKU,YAAYS,kBAAkBZ,QAAQ,GAC5C,IAAI,GACR,KACHoB,EAAcc,OAAO,cACrBd,EAAce,QAAQX,EAAG,GAGrC,EAEJzC,EAAQM,cAAgBA,EACxBA,EAAc+C,SAAW,gBACzB,MAAMC,UAAkBlD,EAAYmD,iBAEpCvD,EAAQsD,UAAYA,EACpBnD,EAAKmD,EACLA,EAAUD,SAAW,YAEjBlD,EAAGqD,UAAUC,aAAenD,EAC5BH,EAAGuD,QAAO,EAAGC,UAASC,WAAUC,aAAa,CACzC/C,KAAM,CAAC8C,EAASC,IAChBC,mBAAoB,CAACH,GAAS,MAG1C\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/vtklayout.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/vtk/vtklayout.js","canonical":"models/vtk/vtklayout","resolution":"ESM","id":"1de1ccb7ff","hash":"1de1ccb7ff995c41b71249e72497d1223ed63695f5eed9a69aa5013c359cb90f","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractVTKPlot = exports.AbstractVTKView = void 0;\nvar _a;\nconst dom_1 = require(\"@bokehjs/core/dom\");\nconst object_1 = require(\"@bokehjs/core/util/object\");\nconst color_mapper_1 = require(\"@bokehjs/models/mappers/color_mapper\");\nconst kinds_1 = require(\"@bokehjs/core/kinds\");\nconst layout_1 = require(\"../layout\");\nconst util_1 = require(\"./util\");\nconst vtkcolorbar_1 = require(\"./vtkcolorbar\");\nconst vtkaxes_1 = require(\"./vtkaxes\");\nconst INFO_DIV_STYLE = {\n    padding: \"0px 2px 0px 2px\",\n    maxHeight: \"150px\",\n    height: \"auto\",\n    backgroundColor: \"rgba(255, 255, 255, 0.4)\",\n    borderRadius: \"10px\",\n    margin: \"2px\",\n    boxSizing: \"border-box\",\n    overflow: \"hidden\",\n    overflowY: \"auto\",\n    transition: \"width 0.1s linear\",\n    bottom: \"0px\",\n    position: \"absolute\",\n};\nconst textPositions = (0, kinds_1.Enum)(\"LowerLeft\", \"LowerRight\", \"UpperLeft\", \"UpperRight\", \"LowerEdge\", \"RightEdge\", \"LeftEdge\", \"UpperEdge\");\nclass AbstractVTKView extends layout_1.HTMLBoxView {\n    initialize() {\n        super.initialize();\n        this._camera_callbacks = [];\n        this._renderable = true;\n        this._setting_camera = false;\n        this._rendered = false;\n    }\n    _add_colorbars() {\n        //construct colorbars\n        const old_info_div = this.shadow_el.querySelector(\".vtk_info\");\n        if (old_info_div)\n            this.shadow_el.removeChild(old_info_div);\n        if (this.model.color_mappers.length < 1)\n            return;\n        const info_div = document.createElement(\"div\");\n        const expand_width = \"350px\";\n        const collapsed_width = \"30px\";\n        info_div.classList.add('vtk_info');\n        (0, util_1.applyStyle)(info_div, INFO_DIV_STYLE);\n        (0, util_1.applyStyle)(info_div, { width: expand_width });\n        this.shadow_el.appendChild(info_div);\n        //construct colorbars\n        const colorbars = [];\n        this.model.color_mappers.forEach((mapper) => {\n            const cb = new vtkcolorbar_1.VTKColorBar(info_div, mapper);\n            colorbars.push(cb);\n        });\n        //content when collapsed\n        const dots = document.createElement('div');\n        (0, util_1.applyStyle)(dots, { textAlign: \"center\", fontSize: \"20px\" });\n        dots.innerText = \"...\";\n        info_div.addEventListener('click', () => {\n            if (info_div.style.width === collapsed_width) {\n                info_div.removeChild(dots);\n                (0, util_1.applyStyle)(info_div, { height: \"auto\", width: expand_width });\n                colorbars.forEach((cb) => info_div.appendChild(cb.canvas));\n            }\n            else {\n                colorbars.forEach((cb) => info_div.removeChild(cb.canvas));\n                (0, util_1.applyStyle)(info_div, { height: collapsed_width, width: collapsed_width });\n                info_div.appendChild(dots);\n            }\n        });\n        info_div.click();\n    }\n    _init_annotations_container() {\n        if (!this._annotations_container) {\n            this._annotations_container = document.createElement(\"div\");\n            this._annotations_container.style.position = \"absolute\";\n            this._annotations_container.style.width = \"100%\";\n            this._annotations_container.style.height = \"100%\";\n            this._annotations_container.style.top = \"0\";\n            this._annotations_container.style.left = \"0\";\n            this._annotations_container.style.pointerEvents = \"none\";\n        }\n    }\n    _clean_annotations() {\n        if (this._annotations_container) {\n            while (this._annotations_container.firstElementChild) {\n                this._annotations_container.firstElementChild.remove();\n            }\n        }\n    }\n    _add_annotations() {\n        this._clean_annotations();\n        const { annotations } = this.model;\n        if (annotations != null) {\n            for (let annotation of annotations) {\n                const { viewport, color, fontSize, fontFamily } = annotation;\n                textPositions.values.forEach((pos) => {\n                    const text = annotation[pos];\n                    if (text) {\n                        const div = document.createElement(\"div\");\n                        div.textContent = text;\n                        const { style } = div;\n                        style.position = \"absolute\";\n                        style.color = `rgb(${color.map((val) => 255 * val).join(\",\")})`;\n                        style.fontSize = `${fontSize}px`;\n                        style.padding = \"5px\";\n                        style.fontFamily = fontFamily;\n                        style.width = \"fit-content\";\n                        if (pos == \"UpperLeft\") {\n                            style.top = `${(1 - viewport[3]) * 100}%`;\n                            style.left = `${viewport[0] * 100}%`;\n                        }\n                        if (pos == \"UpperRight\") {\n                            style.top = `${(1 - viewport[3]) * 100}%`;\n                            style.right = `${(1 - viewport[2]) * 100}%`;\n                        }\n                        if (pos == \"LowerLeft\") {\n                            style.bottom = `${viewport[1] * 100}%`;\n                            style.left = `${viewport[0] * 100}%`;\n                        }\n                        if (pos == \"LowerRight\") {\n                            style.bottom = `${viewport[1] * 100}%`;\n                            style.right = `${(1 - viewport[2]) * 100}%`;\n                        }\n                        if (pos == \"UpperEdge\") {\n                            style.top = `${(1 - viewport[3]) * 100}%`;\n                            style.left = `${(viewport[0] + (viewport[2] - viewport[0]) / 2) * 100}%`;\n                            style.transform = \"translateX(-50%)\";\n                        }\n                        if (pos == \"LowerEdge\") {\n                            style.bottom = `${viewport[1] * 100}%`;\n                            style.left = `${(viewport[0] + (viewport[2] - viewport[0]) / 2) * 100}%`;\n                            style.transform = \"translateX(-50%)\";\n                        }\n                        if (pos == \"LeftEdge\") {\n                            style.left = `${viewport[0] * 100}%`;\n                            style.top = `${(1 - viewport[3] + (viewport[3] - viewport[1]) / 2) * 100}%`;\n                            style.transform = \"translateY(-50%)\";\n                        }\n                        if (pos == \"RightEdge\") {\n                            style.right = `${(1 - viewport[2]) * 100}%`;\n                            style.top = `${(1 - viewport[3] + (viewport[3] - viewport[1]) / 2) * 100}%`;\n                            style.transform = \"translateY(-50%)\";\n                        }\n                        this._annotations_container.appendChild(div);\n                    }\n                });\n            }\n        }\n    }\n    connect_signals() {\n        super.connect_signals();\n        this.on_change(this.model.properties.orientation_widget, () => {\n            this._orientation_widget_visibility(this.model.orientation_widget);\n        });\n        this.on_change(this.model.properties.camera, () => this._set_camera_state());\n        this.on_change(this.model.properties.axes, () => {\n            this._delete_axes();\n            if (this.model.axes)\n                this._set_axes();\n            this._vtk_render();\n        });\n        this.on_change(this.model.properties.color_mappers, () => this._add_colorbars());\n        this.on_change(this.model.properties.annotations, () => this._add_annotations());\n    }\n    render() {\n        super.render();\n        this._rendered = false;\n        if (this._vtk_renwin && this._vtk_container) {\n            // warning if _vtk_renwin contain controllers or other elements\n            // we must attach them to the new el\n            this.shadow_el.appendChild(this._vtk_container);\n            this.shadow_el.appendChild(this._annotations_container);\n            return;\n        }\n        this._orientationWidget = null;\n        this._axes = null;\n        this._vtk_container = (0, dom_1.div)();\n        this.init_vtk_renwin();\n        this._init_annotations_container();\n        (0, layout_1.set_size)(this._vtk_container, this.model);\n        this.shadow_el.appendChild(this._vtk_container);\n        // update camera model state only at the end of the interaction\n        // with the scene (avoid bouncing events and large amount of events)\n        this._vtk_renwin.getInteractor().onEndAnimation(() => this._get_camera_state());\n        this._remove_default_key_binding();\n        this._bind_key_events();\n        this.plot();\n        this.model.renderer_el = this._vtk_renwin;\n        this.shadow_el.appendChild(this._annotations_container);\n    }\n    after_layout() {\n        super.after_layout();\n        if (this._renderable)\n            this._vtk_renwin.resize(); // resize call render method\n        this._vtk_render();\n        if (!this._rendered) {\n            this._add_colorbars();\n            this._add_annotations();\n            this._rendered = true;\n        }\n    }\n    invalidate_render() {\n        this._unsubscribe_camera_cb();\n        super.invalidate_render();\n    }\n    remove() {\n        this._unsubscribe_camera_cb();\n        window.removeEventListener(\"resize\", this._vtk_renwin.resize);\n        if (this._orientationWidget != null)\n            this._orientationWidget.delete();\n        this._vtk_renwin.getRenderWindow().getInteractor().delete();\n        this._vtk_renwin.delete();\n        super.remove();\n    }\n    get _vtk_camera_state() {\n        const vtk_camera = this._vtk_renwin.getRenderer().getActiveCamera();\n        let state;\n        if (vtk_camera) {\n            state = (0, object_1.clone)(vtk_camera.get());\n            delete state.cameraLightTransform;\n            delete state.classHierarchy;\n            delete state.vtkObject;\n            delete state.vtkCamera;\n            delete state.viewPlaneNormal;\n            delete state.flattenedDepIds;\n            delete state.managedInstanceId;\n            delete state.directionOfProjection;\n        }\n        return state;\n    }\n    get _axes_canvas() {\n        let axes_canvas = this._vtk_container.querySelector(\".axes-canvas\");\n        if (!axes_canvas) {\n            axes_canvas = (0, dom_1.canvas)({\n                style: {\n                    position: \"absolute\",\n                    top: \"0\",\n                    left: \"0\",\n                    width: \"100%\",\n                    height: \"100%\",\n                },\n            });\n            axes_canvas.classList.add(\"axes-canvas\");\n            this._vtk_container.appendChild(axes_canvas);\n            this._vtk_renwin.setResizeCallback(() => {\n                if (this._axes_canvas) {\n                    const dims = this._vtk_container.getBoundingClientRect();\n                    const width = Math.floor(dims.width * window.devicePixelRatio);\n                    const height = Math.floor(dims.height * window.devicePixelRatio);\n                    this._axes_canvas.setAttribute(\"width\", width.toFixed());\n                    this._axes_canvas.setAttribute(\"height\", height.toFixed());\n                }\n            });\n        }\n        return axes_canvas;\n    }\n    _bind_key_events() {\n        this.el.addEventListener(\"mouseenter\", () => {\n            const interactor = this._vtk_renwin.getInteractor();\n            if (this.model.enable_keybindings) {\n                document\n                    .querySelector(\"body\")\n                    .addEventListener(\"keypress\", interactor.handleKeyPress);\n                document\n                    .querySelector(\"body\")\n                    .addEventListener(\"keydown\", interactor.handleKeyDown);\n                document\n                    .querySelector(\"body\")\n                    .addEventListener(\"keyup\", interactor.handleKeyUp);\n            }\n        });\n        this.el.addEventListener(\"mouseleave\", () => {\n            const interactor = this._vtk_renwin.getInteractor();\n            document\n                .querySelector(\"body\")\n                .removeEventListener(\"keypress\", interactor.handleKeyPress);\n            document\n                .querySelector(\"body\")\n                .removeEventListener(\"keydown\", interactor.handleKeyDown);\n            document\n                .querySelector(\"body\")\n                .removeEventListener(\"keyup\", interactor.handleKeyUp);\n        });\n    }\n    _create_orientation_widget() {\n        const axes = util_1.vtkns.AxesActor.newInstance();\n        // add orientation widget\n        this._orientationWidget = util_1.vtkns.OrientationMarkerWidget.newInstance({\n            actor: axes,\n            interactor: this._vtk_renwin.getInteractor(),\n        });\n        this._orientationWidget.setEnabled(true);\n        this._orientationWidget.setViewportCorner(util_1.vtkns.OrientationMarkerWidget.Corners.BOTTOM_RIGHT);\n        this._orientationWidget.setViewportSize(0.15);\n        this._orientationWidget.setMinPixelSize(75);\n        this._orientationWidget.setMaxPixelSize(300);\n        if (this.model.interactive_orientation_widget)\n            this._make_orientation_widget_interactive();\n        this._orientation_widget_visibility(this.model.orientation_widget);\n    }\n    _make_orientation_widget_interactive() {\n        this._widgetManager = util_1.vtkns.WidgetManager.newInstance();\n        this._widgetManager.setRenderer(this._orientationWidget.getRenderer());\n        const axes = this._orientationWidget.getActor();\n        const widget = util_1.vtkns.InteractiveOrientationWidget.newInstance();\n        widget.placeWidget(axes.getBounds());\n        widget.setBounds(axes.getBounds());\n        widget.setPlaceFactor(1);\n        const vw = this._widgetManager.addWidget(widget);\n        // Manage user interaction\n        vw.onOrientationChange(({ direction }) => {\n            const camera = this._vtk_renwin.getRenderer().getActiveCamera();\n            const focalPoint = camera.getFocalPoint();\n            const position = camera.getPosition();\n            const viewUp = camera.getViewUp();\n            const distance = Math.sqrt(Math.pow(position[0] - focalPoint[0], 2) +\n                Math.pow(position[1] - focalPoint[1], 2) +\n                Math.pow(position[2] - focalPoint[2], 2));\n            camera.setPosition(focalPoint[0] + direction[0] * distance, focalPoint[1] + direction[1] * distance, focalPoint[2] + direction[2] * distance);\n            if (direction[0])\n                camera.setViewUp((0, util_1.majorAxis)(viewUp, 1, 2));\n            if (direction[1])\n                camera.setViewUp((0, util_1.majorAxis)(viewUp, 0, 2));\n            if (direction[2])\n                camera.setViewUp((0, util_1.majorAxis)(viewUp, 0, 1));\n            this._vtk_renwin.getRenderer().resetCameraClippingRange();\n            this._vtk_render();\n            this._get_camera_state();\n        });\n    }\n    _delete_axes() {\n        if (this._axes) {\n            Object.keys(this._axes).forEach((key) => this._vtk_renwin.getRenderer().removeActor(this._axes[key]));\n            this._axes = null;\n            const textCtx = this._axes_canvas.getContext(\"2d\");\n            if (textCtx)\n                textCtx.clearRect(0, 0, this._axes_canvas.clientWidth * window.devicePixelRatio, this._axes_canvas.clientHeight * window.devicePixelRatio);\n        }\n    }\n    _get_camera_state() {\n        if (!this._setting_camera) {\n            this._setting_camera = true;\n            this.model.camera = this._vtk_camera_state;\n            this._setting_camera = false;\n        }\n    }\n    _orientation_widget_visibility(visibility) {\n        this._orientationWidget.setEnabled(visibility);\n        if (this._widgetManager != null) {\n            if (visibility)\n                this._widgetManager.enablePicking();\n            else\n                this._widgetManager.disablePicking();\n        }\n        this._vtk_render();\n    }\n    _remove_default_key_binding() {\n        const interactor = this._vtk_renwin.getInteractor();\n        document\n            .querySelector(\"body\")\n            .removeEventListener(\"keypress\", interactor.handleKeyPress);\n        document\n            .querySelector(\"body\")\n            .removeEventListener(\"keydown\", interactor.handleKeyDown);\n        document\n            .querySelector(\"body\")\n            .removeEventListener(\"keyup\", interactor.handleKeyUp);\n    }\n    _set_axes() {\n        if (this.model.axes && this._vtk_renwin.getRenderer()) {\n            const { psActor, axesActor, gridActor } = this.model.axes.create_axes(this._axes_canvas);\n            this._axes = { psActor, axesActor, gridActor };\n            if (psActor)\n                this._vtk_renwin.getRenderer().addActor(psActor);\n            if (axesActor)\n                this._vtk_renwin.getRenderer().addActor(axesActor);\n            if (gridActor)\n                this._vtk_renwin.getRenderer().addActor(gridActor);\n        }\n    }\n    _set_camera_state() {\n        if (!this._setting_camera && this._vtk_renwin.getRenderer() !== undefined) {\n            this._setting_camera = true;\n            if (this.model.camera &&\n                JSON.stringify(this.model.camera) != JSON.stringify(this._vtk_camera_state))\n                this._vtk_renwin\n                    .getRenderer()\n                    .getActiveCamera()\n                    .set(this.model.camera);\n            this._vtk_renwin.getRenderer().resetCameraClippingRange();\n            this._setting_camera = false;\n        }\n    }\n    _unsubscribe_camera_cb() {\n        this._camera_callbacks\n            .splice(0, this._camera_callbacks.length)\n            .map((cb) => cb.unsubscribe());\n    }\n    _vtk_render() {\n        if (this._renderable) {\n            if (this._orientationWidget)\n                this._orientationWidget.updateMarkerOrientation();\n            this._vtk_renwin.getRenderWindow().render();\n        }\n    }\n}\nexports.AbstractVTKView = AbstractVTKView;\nAbstractVTKView.__name__ = \"AbstractVTKView\";\nclass AbstractVTKPlot extends layout_1.HTMLBox {\n    constructor(attrs) {\n        (0, util_1.setup_vtkns)();\n        super(attrs);\n    }\n    getActors() {\n        return this.renderer_el.getRenderer().getActors();\n    }\n}\nexports.AbstractVTKPlot = AbstractVTKPlot;\n_a = AbstractVTKPlot;\nAbstractVTKPlot.__name__ = \"AbstractVTKPlot\";\nAbstractVTKPlot.__module__ = \"panel.models.vtk\";\n(() => {\n    _a.define(({ Any, Ref, Array, Boolean, Nullable }) => ({\n        axes: [Nullable(Ref(vtkaxes_1.VTKAxes)), null],\n        camera: [Any, {}],\n        color_mappers: [Array(Ref(color_mapper_1.ColorMapper)), []],\n        orientation_widget: [Boolean, false],\n        interactive_orientation_widget: [Boolean, false],\n        annotations: [Nullable(Array(Any)), null],\n    }));\n    _a.override({\n        height: 300,\n        width: 300,\n    });\n})();\n//# sourceMappingURL=vtklayout.js.map\n","type":"js","dependency_paths":[["../layout","/croot/panel_1706539561184/work/panel/dist/lib/models/layout.js"],["./util","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/util.js"],["./vtkcolorbar","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/vtkcolorbar.js"],["./vtkaxes","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/vtkaxes.js"]],"dependency_map":[],"exported":[{"type":"named","name":"AbstractVTKView"},{"type":"named","name":"AbstractVTKPlot"}],"externals":[],"shims":[]},"code":{"source":"/* models/vtk/vtklayout.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const dom_1 = require(\"@bokehjs/core/dom\");\n    const object_1 = require(\"@bokehjs/core/util/object\");\n    const color_mapper_1 = require(\"@bokehjs/models/mappers/color_mapper\");\n    const kinds_1 = require(\"@bokehjs/core/kinds\");\n    const layout_1 = require(\"cac5f3ed28\") /* ../layout */;\n    const util_1 = require(\"a76a9b7c23\") /* ./util */;\n    const vtkcolorbar_1 = require(\"c010237f8b\") /* ./vtkcolorbar */;\n    const vtkaxes_1 = require(\"5a606f3f35\") /* ./vtkaxes */;\n    const INFO_DIV_STYLE = {\n        padding: \"0px 2px 0px 2px\",\n        maxHeight: \"150px\",\n        height: \"auto\",\n        backgroundColor: \"rgba(255, 255, 255, 0.4)\",\n        borderRadius: \"10px\",\n        margin: \"2px\",\n        boxSizing: \"border-box\",\n        overflow: \"hidden\",\n        overflowY: \"auto\",\n        transition: \"width 0.1s linear\",\n        bottom: \"0px\",\n        position: \"absolute\",\n    };\n    const textPositions = (0, kinds_1.Enum)(\"LowerLeft\", \"LowerRight\", \"UpperLeft\", \"UpperRight\", \"LowerEdge\", \"RightEdge\", \"LeftEdge\", \"UpperEdge\");\n    class AbstractVTKView extends layout_1.HTMLBoxView {\n        initialize() {\n            super.initialize();\n            this._camera_callbacks = [];\n            this._renderable = true;\n            this._setting_camera = false;\n            this._rendered = false;\n        }\n        _add_colorbars() {\n            //construct colorbars\n            const old_info_div = this.shadow_el.querySelector(\".vtk_info\");\n            if (old_info_div)\n                this.shadow_el.removeChild(old_info_div);\n            if (this.model.color_mappers.length < 1)\n                return;\n            const info_div = document.createElement(\"div\");\n            const expand_width = \"350px\";\n            const collapsed_width = \"30px\";\n            info_div.classList.add('vtk_info');\n            (0, util_1.applyStyle)(info_div, INFO_DIV_STYLE);\n            (0, util_1.applyStyle)(info_div, { width: expand_width });\n            this.shadow_el.appendChild(info_div);\n            //construct colorbars\n            const colorbars = [];\n            this.model.color_mappers.forEach((mapper) => {\n                const cb = new vtkcolorbar_1.VTKColorBar(info_div, mapper);\n                colorbars.push(cb);\n            });\n            //content when collapsed\n            const dots = document.createElement('div');\n            (0, util_1.applyStyle)(dots, { textAlign: \"center\", fontSize: \"20px\" });\n            dots.innerText = \"...\";\n            info_div.addEventListener('click', () => {\n                if (info_div.style.width === collapsed_width) {\n                    info_div.removeChild(dots);\n                    (0, util_1.applyStyle)(info_div, { height: \"auto\", width: expand_width });\n                    colorbars.forEach((cb) => info_div.appendChild(cb.canvas));\n                }\n                else {\n                    colorbars.forEach((cb) => info_div.removeChild(cb.canvas));\n                    (0, util_1.applyStyle)(info_div, { height: collapsed_width, width: collapsed_width });\n                    info_div.appendChild(dots);\n                }\n            });\n            info_div.click();\n        }\n        _init_annotations_container() {\n            if (!this._annotations_container) {\n                this._annotations_container = document.createElement(\"div\");\n                this._annotations_container.style.position = \"absolute\";\n                this._annotations_container.style.width = \"100%\";\n                this._annotations_container.style.height = \"100%\";\n                this._annotations_container.style.top = \"0\";\n                this._annotations_container.style.left = \"0\";\n                this._annotations_container.style.pointerEvents = \"none\";\n            }\n        }\n        _clean_annotations() {\n            if (this._annotations_container) {\n                while (this._annotations_container.firstElementChild) {\n                    this._annotations_container.firstElementChild.remove();\n                }\n            }\n        }\n        _add_annotations() {\n            this._clean_annotations();\n            const { annotations } = this.model;\n            if (annotations != null) {\n                for (let annotation of annotations) {\n                    const { viewport, color, fontSize, fontFamily } = annotation;\n                    textPositions.values.forEach((pos) => {\n                        const text = annotation[pos];\n                        if (text) {\n                            const div = document.createElement(\"div\");\n                            div.textContent = text;\n                            const { style } = div;\n                            style.position = \"absolute\";\n                            style.color = `rgb(${color.map((val) => 255 * val).join(\",\")})`;\n                            style.fontSize = `${fontSize}px`;\n                            style.padding = \"5px\";\n                            style.fontFamily = fontFamily;\n                            style.width = \"fit-content\";\n                            if (pos == \"UpperLeft\") {\n                                style.top = `${(1 - viewport[3]) * 100}%`;\n                                style.left = `${viewport[0] * 100}%`;\n                            }\n                            if (pos == \"UpperRight\") {\n                                style.top = `${(1 - viewport[3]) * 100}%`;\n                                style.right = `${(1 - viewport[2]) * 100}%`;\n                            }\n                            if (pos == \"LowerLeft\") {\n                                style.bottom = `${viewport[1] * 100}%`;\n                                style.left = `${viewport[0] * 100}%`;\n                            }\n                            if (pos == \"LowerRight\") {\n                                style.bottom = `${viewport[1] * 100}%`;\n                                style.right = `${(1 - viewport[2]) * 100}%`;\n                            }\n                            if (pos == \"UpperEdge\") {\n                                style.top = `${(1 - viewport[3]) * 100}%`;\n                                style.left = `${(viewport[0] + (viewport[2] - viewport[0]) / 2) * 100}%`;\n                                style.transform = \"translateX(-50%)\";\n                            }\n                            if (pos == \"LowerEdge\") {\n                                style.bottom = `${viewport[1] * 100}%`;\n                                style.left = `${(viewport[0] + (viewport[2] - viewport[0]) / 2) * 100}%`;\n                                style.transform = \"translateX(-50%)\";\n                            }\n                            if (pos == \"LeftEdge\") {\n                                style.left = `${viewport[0] * 100}%`;\n                                style.top = `${(1 - viewport[3] + (viewport[3] - viewport[1]) / 2) * 100}%`;\n                                style.transform = \"translateY(-50%)\";\n                            }\n                            if (pos == \"RightEdge\") {\n                                style.right = `${(1 - viewport[2]) * 100}%`;\n                                style.top = `${(1 - viewport[3] + (viewport[3] - viewport[1]) / 2) * 100}%`;\n                                style.transform = \"translateY(-50%)\";\n                            }\n                            this._annotations_container.appendChild(div);\n                        }\n                    });\n                }\n            }\n        }\n        connect_signals() {\n            super.connect_signals();\n            this.on_change(this.model.properties.orientation_widget, () => {\n                this._orientation_widget_visibility(this.model.orientation_widget);\n            });\n            this.on_change(this.model.properties.camera, () => this._set_camera_state());\n            this.on_change(this.model.properties.axes, () => {\n                this._delete_axes();\n                if (this.model.axes)\n                    this._set_axes();\n                this._vtk_render();\n            });\n            this.on_change(this.model.properties.color_mappers, () => this._add_colorbars());\n            this.on_change(this.model.properties.annotations, () => this._add_annotations());\n        }\n        render() {\n            super.render();\n            this._rendered = false;\n            if (this._vtk_renwin && this._vtk_container) {\n                // warning if _vtk_renwin contain controllers or other elements\n                // we must attach them to the new el\n                this.shadow_el.appendChild(this._vtk_container);\n                this.shadow_el.appendChild(this._annotations_container);\n                return;\n            }\n            this._orientationWidget = null;\n            this._axes = null;\n            this._vtk_container = (0, dom_1.div)();\n            this.init_vtk_renwin();\n            this._init_annotations_container();\n            (0, layout_1.set_size)(this._vtk_container, this.model);\n            this.shadow_el.appendChild(this._vtk_container);\n            // update camera model state only at the end of the interaction\n            // with the scene (avoid bouncing events and large amount of events)\n            this._vtk_renwin.getInteractor().onEndAnimation(() => this._get_camera_state());\n            this._remove_default_key_binding();\n            this._bind_key_events();\n            this.plot();\n            this.model.renderer_el = this._vtk_renwin;\n            this.shadow_el.appendChild(this._annotations_container);\n        }\n        after_layout() {\n            super.after_layout();\n            if (this._renderable)\n                this._vtk_renwin.resize(); // resize call render method\n            this._vtk_render();\n            if (!this._rendered) {\n                this._add_colorbars();\n                this._add_annotations();\n                this._rendered = true;\n            }\n        }\n        invalidate_render() {\n            this._unsubscribe_camera_cb();\n            super.invalidate_render();\n        }\n        remove() {\n            this._unsubscribe_camera_cb();\n            window.removeEventListener(\"resize\", this._vtk_renwin.resize);\n            if (this._orientationWidget != null)\n                this._orientationWidget.delete();\n            this._vtk_renwin.getRenderWindow().getInteractor().delete();\n            this._vtk_renwin.delete();\n            super.remove();\n        }\n        get _vtk_camera_state() {\n            const vtk_camera = this._vtk_renwin.getRenderer().getActiveCamera();\n            let state;\n            if (vtk_camera) {\n                state = (0, object_1.clone)(vtk_camera.get());\n                delete state.cameraLightTransform;\n                delete state.classHierarchy;\n                delete state.vtkObject;\n                delete state.vtkCamera;\n                delete state.viewPlaneNormal;\n                delete state.flattenedDepIds;\n                delete state.managedInstanceId;\n                delete state.directionOfProjection;\n            }\n            return state;\n        }\n        get _axes_canvas() {\n            let axes_canvas = this._vtk_container.querySelector(\".axes-canvas\");\n            if (!axes_canvas) {\n                axes_canvas = (0, dom_1.canvas)({\n                    style: {\n                        position: \"absolute\",\n                        top: \"0\",\n                        left: \"0\",\n                        width: \"100%\",\n                        height: \"100%\",\n                    },\n                });\n                axes_canvas.classList.add(\"axes-canvas\");\n                this._vtk_container.appendChild(axes_canvas);\n                this._vtk_renwin.setResizeCallback(() => {\n                    if (this._axes_canvas) {\n                        const dims = this._vtk_container.getBoundingClientRect();\n                        const width = Math.floor(dims.width * window.devicePixelRatio);\n                        const height = Math.floor(dims.height * window.devicePixelRatio);\n                        this._axes_canvas.setAttribute(\"width\", width.toFixed());\n                        this._axes_canvas.setAttribute(\"height\", height.toFixed());\n                    }\n                });\n            }\n            return axes_canvas;\n        }\n        _bind_key_events() {\n            this.el.addEventListener(\"mouseenter\", () => {\n                const interactor = this._vtk_renwin.getInteractor();\n                if (this.model.enable_keybindings) {\n                    document\n                        .querySelector(\"body\")\n                        .addEventListener(\"keypress\", interactor.handleKeyPress);\n                    document\n                        .querySelector(\"body\")\n                        .addEventListener(\"keydown\", interactor.handleKeyDown);\n                    document\n                        .querySelector(\"body\")\n                        .addEventListener(\"keyup\", interactor.handleKeyUp);\n                }\n            });\n            this.el.addEventListener(\"mouseleave\", () => {\n                const interactor = this._vtk_renwin.getInteractor();\n                document\n                    .querySelector(\"body\")\n                    .removeEventListener(\"keypress\", interactor.handleKeyPress);\n                document\n                    .querySelector(\"body\")\n                    .removeEventListener(\"keydown\", interactor.handleKeyDown);\n                document\n                    .querySelector(\"body\")\n                    .removeEventListener(\"keyup\", interactor.handleKeyUp);\n            });\n        }\n        _create_orientation_widget() {\n            const axes = util_1.vtkns.AxesActor.newInstance();\n            // add orientation widget\n            this._orientationWidget = util_1.vtkns.OrientationMarkerWidget.newInstance({\n                actor: axes,\n                interactor: this._vtk_renwin.getInteractor(),\n            });\n            this._orientationWidget.setEnabled(true);\n            this._orientationWidget.setViewportCorner(util_1.vtkns.OrientationMarkerWidget.Corners.BOTTOM_RIGHT);\n            this._orientationWidget.setViewportSize(0.15);\n            this._orientationWidget.setMinPixelSize(75);\n            this._orientationWidget.setMaxPixelSize(300);\n            if (this.model.interactive_orientation_widget)\n                this._make_orientation_widget_interactive();\n            this._orientation_widget_visibility(this.model.orientation_widget);\n        }\n        _make_orientation_widget_interactive() {\n            this._widgetManager = util_1.vtkns.WidgetManager.newInstance();\n            this._widgetManager.setRenderer(this._orientationWidget.getRenderer());\n            const axes = this._orientationWidget.getActor();\n            const widget = util_1.vtkns.InteractiveOrientationWidget.newInstance();\n            widget.placeWidget(axes.getBounds());\n            widget.setBounds(axes.getBounds());\n            widget.setPlaceFactor(1);\n            const vw = this._widgetManager.addWidget(widget);\n            // Manage user interaction\n            vw.onOrientationChange(({ direction }) => {\n                const camera = this._vtk_renwin.getRenderer().getActiveCamera();\n                const focalPoint = camera.getFocalPoint();\n                const position = camera.getPosition();\n                const viewUp = camera.getViewUp();\n                const distance = Math.sqrt(Math.pow(position[0] - focalPoint[0], 2) +\n                    Math.pow(position[1] - focalPoint[1], 2) +\n                    Math.pow(position[2] - focalPoint[2], 2));\n                camera.setPosition(focalPoint[0] + direction[0] * distance, focalPoint[1] + direction[1] * distance, focalPoint[2] + direction[2] * distance);\n                if (direction[0])\n                    camera.setViewUp((0, util_1.majorAxis)(viewUp, 1, 2));\n                if (direction[1])\n                    camera.setViewUp((0, util_1.majorAxis)(viewUp, 0, 2));\n                if (direction[2])\n                    camera.setViewUp((0, util_1.majorAxis)(viewUp, 0, 1));\n                this._vtk_renwin.getRenderer().resetCameraClippingRange();\n                this._vtk_render();\n                this._get_camera_state();\n            });\n        }\n        _delete_axes() {\n            if (this._axes) {\n                Object.keys(this._axes).forEach((key) => this._vtk_renwin.getRenderer().removeActor(this._axes[key]));\n                this._axes = null;\n                const textCtx = this._axes_canvas.getContext(\"2d\");\n                if (textCtx)\n                    textCtx.clearRect(0, 0, this._axes_canvas.clientWidth * window.devicePixelRatio, this._axes_canvas.clientHeight * window.devicePixelRatio);\n            }\n        }\n        _get_camera_state() {\n            if (!this._setting_camera) {\n                this._setting_camera = true;\n                this.model.camera = this._vtk_camera_state;\n                this._setting_camera = false;\n            }\n        }\n        _orientation_widget_visibility(visibility) {\n            this._orientationWidget.setEnabled(visibility);\n            if (this._widgetManager != null) {\n                if (visibility)\n                    this._widgetManager.enablePicking();\n                else\n                    this._widgetManager.disablePicking();\n            }\n            this._vtk_render();\n        }\n        _remove_default_key_binding() {\n            const interactor = this._vtk_renwin.getInteractor();\n            document\n                .querySelector(\"body\")\n                .removeEventListener(\"keypress\", interactor.handleKeyPress);\n            document\n                .querySelector(\"body\")\n                .removeEventListener(\"keydown\", interactor.handleKeyDown);\n            document\n                .querySelector(\"body\")\n                .removeEventListener(\"keyup\", interactor.handleKeyUp);\n        }\n        _set_axes() {\n            if (this.model.axes && this._vtk_renwin.getRenderer()) {\n                const { psActor, axesActor, gridActor } = this.model.axes.create_axes(this._axes_canvas);\n                this._axes = { psActor, axesActor, gridActor };\n                if (psActor)\n                    this._vtk_renwin.getRenderer().addActor(psActor);\n                if (axesActor)\n                    this._vtk_renwin.getRenderer().addActor(axesActor);\n                if (gridActor)\n                    this._vtk_renwin.getRenderer().addActor(gridActor);\n            }\n        }\n        _set_camera_state() {\n            if (!this._setting_camera && this._vtk_renwin.getRenderer() !== undefined) {\n                this._setting_camera = true;\n                if (this.model.camera &&\n                    JSON.stringify(this.model.camera) != JSON.stringify(this._vtk_camera_state))\n                    this._vtk_renwin\n                        .getRenderer()\n                        .getActiveCamera()\n                        .set(this.model.camera);\n                this._vtk_renwin.getRenderer().resetCameraClippingRange();\n                this._setting_camera = false;\n            }\n        }\n        _unsubscribe_camera_cb() {\n            this._camera_callbacks\n                .splice(0, this._camera_callbacks.length)\n                .map((cb) => cb.unsubscribe());\n        }\n        _vtk_render() {\n            if (this._renderable) {\n                if (this._orientationWidget)\n                    this._orientationWidget.updateMarkerOrientation();\n                this._vtk_renwin.getRenderWindow().render();\n            }\n        }\n    }\n    exports.AbstractVTKView = AbstractVTKView;\n    AbstractVTKView.__name__ = \"AbstractVTKView\";\n    class AbstractVTKPlot extends layout_1.HTMLBox {\n        constructor(attrs) {\n            (0, util_1.setup_vtkns)();\n            super(attrs);\n        }\n        getActors() {\n            return this.renderer_el.getRenderer().getActors();\n        }\n    }\n    exports.AbstractVTKPlot = AbstractVTKPlot;\n    _a = AbstractVTKPlot;\n    AbstractVTKPlot.__name__ = \"AbstractVTKPlot\";\n    AbstractVTKPlot.__module__ = \"panel.models.vtk\";\n    (() => {\n        _a.define(({ Any, Ref, Array, Boolean, Nullable }) => ({\n            axes: [Nullable(Ref(vtkaxes_1.VTKAxes)), null],\n            camera: [Any, {}],\n            color_mappers: [Array(Ref(color_mapper_1.ColorMapper)), []],\n            orientation_widget: [Boolean, false],\n            interactive_orientation_widget: [Boolean, false],\n            annotations: [Nullable(Array(Any)), null],\n        }));\n        _a.override({\n            height: 300,\n            width: 300,\n        });\n    })();\n}\n","min_source":"function _(e,t,i,n,a){var s;n();const r=e(\"@bokehjs/core/dom\"),o=e(\"@bokehjs/core/util/object\"),_=e(\"@bokehjs/models/mappers/color_mapper\"),d=e(\"@bokehjs/core/kinds\"),h=e(\"cac5f3ed28\"),c=e(\"a76a9b7c23\"),l=e(\"c010237f8b\"),g=e(\"5a606f3f35\"),p={padding:\"0px 2px 0px 2px\",maxHeight:\"150px\",height:\"auto\",backgroundColor:\"rgba(255, 255, 255, 0.4)\",borderRadius:\"10px\",margin:\"2px\",boxSizing:\"border-box\",overflow:\"hidden\",overflowY:\"auto\",transition:\"width 0.1s linear\",bottom:\"0px\",position:\"absolute\"},v=(0,d.Enum)(\"LowerLeft\",\"LowerRight\",\"UpperLeft\",\"UpperRight\",\"LowerEdge\",\"RightEdge\",\"LeftEdge\",\"UpperEdge\");class m extends h.HTMLBoxView{initialize(){super.initialize(),this._camera_callbacks=[],this._renderable=!0,this._setting_camera=!1,this._rendered=!1}_add_colorbars(){const e=this.shadow_el.querySelector(\".vtk_info\");if(e&&this.shadow_el.removeChild(e),this.model.color_mappers.length<1)return;const t=document.createElement(\"div\"),i=\"350px\",n=\"30px\";t.classList.add(\"vtk_info\"),(0,c.applyStyle)(t,p),(0,c.applyStyle)(t,{width:i}),this.shadow_el.appendChild(t);const a=[];this.model.color_mappers.forEach((e=>{const i=new l.VTKColorBar(t,e);a.push(i)}));const s=document.createElement(\"div\");(0,c.applyStyle)(s,{textAlign:\"center\",fontSize:\"20px\"}),s.innerText=\"...\",t.addEventListener(\"click\",(()=>{t.style.width===n?(t.removeChild(s),(0,c.applyStyle)(t,{height:\"auto\",width:i}),a.forEach((e=>t.appendChild(e.canvas)))):(a.forEach((e=>t.removeChild(e.canvas))),(0,c.applyStyle)(t,{height:n,width:n}),t.appendChild(s))})),t.click()}_init_annotations_container(){this._annotations_container||(this._annotations_container=document.createElement(\"div\"),this._annotations_container.style.position=\"absolute\",this._annotations_container.style.width=\"100%\",this._annotations_container.style.height=\"100%\",this._annotations_container.style.top=\"0\",this._annotations_container.style.left=\"0\",this._annotations_container.style.pointerEvents=\"none\")}_clean_annotations(){if(this._annotations_container)for(;this._annotations_container.firstElementChild;)this._annotations_container.firstElementChild.remove()}_add_annotations(){this._clean_annotations();const{annotations:e}=this.model;if(null!=e)for(let t of e){const{viewport:e,color:i,fontSize:n,fontFamily:a}=t;v.values.forEach((s=>{const r=t[s];if(r){const t=document.createElement(\"div\");t.textContent=r;const{style:o}=t;o.position=\"absolute\",o.color=`rgb(${i.map((e=>255*e)).join(\",\")})`,o.fontSize=`${n}px`,o.padding=\"5px\",o.fontFamily=a,o.width=\"fit-content\",\"UpperLeft\"==s&&(o.top=100*(1-e[3])+\"%\",o.left=100*e[0]+\"%\"),\"UpperRight\"==s&&(o.top=100*(1-e[3])+\"%\",o.right=100*(1-e[2])+\"%\"),\"LowerLeft\"==s&&(o.bottom=100*e[1]+\"%\",o.left=100*e[0]+\"%\"),\"LowerRight\"==s&&(o.bottom=100*e[1]+\"%\",o.right=100*(1-e[2])+\"%\"),\"UpperEdge\"==s&&(o.top=100*(1-e[3])+\"%\",o.left=100*(e[0]+(e[2]-e[0])/2)+\"%\",o.transform=\"translateX(-50%)\"),\"LowerEdge\"==s&&(o.bottom=100*e[1]+\"%\",o.left=100*(e[0]+(e[2]-e[0])/2)+\"%\",o.transform=\"translateX(-50%)\"),\"LeftEdge\"==s&&(o.left=100*e[0]+\"%\",o.top=100*(1-e[3]+(e[3]-e[1])/2)+\"%\",o.transform=\"translateY(-50%)\"),\"RightEdge\"==s&&(o.right=100*(1-e[2])+\"%\",o.top=100*(1-e[3]+(e[3]-e[1])/2)+\"%\",o.transform=\"translateY(-50%)\"),this._annotations_container.appendChild(t)}}))}}connect_signals(){super.connect_signals(),this.on_change(this.model.properties.orientation_widget,(()=>{this._orientation_widget_visibility(this.model.orientation_widget)})),this.on_change(this.model.properties.camera,(()=>this._set_camera_state())),this.on_change(this.model.properties.axes,(()=>{this._delete_axes(),this.model.axes&&this._set_axes(),this._vtk_render()})),this.on_change(this.model.properties.color_mappers,(()=>this._add_colorbars())),this.on_change(this.model.properties.annotations,(()=>this._add_annotations()))}render(){if(super.render(),this._rendered=!1,this._vtk_renwin&&this._vtk_container)return this.shadow_el.appendChild(this._vtk_container),void this.shadow_el.appendChild(this._annotations_container);this._orientationWidget=null,this._axes=null,this._vtk_container=(0,r.div)(),this.init_vtk_renwin(),this._init_annotations_container(),(0,h.set_size)(this._vtk_container,this.model),this.shadow_el.appendChild(this._vtk_container),this._vtk_renwin.getInteractor().onEndAnimation((()=>this._get_camera_state())),this._remove_default_key_binding(),this._bind_key_events(),this.plot(),this.model.renderer_el=this._vtk_renwin,this.shadow_el.appendChild(this._annotations_container)}after_layout(){super.after_layout(),this._renderable&&this._vtk_renwin.resize(),this._vtk_render(),this._rendered||(this._add_colorbars(),this._add_annotations(),this._rendered=!0)}invalidate_render(){this._unsubscribe_camera_cb(),super.invalidate_render()}remove(){this._unsubscribe_camera_cb(),window.removeEventListener(\"resize\",this._vtk_renwin.resize),null!=this._orientationWidget&&this._orientationWidget.delete(),this._vtk_renwin.getRenderWindow().getInteractor().delete(),this._vtk_renwin.delete(),super.remove()}get _vtk_camera_state(){const e=this._vtk_renwin.getRenderer().getActiveCamera();let t;return e&&(t=(0,o.clone)(e.get()),delete t.cameraLightTransform,delete t.classHierarchy,delete t.vtkObject,delete t.vtkCamera,delete t.viewPlaneNormal,delete t.flattenedDepIds,delete t.managedInstanceId,delete t.directionOfProjection),t}get _axes_canvas(){let e=this._vtk_container.querySelector(\".axes-canvas\");return e||(e=(0,r.canvas)({style:{position:\"absolute\",top:\"0\",left:\"0\",width:\"100%\",height:\"100%\"}}),e.classList.add(\"axes-canvas\"),this._vtk_container.appendChild(e),this._vtk_renwin.setResizeCallback((()=>{if(this._axes_canvas){const e=this._vtk_container.getBoundingClientRect(),t=Math.floor(e.width*window.devicePixelRatio),i=Math.floor(e.height*window.devicePixelRatio);this._axes_canvas.setAttribute(\"width\",t.toFixed()),this._axes_canvas.setAttribute(\"height\",i.toFixed())}}))),e}_bind_key_events(){this.el.addEventListener(\"mouseenter\",(()=>{const e=this._vtk_renwin.getInteractor();this.model.enable_keybindings&&(document.querySelector(\"body\").addEventListener(\"keypress\",e.handleKeyPress),document.querySelector(\"body\").addEventListener(\"keydown\",e.handleKeyDown),document.querySelector(\"body\").addEventListener(\"keyup\",e.handleKeyUp))})),this.el.addEventListener(\"mouseleave\",(()=>{const e=this._vtk_renwin.getInteractor();document.querySelector(\"body\").removeEventListener(\"keypress\",e.handleKeyPress),document.querySelector(\"body\").removeEventListener(\"keydown\",e.handleKeyDown),document.querySelector(\"body\").removeEventListener(\"keyup\",e.handleKeyUp)}))}_create_orientation_widget(){const e=c.vtkns.AxesActor.newInstance();this._orientationWidget=c.vtkns.OrientationMarkerWidget.newInstance({actor:e,interactor:this._vtk_renwin.getInteractor()}),this._orientationWidget.setEnabled(!0),this._orientationWidget.setViewportCorner(c.vtkns.OrientationMarkerWidget.Corners.BOTTOM_RIGHT),this._orientationWidget.setViewportSize(.15),this._orientationWidget.setMinPixelSize(75),this._orientationWidget.setMaxPixelSize(300),this.model.interactive_orientation_widget&&this._make_orientation_widget_interactive(),this._orientation_widget_visibility(this.model.orientation_widget)}_make_orientation_widget_interactive(){this._widgetManager=c.vtkns.WidgetManager.newInstance(),this._widgetManager.setRenderer(this._orientationWidget.getRenderer());const e=this._orientationWidget.getActor(),t=c.vtkns.InteractiveOrientationWidget.newInstance();t.placeWidget(e.getBounds()),t.setBounds(e.getBounds()),t.setPlaceFactor(1);this._widgetManager.addWidget(t).onOrientationChange((({direction:e})=>{const t=this._vtk_renwin.getRenderer().getActiveCamera(),i=t.getFocalPoint(),n=t.getPosition(),a=t.getViewUp(),s=Math.sqrt(Math.pow(n[0]-i[0],2)+Math.pow(n[1]-i[1],2)+Math.pow(n[2]-i[2],2));t.setPosition(i[0]+e[0]*s,i[1]+e[1]*s,i[2]+e[2]*s),e[0]&&t.setViewUp((0,c.majorAxis)(a,1,2)),e[1]&&t.setViewUp((0,c.majorAxis)(a,0,2)),e[2]&&t.setViewUp((0,c.majorAxis)(a,0,1)),this._vtk_renwin.getRenderer().resetCameraClippingRange(),this._vtk_render(),this._get_camera_state()}))}_delete_axes(){if(this._axes){Object.keys(this._axes).forEach((e=>this._vtk_renwin.getRenderer().removeActor(this._axes[e]))),this._axes=null;const e=this._axes_canvas.getContext(\"2d\");e&&e.clearRect(0,0,this._axes_canvas.clientWidth*window.devicePixelRatio,this._axes_canvas.clientHeight*window.devicePixelRatio)}}_get_camera_state(){this._setting_camera||(this._setting_camera=!0,this.model.camera=this._vtk_camera_state,this._setting_camera=!1)}_orientation_widget_visibility(e){this._orientationWidget.setEnabled(e),null!=this._widgetManager&&(e?this._widgetManager.enablePicking():this._widgetManager.disablePicking()),this._vtk_render()}_remove_default_key_binding(){const e=this._vtk_renwin.getInteractor();document.querySelector(\"body\").removeEventListener(\"keypress\",e.handleKeyPress),document.querySelector(\"body\").removeEventListener(\"keydown\",e.handleKeyDown),document.querySelector(\"body\").removeEventListener(\"keyup\",e.handleKeyUp)}_set_axes(){if(this.model.axes&&this._vtk_renwin.getRenderer()){const{psActor:e,axesActor:t,gridActor:i}=this.model.axes.create_axes(this._axes_canvas);this._axes={psActor:e,axesActor:t,gridActor:i},e&&this._vtk_renwin.getRenderer().addActor(e),t&&this._vtk_renwin.getRenderer().addActor(t),i&&this._vtk_renwin.getRenderer().addActor(i)}}_set_camera_state(){this._setting_camera||void 0===this._vtk_renwin.getRenderer()||(this._setting_camera=!0,this.model.camera&&JSON.stringify(this.model.camera)!=JSON.stringify(this._vtk_camera_state)&&this._vtk_renwin.getRenderer().getActiveCamera().set(this.model.camera),this._vtk_renwin.getRenderer().resetCameraClippingRange(),this._setting_camera=!1)}_unsubscribe_camera_cb(){this._camera_callbacks.splice(0,this._camera_callbacks.length).map((e=>e.unsubscribe()))}_vtk_render(){this._renderable&&(this._orientationWidget&&this._orientationWidget.updateMarkerOrientation(),this._vtk_renwin.getRenderWindow().render())}}i.AbstractVTKView=m,m.__name__=\"AbstractVTKView\";class w extends h.HTMLBox{constructor(e){(0,c.setup_vtkns)(),super(e)}getActors(){return this.renderer_el.getRenderer().getActors()}}i.AbstractVTKPlot=w,s=w,w.__name__=\"AbstractVTKPlot\",w.__module__=\"panel.models.vtk\",s.define((({Any:e,Ref:t,Array:i,Boolean:n,Nullable:a})=>({axes:[a(t(g.VTKAxes)),null],camera:[e,{}],color_mappers:[i(t(_.ColorMapper)),[]],orientation_widget:[n,!1],interactive_orientation_widget:[n,!1],annotations:[a(i(e)),null]}))),s.override({height:300,width:300})}\n//# sourceMappingURL=vtklayout.min.js.map","min_map":"{\"version\":3,\"file\":\"vtklayout.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"dom_1\",\"object_1\",\"color_mapper_1\",\"kinds_1\",\"layout_1\",\"util_1\",\"vtkcolorbar_1\",\"vtkaxes_1\",\"INFO_DIV_STYLE\",\"padding\",\"maxHeight\",\"height\",\"backgroundColor\",\"borderRadius\",\"margin\",\"boxSizing\",\"overflow\",\"overflowY\",\"transition\",\"bottom\",\"position\",\"textPositions\",\"Enum\",\"AbstractVTKView\",\"HTMLBoxView\",\"initialize\",\"super\",\"this\",\"_camera_callbacks\",\"_renderable\",\"_setting_camera\",\"_rendered\",\"_add_colorbars\",\"old_info_div\",\"shadow_el\",\"querySelector\",\"removeChild\",\"model\",\"color_mappers\",\"length\",\"info_div\",\"document\",\"createElement\",\"expand_width\",\"collapsed_width\",\"classList\",\"add\",\"applyStyle\",\"width\",\"appendChild\",\"colorbars\",\"forEach\",\"mapper\",\"cb\",\"VTKColorBar\",\"push\",\"dots\",\"textAlign\",\"fontSize\",\"innerText\",\"addEventListener\",\"style\",\"canvas\",\"click\",\"_init_annotations_container\",\"_annotations_container\",\"top\",\"left\",\"pointerEvents\",\"_clean_annotations\",\"firstElementChild\",\"remove\",\"_add_annotations\",\"annotations\",\"annotation\",\"viewport\",\"color\",\"fontFamily\",\"values\",\"pos\",\"text\",\"div\",\"textContent\",\"map\",\"val\",\"join\",\"right\",\"transform\",\"connect_signals\",\"on_change\",\"properties\",\"orientation_widget\",\"_orientation_widget_visibility\",\"camera\",\"_set_camera_state\",\"axes\",\"_delete_axes\",\"_set_axes\",\"_vtk_render\",\"render\",\"_vtk_renwin\",\"_vtk_container\",\"_orientationWidget\",\"_axes\",\"init_vtk_renwin\",\"set_size\",\"getInteractor\",\"onEndAnimation\",\"_get_camera_state\",\"_remove_default_key_binding\",\"_bind_key_events\",\"plot\",\"renderer_el\",\"after_layout\",\"resize\",\"invalidate_render\",\"_unsubscribe_camera_cb\",\"window\",\"removeEventListener\",\"delete\",\"getRenderWindow\",\"_vtk_camera_state\",\"vtk_camera\",\"getRenderer\",\"getActiveCamera\",\"state\",\"clone\",\"get\",\"cameraLightTransform\",\"classHierarchy\",\"vtkObject\",\"vtkCamera\",\"viewPlaneNormal\",\"flattenedDepIds\",\"managedInstanceId\",\"directionOfProjection\",\"_axes_canvas\",\"axes_canvas\",\"setResizeCallback\",\"dims\",\"getBoundingClientRect\",\"Math\",\"floor\",\"devicePixelRatio\",\"setAttribute\",\"toFixed\",\"el\",\"interactor\",\"enable_keybindings\",\"handleKeyPress\",\"handleKeyDown\",\"handleKeyUp\",\"_create_orientation_widget\",\"vtkns\",\"AxesActor\",\"newInstance\",\"OrientationMarkerWidget\",\"actor\",\"setEnabled\",\"setViewportCorner\",\"Corners\",\"BOTTOM_RIGHT\",\"setViewportSize\",\"setMinPixelSize\",\"setMaxPixelSize\",\"interactive_orientation_widget\",\"_make_orientation_widget_interactive\",\"_widgetManager\",\"WidgetManager\",\"setRenderer\",\"getActor\",\"widget\",\"InteractiveOrientationWidget\",\"placeWidget\",\"getBounds\",\"setBounds\",\"setPlaceFactor\",\"addWidget\",\"onOrientationChange\",\"direction\",\"focalPoint\",\"getFocalPoint\",\"getPosition\",\"viewUp\",\"getViewUp\",\"distance\",\"sqrt\",\"pow\",\"setPosition\",\"setViewUp\",\"majorAxis\",\"resetCameraClippingRange\",\"Object\",\"keys\",\"key\",\"removeActor\",\"textCtx\",\"getContext\",\"clearRect\",\"clientWidth\",\"clientHeight\",\"visibility\",\"enablePicking\",\"disablePicking\",\"psActor\",\"axesActor\",\"gridActor\",\"create_axes\",\"addActor\",\"undefined\",\"JSON\",\"stringify\",\"set\",\"splice\",\"unsubscribe\",\"updateMarkerOrientation\",\"__name__\",\"AbstractVTKPlot\",\"HTMLBox\",\"constructor\",\"attrs\",\"setup_vtkns\",\"getActors\",\"__module__\",\"define\",\"Any\",\"Ref\",\"Array\",\"Boolean\",\"Nullable\",\"VTKAxes\",\"ColorMapper\",\"override\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/util.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/vtk/util.js","canonical":"models/vtk/util","resolution":"ESM","id":"a76a9b7c23","hash":"a76a9b7c23dc080e8fc2bbce1be2a3929d99d438413e8ab1381ad1ddc47fecb1","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cartesian_product = exports.majorAxis = exports.data2VTKImageData = exports.vtkLutToMapper = exports.rgbToHex = exports.hexToRGB = exports.applyStyle = exports.Interpolation = exports.setup_vtkns = exports.vtkns = exports.ARRAY_TYPES = void 0;\nconst array_1 = require(\"@bokehjs/core/util/array\");\nconst kinds_1 = require(\"@bokehjs/core/kinds\");\nexports.ARRAY_TYPES = {\n    uint8: Uint8Array,\n    int8: Int8Array,\n    uint16: Uint16Array,\n    int16: Int16Array,\n    uint32: Uint32Array,\n    int32: Int32Array,\n    float32: Float32Array,\n    float64: Float64Array,\n};\nexports.vtkns = {};\nfunction setup_vtkns() {\n    if (exports.vtkns.Actor != null)\n        return;\n    const vtk = window.vtk;\n    exports.vtkns[\"Actor\"] = vtk.Rendering.Core.vtkActor;\n    exports.vtkns[\"AxesActor\"] = vtk.Rendering.Core.vtkAxesActor;\n    exports.vtkns[\"Base64\"] = vtk.Common.Core.vtkBase64;\n    exports.vtkns[\"BoundingBox\"] = vtk.Common.DataModel.vtkBoundingBox;\n    exports.vtkns[\"Camera\"] = vtk.Rendering.Core.vtkCamera;\n    exports.vtkns[\"ColorTransferFunction\"] = vtk.Rendering.Core.vtkColorTransferFunction;\n    exports.vtkns[\"CubeSource\"] = vtk.Filters.Sources.vtkCubeSource;\n    exports.vtkns[\"DataAccessHelper\"] = vtk.IO.Core.DataAccessHelper;\n    exports.vtkns[\"DataArray\"] = vtk.Common.Core.vtkDataArray;\n    exports.vtkns[\"Follower\"] = vtk.Rendering.Core.vtkFollower;\n    exports.vtkns[\"FullScreenRenderWindow\"] = vtk.Rendering.Misc.vtkFullScreenRenderWindow;\n    exports.vtkns[\"Glyph3DMapper\"] = vtk.Rendering.Core.vtkGlyph3DMapper;\n    exports.vtkns[\"HttpSceneLoader\"] = vtk.IO.Core.vtkHttpSceneLoader;\n    exports.vtkns[\"ImageData\"] = vtk.Common.DataModel.vtkImageData;\n    exports.vtkns[\"ImageMapper\"] = vtk.Rendering.Core.vtkImageMapper;\n    exports.vtkns[\"ImageProperty\"] = vtk.Rendering.Core.vtkImageProperty;\n    exports.vtkns[\"ImageSlice\"] = vtk.Rendering.Core.vtkImageSlice;\n    exports.vtkns[\"InteractiveOrientationWidget\"] =\n        vtk.Widgets.Widgets3D.vtkInteractiveOrientationWidget;\n    exports.vtkns[\"InteractorStyleTrackballCamera\"] =\n        vtk.Interaction.Style.vtkInteractorStyleTrackballCamera;\n    exports.vtkns[\"Light\"] = vtk.Rendering.Core.vtkLight;\n    exports.vtkns[\"LineSource\"] = vtk.Filters.Sources.vtkLineSource;\n    exports.vtkns[\"LookupTable\"] = vtk.Common.Core.vtkLookupTable;\n    exports.vtkns[\"macro\"] = vtk.macro;\n    exports.vtkns[\"Mapper\"] = vtk.Rendering.Core.vtkMapper;\n    exports.vtkns[\"OpenGLRenderWindow\"] = vtk.Rendering.OpenGL.vtkRenderWindow;\n    exports.vtkns[\"OrientationMarkerWidget\"] =\n        vtk.Interaction.Widgets.vtkOrientationMarkerWidget;\n    exports.vtkns[\"OutlineFilter\"] = vtk.Filters.General.vtkOutlineFilter;\n    exports.vtkns[\"PiecewiseFunction\"] = vtk.Common.DataModel.vtkPiecewiseFunction;\n    exports.vtkns[\"PixelSpaceCallbackMapper\"] =\n        vtk.Rendering.Core.vtkPixelSpaceCallbackMapper;\n    exports.vtkns[\"PlaneSource\"] = vtk.Filters.Sources.vtkPlaneSource;\n    exports.vtkns[\"PointSource\"] = vtk.Filters.Sources.vtkPointSource;\n    exports.vtkns[\"PolyData\"] = vtk.Common.DataModel.vtkPolyData;\n    exports.vtkns[\"Property\"] = vtk.Rendering.Core.vtkProperty;\n    exports.vtkns[\"Renderer\"] = vtk.Rendering.Core.vtkRenderer;\n    exports.vtkns[\"RenderWindow\"] = vtk.Rendering.Core.vtkRenderWindow;\n    exports.vtkns[\"RenderWindowInteractor\"] = vtk.Rendering.Core.vtkRenderWindowInteractor;\n    exports.vtkns[\"SphereMapper\"] = vtk.Rendering.Core.vtkSphereMapper;\n    exports.vtkns[\"SynchronizableRenderWindow\"] =\n        vtk.Rendering.Misc.vtkSynchronizableRenderWindow;\n    exports.vtkns[\"Texture\"] = vtk.Rendering.Core.vtkTexture;\n    exports.vtkns[\"Volume\"] = vtk.Rendering.Core.vtkVolume;\n    exports.vtkns[\"VolumeController\"] = vtk.Interaction.UI.vtkVolumeController;\n    exports.vtkns[\"VolumeMapper\"] = vtk.Rendering.Core.vtkVolumeMapper;\n    exports.vtkns[\"VolumeProperty\"] = vtk.Rendering.Core.vtkVolumeProperty;\n    exports.vtkns[\"WidgetManager\"] = vtk.Widgets.Core.vtkWidgetManager;\n    const { vtkObjectManager } = exports.vtkns.SynchronizableRenderWindow;\n    vtkObjectManager.setTypeMapping(\"vtkVolumeMapper\", exports.vtkns.VolumeMapper.newInstance, vtkObjectManager.oneTimeGenericUpdater);\n    vtkObjectManager.setTypeMapping(\"vtkSmartVolumeMapper\", exports.vtkns.VolumeMapper.newInstance, vtkObjectManager.oneTimeGenericUpdater);\n    vtkObjectManager.setTypeMapping(\"vtkFollower\", exports.vtkns.Follower.newInstance, vtkObjectManager.genericUpdater);\n    vtkObjectManager.setTypeMapping(\"vtkOpenGLGlyph3DMapper\", exports.vtkns.Glyph3DMapper.newInstance, vtkObjectManager.genericUpdater);\n}\nexports.setup_vtkns = setup_vtkns;\nif (window.vtk)\n    setup_vtkns();\nexports.Interpolation = (0, kinds_1.Enum)(\"fast_linear\", \"linear\", \"nearest\");\nfunction applyStyle(el, style) {\n    Object.keys(style).forEach((key) => {\n        el.style[key] = style[key];\n    });\n}\nexports.applyStyle = applyStyle;\nfunction hexToRGB(color) {\n    return [\n        parseInt(color.slice(1, 3), 16) / 255,\n        parseInt(color.slice(3, 5), 16) / 255,\n        parseInt(color.slice(5, 7), 16) / 255,\n    ];\n}\nexports.hexToRGB = hexToRGB;\nfunction valToHex(val) {\n    const hex = Math.min(Math.max(Math.round(val), 0), 255).toString(16);\n    return hex.length == 2 ? hex : \"0\" + hex;\n}\nfunction rgbToHex(r, g, b) {\n    return \"#\" + valToHex(r) + valToHex(g) + valToHex(b);\n}\nexports.rgbToHex = rgbToHex;\nfunction vtkLutToMapper(vtk_lut) {\n    //For the moment only linear colormapper are handle\n    const { scale, nodes } = vtk_lut.get(\"scale\", \"nodes\");\n    if (scale !== exports.vtkns.ColorTransferFunction.Scale.LINEAR)\n        throw \"Error transfer function scale not handle\";\n    const x = nodes.map((a) => a.x);\n    const low = Math.min(...x);\n    const high = Math.max(...x);\n    const vals = (0, array_1.linspace)(low, high, 255);\n    const rgb = [0, 0, 0];\n    const palette = vals.map((val) => {\n        vtk_lut.getColor(val, rgb);\n        return rgbToHex(rgb[0] * 255, rgb[1] * 255, rgb[2] * 255);\n    });\n    return { low, high, palette };\n}\nexports.vtkLutToMapper = vtkLutToMapper;\nfunction utf8ToAB(utf8_str) {\n    var buf = new ArrayBuffer(utf8_str.length); // 2 bytes for each char\n    var bufView = new Uint8Array(buf);\n    for (var i = 0, strLen = utf8_str.length; i < strLen; i++) {\n        bufView[i] = utf8_str.charCodeAt(i);\n    }\n    return buf;\n}\nfunction data2VTKImageData(data) {\n    const source = exports.vtkns.ImageData.newInstance({\n        spacing: data.spacing,\n    });\n    source.setDimensions(data.dims);\n    source.setOrigin(data.origin != null ? data.origin : data.dims.map((v) => v / 2));\n    const dataArray = exports.vtkns.DataArray.newInstance({\n        name: \"scalars\",\n        numberOfComponents: 1,\n        values: new exports.ARRAY_TYPES[data.dtype](utf8ToAB(atob(data.buffer))),\n    });\n    source.getPointData().setScalars(dataArray);\n    return source;\n}\nexports.data2VTKImageData = data2VTKImageData;\nfunction majorAxis(vec3, idxA, idxB) {\n    const axis = [0, 0, 0];\n    const idx = Math.abs(vec3[idxA]) > Math.abs(vec3[idxB]) ? idxA : idxB;\n    const value = vec3[idx] > 0 ? 1 : -1;\n    axis[idx] = value;\n    return axis;\n}\nexports.majorAxis = majorAxis;\nfunction cartesian_product(...arrays) {\n    return arrays.reduce((acc, curr) => [...acc].flatMap((c) => curr.map((n) => [].concat(c, n))));\n}\nexports.cartesian_product = cartesian_product;\n//# sourceMappingURL=util.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"setup_vtkns"},{"type":"named","name":"applyStyle"},{"type":"named","name":"hexToRGB"},{"type":"named","name":"rgbToHex"},{"type":"named","name":"vtkLutToMapper"},{"type":"named","name":"data2VTKImageData"},{"type":"named","name":"majorAxis"},{"type":"named","name":"cartesian_product"}],"externals":[],"shims":[]},"code":{"source":"/* models/vtk/util.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const array_1 = require(\"@bokehjs/core/util/array\");\n    const kinds_1 = require(\"@bokehjs/core/kinds\");\n    exports.ARRAY_TYPES = {\n        uint8: Uint8Array,\n        int8: Int8Array,\n        uint16: Uint16Array,\n        int16: Int16Array,\n        uint32: Uint32Array,\n        int32: Int32Array,\n        float32: Float32Array,\n        float64: Float64Array,\n    };\n    exports.vtkns = {};\n    function setup_vtkns() {\n        if (exports.vtkns.Actor != null)\n            return;\n        const vtk = window.vtk;\n        exports.vtkns[\"Actor\"] = vtk.Rendering.Core.vtkActor;\n        exports.vtkns[\"AxesActor\"] = vtk.Rendering.Core.vtkAxesActor;\n        exports.vtkns[\"Base64\"] = vtk.Common.Core.vtkBase64;\n        exports.vtkns[\"BoundingBox\"] = vtk.Common.DataModel.vtkBoundingBox;\n        exports.vtkns[\"Camera\"] = vtk.Rendering.Core.vtkCamera;\n        exports.vtkns[\"ColorTransferFunction\"] = vtk.Rendering.Core.vtkColorTransferFunction;\n        exports.vtkns[\"CubeSource\"] = vtk.Filters.Sources.vtkCubeSource;\n        exports.vtkns[\"DataAccessHelper\"] = vtk.IO.Core.DataAccessHelper;\n        exports.vtkns[\"DataArray\"] = vtk.Common.Core.vtkDataArray;\n        exports.vtkns[\"Follower\"] = vtk.Rendering.Core.vtkFollower;\n        exports.vtkns[\"FullScreenRenderWindow\"] = vtk.Rendering.Misc.vtkFullScreenRenderWindow;\n        exports.vtkns[\"Glyph3DMapper\"] = vtk.Rendering.Core.vtkGlyph3DMapper;\n        exports.vtkns[\"HttpSceneLoader\"] = vtk.IO.Core.vtkHttpSceneLoader;\n        exports.vtkns[\"ImageData\"] = vtk.Common.DataModel.vtkImageData;\n        exports.vtkns[\"ImageMapper\"] = vtk.Rendering.Core.vtkImageMapper;\n        exports.vtkns[\"ImageProperty\"] = vtk.Rendering.Core.vtkImageProperty;\n        exports.vtkns[\"ImageSlice\"] = vtk.Rendering.Core.vtkImageSlice;\n        exports.vtkns[\"InteractiveOrientationWidget\"] =\n            vtk.Widgets.Widgets3D.vtkInteractiveOrientationWidget;\n        exports.vtkns[\"InteractorStyleTrackballCamera\"] =\n            vtk.Interaction.Style.vtkInteractorStyleTrackballCamera;\n        exports.vtkns[\"Light\"] = vtk.Rendering.Core.vtkLight;\n        exports.vtkns[\"LineSource\"] = vtk.Filters.Sources.vtkLineSource;\n        exports.vtkns[\"LookupTable\"] = vtk.Common.Core.vtkLookupTable;\n        exports.vtkns[\"macro\"] = vtk.macro;\n        exports.vtkns[\"Mapper\"] = vtk.Rendering.Core.vtkMapper;\n        exports.vtkns[\"OpenGLRenderWindow\"] = vtk.Rendering.OpenGL.vtkRenderWindow;\n        exports.vtkns[\"OrientationMarkerWidget\"] =\n            vtk.Interaction.Widgets.vtkOrientationMarkerWidget;\n        exports.vtkns[\"OutlineFilter\"] = vtk.Filters.General.vtkOutlineFilter;\n        exports.vtkns[\"PiecewiseFunction\"] = vtk.Common.DataModel.vtkPiecewiseFunction;\n        exports.vtkns[\"PixelSpaceCallbackMapper\"] =\n            vtk.Rendering.Core.vtkPixelSpaceCallbackMapper;\n        exports.vtkns[\"PlaneSource\"] = vtk.Filters.Sources.vtkPlaneSource;\n        exports.vtkns[\"PointSource\"] = vtk.Filters.Sources.vtkPointSource;\n        exports.vtkns[\"PolyData\"] = vtk.Common.DataModel.vtkPolyData;\n        exports.vtkns[\"Property\"] = vtk.Rendering.Core.vtkProperty;\n        exports.vtkns[\"Renderer\"] = vtk.Rendering.Core.vtkRenderer;\n        exports.vtkns[\"RenderWindow\"] = vtk.Rendering.Core.vtkRenderWindow;\n        exports.vtkns[\"RenderWindowInteractor\"] = vtk.Rendering.Core.vtkRenderWindowInteractor;\n        exports.vtkns[\"SphereMapper\"] = vtk.Rendering.Core.vtkSphereMapper;\n        exports.vtkns[\"SynchronizableRenderWindow\"] =\n            vtk.Rendering.Misc.vtkSynchronizableRenderWindow;\n        exports.vtkns[\"Texture\"] = vtk.Rendering.Core.vtkTexture;\n        exports.vtkns[\"Volume\"] = vtk.Rendering.Core.vtkVolume;\n        exports.vtkns[\"VolumeController\"] = vtk.Interaction.UI.vtkVolumeController;\n        exports.vtkns[\"VolumeMapper\"] = vtk.Rendering.Core.vtkVolumeMapper;\n        exports.vtkns[\"VolumeProperty\"] = vtk.Rendering.Core.vtkVolumeProperty;\n        exports.vtkns[\"WidgetManager\"] = vtk.Widgets.Core.vtkWidgetManager;\n        const { vtkObjectManager } = exports.vtkns.SynchronizableRenderWindow;\n        vtkObjectManager.setTypeMapping(\"vtkVolumeMapper\", exports.vtkns.VolumeMapper.newInstance, vtkObjectManager.oneTimeGenericUpdater);\n        vtkObjectManager.setTypeMapping(\"vtkSmartVolumeMapper\", exports.vtkns.VolumeMapper.newInstance, vtkObjectManager.oneTimeGenericUpdater);\n        vtkObjectManager.setTypeMapping(\"vtkFollower\", exports.vtkns.Follower.newInstance, vtkObjectManager.genericUpdater);\n        vtkObjectManager.setTypeMapping(\"vtkOpenGLGlyph3DMapper\", exports.vtkns.Glyph3DMapper.newInstance, vtkObjectManager.genericUpdater);\n    }\n    exports.setup_vtkns = setup_vtkns;\n    if (window.vtk)\n        setup_vtkns();\n    exports.Interpolation = (0, kinds_1.Enum)(\"fast_linear\", \"linear\", \"nearest\");\n    function applyStyle(el, style) {\n        Object.keys(style).forEach((key) => {\n            el.style[key] = style[key];\n        });\n    }\n    exports.applyStyle = applyStyle;\n    function hexToRGB(color) {\n        return [\n            parseInt(color.slice(1, 3), 16) / 255,\n            parseInt(color.slice(3, 5), 16) / 255,\n            parseInt(color.slice(5, 7), 16) / 255,\n        ];\n    }\n    exports.hexToRGB = hexToRGB;\n    function valToHex(val) {\n        const hex = Math.min(Math.max(Math.round(val), 0), 255).toString(16);\n        return hex.length == 2 ? hex : \"0\" + hex;\n    }\n    function rgbToHex(r, g, b) {\n        return \"#\" + valToHex(r) + valToHex(g) + valToHex(b);\n    }\n    exports.rgbToHex = rgbToHex;\n    function vtkLutToMapper(vtk_lut) {\n        //For the moment only linear colormapper are handle\n        const { scale, nodes } = vtk_lut.get(\"scale\", \"nodes\");\n        if (scale !== exports.vtkns.ColorTransferFunction.Scale.LINEAR)\n            throw \"Error transfer function scale not handle\";\n        const x = nodes.map((a) => a.x);\n        const low = Math.min(...x);\n        const high = Math.max(...x);\n        const vals = (0, array_1.linspace)(low, high, 255);\n        const rgb = [0, 0, 0];\n        const palette = vals.map((val) => {\n            vtk_lut.getColor(val, rgb);\n            return rgbToHex(rgb[0] * 255, rgb[1] * 255, rgb[2] * 255);\n        });\n        return { low, high, palette };\n    }\n    exports.vtkLutToMapper = vtkLutToMapper;\n    function utf8ToAB(utf8_str) {\n        var buf = new ArrayBuffer(utf8_str.length); // 2 bytes for each char\n        var bufView = new Uint8Array(buf);\n        for (var i = 0, strLen = utf8_str.length; i < strLen; i++) {\n            bufView[i] = utf8_str.charCodeAt(i);\n        }\n        return buf;\n    }\n    function data2VTKImageData(data) {\n        const source = exports.vtkns.ImageData.newInstance({\n            spacing: data.spacing,\n        });\n        source.setDimensions(data.dims);\n        source.setOrigin(data.origin != null ? data.origin : data.dims.map((v) => v / 2));\n        const dataArray = exports.vtkns.DataArray.newInstance({\n            name: \"scalars\",\n            numberOfComponents: 1,\n            values: new exports.ARRAY_TYPES[data.dtype](utf8ToAB(atob(data.buffer))),\n        });\n        source.getPointData().setScalars(dataArray);\n        return source;\n    }\n    exports.data2VTKImageData = data2VTKImageData;\n    function majorAxis(vec3, idxA, idxB) {\n        const axis = [0, 0, 0];\n        const idx = Math.abs(vec3[idxA]) > Math.abs(vec3[idxB]) ? idxA : idxB;\n        const value = vec3[idx] > 0 ? 1 : -1;\n        axis[idx] = value;\n        return axis;\n    }\n    exports.majorAxis = majorAxis;\n    function cartesian_product(...arrays) {\n        return arrays.reduce((acc, curr) => [...acc].flatMap((c) => curr.map((n) => [].concat(c, n))));\n    }\n    exports.cartesian_product = cartesian_product;\n}\n","min_source":"function _(e,n,t,r,o){r();const a=e(\"@bokehjs/core/util/array\"),i=e(\"@bokehjs/core/kinds\");function s(){if(null!=t.vtkns.Actor)return;const e=window.vtk;t.vtkns.Actor=e.Rendering.Core.vtkActor,t.vtkns.AxesActor=e.Rendering.Core.vtkAxesActor,t.vtkns.Base64=e.Common.Core.vtkBase64,t.vtkns.BoundingBox=e.Common.DataModel.vtkBoundingBox,t.vtkns.Camera=e.Rendering.Core.vtkCamera,t.vtkns.ColorTransferFunction=e.Rendering.Core.vtkColorTransferFunction,t.vtkns.CubeSource=e.Filters.Sources.vtkCubeSource,t.vtkns.DataAccessHelper=e.IO.Core.DataAccessHelper,t.vtkns.DataArray=e.Common.Core.vtkDataArray,t.vtkns.Follower=e.Rendering.Core.vtkFollower,t.vtkns.FullScreenRenderWindow=e.Rendering.Misc.vtkFullScreenRenderWindow,t.vtkns.Glyph3DMapper=e.Rendering.Core.vtkGlyph3DMapper,t.vtkns.HttpSceneLoader=e.IO.Core.vtkHttpSceneLoader,t.vtkns.ImageData=e.Common.DataModel.vtkImageData,t.vtkns.ImageMapper=e.Rendering.Core.vtkImageMapper,t.vtkns.ImageProperty=e.Rendering.Core.vtkImageProperty,t.vtkns.ImageSlice=e.Rendering.Core.vtkImageSlice,t.vtkns.InteractiveOrientationWidget=e.Widgets.Widgets3D.vtkInteractiveOrientationWidget,t.vtkns.InteractorStyleTrackballCamera=e.Interaction.Style.vtkInteractorStyleTrackballCamera,t.vtkns.Light=e.Rendering.Core.vtkLight,t.vtkns.LineSource=e.Filters.Sources.vtkLineSource,t.vtkns.LookupTable=e.Common.Core.vtkLookupTable,t.vtkns.macro=e.macro,t.vtkns.Mapper=e.Rendering.Core.vtkMapper,t.vtkns.OpenGLRenderWindow=e.Rendering.OpenGL.vtkRenderWindow,t.vtkns.OrientationMarkerWidget=e.Interaction.Widgets.vtkOrientationMarkerWidget,t.vtkns.OutlineFilter=e.Filters.General.vtkOutlineFilter,t.vtkns.PiecewiseFunction=e.Common.DataModel.vtkPiecewiseFunction,t.vtkns.PixelSpaceCallbackMapper=e.Rendering.Core.vtkPixelSpaceCallbackMapper,t.vtkns.PlaneSource=e.Filters.Sources.vtkPlaneSource,t.vtkns.PointSource=e.Filters.Sources.vtkPointSource,t.vtkns.PolyData=e.Common.DataModel.vtkPolyData,t.vtkns.Property=e.Rendering.Core.vtkProperty,t.vtkns.Renderer=e.Rendering.Core.vtkRenderer,t.vtkns.RenderWindow=e.Rendering.Core.vtkRenderWindow,t.vtkns.RenderWindowInteractor=e.Rendering.Core.vtkRenderWindowInteractor,t.vtkns.SphereMapper=e.Rendering.Core.vtkSphereMapper,t.vtkns.SynchronizableRenderWindow=e.Rendering.Misc.vtkSynchronizableRenderWindow,t.vtkns.Texture=e.Rendering.Core.vtkTexture,t.vtkns.Volume=e.Rendering.Core.vtkVolume,t.vtkns.VolumeController=e.Interaction.UI.vtkVolumeController,t.vtkns.VolumeMapper=e.Rendering.Core.vtkVolumeMapper,t.vtkns.VolumeProperty=e.Rendering.Core.vtkVolumeProperty,t.vtkns.WidgetManager=e.Widgets.Core.vtkWidgetManager;const{vtkObjectManager:n}=t.vtkns.SynchronizableRenderWindow;n.setTypeMapping(\"vtkVolumeMapper\",t.vtkns.VolumeMapper.newInstance,n.oneTimeGenericUpdater),n.setTypeMapping(\"vtkSmartVolumeMapper\",t.vtkns.VolumeMapper.newInstance,n.oneTimeGenericUpdater),n.setTypeMapping(\"vtkFollower\",t.vtkns.Follower.newInstance,n.genericUpdater),n.setTypeMapping(\"vtkOpenGLGlyph3DMapper\",t.vtkns.Glyph3DMapper.newInstance,n.genericUpdater)}function k(e){const n=Math.min(Math.max(Math.round(e),0),255).toString(16);return 2==n.length?n:\"0\"+n}function c(e,n,t){return\"#\"+k(e)+k(n)+k(t)}function l(e){for(var n=new ArrayBuffer(e.length),t=new Uint8Array(n),r=0,o=e.length;r<o;r++)t[r]=e.charCodeAt(r);return n}t.ARRAY_TYPES={uint8:Uint8Array,int8:Int8Array,uint16:Uint16Array,int16:Int16Array,uint32:Uint32Array,int32:Int32Array,float32:Float32Array,float64:Float64Array},t.vtkns={},t.setup_vtkns=s,window.vtk&&s(),t.Interpolation=(0,i.Enum)(\"fast_linear\",\"linear\",\"nearest\"),t.applyStyle=function(e,n){Object.keys(n).forEach((t=>{e.style[t]=n[t]}))},t.hexToRGB=function(e){return[parseInt(e.slice(1,3),16)/255,parseInt(e.slice(3,5),16)/255,parseInt(e.slice(5,7),16)/255]},t.rgbToHex=c,t.vtkLutToMapper=function(e){const{scale:n,nodes:r}=e.get(\"scale\",\"nodes\");if(n!==t.vtkns.ColorTransferFunction.Scale.LINEAR)throw\"Error transfer function scale not handle\";const o=r.map((e=>e.x)),i=Math.min(...o),s=Math.max(...o),k=(0,a.linspace)(i,s,255),l=[0,0,0];return{low:i,high:s,palette:k.map((n=>(e.getColor(n,l),c(255*l[0],255*l[1],255*l[2]))))}},t.data2VTKImageData=function(e){const n=t.vtkns.ImageData.newInstance({spacing:e.spacing});n.setDimensions(e.dims),n.setOrigin(null!=e.origin?e.origin:e.dims.map((e=>e/2)));const r=t.vtkns.DataArray.newInstance({name:\"scalars\",numberOfComponents:1,values:new t.ARRAY_TYPES[e.dtype](l(atob(e.buffer)))});return n.getPointData().setScalars(r),n},t.majorAxis=function(e,n,t){const r=[0,0,0],o=Math.abs(e[n])>Math.abs(e[t])?n:t,a=e[o]>0?1:-1;return r[o]=a,r},t.cartesian_product=function(...e){return e.reduce(((e,n)=>[...e].flatMap((e=>n.map((n=>[].concat(e,n)))))))}}\n//# sourceMappingURL=util.min.js.map","min_map":"{\"version\":3,\"file\":\"util.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"array_1\",\"kinds_1\",\"setup_vtkns\",\"vtkns\",\"Actor\",\"vtk\",\"window\",\"Rendering\",\"Core\",\"vtkActor\",\"vtkAxesActor\",\"Common\",\"vtkBase64\",\"DataModel\",\"vtkBoundingBox\",\"vtkCamera\",\"vtkColorTransferFunction\",\"Filters\",\"Sources\",\"vtkCubeSource\",\"IO\",\"DataAccessHelper\",\"vtkDataArray\",\"vtkFollower\",\"Misc\",\"vtkFullScreenRenderWindow\",\"vtkGlyph3DMapper\",\"vtkHttpSceneLoader\",\"vtkImageData\",\"vtkImageMapper\",\"vtkImageProperty\",\"vtkImageSlice\",\"Widgets\",\"Widgets3D\",\"vtkInteractiveOrientationWidget\",\"Interaction\",\"Style\",\"vtkInteractorStyleTrackballCamera\",\"vtkLight\",\"vtkLineSource\",\"vtkLookupTable\",\"macro\",\"vtkMapper\",\"OpenGL\",\"vtkRenderWindow\",\"vtkOrientationMarkerWidget\",\"General\",\"vtkOutlineFilter\",\"vtkPiecewiseFunction\",\"vtkPixelSpaceCallbackMapper\",\"vtkPlaneSource\",\"vtkPointSource\",\"vtkPolyData\",\"vtkProperty\",\"vtkRenderer\",\"vtkRenderWindowInteractor\",\"vtkSphereMapper\",\"vtkSynchronizableRenderWindow\",\"vtkTexture\",\"vtkVolume\",\"UI\",\"vtkVolumeController\",\"vtkVolumeMapper\",\"vtkVolumeProperty\",\"vtkWidgetManager\",\"vtkObjectManager\",\"SynchronizableRenderWindow\",\"setTypeMapping\",\"VolumeMapper\",\"newInstance\",\"oneTimeGenericUpdater\",\"Follower\",\"genericUpdater\",\"Glyph3DMapper\",\"valToHex\",\"val\",\"hex\",\"Math\",\"min\",\"max\",\"round\",\"toString\",\"length\",\"rgbToHex\",\"r\",\"g\",\"b\",\"utf8ToAB\",\"utf8_str\",\"buf\",\"ArrayBuffer\",\"bufView\",\"Uint8Array\",\"i\",\"strLen\",\"charCodeAt\",\"ARRAY_TYPES\",\"uint8\",\"int8\",\"Int8Array\",\"uint16\",\"Uint16Array\",\"int16\",\"Int16Array\",\"uint32\",\"Uint32Array\",\"int32\",\"Int32Array\",\"float32\",\"Float32Array\",\"float64\",\"Float64Array\",\"Interpolation\",\"Enum\",\"applyStyle\",\"el\",\"style\",\"Object\",\"keys\",\"forEach\",\"key\",\"hexToRGB\",\"color\",\"parseInt\",\"slice\",\"vtkLutToMapper\",\"vtk_lut\",\"scale\",\"nodes\",\"get\",\"ColorTransferFunction\",\"Scale\",\"LINEAR\",\"x\",\"map\",\"a\",\"low\",\"high\",\"vals\",\"linspace\",\"rgb\",\"palette\",\"getColor\",\"data2VTKImageData\",\"data\",\"source\",\"ImageData\",\"spacing\",\"setDimensions\",\"dims\",\"setOrigin\",\"origin\",\"v\",\"dataArray\",\"DataArray\",\"name\",\"numberOfComponents\",\"values\",\"dtype\",\"atob\",\"buffer\",\"getPointData\",\"setScalars\",\"majorAxis\",\"vec3\",\"idxA\",\"idxB\",\"axis\",\"idx\",\"abs\",\"value\",\"cartesian_product\",\"arrays\",\"reduce\",\"acc\",\"curr\",\"flatMap\",\"c\",\"n\",\"concat\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/vtkcolorbar.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/vtk/vtkcolorbar.js","canonical":"models/vtk/vtkcolorbar","resolution":"ESM","id":"c010237f8b","hash":"c010237f8bdf185304667431c046efa50f1a8dad79aa45877eec7939b50c03d9","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VTKColorBar = void 0;\nconst mappers_1 = require(\"@bokehjs/models/mappers\");\nconst array_1 = require(\"@bokehjs/core/util/array\");\nclass VTKColorBar {\n    constructor(parent, mapper, options = {}) {\n        this.parent = parent;\n        this.mapper = mapper;\n        this.options = options;\n        if (!options.ticksNum)\n            options.ticksNum = 5;\n        if (!options.fontFamily)\n            options.fontFamily = \"Arial\";\n        if (!options.fontSize)\n            options.fontSize = \"12px\";\n        if (!options.ticksSize)\n            options.ticksSize = 2;\n        this.canvas = document.createElement(\"canvas\");\n        this.canvas.style.width = \"100%\";\n        this.parent.appendChild(this.canvas);\n        this.ctx = this.canvas.getContext(\"2d\");\n        this.ctx.font = `${this.options.fontSize} ${this.options.fontFamily}`;\n        this.ctx.lineWidth = options.ticksSize;\n        if (!options.height)\n            options.height = `${(this.font_height + 1) * 4}px`; //title/ticks/colorbar\n        this.canvas.style.height = options.height;\n        this.draw_colorbar();\n    }\n    get values() {\n        const { min, max } = this.mapper.metrics;\n        return (0, array_1.linspace)(min, max, this.options.ticksNum);\n    }\n    get ticks() {\n        return this.values.map((v) => v.toExponential(3));\n    }\n    get title() {\n        return this.mapper.name ? this.mapper.name : \"scalars\";\n    }\n    get font_height() {\n        let font_height = 0;\n        this.values.forEach((val) => {\n            const { actualBoundingBoxAscent, actualBoundingBoxDescent, } = this.ctx.measureText(`${val}`);\n            const height = actualBoundingBoxAscent + actualBoundingBoxDescent;\n            if (font_height < height)\n                font_height = height;\n        });\n        return font_height;\n    }\n    draw_colorbar() {\n        this.canvas.width = this.canvas.clientWidth;\n        this.canvas.height = this.canvas.clientHeight;\n        const { palette } = this.mapper;\n        this.ctx.font = `${this.options.fontSize} ${this.options.fontFamily}`;\n        const font_height = this.font_height;\n        this.ctx.save();\n        //colorbar\n        const image = document.createElement(\"canvas\");\n        const h = 1;\n        const w = palette.length;\n        image.width = w;\n        image.height = h;\n        const image_ctx = image.getContext(\"2d\");\n        const image_data = image_ctx.getImageData(0, 0, w, h);\n        const cmap = new mappers_1.LinearColorMapper({ palette }).rgba_mapper;\n        const buf8 = cmap.v_compute((0, array_1.range)(0, palette.length));\n        image_data.data.set(buf8);\n        image_ctx.putImageData(image_data, 0, 0);\n        this.ctx.drawImage(image, 0, 2 * (this.font_height + 1) + 1, this.canvas.width, this.canvas.height);\n        this.ctx.restore();\n        this.ctx.save();\n        //title\n        this.ctx.textAlign = 'center';\n        this.ctx.fillText(this.title, this.canvas.width / 2, font_height + 1);\n        this.ctx.restore();\n        this.ctx.save();\n        //ticks\n        const tick_x_positions = (0, array_1.linspace)(0, this.canvas.width, 5);\n        tick_x_positions.forEach((xpos, idx) => {\n            let xpos_tick = xpos;\n            if (idx == 0) {\n                xpos_tick = xpos + Math.ceil(this.ctx.lineWidth / 2);\n                this.ctx.textAlign = \"left\";\n            }\n            else if (idx == tick_x_positions.length - 1) {\n                xpos_tick = xpos - Math.ceil(this.ctx.lineWidth / 2);\n                this.ctx.textAlign = \"right\";\n            }\n            else {\n                this.ctx.textAlign = \"center\";\n            }\n            this.ctx.moveTo(xpos_tick, 2 * (font_height + 1));\n            this.ctx.lineTo(xpos_tick, 2 * (font_height + 1) + 5);\n            this.ctx.stroke();\n            this.ctx.fillText(`${this.ticks[idx]}`, xpos, 2 * (font_height + 1));\n        });\n        this.ctx.restore();\n    }\n}\nexports.VTKColorBar = VTKColorBar;\nVTKColorBar.__name__ = \"VTKColorBar\";\n//# sourceMappingURL=vtkcolorbar.js.map\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"VTKColorBar"}],"externals":[],"shims":[]},"code":{"source":"/* models/vtk/vtkcolorbar.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const mappers_1 = require(\"@bokehjs/models/mappers\");\n    const array_1 = require(\"@bokehjs/core/util/array\");\n    class VTKColorBar {\n        constructor(parent, mapper, options = {}) {\n            this.parent = parent;\n            this.mapper = mapper;\n            this.options = options;\n            if (!options.ticksNum)\n                options.ticksNum = 5;\n            if (!options.fontFamily)\n                options.fontFamily = \"Arial\";\n            if (!options.fontSize)\n                options.fontSize = \"12px\";\n            if (!options.ticksSize)\n                options.ticksSize = 2;\n            this.canvas = document.createElement(\"canvas\");\n            this.canvas.style.width = \"100%\";\n            this.parent.appendChild(this.canvas);\n            this.ctx = this.canvas.getContext(\"2d\");\n            this.ctx.font = `${this.options.fontSize} ${this.options.fontFamily}`;\n            this.ctx.lineWidth = options.ticksSize;\n            if (!options.height)\n                options.height = `${(this.font_height + 1) * 4}px`; //title/ticks/colorbar\n            this.canvas.style.height = options.height;\n            this.draw_colorbar();\n        }\n        get values() {\n            const { min, max } = this.mapper.metrics;\n            return (0, array_1.linspace)(min, max, this.options.ticksNum);\n        }\n        get ticks() {\n            return this.values.map((v) => v.toExponential(3));\n        }\n        get title() {\n            return this.mapper.name ? this.mapper.name : \"scalars\";\n        }\n        get font_height() {\n            let font_height = 0;\n            this.values.forEach((val) => {\n                const { actualBoundingBoxAscent, actualBoundingBoxDescent, } = this.ctx.measureText(`${val}`);\n                const height = actualBoundingBoxAscent + actualBoundingBoxDescent;\n                if (font_height < height)\n                    font_height = height;\n            });\n            return font_height;\n        }\n        draw_colorbar() {\n            this.canvas.width = this.canvas.clientWidth;\n            this.canvas.height = this.canvas.clientHeight;\n            const { palette } = this.mapper;\n            this.ctx.font = `${this.options.fontSize} ${this.options.fontFamily}`;\n            const font_height = this.font_height;\n            this.ctx.save();\n            //colorbar\n            const image = document.createElement(\"canvas\");\n            const h = 1;\n            const w = palette.length;\n            image.width = w;\n            image.height = h;\n            const image_ctx = image.getContext(\"2d\");\n            const image_data = image_ctx.getImageData(0, 0, w, h);\n            const cmap = new mappers_1.LinearColorMapper({ palette }).rgba_mapper;\n            const buf8 = cmap.v_compute((0, array_1.range)(0, palette.length));\n            image_data.data.set(buf8);\n            image_ctx.putImageData(image_data, 0, 0);\n            this.ctx.drawImage(image, 0, 2 * (this.font_height + 1) + 1, this.canvas.width, this.canvas.height);\n            this.ctx.restore();\n            this.ctx.save();\n            //title\n            this.ctx.textAlign = 'center';\n            this.ctx.fillText(this.title, this.canvas.width / 2, font_height + 1);\n            this.ctx.restore();\n            this.ctx.save();\n            //ticks\n            const tick_x_positions = (0, array_1.linspace)(0, this.canvas.width, 5);\n            tick_x_positions.forEach((xpos, idx) => {\n                let xpos_tick = xpos;\n                if (idx == 0) {\n                    xpos_tick = xpos + Math.ceil(this.ctx.lineWidth / 2);\n                    this.ctx.textAlign = \"left\";\n                }\n                else if (idx == tick_x_positions.length - 1) {\n                    xpos_tick = xpos - Math.ceil(this.ctx.lineWidth / 2);\n                    this.ctx.textAlign = \"right\";\n                }\n                else {\n                    this.ctx.textAlign = \"center\";\n                }\n                this.ctx.moveTo(xpos_tick, 2 * (font_height + 1));\n                this.ctx.lineTo(xpos_tick, 2 * (font_height + 1) + 5);\n                this.ctx.stroke();\n                this.ctx.fillText(`${this.ticks[idx]}`, xpos, 2 * (font_height + 1));\n            });\n            this.ctx.restore();\n        }\n    }\n    exports.VTKColorBar = VTKColorBar;\n    VTKColorBar.__name__ = \"VTKColorBar\";\n}\n","min_source":"function _(t,i,e,s,h){s();const a=t(\"@bokehjs/models/mappers\"),n=t(\"@bokehjs/core/util/array\");class c{constructor(t,i,e={}){this.parent=t,this.mapper=i,this.options=e,e.ticksNum||(e.ticksNum=5),e.fontFamily||(e.fontFamily=\"Arial\"),e.fontSize||(e.fontSize=\"12px\"),e.ticksSize||(e.ticksSize=2),this.canvas=document.createElement(\"canvas\"),this.canvas.style.width=\"100%\",this.parent.appendChild(this.canvas),this.ctx=this.canvas.getContext(\"2d\"),this.ctx.font=`${this.options.fontSize} ${this.options.fontFamily}`,this.ctx.lineWidth=e.ticksSize,e.height||(e.height=4*(this.font_height+1)+\"px\"),this.canvas.style.height=e.height,this.draw_colorbar()}get values(){const{min:t,max:i}=this.mapper.metrics;return(0,n.linspace)(t,i,this.options.ticksNum)}get ticks(){return this.values.map((t=>t.toExponential(3)))}get title(){return this.mapper.name?this.mapper.name:\"scalars\"}get font_height(){let t=0;return this.values.forEach((i=>{const{actualBoundingBoxAscent:e,actualBoundingBoxDescent:s}=this.ctx.measureText(`${i}`),h=e+s;t<h&&(t=h)})),t}draw_colorbar(){this.canvas.width=this.canvas.clientWidth,this.canvas.height=this.canvas.clientHeight;const{palette:t}=this.mapper;this.ctx.font=`${this.options.fontSize} ${this.options.fontFamily}`;const i=this.font_height;this.ctx.save();const e=document.createElement(\"canvas\"),s=t.length;e.width=s,e.height=1;const h=e.getContext(\"2d\"),c=h.getImageData(0,0,s,1),o=new a.LinearColorMapper({palette:t}).rgba_mapper.v_compute((0,n.range)(0,t.length));c.data.set(o),h.putImageData(c,0,0),this.ctx.drawImage(e,0,2*(this.font_height+1)+1,this.canvas.width,this.canvas.height),this.ctx.restore(),this.ctx.save(),this.ctx.textAlign=\"center\",this.ctx.fillText(this.title,this.canvas.width/2,i+1),this.ctx.restore(),this.ctx.save();const r=(0,n.linspace)(0,this.canvas.width,5);r.forEach(((t,e)=>{let s=t;0==e?(s=t+Math.ceil(this.ctx.lineWidth/2),this.ctx.textAlign=\"left\"):e==r.length-1?(s=t-Math.ceil(this.ctx.lineWidth/2),this.ctx.textAlign=\"right\"):this.ctx.textAlign=\"center\",this.ctx.moveTo(s,2*(i+1)),this.ctx.lineTo(s,2*(i+1)+5),this.ctx.stroke(),this.ctx.fillText(`${this.ticks[e]}`,t,2*(i+1))})),this.ctx.restore()}}e.VTKColorBar=c,c.__name__=\"VTKColorBar\"}\n//# sourceMappingURL=vtkcolorbar.min.js.map","min_map":"{\"version\":3,\"file\":\"vtkcolorbar.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"mappers_1\",\"array_1\",\"VTKColorBar\",\"constructor\",\"parent\",\"mapper\",\"options\",\"this\",\"ticksNum\",\"fontFamily\",\"fontSize\",\"ticksSize\",\"canvas\",\"document\",\"createElement\",\"style\",\"width\",\"appendChild\",\"ctx\",\"getContext\",\"font\",\"lineWidth\",\"height\",\"font_height\",\"draw_colorbar\",\"values\",\"min\",\"max\",\"metrics\",\"linspace\",\"ticks\",\"map\",\"v\",\"toExponential\",\"title\",\"name\",\"forEach\",\"val\",\"actualBoundingBoxAscent\",\"actualBoundingBoxDescent\",\"measureText\",\"clientWidth\",\"clientHeight\",\"palette\",\"save\",\"image\",\"w\",\"length\",\"image_ctx\",\"image_data\",\"getImageData\",\"buf8\",\"LinearColorMapper\",\"rgba_mapper\",\"v_compute\",\"range\",\"data\",\"set\",\"putImageData\",\"drawImage\",\"restore\",\"textAlign\",\"fillText\",\"tick_x_positions\",\"xpos\",\"idx\",\"xpos_tick\",\"Math\",\"ceil\",\"moveTo\",\"lineTo\",\"stroke\",\"__name__\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/vtkaxes.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/vtk/vtkaxes.js","canonical":"models/vtk/vtkaxes","resolution":"ESM","id":"5a606f3f35","hash":"5a606f3f3599d4d41b07633756e79627c9db2435b2b9c5abf316794d95babf6e","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VTKAxes = void 0;\nvar _a;\nconst model_1 = require(\"@bokehjs/model\");\nconst gl_matrix_1 = require(\"gl-matrix\");\nconst util_1 = require(\"./util\");\nclass VTKAxes extends model_1.Model {\n    constructor(attrs) {\n        super(attrs);\n    }\n    get xticks() {\n        if (this.xticker)\n            return this.xticker.ticks;\n        else\n            return [];\n    }\n    get yticks() {\n        if (this.yticker)\n            return this.yticker.ticks;\n        else\n            return [];\n    }\n    get zticks() {\n        if (this.zticker)\n            return this.zticker.ticks;\n        else\n            return [];\n    }\n    get xlabels() {\n        var _b;\n        return ((_b = this.xticker) === null || _b === void 0 ? void 0 : _b.labels)\n            ? this.xticker.labels\n            : this.xticks.map((elem) => elem.toFixed(this.digits));\n    }\n    get ylabels() {\n        var _b;\n        return ((_b = this.yticker) === null || _b === void 0 ? void 0 : _b.labels)\n            ? this.yticker.labels\n            : this.yticks.map((elem) => elem.toFixed(this.digits));\n    }\n    get zlabels() {\n        var _b;\n        return ((_b = this.zticker) === null || _b === void 0 ? void 0 : _b.labels)\n            ? this.zticker.labels\n            : this.zticks.map((elem) => elem.toFixed(this.digits));\n    }\n    _make_grid_lines(n, m, offset) {\n        const out = [];\n        for (let i = 0; i < n - 1; i++) {\n            for (let j = 0; j < m - 1; j++) {\n                const v0 = i * m + j + offset;\n                const v1 = i * m + j + 1 + offset;\n                const v2 = (i + 1) * m + j + 1 + offset;\n                const v3 = (i + 1) * m + j + offset;\n                const line = [5, v0, v1, v2, v3, v0];\n                out.push(line);\n            }\n        }\n        return out;\n    }\n    _create_grid_axes() {\n        const pts = [];\n        pts.push((0, util_1.cartesian_product)(this.xticks, this.yticks, [this.origin[2]])); //xy\n        pts.push((0, util_1.cartesian_product)([this.origin[0]], this.yticks, this.zticks)); //yz\n        pts.push((0, util_1.cartesian_product)(this.xticks, [this.origin[1]], this.zticks)); //xz\n        const polys = [];\n        let offset = 0;\n        polys.push(this._make_grid_lines(this.xticks.length, this.yticks.length, offset)); //xy\n        offset += this.xticks.length * this.yticks.length;\n        polys.push(this._make_grid_lines(this.yticks.length, this.zticks.length, offset)); //yz\n        offset += this.yticks.length * this.zticks.length;\n        polys.push(this._make_grid_lines(this.xticks.length, this.zticks.length, offset)); //xz\n        const gridPolyData = window.vtk({\n            vtkClass: \"vtkPolyData\",\n            points: {\n                vtkClass: \"vtkPoints\",\n                dataType: \"Float32Array\",\n                numberOfComponents: 3,\n                values: pts.flat(2),\n            },\n            lines: {\n                vtkClass: \"vtkCellArray\",\n                dataType: \"Uint32Array\",\n                values: polys.flat(2),\n            },\n        });\n        const gridMapper = util_1.vtkns.Mapper.newInstance();\n        const gridActor = util_1.vtkns.Actor.newInstance();\n        gridMapper.setInputData(gridPolyData);\n        gridActor.setMapper(gridMapper);\n        gridActor.getProperty().setOpacity(this.grid_opacity);\n        gridActor.setVisibility(this.show_grid);\n        return gridActor;\n    }\n    create_axes(canvas) {\n        if (this.origin == null)\n            return { psActor: null, axesActor: null, gridActor: null };\n        const points = [this.xticks, this.yticks, this.zticks].map((arr, axis) => {\n            let coords = null;\n            switch (axis) {\n                case 0:\n                    coords = (0, util_1.cartesian_product)(arr, [this.origin[1]], [this.origin[2]]);\n                    break;\n                case 1:\n                    coords = (0, util_1.cartesian_product)([this.origin[0]], arr, [this.origin[2]]);\n                    break;\n                case 2:\n                    coords = (0, util_1.cartesian_product)([this.origin[0]], [this.origin[1]], arr);\n                    break;\n            }\n            return coords;\n        }).flat(2);\n        const axesPolyData = window.vtk({\n            vtkClass: \"vtkPolyData\",\n            points: {\n                vtkClass: \"vtkPoints\",\n                dataType: \"Float32Array\",\n                numberOfComponents: 3,\n                values: points,\n            },\n            lines: {\n                vtkClass: \"vtkCellArray\",\n                dataType: \"Uint32Array\",\n                values: [\n                    2,\n                    0,\n                    this.xticks.length - 1,\n                    2,\n                    this.xticks.length,\n                    this.xticks.length + this.yticks.length - 1,\n                    2,\n                    this.xticks.length + this.yticks.length,\n                    this.xticks.length + this.yticks.length + this.zticks.length - 1,\n                ],\n            },\n        });\n        const psMapper = util_1.vtkns.PixelSpaceCallbackMapper.newInstance();\n        psMapper.setInputData(axesPolyData);\n        psMapper.setUseZValues(true);\n        psMapper.setCallback((coordsList, camera, aspect) => {\n            const textCtx = canvas.getContext(\"2d\");\n            if (textCtx) {\n                const dims = {\n                    height: canvas.clientHeight * window.devicePixelRatio,\n                    width: canvas.clientWidth * window.devicePixelRatio,\n                };\n                const dataPoints = psMapper.getInputData().getPoints();\n                const viewMatrix = camera.getViewMatrix();\n                gl_matrix_1.mat4.transpose(viewMatrix, viewMatrix);\n                const projMatrix = camera.getProjectionMatrix(aspect, -1, 1);\n                gl_matrix_1.mat4.transpose(projMatrix, projMatrix);\n                textCtx.clearRect(0, 0, dims.width, dims.height);\n                coordsList.forEach((xy, idx) => {\n                    const pdPoint = dataPoints.getPoint(idx);\n                    const vc = gl_matrix_1.vec3.fromValues(pdPoint[0], pdPoint[1], pdPoint[2]);\n                    gl_matrix_1.vec3.transformMat4(vc, vc, viewMatrix);\n                    vc[2] += 0.05; // sensibility\n                    gl_matrix_1.vec3.transformMat4(vc, vc, projMatrix);\n                    if (vc[2] - 0.001 < xy[3]) {\n                        textCtx.font = \"30px serif\";\n                        textCtx.textAlign = \"center\";\n                        textCtx.textBaseline = \"alphabetic\";\n                        textCtx.fillText(`.`, xy[0], dims.height - xy[1] + 2);\n                        textCtx.font = `${this.fontsize * window.devicePixelRatio}px serif`;\n                        textCtx.textAlign = \"right\";\n                        textCtx.textBaseline = \"top\";\n                        let label;\n                        if (idx < this.xticks.length)\n                            label = this.xlabels[idx];\n                        else if (idx >= this.xticks.length &&\n                            idx < this.xticks.length + this.yticks.length)\n                            label = this.ylabels[idx - this.xticks.length];\n                        else\n                            label = this.zlabels[idx - (this.xticks.length + this.yticks.length)];\n                        textCtx.fillText(`${label}`, xy[0], dims.height - xy[1]);\n                    }\n                });\n            }\n        });\n        const psActor = util_1.vtkns.Actor.newInstance(); //PixelSpace\n        psActor.setMapper(psMapper);\n        const axesMapper = util_1.vtkns.Mapper.newInstance();\n        axesMapper.setInputData(axesPolyData);\n        const axesActor = util_1.vtkns.Actor.newInstance();\n        axesActor.setMapper(axesMapper);\n        axesActor.getProperty().setOpacity(this.axes_opacity);\n        const gridActor = this._create_grid_axes();\n        return { psActor, axesActor, gridActor };\n    }\n}\nexports.VTKAxes = VTKAxes;\n_a = VTKAxes;\nVTKAxes.__name__ = \"VTKAxes\";\nVTKAxes.__module__ = \"panel.models.vtk\";\n(() => {\n    _a.define(({ Any, Array, Boolean, Number }) => ({\n        origin: [Array(Number), [0, 0, 0]],\n        xticker: [Any, null],\n        yticker: [Any, null],\n        zticker: [Any, null],\n        digits: [Number, 1],\n        show_grid: [Boolean, true],\n        grid_opacity: [Number, 0.1],\n        axes_opacity: [Number, 1],\n        fontsize: [Number, 12]\n    }));\n})();\n//# sourceMappingURL=vtkaxes.js.map\n","type":"js","dependency_paths":[["gl-matrix","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/index.js"],["./util","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/util.js"]],"dependency_map":[],"exported":[{"type":"named","name":"VTKAxes"}],"externals":[],"shims":[]},"code":{"source":"/* models/vtk/vtkaxes.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const model_1 = require(\"@bokehjs/model\");\n    const gl_matrix_1 = require(\"2f3fd5db07\") /* gl-matrix */;\n    const util_1 = require(\"a76a9b7c23\") /* ./util */;\n    class VTKAxes extends model_1.Model {\n        constructor(attrs) {\n            super(attrs);\n        }\n        get xticks() {\n            if (this.xticker)\n                return this.xticker.ticks;\n            else\n                return [];\n        }\n        get yticks() {\n            if (this.yticker)\n                return this.yticker.ticks;\n            else\n                return [];\n        }\n        get zticks() {\n            if (this.zticker)\n                return this.zticker.ticks;\n            else\n                return [];\n        }\n        get xlabels() {\n            var _b;\n            return ((_b = this.xticker) === null || _b === void 0 ? void 0 : _b.labels)\n                ? this.xticker.labels\n                : this.xticks.map((elem) => elem.toFixed(this.digits));\n        }\n        get ylabels() {\n            var _b;\n            return ((_b = this.yticker) === null || _b === void 0 ? void 0 : _b.labels)\n                ? this.yticker.labels\n                : this.yticks.map((elem) => elem.toFixed(this.digits));\n        }\n        get zlabels() {\n            var _b;\n            return ((_b = this.zticker) === null || _b === void 0 ? void 0 : _b.labels)\n                ? this.zticker.labels\n                : this.zticks.map((elem) => elem.toFixed(this.digits));\n        }\n        _make_grid_lines(n, m, offset) {\n            const out = [];\n            for (let i = 0; i < n - 1; i++) {\n                for (let j = 0; j < m - 1; j++) {\n                    const v0 = i * m + j + offset;\n                    const v1 = i * m + j + 1 + offset;\n                    const v2 = (i + 1) * m + j + 1 + offset;\n                    const v3 = (i + 1) * m + j + offset;\n                    const line = [5, v0, v1, v2, v3, v0];\n                    out.push(line);\n                }\n            }\n            return out;\n        }\n        _create_grid_axes() {\n            const pts = [];\n            pts.push((0, util_1.cartesian_product)(this.xticks, this.yticks, [this.origin[2]])); //xy\n            pts.push((0, util_1.cartesian_product)([this.origin[0]], this.yticks, this.zticks)); //yz\n            pts.push((0, util_1.cartesian_product)(this.xticks, [this.origin[1]], this.zticks)); //xz\n            const polys = [];\n            let offset = 0;\n            polys.push(this._make_grid_lines(this.xticks.length, this.yticks.length, offset)); //xy\n            offset += this.xticks.length * this.yticks.length;\n            polys.push(this._make_grid_lines(this.yticks.length, this.zticks.length, offset)); //yz\n            offset += this.yticks.length * this.zticks.length;\n            polys.push(this._make_grid_lines(this.xticks.length, this.zticks.length, offset)); //xz\n            const gridPolyData = window.vtk({\n                vtkClass: \"vtkPolyData\",\n                points: {\n                    vtkClass: \"vtkPoints\",\n                    dataType: \"Float32Array\",\n                    numberOfComponents: 3,\n                    values: pts.flat(2),\n                },\n                lines: {\n                    vtkClass: \"vtkCellArray\",\n                    dataType: \"Uint32Array\",\n                    values: polys.flat(2),\n                },\n            });\n            const gridMapper = util_1.vtkns.Mapper.newInstance();\n            const gridActor = util_1.vtkns.Actor.newInstance();\n            gridMapper.setInputData(gridPolyData);\n            gridActor.setMapper(gridMapper);\n            gridActor.getProperty().setOpacity(this.grid_opacity);\n            gridActor.setVisibility(this.show_grid);\n            return gridActor;\n        }\n        create_axes(canvas) {\n            if (this.origin == null)\n                return { psActor: null, axesActor: null, gridActor: null };\n            const points = [this.xticks, this.yticks, this.zticks].map((arr, axis) => {\n                let coords = null;\n                switch (axis) {\n                    case 0:\n                        coords = (0, util_1.cartesian_product)(arr, [this.origin[1]], [this.origin[2]]);\n                        break;\n                    case 1:\n                        coords = (0, util_1.cartesian_product)([this.origin[0]], arr, [this.origin[2]]);\n                        break;\n                    case 2:\n                        coords = (0, util_1.cartesian_product)([this.origin[0]], [this.origin[1]], arr);\n                        break;\n                }\n                return coords;\n            }).flat(2);\n            const axesPolyData = window.vtk({\n                vtkClass: \"vtkPolyData\",\n                points: {\n                    vtkClass: \"vtkPoints\",\n                    dataType: \"Float32Array\",\n                    numberOfComponents: 3,\n                    values: points,\n                },\n                lines: {\n                    vtkClass: \"vtkCellArray\",\n                    dataType: \"Uint32Array\",\n                    values: [\n                        2,\n                        0,\n                        this.xticks.length - 1,\n                        2,\n                        this.xticks.length,\n                        this.xticks.length + this.yticks.length - 1,\n                        2,\n                        this.xticks.length + this.yticks.length,\n                        this.xticks.length + this.yticks.length + this.zticks.length - 1,\n                    ],\n                },\n            });\n            const psMapper = util_1.vtkns.PixelSpaceCallbackMapper.newInstance();\n            psMapper.setInputData(axesPolyData);\n            psMapper.setUseZValues(true);\n            psMapper.setCallback((coordsList, camera, aspect) => {\n                const textCtx = canvas.getContext(\"2d\");\n                if (textCtx) {\n                    const dims = {\n                        height: canvas.clientHeight * window.devicePixelRatio,\n                        width: canvas.clientWidth * window.devicePixelRatio,\n                    };\n                    const dataPoints = psMapper.getInputData().getPoints();\n                    const viewMatrix = camera.getViewMatrix();\n                    gl_matrix_1.mat4.transpose(viewMatrix, viewMatrix);\n                    const projMatrix = camera.getProjectionMatrix(aspect, -1, 1);\n                    gl_matrix_1.mat4.transpose(projMatrix, projMatrix);\n                    textCtx.clearRect(0, 0, dims.width, dims.height);\n                    coordsList.forEach((xy, idx) => {\n                        const pdPoint = dataPoints.getPoint(idx);\n                        const vc = gl_matrix_1.vec3.fromValues(pdPoint[0], pdPoint[1], pdPoint[2]);\n                        gl_matrix_1.vec3.transformMat4(vc, vc, viewMatrix);\n                        vc[2] += 0.05; // sensibility\n                        gl_matrix_1.vec3.transformMat4(vc, vc, projMatrix);\n                        if (vc[2] - 0.001 < xy[3]) {\n                            textCtx.font = \"30px serif\";\n                            textCtx.textAlign = \"center\";\n                            textCtx.textBaseline = \"alphabetic\";\n                            textCtx.fillText(`.`, xy[0], dims.height - xy[1] + 2);\n                            textCtx.font = `${this.fontsize * window.devicePixelRatio}px serif`;\n                            textCtx.textAlign = \"right\";\n                            textCtx.textBaseline = \"top\";\n                            let label;\n                            if (idx < this.xticks.length)\n                                label = this.xlabels[idx];\n                            else if (idx >= this.xticks.length &&\n                                idx < this.xticks.length + this.yticks.length)\n                                label = this.ylabels[idx - this.xticks.length];\n                            else\n                                label = this.zlabels[idx - (this.xticks.length + this.yticks.length)];\n                            textCtx.fillText(`${label}`, xy[0], dims.height - xy[1]);\n                        }\n                    });\n                }\n            });\n            const psActor = util_1.vtkns.Actor.newInstance(); //PixelSpace\n            psActor.setMapper(psMapper);\n            const axesMapper = util_1.vtkns.Mapper.newInstance();\n            axesMapper.setInputData(axesPolyData);\n            const axesActor = util_1.vtkns.Actor.newInstance();\n            axesActor.setMapper(axesMapper);\n            axesActor.getProperty().setOpacity(this.axes_opacity);\n            const gridActor = this._create_grid_axes();\n            return { psActor, axesActor, gridActor };\n        }\n    }\n    exports.VTKAxes = VTKAxes;\n    _a = VTKAxes;\n    VTKAxes.__name__ = \"VTKAxes\";\n    VTKAxes.__module__ = \"panel.models.vtk\";\n    (() => {\n        _a.define(({ Any, Array, Boolean, Number }) => ({\n            origin: [Array(Number), [0, 0, 0]],\n            xticker: [Any, null],\n            yticker: [Any, null],\n            zticker: [Any, null],\n            digits: [Number, 1],\n            show_grid: [Boolean, true],\n            grid_opacity: [Number, 0.1],\n            axes_opacity: [Number, 1],\n            fontsize: [Number, 12]\n        }));\n    })();\n}\n","min_source":"function _(t,i,s,e,n){var a;e();const r=t(\"@bokehjs/model\"),c=t(\"2f3fd5db07\"),l=t(\"a76a9b7c23\");class h extends r.Model{constructor(t){super(t)}get xticks(){return this.xticker?this.xticker.ticks:[]}get yticks(){return this.yticker?this.yticker.ticks:[]}get zticks(){return this.zticker?this.zticker.ticks:[]}get xlabels(){var t;return(null===(t=this.xticker)||void 0===t?void 0:t.labels)?this.xticker.labels:this.xticks.map((t=>t.toFixed(this.digits)))}get ylabels(){var t;return(null===(t=this.yticker)||void 0===t?void 0:t.labels)?this.yticker.labels:this.yticks.map((t=>t.toFixed(this.digits)))}get zlabels(){var t;return(null===(t=this.zticker)||void 0===t?void 0:t.labels)?this.zticker.labels:this.zticks.map((t=>t.toFixed(this.digits)))}_make_grid_lines(t,i,s){const e=[];for(let n=0;n<t-1;n++)for(let t=0;t<i-1;t++){const a=n*i+t+s,r=[5,a,n*i+t+1+s,(n+1)*i+t+1+s,(n+1)*i+t+s,a];e.push(r)}return e}_create_grid_axes(){const t=[];t.push((0,l.cartesian_product)(this.xticks,this.yticks,[this.origin[2]])),t.push((0,l.cartesian_product)([this.origin[0]],this.yticks,this.zticks)),t.push((0,l.cartesian_product)(this.xticks,[this.origin[1]],this.zticks));const i=[];let s=0;i.push(this._make_grid_lines(this.xticks.length,this.yticks.length,s)),s+=this.xticks.length*this.yticks.length,i.push(this._make_grid_lines(this.yticks.length,this.zticks.length,s)),s+=this.yticks.length*this.zticks.length,i.push(this._make_grid_lines(this.xticks.length,this.zticks.length,s));const e=window.vtk({vtkClass:\"vtkPolyData\",points:{vtkClass:\"vtkPoints\",dataType:\"Float32Array\",numberOfComponents:3,values:t.flat(2)},lines:{vtkClass:\"vtkCellArray\",dataType:\"Uint32Array\",values:i.flat(2)}}),n=l.vtkns.Mapper.newInstance(),a=l.vtkns.Actor.newInstance();return n.setInputData(e),a.setMapper(n),a.getProperty().setOpacity(this.grid_opacity),a.setVisibility(this.show_grid),a}create_axes(t){if(null==this.origin)return{psActor:null,axesActor:null,gridActor:null};const i=[this.xticks,this.yticks,this.zticks].map(((t,i)=>{let s=null;switch(i){case 0:s=(0,l.cartesian_product)(t,[this.origin[1]],[this.origin[2]]);break;case 1:s=(0,l.cartesian_product)([this.origin[0]],t,[this.origin[2]]);break;case 2:s=(0,l.cartesian_product)([this.origin[0]],[this.origin[1]],t)}return s})).flat(2),s=window.vtk({vtkClass:\"vtkPolyData\",points:{vtkClass:\"vtkPoints\",dataType:\"Float32Array\",numberOfComponents:3,values:i},lines:{vtkClass:\"vtkCellArray\",dataType:\"Uint32Array\",values:[2,0,this.xticks.length-1,2,this.xticks.length,this.xticks.length+this.yticks.length-1,2,this.xticks.length+this.yticks.length,this.xticks.length+this.yticks.length+this.zticks.length-1]}}),e=l.vtkns.PixelSpaceCallbackMapper.newInstance();e.setInputData(s),e.setUseZValues(!0),e.setCallback(((i,s,n)=>{const a=t.getContext(\"2d\");if(a){const r={height:t.clientHeight*window.devicePixelRatio,width:t.clientWidth*window.devicePixelRatio},l=e.getInputData().getPoints(),h=s.getViewMatrix();c.mat4.transpose(h,h);const o=s.getProjectionMatrix(n,-1,1);c.mat4.transpose(o,o),a.clearRect(0,0,r.width,r.height),i.forEach(((t,i)=>{const s=l.getPoint(i),e=c.vec3.fromValues(s[0],s[1],s[2]);if(c.vec3.transformMat4(e,e,h),e[2]+=.05,c.vec3.transformMat4(e,e,o),e[2]-.001<t[3]){let s;a.font=\"30px serif\",a.textAlign=\"center\",a.textBaseline=\"alphabetic\",a.fillText(\".\",t[0],r.height-t[1]+2),a.font=this.fontsize*window.devicePixelRatio+\"px serif\",a.textAlign=\"right\",a.textBaseline=\"top\",s=i<this.xticks.length?this.xlabels[i]:i>=this.xticks.length&&i<this.xticks.length+this.yticks.length?this.ylabels[i-this.xticks.length]:this.zlabels[i-(this.xticks.length+this.yticks.length)],a.fillText(`${s}`,t[0],r.height-t[1])}}))}}));const n=l.vtkns.Actor.newInstance();n.setMapper(e);const a=l.vtkns.Mapper.newInstance();a.setInputData(s);const r=l.vtkns.Actor.newInstance();r.setMapper(a),r.getProperty().setOpacity(this.axes_opacity);return{psActor:n,axesActor:r,gridActor:this._create_grid_axes()}}}s.VTKAxes=h,a=h,h.__name__=\"VTKAxes\",h.__module__=\"panel.models.vtk\",a.define((({Any:t,Array:i,Boolean:s,Number:e})=>({origin:[i(e),[0,0,0]],xticker:[t,null],yticker:[t,null],zticker:[t,null],digits:[e,1],show_grid:[s,!0],grid_opacity:[e,.1],axes_opacity:[e,1],fontsize:[e,12]})))}\n//# sourceMappingURL=vtkaxes.min.js.map","min_map":"{\"version\":3,\"file\":\"vtkaxes.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"model_1\",\"gl_matrix_1\",\"util_1\",\"VTKAxes\",\"Model\",\"constructor\",\"attrs\",\"super\",\"xticks\",\"this\",\"xticker\",\"ticks\",\"yticks\",\"yticker\",\"zticks\",\"zticker\",\"xlabels\",\"_b\",\"labels\",\"map\",\"elem\",\"toFixed\",\"digits\",\"ylabels\",\"zlabels\",\"_make_grid_lines\",\"n\",\"m\",\"offset\",\"out\",\"i\",\"j\",\"v0\",\"line\",\"push\",\"_create_grid_axes\",\"pts\",\"cartesian_product\",\"origin\",\"polys\",\"length\",\"gridPolyData\",\"window\",\"vtk\",\"vtkClass\",\"points\",\"dataType\",\"numberOfComponents\",\"values\",\"flat\",\"lines\",\"gridMapper\",\"vtkns\",\"Mapper\",\"newInstance\",\"gridActor\",\"Actor\",\"setInputData\",\"setMapper\",\"getProperty\",\"setOpacity\",\"grid_opacity\",\"setVisibility\",\"show_grid\",\"create_axes\",\"canvas\",\"psActor\",\"axesActor\",\"arr\",\"axis\",\"coords\",\"axesPolyData\",\"psMapper\",\"PixelSpaceCallbackMapper\",\"setUseZValues\",\"setCallback\",\"coordsList\",\"camera\",\"aspect\",\"textCtx\",\"getContext\",\"dims\",\"height\",\"clientHeight\",\"devicePixelRatio\",\"width\",\"clientWidth\",\"dataPoints\",\"getInputData\",\"getPoints\",\"viewMatrix\",\"getViewMatrix\",\"mat4\",\"transpose\",\"projMatrix\",\"getProjectionMatrix\",\"clearRect\",\"forEach\",\"xy\",\"idx\",\"pdPoint\",\"getPoint\",\"vc\",\"vec3\",\"fromValues\",\"transformMat4\",\"label\",\"font\",\"textAlign\",\"textBaseline\",\"fillText\",\"fontsize\",\"axesMapper\",\"axes_opacity\",\"__name__\",\"__module__\",\"define\",\"Any\",\"Array\",\"Boolean\",\"Number\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/index.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"gl-matrix/esm/index.js","resolution":"ESM","id":"2f3fd5db07","hash":"2f3fd5db07a7a4d61751561c0fcba157d5e8d93147abfa083176978cf1af208c","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.vec4 = exports.vec3 = exports.vec2 = exports.quat2 = exports.quat = exports.mat4 = exports.mat3 = exports.mat2d = exports.mat2 = exports.glMatrix = void 0;\nconst tslib_1 = require(\"tslib\");\nconst glMatrix = tslib_1.__importStar(require(\"./common.js\"));\nexports.glMatrix = glMatrix;\nconst mat2 = tslib_1.__importStar(require(\"./mat2.js\"));\nexports.mat2 = mat2;\nconst mat2d = tslib_1.__importStar(require(\"./mat2d.js\"));\nexports.mat2d = mat2d;\nconst mat3 = tslib_1.__importStar(require(\"./mat3.js\"));\nexports.mat3 = mat3;\nconst mat4 = tslib_1.__importStar(require(\"./mat4.js\"));\nexports.mat4 = mat4;\nconst quat = tslib_1.__importStar(require(\"./quat.js\"));\nexports.quat = quat;\nconst quat2 = tslib_1.__importStar(require(\"./quat2.js\"));\nexports.quat2 = quat2;\nconst vec2 = tslib_1.__importStar(require(\"./vec2.js\"));\nexports.vec2 = vec2;\nconst vec3 = tslib_1.__importStar(require(\"./vec3.js\"));\nexports.vec3 = vec3;\nconst vec4 = tslib_1.__importStar(require(\"./vec4.js\"));\nexports.vec4 = vec4;\n","type":"js","dependency_paths":[["./common.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/common.js"],["./mat2.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/mat2.js"],["./mat2d.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/mat2d.js"],["./mat3.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/mat3.js"],["./mat4.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/mat4.js"],["./quat.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/quat.js"],["./quat2.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/quat2.js"],["./vec2.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/vec2.js"],["./vec3.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/vec3.js"],["./vec4.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/vec4.js"]],"dependency_map":[],"exported":[],"externals":[],"shims":[]},"code":{"source":"/* gl-matrix/esm/index.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    const glMatrix = tslib_1.__importStar(require(\"68ca94c15c\") /* ./common.js */);\n    exports.glMatrix = glMatrix;\n    const mat2 = tslib_1.__importStar(require(\"7c0b8e6048\") /* ./mat2.js */);\n    exports.mat2 = mat2;\n    const mat2d = tslib_1.__importStar(require(\"dc03f0a621\") /* ./mat2d.js */);\n    exports.mat2d = mat2d;\n    const mat3 = tslib_1.__importStar(require(\"0285c50a7e\") /* ./mat3.js */);\n    exports.mat3 = mat3;\n    const mat4 = tslib_1.__importStar(require(\"a427635f32\") /* ./mat4.js */);\n    exports.mat4 = mat4;\n    const quat = tslib_1.__importStar(require(\"eb06fc032a\") /* ./quat.js */);\n    exports.quat = quat;\n    const quat2 = tslib_1.__importStar(require(\"277615c682\") /* ./quat2.js */);\n    exports.quat2 = quat2;\n    const vec2 = tslib_1.__importStar(require(\"c56d9ff837\") /* ./vec2.js */);\n    exports.vec2 = vec2;\n    const vec3 = tslib_1.__importStar(require(\"2c5eb22089\") /* ./vec3.js */);\n    exports.vec3 = vec3;\n    const vec4 = tslib_1.__importStar(require(\"c1aa33d719\") /* ./vec4.js */);\n    exports.vec4 = vec4;\n}\n","min_source":"function _(t,c,a,o,r){o();const _=t(\"tslib\"),m=_.__importStar(t(\"68ca94c15c\"));a.glMatrix=m;const i=_.__importStar(t(\"7c0b8e6048\"));a.mat2=i;const n=_.__importStar(t(\"dc03f0a621\"));a.mat2d=n;const s=_.__importStar(t(\"0285c50a7e\"));a.mat3=s;const p=_.__importStar(t(\"a427635f32\"));a.mat4=p;const S=_.__importStar(t(\"eb06fc032a\"));a.quat=S;const e=_.__importStar(t(\"277615c682\"));a.quat2=e;const f=_.__importStar(t(\"c56d9ff837\"));a.vec2=f;const b=_.__importStar(t(\"2c5eb22089\"));a.vec3=b;const d=_.__importStar(t(\"c1aa33d719\"));a.vec4=d}\n//# sourceMappingURL=index.min.js.map","min_map":"{\"version\":3,\"file\":\"index.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"tslib_1\",\"glMatrix\",\"__importStar\",\"mat2\",\"mat2d\",\"mat3\",\"mat4\",\"quat\",\"quat2\",\"vec2\",\"vec3\",\"vec4\"],\"sources\":[\"0\"],\"mappings\":\"AAA6B,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAC1ED,IACA,MAAME,EAAUL,EAAQ,SAClBM,EAAWD,EAAQE,aAAaP,EAAQ,eAC9CE,EAAQI,SAAWA,EACnB,MAAME,EAAOH,EAAQE,aAAaP,EAAQ,eAC1CE,EAAQM,KAAOA,EACf,MAAMC,EAAQJ,EAAQE,aAAaP,EAAQ,eAC3CE,EAAQO,MAAQA,EAChB,MAAMC,EAAOL,EAAQE,aAAaP,EAAQ,eAC1CE,EAAQQ,KAAOA,EACf,MAAMC,EAAON,EAAQE,aAAaP,EAAQ,eAC1CE,EAAQS,KAAOA,EACf,MAAMC,EAAOP,EAAQE,aAAaP,EAAQ,eAC1CE,EAAQU,KAAOA,EACf,MAAMC,EAAQR,EAAQE,aAAaP,EAAQ,eAC3CE,EAAQW,MAAQA,EAChB,MAAMC,EAAOT,EAAQE,aAAaP,EAAQ,eAC1CE,EAAQY,KAAOA,EACf,MAAMC,EAAOV,EAAQE,aAAaP,EAAQ,eAC1CE,EAAQa,KAAOA,EACf,MAAMC,EAAOX,EAAQE,aAAaP,EAAQ,eAC1CE,EAAQc,KAAOA,CACnB\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/common.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"gl-matrix/esm/common.js","resolution":"ESM","id":"68ca94c15c","hash":"68ca94c15c9d44a658f554efb680aba2a9da3c043d874cd1bab52aa3874a2647","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.equals = exports.toRadian = exports.setMatrixArrayType = exports.RANDOM = exports.ARRAY_TYPE = exports.EPSILON = void 0;\n/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexports.EPSILON = 0.000001;\nexports.ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexports.RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Type} type Array type, such as Float32Array or Array\n */\nfunction setMatrixArrayType(type) {\n    exports.ARRAY_TYPE = type;\n}\nexports.setMatrixArrayType = setMatrixArrayType;\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\nfunction toRadian(a) {\n    return a * degree;\n}\nexports.toRadian = toRadian;\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\nfunction equals(a, b) {\n    return Math.abs(a - b) <= exports.EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nexports.equals = equals;\nif (!Math.hypot)\n    Math.hypot = function () {\n        var y = 0, i = arguments.length;\n        while (i--) {\n            y += arguments[i] * arguments[i];\n        }\n        return Math.sqrt(y);\n    };\n","type":"js","dependency_paths":[],"dependency_map":[],"exported":[{"type":"named","name":"setMatrixArrayType"},{"type":"named","name":"toRadian"},{"type":"named","name":"equals"}],"externals":[],"shims":[]},"code":{"source":"/* gl-matrix/esm/common.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    /**\n     * Common utilities\n     * @module glMatrix\n     */\n    // Configuration Constants\n    exports.EPSILON = 0.000001;\n    exports.ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\n    exports.RANDOM = Math.random;\n    /**\n     * Sets the type of array used when creating new vectors and matrices\n     *\n     * @param {Type} type Array type, such as Float32Array or Array\n     */\n    function setMatrixArrayType(type) {\n        exports.ARRAY_TYPE = type;\n    }\n    exports.setMatrixArrayType = setMatrixArrayType;\n    var degree = Math.PI / 180;\n    /**\n     * Convert Degree To Radian\n     *\n     * @param {Number} a Angle in Degrees\n     */\n    function toRadian(a) {\n        return a * degree;\n    }\n    exports.toRadian = toRadian;\n    /**\n     * Tests whether or not the arguments have approximately the same value, within an absolute\n     * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n     * than or equal to 1.0, and a relative tolerance is used for larger values)\n     *\n     * @param {Number} a The first number to test.\n     * @param {Number} b The second number to test.\n     * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n     */\n    function equals(a, b) {\n        return Math.abs(a - b) <= exports.EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n    }\n    exports.equals = equals;\n    if (!Math.hypot)\n        Math.hypot = function () {\n            var y = 0, i = arguments.length;\n            while (i--) {\n                y += arguments[i] * arguments[i];\n            }\n            return Math.sqrt(y);\n        };\n}\n","min_source":"function _(t,a,r,n,o){n(),r.EPSILON=1e-6,r.ARRAY_TYPE=\"undefined\"!=typeof Float32Array?Float32Array:Array,r.RANDOM=Math.random,r.setMatrixArrayType=function(t){r.ARRAY_TYPE=t};var h=Math.PI/180;r.toRadian=function(t){return t*h},r.equals=function(t,a){return Math.abs(t-a)<=r.EPSILON*Math.max(1,Math.abs(t),Math.abs(a))},Math.hypot||(Math.hypot=function(){for(var t=0,a=arguments.length;a--;)t+=arguments[a]*arguments[a];return Math.sqrt(t)})}\n//# sourceMappingURL=common.min.js.map","min_map":"{\"version\":3,\"file\":\"common.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"EPSILON\",\"ARRAY_TYPE\",\"Float32Array\",\"Array\",\"RANDOM\",\"Math\",\"random\",\"setMatrixArrayType\",\"type\",\"degree\",\"PI\",\"toRadian\",\"a\",\"equals\",\"b\",\"abs\",\"max\",\"hypot\",\"y\",\"i\",\"arguments\",\"length\",\"sqrt\"],\"sources\":[\"0\"],\"mappings\":\"AAA8B,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAC3ED,IAMAD,EAAQG,QAAU,KAClBH,EAAQI,WAAqC,oBAAjBC,aAA+BA,aAAeC,MAC1EN,EAAQO,OAASC,KAAKC,OAStBT,EAAQU,mBAHR,SAA4BC,GACxBX,EAAQI,WAAaO,CACzB,EAEA,IAAIC,EAASJ,KAAKK,GAAK,IASvBb,EAAQc,SAHR,SAAkBC,GACd,OAAOA,EAAIH,CACf,EAcAZ,EAAQgB,OAHR,SAAgBD,EAAGE,GACf,OAAOT,KAAKU,IAAIH,EAAIE,IAAMjB,EAAQG,QAAUK,KAAKW,IAAI,EAAKX,KAAKU,IAAIH,GAAIP,KAAKU,IAAID,GACpF,EAEKT,KAAKY,QACNZ,KAAKY,MAAQ,WAET,IADA,IAAIC,EAAI,EAAGC,EAAIC,UAAUC,OAClBF,KACHD,GAAKE,UAAUD,GAAKC,UAAUD,GAElC,OAAOd,KAAKiB,KAAKJ,EACrB,EACR\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/mat2.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"gl-matrix/esm/mat2.js","resolution":"ESM","id":"7c0b8e6048","hash":"7c0b8e6048cd255563ccee859a97eb23a504080b77b8c3c9835030a6df0b38f2","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sub = exports.mul = exports.multiplyScalarAndAdd = exports.multiplyScalar = exports.equals = exports.exactEquals = exports.subtract = exports.add = exports.LDU = exports.frob = exports.str = exports.fromScaling = exports.fromRotation = exports.scale = exports.rotate = exports.multiply = exports.determinant = exports.adjoint = exports.invert = exports.transpose = exports.set = exports.fromValues = exports.identity = exports.copy = exports.clone = exports.create = void 0;\nconst tslib_1 = require(\"tslib\");\nconst glMatrix = tslib_1.__importStar(require(\"./common.js\"));\n/**\n * 2x2 Matrix\n * @module mat2\n */\n/**\n * Creates a new identity mat2\n *\n * @returns {mat2} a new 2x2 matrix\n */\nfunction create() {\n    var out = new glMatrix.ARRAY_TYPE(4);\n    if (glMatrix.ARRAY_TYPE != Float32Array) {\n        out[1] = 0;\n        out[2] = 0;\n    }\n    out[0] = 1;\n    out[3] = 1;\n    return out;\n}\nexports.create = create;\n/**\n * Creates a new mat2 initialized with values from an existing matrix\n *\n * @param {mat2} a matrix to clone\n * @returns {mat2} a new 2x2 matrix\n */\nfunction clone(a) {\n    var out = new glMatrix.ARRAY_TYPE(4);\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    return out;\n}\nexports.clone = clone;\n/**\n * Copy the values from one mat2 to another\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the source matrix\n * @returns {mat2} out\n */\nfunction copy(out, a) {\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    return out;\n}\nexports.copy = copy;\n/**\n * Set a mat2 to the identity matrix\n *\n * @param {mat2} out the receiving matrix\n * @returns {mat2} out\n */\nfunction identity(out) {\n    out[0] = 1;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 1;\n    return out;\n}\nexports.identity = identity;\n/**\n * Create a new mat2 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\n * @returns {mat2} out A new 2x2 matrix\n */\nfunction fromValues(m00, m01, m10, m11) {\n    var out = new glMatrix.ARRAY_TYPE(4);\n    out[0] = m00;\n    out[1] = m01;\n    out[2] = m10;\n    out[3] = m11;\n    return out;\n}\nexports.fromValues = fromValues;\n/**\n * Set the components of a mat2 to the given values\n *\n * @param {mat2} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m10 Component in column 1, row 0 position (index 2)\n * @param {Number} m11 Component in column 1, row 1 position (index 3)\n * @returns {mat2} out\n */\nfunction set(out, m00, m01, m10, m11) {\n    out[0] = m00;\n    out[1] = m01;\n    out[2] = m10;\n    out[3] = m11;\n    return out;\n}\nexports.set = set;\n/**\n * Transpose the values of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the source matrix\n * @returns {mat2} out\n */\nfunction transpose(out, a) {\n    // If we are transposing ourselves we can skip a few steps but have to cache\n    // some values\n    if (out === a) {\n        var a1 = a[1];\n        out[1] = a[2];\n        out[2] = a1;\n    }\n    else {\n        out[0] = a[0];\n        out[1] = a[2];\n        out[2] = a[1];\n        out[3] = a[3];\n    }\n    return out;\n}\nexports.transpose = transpose;\n/**\n * Inverts a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the source matrix\n * @returns {mat2} out\n */\nfunction invert(out, a) {\n    var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; // Calculate the determinant\n    var det = a0 * a3 - a2 * a1;\n    if (!det) {\n        return null;\n    }\n    det = 1.0 / det;\n    out[0] = a3 * det;\n    out[1] = -a1 * det;\n    out[2] = -a2 * det;\n    out[3] = a0 * det;\n    return out;\n}\nexports.invert = invert;\n/**\n * Calculates the adjugate of a mat2\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the source matrix\n * @returns {mat2} out\n */\nfunction adjoint(out, a) {\n    // Caching this value is nessecary if out == a\n    var a0 = a[0];\n    out[0] = a[3];\n    out[1] = -a[1];\n    out[2] = -a[2];\n    out[3] = a0;\n    return out;\n}\nexports.adjoint = adjoint;\n/**\n * Calculates the determinant of a mat2\n *\n * @param {mat2} a the source matrix\n * @returns {Number} determinant of a\n */\nfunction determinant(a) {\n    return a[0] * a[3] - a[2] * a[1];\n}\nexports.determinant = determinant;\n/**\n * Multiplies two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the first operand\n * @param {mat2} b the second operand\n * @returns {mat2} out\n */\nfunction multiply(out, a, b) {\n    var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n    var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n    out[0] = a0 * b0 + a2 * b1;\n    out[1] = a1 * b0 + a3 * b1;\n    out[2] = a0 * b2 + a2 * b3;\n    out[3] = a1 * b2 + a3 * b3;\n    return out;\n}\nexports.multiply = multiply;\n/**\n * Rotates a mat2 by the given angle\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\nfunction rotate(out, a, rad) {\n    var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n    var s = Math.sin(rad);\n    var c = Math.cos(rad);\n    out[0] = a0 * c + a2 * s;\n    out[1] = a1 * c + a3 * s;\n    out[2] = a0 * -s + a2 * c;\n    out[3] = a1 * -s + a3 * c;\n    return out;\n}\nexports.rotate = rotate;\n/**\n * Scales the mat2 by the dimensions in the given vec2\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the matrix to rotate\n * @param {vec2} v the vec2 to scale the matrix by\n * @returns {mat2} out\n **/\nfunction scale(out, a, v) {\n    var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n    var v0 = v[0], v1 = v[1];\n    out[0] = a0 * v0;\n    out[1] = a1 * v0;\n    out[2] = a2 * v1;\n    out[3] = a3 * v1;\n    return out;\n}\nexports.scale = scale;\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n *     mat2.identity(dest);\n *     mat2.rotate(dest, dest, rad);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2} out\n */\nfunction fromRotation(out, rad) {\n    var s = Math.sin(rad);\n    var c = Math.cos(rad);\n    out[0] = c;\n    out[1] = s;\n    out[2] = -s;\n    out[3] = c;\n    return out;\n}\nexports.fromRotation = fromRotation;\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n *     mat2.identity(dest);\n *     mat2.scale(dest, dest, vec);\n *\n * @param {mat2} out mat2 receiving operation result\n * @param {vec2} v Scaling vector\n * @returns {mat2} out\n */\nfunction fromScaling(out, v) {\n    out[0] = v[0];\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = v[1];\n    return out;\n}\nexports.fromScaling = fromScaling;\n/**\n * Returns a string representation of a mat2\n *\n * @param {mat2} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\nfunction str(a) {\n    return \"mat2(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\nexports.str = str;\n/**\n * Returns Frobenius norm of a mat2\n *\n * @param {mat2} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\nfunction frob(a) {\n    return Math.hypot(a[0], a[1], a[2], a[3]);\n}\nexports.frob = frob;\n/**\n * Returns L, D and U matrices (Lower triangular, Diagonal and Upper triangular) by factorizing the input matrix\n * @param {mat2} L the lower triangular matrix\n * @param {mat2} D the diagonal matrix\n * @param {mat2} U the upper triangular matrix\n * @param {mat2} a the input matrix to factorize\n */\nfunction LDU(L, D, U, a) {\n    L[2] = a[2] / a[0];\n    U[0] = a[0];\n    U[1] = a[1];\n    U[3] = a[3] - L[2] * U[1];\n    return [L, D, U];\n}\nexports.LDU = LDU;\n/**\n * Adds two mat2's\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the first operand\n * @param {mat2} b the second operand\n * @returns {mat2} out\n */\nfunction add(out, a, b) {\n    out[0] = a[0] + b[0];\n    out[1] = a[1] + b[1];\n    out[2] = a[2] + b[2];\n    out[3] = a[3] + b[3];\n    return out;\n}\nexports.add = add;\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the first operand\n * @param {mat2} b the second operand\n * @returns {mat2} out\n */\nfunction subtract(out, a, b) {\n    out[0] = a[0] - b[0];\n    out[1] = a[1] - b[1];\n    out[2] = a[2] - b[2];\n    out[3] = a[3] - b[3];\n    return out;\n}\nexports.subtract = subtract;\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {mat2} a The first matrix.\n * @param {mat2} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\nfunction exactEquals(a, b) {\n    return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\nexports.exactEquals = exactEquals;\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {mat2} a The first matrix.\n * @param {mat2} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\nfunction equals(a, b) {\n    var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n    var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n    return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\nexports.equals = equals;\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat2} out the receiving matrix\n * @param {mat2} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat2} out\n */\nfunction multiplyScalar(out, a, b) {\n    out[0] = a[0] * b;\n    out[1] = a[1] * b;\n    out[2] = a[2] * b;\n    out[3] = a[3] * b;\n    return out;\n}\nexports.multiplyScalar = multiplyScalar;\n/**\n * Adds two mat2's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat2} out the receiving vector\n * @param {mat2} a the first operand\n * @param {mat2} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat2} out\n */\nfunction multiplyScalarAndAdd(out, a, b, scale) {\n    out[0] = a[0] + b[0] * scale;\n    out[1] = a[1] + b[1] * scale;\n    out[2] = a[2] + b[2] * scale;\n    out[3] = a[3] + b[3] * scale;\n    return out;\n}\nexports.multiplyScalarAndAdd = multiplyScalarAndAdd;\n/**\n * Alias for {@link mat2.multiply}\n * @function\n */\nexports.mul = multiply;\n/**\n * Alias for {@link mat2.subtract}\n * @function\n */\nexports.sub = subtract;\n","type":"js","dependency_paths":[["./common.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/common.js"]],"dependency_map":[],"exported":[{"type":"named","name":"create"},{"type":"named","name":"clone"},{"type":"named","name":"copy"},{"type":"named","name":"identity"},{"type":"named","name":"fromValues"},{"type":"named","name":"set"},{"type":"named","name":"transpose"},{"type":"named","name":"invert"},{"type":"named","name":"adjoint"},{"type":"named","name":"determinant"},{"type":"named","name":"multiply"},{"type":"named","name":"rotate"},{"type":"named","name":"scale"},{"type":"named","name":"fromRotation"},{"type":"named","name":"fromScaling"},{"type":"named","name":"str"},{"type":"named","name":"frob"},{"type":"named","name":"LDU"},{"type":"named","name":"add"},{"type":"named","name":"subtract"},{"type":"named","name":"exactEquals"},{"type":"named","name":"equals"},{"type":"named","name":"multiplyScalar"},{"type":"named","name":"multiplyScalarAndAdd"}],"externals":[],"shims":[]},"code":{"source":"/* gl-matrix/esm/mat2.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    const glMatrix = tslib_1.__importStar(require(\"68ca94c15c\") /* ./common.js */);\n    /**\n     * 2x2 Matrix\n     * @module mat2\n     */\n    /**\n     * Creates a new identity mat2\n     *\n     * @returns {mat2} a new 2x2 matrix\n     */\n    function create() {\n        var out = new glMatrix.ARRAY_TYPE(4);\n        if (glMatrix.ARRAY_TYPE != Float32Array) {\n            out[1] = 0;\n            out[2] = 0;\n        }\n        out[0] = 1;\n        out[3] = 1;\n        return out;\n    }\n    exports.create = create;\n    /**\n     * Creates a new mat2 initialized with values from an existing matrix\n     *\n     * @param {mat2} a matrix to clone\n     * @returns {mat2} a new 2x2 matrix\n     */\n    function clone(a) {\n        var out = new glMatrix.ARRAY_TYPE(4);\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = a[2];\n        out[3] = a[3];\n        return out;\n    }\n    exports.clone = clone;\n    /**\n     * Copy the values from one mat2 to another\n     *\n     * @param {mat2} out the receiving matrix\n     * @param {mat2} a the source matrix\n     * @returns {mat2} out\n     */\n    function copy(out, a) {\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = a[2];\n        out[3] = a[3];\n        return out;\n    }\n    exports.copy = copy;\n    /**\n     * Set a mat2 to the identity matrix\n     *\n     * @param {mat2} out the receiving matrix\n     * @returns {mat2} out\n     */\n    function identity(out) {\n        out[0] = 1;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 1;\n        return out;\n    }\n    exports.identity = identity;\n    /**\n     * Create a new mat2 with the given values\n     *\n     * @param {Number} m00 Component in column 0, row 0 position (index 0)\n     * @param {Number} m01 Component in column 0, row 1 position (index 1)\n     * @param {Number} m10 Component in column 1, row 0 position (index 2)\n     * @param {Number} m11 Component in column 1, row 1 position (index 3)\n     * @returns {mat2} out A new 2x2 matrix\n     */\n    function fromValues(m00, m01, m10, m11) {\n        var out = new glMatrix.ARRAY_TYPE(4);\n        out[0] = m00;\n        out[1] = m01;\n        out[2] = m10;\n        out[3] = m11;\n        return out;\n    }\n    exports.fromValues = fromValues;\n    /**\n     * Set the components of a mat2 to the given values\n     *\n     * @param {mat2} out the receiving matrix\n     * @param {Number} m00 Component in column 0, row 0 position (index 0)\n     * @param {Number} m01 Component in column 0, row 1 position (index 1)\n     * @param {Number} m10 Component in column 1, row 0 position (index 2)\n     * @param {Number} m11 Component in column 1, row 1 position (index 3)\n     * @returns {mat2} out\n     */\n    function set(out, m00, m01, m10, m11) {\n        out[0] = m00;\n        out[1] = m01;\n        out[2] = m10;\n        out[3] = m11;\n        return out;\n    }\n    exports.set = set;\n    /**\n     * Transpose the values of a mat2\n     *\n     * @param {mat2} out the receiving matrix\n     * @param {mat2} a the source matrix\n     * @returns {mat2} out\n     */\n    function transpose(out, a) {\n        // If we are transposing ourselves we can skip a few steps but have to cache\n        // some values\n        if (out === a) {\n            var a1 = a[1];\n            out[1] = a[2];\n            out[2] = a1;\n        }\n        else {\n            out[0] = a[0];\n            out[1] = a[2];\n            out[2] = a[1];\n            out[3] = a[3];\n        }\n        return out;\n    }\n    exports.transpose = transpose;\n    /**\n     * Inverts a mat2\n     *\n     * @param {mat2} out the receiving matrix\n     * @param {mat2} a the source matrix\n     * @returns {mat2} out\n     */\n    function invert(out, a) {\n        var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3]; // Calculate the determinant\n        var det = a0 * a3 - a2 * a1;\n        if (!det) {\n            return null;\n        }\n        det = 1.0 / det;\n        out[0] = a3 * det;\n        out[1] = -a1 * det;\n        out[2] = -a2 * det;\n        out[3] = a0 * det;\n        return out;\n    }\n    exports.invert = invert;\n    /**\n     * Calculates the adjugate of a mat2\n     *\n     * @param {mat2} out the receiving matrix\n     * @param {mat2} a the source matrix\n     * @returns {mat2} out\n     */\n    function adjoint(out, a) {\n        // Caching this value is nessecary if out == a\n        var a0 = a[0];\n        out[0] = a[3];\n        out[1] = -a[1];\n        out[2] = -a[2];\n        out[3] = a0;\n        return out;\n    }\n    exports.adjoint = adjoint;\n    /**\n     * Calculates the determinant of a mat2\n     *\n     * @param {mat2} a the source matrix\n     * @returns {Number} determinant of a\n     */\n    function determinant(a) {\n        return a[0] * a[3] - a[2] * a[1];\n    }\n    exports.determinant = determinant;\n    /**\n     * Multiplies two mat2's\n     *\n     * @param {mat2} out the receiving matrix\n     * @param {mat2} a the first operand\n     * @param {mat2} b the second operand\n     * @returns {mat2} out\n     */\n    function multiply(out, a, b) {\n        var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n        var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n        out[0] = a0 * b0 + a2 * b1;\n        out[1] = a1 * b0 + a3 * b1;\n        out[2] = a0 * b2 + a2 * b3;\n        out[3] = a1 * b2 + a3 * b3;\n        return out;\n    }\n    exports.multiply = multiply;\n    /**\n     * Rotates a mat2 by the given angle\n     *\n     * @param {mat2} out the receiving matrix\n     * @param {mat2} a the matrix to rotate\n     * @param {Number} rad the angle to rotate the matrix by\n     * @returns {mat2} out\n     */\n    function rotate(out, a, rad) {\n        var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n        var s = Math.sin(rad);\n        var c = Math.cos(rad);\n        out[0] = a0 * c + a2 * s;\n        out[1] = a1 * c + a3 * s;\n        out[2] = a0 * -s + a2 * c;\n        out[3] = a1 * -s + a3 * c;\n        return out;\n    }\n    exports.rotate = rotate;\n    /**\n     * Scales the mat2 by the dimensions in the given vec2\n     *\n     * @param {mat2} out the receiving matrix\n     * @param {mat2} a the matrix to rotate\n     * @param {vec2} v the vec2 to scale the matrix by\n     * @returns {mat2} out\n     **/\n    function scale(out, a, v) {\n        var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n        var v0 = v[0], v1 = v[1];\n        out[0] = a0 * v0;\n        out[1] = a1 * v0;\n        out[2] = a2 * v1;\n        out[3] = a3 * v1;\n        return out;\n    }\n    exports.scale = scale;\n    /**\n     * Creates a matrix from a given angle\n     * This is equivalent to (but much faster than):\n     *\n     *     mat2.identity(dest);\n     *     mat2.rotate(dest, dest, rad);\n     *\n     * @param {mat2} out mat2 receiving operation result\n     * @param {Number} rad the angle to rotate the matrix by\n     * @returns {mat2} out\n     */\n    function fromRotation(out, rad) {\n        var s = Math.sin(rad);\n        var c = Math.cos(rad);\n        out[0] = c;\n        out[1] = s;\n        out[2] = -s;\n        out[3] = c;\n        return out;\n    }\n    exports.fromRotation = fromRotation;\n    /**\n     * Creates a matrix from a vector scaling\n     * This is equivalent to (but much faster than):\n     *\n     *     mat2.identity(dest);\n     *     mat2.scale(dest, dest, vec);\n     *\n     * @param {mat2} out mat2 receiving operation result\n     * @param {vec2} v Scaling vector\n     * @returns {mat2} out\n     */\n    function fromScaling(out, v) {\n        out[0] = v[0];\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = v[1];\n        return out;\n    }\n    exports.fromScaling = fromScaling;\n    /**\n     * Returns a string representation of a mat2\n     *\n     * @param {mat2} a matrix to represent as a string\n     * @returns {String} string representation of the matrix\n     */\n    function str(a) {\n        return \"mat2(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n    }\n    exports.str = str;\n    /**\n     * Returns Frobenius norm of a mat2\n     *\n     * @param {mat2} a the matrix to calculate Frobenius norm of\n     * @returns {Number} Frobenius norm\n     */\n    function frob(a) {\n        return Math.hypot(a[0], a[1], a[2], a[3]);\n    }\n    exports.frob = frob;\n    /**\n     * Returns L, D and U matrices (Lower triangular, Diagonal and Upper triangular) by factorizing the input matrix\n     * @param {mat2} L the lower triangular matrix\n     * @param {mat2} D the diagonal matrix\n     * @param {mat2} U the upper triangular matrix\n     * @param {mat2} a the input matrix to factorize\n     */\n    function LDU(L, D, U, a) {\n        L[2] = a[2] / a[0];\n        U[0] = a[0];\n        U[1] = a[1];\n        U[3] = a[3] - L[2] * U[1];\n        return [L, D, U];\n    }\n    exports.LDU = LDU;\n    /**\n     * Adds two mat2's\n     *\n     * @param {mat2} out the receiving matrix\n     * @param {mat2} a the first operand\n     * @param {mat2} b the second operand\n     * @returns {mat2} out\n     */\n    function add(out, a, b) {\n        out[0] = a[0] + b[0];\n        out[1] = a[1] + b[1];\n        out[2] = a[2] + b[2];\n        out[3] = a[3] + b[3];\n        return out;\n    }\n    exports.add = add;\n    /**\n     * Subtracts matrix b from matrix a\n     *\n     * @param {mat2} out the receiving matrix\n     * @param {mat2} a the first operand\n     * @param {mat2} b the second operand\n     * @returns {mat2} out\n     */\n    function subtract(out, a, b) {\n        out[0] = a[0] - b[0];\n        out[1] = a[1] - b[1];\n        out[2] = a[2] - b[2];\n        out[3] = a[3] - b[3];\n        return out;\n    }\n    exports.subtract = subtract;\n    /**\n     * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n     *\n     * @param {mat2} a The first matrix.\n     * @param {mat2} b The second matrix.\n     * @returns {Boolean} True if the matrices are equal, false otherwise.\n     */\n    function exactEquals(a, b) {\n        return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n    }\n    exports.exactEquals = exactEquals;\n    /**\n     * Returns whether or not the matrices have approximately the same elements in the same position.\n     *\n     * @param {mat2} a The first matrix.\n     * @param {mat2} b The second matrix.\n     * @returns {Boolean} True if the matrices are equal, false otherwise.\n     */\n    function equals(a, b) {\n        var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n        var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n        return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n    }\n    exports.equals = equals;\n    /**\n     * Multiply each element of the matrix by a scalar.\n     *\n     * @param {mat2} out the receiving matrix\n     * @param {mat2} a the matrix to scale\n     * @param {Number} b amount to scale the matrix's elements by\n     * @returns {mat2} out\n     */\n    function multiplyScalar(out, a, b) {\n        out[0] = a[0] * b;\n        out[1] = a[1] * b;\n        out[2] = a[2] * b;\n        out[3] = a[3] * b;\n        return out;\n    }\n    exports.multiplyScalar = multiplyScalar;\n    /**\n     * Adds two mat2's after multiplying each element of the second operand by a scalar value.\n     *\n     * @param {mat2} out the receiving vector\n     * @param {mat2} a the first operand\n     * @param {mat2} b the second operand\n     * @param {Number} scale the amount to scale b's elements by before adding\n     * @returns {mat2} out\n     */\n    function multiplyScalarAndAdd(out, a, b, scale) {\n        out[0] = a[0] + b[0] * scale;\n        out[1] = a[1] + b[1] * scale;\n        out[2] = a[2] + b[2] * scale;\n        out[3] = a[3] + b[3] * scale;\n        return out;\n    }\n    exports.multiplyScalarAndAdd = multiplyScalarAndAdd;\n    /**\n     * Alias for {@link mat2.multiply}\n     * @function\n     */\n    exports.mul = multiply;\n    /**\n     * Alias for {@link mat2.subtract}\n     * @function\n     */\n    exports.sub = subtract;\n}\n","min_source":"function _(t,n,r,a,u){a();const e=t(\"tslib\").__importStar(t(\"68ca94c15c\"));function o(t,n,r){var a=n[0],u=n[1],e=n[2],o=n[3],c=r[0],i=r[1],f=r[2],s=r[3];return t[0]=a*c+e*i,t[1]=u*c+o*i,t[2]=a*f+e*s,t[3]=u*f+o*s,t}function c(t,n,r){return t[0]=n[0]-r[0],t[1]=n[1]-r[1],t[2]=n[2]-r[2],t[3]=n[3]-r[3],t}r.create=function(){var t=new e.ARRAY_TYPE(4);return e.ARRAY_TYPE!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t},r.clone=function(t){var n=new e.ARRAY_TYPE(4);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n},r.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t},r.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},r.fromValues=function(t,n,r,a){var u=new e.ARRAY_TYPE(4);return u[0]=t,u[1]=n,u[2]=r,u[3]=a,u},r.set=function(t,n,r,a,u){return t[0]=n,t[1]=r,t[2]=a,t[3]=u,t},r.transpose=function(t,n){if(t===n){var r=n[1];t[1]=n[2],t[2]=r}else t[0]=n[0],t[1]=n[2],t[2]=n[1],t[3]=n[3];return t},r.invert=function(t,n){var r=n[0],a=n[1],u=n[2],e=n[3],o=r*e-u*a;return o?(o=1/o,t[0]=e*o,t[1]=-a*o,t[2]=-u*o,t[3]=r*o,t):null},r.adjoint=function(t,n){var r=n[0];return t[0]=n[3],t[1]=-n[1],t[2]=-n[2],t[3]=r,t},r.determinant=function(t){return t[0]*t[3]-t[2]*t[1]},r.multiply=o,r.rotate=function(t,n,r){var a=n[0],u=n[1],e=n[2],o=n[3],c=Math.sin(r),i=Math.cos(r);return t[0]=a*i+e*c,t[1]=u*i+o*c,t[2]=a*-c+e*i,t[3]=u*-c+o*i,t},r.scale=function(t,n,r){var a=n[0],u=n[1],e=n[2],o=n[3],c=r[0],i=r[1];return t[0]=a*c,t[1]=u*c,t[2]=e*i,t[3]=o*i,t},r.fromRotation=function(t,n){var r=Math.sin(n),a=Math.cos(n);return t[0]=a,t[1]=r,t[2]=-r,t[3]=a,t},r.fromScaling=function(t,n){return t[0]=n[0],t[1]=0,t[2]=0,t[3]=n[1],t},r.str=function(t){return\"mat2(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\")\"},r.frob=function(t){return Math.hypot(t[0],t[1],t[2],t[3])},r.LDU=function(t,n,r,a){return t[2]=a[2]/a[0],r[0]=a[0],r[1]=a[1],r[3]=a[3]-t[2]*r[1],[t,n,r]},r.add=function(t,n,r){return t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t[3]=n[3]+r[3],t},r.subtract=c,r.exactEquals=function(t,n){return t[0]===n[0]&&t[1]===n[1]&&t[2]===n[2]&&t[3]===n[3]},r.equals=function(t,n){var r=t[0],a=t[1],u=t[2],o=t[3],c=n[0],i=n[1],f=n[2],s=n[3];return Math.abs(r-c)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(c))&&Math.abs(a-i)<=e.EPSILON*Math.max(1,Math.abs(a),Math.abs(i))&&Math.abs(u-f)<=e.EPSILON*Math.max(1,Math.abs(u),Math.abs(f))&&Math.abs(o-s)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(s))},r.multiplyScalar=function(t,n,r){return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t[3]=n[3]*r,t},r.multiplyScalarAndAdd=function(t,n,r,a){return t[0]=n[0]+r[0]*a,t[1]=n[1]+r[1]*a,t[2]=n[2]+r[2]*a,t[3]=n[3]+r[3]*a,t},r.mul=o,r.sub=c}\n//# sourceMappingURL=mat2.min.js.map","min_map":"{\"version\":3,\"file\":\"mat2.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"glMatrix\",\"__importStar\",\"multiply\",\"out\",\"a\",\"b\",\"a0\",\"a1\",\"a2\",\"a3\",\"b0\",\"b1\",\"b2\",\"b3\",\"subtract\",\"create\",\"ARRAY_TYPE\",\"Float32Array\",\"clone\",\"copy\",\"identity\",\"fromValues\",\"m00\",\"m01\",\"m10\",\"m11\",\"set\",\"transpose\",\"invert\",\"det\",\"adjoint\",\"determinant\",\"rotate\",\"rad\",\"s\",\"Math\",\"sin\",\"c\",\"cos\",\"scale\",\"v\",\"v0\",\"v1\",\"fromRotation\",\"fromScaling\",\"str\",\"frob\",\"hypot\",\"LDU\",\"L\",\"D\",\"U\",\"add\",\"exactEquals\",\"equals\",\"abs\",\"EPSILON\",\"max\",\"multiplyScalar\",\"multiplyScalarAndAdd\",\"mul\",\"sub\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/mat2d.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"gl-matrix/esm/mat2d.js","resolution":"ESM","id":"dc03f0a621","hash":"dc03f0a621b362b35b57b3f4239478ce31f7b2b7c54c4e5e99774cb59e7b5007","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sub = exports.mul = exports.equals = exports.exactEquals = exports.multiplyScalarAndAdd = exports.multiplyScalar = exports.subtract = exports.add = exports.frob = exports.str = exports.fromTranslation = exports.fromScaling = exports.fromRotation = exports.translate = exports.scale = exports.rotate = exports.multiply = exports.determinant = exports.invert = exports.set = exports.fromValues = exports.identity = exports.copy = exports.clone = exports.create = void 0;\nconst tslib_1 = require(\"tslib\");\nconst glMatrix = tslib_1.__importStar(require(\"./common.js\"));\n/**\n * 2x3 Matrix\n * @module mat2d\n * @description\n * A mat2d contains six elements defined as:\n * <pre>\n * [a, b,\n *  c, d,\n *  tx, ty]\n * </pre>\n * This is a short form for the 3x3 matrix:\n * <pre>\n * [a, b, 0,\n *  c, d, 0,\n *  tx, ty, 1]\n * </pre>\n * The last column is ignored so the array is shorter and operations are faster.\n */\n/**\n * Creates a new identity mat2d\n *\n * @returns {mat2d} a new 2x3 matrix\n */\nfunction create() {\n    var out = new glMatrix.ARRAY_TYPE(6);\n    if (glMatrix.ARRAY_TYPE != Float32Array) {\n        out[1] = 0;\n        out[2] = 0;\n        out[4] = 0;\n        out[5] = 0;\n    }\n    out[0] = 1;\n    out[3] = 1;\n    return out;\n}\nexports.create = create;\n/**\n * Creates a new mat2d initialized with values from an existing matrix\n *\n * @param {mat2d} a matrix to clone\n * @returns {mat2d} a new 2x3 matrix\n */\nfunction clone(a) {\n    var out = new glMatrix.ARRAY_TYPE(6);\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[4] = a[4];\n    out[5] = a[5];\n    return out;\n}\nexports.clone = clone;\n/**\n * Copy the values from one mat2d to another\n *\n * @param {mat2d} out the receiving matrix\n * @param {mat2d} a the source matrix\n * @returns {mat2d} out\n */\nfunction copy(out, a) {\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[4] = a[4];\n    out[5] = a[5];\n    return out;\n}\nexports.copy = copy;\n/**\n * Set a mat2d to the identity matrix\n *\n * @param {mat2d} out the receiving matrix\n * @returns {mat2d} out\n */\nfunction identity(out) {\n    out[0] = 1;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 1;\n    out[4] = 0;\n    out[5] = 0;\n    return out;\n}\nexports.identity = identity;\n/**\n * Create a new mat2d with the given values\n *\n * @param {Number} a Component A (index 0)\n * @param {Number} b Component B (index 1)\n * @param {Number} c Component C (index 2)\n * @param {Number} d Component D (index 3)\n * @param {Number} tx Component TX (index 4)\n * @param {Number} ty Component TY (index 5)\n * @returns {mat2d} A new mat2d\n */\nfunction fromValues(a, b, c, d, tx, ty) {\n    var out = new glMatrix.ARRAY_TYPE(6);\n    out[0] = a;\n    out[1] = b;\n    out[2] = c;\n    out[3] = d;\n    out[4] = tx;\n    out[5] = ty;\n    return out;\n}\nexports.fromValues = fromValues;\n/**\n * Set the components of a mat2d to the given values\n *\n * @param {mat2d} out the receiving matrix\n * @param {Number} a Component A (index 0)\n * @param {Number} b Component B (index 1)\n * @param {Number} c Component C (index 2)\n * @param {Number} d Component D (index 3)\n * @param {Number} tx Component TX (index 4)\n * @param {Number} ty Component TY (index 5)\n * @returns {mat2d} out\n */\nfunction set(out, a, b, c, d, tx, ty) {\n    out[0] = a;\n    out[1] = b;\n    out[2] = c;\n    out[3] = d;\n    out[4] = tx;\n    out[5] = ty;\n    return out;\n}\nexports.set = set;\n/**\n * Inverts a mat2d\n *\n * @param {mat2d} out the receiving matrix\n * @param {mat2d} a the source matrix\n * @returns {mat2d} out\n */\nfunction invert(out, a) {\n    var aa = a[0], ab = a[1], ac = a[2], ad = a[3];\n    var atx = a[4], aty = a[5];\n    var det = aa * ad - ab * ac;\n    if (!det) {\n        return null;\n    }\n    det = 1.0 / det;\n    out[0] = ad * det;\n    out[1] = -ab * det;\n    out[2] = -ac * det;\n    out[3] = aa * det;\n    out[4] = (ac * aty - ad * atx) * det;\n    out[5] = (ab * atx - aa * aty) * det;\n    return out;\n}\nexports.invert = invert;\n/**\n * Calculates the determinant of a mat2d\n *\n * @param {mat2d} a the source matrix\n * @returns {Number} determinant of a\n */\nfunction determinant(a) {\n    return a[0] * a[3] - a[1] * a[2];\n}\nexports.determinant = determinant;\n/**\n * Multiplies two mat2d's\n *\n * @param {mat2d} out the receiving matrix\n * @param {mat2d} a the first operand\n * @param {mat2d} b the second operand\n * @returns {mat2d} out\n */\nfunction multiply(out, a, b) {\n    var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5];\n    var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5];\n    out[0] = a0 * b0 + a2 * b1;\n    out[1] = a1 * b0 + a3 * b1;\n    out[2] = a0 * b2 + a2 * b3;\n    out[3] = a1 * b2 + a3 * b3;\n    out[4] = a0 * b4 + a2 * b5 + a4;\n    out[5] = a1 * b4 + a3 * b5 + a5;\n    return out;\n}\nexports.multiply = multiply;\n/**\n * Rotates a mat2d by the given angle\n *\n * @param {mat2d} out the receiving matrix\n * @param {mat2d} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2d} out\n */\nfunction rotate(out, a, rad) {\n    var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5];\n    var s = Math.sin(rad);\n    var c = Math.cos(rad);\n    out[0] = a0 * c + a2 * s;\n    out[1] = a1 * c + a3 * s;\n    out[2] = a0 * -s + a2 * c;\n    out[3] = a1 * -s + a3 * c;\n    out[4] = a4;\n    out[5] = a5;\n    return out;\n}\nexports.rotate = rotate;\n/**\n * Scales the mat2d by the dimensions in the given vec2\n *\n * @param {mat2d} out the receiving matrix\n * @param {mat2d} a the matrix to translate\n * @param {vec2} v the vec2 to scale the matrix by\n * @returns {mat2d} out\n **/\nfunction scale(out, a, v) {\n    var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5];\n    var v0 = v[0], v1 = v[1];\n    out[0] = a0 * v0;\n    out[1] = a1 * v0;\n    out[2] = a2 * v1;\n    out[3] = a3 * v1;\n    out[4] = a4;\n    out[5] = a5;\n    return out;\n}\nexports.scale = scale;\n/**\n * Translates the mat2d by the dimensions in the given vec2\n *\n * @param {mat2d} out the receiving matrix\n * @param {mat2d} a the matrix to translate\n * @param {vec2} v the vec2 to translate the matrix by\n * @returns {mat2d} out\n **/\nfunction translate(out, a, v) {\n    var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5];\n    var v0 = v[0], v1 = v[1];\n    out[0] = a0;\n    out[1] = a1;\n    out[2] = a2;\n    out[3] = a3;\n    out[4] = a0 * v0 + a2 * v1 + a4;\n    out[5] = a1 * v0 + a3 * v1 + a5;\n    return out;\n}\nexports.translate = translate;\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n *     mat2d.identity(dest);\n *     mat2d.rotate(dest, dest, rad);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat2d} out\n */\nfunction fromRotation(out, rad) {\n    var s = Math.sin(rad), c = Math.cos(rad);\n    out[0] = c;\n    out[1] = s;\n    out[2] = -s;\n    out[3] = c;\n    out[4] = 0;\n    out[5] = 0;\n    return out;\n}\nexports.fromRotation = fromRotation;\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n *     mat2d.identity(dest);\n *     mat2d.scale(dest, dest, vec);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {vec2} v Scaling vector\n * @returns {mat2d} out\n */\nfunction fromScaling(out, v) {\n    out[0] = v[0];\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = v[1];\n    out[4] = 0;\n    out[5] = 0;\n    return out;\n}\nexports.fromScaling = fromScaling;\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat2d.identity(dest);\n *     mat2d.translate(dest, dest, vec);\n *\n * @param {mat2d} out mat2d receiving operation result\n * @param {vec2} v Translation vector\n * @returns {mat2d} out\n */\nfunction fromTranslation(out, v) {\n    out[0] = 1;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 1;\n    out[4] = v[0];\n    out[5] = v[1];\n    return out;\n}\nexports.fromTranslation = fromTranslation;\n/**\n * Returns a string representation of a mat2d\n *\n * @param {mat2d} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\nfunction str(a) {\n    return \"mat2d(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \")\";\n}\nexports.str = str;\n/**\n * Returns Frobenius norm of a mat2d\n *\n * @param {mat2d} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\nfunction frob(a) {\n    return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], 1);\n}\nexports.frob = frob;\n/**\n * Adds two mat2d's\n *\n * @param {mat2d} out the receiving matrix\n * @param {mat2d} a the first operand\n * @param {mat2d} b the second operand\n * @returns {mat2d} out\n */\nfunction add(out, a, b) {\n    out[0] = a[0] + b[0];\n    out[1] = a[1] + b[1];\n    out[2] = a[2] + b[2];\n    out[3] = a[3] + b[3];\n    out[4] = a[4] + b[4];\n    out[5] = a[5] + b[5];\n    return out;\n}\nexports.add = add;\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat2d} out the receiving matrix\n * @param {mat2d} a the first operand\n * @param {mat2d} b the second operand\n * @returns {mat2d} out\n */\nfunction subtract(out, a, b) {\n    out[0] = a[0] - b[0];\n    out[1] = a[1] - b[1];\n    out[2] = a[2] - b[2];\n    out[3] = a[3] - b[3];\n    out[4] = a[4] - b[4];\n    out[5] = a[5] - b[5];\n    return out;\n}\nexports.subtract = subtract;\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat2d} out the receiving matrix\n * @param {mat2d} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat2d} out\n */\nfunction multiplyScalar(out, a, b) {\n    out[0] = a[0] * b;\n    out[1] = a[1] * b;\n    out[2] = a[2] * b;\n    out[3] = a[3] * b;\n    out[4] = a[4] * b;\n    out[5] = a[5] * b;\n    return out;\n}\nexports.multiplyScalar = multiplyScalar;\n/**\n * Adds two mat2d's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat2d} out the receiving vector\n * @param {mat2d} a the first operand\n * @param {mat2d} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat2d} out\n */\nfunction multiplyScalarAndAdd(out, a, b, scale) {\n    out[0] = a[0] + b[0] * scale;\n    out[1] = a[1] + b[1] * scale;\n    out[2] = a[2] + b[2] * scale;\n    out[3] = a[3] + b[3] * scale;\n    out[4] = a[4] + b[4] * scale;\n    out[5] = a[5] + b[5] * scale;\n    return out;\n}\nexports.multiplyScalarAndAdd = multiplyScalarAndAdd;\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {mat2d} a The first matrix.\n * @param {mat2d} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\nfunction exactEquals(a, b) {\n    return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5];\n}\nexports.exactEquals = exactEquals;\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {mat2d} a The first matrix.\n * @param {mat2d} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\nfunction equals(a, b) {\n    var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5];\n    var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5];\n    return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5));\n}\nexports.equals = equals;\n/**\n * Alias for {@link mat2d.multiply}\n * @function\n */\nexports.mul = multiply;\n/**\n * Alias for {@link mat2d.subtract}\n * @function\n */\nexports.sub = subtract;\n","type":"js","dependency_paths":[["./common.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/common.js"]],"dependency_map":[],"exported":[{"type":"named","name":"create"},{"type":"named","name":"clone"},{"type":"named","name":"copy"},{"type":"named","name":"identity"},{"type":"named","name":"fromValues"},{"type":"named","name":"set"},{"type":"named","name":"invert"},{"type":"named","name":"determinant"},{"type":"named","name":"multiply"},{"type":"named","name":"rotate"},{"type":"named","name":"scale"},{"type":"named","name":"translate"},{"type":"named","name":"fromRotation"},{"type":"named","name":"fromScaling"},{"type":"named","name":"fromTranslation"},{"type":"named","name":"str"},{"type":"named","name":"frob"},{"type":"named","name":"add"},{"type":"named","name":"subtract"},{"type":"named","name":"multiplyScalar"},{"type":"named","name":"multiplyScalarAndAdd"},{"type":"named","name":"exactEquals"},{"type":"named","name":"equals"}],"externals":[],"shims":[]},"code":{"source":"/* gl-matrix/esm/mat2d.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    const glMatrix = tslib_1.__importStar(require(\"68ca94c15c\") /* ./common.js */);\n    /**\n     * 2x3 Matrix\n     * @module mat2d\n     * @description\n     * A mat2d contains six elements defined as:\n     * <pre>\n     * [a, b,\n     *  c, d,\n     *  tx, ty]\n     * </pre>\n     * This is a short form for the 3x3 matrix:\n     * <pre>\n     * [a, b, 0,\n     *  c, d, 0,\n     *  tx, ty, 1]\n     * </pre>\n     * The last column is ignored so the array is shorter and operations are faster.\n     */\n    /**\n     * Creates a new identity mat2d\n     *\n     * @returns {mat2d} a new 2x3 matrix\n     */\n    function create() {\n        var out = new glMatrix.ARRAY_TYPE(6);\n        if (glMatrix.ARRAY_TYPE != Float32Array) {\n            out[1] = 0;\n            out[2] = 0;\n            out[4] = 0;\n            out[5] = 0;\n        }\n        out[0] = 1;\n        out[3] = 1;\n        return out;\n    }\n    exports.create = create;\n    /**\n     * Creates a new mat2d initialized with values from an existing matrix\n     *\n     * @param {mat2d} a matrix to clone\n     * @returns {mat2d} a new 2x3 matrix\n     */\n    function clone(a) {\n        var out = new glMatrix.ARRAY_TYPE(6);\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = a[2];\n        out[3] = a[3];\n        out[4] = a[4];\n        out[5] = a[5];\n        return out;\n    }\n    exports.clone = clone;\n    /**\n     * Copy the values from one mat2d to another\n     *\n     * @param {mat2d} out the receiving matrix\n     * @param {mat2d} a the source matrix\n     * @returns {mat2d} out\n     */\n    function copy(out, a) {\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = a[2];\n        out[3] = a[3];\n        out[4] = a[4];\n        out[5] = a[5];\n        return out;\n    }\n    exports.copy = copy;\n    /**\n     * Set a mat2d to the identity matrix\n     *\n     * @param {mat2d} out the receiving matrix\n     * @returns {mat2d} out\n     */\n    function identity(out) {\n        out[0] = 1;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 1;\n        out[4] = 0;\n        out[5] = 0;\n        return out;\n    }\n    exports.identity = identity;\n    /**\n     * Create a new mat2d with the given values\n     *\n     * @param {Number} a Component A (index 0)\n     * @param {Number} b Component B (index 1)\n     * @param {Number} c Component C (index 2)\n     * @param {Number} d Component D (index 3)\n     * @param {Number} tx Component TX (index 4)\n     * @param {Number} ty Component TY (index 5)\n     * @returns {mat2d} A new mat2d\n     */\n    function fromValues(a, b, c, d, tx, ty) {\n        var out = new glMatrix.ARRAY_TYPE(6);\n        out[0] = a;\n        out[1] = b;\n        out[2] = c;\n        out[3] = d;\n        out[4] = tx;\n        out[5] = ty;\n        return out;\n    }\n    exports.fromValues = fromValues;\n    /**\n     * Set the components of a mat2d to the given values\n     *\n     * @param {mat2d} out the receiving matrix\n     * @param {Number} a Component A (index 0)\n     * @param {Number} b Component B (index 1)\n     * @param {Number} c Component C (index 2)\n     * @param {Number} d Component D (index 3)\n     * @param {Number} tx Component TX (index 4)\n     * @param {Number} ty Component TY (index 5)\n     * @returns {mat2d} out\n     */\n    function set(out, a, b, c, d, tx, ty) {\n        out[0] = a;\n        out[1] = b;\n        out[2] = c;\n        out[3] = d;\n        out[4] = tx;\n        out[5] = ty;\n        return out;\n    }\n    exports.set = set;\n    /**\n     * Inverts a mat2d\n     *\n     * @param {mat2d} out the receiving matrix\n     * @param {mat2d} a the source matrix\n     * @returns {mat2d} out\n     */\n    function invert(out, a) {\n        var aa = a[0], ab = a[1], ac = a[2], ad = a[3];\n        var atx = a[4], aty = a[5];\n        var det = aa * ad - ab * ac;\n        if (!det) {\n            return null;\n        }\n        det = 1.0 / det;\n        out[0] = ad * det;\n        out[1] = -ab * det;\n        out[2] = -ac * det;\n        out[3] = aa * det;\n        out[4] = (ac * aty - ad * atx) * det;\n        out[5] = (ab * atx - aa * aty) * det;\n        return out;\n    }\n    exports.invert = invert;\n    /**\n     * Calculates the determinant of a mat2d\n     *\n     * @param {mat2d} a the source matrix\n     * @returns {Number} determinant of a\n     */\n    function determinant(a) {\n        return a[0] * a[3] - a[1] * a[2];\n    }\n    exports.determinant = determinant;\n    /**\n     * Multiplies two mat2d's\n     *\n     * @param {mat2d} out the receiving matrix\n     * @param {mat2d} a the first operand\n     * @param {mat2d} b the second operand\n     * @returns {mat2d} out\n     */\n    function multiply(out, a, b) {\n        var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5];\n        var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5];\n        out[0] = a0 * b0 + a2 * b1;\n        out[1] = a1 * b0 + a3 * b1;\n        out[2] = a0 * b2 + a2 * b3;\n        out[3] = a1 * b2 + a3 * b3;\n        out[4] = a0 * b4 + a2 * b5 + a4;\n        out[5] = a1 * b4 + a3 * b5 + a5;\n        return out;\n    }\n    exports.multiply = multiply;\n    /**\n     * Rotates a mat2d by the given angle\n     *\n     * @param {mat2d} out the receiving matrix\n     * @param {mat2d} a the matrix to rotate\n     * @param {Number} rad the angle to rotate the matrix by\n     * @returns {mat2d} out\n     */\n    function rotate(out, a, rad) {\n        var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5];\n        var s = Math.sin(rad);\n        var c = Math.cos(rad);\n        out[0] = a0 * c + a2 * s;\n        out[1] = a1 * c + a3 * s;\n        out[2] = a0 * -s + a2 * c;\n        out[3] = a1 * -s + a3 * c;\n        out[4] = a4;\n        out[5] = a5;\n        return out;\n    }\n    exports.rotate = rotate;\n    /**\n     * Scales the mat2d by the dimensions in the given vec2\n     *\n     * @param {mat2d} out the receiving matrix\n     * @param {mat2d} a the matrix to translate\n     * @param {vec2} v the vec2 to scale the matrix by\n     * @returns {mat2d} out\n     **/\n    function scale(out, a, v) {\n        var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5];\n        var v0 = v[0], v1 = v[1];\n        out[0] = a0 * v0;\n        out[1] = a1 * v0;\n        out[2] = a2 * v1;\n        out[3] = a3 * v1;\n        out[4] = a4;\n        out[5] = a5;\n        return out;\n    }\n    exports.scale = scale;\n    /**\n     * Translates the mat2d by the dimensions in the given vec2\n     *\n     * @param {mat2d} out the receiving matrix\n     * @param {mat2d} a the matrix to translate\n     * @param {vec2} v the vec2 to translate the matrix by\n     * @returns {mat2d} out\n     **/\n    function translate(out, a, v) {\n        var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5];\n        var v0 = v[0], v1 = v[1];\n        out[0] = a0;\n        out[1] = a1;\n        out[2] = a2;\n        out[3] = a3;\n        out[4] = a0 * v0 + a2 * v1 + a4;\n        out[5] = a1 * v0 + a3 * v1 + a5;\n        return out;\n    }\n    exports.translate = translate;\n    /**\n     * Creates a matrix from a given angle\n     * This is equivalent to (but much faster than):\n     *\n     *     mat2d.identity(dest);\n     *     mat2d.rotate(dest, dest, rad);\n     *\n     * @param {mat2d} out mat2d receiving operation result\n     * @param {Number} rad the angle to rotate the matrix by\n     * @returns {mat2d} out\n     */\n    function fromRotation(out, rad) {\n        var s = Math.sin(rad), c = Math.cos(rad);\n        out[0] = c;\n        out[1] = s;\n        out[2] = -s;\n        out[3] = c;\n        out[4] = 0;\n        out[5] = 0;\n        return out;\n    }\n    exports.fromRotation = fromRotation;\n    /**\n     * Creates a matrix from a vector scaling\n     * This is equivalent to (but much faster than):\n     *\n     *     mat2d.identity(dest);\n     *     mat2d.scale(dest, dest, vec);\n     *\n     * @param {mat2d} out mat2d receiving operation result\n     * @param {vec2} v Scaling vector\n     * @returns {mat2d} out\n     */\n    function fromScaling(out, v) {\n        out[0] = v[0];\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = v[1];\n        out[4] = 0;\n        out[5] = 0;\n        return out;\n    }\n    exports.fromScaling = fromScaling;\n    /**\n     * Creates a matrix from a vector translation\n     * This is equivalent to (but much faster than):\n     *\n     *     mat2d.identity(dest);\n     *     mat2d.translate(dest, dest, vec);\n     *\n     * @param {mat2d} out mat2d receiving operation result\n     * @param {vec2} v Translation vector\n     * @returns {mat2d} out\n     */\n    function fromTranslation(out, v) {\n        out[0] = 1;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 1;\n        out[4] = v[0];\n        out[5] = v[1];\n        return out;\n    }\n    exports.fromTranslation = fromTranslation;\n    /**\n     * Returns a string representation of a mat2d\n     *\n     * @param {mat2d} a matrix to represent as a string\n     * @returns {String} string representation of the matrix\n     */\n    function str(a) {\n        return \"mat2d(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \")\";\n    }\n    exports.str = str;\n    /**\n     * Returns Frobenius norm of a mat2d\n     *\n     * @param {mat2d} a the matrix to calculate Frobenius norm of\n     * @returns {Number} Frobenius norm\n     */\n    function frob(a) {\n        return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], 1);\n    }\n    exports.frob = frob;\n    /**\n     * Adds two mat2d's\n     *\n     * @param {mat2d} out the receiving matrix\n     * @param {mat2d} a the first operand\n     * @param {mat2d} b the second operand\n     * @returns {mat2d} out\n     */\n    function add(out, a, b) {\n        out[0] = a[0] + b[0];\n        out[1] = a[1] + b[1];\n        out[2] = a[2] + b[2];\n        out[3] = a[3] + b[3];\n        out[4] = a[4] + b[4];\n        out[5] = a[5] + b[5];\n        return out;\n    }\n    exports.add = add;\n    /**\n     * Subtracts matrix b from matrix a\n     *\n     * @param {mat2d} out the receiving matrix\n     * @param {mat2d} a the first operand\n     * @param {mat2d} b the second operand\n     * @returns {mat2d} out\n     */\n    function subtract(out, a, b) {\n        out[0] = a[0] - b[0];\n        out[1] = a[1] - b[1];\n        out[2] = a[2] - b[2];\n        out[3] = a[3] - b[3];\n        out[4] = a[4] - b[4];\n        out[5] = a[5] - b[5];\n        return out;\n    }\n    exports.subtract = subtract;\n    /**\n     * Multiply each element of the matrix by a scalar.\n     *\n     * @param {mat2d} out the receiving matrix\n     * @param {mat2d} a the matrix to scale\n     * @param {Number} b amount to scale the matrix's elements by\n     * @returns {mat2d} out\n     */\n    function multiplyScalar(out, a, b) {\n        out[0] = a[0] * b;\n        out[1] = a[1] * b;\n        out[2] = a[2] * b;\n        out[3] = a[3] * b;\n        out[4] = a[4] * b;\n        out[5] = a[5] * b;\n        return out;\n    }\n    exports.multiplyScalar = multiplyScalar;\n    /**\n     * Adds two mat2d's after multiplying each element of the second operand by a scalar value.\n     *\n     * @param {mat2d} out the receiving vector\n     * @param {mat2d} a the first operand\n     * @param {mat2d} b the second operand\n     * @param {Number} scale the amount to scale b's elements by before adding\n     * @returns {mat2d} out\n     */\n    function multiplyScalarAndAdd(out, a, b, scale) {\n        out[0] = a[0] + b[0] * scale;\n        out[1] = a[1] + b[1] * scale;\n        out[2] = a[2] + b[2] * scale;\n        out[3] = a[3] + b[3] * scale;\n        out[4] = a[4] + b[4] * scale;\n        out[5] = a[5] + b[5] * scale;\n        return out;\n    }\n    exports.multiplyScalarAndAdd = multiplyScalarAndAdd;\n    /**\n     * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n     *\n     * @param {mat2d} a The first matrix.\n     * @param {mat2d} b The second matrix.\n     * @returns {Boolean} True if the matrices are equal, false otherwise.\n     */\n    function exactEquals(a, b) {\n        return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5];\n    }\n    exports.exactEquals = exactEquals;\n    /**\n     * Returns whether or not the matrices have approximately the same elements in the same position.\n     *\n     * @param {mat2d} a The first matrix.\n     * @param {mat2d} b The second matrix.\n     * @returns {Boolean} True if the matrices are equal, false otherwise.\n     */\n    function equals(a, b) {\n        var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5];\n        var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5];\n        return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5));\n    }\n    exports.equals = equals;\n    /**\n     * Alias for {@link mat2d.multiply}\n     * @function\n     */\n    exports.mul = multiply;\n    /**\n     * Alias for {@link mat2d.subtract}\n     * @function\n     */\n    exports.sub = subtract;\n}\n","min_source":"function _(t,n,a,r,u){r();const o=t(\"tslib\").__importStar(t(\"68ca94c15c\"));function e(t,n,a){var r=n[0],u=n[1],o=n[2],e=n[3],c=n[4],i=n[5],s=a[0],h=a[1],f=a[2],M=a[3],b=a[4],l=a[5];return t[0]=r*s+o*h,t[1]=u*s+e*h,t[2]=r*f+o*M,t[3]=u*f+e*M,t[4]=r*b+o*l+c,t[5]=u*b+e*l+i,t}function c(t,n,a){return t[0]=n[0]-a[0],t[1]=n[1]-a[1],t[2]=n[2]-a[2],t[3]=n[3]-a[3],t[4]=n[4]-a[4],t[5]=n[5]-a[5],t}a.create=function(){var t=new o.ARRAY_TYPE(6);return o.ARRAY_TYPE!=Float32Array&&(t[1]=0,t[2]=0,t[4]=0,t[5]=0),t[0]=1,t[3]=1,t},a.clone=function(t){var n=new o.ARRAY_TYPE(6);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n},a.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t},a.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},a.fromValues=function(t,n,a,r,u,e){var c=new o.ARRAY_TYPE(6);return c[0]=t,c[1]=n,c[2]=a,c[3]=r,c[4]=u,c[5]=e,c},a.set=function(t,n,a,r,u,o,e){return t[0]=n,t[1]=a,t[2]=r,t[3]=u,t[4]=o,t[5]=e,t},a.invert=function(t,n){var a=n[0],r=n[1],u=n[2],o=n[3],e=n[4],c=n[5],i=a*o-r*u;return i?(i=1/i,t[0]=o*i,t[1]=-r*i,t[2]=-u*i,t[3]=a*i,t[4]=(u*c-o*e)*i,t[5]=(r*e-a*c)*i,t):null},a.determinant=function(t){return t[0]*t[3]-t[1]*t[2]},a.multiply=e,a.rotate=function(t,n,a){var r=n[0],u=n[1],o=n[2],e=n[3],c=n[4],i=n[5],s=Math.sin(a),h=Math.cos(a);return t[0]=r*h+o*s,t[1]=u*h+e*s,t[2]=r*-s+o*h,t[3]=u*-s+e*h,t[4]=c,t[5]=i,t},a.scale=function(t,n,a){var r=n[0],u=n[1],o=n[2],e=n[3],c=n[4],i=n[5],s=a[0],h=a[1];return t[0]=r*s,t[1]=u*s,t[2]=o*h,t[3]=e*h,t[4]=c,t[5]=i,t},a.translate=function(t,n,a){var r=n[0],u=n[1],o=n[2],e=n[3],c=n[4],i=n[5],s=a[0],h=a[1];return t[0]=r,t[1]=u,t[2]=o,t[3]=e,t[4]=r*s+o*h+c,t[5]=u*s+e*h+i,t},a.fromRotation=function(t,n){var a=Math.sin(n),r=Math.cos(n);return t[0]=r,t[1]=a,t[2]=-a,t[3]=r,t[4]=0,t[5]=0,t},a.fromScaling=function(t,n){return t[0]=n[0],t[1]=0,t[2]=0,t[3]=n[1],t[4]=0,t[5]=0,t},a.fromTranslation=function(t,n){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=n[0],t[5]=n[1],t},a.str=function(t){return\"mat2d(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\", \"+t[4]+\", \"+t[5]+\")\"},a.frob=function(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],1)},a.add=function(t,n,a){return t[0]=n[0]+a[0],t[1]=n[1]+a[1],t[2]=n[2]+a[2],t[3]=n[3]+a[3],t[4]=n[4]+a[4],t[5]=n[5]+a[5],t},a.subtract=c,a.multiplyScalar=function(t,n,a){return t[0]=n[0]*a,t[1]=n[1]*a,t[2]=n[2]*a,t[3]=n[3]*a,t[4]=n[4]*a,t[5]=n[5]*a,t},a.multiplyScalarAndAdd=function(t,n,a,r){return t[0]=n[0]+a[0]*r,t[1]=n[1]+a[1]*r,t[2]=n[2]+a[2]*r,t[3]=n[3]+a[3]*r,t[4]=n[4]+a[4]*r,t[5]=n[5]+a[5]*r,t},a.exactEquals=function(t,n){return t[0]===n[0]&&t[1]===n[1]&&t[2]===n[2]&&t[3]===n[3]&&t[4]===n[4]&&t[5]===n[5]},a.equals=function(t,n){var a=t[0],r=t[1],u=t[2],e=t[3],c=t[4],i=t[5],s=n[0],h=n[1],f=n[2],M=n[3],b=n[4],l=n[5];return Math.abs(a-s)<=o.EPSILON*Math.max(1,Math.abs(a),Math.abs(s))&&Math.abs(r-h)<=o.EPSILON*Math.max(1,Math.abs(r),Math.abs(h))&&Math.abs(u-f)<=o.EPSILON*Math.max(1,Math.abs(u),Math.abs(f))&&Math.abs(e-M)<=o.EPSILON*Math.max(1,Math.abs(e),Math.abs(M))&&Math.abs(c-b)<=o.EPSILON*Math.max(1,Math.abs(c),Math.abs(b))&&Math.abs(i-l)<=o.EPSILON*Math.max(1,Math.abs(i),Math.abs(l))},a.mul=e,a.sub=c}\n//# sourceMappingURL=mat2d.min.js.map","min_map":"{\"version\":3,\"file\":\"mat2d.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"glMatrix\",\"__importStar\",\"multiply\",\"out\",\"a\",\"b\",\"a0\",\"a1\",\"a2\",\"a3\",\"a4\",\"a5\",\"b0\",\"b1\",\"b2\",\"b3\",\"b4\",\"b5\",\"subtract\",\"create\",\"ARRAY_TYPE\",\"Float32Array\",\"clone\",\"copy\",\"identity\",\"fromValues\",\"c\",\"d\",\"tx\",\"ty\",\"set\",\"invert\",\"aa\",\"ab\",\"ac\",\"ad\",\"atx\",\"aty\",\"det\",\"determinant\",\"rotate\",\"rad\",\"s\",\"Math\",\"sin\",\"cos\",\"scale\",\"v\",\"v0\",\"v1\",\"translate\",\"fromRotation\",\"fromScaling\",\"fromTranslation\",\"str\",\"frob\",\"hypot\",\"add\",\"multiplyScalar\",\"multiplyScalarAndAdd\",\"exactEquals\",\"equals\",\"abs\",\"EPSILON\",\"max\",\"mul\",\"sub\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/mat3.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"gl-matrix/esm/mat3.js","resolution":"ESM","id":"0285c50a7e","hash":"0285c50a7e70077bba32a30347628d5f148912fec646d4a5c7e8b5b6f522536d","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sub = exports.mul = exports.equals = exports.exactEquals = exports.multiplyScalarAndAdd = exports.multiplyScalar = exports.subtract = exports.add = exports.frob = exports.str = exports.projection = exports.normalFromMat4 = exports.fromQuat = exports.fromMat2d = exports.fromScaling = exports.fromRotation = exports.fromTranslation = exports.scale = exports.rotate = exports.translate = exports.multiply = exports.determinant = exports.adjoint = exports.invert = exports.transpose = exports.identity = exports.set = exports.fromValues = exports.copy = exports.clone = exports.fromMat4 = exports.create = void 0;\nconst tslib_1 = require(\"tslib\");\nconst glMatrix = tslib_1.__importStar(require(\"./common.js\"));\n/**\n * 3x3 Matrix\n * @module mat3\n */\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\nfunction create() {\n    var out = new glMatrix.ARRAY_TYPE(9);\n    if (glMatrix.ARRAY_TYPE != Float32Array) {\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n        out[5] = 0;\n        out[6] = 0;\n        out[7] = 0;\n    }\n    out[0] = 1;\n    out[4] = 1;\n    out[8] = 1;\n    return out;\n}\nexports.create = create;\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {mat4} a   the source 4x4 matrix\n * @returns {mat3} out\n */\nfunction fromMat4(out, a) {\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[4];\n    out[4] = a[5];\n    out[5] = a[6];\n    out[6] = a[8];\n    out[7] = a[9];\n    out[8] = a[10];\n    return out;\n}\nexports.fromMat4 = fromMat4;\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {mat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\nfunction clone(a) {\n    var out = new glMatrix.ARRAY_TYPE(9);\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[4] = a[4];\n    out[5] = a[5];\n    out[6] = a[6];\n    out[7] = a[7];\n    out[8] = a[8];\n    return out;\n}\nexports.clone = clone;\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the source matrix\n * @returns {mat3} out\n */\nfunction copy(out, a) {\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[4] = a[4];\n    out[5] = a[5];\n    out[6] = a[6];\n    out[7] = a[7];\n    out[8] = a[8];\n    return out;\n}\nexports.copy = copy;\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\nfunction fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n    var out = new glMatrix.ARRAY_TYPE(9);\n    out[0] = m00;\n    out[1] = m01;\n    out[2] = m02;\n    out[3] = m10;\n    out[4] = m11;\n    out[5] = m12;\n    out[6] = m20;\n    out[7] = m21;\n    out[8] = m22;\n    return out;\n}\nexports.fromValues = fromValues;\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\nfunction set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n    out[0] = m00;\n    out[1] = m01;\n    out[2] = m02;\n    out[3] = m10;\n    out[4] = m11;\n    out[5] = m12;\n    out[6] = m20;\n    out[7] = m21;\n    out[8] = m22;\n    return out;\n}\nexports.set = set;\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\nfunction identity(out) {\n    out[0] = 1;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 1;\n    out[5] = 0;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 1;\n    return out;\n}\nexports.identity = identity;\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the source matrix\n * @returns {mat3} out\n */\nfunction transpose(out, a) {\n    // If we are transposing ourselves we can skip a few steps but have to cache some values\n    if (out === a) {\n        var a01 = a[1], a02 = a[2], a12 = a[5];\n        out[1] = a[3];\n        out[2] = a[6];\n        out[3] = a01;\n        out[5] = a[7];\n        out[6] = a02;\n        out[7] = a12;\n    }\n    else {\n        out[0] = a[0];\n        out[1] = a[3];\n        out[2] = a[6];\n        out[3] = a[1];\n        out[4] = a[4];\n        out[5] = a[7];\n        out[6] = a[2];\n        out[7] = a[5];\n        out[8] = a[8];\n    }\n    return out;\n}\nexports.transpose = transpose;\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the source matrix\n * @returns {mat3} out\n */\nfunction invert(out, a) {\n    var a00 = a[0], a01 = a[1], a02 = a[2];\n    var a10 = a[3], a11 = a[4], a12 = a[5];\n    var a20 = a[6], a21 = a[7], a22 = a[8];\n    var b01 = a22 * a11 - a12 * a21;\n    var b11 = -a22 * a10 + a12 * a20;\n    var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n    var det = a00 * b01 + a01 * b11 + a02 * b21;\n    if (!det) {\n        return null;\n    }\n    det = 1.0 / det;\n    out[0] = b01 * det;\n    out[1] = (-a22 * a01 + a02 * a21) * det;\n    out[2] = (a12 * a01 - a02 * a11) * det;\n    out[3] = b11 * det;\n    out[4] = (a22 * a00 - a02 * a20) * det;\n    out[5] = (-a12 * a00 + a02 * a10) * det;\n    out[6] = b21 * det;\n    out[7] = (-a21 * a00 + a01 * a20) * det;\n    out[8] = (a11 * a00 - a01 * a10) * det;\n    return out;\n}\nexports.invert = invert;\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the source matrix\n * @returns {mat3} out\n */\nfunction adjoint(out, a) {\n    var a00 = a[0], a01 = a[1], a02 = a[2];\n    var a10 = a[3], a11 = a[4], a12 = a[5];\n    var a20 = a[6], a21 = a[7], a22 = a[8];\n    out[0] = a11 * a22 - a12 * a21;\n    out[1] = a02 * a21 - a01 * a22;\n    out[2] = a01 * a12 - a02 * a11;\n    out[3] = a12 * a20 - a10 * a22;\n    out[4] = a00 * a22 - a02 * a20;\n    out[5] = a02 * a10 - a00 * a12;\n    out[6] = a10 * a21 - a11 * a20;\n    out[7] = a01 * a20 - a00 * a21;\n    out[8] = a00 * a11 - a01 * a10;\n    return out;\n}\nexports.adjoint = adjoint;\n/**\n * Calculates the determinant of a mat3\n *\n * @param {mat3} a the source matrix\n * @returns {Number} determinant of a\n */\nfunction determinant(a) {\n    var a00 = a[0], a01 = a[1], a02 = a[2];\n    var a10 = a[3], a11 = a[4], a12 = a[5];\n    var a20 = a[6], a21 = a[7], a22 = a[8];\n    return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\nexports.determinant = determinant;\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the first operand\n * @param {mat3} b the second operand\n * @returns {mat3} out\n */\nfunction multiply(out, a, b) {\n    var a00 = a[0], a01 = a[1], a02 = a[2];\n    var a10 = a[3], a11 = a[4], a12 = a[5];\n    var a20 = a[6], a21 = a[7], a22 = a[8];\n    var b00 = b[0], b01 = b[1], b02 = b[2];\n    var b10 = b[3], b11 = b[4], b12 = b[5];\n    var b20 = b[6], b21 = b[7], b22 = b[8];\n    out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n    out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n    out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n    out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n    out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n    out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n    out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n    out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n    out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n    return out;\n}\nexports.multiply = multiply;\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the matrix to translate\n * @param {vec2} v vector to translate by\n * @returns {mat3} out\n */\nfunction translate(out, a, v) {\n    var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], x = v[0], y = v[1];\n    out[0] = a00;\n    out[1] = a01;\n    out[2] = a02;\n    out[3] = a10;\n    out[4] = a11;\n    out[5] = a12;\n    out[6] = x * a00 + y * a10 + a20;\n    out[7] = x * a01 + y * a11 + a21;\n    out[8] = x * a02 + y * a12 + a22;\n    return out;\n}\nexports.translate = translate;\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\nfunction rotate(out, a, rad) {\n    var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], s = Math.sin(rad), c = Math.cos(rad);\n    out[0] = c * a00 + s * a10;\n    out[1] = c * a01 + s * a11;\n    out[2] = c * a02 + s * a12;\n    out[3] = c * a10 - s * a00;\n    out[4] = c * a11 - s * a01;\n    out[5] = c * a12 - s * a02;\n    out[6] = a20;\n    out[7] = a21;\n    out[8] = a22;\n    return out;\n}\nexports.rotate = rotate;\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the matrix to rotate\n * @param {vec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\nfunction scale(out, a, v) {\n    var x = v[0], y = v[1];\n    out[0] = x * a[0];\n    out[1] = x * a[1];\n    out[2] = x * a[2];\n    out[3] = y * a[3];\n    out[4] = y * a[4];\n    out[5] = y * a[5];\n    out[6] = a[6];\n    out[7] = a[7];\n    out[8] = a[8];\n    return out;\n}\nexports.scale = scale;\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat3.identity(dest);\n *     mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {vec2} v Translation vector\n * @returns {mat3} out\n */\nfunction fromTranslation(out, v) {\n    out[0] = 1;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 1;\n    out[5] = 0;\n    out[6] = v[0];\n    out[7] = v[1];\n    out[8] = 1;\n    return out;\n}\nexports.fromTranslation = fromTranslation;\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n *     mat3.identity(dest);\n *     mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\nfunction fromRotation(out, rad) {\n    var s = Math.sin(rad), c = Math.cos(rad);\n    out[0] = c;\n    out[1] = s;\n    out[2] = 0;\n    out[3] = -s;\n    out[4] = c;\n    out[5] = 0;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 1;\n    return out;\n}\nexports.fromRotation = fromRotation;\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n *     mat3.identity(dest);\n *     mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {vec2} v Scaling vector\n * @returns {mat3} out\n */\nfunction fromScaling(out, v) {\n    out[0] = v[0];\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = v[1];\n    out[5] = 0;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 1;\n    return out;\n}\nexports.fromScaling = fromScaling;\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {mat2d} a the matrix to copy\n * @returns {mat3} out\n **/\nfunction fromMat2d(out, a) {\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = 0;\n    out[3] = a[2];\n    out[4] = a[3];\n    out[5] = 0;\n    out[6] = a[4];\n    out[7] = a[5];\n    out[8] = 1;\n    return out;\n}\nexports.fromMat2d = fromMat2d;\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {quat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\nfunction fromQuat(out, q) {\n    var x = q[0], y = q[1], z = q[2], w = q[3];\n    var x2 = x + x;\n    var y2 = y + y;\n    var z2 = z + z;\n    var xx = x * x2;\n    var yx = y * x2;\n    var yy = y * y2;\n    var zx = z * x2;\n    var zy = z * y2;\n    var zz = z * z2;\n    var wx = w * x2;\n    var wy = w * y2;\n    var wz = w * z2;\n    out[0] = 1 - yy - zz;\n    out[3] = yx - wz;\n    out[6] = zx + wy;\n    out[1] = yx + wz;\n    out[4] = 1 - xx - zz;\n    out[7] = zy - wx;\n    out[2] = zx - wy;\n    out[5] = zy + wx;\n    out[8] = 1 - xx - yy;\n    return out;\n}\nexports.fromQuat = fromQuat;\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {mat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\nfunction normalFromMat4(out, a) {\n    var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n    var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n    var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n    var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n    var b00 = a00 * a11 - a01 * a10;\n    var b01 = a00 * a12 - a02 * a10;\n    var b02 = a00 * a13 - a03 * a10;\n    var b03 = a01 * a12 - a02 * a11;\n    var b04 = a01 * a13 - a03 * a11;\n    var b05 = a02 * a13 - a03 * a12;\n    var b06 = a20 * a31 - a21 * a30;\n    var b07 = a20 * a32 - a22 * a30;\n    var b08 = a20 * a33 - a23 * a30;\n    var b09 = a21 * a32 - a22 * a31;\n    var b10 = a21 * a33 - a23 * a31;\n    var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n    var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n    if (!det) {\n        return null;\n    }\n    det = 1.0 / det;\n    out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n    out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n    out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n    out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n    out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n    out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n    out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n    out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n    out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n    return out;\n}\nexports.normalFromMat4 = normalFromMat4;\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\nfunction projection(out, width, height) {\n    out[0] = 2 / width;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = -2 / height;\n    out[5] = 0;\n    out[6] = -1;\n    out[7] = 1;\n    out[8] = 1;\n    return out;\n}\nexports.projection = projection;\n/**\n * Returns a string representation of a mat3\n *\n * @param {mat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\nfunction str(a) {\n    return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\nexports.str = str;\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {mat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\nfunction frob(a) {\n    return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\nexports.frob = frob;\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the first operand\n * @param {mat3} b the second operand\n * @returns {mat3} out\n */\nfunction add(out, a, b) {\n    out[0] = a[0] + b[0];\n    out[1] = a[1] + b[1];\n    out[2] = a[2] + b[2];\n    out[3] = a[3] + b[3];\n    out[4] = a[4] + b[4];\n    out[5] = a[5] + b[5];\n    out[6] = a[6] + b[6];\n    out[7] = a[7] + b[7];\n    out[8] = a[8] + b[8];\n    return out;\n}\nexports.add = add;\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the first operand\n * @param {mat3} b the second operand\n * @returns {mat3} out\n */\nfunction subtract(out, a, b) {\n    out[0] = a[0] - b[0];\n    out[1] = a[1] - b[1];\n    out[2] = a[2] - b[2];\n    out[3] = a[3] - b[3];\n    out[4] = a[4] - b[4];\n    out[5] = a[5] - b[5];\n    out[6] = a[6] - b[6];\n    out[7] = a[7] - b[7];\n    out[8] = a[8] - b[8];\n    return out;\n}\nexports.subtract = subtract;\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {mat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\nfunction multiplyScalar(out, a, b) {\n    out[0] = a[0] * b;\n    out[1] = a[1] * b;\n    out[2] = a[2] * b;\n    out[3] = a[3] * b;\n    out[4] = a[4] * b;\n    out[5] = a[5] * b;\n    out[6] = a[6] * b;\n    out[7] = a[7] * b;\n    out[8] = a[8] * b;\n    return out;\n}\nexports.multiplyScalar = multiplyScalar;\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {mat3} a the first operand\n * @param {mat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\nfunction multiplyScalarAndAdd(out, a, b, scale) {\n    out[0] = a[0] + b[0] * scale;\n    out[1] = a[1] + b[1] * scale;\n    out[2] = a[2] + b[2] * scale;\n    out[3] = a[3] + b[3] * scale;\n    out[4] = a[4] + b[4] * scale;\n    out[5] = a[5] + b[5] * scale;\n    out[6] = a[6] + b[6] * scale;\n    out[7] = a[7] + b[7] * scale;\n    out[8] = a[8] + b[8] * scale;\n    return out;\n}\nexports.multiplyScalarAndAdd = multiplyScalarAndAdd;\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {mat3} a The first matrix.\n * @param {mat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\nfunction exactEquals(a, b) {\n    return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\nexports.exactEquals = exactEquals;\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {mat3} a The first matrix.\n * @param {mat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\nfunction equals(a, b) {\n    var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7], a8 = a[8];\n    var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8];\n    return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\nexports.equals = equals;\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\nexports.mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\nexports.sub = subtract;\n","type":"js","dependency_paths":[["./common.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/common.js"]],"dependency_map":[],"exported":[{"type":"named","name":"create"},{"type":"named","name":"fromMat4"},{"type":"named","name":"clone"},{"type":"named","name":"copy"},{"type":"named","name":"fromValues"},{"type":"named","name":"set"},{"type":"named","name":"identity"},{"type":"named","name":"transpose"},{"type":"named","name":"invert"},{"type":"named","name":"adjoint"},{"type":"named","name":"determinant"},{"type":"named","name":"multiply"},{"type":"named","name":"translate"},{"type":"named","name":"rotate"},{"type":"named","name":"scale"},{"type":"named","name":"fromTranslation"},{"type":"named","name":"fromRotation"},{"type":"named","name":"fromScaling"},{"type":"named","name":"fromMat2d"},{"type":"named","name":"fromQuat"},{"type":"named","name":"normalFromMat4"},{"type":"named","name":"projection"},{"type":"named","name":"str"},{"type":"named","name":"frob"},{"type":"named","name":"add"},{"type":"named","name":"subtract"},{"type":"named","name":"multiplyScalar"},{"type":"named","name":"multiplyScalarAndAdd"},{"type":"named","name":"exactEquals"},{"type":"named","name":"equals"}],"externals":[],"shims":[]},"code":{"source":"/* gl-matrix/esm/mat3.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    const glMatrix = tslib_1.__importStar(require(\"68ca94c15c\") /* ./common.js */);\n    /**\n     * 3x3 Matrix\n     * @module mat3\n     */\n    /**\n     * Creates a new identity mat3\n     *\n     * @returns {mat3} a new 3x3 matrix\n     */\n    function create() {\n        var out = new glMatrix.ARRAY_TYPE(9);\n        if (glMatrix.ARRAY_TYPE != Float32Array) {\n            out[1] = 0;\n            out[2] = 0;\n            out[3] = 0;\n            out[5] = 0;\n            out[6] = 0;\n            out[7] = 0;\n        }\n        out[0] = 1;\n        out[4] = 1;\n        out[8] = 1;\n        return out;\n    }\n    exports.create = create;\n    /**\n     * Copies the upper-left 3x3 values into the given mat3.\n     *\n     * @param {mat3} out the receiving 3x3 matrix\n     * @param {mat4} a   the source 4x4 matrix\n     * @returns {mat3} out\n     */\n    function fromMat4(out, a) {\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = a[2];\n        out[3] = a[4];\n        out[4] = a[5];\n        out[5] = a[6];\n        out[6] = a[8];\n        out[7] = a[9];\n        out[8] = a[10];\n        return out;\n    }\n    exports.fromMat4 = fromMat4;\n    /**\n     * Creates a new mat3 initialized with values from an existing matrix\n     *\n     * @param {mat3} a matrix to clone\n     * @returns {mat3} a new 3x3 matrix\n     */\n    function clone(a) {\n        var out = new glMatrix.ARRAY_TYPE(9);\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = a[2];\n        out[3] = a[3];\n        out[4] = a[4];\n        out[5] = a[5];\n        out[6] = a[6];\n        out[7] = a[7];\n        out[8] = a[8];\n        return out;\n    }\n    exports.clone = clone;\n    /**\n     * Copy the values from one mat3 to another\n     *\n     * @param {mat3} out the receiving matrix\n     * @param {mat3} a the source matrix\n     * @returns {mat3} out\n     */\n    function copy(out, a) {\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = a[2];\n        out[3] = a[3];\n        out[4] = a[4];\n        out[5] = a[5];\n        out[6] = a[6];\n        out[7] = a[7];\n        out[8] = a[8];\n        return out;\n    }\n    exports.copy = copy;\n    /**\n     * Create a new mat3 with the given values\n     *\n     * @param {Number} m00 Component in column 0, row 0 position (index 0)\n     * @param {Number} m01 Component in column 0, row 1 position (index 1)\n     * @param {Number} m02 Component in column 0, row 2 position (index 2)\n     * @param {Number} m10 Component in column 1, row 0 position (index 3)\n     * @param {Number} m11 Component in column 1, row 1 position (index 4)\n     * @param {Number} m12 Component in column 1, row 2 position (index 5)\n     * @param {Number} m20 Component in column 2, row 0 position (index 6)\n     * @param {Number} m21 Component in column 2, row 1 position (index 7)\n     * @param {Number} m22 Component in column 2, row 2 position (index 8)\n     * @returns {mat3} A new mat3\n     */\n    function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n        var out = new glMatrix.ARRAY_TYPE(9);\n        out[0] = m00;\n        out[1] = m01;\n        out[2] = m02;\n        out[3] = m10;\n        out[4] = m11;\n        out[5] = m12;\n        out[6] = m20;\n        out[7] = m21;\n        out[8] = m22;\n        return out;\n    }\n    exports.fromValues = fromValues;\n    /**\n     * Set the components of a mat3 to the given values\n     *\n     * @param {mat3} out the receiving matrix\n     * @param {Number} m00 Component in column 0, row 0 position (index 0)\n     * @param {Number} m01 Component in column 0, row 1 position (index 1)\n     * @param {Number} m02 Component in column 0, row 2 position (index 2)\n     * @param {Number} m10 Component in column 1, row 0 position (index 3)\n     * @param {Number} m11 Component in column 1, row 1 position (index 4)\n     * @param {Number} m12 Component in column 1, row 2 position (index 5)\n     * @param {Number} m20 Component in column 2, row 0 position (index 6)\n     * @param {Number} m21 Component in column 2, row 1 position (index 7)\n     * @param {Number} m22 Component in column 2, row 2 position (index 8)\n     * @returns {mat3} out\n     */\n    function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n        out[0] = m00;\n        out[1] = m01;\n        out[2] = m02;\n        out[3] = m10;\n        out[4] = m11;\n        out[5] = m12;\n        out[6] = m20;\n        out[7] = m21;\n        out[8] = m22;\n        return out;\n    }\n    exports.set = set;\n    /**\n     * Set a mat3 to the identity matrix\n     *\n     * @param {mat3} out the receiving matrix\n     * @returns {mat3} out\n     */\n    function identity(out) {\n        out[0] = 1;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n        out[4] = 1;\n        out[5] = 0;\n        out[6] = 0;\n        out[7] = 0;\n        out[8] = 1;\n        return out;\n    }\n    exports.identity = identity;\n    /**\n     * Transpose the values of a mat3\n     *\n     * @param {mat3} out the receiving matrix\n     * @param {mat3} a the source matrix\n     * @returns {mat3} out\n     */\n    function transpose(out, a) {\n        // If we are transposing ourselves we can skip a few steps but have to cache some values\n        if (out === a) {\n            var a01 = a[1], a02 = a[2], a12 = a[5];\n            out[1] = a[3];\n            out[2] = a[6];\n            out[3] = a01;\n            out[5] = a[7];\n            out[6] = a02;\n            out[7] = a12;\n        }\n        else {\n            out[0] = a[0];\n            out[1] = a[3];\n            out[2] = a[6];\n            out[3] = a[1];\n            out[4] = a[4];\n            out[5] = a[7];\n            out[6] = a[2];\n            out[7] = a[5];\n            out[8] = a[8];\n        }\n        return out;\n    }\n    exports.transpose = transpose;\n    /**\n     * Inverts a mat3\n     *\n     * @param {mat3} out the receiving matrix\n     * @param {mat3} a the source matrix\n     * @returns {mat3} out\n     */\n    function invert(out, a) {\n        var a00 = a[0], a01 = a[1], a02 = a[2];\n        var a10 = a[3], a11 = a[4], a12 = a[5];\n        var a20 = a[6], a21 = a[7], a22 = a[8];\n        var b01 = a22 * a11 - a12 * a21;\n        var b11 = -a22 * a10 + a12 * a20;\n        var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n        var det = a00 * b01 + a01 * b11 + a02 * b21;\n        if (!det) {\n            return null;\n        }\n        det = 1.0 / det;\n        out[0] = b01 * det;\n        out[1] = (-a22 * a01 + a02 * a21) * det;\n        out[2] = (a12 * a01 - a02 * a11) * det;\n        out[3] = b11 * det;\n        out[4] = (a22 * a00 - a02 * a20) * det;\n        out[5] = (-a12 * a00 + a02 * a10) * det;\n        out[6] = b21 * det;\n        out[7] = (-a21 * a00 + a01 * a20) * det;\n        out[8] = (a11 * a00 - a01 * a10) * det;\n        return out;\n    }\n    exports.invert = invert;\n    /**\n     * Calculates the adjugate of a mat3\n     *\n     * @param {mat3} out the receiving matrix\n     * @param {mat3} a the source matrix\n     * @returns {mat3} out\n     */\n    function adjoint(out, a) {\n        var a00 = a[0], a01 = a[1], a02 = a[2];\n        var a10 = a[3], a11 = a[4], a12 = a[5];\n        var a20 = a[6], a21 = a[7], a22 = a[8];\n        out[0] = a11 * a22 - a12 * a21;\n        out[1] = a02 * a21 - a01 * a22;\n        out[2] = a01 * a12 - a02 * a11;\n        out[3] = a12 * a20 - a10 * a22;\n        out[4] = a00 * a22 - a02 * a20;\n        out[5] = a02 * a10 - a00 * a12;\n        out[6] = a10 * a21 - a11 * a20;\n        out[7] = a01 * a20 - a00 * a21;\n        out[8] = a00 * a11 - a01 * a10;\n        return out;\n    }\n    exports.adjoint = adjoint;\n    /**\n     * Calculates the determinant of a mat3\n     *\n     * @param {mat3} a the source matrix\n     * @returns {Number} determinant of a\n     */\n    function determinant(a) {\n        var a00 = a[0], a01 = a[1], a02 = a[2];\n        var a10 = a[3], a11 = a[4], a12 = a[5];\n        var a20 = a[6], a21 = a[7], a22 = a[8];\n        return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n    }\n    exports.determinant = determinant;\n    /**\n     * Multiplies two mat3's\n     *\n     * @param {mat3} out the receiving matrix\n     * @param {mat3} a the first operand\n     * @param {mat3} b the second operand\n     * @returns {mat3} out\n     */\n    function multiply(out, a, b) {\n        var a00 = a[0], a01 = a[1], a02 = a[2];\n        var a10 = a[3], a11 = a[4], a12 = a[5];\n        var a20 = a[6], a21 = a[7], a22 = a[8];\n        var b00 = b[0], b01 = b[1], b02 = b[2];\n        var b10 = b[3], b11 = b[4], b12 = b[5];\n        var b20 = b[6], b21 = b[7], b22 = b[8];\n        out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n        out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n        out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n        out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n        out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n        out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n        out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n        out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n        out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n        return out;\n    }\n    exports.multiply = multiply;\n    /**\n     * Translate a mat3 by the given vector\n     *\n     * @param {mat3} out the receiving matrix\n     * @param {mat3} a the matrix to translate\n     * @param {vec2} v vector to translate by\n     * @returns {mat3} out\n     */\n    function translate(out, a, v) {\n        var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], x = v[0], y = v[1];\n        out[0] = a00;\n        out[1] = a01;\n        out[2] = a02;\n        out[3] = a10;\n        out[4] = a11;\n        out[5] = a12;\n        out[6] = x * a00 + y * a10 + a20;\n        out[7] = x * a01 + y * a11 + a21;\n        out[8] = x * a02 + y * a12 + a22;\n        return out;\n    }\n    exports.translate = translate;\n    /**\n     * Rotates a mat3 by the given angle\n     *\n     * @param {mat3} out the receiving matrix\n     * @param {mat3} a the matrix to rotate\n     * @param {Number} rad the angle to rotate the matrix by\n     * @returns {mat3} out\n     */\n    function rotate(out, a, rad) {\n        var a00 = a[0], a01 = a[1], a02 = a[2], a10 = a[3], a11 = a[4], a12 = a[5], a20 = a[6], a21 = a[7], a22 = a[8], s = Math.sin(rad), c = Math.cos(rad);\n        out[0] = c * a00 + s * a10;\n        out[1] = c * a01 + s * a11;\n        out[2] = c * a02 + s * a12;\n        out[3] = c * a10 - s * a00;\n        out[4] = c * a11 - s * a01;\n        out[5] = c * a12 - s * a02;\n        out[6] = a20;\n        out[7] = a21;\n        out[8] = a22;\n        return out;\n    }\n    exports.rotate = rotate;\n    /**\n     * Scales the mat3 by the dimensions in the given vec2\n     *\n     * @param {mat3} out the receiving matrix\n     * @param {mat3} a the matrix to rotate\n     * @param {vec2} v the vec2 to scale the matrix by\n     * @returns {mat3} out\n     **/\n    function scale(out, a, v) {\n        var x = v[0], y = v[1];\n        out[0] = x * a[0];\n        out[1] = x * a[1];\n        out[2] = x * a[2];\n        out[3] = y * a[3];\n        out[4] = y * a[4];\n        out[5] = y * a[5];\n        out[6] = a[6];\n        out[7] = a[7];\n        out[8] = a[8];\n        return out;\n    }\n    exports.scale = scale;\n    /**\n     * Creates a matrix from a vector translation\n     * This is equivalent to (but much faster than):\n     *\n     *     mat3.identity(dest);\n     *     mat3.translate(dest, dest, vec);\n     *\n     * @param {mat3} out mat3 receiving operation result\n     * @param {vec2} v Translation vector\n     * @returns {mat3} out\n     */\n    function fromTranslation(out, v) {\n        out[0] = 1;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n        out[4] = 1;\n        out[5] = 0;\n        out[6] = v[0];\n        out[7] = v[1];\n        out[8] = 1;\n        return out;\n    }\n    exports.fromTranslation = fromTranslation;\n    /**\n     * Creates a matrix from a given angle\n     * This is equivalent to (but much faster than):\n     *\n     *     mat3.identity(dest);\n     *     mat3.rotate(dest, dest, rad);\n     *\n     * @param {mat3} out mat3 receiving operation result\n     * @param {Number} rad the angle to rotate the matrix by\n     * @returns {mat3} out\n     */\n    function fromRotation(out, rad) {\n        var s = Math.sin(rad), c = Math.cos(rad);\n        out[0] = c;\n        out[1] = s;\n        out[2] = 0;\n        out[3] = -s;\n        out[4] = c;\n        out[5] = 0;\n        out[6] = 0;\n        out[7] = 0;\n        out[8] = 1;\n        return out;\n    }\n    exports.fromRotation = fromRotation;\n    /**\n     * Creates a matrix from a vector scaling\n     * This is equivalent to (but much faster than):\n     *\n     *     mat3.identity(dest);\n     *     mat3.scale(dest, dest, vec);\n     *\n     * @param {mat3} out mat3 receiving operation result\n     * @param {vec2} v Scaling vector\n     * @returns {mat3} out\n     */\n    function fromScaling(out, v) {\n        out[0] = v[0];\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n        out[4] = v[1];\n        out[5] = 0;\n        out[6] = 0;\n        out[7] = 0;\n        out[8] = 1;\n        return out;\n    }\n    exports.fromScaling = fromScaling;\n    /**\n     * Copies the values from a mat2d into a mat3\n     *\n     * @param {mat3} out the receiving matrix\n     * @param {mat2d} a the matrix to copy\n     * @returns {mat3} out\n     **/\n    function fromMat2d(out, a) {\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = 0;\n        out[3] = a[2];\n        out[4] = a[3];\n        out[5] = 0;\n        out[6] = a[4];\n        out[7] = a[5];\n        out[8] = 1;\n        return out;\n    }\n    exports.fromMat2d = fromMat2d;\n    /**\n     * Calculates a 3x3 matrix from the given quaternion\n     *\n     * @param {mat3} out mat3 receiving operation result\n     * @param {quat} q Quaternion to create matrix from\n     *\n     * @returns {mat3} out\n     */\n    function fromQuat(out, q) {\n        var x = q[0], y = q[1], z = q[2], w = q[3];\n        var x2 = x + x;\n        var y2 = y + y;\n        var z2 = z + z;\n        var xx = x * x2;\n        var yx = y * x2;\n        var yy = y * y2;\n        var zx = z * x2;\n        var zy = z * y2;\n        var zz = z * z2;\n        var wx = w * x2;\n        var wy = w * y2;\n        var wz = w * z2;\n        out[0] = 1 - yy - zz;\n        out[3] = yx - wz;\n        out[6] = zx + wy;\n        out[1] = yx + wz;\n        out[4] = 1 - xx - zz;\n        out[7] = zy - wx;\n        out[2] = zx - wy;\n        out[5] = zy + wx;\n        out[8] = 1 - xx - yy;\n        return out;\n    }\n    exports.fromQuat = fromQuat;\n    /**\n     * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n     *\n     * @param {mat3} out mat3 receiving operation result\n     * @param {mat4} a Mat4 to derive the normal matrix from\n     *\n     * @returns {mat3} out\n     */\n    function normalFromMat4(out, a) {\n        var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n        var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n        var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n        var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n        var b00 = a00 * a11 - a01 * a10;\n        var b01 = a00 * a12 - a02 * a10;\n        var b02 = a00 * a13 - a03 * a10;\n        var b03 = a01 * a12 - a02 * a11;\n        var b04 = a01 * a13 - a03 * a11;\n        var b05 = a02 * a13 - a03 * a12;\n        var b06 = a20 * a31 - a21 * a30;\n        var b07 = a20 * a32 - a22 * a30;\n        var b08 = a20 * a33 - a23 * a30;\n        var b09 = a21 * a32 - a22 * a31;\n        var b10 = a21 * a33 - a23 * a31;\n        var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n        var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n        if (!det) {\n            return null;\n        }\n        det = 1.0 / det;\n        out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n        out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n        out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n        out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n        out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n        out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n        out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n        out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n        out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n        return out;\n    }\n    exports.normalFromMat4 = normalFromMat4;\n    /**\n     * Generates a 2D projection matrix with the given bounds\n     *\n     * @param {mat3} out mat3 frustum matrix will be written into\n     * @param {number} width Width of your gl context\n     * @param {number} height Height of gl context\n     * @returns {mat3} out\n     */\n    function projection(out, width, height) {\n        out[0] = 2 / width;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n        out[4] = -2 / height;\n        out[5] = 0;\n        out[6] = -1;\n        out[7] = 1;\n        out[8] = 1;\n        return out;\n    }\n    exports.projection = projection;\n    /**\n     * Returns a string representation of a mat3\n     *\n     * @param {mat3} a matrix to represent as a string\n     * @returns {String} string representation of the matrix\n     */\n    function str(a) {\n        return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n    }\n    exports.str = str;\n    /**\n     * Returns Frobenius norm of a mat3\n     *\n     * @param {mat3} a the matrix to calculate Frobenius norm of\n     * @returns {Number} Frobenius norm\n     */\n    function frob(a) {\n        return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n    }\n    exports.frob = frob;\n    /**\n     * Adds two mat3's\n     *\n     * @param {mat3} out the receiving matrix\n     * @param {mat3} a the first operand\n     * @param {mat3} b the second operand\n     * @returns {mat3} out\n     */\n    function add(out, a, b) {\n        out[0] = a[0] + b[0];\n        out[1] = a[1] + b[1];\n        out[2] = a[2] + b[2];\n        out[3] = a[3] + b[3];\n        out[4] = a[4] + b[4];\n        out[5] = a[5] + b[5];\n        out[6] = a[6] + b[6];\n        out[7] = a[7] + b[7];\n        out[8] = a[8] + b[8];\n        return out;\n    }\n    exports.add = add;\n    /**\n     * Subtracts matrix b from matrix a\n     *\n     * @param {mat3} out the receiving matrix\n     * @param {mat3} a the first operand\n     * @param {mat3} b the second operand\n     * @returns {mat3} out\n     */\n    function subtract(out, a, b) {\n        out[0] = a[0] - b[0];\n        out[1] = a[1] - b[1];\n        out[2] = a[2] - b[2];\n        out[3] = a[3] - b[3];\n        out[4] = a[4] - b[4];\n        out[5] = a[5] - b[5];\n        out[6] = a[6] - b[6];\n        out[7] = a[7] - b[7];\n        out[8] = a[8] - b[8];\n        return out;\n    }\n    exports.subtract = subtract;\n    /**\n     * Multiply each element of the matrix by a scalar.\n     *\n     * @param {mat3} out the receiving matrix\n     * @param {mat3} a the matrix to scale\n     * @param {Number} b amount to scale the matrix's elements by\n     * @returns {mat3} out\n     */\n    function multiplyScalar(out, a, b) {\n        out[0] = a[0] * b;\n        out[1] = a[1] * b;\n        out[2] = a[2] * b;\n        out[3] = a[3] * b;\n        out[4] = a[4] * b;\n        out[5] = a[5] * b;\n        out[6] = a[6] * b;\n        out[7] = a[7] * b;\n        out[8] = a[8] * b;\n        return out;\n    }\n    exports.multiplyScalar = multiplyScalar;\n    /**\n     * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n     *\n     * @param {mat3} out the receiving vector\n     * @param {mat3} a the first operand\n     * @param {mat3} b the second operand\n     * @param {Number} scale the amount to scale b's elements by before adding\n     * @returns {mat3} out\n     */\n    function multiplyScalarAndAdd(out, a, b, scale) {\n        out[0] = a[0] + b[0] * scale;\n        out[1] = a[1] + b[1] * scale;\n        out[2] = a[2] + b[2] * scale;\n        out[3] = a[3] + b[3] * scale;\n        out[4] = a[4] + b[4] * scale;\n        out[5] = a[5] + b[5] * scale;\n        out[6] = a[6] + b[6] * scale;\n        out[7] = a[7] + b[7] * scale;\n        out[8] = a[8] + b[8] * scale;\n        return out;\n    }\n    exports.multiplyScalarAndAdd = multiplyScalarAndAdd;\n    /**\n     * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n     *\n     * @param {mat3} a The first matrix.\n     * @param {mat3} b The second matrix.\n     * @returns {Boolean} True if the matrices are equal, false otherwise.\n     */\n    function exactEquals(a, b) {\n        return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n    }\n    exports.exactEquals = exactEquals;\n    /**\n     * Returns whether or not the matrices have approximately the same elements in the same position.\n     *\n     * @param {mat3} a The first matrix.\n     * @param {mat3} b The second matrix.\n     * @returns {Boolean} True if the matrices are equal, false otherwise.\n     */\n    function equals(a, b) {\n        var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7], a8 = a[8];\n        var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8];\n        return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n    }\n    exports.equals = equals;\n    /**\n     * Alias for {@link mat3.multiply}\n     * @function\n     */\n    exports.mul = multiply;\n    /**\n     * Alias for {@link mat3.subtract}\n     * @function\n     */\n    exports.sub = subtract;\n}\n","min_source":"function _(t,a,n,r,u){r();const o=t(\"tslib\").__importStar(t(\"68ca94c15c\"));function e(t,a,n){var r=a[0],u=a[1],o=a[2],e=a[3],i=a[4],c=a[5],s=a[6],M=a[7],h=a[8],f=n[0],b=n[1],l=n[2],m=n[3],v=n[4],E=n[5],P=n[6],S=n[7],A=n[8];return t[0]=f*r+b*e+l*s,t[1]=f*u+b*i+l*M,t[2]=f*o+b*c+l*h,t[3]=m*r+v*e+E*s,t[4]=m*u+v*i+E*M,t[5]=m*o+v*c+E*h,t[6]=P*r+S*e+A*s,t[7]=P*u+S*i+A*M,t[8]=P*o+S*c+A*h,t}function i(t,a,n){return t[0]=a[0]-n[0],t[1]=a[1]-n[1],t[2]=a[2]-n[2],t[3]=a[3]-n[3],t[4]=a[4]-n[4],t[5]=a[5]-n[5],t[6]=a[6]-n[6],t[7]=a[7]-n[7],t[8]=a[8]-n[8],t}n.create=function(){var t=new o.ARRAY_TYPE(9);return o.ARRAY_TYPE!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t},n.fromMat4=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[4],t[4]=a[5],t[5]=a[6],t[6]=a[8],t[7]=a[9],t[8]=a[10],t},n.clone=function(t){var a=new o.ARRAY_TYPE(9);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=t[4],a[5]=t[5],a[6]=t[6],a[7]=t[7],a[8]=t[8],a},n.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t},n.fromValues=function(t,a,n,r,u,e,i,c,s){var M=new o.ARRAY_TYPE(9);return M[0]=t,M[1]=a,M[2]=n,M[3]=r,M[4]=u,M[5]=e,M[6]=i,M[7]=c,M[8]=s,M},n.set=function(t,a,n,r,u,o,e,i,c,s){return t[0]=a,t[1]=n,t[2]=r,t[3]=u,t[4]=o,t[5]=e,t[6]=i,t[7]=c,t[8]=s,t},n.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},n.transpose=function(t,a){if(t===a){var n=a[1],r=a[2],u=a[5];t[1]=a[3],t[2]=a[6],t[3]=n,t[5]=a[7],t[6]=r,t[7]=u}else t[0]=a[0],t[1]=a[3],t[2]=a[6],t[3]=a[1],t[4]=a[4],t[5]=a[7],t[6]=a[2],t[7]=a[5],t[8]=a[8];return t},n.invert=function(t,a){var n=a[0],r=a[1],u=a[2],o=a[3],e=a[4],i=a[5],c=a[6],s=a[7],M=a[8],h=M*e-i*s,f=-M*o+i*c,b=s*o-e*c,l=n*h+r*f+u*b;return l?(l=1/l,t[0]=h*l,t[1]=(-M*r+u*s)*l,t[2]=(i*r-u*e)*l,t[3]=f*l,t[4]=(M*n-u*c)*l,t[5]=(-i*n+u*o)*l,t[6]=b*l,t[7]=(-s*n+r*c)*l,t[8]=(e*n-r*o)*l,t):null},n.adjoint=function(t,a){var n=a[0],r=a[1],u=a[2],o=a[3],e=a[4],i=a[5],c=a[6],s=a[7],M=a[8];return t[0]=e*M-i*s,t[1]=u*s-r*M,t[2]=r*i-u*e,t[3]=i*c-o*M,t[4]=n*M-u*c,t[5]=u*o-n*i,t[6]=o*s-e*c,t[7]=r*c-n*s,t[8]=n*e-r*o,t},n.determinant=function(t){var a=t[0],n=t[1],r=t[2],u=t[3],o=t[4],e=t[5],i=t[6],c=t[7],s=t[8];return a*(s*o-e*c)+n*(-s*u+e*i)+r*(c*u-o*i)},n.multiply=e,n.translate=function(t,a,n){var r=a[0],u=a[1],o=a[2],e=a[3],i=a[4],c=a[5],s=a[6],M=a[7],h=a[8],f=n[0],b=n[1];return t[0]=r,t[1]=u,t[2]=o,t[3]=e,t[4]=i,t[5]=c,t[6]=f*r+b*e+s,t[7]=f*u+b*i+M,t[8]=f*o+b*c+h,t},n.rotate=function(t,a,n){var r=a[0],u=a[1],o=a[2],e=a[3],i=a[4],c=a[5],s=a[6],M=a[7],h=a[8],f=Math.sin(n),b=Math.cos(n);return t[0]=b*r+f*e,t[1]=b*u+f*i,t[2]=b*o+f*c,t[3]=b*e-f*r,t[4]=b*i-f*u,t[5]=b*c-f*o,t[6]=s,t[7]=M,t[8]=h,t},n.scale=function(t,a,n){var r=n[0],u=n[1];return t[0]=r*a[0],t[1]=r*a[1],t[2]=r*a[2],t[3]=u*a[3],t[4]=u*a[4],t[5]=u*a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t},n.fromTranslation=function(t,a){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=a[0],t[7]=a[1],t[8]=1,t},n.fromRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=0,t[3]=-n,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},n.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=0,t[4]=a[1],t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},n.fromMat2d=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=0,t[3]=a[2],t[4]=a[3],t[5]=0,t[6]=a[4],t[7]=a[5],t[8]=1,t},n.fromQuat=function(t,a){var n=a[0],r=a[1],u=a[2],o=a[3],e=n+n,i=r+r,c=u+u,s=n*e,M=r*e,h=r*i,f=u*e,b=u*i,l=u*c,m=o*e,v=o*i,E=o*c;return t[0]=1-h-l,t[3]=M-E,t[6]=f+v,t[1]=M+E,t[4]=1-s-l,t[7]=b-m,t[2]=f-v,t[5]=b+m,t[8]=1-s-h,t},n.normalFromMat4=function(t,a){var n=a[0],r=a[1],u=a[2],o=a[3],e=a[4],i=a[5],c=a[6],s=a[7],M=a[8],h=a[9],f=a[10],b=a[11],l=a[12],m=a[13],v=a[14],E=a[15],P=n*i-r*e,S=n*c-u*e,A=n*s-o*e,x=r*c-u*i,d=r*s-o*i,I=u*s-o*c,L=M*m-h*l,N=M*v-f*l,O=M*E-b*l,R=h*v-f*m,p=h*E-b*m,Y=f*E-b*v,y=P*Y-S*p+A*R+x*O-d*N+I*L;return y?(y=1/y,t[0]=(i*Y-c*p+s*R)*y,t[1]=(c*O-e*Y-s*N)*y,t[2]=(e*p-i*O+s*L)*y,t[3]=(u*p-r*Y-o*R)*y,t[4]=(n*Y-u*O+o*N)*y,t[5]=(r*O-n*p-o*L)*y,t[6]=(m*I-v*d+E*x)*y,t[7]=(v*A-l*I-E*S)*y,t[8]=(l*d-m*A+E*P)*y,t):null},n.projection=function(t,a,n){return t[0]=2/a,t[1]=0,t[2]=0,t[3]=0,t[4]=-2/n,t[5]=0,t[6]=-1,t[7]=1,t[8]=1,t},n.str=function(t){return\"mat3(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\", \"+t[4]+\", \"+t[5]+\", \"+t[6]+\", \"+t[7]+\", \"+t[8]+\")\"},n.frob=function(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])},n.add=function(t,a,n){return t[0]=a[0]+n[0],t[1]=a[1]+n[1],t[2]=a[2]+n[2],t[3]=a[3]+n[3],t[4]=a[4]+n[4],t[5]=a[5]+n[5],t[6]=a[6]+n[6],t[7]=a[7]+n[7],t[8]=a[8]+n[8],t},n.subtract=i,n.multiplyScalar=function(t,a,n){return t[0]=a[0]*n,t[1]=a[1]*n,t[2]=a[2]*n,t[3]=a[3]*n,t[4]=a[4]*n,t[5]=a[5]*n,t[6]=a[6]*n,t[7]=a[7]*n,t[8]=a[8]*n,t},n.multiplyScalarAndAdd=function(t,a,n,r){return t[0]=a[0]+n[0]*r,t[1]=a[1]+n[1]*r,t[2]=a[2]+n[2]*r,t[3]=a[3]+n[3]*r,t[4]=a[4]+n[4]*r,t[5]=a[5]+n[5]*r,t[6]=a[6]+n[6]*r,t[7]=a[7]+n[7]*r,t[8]=a[8]+n[8]*r,t},n.exactEquals=function(t,a){return t[0]===a[0]&&t[1]===a[1]&&t[2]===a[2]&&t[3]===a[3]&&t[4]===a[4]&&t[5]===a[5]&&t[6]===a[6]&&t[7]===a[7]&&t[8]===a[8]},n.equals=function(t,a){var n=t[0],r=t[1],u=t[2],e=t[3],i=t[4],c=t[5],s=t[6],M=t[7],h=t[8],f=a[0],b=a[1],l=a[2],m=a[3],v=a[4],E=a[5],P=a[6],S=a[7],A=a[8];return Math.abs(n-f)<=o.EPSILON*Math.max(1,Math.abs(n),Math.abs(f))&&Math.abs(r-b)<=o.EPSILON*Math.max(1,Math.abs(r),Math.abs(b))&&Math.abs(u-l)<=o.EPSILON*Math.max(1,Math.abs(u),Math.abs(l))&&Math.abs(e-m)<=o.EPSILON*Math.max(1,Math.abs(e),Math.abs(m))&&Math.abs(i-v)<=o.EPSILON*Math.max(1,Math.abs(i),Math.abs(v))&&Math.abs(c-E)<=o.EPSILON*Math.max(1,Math.abs(c),Math.abs(E))&&Math.abs(s-P)<=o.EPSILON*Math.max(1,Math.abs(s),Math.abs(P))&&Math.abs(M-S)<=o.EPSILON*Math.max(1,Math.abs(M),Math.abs(S))&&Math.abs(h-A)<=o.EPSILON*Math.max(1,Math.abs(h),Math.abs(A))},n.mul=e,n.sub=i}\n//# sourceMappingURL=mat3.min.js.map","min_map":"{\"version\":3,\"file\":\"mat3.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"glMatrix\",\"__importStar\",\"multiply\",\"out\",\"a\",\"b\",\"a00\",\"a01\",\"a02\",\"a10\",\"a11\",\"a12\",\"a20\",\"a21\",\"a22\",\"b00\",\"b01\",\"b02\",\"b10\",\"b11\",\"b12\",\"b20\",\"b21\",\"b22\",\"subtract\",\"create\",\"ARRAY_TYPE\",\"Float32Array\",\"fromMat4\",\"clone\",\"copy\",\"fromValues\",\"m00\",\"m01\",\"m02\",\"m10\",\"m11\",\"m12\",\"m20\",\"m21\",\"m22\",\"set\",\"identity\",\"transpose\",\"invert\",\"det\",\"adjoint\",\"determinant\",\"translate\",\"v\",\"x\",\"y\",\"rotate\",\"rad\",\"s\",\"Math\",\"sin\",\"c\",\"cos\",\"scale\",\"fromTranslation\",\"fromRotation\",\"fromScaling\",\"fromMat2d\",\"fromQuat\",\"q\",\"z\",\"w\",\"x2\",\"y2\",\"z2\",\"xx\",\"yx\",\"yy\",\"zx\",\"zy\",\"zz\",\"wx\",\"wy\",\"wz\",\"normalFromMat4\",\"a03\",\"a13\",\"a23\",\"a30\",\"a31\",\"a32\",\"a33\",\"b03\",\"b04\",\"b05\",\"b06\",\"b07\",\"b08\",\"b09\",\"projection\",\"width\",\"height\",\"str\",\"frob\",\"hypot\",\"add\",\"multiplyScalar\",\"multiplyScalarAndAdd\",\"exactEquals\",\"equals\",\"a0\",\"a1\",\"a2\",\"a3\",\"a4\",\"a5\",\"a6\",\"a7\",\"a8\",\"b0\",\"b1\",\"b2\",\"b3\",\"b4\",\"b5\",\"b6\",\"b7\",\"b8\",\"abs\",\"EPSILON\",\"max\",\"mul\",\"sub\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/mat4.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"gl-matrix/esm/mat4.js","resolution":"ESM","id":"a427635f32","hash":"a427635f324760768c1fc1920dd36540a2b88cff678e54b84b31e3cef30cde4d","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sub = exports.mul = exports.equals = exports.exactEquals = exports.multiplyScalarAndAdd = exports.multiplyScalar = exports.subtract = exports.add = exports.frob = exports.str = exports.targetTo = exports.lookAt = exports.ortho = exports.perspectiveFromFieldOfView = exports.perspective = exports.frustum = exports.fromQuat = exports.fromRotationTranslationScaleOrigin = exports.fromRotationTranslationScale = exports.getRotation = exports.getScaling = exports.getTranslation = exports.fromQuat2 = exports.fromRotationTranslation = exports.fromZRotation = exports.fromYRotation = exports.fromXRotation = exports.fromRotation = exports.fromScaling = exports.fromTranslation = exports.rotateZ = exports.rotateY = exports.rotateX = exports.rotate = exports.scale = exports.translate = exports.multiply = exports.determinant = exports.adjoint = exports.invert = exports.transpose = exports.identity = exports.set = exports.fromValues = exports.copy = exports.clone = exports.create = void 0;\nconst tslib_1 = require(\"tslib\");\nconst glMatrix = tslib_1.__importStar(require(\"./common.js\"));\n/**\n * 4x4 Matrix<br>Format: column-major, when typed out it looks like row-major<br>The matrices are being post multiplied.\n * @module mat4\n */\n/**\n * Creates a new identity mat4\n *\n * @returns {mat4} a new 4x4 matrix\n */\nfunction create() {\n    var out = new glMatrix.ARRAY_TYPE(16);\n    if (glMatrix.ARRAY_TYPE != Float32Array) {\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n        out[4] = 0;\n        out[6] = 0;\n        out[7] = 0;\n        out[8] = 0;\n        out[9] = 0;\n        out[11] = 0;\n        out[12] = 0;\n        out[13] = 0;\n        out[14] = 0;\n    }\n    out[0] = 1;\n    out[5] = 1;\n    out[10] = 1;\n    out[15] = 1;\n    return out;\n}\nexports.create = create;\n/**\n * Creates a new mat4 initialized with values from an existing matrix\n *\n * @param {mat4} a matrix to clone\n * @returns {mat4} a new 4x4 matrix\n */\nfunction clone(a) {\n    var out = new glMatrix.ARRAY_TYPE(16);\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[4] = a[4];\n    out[5] = a[5];\n    out[6] = a[6];\n    out[7] = a[7];\n    out[8] = a[8];\n    out[9] = a[9];\n    out[10] = a[10];\n    out[11] = a[11];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n    return out;\n}\nexports.clone = clone;\n/**\n * Copy the values from one mat4 to another\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction copy(out, a) {\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[4] = a[4];\n    out[5] = a[5];\n    out[6] = a[6];\n    out[7] = a[7];\n    out[8] = a[8];\n    out[9] = a[9];\n    out[10] = a[10];\n    out[11] = a[11];\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n    return out;\n}\nexports.copy = copy;\n/**\n * Create a new mat4 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} A new mat4\n */\nfunction fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n    var out = new glMatrix.ARRAY_TYPE(16);\n    out[0] = m00;\n    out[1] = m01;\n    out[2] = m02;\n    out[3] = m03;\n    out[4] = m10;\n    out[5] = m11;\n    out[6] = m12;\n    out[7] = m13;\n    out[8] = m20;\n    out[9] = m21;\n    out[10] = m22;\n    out[11] = m23;\n    out[12] = m30;\n    out[13] = m31;\n    out[14] = m32;\n    out[15] = m33;\n    return out;\n}\nexports.fromValues = fromValues;\n/**\n * Set the components of a mat4 to the given values\n *\n * @param {mat4} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m03 Component in column 0, row 3 position (index 3)\n * @param {Number} m10 Component in column 1, row 0 position (index 4)\n * @param {Number} m11 Component in column 1, row 1 position (index 5)\n * @param {Number} m12 Component in column 1, row 2 position (index 6)\n * @param {Number} m13 Component in column 1, row 3 position (index 7)\n * @param {Number} m20 Component in column 2, row 0 position (index 8)\n * @param {Number} m21 Component in column 2, row 1 position (index 9)\n * @param {Number} m22 Component in column 2, row 2 position (index 10)\n * @param {Number} m23 Component in column 2, row 3 position (index 11)\n * @param {Number} m30 Component in column 3, row 0 position (index 12)\n * @param {Number} m31 Component in column 3, row 1 position (index 13)\n * @param {Number} m32 Component in column 3, row 2 position (index 14)\n * @param {Number} m33 Component in column 3, row 3 position (index 15)\n * @returns {mat4} out\n */\nfunction set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n    out[0] = m00;\n    out[1] = m01;\n    out[2] = m02;\n    out[3] = m03;\n    out[4] = m10;\n    out[5] = m11;\n    out[6] = m12;\n    out[7] = m13;\n    out[8] = m20;\n    out[9] = m21;\n    out[10] = m22;\n    out[11] = m23;\n    out[12] = m30;\n    out[13] = m31;\n    out[14] = m32;\n    out[15] = m33;\n    return out;\n}\nexports.set = set;\n/**\n * Set a mat4 to the identity matrix\n *\n * @param {mat4} out the receiving matrix\n * @returns {mat4} out\n */\nfunction identity(out) {\n    out[0] = 1;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = 1;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[10] = 1;\n    out[11] = 0;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n    out[15] = 1;\n    return out;\n}\nexports.identity = identity;\n/**\n * Transpose the values of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction transpose(out, a) {\n    // If we are transposing ourselves we can skip a few steps but have to cache some values\n    if (out === a) {\n        var a01 = a[1], a02 = a[2], a03 = a[3];\n        var a12 = a[6], a13 = a[7];\n        var a23 = a[11];\n        out[1] = a[4];\n        out[2] = a[8];\n        out[3] = a[12];\n        out[4] = a01;\n        out[6] = a[9];\n        out[7] = a[13];\n        out[8] = a02;\n        out[9] = a12;\n        out[11] = a[14];\n        out[12] = a03;\n        out[13] = a13;\n        out[14] = a23;\n    }\n    else {\n        out[0] = a[0];\n        out[1] = a[4];\n        out[2] = a[8];\n        out[3] = a[12];\n        out[4] = a[1];\n        out[5] = a[5];\n        out[6] = a[9];\n        out[7] = a[13];\n        out[8] = a[2];\n        out[9] = a[6];\n        out[10] = a[10];\n        out[11] = a[14];\n        out[12] = a[3];\n        out[13] = a[7];\n        out[14] = a[11];\n        out[15] = a[15];\n    }\n    return out;\n}\nexports.transpose = transpose;\n/**\n * Inverts a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction invert(out, a) {\n    var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n    var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n    var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n    var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n    var b00 = a00 * a11 - a01 * a10;\n    var b01 = a00 * a12 - a02 * a10;\n    var b02 = a00 * a13 - a03 * a10;\n    var b03 = a01 * a12 - a02 * a11;\n    var b04 = a01 * a13 - a03 * a11;\n    var b05 = a02 * a13 - a03 * a12;\n    var b06 = a20 * a31 - a21 * a30;\n    var b07 = a20 * a32 - a22 * a30;\n    var b08 = a20 * a33 - a23 * a30;\n    var b09 = a21 * a32 - a22 * a31;\n    var b10 = a21 * a33 - a23 * a31;\n    var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n    var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n    if (!det) {\n        return null;\n    }\n    det = 1.0 / det;\n    out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n    out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n    out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n    out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n    out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n    out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n    out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n    out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n    out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n    out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n    out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n    out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n    out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n    out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n    out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n    out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n    return out;\n}\nexports.invert = invert;\n/**\n * Calculates the adjugate of a mat4\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the source matrix\n * @returns {mat4} out\n */\nfunction adjoint(out, a) {\n    var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n    var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n    var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n    var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n    out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n    out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n    out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n    out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n    out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n    out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n    out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n    out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n    out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n    out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n    out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n    out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n    out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n    out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n    out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n    out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n    return out;\n}\nexports.adjoint = adjoint;\n/**\n * Calculates the determinant of a mat4\n *\n * @param {mat4} a the source matrix\n * @returns {Number} determinant of a\n */\nfunction determinant(a) {\n    var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n    var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n    var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n    var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n    var b00 = a00 * a11 - a01 * a10;\n    var b01 = a00 * a12 - a02 * a10;\n    var b02 = a00 * a13 - a03 * a10;\n    var b03 = a01 * a12 - a02 * a11;\n    var b04 = a01 * a13 - a03 * a11;\n    var b05 = a02 * a13 - a03 * a12;\n    var b06 = a20 * a31 - a21 * a30;\n    var b07 = a20 * a32 - a22 * a30;\n    var b08 = a20 * a33 - a23 * a30;\n    var b09 = a21 * a32 - a22 * a31;\n    var b10 = a21 * a33 - a23 * a31;\n    var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n    return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n}\nexports.determinant = determinant;\n/**\n * Multiplies two mat4s\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the first operand\n * @param {mat4} b the second operand\n * @returns {mat4} out\n */\nfunction multiply(out, a, b) {\n    var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n    var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n    var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n    var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; // Cache only the current line of the second matrix\n    var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n    out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n    out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n    out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n    out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n    b0 = b[4];\n    b1 = b[5];\n    b2 = b[6];\n    b3 = b[7];\n    out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n    out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n    out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n    out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n    b0 = b[8];\n    b1 = b[9];\n    b2 = b[10];\n    b3 = b[11];\n    out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n    out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n    out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n    out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n    b0 = b[12];\n    b1 = b[13];\n    b2 = b[14];\n    b3 = b[15];\n    out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n    out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n    out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n    out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n    return out;\n}\nexports.multiply = multiply;\n/**\n * Translate a mat4 by the given vector\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to translate\n * @param {vec3} v vector to translate by\n * @returns {mat4} out\n */\nfunction translate(out, a, v) {\n    var x = v[0], y = v[1], z = v[2];\n    var a00, a01, a02, a03;\n    var a10, a11, a12, a13;\n    var a20, a21, a22, a23;\n    if (a === out) {\n        out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n        out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n        out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n        out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n    }\n    else {\n        a00 = a[0];\n        a01 = a[1];\n        a02 = a[2];\n        a03 = a[3];\n        a10 = a[4];\n        a11 = a[5];\n        a12 = a[6];\n        a13 = a[7];\n        a20 = a[8];\n        a21 = a[9];\n        a22 = a[10];\n        a23 = a[11];\n        out[0] = a00;\n        out[1] = a01;\n        out[2] = a02;\n        out[3] = a03;\n        out[4] = a10;\n        out[5] = a11;\n        out[6] = a12;\n        out[7] = a13;\n        out[8] = a20;\n        out[9] = a21;\n        out[10] = a22;\n        out[11] = a23;\n        out[12] = a00 * x + a10 * y + a20 * z + a[12];\n        out[13] = a01 * x + a11 * y + a21 * z + a[13];\n        out[14] = a02 * x + a12 * y + a22 * z + a[14];\n        out[15] = a03 * x + a13 * y + a23 * z + a[15];\n    }\n    return out;\n}\nexports.translate = translate;\n/**\n * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to scale\n * @param {vec3} v the vec3 to scale the matrix by\n * @returns {mat4} out\n **/\nfunction scale(out, a, v) {\n    var x = v[0], y = v[1], z = v[2];\n    out[0] = a[0] * x;\n    out[1] = a[1] * x;\n    out[2] = a[2] * x;\n    out[3] = a[3] * x;\n    out[4] = a[4] * y;\n    out[5] = a[5] * y;\n    out[6] = a[6] * y;\n    out[7] = a[7] * y;\n    out[8] = a[8] * z;\n    out[9] = a[9] * z;\n    out[10] = a[10] * z;\n    out[11] = a[11] * z;\n    out[12] = a[12];\n    out[13] = a[13];\n    out[14] = a[14];\n    out[15] = a[15];\n    return out;\n}\nexports.scale = scale;\n/**\n * Rotates a mat4 by the given angle around the given axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @param {vec3} axis the axis to rotate around\n * @returns {mat4} out\n */\nfunction rotate(out, a, rad, axis) {\n    var x = axis[0], y = axis[1], z = axis[2];\n    var len = Math.hypot(x, y, z);\n    var s, c, t;\n    var a00, a01, a02, a03;\n    var a10, a11, a12, a13;\n    var a20, a21, a22, a23;\n    var b00, b01, b02;\n    var b10, b11, b12;\n    var b20, b21, b22;\n    if (len < glMatrix.EPSILON) {\n        return null;\n    }\n    len = 1 / len;\n    x *= len;\n    y *= len;\n    z *= len;\n    s = Math.sin(rad);\n    c = Math.cos(rad);\n    t = 1 - c;\n    a00 = a[0];\n    a01 = a[1];\n    a02 = a[2];\n    a03 = a[3];\n    a10 = a[4];\n    a11 = a[5];\n    a12 = a[6];\n    a13 = a[7];\n    a20 = a[8];\n    a21 = a[9];\n    a22 = a[10];\n    a23 = a[11]; // Construct the elements of the rotation matrix\n    b00 = x * x * t + c;\n    b01 = y * x * t + z * s;\n    b02 = z * x * t - y * s;\n    b10 = x * y * t - z * s;\n    b11 = y * y * t + c;\n    b12 = z * y * t + x * s;\n    b20 = x * z * t + y * s;\n    b21 = y * z * t - x * s;\n    b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n    out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n    out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n    out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n    out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n    out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n    out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n    out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n    out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n    out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n    out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n    out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n    out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n    if (a !== out) {\n        // If the source and destination differ, copy the unchanged last row\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n    }\n    return out;\n}\nexports.rotate = rotate;\n/**\n * Rotates a matrix by the given angle around the X axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction rotateX(out, a, rad) {\n    var s = Math.sin(rad);\n    var c = Math.cos(rad);\n    var a10 = a[4];\n    var a11 = a[5];\n    var a12 = a[6];\n    var a13 = a[7];\n    var a20 = a[8];\n    var a21 = a[9];\n    var a22 = a[10];\n    var a23 = a[11];\n    if (a !== out) {\n        // If the source and destination differ, copy the unchanged rows\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = a[2];\n        out[3] = a[3];\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n    } // Perform axis-specific matrix multiplication\n    out[4] = a10 * c + a20 * s;\n    out[5] = a11 * c + a21 * s;\n    out[6] = a12 * c + a22 * s;\n    out[7] = a13 * c + a23 * s;\n    out[8] = a20 * c - a10 * s;\n    out[9] = a21 * c - a11 * s;\n    out[10] = a22 * c - a12 * s;\n    out[11] = a23 * c - a13 * s;\n    return out;\n}\nexports.rotateX = rotateX;\n/**\n * Rotates a matrix by the given angle around the Y axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction rotateY(out, a, rad) {\n    var s = Math.sin(rad);\n    var c = Math.cos(rad);\n    var a00 = a[0];\n    var a01 = a[1];\n    var a02 = a[2];\n    var a03 = a[3];\n    var a20 = a[8];\n    var a21 = a[9];\n    var a22 = a[10];\n    var a23 = a[11];\n    if (a !== out) {\n        // If the source and destination differ, copy the unchanged rows\n        out[4] = a[4];\n        out[5] = a[5];\n        out[6] = a[6];\n        out[7] = a[7];\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n    } // Perform axis-specific matrix multiplication\n    out[0] = a00 * c - a20 * s;\n    out[1] = a01 * c - a21 * s;\n    out[2] = a02 * c - a22 * s;\n    out[3] = a03 * c - a23 * s;\n    out[8] = a00 * s + a20 * c;\n    out[9] = a01 * s + a21 * c;\n    out[10] = a02 * s + a22 * c;\n    out[11] = a03 * s + a23 * c;\n    return out;\n}\nexports.rotateY = rotateY;\n/**\n * Rotates a matrix by the given angle around the Z axis\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction rotateZ(out, a, rad) {\n    var s = Math.sin(rad);\n    var c = Math.cos(rad);\n    var a00 = a[0];\n    var a01 = a[1];\n    var a02 = a[2];\n    var a03 = a[3];\n    var a10 = a[4];\n    var a11 = a[5];\n    var a12 = a[6];\n    var a13 = a[7];\n    if (a !== out) {\n        // If the source and destination differ, copy the unchanged last row\n        out[8] = a[8];\n        out[9] = a[9];\n        out[10] = a[10];\n        out[11] = a[11];\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n    } // Perform axis-specific matrix multiplication\n    out[0] = a00 * c + a10 * s;\n    out[1] = a01 * c + a11 * s;\n    out[2] = a02 * c + a12 * s;\n    out[3] = a03 * c + a13 * s;\n    out[4] = a10 * c - a00 * s;\n    out[5] = a11 * c - a01 * s;\n    out[6] = a12 * c - a02 * s;\n    out[7] = a13 * c - a03 * s;\n    return out;\n}\nexports.rotateZ = rotateZ;\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {vec3} v Translation vector\n * @returns {mat4} out\n */\nfunction fromTranslation(out, v) {\n    out[0] = 1;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = 1;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[10] = 1;\n    out[11] = 0;\n    out[12] = v[0];\n    out[13] = v[1];\n    out[14] = v[2];\n    out[15] = 1;\n    return out;\n}\nexports.fromTranslation = fromTranslation;\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.scale(dest, dest, vec);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {vec3} v Scaling vector\n * @returns {mat4} out\n */\nfunction fromScaling(out, v) {\n    out[0] = v[0];\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = v[1];\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[10] = v[2];\n    out[11] = 0;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n    out[15] = 1;\n    return out;\n}\nexports.fromScaling = fromScaling;\n/**\n * Creates a matrix from a given angle around a given axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotate(dest, dest, rad, axis);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @param {vec3} axis the axis to rotate around\n * @returns {mat4} out\n */\nfunction fromRotation(out, rad, axis) {\n    var x = axis[0], y = axis[1], z = axis[2];\n    var len = Math.hypot(x, y, z);\n    var s, c, t;\n    if (len < glMatrix.EPSILON) {\n        return null;\n    }\n    len = 1 / len;\n    x *= len;\n    y *= len;\n    z *= len;\n    s = Math.sin(rad);\n    c = Math.cos(rad);\n    t = 1 - c; // Perform rotation-specific matrix multiplication\n    out[0] = x * x * t + c;\n    out[1] = y * x * t + z * s;\n    out[2] = z * x * t - y * s;\n    out[3] = 0;\n    out[4] = x * y * t - z * s;\n    out[5] = y * y * t + c;\n    out[6] = z * y * t + x * s;\n    out[7] = 0;\n    out[8] = x * z * t + y * s;\n    out[9] = y * z * t - x * s;\n    out[10] = z * z * t + c;\n    out[11] = 0;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n    out[15] = 1;\n    return out;\n}\nexports.fromRotation = fromRotation;\n/**\n * Creates a matrix from the given angle around the X axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotateX(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction fromXRotation(out, rad) {\n    var s = Math.sin(rad);\n    var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n    out[0] = 1;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = c;\n    out[6] = s;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = -s;\n    out[10] = c;\n    out[11] = 0;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n    out[15] = 1;\n    return out;\n}\nexports.fromXRotation = fromXRotation;\n/**\n * Creates a matrix from the given angle around the Y axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotateY(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction fromYRotation(out, rad) {\n    var s = Math.sin(rad);\n    var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n    out[0] = c;\n    out[1] = 0;\n    out[2] = -s;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = 1;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = s;\n    out[9] = 0;\n    out[10] = c;\n    out[11] = 0;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n    out[15] = 1;\n    return out;\n}\nexports.fromYRotation = fromYRotation;\n/**\n * Creates a matrix from the given angle around the Z axis\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.rotateZ(dest, dest, rad);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat4} out\n */\nfunction fromZRotation(out, rad) {\n    var s = Math.sin(rad);\n    var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n    out[0] = c;\n    out[1] = s;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = -s;\n    out[5] = c;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[10] = 1;\n    out[11] = 0;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n    out[15] = 1;\n    return out;\n}\nexports.fromZRotation = fromZRotation;\n/**\n * Creates a matrix from a quaternion rotation and vector translation\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, vec);\n *     let quatMat = mat4.create();\n *     quat4.toMat4(quat, quatMat);\n *     mat4.multiply(dest, quatMat);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {vec3} v Translation vector\n * @returns {mat4} out\n */\nfunction fromRotationTranslation(out, q, v) {\n    // Quaternion math\n    var x = q[0], y = q[1], z = q[2], w = q[3];\n    var x2 = x + x;\n    var y2 = y + y;\n    var z2 = z + z;\n    var xx = x * x2;\n    var xy = x * y2;\n    var xz = x * z2;\n    var yy = y * y2;\n    var yz = y * z2;\n    var zz = z * z2;\n    var wx = w * x2;\n    var wy = w * y2;\n    var wz = w * z2;\n    out[0] = 1 - (yy + zz);\n    out[1] = xy + wz;\n    out[2] = xz - wy;\n    out[3] = 0;\n    out[4] = xy - wz;\n    out[5] = 1 - (xx + zz);\n    out[6] = yz + wx;\n    out[7] = 0;\n    out[8] = xz + wy;\n    out[9] = yz - wx;\n    out[10] = 1 - (xx + yy);\n    out[11] = 0;\n    out[12] = v[0];\n    out[13] = v[1];\n    out[14] = v[2];\n    out[15] = 1;\n    return out;\n}\nexports.fromRotationTranslation = fromRotationTranslation;\n/**\n * Creates a new mat4 from a dual quat.\n *\n * @param {mat4} out Matrix\n * @param {quat2} a Dual Quaternion\n * @returns {mat4} mat4 receiving operation result\n */\nfunction fromQuat2(out, a) {\n    var translation = new glMatrix.ARRAY_TYPE(3);\n    var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7];\n    var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n    if (magnitude > 0) {\n        translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n        translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n        translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n    }\n    else {\n        translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n        translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n        translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n    }\n    fromRotationTranslation(out, a, translation);\n    return out;\n}\nexports.fromQuat2 = fromQuat2;\n/**\n * Returns the translation vector component of a transformation\n *  matrix. If a matrix is built with fromRotationTranslation,\n *  the returned vector will be the same as the translation vector\n *  originally supplied.\n * @param  {vec3} out Vector to receive translation component\n * @param  {mat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\nfunction getTranslation(out, mat) {\n    out[0] = mat[12];\n    out[1] = mat[13];\n    out[2] = mat[14];\n    return out;\n}\nexports.getTranslation = getTranslation;\n/**\n * Returns the scaling factor component of a transformation\n *  matrix. If a matrix is built with fromRotationTranslationScale\n *  with a normalized Quaternion paramter, the returned vector will be\n *  the same as the scaling vector\n *  originally supplied.\n * @param  {vec3} out Vector to receive scaling factor component\n * @param  {mat4} mat Matrix to be decomposed (input)\n * @return {vec3} out\n */\nfunction getScaling(out, mat) {\n    var m11 = mat[0];\n    var m12 = mat[1];\n    var m13 = mat[2];\n    var m21 = mat[4];\n    var m22 = mat[5];\n    var m23 = mat[6];\n    var m31 = mat[8];\n    var m32 = mat[9];\n    var m33 = mat[10];\n    out[0] = Math.hypot(m11, m12, m13);\n    out[1] = Math.hypot(m21, m22, m23);\n    out[2] = Math.hypot(m31, m32, m33);\n    return out;\n}\nexports.getScaling = getScaling;\n/**\n * Returns a quaternion representing the rotational component\n *  of a transformation matrix. If a matrix is built with\n *  fromRotationTranslation, the returned quaternion will be the\n *  same as the quaternion originally supplied.\n * @param {quat} out Quaternion to receive the rotation component\n * @param {mat4} mat Matrix to be decomposed (input)\n * @return {quat} out\n */\nfunction getRotation(out, mat) {\n    var scaling = new glMatrix.ARRAY_TYPE(3);\n    getScaling(scaling, mat);\n    var is1 = 1 / scaling[0];\n    var is2 = 1 / scaling[1];\n    var is3 = 1 / scaling[2];\n    var sm11 = mat[0] * is1;\n    var sm12 = mat[1] * is2;\n    var sm13 = mat[2] * is3;\n    var sm21 = mat[4] * is1;\n    var sm22 = mat[5] * is2;\n    var sm23 = mat[6] * is3;\n    var sm31 = mat[8] * is1;\n    var sm32 = mat[9] * is2;\n    var sm33 = mat[10] * is3;\n    var trace = sm11 + sm22 + sm33;\n    var S = 0;\n    if (trace > 0) {\n        S = Math.sqrt(trace + 1.0) * 2;\n        out[3] = 0.25 * S;\n        out[0] = (sm23 - sm32) / S;\n        out[1] = (sm31 - sm13) / S;\n        out[2] = (sm12 - sm21) / S;\n    }\n    else if (sm11 > sm22 && sm11 > sm33) {\n        S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n        out[3] = (sm23 - sm32) / S;\n        out[0] = 0.25 * S;\n        out[1] = (sm12 + sm21) / S;\n        out[2] = (sm31 + sm13) / S;\n    }\n    else if (sm22 > sm33) {\n        S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n        out[3] = (sm31 - sm13) / S;\n        out[0] = (sm12 + sm21) / S;\n        out[1] = 0.25 * S;\n        out[2] = (sm23 + sm32) / S;\n    }\n    else {\n        S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n        out[3] = (sm12 - sm21) / S;\n        out[0] = (sm31 + sm13) / S;\n        out[1] = (sm23 + sm32) / S;\n        out[2] = 0.25 * S;\n    }\n    return out;\n}\nexports.getRotation = getRotation;\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, vec);\n *     let quatMat = mat4.create();\n *     quat4.toMat4(quat, quatMat);\n *     mat4.multiply(dest, quatMat);\n *     mat4.scale(dest, scale)\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {vec3} v Translation vector\n * @param {vec3} s Scaling vector\n * @returns {mat4} out\n */\nfunction fromRotationTranslationScale(out, q, v, s) {\n    // Quaternion math\n    var x = q[0], y = q[1], z = q[2], w = q[3];\n    var x2 = x + x;\n    var y2 = y + y;\n    var z2 = z + z;\n    var xx = x * x2;\n    var xy = x * y2;\n    var xz = x * z2;\n    var yy = y * y2;\n    var yz = y * z2;\n    var zz = z * z2;\n    var wx = w * x2;\n    var wy = w * y2;\n    var wz = w * z2;\n    var sx = s[0];\n    var sy = s[1];\n    var sz = s[2];\n    out[0] = (1 - (yy + zz)) * sx;\n    out[1] = (xy + wz) * sx;\n    out[2] = (xz - wy) * sx;\n    out[3] = 0;\n    out[4] = (xy - wz) * sy;\n    out[5] = (1 - (xx + zz)) * sy;\n    out[6] = (yz + wx) * sy;\n    out[7] = 0;\n    out[8] = (xz + wy) * sz;\n    out[9] = (yz - wx) * sz;\n    out[10] = (1 - (xx + yy)) * sz;\n    out[11] = 0;\n    out[12] = v[0];\n    out[13] = v[1];\n    out[14] = v[2];\n    out[15] = 1;\n    return out;\n}\nexports.fromRotationTranslationScale = fromRotationTranslationScale;\n/**\n * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n * This is equivalent to (but much faster than):\n *\n *     mat4.identity(dest);\n *     mat4.translate(dest, vec);\n *     mat4.translate(dest, origin);\n *     let quatMat = mat4.create();\n *     quat4.toMat4(quat, quatMat);\n *     mat4.multiply(dest, quatMat);\n *     mat4.scale(dest, scale)\n *     mat4.translate(dest, negativeOrigin);\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat4} q Rotation quaternion\n * @param {vec3} v Translation vector\n * @param {vec3} s Scaling vector\n * @param {vec3} o The origin vector around which to scale and rotate\n * @returns {mat4} out\n */\nfunction fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n    // Quaternion math\n    var x = q[0], y = q[1], z = q[2], w = q[3];\n    var x2 = x + x;\n    var y2 = y + y;\n    var z2 = z + z;\n    var xx = x * x2;\n    var xy = x * y2;\n    var xz = x * z2;\n    var yy = y * y2;\n    var yz = y * z2;\n    var zz = z * z2;\n    var wx = w * x2;\n    var wy = w * y2;\n    var wz = w * z2;\n    var sx = s[0];\n    var sy = s[1];\n    var sz = s[2];\n    var ox = o[0];\n    var oy = o[1];\n    var oz = o[2];\n    var out0 = (1 - (yy + zz)) * sx;\n    var out1 = (xy + wz) * sx;\n    var out2 = (xz - wy) * sx;\n    var out4 = (xy - wz) * sy;\n    var out5 = (1 - (xx + zz)) * sy;\n    var out6 = (yz + wx) * sy;\n    var out8 = (xz + wy) * sz;\n    var out9 = (yz - wx) * sz;\n    var out10 = (1 - (xx + yy)) * sz;\n    out[0] = out0;\n    out[1] = out1;\n    out[2] = out2;\n    out[3] = 0;\n    out[4] = out4;\n    out[5] = out5;\n    out[6] = out6;\n    out[7] = 0;\n    out[8] = out8;\n    out[9] = out9;\n    out[10] = out10;\n    out[11] = 0;\n    out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n    out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n    out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n    out[15] = 1;\n    return out;\n}\nexports.fromRotationTranslationScaleOrigin = fromRotationTranslationScaleOrigin;\n/**\n * Calculates a 4x4 matrix from the given quaternion\n *\n * @param {mat4} out mat4 receiving operation result\n * @param {quat} q Quaternion to create matrix from\n *\n * @returns {mat4} out\n */\nfunction fromQuat(out, q) {\n    var x = q[0], y = q[1], z = q[2], w = q[3];\n    var x2 = x + x;\n    var y2 = y + y;\n    var z2 = z + z;\n    var xx = x * x2;\n    var yx = y * x2;\n    var yy = y * y2;\n    var zx = z * x2;\n    var zy = z * y2;\n    var zz = z * z2;\n    var wx = w * x2;\n    var wy = w * y2;\n    var wz = w * z2;\n    out[0] = 1 - yy - zz;\n    out[1] = yx + wz;\n    out[2] = zx - wy;\n    out[3] = 0;\n    out[4] = yx - wz;\n    out[5] = 1 - xx - zz;\n    out[6] = zy + wx;\n    out[7] = 0;\n    out[8] = zx + wy;\n    out[9] = zy - wx;\n    out[10] = 1 - xx - yy;\n    out[11] = 0;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = 0;\n    out[15] = 1;\n    return out;\n}\nexports.fromQuat = fromQuat;\n/**\n * Generates a frustum matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Number} left Left bound of the frustum\n * @param {Number} right Right bound of the frustum\n * @param {Number} bottom Bottom bound of the frustum\n * @param {Number} top Top bound of the frustum\n * @param {Number} near Near bound of the frustum\n * @param {Number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction frustum(out, left, right, bottom, top, near, far) {\n    var rl = 1 / (right - left);\n    var tb = 1 / (top - bottom);\n    var nf = 1 / (near - far);\n    out[0] = near * 2 * rl;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = near * 2 * tb;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = (right + left) * rl;\n    out[9] = (top + bottom) * tb;\n    out[10] = (far + near) * nf;\n    out[11] = -1;\n    out[12] = 0;\n    out[13] = 0;\n    out[14] = far * near * 2 * nf;\n    out[15] = 0;\n    return out;\n}\nexports.frustum = frustum;\n/**\n * Generates a perspective projection matrix with the given bounds.\n * Passing null/undefined/no value for far will generate infinite projection matrix.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} fovy Vertical field of view in radians\n * @param {number} aspect Aspect ratio. typically viewport width/height\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum, can be null or Infinity\n * @returns {mat4} out\n */\nfunction perspective(out, fovy, aspect, near, far) {\n    var f = 1.0 / Math.tan(fovy / 2), nf;\n    out[0] = f / aspect;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = f;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[11] = -1;\n    out[12] = 0;\n    out[13] = 0;\n    out[15] = 0;\n    if (far != null && far !== Infinity) {\n        nf = 1 / (near - far);\n        out[10] = (far + near) * nf;\n        out[14] = 2 * far * near * nf;\n    }\n    else {\n        out[10] = -1;\n        out[14] = -2 * near;\n    }\n    return out;\n}\nexports.perspective = perspective;\n/**\n * Generates a perspective projection matrix with the given field of view.\n * This is primarily useful for generating projection matrices to be used\n * with the still experiemental WebVR API.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction perspectiveFromFieldOfView(out, fov, near, far) {\n    var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n    var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n    var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n    var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n    var xScale = 2.0 / (leftTan + rightTan);\n    var yScale = 2.0 / (upTan + downTan);\n    out[0] = xScale;\n    out[1] = 0.0;\n    out[2] = 0.0;\n    out[3] = 0.0;\n    out[4] = 0.0;\n    out[5] = yScale;\n    out[6] = 0.0;\n    out[7] = 0.0;\n    out[8] = -((leftTan - rightTan) * xScale * 0.5);\n    out[9] = (upTan - downTan) * yScale * 0.5;\n    out[10] = far / (near - far);\n    out[11] = -1.0;\n    out[12] = 0.0;\n    out[13] = 0.0;\n    out[14] = far * near / (near - far);\n    out[15] = 0.0;\n    return out;\n}\nexports.perspectiveFromFieldOfView = perspectiveFromFieldOfView;\n/**\n * Generates a orthogonal projection matrix with the given bounds\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {number} left Left bound of the frustum\n * @param {number} right Right bound of the frustum\n * @param {number} bottom Bottom bound of the frustum\n * @param {number} top Top bound of the frustum\n * @param {number} near Near bound of the frustum\n * @param {number} far Far bound of the frustum\n * @returns {mat4} out\n */\nfunction ortho(out, left, right, bottom, top, near, far) {\n    var lr = 1 / (left - right);\n    var bt = 1 / (bottom - top);\n    var nf = 1 / (near - far);\n    out[0] = -2 * lr;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 0;\n    out[4] = 0;\n    out[5] = -2 * bt;\n    out[6] = 0;\n    out[7] = 0;\n    out[8] = 0;\n    out[9] = 0;\n    out[10] = 2 * nf;\n    out[11] = 0;\n    out[12] = (left + right) * lr;\n    out[13] = (top + bottom) * bt;\n    out[14] = (far + near) * nf;\n    out[15] = 1;\n    return out;\n}\nexports.ortho = ortho;\n/**\n * Generates a look-at matrix with the given eye position, focal point, and up axis.\n * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {vec3} eye Position of the viewer\n * @param {vec3} center Point the viewer is looking at\n * @param {vec3} up vec3 pointing up\n * @returns {mat4} out\n */\nfunction lookAt(out, eye, center, up) {\n    var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n    var eyex = eye[0];\n    var eyey = eye[1];\n    var eyez = eye[2];\n    var upx = up[0];\n    var upy = up[1];\n    var upz = up[2];\n    var centerx = center[0];\n    var centery = center[1];\n    var centerz = center[2];\n    if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n        return identity(out);\n    }\n    z0 = eyex - centerx;\n    z1 = eyey - centery;\n    z2 = eyez - centerz;\n    len = 1 / Math.hypot(z0, z1, z2);\n    z0 *= len;\n    z1 *= len;\n    z2 *= len;\n    x0 = upy * z2 - upz * z1;\n    x1 = upz * z0 - upx * z2;\n    x2 = upx * z1 - upy * z0;\n    len = Math.hypot(x0, x1, x2);\n    if (!len) {\n        x0 = 0;\n        x1 = 0;\n        x2 = 0;\n    }\n    else {\n        len = 1 / len;\n        x0 *= len;\n        x1 *= len;\n        x2 *= len;\n    }\n    y0 = z1 * x2 - z2 * x1;\n    y1 = z2 * x0 - z0 * x2;\n    y2 = z0 * x1 - z1 * x0;\n    len = Math.hypot(y0, y1, y2);\n    if (!len) {\n        y0 = 0;\n        y1 = 0;\n        y2 = 0;\n    }\n    else {\n        len = 1 / len;\n        y0 *= len;\n        y1 *= len;\n        y2 *= len;\n    }\n    out[0] = x0;\n    out[1] = y0;\n    out[2] = z0;\n    out[3] = 0;\n    out[4] = x1;\n    out[5] = y1;\n    out[6] = z1;\n    out[7] = 0;\n    out[8] = x2;\n    out[9] = y2;\n    out[10] = z2;\n    out[11] = 0;\n    out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n    out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n    out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n    out[15] = 1;\n    return out;\n}\nexports.lookAt = lookAt;\n/**\n * Generates a matrix that makes something look at something else.\n *\n * @param {mat4} out mat4 frustum matrix will be written into\n * @param {vec3} eye Position of the viewer\n * @param {vec3} center Point the viewer is looking at\n * @param {vec3} up vec3 pointing up\n * @returns {mat4} out\n */\nfunction targetTo(out, eye, target, up) {\n    var eyex = eye[0], eyey = eye[1], eyez = eye[2], upx = up[0], upy = up[1], upz = up[2];\n    var z0 = eyex - target[0], z1 = eyey - target[1], z2 = eyez - target[2];\n    var len = z0 * z0 + z1 * z1 + z2 * z2;\n    if (len > 0) {\n        len = 1 / Math.sqrt(len);\n        z0 *= len;\n        z1 *= len;\n        z2 *= len;\n    }\n    var x0 = upy * z2 - upz * z1, x1 = upz * z0 - upx * z2, x2 = upx * z1 - upy * z0;\n    len = x0 * x0 + x1 * x1 + x2 * x2;\n    if (len > 0) {\n        len = 1 / Math.sqrt(len);\n        x0 *= len;\n        x1 *= len;\n        x2 *= len;\n    }\n    out[0] = x0;\n    out[1] = x1;\n    out[2] = x2;\n    out[3] = 0;\n    out[4] = z1 * x2 - z2 * x1;\n    out[5] = z2 * x0 - z0 * x2;\n    out[6] = z0 * x1 - z1 * x0;\n    out[7] = 0;\n    out[8] = z0;\n    out[9] = z1;\n    out[10] = z2;\n    out[11] = 0;\n    out[12] = eyex;\n    out[13] = eyey;\n    out[14] = eyez;\n    out[15] = 1;\n    return out;\n}\nexports.targetTo = targetTo;\n/**\n * Returns a string representation of a mat4\n *\n * @param {mat4} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\nfunction str(a) {\n    return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n}\nexports.str = str;\n/**\n * Returns Frobenius norm of a mat4\n *\n * @param {mat4} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\nfunction frob(a) {\n    return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n}\nexports.frob = frob;\n/**\n * Adds two mat4's\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the first operand\n * @param {mat4} b the second operand\n * @returns {mat4} out\n */\nfunction add(out, a, b) {\n    out[0] = a[0] + b[0];\n    out[1] = a[1] + b[1];\n    out[2] = a[2] + b[2];\n    out[3] = a[3] + b[3];\n    out[4] = a[4] + b[4];\n    out[5] = a[5] + b[5];\n    out[6] = a[6] + b[6];\n    out[7] = a[7] + b[7];\n    out[8] = a[8] + b[8];\n    out[9] = a[9] + b[9];\n    out[10] = a[10] + b[10];\n    out[11] = a[11] + b[11];\n    out[12] = a[12] + b[12];\n    out[13] = a[13] + b[13];\n    out[14] = a[14] + b[14];\n    out[15] = a[15] + b[15];\n    return out;\n}\nexports.add = add;\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the first operand\n * @param {mat4} b the second operand\n * @returns {mat4} out\n */\nfunction subtract(out, a, b) {\n    out[0] = a[0] - b[0];\n    out[1] = a[1] - b[1];\n    out[2] = a[2] - b[2];\n    out[3] = a[3] - b[3];\n    out[4] = a[4] - b[4];\n    out[5] = a[5] - b[5];\n    out[6] = a[6] - b[6];\n    out[7] = a[7] - b[7];\n    out[8] = a[8] - b[8];\n    out[9] = a[9] - b[9];\n    out[10] = a[10] - b[10];\n    out[11] = a[11] - b[11];\n    out[12] = a[12] - b[12];\n    out[13] = a[13] - b[13];\n    out[14] = a[14] - b[14];\n    out[15] = a[15] - b[15];\n    return out;\n}\nexports.subtract = subtract;\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat4} out the receiving matrix\n * @param {mat4} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat4} out\n */\nfunction multiplyScalar(out, a, b) {\n    out[0] = a[0] * b;\n    out[1] = a[1] * b;\n    out[2] = a[2] * b;\n    out[3] = a[3] * b;\n    out[4] = a[4] * b;\n    out[5] = a[5] * b;\n    out[6] = a[6] * b;\n    out[7] = a[7] * b;\n    out[8] = a[8] * b;\n    out[9] = a[9] * b;\n    out[10] = a[10] * b;\n    out[11] = a[11] * b;\n    out[12] = a[12] * b;\n    out[13] = a[13] * b;\n    out[14] = a[14] * b;\n    out[15] = a[15] * b;\n    return out;\n}\nexports.multiplyScalar = multiplyScalar;\n/**\n * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat4} out the receiving vector\n * @param {mat4} a the first operand\n * @param {mat4} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat4} out\n */\nfunction multiplyScalarAndAdd(out, a, b, scale) {\n    out[0] = a[0] + b[0] * scale;\n    out[1] = a[1] + b[1] * scale;\n    out[2] = a[2] + b[2] * scale;\n    out[3] = a[3] + b[3] * scale;\n    out[4] = a[4] + b[4] * scale;\n    out[5] = a[5] + b[5] * scale;\n    out[6] = a[6] + b[6] * scale;\n    out[7] = a[7] + b[7] * scale;\n    out[8] = a[8] + b[8] * scale;\n    out[9] = a[9] + b[9] * scale;\n    out[10] = a[10] + b[10] * scale;\n    out[11] = a[11] + b[11] * scale;\n    out[12] = a[12] + b[12] * scale;\n    out[13] = a[13] + b[13] * scale;\n    out[14] = a[14] + b[14] * scale;\n    out[15] = a[15] + b[15] * scale;\n    return out;\n}\nexports.multiplyScalarAndAdd = multiplyScalarAndAdd;\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {mat4} a The first matrix.\n * @param {mat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\nfunction exactEquals(a, b) {\n    return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n}\nexports.exactEquals = exactEquals;\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {mat4} a The first matrix.\n * @param {mat4} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\nfunction equals(a, b) {\n    var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n    var a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7];\n    var a8 = a[8], a9 = a[9], a10 = a[10], a11 = a[11];\n    var a12 = a[12], a13 = a[13], a14 = a[14], a15 = a[15];\n    var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n    var b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7];\n    var b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11];\n    var b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n    return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n}\nexports.equals = equals;\n/**\n * Alias for {@link mat4.multiply}\n * @function\n */\nexports.mul = multiply;\n/**\n * Alias for {@link mat4.subtract}\n * @function\n */\nexports.sub = subtract;\n","type":"js","dependency_paths":[["./common.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/common.js"]],"dependency_map":[],"exported":[{"type":"named","name":"create"},{"type":"named","name":"clone"},{"type":"named","name":"copy"},{"type":"named","name":"fromValues"},{"type":"named","name":"set"},{"type":"named","name":"identity"},{"type":"named","name":"transpose"},{"type":"named","name":"invert"},{"type":"named","name":"adjoint"},{"type":"named","name":"determinant"},{"type":"named","name":"multiply"},{"type":"named","name":"translate"},{"type":"named","name":"scale"},{"type":"named","name":"rotate"},{"type":"named","name":"rotateX"},{"type":"named","name":"rotateY"},{"type":"named","name":"rotateZ"},{"type":"named","name":"fromTranslation"},{"type":"named","name":"fromScaling"},{"type":"named","name":"fromRotation"},{"type":"named","name":"fromXRotation"},{"type":"named","name":"fromYRotation"},{"type":"named","name":"fromZRotation"},{"type":"named","name":"fromRotationTranslation"},{"type":"named","name":"fromQuat2"},{"type":"named","name":"getTranslation"},{"type":"named","name":"getScaling"},{"type":"named","name":"getRotation"},{"type":"named","name":"fromRotationTranslationScale"},{"type":"named","name":"fromRotationTranslationScaleOrigin"},{"type":"named","name":"fromQuat"},{"type":"named","name":"frustum"},{"type":"named","name":"perspective"},{"type":"named","name":"perspectiveFromFieldOfView"},{"type":"named","name":"ortho"},{"type":"named","name":"lookAt"},{"type":"named","name":"targetTo"},{"type":"named","name":"str"},{"type":"named","name":"frob"},{"type":"named","name":"add"},{"type":"named","name":"subtract"},{"type":"named","name":"multiplyScalar"},{"type":"named","name":"multiplyScalarAndAdd"},{"type":"named","name":"exactEquals"},{"type":"named","name":"equals"}],"externals":[],"shims":[]},"code":{"source":"/* gl-matrix/esm/mat4.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    const glMatrix = tslib_1.__importStar(require(\"68ca94c15c\") /* ./common.js */);\n    /**\n     * 4x4 Matrix<br>Format: column-major, when typed out it looks like row-major<br>The matrices are being post multiplied.\n     * @module mat4\n     */\n    /**\n     * Creates a new identity mat4\n     *\n     * @returns {mat4} a new 4x4 matrix\n     */\n    function create() {\n        var out = new glMatrix.ARRAY_TYPE(16);\n        if (glMatrix.ARRAY_TYPE != Float32Array) {\n            out[1] = 0;\n            out[2] = 0;\n            out[3] = 0;\n            out[4] = 0;\n            out[6] = 0;\n            out[7] = 0;\n            out[8] = 0;\n            out[9] = 0;\n            out[11] = 0;\n            out[12] = 0;\n            out[13] = 0;\n            out[14] = 0;\n        }\n        out[0] = 1;\n        out[5] = 1;\n        out[10] = 1;\n        out[15] = 1;\n        return out;\n    }\n    exports.create = create;\n    /**\n     * Creates a new mat4 initialized with values from an existing matrix\n     *\n     * @param {mat4} a matrix to clone\n     * @returns {mat4} a new 4x4 matrix\n     */\n    function clone(a) {\n        var out = new glMatrix.ARRAY_TYPE(16);\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = a[2];\n        out[3] = a[3];\n        out[4] = a[4];\n        out[5] = a[5];\n        out[6] = a[6];\n        out[7] = a[7];\n        out[8] = a[8];\n        out[9] = a[9];\n        out[10] = a[10];\n        out[11] = a[11];\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n        return out;\n    }\n    exports.clone = clone;\n    /**\n     * Copy the values from one mat4 to another\n     *\n     * @param {mat4} out the receiving matrix\n     * @param {mat4} a the source matrix\n     * @returns {mat4} out\n     */\n    function copy(out, a) {\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = a[2];\n        out[3] = a[3];\n        out[4] = a[4];\n        out[5] = a[5];\n        out[6] = a[6];\n        out[7] = a[7];\n        out[8] = a[8];\n        out[9] = a[9];\n        out[10] = a[10];\n        out[11] = a[11];\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n        return out;\n    }\n    exports.copy = copy;\n    /**\n     * Create a new mat4 with the given values\n     *\n     * @param {Number} m00 Component in column 0, row 0 position (index 0)\n     * @param {Number} m01 Component in column 0, row 1 position (index 1)\n     * @param {Number} m02 Component in column 0, row 2 position (index 2)\n     * @param {Number} m03 Component in column 0, row 3 position (index 3)\n     * @param {Number} m10 Component in column 1, row 0 position (index 4)\n     * @param {Number} m11 Component in column 1, row 1 position (index 5)\n     * @param {Number} m12 Component in column 1, row 2 position (index 6)\n     * @param {Number} m13 Component in column 1, row 3 position (index 7)\n     * @param {Number} m20 Component in column 2, row 0 position (index 8)\n     * @param {Number} m21 Component in column 2, row 1 position (index 9)\n     * @param {Number} m22 Component in column 2, row 2 position (index 10)\n     * @param {Number} m23 Component in column 2, row 3 position (index 11)\n     * @param {Number} m30 Component in column 3, row 0 position (index 12)\n     * @param {Number} m31 Component in column 3, row 1 position (index 13)\n     * @param {Number} m32 Component in column 3, row 2 position (index 14)\n     * @param {Number} m33 Component in column 3, row 3 position (index 15)\n     * @returns {mat4} A new mat4\n     */\n    function fromValues(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n        var out = new glMatrix.ARRAY_TYPE(16);\n        out[0] = m00;\n        out[1] = m01;\n        out[2] = m02;\n        out[3] = m03;\n        out[4] = m10;\n        out[5] = m11;\n        out[6] = m12;\n        out[7] = m13;\n        out[8] = m20;\n        out[9] = m21;\n        out[10] = m22;\n        out[11] = m23;\n        out[12] = m30;\n        out[13] = m31;\n        out[14] = m32;\n        out[15] = m33;\n        return out;\n    }\n    exports.fromValues = fromValues;\n    /**\n     * Set the components of a mat4 to the given values\n     *\n     * @param {mat4} out the receiving matrix\n     * @param {Number} m00 Component in column 0, row 0 position (index 0)\n     * @param {Number} m01 Component in column 0, row 1 position (index 1)\n     * @param {Number} m02 Component in column 0, row 2 position (index 2)\n     * @param {Number} m03 Component in column 0, row 3 position (index 3)\n     * @param {Number} m10 Component in column 1, row 0 position (index 4)\n     * @param {Number} m11 Component in column 1, row 1 position (index 5)\n     * @param {Number} m12 Component in column 1, row 2 position (index 6)\n     * @param {Number} m13 Component in column 1, row 3 position (index 7)\n     * @param {Number} m20 Component in column 2, row 0 position (index 8)\n     * @param {Number} m21 Component in column 2, row 1 position (index 9)\n     * @param {Number} m22 Component in column 2, row 2 position (index 10)\n     * @param {Number} m23 Component in column 2, row 3 position (index 11)\n     * @param {Number} m30 Component in column 3, row 0 position (index 12)\n     * @param {Number} m31 Component in column 3, row 1 position (index 13)\n     * @param {Number} m32 Component in column 3, row 2 position (index 14)\n     * @param {Number} m33 Component in column 3, row 3 position (index 15)\n     * @returns {mat4} out\n     */\n    function set(out, m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {\n        out[0] = m00;\n        out[1] = m01;\n        out[2] = m02;\n        out[3] = m03;\n        out[4] = m10;\n        out[5] = m11;\n        out[6] = m12;\n        out[7] = m13;\n        out[8] = m20;\n        out[9] = m21;\n        out[10] = m22;\n        out[11] = m23;\n        out[12] = m30;\n        out[13] = m31;\n        out[14] = m32;\n        out[15] = m33;\n        return out;\n    }\n    exports.set = set;\n    /**\n     * Set a mat4 to the identity matrix\n     *\n     * @param {mat4} out the receiving matrix\n     * @returns {mat4} out\n     */\n    function identity(out) {\n        out[0] = 1;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n        out[4] = 0;\n        out[5] = 1;\n        out[6] = 0;\n        out[7] = 0;\n        out[8] = 0;\n        out[9] = 0;\n        out[10] = 1;\n        out[11] = 0;\n        out[12] = 0;\n        out[13] = 0;\n        out[14] = 0;\n        out[15] = 1;\n        return out;\n    }\n    exports.identity = identity;\n    /**\n     * Transpose the values of a mat4\n     *\n     * @param {mat4} out the receiving matrix\n     * @param {mat4} a the source matrix\n     * @returns {mat4} out\n     */\n    function transpose(out, a) {\n        // If we are transposing ourselves we can skip a few steps but have to cache some values\n        if (out === a) {\n            var a01 = a[1], a02 = a[2], a03 = a[3];\n            var a12 = a[6], a13 = a[7];\n            var a23 = a[11];\n            out[1] = a[4];\n            out[2] = a[8];\n            out[3] = a[12];\n            out[4] = a01;\n            out[6] = a[9];\n            out[7] = a[13];\n            out[8] = a02;\n            out[9] = a12;\n            out[11] = a[14];\n            out[12] = a03;\n            out[13] = a13;\n            out[14] = a23;\n        }\n        else {\n            out[0] = a[0];\n            out[1] = a[4];\n            out[2] = a[8];\n            out[3] = a[12];\n            out[4] = a[1];\n            out[5] = a[5];\n            out[6] = a[9];\n            out[7] = a[13];\n            out[8] = a[2];\n            out[9] = a[6];\n            out[10] = a[10];\n            out[11] = a[14];\n            out[12] = a[3];\n            out[13] = a[7];\n            out[14] = a[11];\n            out[15] = a[15];\n        }\n        return out;\n    }\n    exports.transpose = transpose;\n    /**\n     * Inverts a mat4\n     *\n     * @param {mat4} out the receiving matrix\n     * @param {mat4} a the source matrix\n     * @returns {mat4} out\n     */\n    function invert(out, a) {\n        var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n        var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n        var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n        var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n        var b00 = a00 * a11 - a01 * a10;\n        var b01 = a00 * a12 - a02 * a10;\n        var b02 = a00 * a13 - a03 * a10;\n        var b03 = a01 * a12 - a02 * a11;\n        var b04 = a01 * a13 - a03 * a11;\n        var b05 = a02 * a13 - a03 * a12;\n        var b06 = a20 * a31 - a21 * a30;\n        var b07 = a20 * a32 - a22 * a30;\n        var b08 = a20 * a33 - a23 * a30;\n        var b09 = a21 * a32 - a22 * a31;\n        var b10 = a21 * a33 - a23 * a31;\n        var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n        var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n        if (!det) {\n            return null;\n        }\n        det = 1.0 / det;\n        out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n        out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n        out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n        out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;\n        out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n        out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n        out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n        out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;\n        out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n        out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n        out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n        out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;\n        out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;\n        out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;\n        out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;\n        out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;\n        return out;\n    }\n    exports.invert = invert;\n    /**\n     * Calculates the adjugate of a mat4\n     *\n     * @param {mat4} out the receiving matrix\n     * @param {mat4} a the source matrix\n     * @returns {mat4} out\n     */\n    function adjoint(out, a) {\n        var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n        var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n        var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n        var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n        out[0] = a11 * (a22 * a33 - a23 * a32) - a21 * (a12 * a33 - a13 * a32) + a31 * (a12 * a23 - a13 * a22);\n        out[1] = -(a01 * (a22 * a33 - a23 * a32) - a21 * (a02 * a33 - a03 * a32) + a31 * (a02 * a23 - a03 * a22));\n        out[2] = a01 * (a12 * a33 - a13 * a32) - a11 * (a02 * a33 - a03 * a32) + a31 * (a02 * a13 - a03 * a12);\n        out[3] = -(a01 * (a12 * a23 - a13 * a22) - a11 * (a02 * a23 - a03 * a22) + a21 * (a02 * a13 - a03 * a12));\n        out[4] = -(a10 * (a22 * a33 - a23 * a32) - a20 * (a12 * a33 - a13 * a32) + a30 * (a12 * a23 - a13 * a22));\n        out[5] = a00 * (a22 * a33 - a23 * a32) - a20 * (a02 * a33 - a03 * a32) + a30 * (a02 * a23 - a03 * a22);\n        out[6] = -(a00 * (a12 * a33 - a13 * a32) - a10 * (a02 * a33 - a03 * a32) + a30 * (a02 * a13 - a03 * a12));\n        out[7] = a00 * (a12 * a23 - a13 * a22) - a10 * (a02 * a23 - a03 * a22) + a20 * (a02 * a13 - a03 * a12);\n        out[8] = a10 * (a21 * a33 - a23 * a31) - a20 * (a11 * a33 - a13 * a31) + a30 * (a11 * a23 - a13 * a21);\n        out[9] = -(a00 * (a21 * a33 - a23 * a31) - a20 * (a01 * a33 - a03 * a31) + a30 * (a01 * a23 - a03 * a21));\n        out[10] = a00 * (a11 * a33 - a13 * a31) - a10 * (a01 * a33 - a03 * a31) + a30 * (a01 * a13 - a03 * a11);\n        out[11] = -(a00 * (a11 * a23 - a13 * a21) - a10 * (a01 * a23 - a03 * a21) + a20 * (a01 * a13 - a03 * a11));\n        out[12] = -(a10 * (a21 * a32 - a22 * a31) - a20 * (a11 * a32 - a12 * a31) + a30 * (a11 * a22 - a12 * a21));\n        out[13] = a00 * (a21 * a32 - a22 * a31) - a20 * (a01 * a32 - a02 * a31) + a30 * (a01 * a22 - a02 * a21);\n        out[14] = -(a00 * (a11 * a32 - a12 * a31) - a10 * (a01 * a32 - a02 * a31) + a30 * (a01 * a12 - a02 * a11));\n        out[15] = a00 * (a11 * a22 - a12 * a21) - a10 * (a01 * a22 - a02 * a21) + a20 * (a01 * a12 - a02 * a11);\n        return out;\n    }\n    exports.adjoint = adjoint;\n    /**\n     * Calculates the determinant of a mat4\n     *\n     * @param {mat4} a the source matrix\n     * @returns {Number} determinant of a\n     */\n    function determinant(a) {\n        var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n        var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n        var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n        var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n        var b00 = a00 * a11 - a01 * a10;\n        var b01 = a00 * a12 - a02 * a10;\n        var b02 = a00 * a13 - a03 * a10;\n        var b03 = a01 * a12 - a02 * a11;\n        var b04 = a01 * a13 - a03 * a11;\n        var b05 = a02 * a13 - a03 * a12;\n        var b06 = a20 * a31 - a21 * a30;\n        var b07 = a20 * a32 - a22 * a30;\n        var b08 = a20 * a33 - a23 * a30;\n        var b09 = a21 * a32 - a22 * a31;\n        var b10 = a21 * a33 - a23 * a31;\n        var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n        return b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n    }\n    exports.determinant = determinant;\n    /**\n     * Multiplies two mat4s\n     *\n     * @param {mat4} out the receiving matrix\n     * @param {mat4} a the first operand\n     * @param {mat4} b the second operand\n     * @returns {mat4} out\n     */\n    function multiply(out, a, b) {\n        var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];\n        var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];\n        var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];\n        var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; // Cache only the current line of the second matrix\n        var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n        out[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n        out[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n        out[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n        out[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n        b0 = b[4];\n        b1 = b[5];\n        b2 = b[6];\n        b3 = b[7];\n        out[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n        out[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n        out[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n        out[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n        b0 = b[8];\n        b1 = b[9];\n        b2 = b[10];\n        b3 = b[11];\n        out[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n        out[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n        out[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n        out[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n        b0 = b[12];\n        b1 = b[13];\n        b2 = b[14];\n        b3 = b[15];\n        out[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\n        out[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\n        out[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\n        out[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n        return out;\n    }\n    exports.multiply = multiply;\n    /**\n     * Translate a mat4 by the given vector\n     *\n     * @param {mat4} out the receiving matrix\n     * @param {mat4} a the matrix to translate\n     * @param {vec3} v vector to translate by\n     * @returns {mat4} out\n     */\n    function translate(out, a, v) {\n        var x = v[0], y = v[1], z = v[2];\n        var a00, a01, a02, a03;\n        var a10, a11, a12, a13;\n        var a20, a21, a22, a23;\n        if (a === out) {\n            out[12] = a[0] * x + a[4] * y + a[8] * z + a[12];\n            out[13] = a[1] * x + a[5] * y + a[9] * z + a[13];\n            out[14] = a[2] * x + a[6] * y + a[10] * z + a[14];\n            out[15] = a[3] * x + a[7] * y + a[11] * z + a[15];\n        }\n        else {\n            a00 = a[0];\n            a01 = a[1];\n            a02 = a[2];\n            a03 = a[3];\n            a10 = a[4];\n            a11 = a[5];\n            a12 = a[6];\n            a13 = a[7];\n            a20 = a[8];\n            a21 = a[9];\n            a22 = a[10];\n            a23 = a[11];\n            out[0] = a00;\n            out[1] = a01;\n            out[2] = a02;\n            out[3] = a03;\n            out[4] = a10;\n            out[5] = a11;\n            out[6] = a12;\n            out[7] = a13;\n            out[8] = a20;\n            out[9] = a21;\n            out[10] = a22;\n            out[11] = a23;\n            out[12] = a00 * x + a10 * y + a20 * z + a[12];\n            out[13] = a01 * x + a11 * y + a21 * z + a[13];\n            out[14] = a02 * x + a12 * y + a22 * z + a[14];\n            out[15] = a03 * x + a13 * y + a23 * z + a[15];\n        }\n        return out;\n    }\n    exports.translate = translate;\n    /**\n     * Scales the mat4 by the dimensions in the given vec3 not using vectorization\n     *\n     * @param {mat4} out the receiving matrix\n     * @param {mat4} a the matrix to scale\n     * @param {vec3} v the vec3 to scale the matrix by\n     * @returns {mat4} out\n     **/\n    function scale(out, a, v) {\n        var x = v[0], y = v[1], z = v[2];\n        out[0] = a[0] * x;\n        out[1] = a[1] * x;\n        out[2] = a[2] * x;\n        out[3] = a[3] * x;\n        out[4] = a[4] * y;\n        out[5] = a[5] * y;\n        out[6] = a[6] * y;\n        out[7] = a[7] * y;\n        out[8] = a[8] * z;\n        out[9] = a[9] * z;\n        out[10] = a[10] * z;\n        out[11] = a[11] * z;\n        out[12] = a[12];\n        out[13] = a[13];\n        out[14] = a[14];\n        out[15] = a[15];\n        return out;\n    }\n    exports.scale = scale;\n    /**\n     * Rotates a mat4 by the given angle around the given axis\n     *\n     * @param {mat4} out the receiving matrix\n     * @param {mat4} a the matrix to rotate\n     * @param {Number} rad the angle to rotate the matrix by\n     * @param {vec3} axis the axis to rotate around\n     * @returns {mat4} out\n     */\n    function rotate(out, a, rad, axis) {\n        var x = axis[0], y = axis[1], z = axis[2];\n        var len = Math.hypot(x, y, z);\n        var s, c, t;\n        var a00, a01, a02, a03;\n        var a10, a11, a12, a13;\n        var a20, a21, a22, a23;\n        var b00, b01, b02;\n        var b10, b11, b12;\n        var b20, b21, b22;\n        if (len < glMatrix.EPSILON) {\n            return null;\n        }\n        len = 1 / len;\n        x *= len;\n        y *= len;\n        z *= len;\n        s = Math.sin(rad);\n        c = Math.cos(rad);\n        t = 1 - c;\n        a00 = a[0];\n        a01 = a[1];\n        a02 = a[2];\n        a03 = a[3];\n        a10 = a[4];\n        a11 = a[5];\n        a12 = a[6];\n        a13 = a[7];\n        a20 = a[8];\n        a21 = a[9];\n        a22 = a[10];\n        a23 = a[11]; // Construct the elements of the rotation matrix\n        b00 = x * x * t + c;\n        b01 = y * x * t + z * s;\n        b02 = z * x * t - y * s;\n        b10 = x * y * t - z * s;\n        b11 = y * y * t + c;\n        b12 = z * y * t + x * s;\n        b20 = x * z * t + y * s;\n        b21 = y * z * t - x * s;\n        b22 = z * z * t + c; // Perform rotation-specific matrix multiplication\n        out[0] = a00 * b00 + a10 * b01 + a20 * b02;\n        out[1] = a01 * b00 + a11 * b01 + a21 * b02;\n        out[2] = a02 * b00 + a12 * b01 + a22 * b02;\n        out[3] = a03 * b00 + a13 * b01 + a23 * b02;\n        out[4] = a00 * b10 + a10 * b11 + a20 * b12;\n        out[5] = a01 * b10 + a11 * b11 + a21 * b12;\n        out[6] = a02 * b10 + a12 * b11 + a22 * b12;\n        out[7] = a03 * b10 + a13 * b11 + a23 * b12;\n        out[8] = a00 * b20 + a10 * b21 + a20 * b22;\n        out[9] = a01 * b20 + a11 * b21 + a21 * b22;\n        out[10] = a02 * b20 + a12 * b21 + a22 * b22;\n        out[11] = a03 * b20 + a13 * b21 + a23 * b22;\n        if (a !== out) {\n            // If the source and destination differ, copy the unchanged last row\n            out[12] = a[12];\n            out[13] = a[13];\n            out[14] = a[14];\n            out[15] = a[15];\n        }\n        return out;\n    }\n    exports.rotate = rotate;\n    /**\n     * Rotates a matrix by the given angle around the X axis\n     *\n     * @param {mat4} out the receiving matrix\n     * @param {mat4} a the matrix to rotate\n     * @param {Number} rad the angle to rotate the matrix by\n     * @returns {mat4} out\n     */\n    function rotateX(out, a, rad) {\n        var s = Math.sin(rad);\n        var c = Math.cos(rad);\n        var a10 = a[4];\n        var a11 = a[5];\n        var a12 = a[6];\n        var a13 = a[7];\n        var a20 = a[8];\n        var a21 = a[9];\n        var a22 = a[10];\n        var a23 = a[11];\n        if (a !== out) {\n            // If the source and destination differ, copy the unchanged rows\n            out[0] = a[0];\n            out[1] = a[1];\n            out[2] = a[2];\n            out[3] = a[3];\n            out[12] = a[12];\n            out[13] = a[13];\n            out[14] = a[14];\n            out[15] = a[15];\n        } // Perform axis-specific matrix multiplication\n        out[4] = a10 * c + a20 * s;\n        out[5] = a11 * c + a21 * s;\n        out[6] = a12 * c + a22 * s;\n        out[7] = a13 * c + a23 * s;\n        out[8] = a20 * c - a10 * s;\n        out[9] = a21 * c - a11 * s;\n        out[10] = a22 * c - a12 * s;\n        out[11] = a23 * c - a13 * s;\n        return out;\n    }\n    exports.rotateX = rotateX;\n    /**\n     * Rotates a matrix by the given angle around the Y axis\n     *\n     * @param {mat4} out the receiving matrix\n     * @param {mat4} a the matrix to rotate\n     * @param {Number} rad the angle to rotate the matrix by\n     * @returns {mat4} out\n     */\n    function rotateY(out, a, rad) {\n        var s = Math.sin(rad);\n        var c = Math.cos(rad);\n        var a00 = a[0];\n        var a01 = a[1];\n        var a02 = a[2];\n        var a03 = a[3];\n        var a20 = a[8];\n        var a21 = a[9];\n        var a22 = a[10];\n        var a23 = a[11];\n        if (a !== out) {\n            // If the source and destination differ, copy the unchanged rows\n            out[4] = a[4];\n            out[5] = a[5];\n            out[6] = a[6];\n            out[7] = a[7];\n            out[12] = a[12];\n            out[13] = a[13];\n            out[14] = a[14];\n            out[15] = a[15];\n        } // Perform axis-specific matrix multiplication\n        out[0] = a00 * c - a20 * s;\n        out[1] = a01 * c - a21 * s;\n        out[2] = a02 * c - a22 * s;\n        out[3] = a03 * c - a23 * s;\n        out[8] = a00 * s + a20 * c;\n        out[9] = a01 * s + a21 * c;\n        out[10] = a02 * s + a22 * c;\n        out[11] = a03 * s + a23 * c;\n        return out;\n    }\n    exports.rotateY = rotateY;\n    /**\n     * Rotates a matrix by the given angle around the Z axis\n     *\n     * @param {mat4} out the receiving matrix\n     * @param {mat4} a the matrix to rotate\n     * @param {Number} rad the angle to rotate the matrix by\n     * @returns {mat4} out\n     */\n    function rotateZ(out, a, rad) {\n        var s = Math.sin(rad);\n        var c = Math.cos(rad);\n        var a00 = a[0];\n        var a01 = a[1];\n        var a02 = a[2];\n        var a03 = a[3];\n        var a10 = a[4];\n        var a11 = a[5];\n        var a12 = a[6];\n        var a13 = a[7];\n        if (a !== out) {\n            // If the source and destination differ, copy the unchanged last row\n            out[8] = a[8];\n            out[9] = a[9];\n            out[10] = a[10];\n            out[11] = a[11];\n            out[12] = a[12];\n            out[13] = a[13];\n            out[14] = a[14];\n            out[15] = a[15];\n        } // Perform axis-specific matrix multiplication\n        out[0] = a00 * c + a10 * s;\n        out[1] = a01 * c + a11 * s;\n        out[2] = a02 * c + a12 * s;\n        out[3] = a03 * c + a13 * s;\n        out[4] = a10 * c - a00 * s;\n        out[5] = a11 * c - a01 * s;\n        out[6] = a12 * c - a02 * s;\n        out[7] = a13 * c - a03 * s;\n        return out;\n    }\n    exports.rotateZ = rotateZ;\n    /**\n     * Creates a matrix from a vector translation\n     * This is equivalent to (but much faster than):\n     *\n     *     mat4.identity(dest);\n     *     mat4.translate(dest, dest, vec);\n     *\n     * @param {mat4} out mat4 receiving operation result\n     * @param {vec3} v Translation vector\n     * @returns {mat4} out\n     */\n    function fromTranslation(out, v) {\n        out[0] = 1;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n        out[4] = 0;\n        out[5] = 1;\n        out[6] = 0;\n        out[7] = 0;\n        out[8] = 0;\n        out[9] = 0;\n        out[10] = 1;\n        out[11] = 0;\n        out[12] = v[0];\n        out[13] = v[1];\n        out[14] = v[2];\n        out[15] = 1;\n        return out;\n    }\n    exports.fromTranslation = fromTranslation;\n    /**\n     * Creates a matrix from a vector scaling\n     * This is equivalent to (but much faster than):\n     *\n     *     mat4.identity(dest);\n     *     mat4.scale(dest, dest, vec);\n     *\n     * @param {mat4} out mat4 receiving operation result\n     * @param {vec3} v Scaling vector\n     * @returns {mat4} out\n     */\n    function fromScaling(out, v) {\n        out[0] = v[0];\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n        out[4] = 0;\n        out[5] = v[1];\n        out[6] = 0;\n        out[7] = 0;\n        out[8] = 0;\n        out[9] = 0;\n        out[10] = v[2];\n        out[11] = 0;\n        out[12] = 0;\n        out[13] = 0;\n        out[14] = 0;\n        out[15] = 1;\n        return out;\n    }\n    exports.fromScaling = fromScaling;\n    /**\n     * Creates a matrix from a given angle around a given axis\n     * This is equivalent to (but much faster than):\n     *\n     *     mat4.identity(dest);\n     *     mat4.rotate(dest, dest, rad, axis);\n     *\n     * @param {mat4} out mat4 receiving operation result\n     * @param {Number} rad the angle to rotate the matrix by\n     * @param {vec3} axis the axis to rotate around\n     * @returns {mat4} out\n     */\n    function fromRotation(out, rad, axis) {\n        var x = axis[0], y = axis[1], z = axis[2];\n        var len = Math.hypot(x, y, z);\n        var s, c, t;\n        if (len < glMatrix.EPSILON) {\n            return null;\n        }\n        len = 1 / len;\n        x *= len;\n        y *= len;\n        z *= len;\n        s = Math.sin(rad);\n        c = Math.cos(rad);\n        t = 1 - c; // Perform rotation-specific matrix multiplication\n        out[0] = x * x * t + c;\n        out[1] = y * x * t + z * s;\n        out[2] = z * x * t - y * s;\n        out[3] = 0;\n        out[4] = x * y * t - z * s;\n        out[5] = y * y * t + c;\n        out[6] = z * y * t + x * s;\n        out[7] = 0;\n        out[8] = x * z * t + y * s;\n        out[9] = y * z * t - x * s;\n        out[10] = z * z * t + c;\n        out[11] = 0;\n        out[12] = 0;\n        out[13] = 0;\n        out[14] = 0;\n        out[15] = 1;\n        return out;\n    }\n    exports.fromRotation = fromRotation;\n    /**\n     * Creates a matrix from the given angle around the X axis\n     * This is equivalent to (but much faster than):\n     *\n     *     mat4.identity(dest);\n     *     mat4.rotateX(dest, dest, rad);\n     *\n     * @param {mat4} out mat4 receiving operation result\n     * @param {Number} rad the angle to rotate the matrix by\n     * @returns {mat4} out\n     */\n    function fromXRotation(out, rad) {\n        var s = Math.sin(rad);\n        var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n        out[0] = 1;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n        out[4] = 0;\n        out[5] = c;\n        out[6] = s;\n        out[7] = 0;\n        out[8] = 0;\n        out[9] = -s;\n        out[10] = c;\n        out[11] = 0;\n        out[12] = 0;\n        out[13] = 0;\n        out[14] = 0;\n        out[15] = 1;\n        return out;\n    }\n    exports.fromXRotation = fromXRotation;\n    /**\n     * Creates a matrix from the given angle around the Y axis\n     * This is equivalent to (but much faster than):\n     *\n     *     mat4.identity(dest);\n     *     mat4.rotateY(dest, dest, rad);\n     *\n     * @param {mat4} out mat4 receiving operation result\n     * @param {Number} rad the angle to rotate the matrix by\n     * @returns {mat4} out\n     */\n    function fromYRotation(out, rad) {\n        var s = Math.sin(rad);\n        var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n        out[0] = c;\n        out[1] = 0;\n        out[2] = -s;\n        out[3] = 0;\n        out[4] = 0;\n        out[5] = 1;\n        out[6] = 0;\n        out[7] = 0;\n        out[8] = s;\n        out[9] = 0;\n        out[10] = c;\n        out[11] = 0;\n        out[12] = 0;\n        out[13] = 0;\n        out[14] = 0;\n        out[15] = 1;\n        return out;\n    }\n    exports.fromYRotation = fromYRotation;\n    /**\n     * Creates a matrix from the given angle around the Z axis\n     * This is equivalent to (but much faster than):\n     *\n     *     mat4.identity(dest);\n     *     mat4.rotateZ(dest, dest, rad);\n     *\n     * @param {mat4} out mat4 receiving operation result\n     * @param {Number} rad the angle to rotate the matrix by\n     * @returns {mat4} out\n     */\n    function fromZRotation(out, rad) {\n        var s = Math.sin(rad);\n        var c = Math.cos(rad); // Perform axis-specific matrix multiplication\n        out[0] = c;\n        out[1] = s;\n        out[2] = 0;\n        out[3] = 0;\n        out[4] = -s;\n        out[5] = c;\n        out[6] = 0;\n        out[7] = 0;\n        out[8] = 0;\n        out[9] = 0;\n        out[10] = 1;\n        out[11] = 0;\n        out[12] = 0;\n        out[13] = 0;\n        out[14] = 0;\n        out[15] = 1;\n        return out;\n    }\n    exports.fromZRotation = fromZRotation;\n    /**\n     * Creates a matrix from a quaternion rotation and vector translation\n     * This is equivalent to (but much faster than):\n     *\n     *     mat4.identity(dest);\n     *     mat4.translate(dest, vec);\n     *     let quatMat = mat4.create();\n     *     quat4.toMat4(quat, quatMat);\n     *     mat4.multiply(dest, quatMat);\n     *\n     * @param {mat4} out mat4 receiving operation result\n     * @param {quat4} q Rotation quaternion\n     * @param {vec3} v Translation vector\n     * @returns {mat4} out\n     */\n    function fromRotationTranslation(out, q, v) {\n        // Quaternion math\n        var x = q[0], y = q[1], z = q[2], w = q[3];\n        var x2 = x + x;\n        var y2 = y + y;\n        var z2 = z + z;\n        var xx = x * x2;\n        var xy = x * y2;\n        var xz = x * z2;\n        var yy = y * y2;\n        var yz = y * z2;\n        var zz = z * z2;\n        var wx = w * x2;\n        var wy = w * y2;\n        var wz = w * z2;\n        out[0] = 1 - (yy + zz);\n        out[1] = xy + wz;\n        out[2] = xz - wy;\n        out[3] = 0;\n        out[4] = xy - wz;\n        out[5] = 1 - (xx + zz);\n        out[6] = yz + wx;\n        out[7] = 0;\n        out[8] = xz + wy;\n        out[9] = yz - wx;\n        out[10] = 1 - (xx + yy);\n        out[11] = 0;\n        out[12] = v[0];\n        out[13] = v[1];\n        out[14] = v[2];\n        out[15] = 1;\n        return out;\n    }\n    exports.fromRotationTranslation = fromRotationTranslation;\n    /**\n     * Creates a new mat4 from a dual quat.\n     *\n     * @param {mat4} out Matrix\n     * @param {quat2} a Dual Quaternion\n     * @returns {mat4} mat4 receiving operation result\n     */\n    function fromQuat2(out, a) {\n        var translation = new glMatrix.ARRAY_TYPE(3);\n        var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7];\n        var magnitude = bx * bx + by * by + bz * bz + bw * bw; //Only scale if it makes sense\n        if (magnitude > 0) {\n            translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2 / magnitude;\n            translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2 / magnitude;\n            translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2 / magnitude;\n        }\n        else {\n            translation[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n            translation[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n            translation[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n        }\n        fromRotationTranslation(out, a, translation);\n        return out;\n    }\n    exports.fromQuat2 = fromQuat2;\n    /**\n     * Returns the translation vector component of a transformation\n     *  matrix. If a matrix is built with fromRotationTranslation,\n     *  the returned vector will be the same as the translation vector\n     *  originally supplied.\n     * @param  {vec3} out Vector to receive translation component\n     * @param  {mat4} mat Matrix to be decomposed (input)\n     * @return {vec3} out\n     */\n    function getTranslation(out, mat) {\n        out[0] = mat[12];\n        out[1] = mat[13];\n        out[2] = mat[14];\n        return out;\n    }\n    exports.getTranslation = getTranslation;\n    /**\n     * Returns the scaling factor component of a transformation\n     *  matrix. If a matrix is built with fromRotationTranslationScale\n     *  with a normalized Quaternion paramter, the returned vector will be\n     *  the same as the scaling vector\n     *  originally supplied.\n     * @param  {vec3} out Vector to receive scaling factor component\n     * @param  {mat4} mat Matrix to be decomposed (input)\n     * @return {vec3} out\n     */\n    function getScaling(out, mat) {\n        var m11 = mat[0];\n        var m12 = mat[1];\n        var m13 = mat[2];\n        var m21 = mat[4];\n        var m22 = mat[5];\n        var m23 = mat[6];\n        var m31 = mat[8];\n        var m32 = mat[9];\n        var m33 = mat[10];\n        out[0] = Math.hypot(m11, m12, m13);\n        out[1] = Math.hypot(m21, m22, m23);\n        out[2] = Math.hypot(m31, m32, m33);\n        return out;\n    }\n    exports.getScaling = getScaling;\n    /**\n     * Returns a quaternion representing the rotational component\n     *  of a transformation matrix. If a matrix is built with\n     *  fromRotationTranslation, the returned quaternion will be the\n     *  same as the quaternion originally supplied.\n     * @param {quat} out Quaternion to receive the rotation component\n     * @param {mat4} mat Matrix to be decomposed (input)\n     * @return {quat} out\n     */\n    function getRotation(out, mat) {\n        var scaling = new glMatrix.ARRAY_TYPE(3);\n        getScaling(scaling, mat);\n        var is1 = 1 / scaling[0];\n        var is2 = 1 / scaling[1];\n        var is3 = 1 / scaling[2];\n        var sm11 = mat[0] * is1;\n        var sm12 = mat[1] * is2;\n        var sm13 = mat[2] * is3;\n        var sm21 = mat[4] * is1;\n        var sm22 = mat[5] * is2;\n        var sm23 = mat[6] * is3;\n        var sm31 = mat[8] * is1;\n        var sm32 = mat[9] * is2;\n        var sm33 = mat[10] * is3;\n        var trace = sm11 + sm22 + sm33;\n        var S = 0;\n        if (trace > 0) {\n            S = Math.sqrt(trace + 1.0) * 2;\n            out[3] = 0.25 * S;\n            out[0] = (sm23 - sm32) / S;\n            out[1] = (sm31 - sm13) / S;\n            out[2] = (sm12 - sm21) / S;\n        }\n        else if (sm11 > sm22 && sm11 > sm33) {\n            S = Math.sqrt(1.0 + sm11 - sm22 - sm33) * 2;\n            out[3] = (sm23 - sm32) / S;\n            out[0] = 0.25 * S;\n            out[1] = (sm12 + sm21) / S;\n            out[2] = (sm31 + sm13) / S;\n        }\n        else if (sm22 > sm33) {\n            S = Math.sqrt(1.0 + sm22 - sm11 - sm33) * 2;\n            out[3] = (sm31 - sm13) / S;\n            out[0] = (sm12 + sm21) / S;\n            out[1] = 0.25 * S;\n            out[2] = (sm23 + sm32) / S;\n        }\n        else {\n            S = Math.sqrt(1.0 + sm33 - sm11 - sm22) * 2;\n            out[3] = (sm12 - sm21) / S;\n            out[0] = (sm31 + sm13) / S;\n            out[1] = (sm23 + sm32) / S;\n            out[2] = 0.25 * S;\n        }\n        return out;\n    }\n    exports.getRotation = getRotation;\n    /**\n     * Creates a matrix from a quaternion rotation, vector translation and vector scale\n     * This is equivalent to (but much faster than):\n     *\n     *     mat4.identity(dest);\n     *     mat4.translate(dest, vec);\n     *     let quatMat = mat4.create();\n     *     quat4.toMat4(quat, quatMat);\n     *     mat4.multiply(dest, quatMat);\n     *     mat4.scale(dest, scale)\n     *\n     * @param {mat4} out mat4 receiving operation result\n     * @param {quat4} q Rotation quaternion\n     * @param {vec3} v Translation vector\n     * @param {vec3} s Scaling vector\n     * @returns {mat4} out\n     */\n    function fromRotationTranslationScale(out, q, v, s) {\n        // Quaternion math\n        var x = q[0], y = q[1], z = q[2], w = q[3];\n        var x2 = x + x;\n        var y2 = y + y;\n        var z2 = z + z;\n        var xx = x * x2;\n        var xy = x * y2;\n        var xz = x * z2;\n        var yy = y * y2;\n        var yz = y * z2;\n        var zz = z * z2;\n        var wx = w * x2;\n        var wy = w * y2;\n        var wz = w * z2;\n        var sx = s[0];\n        var sy = s[1];\n        var sz = s[2];\n        out[0] = (1 - (yy + zz)) * sx;\n        out[1] = (xy + wz) * sx;\n        out[2] = (xz - wy) * sx;\n        out[3] = 0;\n        out[4] = (xy - wz) * sy;\n        out[5] = (1 - (xx + zz)) * sy;\n        out[6] = (yz + wx) * sy;\n        out[7] = 0;\n        out[8] = (xz + wy) * sz;\n        out[9] = (yz - wx) * sz;\n        out[10] = (1 - (xx + yy)) * sz;\n        out[11] = 0;\n        out[12] = v[0];\n        out[13] = v[1];\n        out[14] = v[2];\n        out[15] = 1;\n        return out;\n    }\n    exports.fromRotationTranslationScale = fromRotationTranslationScale;\n    /**\n     * Creates a matrix from a quaternion rotation, vector translation and vector scale, rotating and scaling around the given origin\n     * This is equivalent to (but much faster than):\n     *\n     *     mat4.identity(dest);\n     *     mat4.translate(dest, vec);\n     *     mat4.translate(dest, origin);\n     *     let quatMat = mat4.create();\n     *     quat4.toMat4(quat, quatMat);\n     *     mat4.multiply(dest, quatMat);\n     *     mat4.scale(dest, scale)\n     *     mat4.translate(dest, negativeOrigin);\n     *\n     * @param {mat4} out mat4 receiving operation result\n     * @param {quat4} q Rotation quaternion\n     * @param {vec3} v Translation vector\n     * @param {vec3} s Scaling vector\n     * @param {vec3} o The origin vector around which to scale and rotate\n     * @returns {mat4} out\n     */\n    function fromRotationTranslationScaleOrigin(out, q, v, s, o) {\n        // Quaternion math\n        var x = q[0], y = q[1], z = q[2], w = q[3];\n        var x2 = x + x;\n        var y2 = y + y;\n        var z2 = z + z;\n        var xx = x * x2;\n        var xy = x * y2;\n        var xz = x * z2;\n        var yy = y * y2;\n        var yz = y * z2;\n        var zz = z * z2;\n        var wx = w * x2;\n        var wy = w * y2;\n        var wz = w * z2;\n        var sx = s[0];\n        var sy = s[1];\n        var sz = s[2];\n        var ox = o[0];\n        var oy = o[1];\n        var oz = o[2];\n        var out0 = (1 - (yy + zz)) * sx;\n        var out1 = (xy + wz) * sx;\n        var out2 = (xz - wy) * sx;\n        var out4 = (xy - wz) * sy;\n        var out5 = (1 - (xx + zz)) * sy;\n        var out6 = (yz + wx) * sy;\n        var out8 = (xz + wy) * sz;\n        var out9 = (yz - wx) * sz;\n        var out10 = (1 - (xx + yy)) * sz;\n        out[0] = out0;\n        out[1] = out1;\n        out[2] = out2;\n        out[3] = 0;\n        out[4] = out4;\n        out[5] = out5;\n        out[6] = out6;\n        out[7] = 0;\n        out[8] = out8;\n        out[9] = out9;\n        out[10] = out10;\n        out[11] = 0;\n        out[12] = v[0] + ox - (out0 * ox + out4 * oy + out8 * oz);\n        out[13] = v[1] + oy - (out1 * ox + out5 * oy + out9 * oz);\n        out[14] = v[2] + oz - (out2 * ox + out6 * oy + out10 * oz);\n        out[15] = 1;\n        return out;\n    }\n    exports.fromRotationTranslationScaleOrigin = fromRotationTranslationScaleOrigin;\n    /**\n     * Calculates a 4x4 matrix from the given quaternion\n     *\n     * @param {mat4} out mat4 receiving operation result\n     * @param {quat} q Quaternion to create matrix from\n     *\n     * @returns {mat4} out\n     */\n    function fromQuat(out, q) {\n        var x = q[0], y = q[1], z = q[2], w = q[3];\n        var x2 = x + x;\n        var y2 = y + y;\n        var z2 = z + z;\n        var xx = x * x2;\n        var yx = y * x2;\n        var yy = y * y2;\n        var zx = z * x2;\n        var zy = z * y2;\n        var zz = z * z2;\n        var wx = w * x2;\n        var wy = w * y2;\n        var wz = w * z2;\n        out[0] = 1 - yy - zz;\n        out[1] = yx + wz;\n        out[2] = zx - wy;\n        out[3] = 0;\n        out[4] = yx - wz;\n        out[5] = 1 - xx - zz;\n        out[6] = zy + wx;\n        out[7] = 0;\n        out[8] = zx + wy;\n        out[9] = zy - wx;\n        out[10] = 1 - xx - yy;\n        out[11] = 0;\n        out[12] = 0;\n        out[13] = 0;\n        out[14] = 0;\n        out[15] = 1;\n        return out;\n    }\n    exports.fromQuat = fromQuat;\n    /**\n     * Generates a frustum matrix with the given bounds\n     *\n     * @param {mat4} out mat4 frustum matrix will be written into\n     * @param {Number} left Left bound of the frustum\n     * @param {Number} right Right bound of the frustum\n     * @param {Number} bottom Bottom bound of the frustum\n     * @param {Number} top Top bound of the frustum\n     * @param {Number} near Near bound of the frustum\n     * @param {Number} far Far bound of the frustum\n     * @returns {mat4} out\n     */\n    function frustum(out, left, right, bottom, top, near, far) {\n        var rl = 1 / (right - left);\n        var tb = 1 / (top - bottom);\n        var nf = 1 / (near - far);\n        out[0] = near * 2 * rl;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n        out[4] = 0;\n        out[5] = near * 2 * tb;\n        out[6] = 0;\n        out[7] = 0;\n        out[8] = (right + left) * rl;\n        out[9] = (top + bottom) * tb;\n        out[10] = (far + near) * nf;\n        out[11] = -1;\n        out[12] = 0;\n        out[13] = 0;\n        out[14] = far * near * 2 * nf;\n        out[15] = 0;\n        return out;\n    }\n    exports.frustum = frustum;\n    /**\n     * Generates a perspective projection matrix with the given bounds.\n     * Passing null/undefined/no value for far will generate infinite projection matrix.\n     *\n     * @param {mat4} out mat4 frustum matrix will be written into\n     * @param {number} fovy Vertical field of view in radians\n     * @param {number} aspect Aspect ratio. typically viewport width/height\n     * @param {number} near Near bound of the frustum\n     * @param {number} far Far bound of the frustum, can be null or Infinity\n     * @returns {mat4} out\n     */\n    function perspective(out, fovy, aspect, near, far) {\n        var f = 1.0 / Math.tan(fovy / 2), nf;\n        out[0] = f / aspect;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n        out[4] = 0;\n        out[5] = f;\n        out[6] = 0;\n        out[7] = 0;\n        out[8] = 0;\n        out[9] = 0;\n        out[11] = -1;\n        out[12] = 0;\n        out[13] = 0;\n        out[15] = 0;\n        if (far != null && far !== Infinity) {\n            nf = 1 / (near - far);\n            out[10] = (far + near) * nf;\n            out[14] = 2 * far * near * nf;\n        }\n        else {\n            out[10] = -1;\n            out[14] = -2 * near;\n        }\n        return out;\n    }\n    exports.perspective = perspective;\n    /**\n     * Generates a perspective projection matrix with the given field of view.\n     * This is primarily useful for generating projection matrices to be used\n     * with the still experiemental WebVR API.\n     *\n     * @param {mat4} out mat4 frustum matrix will be written into\n     * @param {Object} fov Object containing the following values: upDegrees, downDegrees, leftDegrees, rightDegrees\n     * @param {number} near Near bound of the frustum\n     * @param {number} far Far bound of the frustum\n     * @returns {mat4} out\n     */\n    function perspectiveFromFieldOfView(out, fov, near, far) {\n        var upTan = Math.tan(fov.upDegrees * Math.PI / 180.0);\n        var downTan = Math.tan(fov.downDegrees * Math.PI / 180.0);\n        var leftTan = Math.tan(fov.leftDegrees * Math.PI / 180.0);\n        var rightTan = Math.tan(fov.rightDegrees * Math.PI / 180.0);\n        var xScale = 2.0 / (leftTan + rightTan);\n        var yScale = 2.0 / (upTan + downTan);\n        out[0] = xScale;\n        out[1] = 0.0;\n        out[2] = 0.0;\n        out[3] = 0.0;\n        out[4] = 0.0;\n        out[5] = yScale;\n        out[6] = 0.0;\n        out[7] = 0.0;\n        out[8] = -((leftTan - rightTan) * xScale * 0.5);\n        out[9] = (upTan - downTan) * yScale * 0.5;\n        out[10] = far / (near - far);\n        out[11] = -1.0;\n        out[12] = 0.0;\n        out[13] = 0.0;\n        out[14] = far * near / (near - far);\n        out[15] = 0.0;\n        return out;\n    }\n    exports.perspectiveFromFieldOfView = perspectiveFromFieldOfView;\n    /**\n     * Generates a orthogonal projection matrix with the given bounds\n     *\n     * @param {mat4} out mat4 frustum matrix will be written into\n     * @param {number} left Left bound of the frustum\n     * @param {number} right Right bound of the frustum\n     * @param {number} bottom Bottom bound of the frustum\n     * @param {number} top Top bound of the frustum\n     * @param {number} near Near bound of the frustum\n     * @param {number} far Far bound of the frustum\n     * @returns {mat4} out\n     */\n    function ortho(out, left, right, bottom, top, near, far) {\n        var lr = 1 / (left - right);\n        var bt = 1 / (bottom - top);\n        var nf = 1 / (near - far);\n        out[0] = -2 * lr;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n        out[4] = 0;\n        out[5] = -2 * bt;\n        out[6] = 0;\n        out[7] = 0;\n        out[8] = 0;\n        out[9] = 0;\n        out[10] = 2 * nf;\n        out[11] = 0;\n        out[12] = (left + right) * lr;\n        out[13] = (top + bottom) * bt;\n        out[14] = (far + near) * nf;\n        out[15] = 1;\n        return out;\n    }\n    exports.ortho = ortho;\n    /**\n     * Generates a look-at matrix with the given eye position, focal point, and up axis.\n     * If you want a matrix that actually makes an object look at another object, you should use targetTo instead.\n     *\n     * @param {mat4} out mat4 frustum matrix will be written into\n     * @param {vec3} eye Position of the viewer\n     * @param {vec3} center Point the viewer is looking at\n     * @param {vec3} up vec3 pointing up\n     * @returns {mat4} out\n     */\n    function lookAt(out, eye, center, up) {\n        var x0, x1, x2, y0, y1, y2, z0, z1, z2, len;\n        var eyex = eye[0];\n        var eyey = eye[1];\n        var eyez = eye[2];\n        var upx = up[0];\n        var upy = up[1];\n        var upz = up[2];\n        var centerx = center[0];\n        var centery = center[1];\n        var centerz = center[2];\n        if (Math.abs(eyex - centerx) < glMatrix.EPSILON && Math.abs(eyey - centery) < glMatrix.EPSILON && Math.abs(eyez - centerz) < glMatrix.EPSILON) {\n            return identity(out);\n        }\n        z0 = eyex - centerx;\n        z1 = eyey - centery;\n        z2 = eyez - centerz;\n        len = 1 / Math.hypot(z0, z1, z2);\n        z0 *= len;\n        z1 *= len;\n        z2 *= len;\n        x0 = upy * z2 - upz * z1;\n        x1 = upz * z0 - upx * z2;\n        x2 = upx * z1 - upy * z0;\n        len = Math.hypot(x0, x1, x2);\n        if (!len) {\n            x0 = 0;\n            x1 = 0;\n            x2 = 0;\n        }\n        else {\n            len = 1 / len;\n            x0 *= len;\n            x1 *= len;\n            x2 *= len;\n        }\n        y0 = z1 * x2 - z2 * x1;\n        y1 = z2 * x0 - z0 * x2;\n        y2 = z0 * x1 - z1 * x0;\n        len = Math.hypot(y0, y1, y2);\n        if (!len) {\n            y0 = 0;\n            y1 = 0;\n            y2 = 0;\n        }\n        else {\n            len = 1 / len;\n            y0 *= len;\n            y1 *= len;\n            y2 *= len;\n        }\n        out[0] = x0;\n        out[1] = y0;\n        out[2] = z0;\n        out[3] = 0;\n        out[4] = x1;\n        out[5] = y1;\n        out[6] = z1;\n        out[7] = 0;\n        out[8] = x2;\n        out[9] = y2;\n        out[10] = z2;\n        out[11] = 0;\n        out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);\n        out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);\n        out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);\n        out[15] = 1;\n        return out;\n    }\n    exports.lookAt = lookAt;\n    /**\n     * Generates a matrix that makes something look at something else.\n     *\n     * @param {mat4} out mat4 frustum matrix will be written into\n     * @param {vec3} eye Position of the viewer\n     * @param {vec3} center Point the viewer is looking at\n     * @param {vec3} up vec3 pointing up\n     * @returns {mat4} out\n     */\n    function targetTo(out, eye, target, up) {\n        var eyex = eye[0], eyey = eye[1], eyez = eye[2], upx = up[0], upy = up[1], upz = up[2];\n        var z0 = eyex - target[0], z1 = eyey - target[1], z2 = eyez - target[2];\n        var len = z0 * z0 + z1 * z1 + z2 * z2;\n        if (len > 0) {\n            len = 1 / Math.sqrt(len);\n            z0 *= len;\n            z1 *= len;\n            z2 *= len;\n        }\n        var x0 = upy * z2 - upz * z1, x1 = upz * z0 - upx * z2, x2 = upx * z1 - upy * z0;\n        len = x0 * x0 + x1 * x1 + x2 * x2;\n        if (len > 0) {\n            len = 1 / Math.sqrt(len);\n            x0 *= len;\n            x1 *= len;\n            x2 *= len;\n        }\n        out[0] = x0;\n        out[1] = x1;\n        out[2] = x2;\n        out[3] = 0;\n        out[4] = z1 * x2 - z2 * x1;\n        out[5] = z2 * x0 - z0 * x2;\n        out[6] = z0 * x1 - z1 * x0;\n        out[7] = 0;\n        out[8] = z0;\n        out[9] = z1;\n        out[10] = z2;\n        out[11] = 0;\n        out[12] = eyex;\n        out[13] = eyey;\n        out[14] = eyez;\n        out[15] = 1;\n        return out;\n    }\n    exports.targetTo = targetTo;\n    /**\n     * Returns a string representation of a mat4\n     *\n     * @param {mat4} a matrix to represent as a string\n     * @returns {String} string representation of the matrix\n     */\n    function str(a) {\n        return \"mat4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \", \" + a[9] + \", \" + a[10] + \", \" + a[11] + \", \" + a[12] + \", \" + a[13] + \", \" + a[14] + \", \" + a[15] + \")\";\n    }\n    exports.str = str;\n    /**\n     * Returns Frobenius norm of a mat4\n     *\n     * @param {mat4} a the matrix to calculate Frobenius norm of\n     * @returns {Number} Frobenius norm\n     */\n    function frob(a) {\n        return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]);\n    }\n    exports.frob = frob;\n    /**\n     * Adds two mat4's\n     *\n     * @param {mat4} out the receiving matrix\n     * @param {mat4} a the first operand\n     * @param {mat4} b the second operand\n     * @returns {mat4} out\n     */\n    function add(out, a, b) {\n        out[0] = a[0] + b[0];\n        out[1] = a[1] + b[1];\n        out[2] = a[2] + b[2];\n        out[3] = a[3] + b[3];\n        out[4] = a[4] + b[4];\n        out[5] = a[5] + b[5];\n        out[6] = a[6] + b[6];\n        out[7] = a[7] + b[7];\n        out[8] = a[8] + b[8];\n        out[9] = a[9] + b[9];\n        out[10] = a[10] + b[10];\n        out[11] = a[11] + b[11];\n        out[12] = a[12] + b[12];\n        out[13] = a[13] + b[13];\n        out[14] = a[14] + b[14];\n        out[15] = a[15] + b[15];\n        return out;\n    }\n    exports.add = add;\n    /**\n     * Subtracts matrix b from matrix a\n     *\n     * @param {mat4} out the receiving matrix\n     * @param {mat4} a the first operand\n     * @param {mat4} b the second operand\n     * @returns {mat4} out\n     */\n    function subtract(out, a, b) {\n        out[0] = a[0] - b[0];\n        out[1] = a[1] - b[1];\n        out[2] = a[2] - b[2];\n        out[3] = a[3] - b[3];\n        out[4] = a[4] - b[4];\n        out[5] = a[5] - b[5];\n        out[6] = a[6] - b[6];\n        out[7] = a[7] - b[7];\n        out[8] = a[8] - b[8];\n        out[9] = a[9] - b[9];\n        out[10] = a[10] - b[10];\n        out[11] = a[11] - b[11];\n        out[12] = a[12] - b[12];\n        out[13] = a[13] - b[13];\n        out[14] = a[14] - b[14];\n        out[15] = a[15] - b[15];\n        return out;\n    }\n    exports.subtract = subtract;\n    /**\n     * Multiply each element of the matrix by a scalar.\n     *\n     * @param {mat4} out the receiving matrix\n     * @param {mat4} a the matrix to scale\n     * @param {Number} b amount to scale the matrix's elements by\n     * @returns {mat4} out\n     */\n    function multiplyScalar(out, a, b) {\n        out[0] = a[0] * b;\n        out[1] = a[1] * b;\n        out[2] = a[2] * b;\n        out[3] = a[3] * b;\n        out[4] = a[4] * b;\n        out[5] = a[5] * b;\n        out[6] = a[6] * b;\n        out[7] = a[7] * b;\n        out[8] = a[8] * b;\n        out[9] = a[9] * b;\n        out[10] = a[10] * b;\n        out[11] = a[11] * b;\n        out[12] = a[12] * b;\n        out[13] = a[13] * b;\n        out[14] = a[14] * b;\n        out[15] = a[15] * b;\n        return out;\n    }\n    exports.multiplyScalar = multiplyScalar;\n    /**\n     * Adds two mat4's after multiplying each element of the second operand by a scalar value.\n     *\n     * @param {mat4} out the receiving vector\n     * @param {mat4} a the first operand\n     * @param {mat4} b the second operand\n     * @param {Number} scale the amount to scale b's elements by before adding\n     * @returns {mat4} out\n     */\n    function multiplyScalarAndAdd(out, a, b, scale) {\n        out[0] = a[0] + b[0] * scale;\n        out[1] = a[1] + b[1] * scale;\n        out[2] = a[2] + b[2] * scale;\n        out[3] = a[3] + b[3] * scale;\n        out[4] = a[4] + b[4] * scale;\n        out[5] = a[5] + b[5] * scale;\n        out[6] = a[6] + b[6] * scale;\n        out[7] = a[7] + b[7] * scale;\n        out[8] = a[8] + b[8] * scale;\n        out[9] = a[9] + b[9] * scale;\n        out[10] = a[10] + b[10] * scale;\n        out[11] = a[11] + b[11] * scale;\n        out[12] = a[12] + b[12] * scale;\n        out[13] = a[13] + b[13] * scale;\n        out[14] = a[14] + b[14] * scale;\n        out[15] = a[15] + b[15] * scale;\n        return out;\n    }\n    exports.multiplyScalarAndAdd = multiplyScalarAndAdd;\n    /**\n     * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n     *\n     * @param {mat4} a The first matrix.\n     * @param {mat4} b The second matrix.\n     * @returns {Boolean} True if the matrices are equal, false otherwise.\n     */\n    function exactEquals(a, b) {\n        return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8] && a[9] === b[9] && a[10] === b[10] && a[11] === b[11] && a[12] === b[12] && a[13] === b[13] && a[14] === b[14] && a[15] === b[15];\n    }\n    exports.exactEquals = exactEquals;\n    /**\n     * Returns whether or not the matrices have approximately the same elements in the same position.\n     *\n     * @param {mat4} a The first matrix.\n     * @param {mat4} b The second matrix.\n     * @returns {Boolean} True if the matrices are equal, false otherwise.\n     */\n    function equals(a, b) {\n        var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n        var a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7];\n        var a8 = a[8], a9 = a[9], a10 = a[10], a11 = a[11];\n        var a12 = a[12], a13 = a[13], a14 = a[14], a15 = a[15];\n        var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n        var b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7];\n        var b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11];\n        var b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n        return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8)) && Math.abs(a9 - b9) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a9), Math.abs(b9)) && Math.abs(a10 - b10) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a10), Math.abs(b10)) && Math.abs(a11 - b11) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a11), Math.abs(b11)) && Math.abs(a12 - b12) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a12), Math.abs(b12)) && Math.abs(a13 - b13) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a13), Math.abs(b13)) && Math.abs(a14 - b14) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a14), Math.abs(b14)) && Math.abs(a15 - b15) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a15), Math.abs(b15));\n    }\n    exports.equals = equals;\n    /**\n     * Alias for {@link mat4.multiply}\n     * @function\n     */\n    exports.mul = multiply;\n    /**\n     * Alias for {@link mat4.subtract}\n     * @function\n     */\n    exports.sub = subtract;\n}\n","min_source":"function _(t,a,n,r,h){r();const o=t(\"tslib\").__importStar(t(\"68ca94c15c\"));function u(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function M(t,a,n){var r=a[0],h=a[1],o=a[2],u=a[3],M=a[4],s=a[5],e=a[6],i=a[7],c=a[8],f=a[9],b=a[10],l=a[11],m=a[12],v=a[13],P=a[14],E=a[15],S=n[0],I=n[1],O=n[2],L=n[3];return t[0]=S*r+I*M+O*c+L*m,t[1]=S*h+I*s+O*f+L*v,t[2]=S*o+I*e+O*b+L*P,t[3]=S*u+I*i+O*l+L*E,S=n[4],I=n[5],O=n[6],L=n[7],t[4]=S*r+I*M+O*c+L*m,t[5]=S*h+I*s+O*f+L*v,t[6]=S*o+I*e+O*b+L*P,t[7]=S*u+I*i+O*l+L*E,S=n[8],I=n[9],O=n[10],L=n[11],t[8]=S*r+I*M+O*c+L*m,t[9]=S*h+I*s+O*f+L*v,t[10]=S*o+I*e+O*b+L*P,t[11]=S*u+I*i+O*l+L*E,S=n[12],I=n[13],O=n[14],L=n[15],t[12]=S*r+I*M+O*c+L*m,t[13]=S*h+I*s+O*f+L*v,t[14]=S*o+I*e+O*b+L*P,t[15]=S*u+I*i+O*l+L*E,t}function s(t,a,n){var r=a[0],h=a[1],o=a[2],u=a[3],M=r+r,s=h+h,e=o+o,i=r*M,c=r*s,f=r*e,b=h*s,l=h*e,m=o*e,v=u*M,P=u*s,E=u*e;return t[0]=1-(b+m),t[1]=c+E,t[2]=f-P,t[3]=0,t[4]=c-E,t[5]=1-(i+m),t[6]=l+v,t[7]=0,t[8]=f+P,t[9]=l-v,t[10]=1-(i+b),t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t}function e(t,a){var n=a[0],r=a[1],h=a[2],o=a[4],u=a[5],M=a[6],s=a[8],e=a[9],i=a[10];return t[0]=Math.hypot(n,r,h),t[1]=Math.hypot(o,u,M),t[2]=Math.hypot(s,e,i),t}function i(t,a,n){return t[0]=a[0]-n[0],t[1]=a[1]-n[1],t[2]=a[2]-n[2],t[3]=a[3]-n[3],t[4]=a[4]-n[4],t[5]=a[5]-n[5],t[6]=a[6]-n[6],t[7]=a[7]-n[7],t[8]=a[8]-n[8],t[9]=a[9]-n[9],t[10]=a[10]-n[10],t[11]=a[11]-n[11],t[12]=a[12]-n[12],t[13]=a[13]-n[13],t[14]=a[14]-n[14],t[15]=a[15]-n[15],t}n.create=function(){var t=new o.ARRAY_TYPE(16);return o.ARRAY_TYPE!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},n.clone=function(t){var a=new o.ARRAY_TYPE(16);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=t[4],a[5]=t[5],a[6]=t[6],a[7]=t[7],a[8]=t[8],a[9]=t[9],a[10]=t[10],a[11]=t[11],a[12]=t[12],a[13]=t[13],a[14]=t[14],a[15]=t[15],a},n.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],t},n.fromValues=function(t,a,n,r,h,u,M,s,e,i,c,f,b,l,m,v){var P=new o.ARRAY_TYPE(16);return P[0]=t,P[1]=a,P[2]=n,P[3]=r,P[4]=h,P[5]=u,P[6]=M,P[7]=s,P[8]=e,P[9]=i,P[10]=c,P[11]=f,P[12]=b,P[13]=l,P[14]=m,P[15]=v,P},n.set=function(t,a,n,r,h,o,u,M,s,e,i,c,f,b,l,m,v){return t[0]=a,t[1]=n,t[2]=r,t[3]=h,t[4]=o,t[5]=u,t[6]=M,t[7]=s,t[8]=e,t[9]=i,t[10]=c,t[11]=f,t[12]=b,t[13]=l,t[14]=m,t[15]=v,t},n.identity=u,n.transpose=function(t,a){if(t===a){var n=a[1],r=a[2],h=a[3],o=a[6],u=a[7],M=a[11];t[1]=a[4],t[2]=a[8],t[3]=a[12],t[4]=n,t[6]=a[9],t[7]=a[13],t[8]=r,t[9]=o,t[11]=a[14],t[12]=h,t[13]=u,t[14]=M}else t[0]=a[0],t[1]=a[4],t[2]=a[8],t[3]=a[12],t[4]=a[1],t[5]=a[5],t[6]=a[9],t[7]=a[13],t[8]=a[2],t[9]=a[6],t[10]=a[10],t[11]=a[14],t[12]=a[3],t[13]=a[7],t[14]=a[11],t[15]=a[15];return t},n.invert=function(t,a){var n=a[0],r=a[1],h=a[2],o=a[3],u=a[4],M=a[5],s=a[6],e=a[7],i=a[8],c=a[9],f=a[10],b=a[11],l=a[12],m=a[13],v=a[14],P=a[15],E=n*M-r*u,S=n*s-h*u,I=n*e-o*u,O=r*s-h*M,L=r*e-o*M,N=h*e-o*s,p=i*m-c*l,R=i*v-f*l,x=i*P-b*l,A=c*v-f*m,y=c*P-b*m,Y=f*P-b*v,g=E*Y-S*y+I*A+O*x-L*R+N*p;return g?(g=1/g,t[0]=(M*Y-s*y+e*A)*g,t[1]=(h*y-r*Y-o*A)*g,t[2]=(m*N-v*L+P*O)*g,t[3]=(f*L-c*N-b*O)*g,t[4]=(s*x-u*Y-e*R)*g,t[5]=(n*Y-h*x+o*R)*g,t[6]=(v*I-l*N-P*S)*g,t[7]=(i*N-f*I+b*S)*g,t[8]=(u*y-M*x+e*p)*g,t[9]=(r*x-n*y-o*p)*g,t[10]=(l*L-m*I+P*E)*g,t[11]=(c*I-i*L-b*E)*g,t[12]=(M*R-u*A-s*p)*g,t[13]=(n*A-r*R+h*p)*g,t[14]=(m*S-l*O-v*E)*g,t[15]=(i*O-c*S+f*E)*g,t):null},n.adjoint=function(t,a){var n=a[0],r=a[1],h=a[2],o=a[3],u=a[4],M=a[5],s=a[6],e=a[7],i=a[8],c=a[9],f=a[10],b=a[11],l=a[12],m=a[13],v=a[14],P=a[15];return t[0]=M*(f*P-b*v)-c*(s*P-e*v)+m*(s*b-e*f),t[1]=-(r*(f*P-b*v)-c*(h*P-o*v)+m*(h*b-o*f)),t[2]=r*(s*P-e*v)-M*(h*P-o*v)+m*(h*e-o*s),t[3]=-(r*(s*b-e*f)-M*(h*b-o*f)+c*(h*e-o*s)),t[4]=-(u*(f*P-b*v)-i*(s*P-e*v)+l*(s*b-e*f)),t[5]=n*(f*P-b*v)-i*(h*P-o*v)+l*(h*b-o*f),t[6]=-(n*(s*P-e*v)-u*(h*P-o*v)+l*(h*e-o*s)),t[7]=n*(s*b-e*f)-u*(h*b-o*f)+i*(h*e-o*s),t[8]=u*(c*P-b*m)-i*(M*P-e*m)+l*(M*b-e*c),t[9]=-(n*(c*P-b*m)-i*(r*P-o*m)+l*(r*b-o*c)),t[10]=n*(M*P-e*m)-u*(r*P-o*m)+l*(r*e-o*M),t[11]=-(n*(M*b-e*c)-u*(r*b-o*c)+i*(r*e-o*M)),t[12]=-(u*(c*v-f*m)-i*(M*v-s*m)+l*(M*f-s*c)),t[13]=n*(c*v-f*m)-i*(r*v-h*m)+l*(r*f-h*c),t[14]=-(n*(M*v-s*m)-u*(r*v-h*m)+l*(r*s-h*M)),t[15]=n*(M*f-s*c)-u*(r*f-h*c)+i*(r*s-h*M),t},n.determinant=function(t){var a=t[0],n=t[1],r=t[2],h=t[3],o=t[4],u=t[5],M=t[6],s=t[7],e=t[8],i=t[9],c=t[10],f=t[11],b=t[12],l=t[13],m=t[14],v=t[15];return(a*u-n*o)*(c*v-f*m)-(a*M-r*o)*(i*v-f*l)+(a*s-h*o)*(i*m-c*l)+(n*M-r*u)*(e*v-f*b)-(n*s-h*u)*(e*m-c*b)+(r*s-h*M)*(e*l-i*b)},n.multiply=M,n.translate=function(t,a,n){var r,h,o,u,M,s,e,i,c,f,b,l,m=n[0],v=n[1],P=n[2];return a===t?(t[12]=a[0]*m+a[4]*v+a[8]*P+a[12],t[13]=a[1]*m+a[5]*v+a[9]*P+a[13],t[14]=a[2]*m+a[6]*v+a[10]*P+a[14],t[15]=a[3]*m+a[7]*v+a[11]*P+a[15]):(r=a[0],h=a[1],o=a[2],u=a[3],M=a[4],s=a[5],e=a[6],i=a[7],c=a[8],f=a[9],b=a[10],l=a[11],t[0]=r,t[1]=h,t[2]=o,t[3]=u,t[4]=M,t[5]=s,t[6]=e,t[7]=i,t[8]=c,t[9]=f,t[10]=b,t[11]=l,t[12]=r*m+M*v+c*P+a[12],t[13]=h*m+s*v+f*P+a[13],t[14]=o*m+e*v+b*P+a[14],t[15]=u*m+i*v+l*P+a[15]),t},n.scale=function(t,a,n){var r=n[0],h=n[1],o=n[2];return t[0]=a[0]*r,t[1]=a[1]*r,t[2]=a[2]*r,t[3]=a[3]*r,t[4]=a[4]*h,t[5]=a[5]*h,t[6]=a[6]*h,t[7]=a[7]*h,t[8]=a[8]*o,t[9]=a[9]*o,t[10]=a[10]*o,t[11]=a[11]*o,t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],t},n.rotate=function(t,a,n,r){var h,u,M,s,e,i,c,f,b,l,m,v,P,E,S,I,O,L,N,p,R,x,A,y,Y=r[0],g=r[1],T=r[2],d=Math.hypot(Y,g,T);return d<o.EPSILON?null:(Y*=d=1/d,g*=d,T*=d,h=Math.sin(n),M=1-(u=Math.cos(n)),s=a[0],e=a[1],i=a[2],c=a[3],f=a[4],b=a[5],l=a[6],m=a[7],v=a[8],P=a[9],E=a[10],S=a[11],I=Y*Y*M+u,O=g*Y*M+T*h,L=T*Y*M-g*h,N=Y*g*M-T*h,p=g*g*M+u,R=T*g*M+Y*h,x=Y*T*M+g*h,A=g*T*M-Y*h,y=T*T*M+u,t[0]=s*I+f*O+v*L,t[1]=e*I+b*O+P*L,t[2]=i*I+l*O+E*L,t[3]=c*I+m*O+S*L,t[4]=s*N+f*p+v*R,t[5]=e*N+b*p+P*R,t[6]=i*N+l*p+E*R,t[7]=c*N+m*p+S*R,t[8]=s*x+f*A+v*y,t[9]=e*x+b*A+P*y,t[10]=i*x+l*A+E*y,t[11]=c*x+m*A+S*y,a!==t&&(t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t)},n.rotateX=function(t,a,n){var r=Math.sin(n),h=Math.cos(n),o=a[4],u=a[5],M=a[6],s=a[7],e=a[8],i=a[9],c=a[10],f=a[11];return a!==t&&(t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t[4]=o*h+e*r,t[5]=u*h+i*r,t[6]=M*h+c*r,t[7]=s*h+f*r,t[8]=e*h-o*r,t[9]=i*h-u*r,t[10]=c*h-M*r,t[11]=f*h-s*r,t},n.rotateY=function(t,a,n){var r=Math.sin(n),h=Math.cos(n),o=a[0],u=a[1],M=a[2],s=a[3],e=a[8],i=a[9],c=a[10],f=a[11];return a!==t&&(t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t[0]=o*h-e*r,t[1]=u*h-i*r,t[2]=M*h-c*r,t[3]=s*h-f*r,t[8]=o*r+e*h,t[9]=u*r+i*h,t[10]=M*r+c*h,t[11]=s*r+f*h,t},n.rotateZ=function(t,a,n){var r=Math.sin(n),h=Math.cos(n),o=a[0],u=a[1],M=a[2],s=a[3],e=a[4],i=a[5],c=a[6],f=a[7];return a!==t&&(t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t[0]=o*h+e*r,t[1]=u*h+i*r,t[2]=M*h+c*r,t[3]=s*h+f*r,t[4]=e*h-o*r,t[5]=i*h-u*r,t[6]=c*h-M*r,t[7]=f*h-s*r,t},n.fromTranslation=function(t,a){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=a[0],t[13]=a[1],t[14]=a[2],t[15]=1,t},n.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=a[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},n.fromRotation=function(t,a,n){var r,h,u,M=n[0],s=n[1],e=n[2],i=Math.hypot(M,s,e);return i<o.EPSILON?null:(M*=i=1/i,s*=i,e*=i,r=Math.sin(a),u=1-(h=Math.cos(a)),t[0]=M*M*u+h,t[1]=s*M*u+e*r,t[2]=e*M*u-s*r,t[3]=0,t[4]=M*s*u-e*r,t[5]=s*s*u+h,t[6]=e*s*u+M*r,t[7]=0,t[8]=M*e*u+s*r,t[9]=s*e*u-M*r,t[10]=e*e*u+h,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)},n.fromXRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=r,t[6]=n,t[7]=0,t[8]=0,t[9]=-n,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},n.fromYRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=0,t[2]=-n,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=n,t[9]=0,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},n.fromZRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=0,t[3]=0,t[4]=-n,t[5]=r,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},n.fromRotationTranslation=s,n.fromQuat2=function(t,a){var n=new o.ARRAY_TYPE(3),r=-a[0],h=-a[1],u=-a[2],M=a[3],e=a[4],i=a[5],c=a[6],f=a[7],b=r*r+h*h+u*u+M*M;return b>0?(n[0]=2*(e*M+f*r+i*u-c*h)/b,n[1]=2*(i*M+f*h+c*r-e*u)/b,n[2]=2*(c*M+f*u+e*h-i*r)/b):(n[0]=2*(e*M+f*r+i*u-c*h),n[1]=2*(i*M+f*h+c*r-e*u),n[2]=2*(c*M+f*u+e*h-i*r)),s(t,a,n),t},n.getTranslation=function(t,a){return t[0]=a[12],t[1]=a[13],t[2]=a[14],t},n.getScaling=e,n.getRotation=function(t,a){var n=new o.ARRAY_TYPE(3);e(n,a);var r=1/n[0],h=1/n[1],u=1/n[2],M=a[0]*r,s=a[1]*h,i=a[2]*u,c=a[4]*r,f=a[5]*h,b=a[6]*u,l=a[8]*r,m=a[9]*h,v=a[10]*u,P=M+f+v,E=0;return P>0?(E=2*Math.sqrt(P+1),t[3]=.25*E,t[0]=(b-m)/E,t[1]=(l-i)/E,t[2]=(s-c)/E):M>f&&M>v?(E=2*Math.sqrt(1+M-f-v),t[3]=(b-m)/E,t[0]=.25*E,t[1]=(s+c)/E,t[2]=(l+i)/E):f>v?(E=2*Math.sqrt(1+f-M-v),t[3]=(l-i)/E,t[0]=(s+c)/E,t[1]=.25*E,t[2]=(b+m)/E):(E=2*Math.sqrt(1+v-M-f),t[3]=(s-c)/E,t[0]=(l+i)/E,t[1]=(b+m)/E,t[2]=.25*E),t},n.fromRotationTranslationScale=function(t,a,n,r){var h=a[0],o=a[1],u=a[2],M=a[3],s=h+h,e=o+o,i=u+u,c=h*s,f=h*e,b=h*i,l=o*e,m=o*i,v=u*i,P=M*s,E=M*e,S=M*i,I=r[0],O=r[1],L=r[2];return t[0]=(1-(l+v))*I,t[1]=(f+S)*I,t[2]=(b-E)*I,t[3]=0,t[4]=(f-S)*O,t[5]=(1-(c+v))*O,t[6]=(m+P)*O,t[7]=0,t[8]=(b+E)*L,t[9]=(m-P)*L,t[10]=(1-(c+l))*L,t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t},n.fromRotationTranslationScaleOrigin=function(t,a,n,r,h){var o=a[0],u=a[1],M=a[2],s=a[3],e=o+o,i=u+u,c=M+M,f=o*e,b=o*i,l=o*c,m=u*i,v=u*c,P=M*c,E=s*e,S=s*i,I=s*c,O=r[0],L=r[1],N=r[2],p=h[0],R=h[1],x=h[2],A=(1-(m+P))*O,y=(b+I)*O,Y=(l-S)*O,g=(b-I)*L,T=(1-(f+P))*L,d=(v+E)*L,_=(l+S)*N,q=(v-E)*N,w=(1-(f+m))*N;return t[0]=A,t[1]=y,t[2]=Y,t[3]=0,t[4]=g,t[5]=T,t[6]=d,t[7]=0,t[8]=_,t[9]=q,t[10]=w,t[11]=0,t[12]=n[0]+p-(A*p+g*R+_*x),t[13]=n[1]+R-(y*p+T*R+q*x),t[14]=n[2]+x-(Y*p+d*R+w*x),t[15]=1,t},n.fromQuat=function(t,a){var n=a[0],r=a[1],h=a[2],o=a[3],u=n+n,M=r+r,s=h+h,e=n*u,i=r*u,c=r*M,f=h*u,b=h*M,l=h*s,m=o*u,v=o*M,P=o*s;return t[0]=1-c-l,t[1]=i+P,t[2]=f-v,t[3]=0,t[4]=i-P,t[5]=1-e-l,t[6]=b+m,t[7]=0,t[8]=f+v,t[9]=b-m,t[10]=1-e-c,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},n.frustum=function(t,a,n,r,h,o,u){var M=1/(n-a),s=1/(h-r),e=1/(o-u);return t[0]=2*o*M,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*o*s,t[6]=0,t[7]=0,t[8]=(n+a)*M,t[9]=(h+r)*s,t[10]=(u+o)*e,t[11]=-1,t[12]=0,t[13]=0,t[14]=u*o*2*e,t[15]=0,t},n.perspective=function(t,a,n,r,h){var o,u=1/Math.tan(a/2);return t[0]=u/n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=u,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=h&&h!==1/0?(o=1/(r-h),t[10]=(h+r)*o,t[14]=2*h*r*o):(t[10]=-1,t[14]=-2*r),t},n.perspectiveFromFieldOfView=function(t,a,n,r){var h=Math.tan(a.upDegrees*Math.PI/180),o=Math.tan(a.downDegrees*Math.PI/180),u=Math.tan(a.leftDegrees*Math.PI/180),M=Math.tan(a.rightDegrees*Math.PI/180),s=2/(u+M),e=2/(h+o);return t[0]=s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=-(u-M)*s*.5,t[9]=(h-o)*e*.5,t[10]=r/(n-r),t[11]=-1,t[12]=0,t[13]=0,t[14]=r*n/(n-r),t[15]=0,t},n.ortho=function(t,a,n,r,h,o,u){var M=1/(a-n),s=1/(r-h),e=1/(o-u);return t[0]=-2*M,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*s,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*e,t[11]=0,t[12]=(a+n)*M,t[13]=(h+r)*s,t[14]=(u+o)*e,t[15]=1,t},n.lookAt=function(t,a,n,r){var h,M,s,e,i,c,f,b,l,m,v=a[0],P=a[1],E=a[2],S=r[0],I=r[1],O=r[2],L=n[0],N=n[1],p=n[2];return Math.abs(v-L)<o.EPSILON&&Math.abs(P-N)<o.EPSILON&&Math.abs(E-p)<o.EPSILON?u(t):(f=v-L,b=P-N,l=E-p,h=I*(l*=m=1/Math.hypot(f,b,l))-O*(b*=m),M=O*(f*=m)-S*l,s=S*b-I*f,(m=Math.hypot(h,M,s))?(h*=m=1/m,M*=m,s*=m):(h=0,M=0,s=0),e=b*s-l*M,i=l*h-f*s,c=f*M-b*h,(m=Math.hypot(e,i,c))?(e*=m=1/m,i*=m,c*=m):(e=0,i=0,c=0),t[0]=h,t[1]=e,t[2]=f,t[3]=0,t[4]=M,t[5]=i,t[6]=b,t[7]=0,t[8]=s,t[9]=c,t[10]=l,t[11]=0,t[12]=-(h*v+M*P+s*E),t[13]=-(e*v+i*P+c*E),t[14]=-(f*v+b*P+l*E),t[15]=1,t)},n.targetTo=function(t,a,n,r){var h=a[0],o=a[1],u=a[2],M=r[0],s=r[1],e=r[2],i=h-n[0],c=o-n[1],f=u-n[2],b=i*i+c*c+f*f;b>0&&(i*=b=1/Math.sqrt(b),c*=b,f*=b);var l=s*f-e*c,m=e*i-M*f,v=M*c-s*i;return(b=l*l+m*m+v*v)>0&&(l*=b=1/Math.sqrt(b),m*=b,v*=b),t[0]=l,t[1]=m,t[2]=v,t[3]=0,t[4]=c*v-f*m,t[5]=f*l-i*v,t[6]=i*m-c*l,t[7]=0,t[8]=i,t[9]=c,t[10]=f,t[11]=0,t[12]=h,t[13]=o,t[14]=u,t[15]=1,t},n.str=function(t){return\"mat4(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\", \"+t[4]+\", \"+t[5]+\", \"+t[6]+\", \"+t[7]+\", \"+t[8]+\", \"+t[9]+\", \"+t[10]+\", \"+t[11]+\", \"+t[12]+\", \"+t[13]+\", \"+t[14]+\", \"+t[15]+\")\"},n.frob=function(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])},n.add=function(t,a,n){return t[0]=a[0]+n[0],t[1]=a[1]+n[1],t[2]=a[2]+n[2],t[3]=a[3]+n[3],t[4]=a[4]+n[4],t[5]=a[5]+n[5],t[6]=a[6]+n[6],t[7]=a[7]+n[7],t[8]=a[8]+n[8],t[9]=a[9]+n[9],t[10]=a[10]+n[10],t[11]=a[11]+n[11],t[12]=a[12]+n[12],t[13]=a[13]+n[13],t[14]=a[14]+n[14],t[15]=a[15]+n[15],t},n.subtract=i,n.multiplyScalar=function(t,a,n){return t[0]=a[0]*n,t[1]=a[1]*n,t[2]=a[2]*n,t[3]=a[3]*n,t[4]=a[4]*n,t[5]=a[5]*n,t[6]=a[6]*n,t[7]=a[7]*n,t[8]=a[8]*n,t[9]=a[9]*n,t[10]=a[10]*n,t[11]=a[11]*n,t[12]=a[12]*n,t[13]=a[13]*n,t[14]=a[14]*n,t[15]=a[15]*n,t},n.multiplyScalarAndAdd=function(t,a,n,r){return t[0]=a[0]+n[0]*r,t[1]=a[1]+n[1]*r,t[2]=a[2]+n[2]*r,t[3]=a[3]+n[3]*r,t[4]=a[4]+n[4]*r,t[5]=a[5]+n[5]*r,t[6]=a[6]+n[6]*r,t[7]=a[7]+n[7]*r,t[8]=a[8]+n[8]*r,t[9]=a[9]+n[9]*r,t[10]=a[10]+n[10]*r,t[11]=a[11]+n[11]*r,t[12]=a[12]+n[12]*r,t[13]=a[13]+n[13]*r,t[14]=a[14]+n[14]*r,t[15]=a[15]+n[15]*r,t},n.exactEquals=function(t,a){return t[0]===a[0]&&t[1]===a[1]&&t[2]===a[2]&&t[3]===a[3]&&t[4]===a[4]&&t[5]===a[5]&&t[6]===a[6]&&t[7]===a[7]&&t[8]===a[8]&&t[9]===a[9]&&t[10]===a[10]&&t[11]===a[11]&&t[12]===a[12]&&t[13]===a[13]&&t[14]===a[14]&&t[15]===a[15]},n.equals=function(t,a){var n=t[0],r=t[1],h=t[2],u=t[3],M=t[4],s=t[5],e=t[6],i=t[7],c=t[8],f=t[9],b=t[10],l=t[11],m=t[12],v=t[13],P=t[14],E=t[15],S=a[0],I=a[1],O=a[2],L=a[3],N=a[4],p=a[5],R=a[6],x=a[7],A=a[8],y=a[9],Y=a[10],g=a[11],T=a[12],d=a[13],_=a[14],q=a[15];return Math.abs(n-S)<=o.EPSILON*Math.max(1,Math.abs(n),Math.abs(S))&&Math.abs(r-I)<=o.EPSILON*Math.max(1,Math.abs(r),Math.abs(I))&&Math.abs(h-O)<=o.EPSILON*Math.max(1,Math.abs(h),Math.abs(O))&&Math.abs(u-L)<=o.EPSILON*Math.max(1,Math.abs(u),Math.abs(L))&&Math.abs(M-N)<=o.EPSILON*Math.max(1,Math.abs(M),Math.abs(N))&&Math.abs(s-p)<=o.EPSILON*Math.max(1,Math.abs(s),Math.abs(p))&&Math.abs(e-R)<=o.EPSILON*Math.max(1,Math.abs(e),Math.abs(R))&&Math.abs(i-x)<=o.EPSILON*Math.max(1,Math.abs(i),Math.abs(x))&&Math.abs(c-A)<=o.EPSILON*Math.max(1,Math.abs(c),Math.abs(A))&&Math.abs(f-y)<=o.EPSILON*Math.max(1,Math.abs(f),Math.abs(y))&&Math.abs(b-Y)<=o.EPSILON*Math.max(1,Math.abs(b),Math.abs(Y))&&Math.abs(l-g)<=o.EPSILON*Math.max(1,Math.abs(l),Math.abs(g))&&Math.abs(m-T)<=o.EPSILON*Math.max(1,Math.abs(m),Math.abs(T))&&Math.abs(v-d)<=o.EPSILON*Math.max(1,Math.abs(v),Math.abs(d))&&Math.abs(P-_)<=o.EPSILON*Math.max(1,Math.abs(P),Math.abs(_))&&Math.abs(E-q)<=o.EPSILON*Math.max(1,Math.abs(E),Math.abs(q))},n.mul=M,n.sub=i}\n//# sourceMappingURL=mat4.min.js.map","min_map":"{\"version\":3,\"file\":\"mat4.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"glMatrix\",\"__importStar\",\"identity\",\"out\",\"multiply\",\"a\",\"b\",\"a00\",\"a01\",\"a02\",\"a03\",\"a10\",\"a11\",\"a12\",\"a13\",\"a20\",\"a21\",\"a22\",\"a23\",\"a30\",\"a31\",\"a32\",\"a33\",\"b0\",\"b1\",\"b2\",\"b3\",\"fromRotationTranslation\",\"q\",\"v\",\"x\",\"y\",\"z\",\"w\",\"x2\",\"y2\",\"z2\",\"xx\",\"xy\",\"xz\",\"yy\",\"yz\",\"zz\",\"wx\",\"wy\",\"wz\",\"getScaling\",\"mat\",\"m11\",\"m12\",\"m13\",\"m21\",\"m22\",\"m23\",\"m31\",\"m32\",\"m33\",\"Math\",\"hypot\",\"subtract\",\"create\",\"ARRAY_TYPE\",\"Float32Array\",\"clone\",\"copy\",\"fromValues\",\"m00\",\"m01\",\"m02\",\"m03\",\"m10\",\"m20\",\"m30\",\"set\",\"transpose\",\"invert\",\"b00\",\"b01\",\"b02\",\"b03\",\"b04\",\"b05\",\"b06\",\"b07\",\"b08\",\"b09\",\"b10\",\"b11\",\"det\",\"adjoint\",\"determinant\",\"translate\",\"scale\",\"rotate\",\"rad\",\"axis\",\"s\",\"c\",\"t\",\"b12\",\"b20\",\"b21\",\"b22\",\"len\",\"EPSILON\",\"sin\",\"cos\",\"rotateX\",\"rotateY\",\"rotateZ\",\"fromTranslation\",\"fromScaling\",\"fromRotation\",\"fromXRotation\",\"fromYRotation\",\"fromZRotation\",\"fromQuat2\",\"translation\",\"bx\",\"by\",\"bz\",\"bw\",\"ax\",\"ay\",\"az\",\"aw\",\"magnitude\",\"getTranslation\",\"getRotation\",\"scaling\",\"is1\",\"is2\",\"is3\",\"sm11\",\"sm12\",\"sm13\",\"sm21\",\"sm22\",\"sm23\",\"sm31\",\"sm32\",\"sm33\",\"trace\",\"S\",\"sqrt\",\"fromRotationTranslationScale\",\"sx\",\"sy\",\"sz\",\"fromRotationTranslationScaleOrigin\",\"o\",\"ox\",\"oy\",\"oz\",\"out0\",\"out1\",\"out2\",\"out4\",\"out5\",\"out6\",\"out8\",\"out9\",\"out10\",\"fromQuat\",\"yx\",\"zx\",\"zy\",\"frustum\",\"left\",\"right\",\"bottom\",\"top\",\"near\",\"far\",\"rl\",\"tb\",\"nf\",\"perspective\",\"fovy\",\"aspect\",\"f\",\"tan\",\"Infinity\",\"perspectiveFromFieldOfView\",\"fov\",\"upTan\",\"upDegrees\",\"PI\",\"downTan\",\"downDegrees\",\"leftTan\",\"leftDegrees\",\"rightTan\",\"rightDegrees\",\"xScale\",\"yScale\",\"ortho\",\"lr\",\"bt\",\"lookAt\",\"eye\",\"center\",\"up\",\"x0\",\"x1\",\"y0\",\"y1\",\"z0\",\"z1\",\"eyex\",\"eyey\",\"eyez\",\"upx\",\"upy\",\"upz\",\"centerx\",\"centery\",\"centerz\",\"abs\",\"targetTo\",\"target\",\"str\",\"frob\",\"add\",\"multiplyScalar\",\"multiplyScalarAndAdd\",\"exactEquals\",\"equals\",\"a0\",\"a1\",\"a2\",\"a3\",\"a4\",\"a5\",\"a6\",\"a7\",\"a8\",\"a9\",\"a14\",\"a15\",\"b4\",\"b5\",\"b6\",\"b7\",\"b8\",\"b9\",\"b13\",\"b14\",\"b15\",\"max\",\"mul\",\"sub\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/quat.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"gl-matrix/esm/quat.js","resolution":"ESM","id":"eb06fc032a","hash":"eb06fc032a38890e34fb4a7052cc1b6b7c7dd207b3a208d37a323b1aea241b80","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setAxes = exports.sqlerp = exports.rotationTo = exports.equals = exports.exactEquals = exports.normalize = exports.sqrLen = exports.squaredLength = exports.len = exports.length = exports.lerp = exports.dot = exports.scale = exports.mul = exports.add = exports.set = exports.copy = exports.fromValues = exports.clone = exports.str = exports.fromEuler = exports.fromMat3 = exports.conjugate = exports.invert = exports.random = exports.slerp = exports.pow = exports.ln = exports.exp = exports.calculateW = exports.rotateZ = exports.rotateY = exports.rotateX = exports.multiply = exports.getAngle = exports.getAxisAngle = exports.setAxisAngle = exports.identity = exports.create = void 0;\nconst tslib_1 = require(\"tslib\");\nconst glMatrix = tslib_1.__importStar(require(\"./common.js\"));\nconst mat3 = tslib_1.__importStar(require(\"./mat3.js\"));\nconst vec3 = tslib_1.__importStar(require(\"./vec3.js\"));\nconst vec4 = tslib_1.__importStar(require(\"./vec4.js\"));\n/**\n * Quaternion\n * @module quat\n */\n/**\n * Creates a new identity quat\n *\n * @returns {quat} a new quaternion\n */\nfunction create() {\n    var out = new glMatrix.ARRAY_TYPE(4);\n    if (glMatrix.ARRAY_TYPE != Float32Array) {\n        out[0] = 0;\n        out[1] = 0;\n        out[2] = 0;\n    }\n    out[3] = 1;\n    return out;\n}\nexports.create = create;\n/**\n * Set a quat to the identity quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\nfunction identity(out) {\n    out[0] = 0;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 1;\n    return out;\n}\nexports.identity = identity;\n/**\n * Sets a quat from the given angle and rotation axis,\n * then returns it.\n *\n * @param {quat} out the receiving quaternion\n * @param {vec3} axis the axis around which to rotate\n * @param {Number} rad the angle in radians\n * @returns {quat} out\n **/\nfunction setAxisAngle(out, axis, rad) {\n    rad = rad * 0.5;\n    var s = Math.sin(rad);\n    out[0] = s * axis[0];\n    out[1] = s * axis[1];\n    out[2] = s * axis[2];\n    out[3] = Math.cos(rad);\n    return out;\n}\nexports.setAxisAngle = setAxisAngle;\n/**\n * Gets the rotation axis and angle for a given\n *  quaternion. If a quaternion is created with\n *  setAxisAngle, this method will return the same\n *  values as providied in the original parameter list\n *  OR functionally equivalent values.\n * Example: The quaternion formed by axis [0, 0, 1] and\n *  angle -90 is the same as the quaternion formed by\n *  [0, 0, 1] and 270. This method favors the latter.\n * @param  {vec3} out_axis  Vector receiving the axis of rotation\n * @param  {quat} q     Quaternion to be decomposed\n * @return {Number}     Angle, in radians, of the rotation\n */\nfunction getAxisAngle(out_axis, q) {\n    var rad = Math.acos(q[3]) * 2.0;\n    var s = Math.sin(rad / 2.0);\n    if (s > glMatrix.EPSILON) {\n        out_axis[0] = q[0] / s;\n        out_axis[1] = q[1] / s;\n        out_axis[2] = q[2] / s;\n    }\n    else {\n        // If s is zero, return any axis (no rotation - axis does not matter)\n        out_axis[0] = 1;\n        out_axis[1] = 0;\n        out_axis[2] = 0;\n    }\n    return rad;\n}\nexports.getAxisAngle = getAxisAngle;\n/**\n * Gets the angular distance between two unit quaternions\n *\n * @param  {quat} a     Origin unit quaternion\n * @param  {quat} b     Destination unit quaternion\n * @return {Number}     Angle, in radians, between the two quaternions\n */\nfunction getAngle(a, b) {\n    var dotproduct = (0, exports.dot)(a, b);\n    return Math.acos(2 * dotproduct * dotproduct - 1);\n}\nexports.getAngle = getAngle;\n/**\n * Multiplies two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @returns {quat} out\n */\nfunction multiply(out, a, b) {\n    var ax = a[0], ay = a[1], az = a[2], aw = a[3];\n    var bx = b[0], by = b[1], bz = b[2], bw = b[3];\n    out[0] = ax * bw + aw * bx + ay * bz - az * by;\n    out[1] = ay * bw + aw * by + az * bx - ax * bz;\n    out[2] = az * bw + aw * bz + ax * by - ay * bx;\n    out[3] = aw * bw - ax * bx - ay * by - az * bz;\n    return out;\n}\nexports.multiply = multiply;\n/**\n * Rotates a quaternion by the given angle about the X axis\n *\n * @param {quat} out quat receiving operation result\n * @param {quat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\nfunction rotateX(out, a, rad) {\n    rad *= 0.5;\n    var ax = a[0], ay = a[1], az = a[2], aw = a[3];\n    var bx = Math.sin(rad), bw = Math.cos(rad);\n    out[0] = ax * bw + aw * bx;\n    out[1] = ay * bw + az * bx;\n    out[2] = az * bw - ay * bx;\n    out[3] = aw * bw - ax * bx;\n    return out;\n}\nexports.rotateX = rotateX;\n/**\n * Rotates a quaternion by the given angle about the Y axis\n *\n * @param {quat} out quat receiving operation result\n * @param {quat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\nfunction rotateY(out, a, rad) {\n    rad *= 0.5;\n    var ax = a[0], ay = a[1], az = a[2], aw = a[3];\n    var by = Math.sin(rad), bw = Math.cos(rad);\n    out[0] = ax * bw - az * by;\n    out[1] = ay * bw + aw * by;\n    out[2] = az * bw + ax * by;\n    out[3] = aw * bw - ay * by;\n    return out;\n}\nexports.rotateY = rotateY;\n/**\n * Rotates a quaternion by the given angle about the Z axis\n *\n * @param {quat} out quat receiving operation result\n * @param {quat} a quat to rotate\n * @param {number} rad angle (in radians) to rotate\n * @returns {quat} out\n */\nfunction rotateZ(out, a, rad) {\n    rad *= 0.5;\n    var ax = a[0], ay = a[1], az = a[2], aw = a[3];\n    var bz = Math.sin(rad), bw = Math.cos(rad);\n    out[0] = ax * bw + ay * bz;\n    out[1] = ay * bw - ax * bz;\n    out[2] = az * bw + aw * bz;\n    out[3] = aw * bw - az * bz;\n    return out;\n}\nexports.rotateZ = rotateZ;\n/**\n * Calculates the W component of a quat from the X, Y, and Z components.\n * Assumes that quaternion is 1 unit in length.\n * Any existing W component will be ignored.\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quat to calculate W component of\n * @returns {quat} out\n */\nfunction calculateW(out, a) {\n    var x = a[0], y = a[1], z = a[2];\n    out[0] = x;\n    out[1] = y;\n    out[2] = z;\n    out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n    return out;\n}\nexports.calculateW = calculateW;\n/**\n * Calculate the exponential of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quat to calculate the exponential of\n * @returns {quat} out\n */\nfunction exp(out, a) {\n    var x = a[0], y = a[1], z = a[2], w = a[3];\n    var r = Math.sqrt(x * x + y * y + z * z);\n    var et = Math.exp(w);\n    var s = r > 0 ? et * Math.sin(r) / r : 0;\n    out[0] = x * s;\n    out[1] = y * s;\n    out[2] = z * s;\n    out[3] = et * Math.cos(r);\n    return out;\n}\nexports.exp = exp;\n/**\n * Calculate the natural logarithm of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quat to calculate the exponential of\n * @returns {quat} out\n */\nfunction ln(out, a) {\n    var x = a[0], y = a[1], z = a[2], w = a[3];\n    var r = Math.sqrt(x * x + y * y + z * z);\n    var t = r > 0 ? Math.atan2(r, w) / r : 0;\n    out[0] = x * t;\n    out[1] = y * t;\n    out[2] = z * t;\n    out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n    return out;\n}\nexports.ln = ln;\n/**\n * Calculate the scalar power of a unit quaternion.\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quat to calculate the exponential of\n * @param {Number} b amount to scale the quaternion by\n * @returns {quat} out\n */\nfunction pow(out, a, b) {\n    ln(out, a);\n    (0, exports.scale)(out, out, b);\n    exp(out, out);\n    return out;\n}\nexports.pow = pow;\n/**\n * Performs a spherical linear interpolation between two quat\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\nfunction slerp(out, a, b, t) {\n    // benchmarks:\n    //    http://jsperf.com/quaternion-slerp-implementations\n    var ax = a[0], ay = a[1], az = a[2], aw = a[3];\n    var bx = b[0], by = b[1], bz = b[2], bw = b[3];\n    var omega, cosom, sinom, scale0, scale1; // calc cosine\n    cosom = ax * bx + ay * by + az * bz + aw * bw; // adjust signs (if necessary)\n    if (cosom < 0.0) {\n        cosom = -cosom;\n        bx = -bx;\n        by = -by;\n        bz = -bz;\n        bw = -bw;\n    } // calculate coefficients\n    if (1.0 - cosom > glMatrix.EPSILON) {\n        // standard case (slerp)\n        omega = Math.acos(cosom);\n        sinom = Math.sin(omega);\n        scale0 = Math.sin((1.0 - t) * omega) / sinom;\n        scale1 = Math.sin(t * omega) / sinom;\n    }\n    else {\n        // \"from\" and \"to\" quaternions are very close\n        //  ... so we can do a linear interpolation\n        scale0 = 1.0 - t;\n        scale1 = t;\n    } // calculate final values\n    out[0] = scale0 * ax + scale1 * bx;\n    out[1] = scale0 * ay + scale1 * by;\n    out[2] = scale0 * az + scale1 * bz;\n    out[3] = scale0 * aw + scale1 * bw;\n    return out;\n}\nexports.slerp = slerp;\n/**\n * Generates a random unit quaternion\n *\n * @param {quat} out the receiving quaternion\n * @returns {quat} out\n */\nfunction random(out) {\n    // Implementation of http://planning.cs.uiuc.edu/node198.html\n    // TODO: Calling random 3 times is probably not the fastest solution\n    var u1 = glMatrix.RANDOM();\n    var u2 = glMatrix.RANDOM();\n    var u3 = glMatrix.RANDOM();\n    var sqrt1MinusU1 = Math.sqrt(1 - u1);\n    var sqrtU1 = Math.sqrt(u1);\n    out[0] = sqrt1MinusU1 * Math.sin(2.0 * Math.PI * u2);\n    out[1] = sqrt1MinusU1 * Math.cos(2.0 * Math.PI * u2);\n    out[2] = sqrtU1 * Math.sin(2.0 * Math.PI * u3);\n    out[3] = sqrtU1 * Math.cos(2.0 * Math.PI * u3);\n    return out;\n}\nexports.random = random;\n/**\n * Calculates the inverse of a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quat to calculate inverse of\n * @returns {quat} out\n */\nfunction invert(out, a) {\n    var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n    var dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n    var invDot = dot ? 1.0 / dot : 0; // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n    out[0] = -a0 * invDot;\n    out[1] = -a1 * invDot;\n    out[2] = -a2 * invDot;\n    out[3] = a3 * invDot;\n    return out;\n}\nexports.invert = invert;\n/**\n * Calculates the conjugate of a quat\n * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quat to calculate conjugate of\n * @returns {quat} out\n */\nfunction conjugate(out, a) {\n    out[0] = -a[0];\n    out[1] = -a[1];\n    out[2] = -a[2];\n    out[3] = a[3];\n    return out;\n}\nexports.conjugate = conjugate;\n/**\n * Creates a quaternion from the given 3x3 rotation matrix.\n *\n * NOTE: The resultant quaternion is not normalized, so you should be sure\n * to renormalize the quaternion yourself where necessary.\n *\n * @param {quat} out the receiving quaternion\n * @param {mat3} m rotation matrix\n * @returns {quat} out\n * @function\n */\nfunction fromMat3(out, m) {\n    // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n    // article \"Quaternion Calculus and Fast Animation\".\n    var fTrace = m[0] + m[4] + m[8];\n    var fRoot;\n    if (fTrace > 0.0) {\n        // |w| > 1/2, may as well choose w > 1/2\n        fRoot = Math.sqrt(fTrace + 1.0); // 2w\n        out[3] = 0.5 * fRoot;\n        fRoot = 0.5 / fRoot; // 1/(4w)\n        out[0] = (m[5] - m[7]) * fRoot;\n        out[1] = (m[6] - m[2]) * fRoot;\n        out[2] = (m[1] - m[3]) * fRoot;\n    }\n    else {\n        // |w| <= 1/2\n        var i = 0;\n        if (m[4] > m[0])\n            i = 1;\n        if (m[8] > m[i * 3 + i])\n            i = 2;\n        var j = (i + 1) % 3;\n        var k = (i + 2) % 3;\n        fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n        out[i] = 0.5 * fRoot;\n        fRoot = 0.5 / fRoot;\n        out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n        out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n        out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n    }\n    return out;\n}\nexports.fromMat3 = fromMat3;\n/**\n * Creates a quaternion from the given euler angle x, y, z.\n *\n * @param {quat} out the receiving quaternion\n * @param {x} Angle to rotate around X axis in degrees.\n * @param {y} Angle to rotate around Y axis in degrees.\n * @param {z} Angle to rotate around Z axis in degrees.\n * @returns {quat} out\n * @function\n */\nfunction fromEuler(out, x, y, z) {\n    var halfToRad = 0.5 * Math.PI / 180.0;\n    x *= halfToRad;\n    y *= halfToRad;\n    z *= halfToRad;\n    var sx = Math.sin(x);\n    var cx = Math.cos(x);\n    var sy = Math.sin(y);\n    var cy = Math.cos(y);\n    var sz = Math.sin(z);\n    var cz = Math.cos(z);\n    out[0] = sx * cy * cz - cx * sy * sz;\n    out[1] = cx * sy * cz + sx * cy * sz;\n    out[2] = cx * cy * sz - sx * sy * cz;\n    out[3] = cx * cy * cz + sx * sy * sz;\n    return out;\n}\nexports.fromEuler = fromEuler;\n/**\n * Returns a string representation of a quatenion\n *\n * @param {quat} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\nfunction str(a) {\n    return \"quat(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\nexports.str = str;\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {quat} a quaternion to clone\n * @returns {quat} a new quaternion\n * @function\n */\nexports.clone = vec4.clone;\n/**\n * Creates a new quat initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} a new quaternion\n * @function\n */\nexports.fromValues = vec4.fromValues;\n/**\n * Copy the values from one quat to another\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the source quaternion\n * @returns {quat} out\n * @function\n */\nexports.copy = vec4.copy;\n/**\n * Set the components of a quat to the given values\n *\n * @param {quat} out the receiving quaternion\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {quat} out\n * @function\n */\nexports.set = vec4.set;\n/**\n * Adds two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @returns {quat} out\n * @function\n */\nexports.add = vec4.add;\n/**\n * Alias for {@link quat.multiply}\n * @function\n */\nexports.mul = multiply;\n/**\n * Scales a quat by a scalar number\n *\n * @param {quat} out the receiving vector\n * @param {quat} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {quat} out\n * @function\n */\nexports.scale = vec4.scale;\n/**\n * Calculates the dot product of two quat's\n *\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\nexports.dot = vec4.dot;\n/**\n * Performs a linear interpolation between two quat's\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n * @function\n */\nexports.lerp = vec4.lerp;\n/**\n * Calculates the length of a quat\n *\n * @param {quat} a vector to calculate length of\n * @returns {Number} length of a\n */\nexports.length = vec4.length;\n/**\n * Alias for {@link quat.length}\n * @function\n */\nexports.len = exports.length;\n/**\n * Calculates the squared length of a quat\n *\n * @param {quat} a vector to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\nexports.squaredLength = vec4.squaredLength;\n/**\n * Alias for {@link quat.squaredLength}\n * @function\n */\nexports.sqrLen = exports.squaredLength;\n/**\n * Normalize a quat\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a quaternion to normalize\n * @returns {quat} out\n * @function\n */\nexports.normalize = vec4.normalize;\n/**\n * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {quat} a The first quaternion.\n * @param {quat} b The second quaternion.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nexports.exactEquals = vec4.exactEquals;\n/**\n * Returns whether or not the quaternions have approximately the same elements in the same position.\n *\n * @param {quat} a The first vector.\n * @param {quat} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nexports.equals = vec4.equals;\n/**\n * Sets a quaternion to represent the shortest rotation from one\n * vector to another.\n *\n * Both vectors are assumed to be unit length.\n *\n * @param {quat} out the receiving quaternion.\n * @param {vec3} a the initial vector\n * @param {vec3} b the destination vector\n * @returns {quat} out\n */\nexports.rotationTo = function () {\n    var tmpvec3 = vec3.create();\n    var xUnitVec3 = vec3.fromValues(1, 0, 0);\n    var yUnitVec3 = vec3.fromValues(0, 1, 0);\n    return function (out, a, b) {\n        var dot = vec3.dot(a, b);\n        if (dot < -0.999999) {\n            vec3.cross(tmpvec3, xUnitVec3, a);\n            if (vec3.len(tmpvec3) < 0.000001)\n                vec3.cross(tmpvec3, yUnitVec3, a);\n            vec3.normalize(tmpvec3, tmpvec3);\n            setAxisAngle(out, tmpvec3, Math.PI);\n            return out;\n        }\n        else if (dot > 0.999999) {\n            out[0] = 0;\n            out[1] = 0;\n            out[2] = 0;\n            out[3] = 1;\n            return out;\n        }\n        else {\n            vec3.cross(tmpvec3, a, b);\n            out[0] = tmpvec3[0];\n            out[1] = tmpvec3[1];\n            out[2] = tmpvec3[2];\n            out[3] = 1 + dot;\n            return (0, exports.normalize)(out, out);\n        }\n    };\n}();\n/**\n * Performs a spherical linear interpolation with two control points\n *\n * @param {quat} out the receiving quaternion\n * @param {quat} a the first operand\n * @param {quat} b the second operand\n * @param {quat} c the third operand\n * @param {quat} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat} out\n */\nexports.sqlerp = function () {\n    var temp1 = create();\n    var temp2 = create();\n    return function (out, a, b, c, d, t) {\n        slerp(temp1, a, d, t);\n        slerp(temp2, b, c, t);\n        slerp(out, temp1, temp2, 2 * t * (1 - t));\n        return out;\n    };\n}();\n/**\n * Sets the specified quaternion with values corresponding to the given\n * axes. Each axis is a vec3 and is expected to be unit length and\n * perpendicular to all other specified axes.\n *\n * @param {vec3} view  the vector representing the viewing direction\n * @param {vec3} right the vector representing the local \"right\" direction\n * @param {vec3} up    the vector representing the local \"up\" direction\n * @returns {quat} out\n */\nexports.setAxes = function () {\n    var matr = mat3.create();\n    return function (out, view, right, up) {\n        matr[0] = right[0];\n        matr[3] = right[1];\n        matr[6] = right[2];\n        matr[1] = up[0];\n        matr[4] = up[1];\n        matr[7] = up[2];\n        matr[2] = -view[0];\n        matr[5] = -view[1];\n        matr[8] = -view[2];\n        return (0, exports.normalize)(out, fromMat3(out, matr));\n    };\n}();\n","type":"js","dependency_paths":[["./common.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/common.js"],["./mat3.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/mat3.js"],["./vec3.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/vec3.js"],["./vec4.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/vec4.js"]],"dependency_map":[],"exported":[{"type":"named","name":"create"},{"type":"named","name":"identity"},{"type":"named","name":"setAxisAngle"},{"type":"named","name":"getAxisAngle"},{"type":"named","name":"getAngle"},{"type":"named","name":"multiply"},{"type":"named","name":"rotateX"},{"type":"named","name":"rotateY"},{"type":"named","name":"rotateZ"},{"type":"named","name":"calculateW"},{"type":"named","name":"exp"},{"type":"named","name":"ln"},{"type":"named","name":"pow"},{"type":"named","name":"slerp"},{"type":"named","name":"random"},{"type":"named","name":"invert"},{"type":"named","name":"conjugate"},{"type":"named","name":"fromMat3"},{"type":"named","name":"fromEuler"},{"type":"named","name":"str"}],"externals":[],"shims":[]},"code":{"source":"/* gl-matrix/esm/quat.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    const glMatrix = tslib_1.__importStar(require(\"68ca94c15c\") /* ./common.js */);\n    const mat3 = tslib_1.__importStar(require(\"0285c50a7e\") /* ./mat3.js */);\n    const vec3 = tslib_1.__importStar(require(\"2c5eb22089\") /* ./vec3.js */);\n    const vec4 = tslib_1.__importStar(require(\"c1aa33d719\") /* ./vec4.js */);\n    /**\n     * Quaternion\n     * @module quat\n     */\n    /**\n     * Creates a new identity quat\n     *\n     * @returns {quat} a new quaternion\n     */\n    function create() {\n        var out = new glMatrix.ARRAY_TYPE(4);\n        if (glMatrix.ARRAY_TYPE != Float32Array) {\n            out[0] = 0;\n            out[1] = 0;\n            out[2] = 0;\n        }\n        out[3] = 1;\n        return out;\n    }\n    exports.create = create;\n    /**\n     * Set a quat to the identity quaternion\n     *\n     * @param {quat} out the receiving quaternion\n     * @returns {quat} out\n     */\n    function identity(out) {\n        out[0] = 0;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 1;\n        return out;\n    }\n    exports.identity = identity;\n    /**\n     * Sets a quat from the given angle and rotation axis,\n     * then returns it.\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {vec3} axis the axis around which to rotate\n     * @param {Number} rad the angle in radians\n     * @returns {quat} out\n     **/\n    function setAxisAngle(out, axis, rad) {\n        rad = rad * 0.5;\n        var s = Math.sin(rad);\n        out[0] = s * axis[0];\n        out[1] = s * axis[1];\n        out[2] = s * axis[2];\n        out[3] = Math.cos(rad);\n        return out;\n    }\n    exports.setAxisAngle = setAxisAngle;\n    /**\n     * Gets the rotation axis and angle for a given\n     *  quaternion. If a quaternion is created with\n     *  setAxisAngle, this method will return the same\n     *  values as providied in the original parameter list\n     *  OR functionally equivalent values.\n     * Example: The quaternion formed by axis [0, 0, 1] and\n     *  angle -90 is the same as the quaternion formed by\n     *  [0, 0, 1] and 270. This method favors the latter.\n     * @param  {vec3} out_axis  Vector receiving the axis of rotation\n     * @param  {quat} q     Quaternion to be decomposed\n     * @return {Number}     Angle, in radians, of the rotation\n     */\n    function getAxisAngle(out_axis, q) {\n        var rad = Math.acos(q[3]) * 2.0;\n        var s = Math.sin(rad / 2.0);\n        if (s > glMatrix.EPSILON) {\n            out_axis[0] = q[0] / s;\n            out_axis[1] = q[1] / s;\n            out_axis[2] = q[2] / s;\n        }\n        else {\n            // If s is zero, return any axis (no rotation - axis does not matter)\n            out_axis[0] = 1;\n            out_axis[1] = 0;\n            out_axis[2] = 0;\n        }\n        return rad;\n    }\n    exports.getAxisAngle = getAxisAngle;\n    /**\n     * Gets the angular distance between two unit quaternions\n     *\n     * @param  {quat} a     Origin unit quaternion\n     * @param  {quat} b     Destination unit quaternion\n     * @return {Number}     Angle, in radians, between the two quaternions\n     */\n    function getAngle(a, b) {\n        var dotproduct = (0, exports.dot)(a, b);\n        return Math.acos(2 * dotproduct * dotproduct - 1);\n    }\n    exports.getAngle = getAngle;\n    /**\n     * Multiplies two quat's\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {quat} a the first operand\n     * @param {quat} b the second operand\n     * @returns {quat} out\n     */\n    function multiply(out, a, b) {\n        var ax = a[0], ay = a[1], az = a[2], aw = a[3];\n        var bx = b[0], by = b[1], bz = b[2], bw = b[3];\n        out[0] = ax * bw + aw * bx + ay * bz - az * by;\n        out[1] = ay * bw + aw * by + az * bx - ax * bz;\n        out[2] = az * bw + aw * bz + ax * by - ay * bx;\n        out[3] = aw * bw - ax * bx - ay * by - az * bz;\n        return out;\n    }\n    exports.multiply = multiply;\n    /**\n     * Rotates a quaternion by the given angle about the X axis\n     *\n     * @param {quat} out quat receiving operation result\n     * @param {quat} a quat to rotate\n     * @param {number} rad angle (in radians) to rotate\n     * @returns {quat} out\n     */\n    function rotateX(out, a, rad) {\n        rad *= 0.5;\n        var ax = a[0], ay = a[1], az = a[2], aw = a[3];\n        var bx = Math.sin(rad), bw = Math.cos(rad);\n        out[0] = ax * bw + aw * bx;\n        out[1] = ay * bw + az * bx;\n        out[2] = az * bw - ay * bx;\n        out[3] = aw * bw - ax * bx;\n        return out;\n    }\n    exports.rotateX = rotateX;\n    /**\n     * Rotates a quaternion by the given angle about the Y axis\n     *\n     * @param {quat} out quat receiving operation result\n     * @param {quat} a quat to rotate\n     * @param {number} rad angle (in radians) to rotate\n     * @returns {quat} out\n     */\n    function rotateY(out, a, rad) {\n        rad *= 0.5;\n        var ax = a[0], ay = a[1], az = a[2], aw = a[3];\n        var by = Math.sin(rad), bw = Math.cos(rad);\n        out[0] = ax * bw - az * by;\n        out[1] = ay * bw + aw * by;\n        out[2] = az * bw + ax * by;\n        out[3] = aw * bw - ay * by;\n        return out;\n    }\n    exports.rotateY = rotateY;\n    /**\n     * Rotates a quaternion by the given angle about the Z axis\n     *\n     * @param {quat} out quat receiving operation result\n     * @param {quat} a quat to rotate\n     * @param {number} rad angle (in radians) to rotate\n     * @returns {quat} out\n     */\n    function rotateZ(out, a, rad) {\n        rad *= 0.5;\n        var ax = a[0], ay = a[1], az = a[2], aw = a[3];\n        var bz = Math.sin(rad), bw = Math.cos(rad);\n        out[0] = ax * bw + ay * bz;\n        out[1] = ay * bw - ax * bz;\n        out[2] = az * bw + aw * bz;\n        out[3] = aw * bw - az * bz;\n        return out;\n    }\n    exports.rotateZ = rotateZ;\n    /**\n     * Calculates the W component of a quat from the X, Y, and Z components.\n     * Assumes that quaternion is 1 unit in length.\n     * Any existing W component will be ignored.\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {quat} a quat to calculate W component of\n     * @returns {quat} out\n     */\n    function calculateW(out, a) {\n        var x = a[0], y = a[1], z = a[2];\n        out[0] = x;\n        out[1] = y;\n        out[2] = z;\n        out[3] = Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));\n        return out;\n    }\n    exports.calculateW = calculateW;\n    /**\n     * Calculate the exponential of a unit quaternion.\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {quat} a quat to calculate the exponential of\n     * @returns {quat} out\n     */\n    function exp(out, a) {\n        var x = a[0], y = a[1], z = a[2], w = a[3];\n        var r = Math.sqrt(x * x + y * y + z * z);\n        var et = Math.exp(w);\n        var s = r > 0 ? et * Math.sin(r) / r : 0;\n        out[0] = x * s;\n        out[1] = y * s;\n        out[2] = z * s;\n        out[3] = et * Math.cos(r);\n        return out;\n    }\n    exports.exp = exp;\n    /**\n     * Calculate the natural logarithm of a unit quaternion.\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {quat} a quat to calculate the exponential of\n     * @returns {quat} out\n     */\n    function ln(out, a) {\n        var x = a[0], y = a[1], z = a[2], w = a[3];\n        var r = Math.sqrt(x * x + y * y + z * z);\n        var t = r > 0 ? Math.atan2(r, w) / r : 0;\n        out[0] = x * t;\n        out[1] = y * t;\n        out[2] = z * t;\n        out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w);\n        return out;\n    }\n    exports.ln = ln;\n    /**\n     * Calculate the scalar power of a unit quaternion.\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {quat} a quat to calculate the exponential of\n     * @param {Number} b amount to scale the quaternion by\n     * @returns {quat} out\n     */\n    function pow(out, a, b) {\n        ln(out, a);\n        (0, exports.scale)(out, out, b);\n        exp(out, out);\n        return out;\n    }\n    exports.pow = pow;\n    /**\n     * Performs a spherical linear interpolation between two quat\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {quat} a the first operand\n     * @param {quat} b the second operand\n     * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n     * @returns {quat} out\n     */\n    function slerp(out, a, b, t) {\n        // benchmarks:\n        //    http://jsperf.com/quaternion-slerp-implementations\n        var ax = a[0], ay = a[1], az = a[2], aw = a[3];\n        var bx = b[0], by = b[1], bz = b[2], bw = b[3];\n        var omega, cosom, sinom, scale0, scale1; // calc cosine\n        cosom = ax * bx + ay * by + az * bz + aw * bw; // adjust signs (if necessary)\n        if (cosom < 0.0) {\n            cosom = -cosom;\n            bx = -bx;\n            by = -by;\n            bz = -bz;\n            bw = -bw;\n        } // calculate coefficients\n        if (1.0 - cosom > glMatrix.EPSILON) {\n            // standard case (slerp)\n            omega = Math.acos(cosom);\n            sinom = Math.sin(omega);\n            scale0 = Math.sin((1.0 - t) * omega) / sinom;\n            scale1 = Math.sin(t * omega) / sinom;\n        }\n        else {\n            // \"from\" and \"to\" quaternions are very close\n            //  ... so we can do a linear interpolation\n            scale0 = 1.0 - t;\n            scale1 = t;\n        } // calculate final values\n        out[0] = scale0 * ax + scale1 * bx;\n        out[1] = scale0 * ay + scale1 * by;\n        out[2] = scale0 * az + scale1 * bz;\n        out[3] = scale0 * aw + scale1 * bw;\n        return out;\n    }\n    exports.slerp = slerp;\n    /**\n     * Generates a random unit quaternion\n     *\n     * @param {quat} out the receiving quaternion\n     * @returns {quat} out\n     */\n    function random(out) {\n        // Implementation of http://planning.cs.uiuc.edu/node198.html\n        // TODO: Calling random 3 times is probably not the fastest solution\n        var u1 = glMatrix.RANDOM();\n        var u2 = glMatrix.RANDOM();\n        var u3 = glMatrix.RANDOM();\n        var sqrt1MinusU1 = Math.sqrt(1 - u1);\n        var sqrtU1 = Math.sqrt(u1);\n        out[0] = sqrt1MinusU1 * Math.sin(2.0 * Math.PI * u2);\n        out[1] = sqrt1MinusU1 * Math.cos(2.0 * Math.PI * u2);\n        out[2] = sqrtU1 * Math.sin(2.0 * Math.PI * u3);\n        out[3] = sqrtU1 * Math.cos(2.0 * Math.PI * u3);\n        return out;\n    }\n    exports.random = random;\n    /**\n     * Calculates the inverse of a quat\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {quat} a quat to calculate inverse of\n     * @returns {quat} out\n     */\n    function invert(out, a) {\n        var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n        var dot = a0 * a0 + a1 * a1 + a2 * a2 + a3 * a3;\n        var invDot = dot ? 1.0 / dot : 0; // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0\n        out[0] = -a0 * invDot;\n        out[1] = -a1 * invDot;\n        out[2] = -a2 * invDot;\n        out[3] = a3 * invDot;\n        return out;\n    }\n    exports.invert = invert;\n    /**\n     * Calculates the conjugate of a quat\n     * If the quaternion is normalized, this function is faster than quat.inverse and produces the same result.\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {quat} a quat to calculate conjugate of\n     * @returns {quat} out\n     */\n    function conjugate(out, a) {\n        out[0] = -a[0];\n        out[1] = -a[1];\n        out[2] = -a[2];\n        out[3] = a[3];\n        return out;\n    }\n    exports.conjugate = conjugate;\n    /**\n     * Creates a quaternion from the given 3x3 rotation matrix.\n     *\n     * NOTE: The resultant quaternion is not normalized, so you should be sure\n     * to renormalize the quaternion yourself where necessary.\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {mat3} m rotation matrix\n     * @returns {quat} out\n     * @function\n     */\n    function fromMat3(out, m) {\n        // Algorithm in Ken Shoemake's article in 1987 SIGGRAPH course notes\n        // article \"Quaternion Calculus and Fast Animation\".\n        var fTrace = m[0] + m[4] + m[8];\n        var fRoot;\n        if (fTrace > 0.0) {\n            // |w| > 1/2, may as well choose w > 1/2\n            fRoot = Math.sqrt(fTrace + 1.0); // 2w\n            out[3] = 0.5 * fRoot;\n            fRoot = 0.5 / fRoot; // 1/(4w)\n            out[0] = (m[5] - m[7]) * fRoot;\n            out[1] = (m[6] - m[2]) * fRoot;\n            out[2] = (m[1] - m[3]) * fRoot;\n        }\n        else {\n            // |w| <= 1/2\n            var i = 0;\n            if (m[4] > m[0])\n                i = 1;\n            if (m[8] > m[i * 3 + i])\n                i = 2;\n            var j = (i + 1) % 3;\n            var k = (i + 2) % 3;\n            fRoot = Math.sqrt(m[i * 3 + i] - m[j * 3 + j] - m[k * 3 + k] + 1.0);\n            out[i] = 0.5 * fRoot;\n            fRoot = 0.5 / fRoot;\n            out[3] = (m[j * 3 + k] - m[k * 3 + j]) * fRoot;\n            out[j] = (m[j * 3 + i] + m[i * 3 + j]) * fRoot;\n            out[k] = (m[k * 3 + i] + m[i * 3 + k]) * fRoot;\n        }\n        return out;\n    }\n    exports.fromMat3 = fromMat3;\n    /**\n     * Creates a quaternion from the given euler angle x, y, z.\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {x} Angle to rotate around X axis in degrees.\n     * @param {y} Angle to rotate around Y axis in degrees.\n     * @param {z} Angle to rotate around Z axis in degrees.\n     * @returns {quat} out\n     * @function\n     */\n    function fromEuler(out, x, y, z) {\n        var halfToRad = 0.5 * Math.PI / 180.0;\n        x *= halfToRad;\n        y *= halfToRad;\n        z *= halfToRad;\n        var sx = Math.sin(x);\n        var cx = Math.cos(x);\n        var sy = Math.sin(y);\n        var cy = Math.cos(y);\n        var sz = Math.sin(z);\n        var cz = Math.cos(z);\n        out[0] = sx * cy * cz - cx * sy * sz;\n        out[1] = cx * sy * cz + sx * cy * sz;\n        out[2] = cx * cy * sz - sx * sy * cz;\n        out[3] = cx * cy * cz + sx * sy * sz;\n        return out;\n    }\n    exports.fromEuler = fromEuler;\n    /**\n     * Returns a string representation of a quatenion\n     *\n     * @param {quat} a vector to represent as a string\n     * @returns {String} string representation of the vector\n     */\n    function str(a) {\n        return \"quat(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n    }\n    exports.str = str;\n    /**\n     * Creates a new quat initialized with values from an existing quaternion\n     *\n     * @param {quat} a quaternion to clone\n     * @returns {quat} a new quaternion\n     * @function\n     */\n    exports.clone = vec4.clone;\n    /**\n     * Creates a new quat initialized with the given values\n     *\n     * @param {Number} x X component\n     * @param {Number} y Y component\n     * @param {Number} z Z component\n     * @param {Number} w W component\n     * @returns {quat} a new quaternion\n     * @function\n     */\n    exports.fromValues = vec4.fromValues;\n    /**\n     * Copy the values from one quat to another\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {quat} a the source quaternion\n     * @returns {quat} out\n     * @function\n     */\n    exports.copy = vec4.copy;\n    /**\n     * Set the components of a quat to the given values\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {Number} x X component\n     * @param {Number} y Y component\n     * @param {Number} z Z component\n     * @param {Number} w W component\n     * @returns {quat} out\n     * @function\n     */\n    exports.set = vec4.set;\n    /**\n     * Adds two quat's\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {quat} a the first operand\n     * @param {quat} b the second operand\n     * @returns {quat} out\n     * @function\n     */\n    exports.add = vec4.add;\n    /**\n     * Alias for {@link quat.multiply}\n     * @function\n     */\n    exports.mul = multiply;\n    /**\n     * Scales a quat by a scalar number\n     *\n     * @param {quat} out the receiving vector\n     * @param {quat} a the vector to scale\n     * @param {Number} b amount to scale the vector by\n     * @returns {quat} out\n     * @function\n     */\n    exports.scale = vec4.scale;\n    /**\n     * Calculates the dot product of two quat's\n     *\n     * @param {quat} a the first operand\n     * @param {quat} b the second operand\n     * @returns {Number} dot product of a and b\n     * @function\n     */\n    exports.dot = vec4.dot;\n    /**\n     * Performs a linear interpolation between two quat's\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {quat} a the first operand\n     * @param {quat} b the second operand\n     * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n     * @returns {quat} out\n     * @function\n     */\n    exports.lerp = vec4.lerp;\n    /**\n     * Calculates the length of a quat\n     *\n     * @param {quat} a vector to calculate length of\n     * @returns {Number} length of a\n     */\n    exports.length = vec4.length;\n    /**\n     * Alias for {@link quat.length}\n     * @function\n     */\n    exports.len = exports.length;\n    /**\n     * Calculates the squared length of a quat\n     *\n     * @param {quat} a vector to calculate squared length of\n     * @returns {Number} squared length of a\n     * @function\n     */\n    exports.squaredLength = vec4.squaredLength;\n    /**\n     * Alias for {@link quat.squaredLength}\n     * @function\n     */\n    exports.sqrLen = exports.squaredLength;\n    /**\n     * Normalize a quat\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {quat} a quaternion to normalize\n     * @returns {quat} out\n     * @function\n     */\n    exports.normalize = vec4.normalize;\n    /**\n     * Returns whether or not the quaternions have exactly the same elements in the same position (when compared with ===)\n     *\n     * @param {quat} a The first quaternion.\n     * @param {quat} b The second quaternion.\n     * @returns {Boolean} True if the vectors are equal, false otherwise.\n     */\n    exports.exactEquals = vec4.exactEquals;\n    /**\n     * Returns whether or not the quaternions have approximately the same elements in the same position.\n     *\n     * @param {quat} a The first vector.\n     * @param {quat} b The second vector.\n     * @returns {Boolean} True if the vectors are equal, false otherwise.\n     */\n    exports.equals = vec4.equals;\n    /**\n     * Sets a quaternion to represent the shortest rotation from one\n     * vector to another.\n     *\n     * Both vectors are assumed to be unit length.\n     *\n     * @param {quat} out the receiving quaternion.\n     * @param {vec3} a the initial vector\n     * @param {vec3} b the destination vector\n     * @returns {quat} out\n     */\n    exports.rotationTo = function () {\n        var tmpvec3 = vec3.create();\n        var xUnitVec3 = vec3.fromValues(1, 0, 0);\n        var yUnitVec3 = vec3.fromValues(0, 1, 0);\n        return function (out, a, b) {\n            var dot = vec3.dot(a, b);\n            if (dot < -0.999999) {\n                vec3.cross(tmpvec3, xUnitVec3, a);\n                if (vec3.len(tmpvec3) < 0.000001)\n                    vec3.cross(tmpvec3, yUnitVec3, a);\n                vec3.normalize(tmpvec3, tmpvec3);\n                setAxisAngle(out, tmpvec3, Math.PI);\n                return out;\n            }\n            else if (dot > 0.999999) {\n                out[0] = 0;\n                out[1] = 0;\n                out[2] = 0;\n                out[3] = 1;\n                return out;\n            }\n            else {\n                vec3.cross(tmpvec3, a, b);\n                out[0] = tmpvec3[0];\n                out[1] = tmpvec3[1];\n                out[2] = tmpvec3[2];\n                out[3] = 1 + dot;\n                return (0, exports.normalize)(out, out);\n            }\n        };\n    }();\n    /**\n     * Performs a spherical linear interpolation with two control points\n     *\n     * @param {quat} out the receiving quaternion\n     * @param {quat} a the first operand\n     * @param {quat} b the second operand\n     * @param {quat} c the third operand\n     * @param {quat} d the fourth operand\n     * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n     * @returns {quat} out\n     */\n    exports.sqlerp = function () {\n        var temp1 = create();\n        var temp2 = create();\n        return function (out, a, b, c, d, t) {\n            slerp(temp1, a, d, t);\n            slerp(temp2, b, c, t);\n            slerp(out, temp1, temp2, 2 * t * (1 - t));\n            return out;\n        };\n    }();\n    /**\n     * Sets the specified quaternion with values corresponding to the given\n     * axes. Each axis is a vec3 and is expected to be unit length and\n     * perpendicular to all other specified axes.\n     *\n     * @param {vec3} view  the vector representing the viewing direction\n     * @param {vec3} right the vector representing the local \"right\" direction\n     * @param {vec3} up    the vector representing the local \"up\" direction\n     * @returns {quat} out\n     */\n    exports.setAxes = function () {\n        var matr = mat3.create();\n        return function (out, view, right, up) {\n            matr[0] = right[0];\n            matr[3] = right[1];\n            matr[6] = right[2];\n            matr[1] = up[0];\n            matr[4] = up[1];\n            matr[7] = up[2];\n            matr[2] = -view[0];\n            matr[5] = -view[1];\n            matr[8] = -view[2];\n            return (0, exports.normalize)(out, fromMat3(out, matr));\n        };\n    }();\n}\n","min_source":"function _(t,a,r,n,e){n();const o=t(\"tslib\"),s=o.__importStar(t(\"68ca94c15c\")),u=o.__importStar(t(\"0285c50a7e\")),c=o.__importStar(t(\"2c5eb22089\")),i=o.__importStar(t(\"c1aa33d719\"));function h(){var t=new s.ARRAY_TYPE(4);return s.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function M(t,a,r){r*=.5;var n=Math.sin(r);return t[0]=n*a[0],t[1]=n*a[1],t[2]=n*a[2],t[3]=Math.cos(r),t}function l(t,a,r){var n=a[0],e=a[1],o=a[2],s=a[3],u=r[0],c=r[1],i=r[2],h=r[3];return t[0]=n*h+s*u+e*i-o*c,t[1]=e*h+s*c+o*u-n*i,t[2]=o*h+s*i+n*c-e*u,t[3]=s*h-n*u-e*c-o*i,t}function f(t,a){var r=a[0],n=a[1],e=a[2],o=a[3],s=Math.sqrt(r*r+n*n+e*e),u=Math.exp(o),c=s>0?u*Math.sin(s)/s:0;return t[0]=r*c,t[1]=n*c,t[2]=e*c,t[3]=u*Math.cos(s),t}function v(t,a){var r=a[0],n=a[1],e=a[2],o=a[3],s=Math.sqrt(r*r+n*n+e*e),u=s>0?Math.atan2(s,o)/s:0;return t[0]=r*u,t[1]=n*u,t[2]=e*u,t[3]=.5*Math.log(r*r+n*n+e*e+o*o),t}function m(t,a,r,n){var e,o,u,c,i,h=a[0],M=a[1],l=a[2],f=a[3],v=r[0],m=r[1],q=r[2],d=r[3];return(o=h*v+M*m+l*q+f*d)<0&&(o=-o,v=-v,m=-m,q=-q,d=-d),1-o>s.EPSILON?(e=Math.acos(o),u=Math.sin(e),c=Math.sin((1-n)*e)/u,i=Math.sin(n*e)/u):(c=1-n,i=n),t[0]=c*h+i*v,t[1]=c*M+i*m,t[2]=c*l+i*q,t[3]=c*f+i*d,t}function q(t,a){var r,n=a[0]+a[4]+a[8];if(n>0)r=Math.sqrt(n+1),t[3]=.5*r,r=.5/r,t[0]=(a[5]-a[7])*r,t[1]=(a[6]-a[2])*r,t[2]=(a[1]-a[3])*r;else{var e=0;a[4]>a[0]&&(e=1),a[8]>a[3*e+e]&&(e=2);var o=(e+1)%3,s=(e+2)%3;r=Math.sqrt(a[3*e+e]-a[3*o+o]-a[3*s+s]+1),t[e]=.5*r,r=.5/r,t[3]=(a[3*o+s]-a[3*s+o])*r,t[o]=(a[3*o+e]+a[3*e+o])*r,t[s]=(a[3*s+e]+a[3*e+s])*r}return t}var d,p,A,g,_,P;r.create=h,r.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},r.setAxisAngle=M,r.getAxisAngle=function(t,a){var r=2*Math.acos(a[3]),n=Math.sin(r/2);return n>s.EPSILON?(t[0]=a[0]/n,t[1]=a[1]/n,t[2]=a[2]/n):(t[0]=1,t[1]=0,t[2]=0),r},r.getAngle=function(t,a){var n=(0,r.dot)(t,a);return Math.acos(2*n*n-1)},r.multiply=l,r.rotateX=function(t,a,r){r*=.5;var n=a[0],e=a[1],o=a[2],s=a[3],u=Math.sin(r),c=Math.cos(r);return t[0]=n*c+s*u,t[1]=e*c+o*u,t[2]=o*c-e*u,t[3]=s*c-n*u,t},r.rotateY=function(t,a,r){r*=.5;var n=a[0],e=a[1],o=a[2],s=a[3],u=Math.sin(r),c=Math.cos(r);return t[0]=n*c-o*u,t[1]=e*c+s*u,t[2]=o*c+n*u,t[3]=s*c-e*u,t},r.rotateZ=function(t,a,r){r*=.5;var n=a[0],e=a[1],o=a[2],s=a[3],u=Math.sin(r),c=Math.cos(r);return t[0]=n*c+e*u,t[1]=e*c-n*u,t[2]=o*c+s*u,t[3]=s*c-o*u,t},r.calculateW=function(t,a){var r=a[0],n=a[1],e=a[2];return t[0]=r,t[1]=n,t[2]=e,t[3]=Math.sqrt(Math.abs(1-r*r-n*n-e*e)),t},r.exp=f,r.ln=v,r.pow=function(t,a,n){return v(t,a),(0,r.scale)(t,t,n),f(t,t),t},r.slerp=m,r.random=function(t){var a=s.RANDOM(),r=s.RANDOM(),n=s.RANDOM(),e=Math.sqrt(1-a),o=Math.sqrt(a);return t[0]=e*Math.sin(2*Math.PI*r),t[1]=e*Math.cos(2*Math.PI*r),t[2]=o*Math.sin(2*Math.PI*n),t[3]=o*Math.cos(2*Math.PI*n),t},r.invert=function(t,a){var r=a[0],n=a[1],e=a[2],o=a[3],s=r*r+n*n+e*e+o*o,u=s?1/s:0;return t[0]=-r*u,t[1]=-n*u,t[2]=-e*u,t[3]=o*u,t},r.conjugate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t[2]=-a[2],t[3]=a[3],t},r.fromMat3=q,r.fromEuler=function(t,a,r,n){var e=.5*Math.PI/180;a*=e,r*=e,n*=e;var o=Math.sin(a),s=Math.cos(a),u=Math.sin(r),c=Math.cos(r),i=Math.sin(n),h=Math.cos(n);return t[0]=o*c*h-s*u*i,t[1]=s*u*h+o*c*i,t[2]=s*c*i-o*u*h,t[3]=s*c*h+o*u*i,t},r.str=function(t){return\"quat(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\")\"},r.clone=i.clone,r.fromValues=i.fromValues,r.copy=i.copy,r.set=i.set,r.add=i.add,r.mul=l,r.scale=i.scale,r.dot=i.dot,r.lerp=i.lerp,r.length=i.length,r.len=r.length,r.squaredLength=i.squaredLength,r.sqrLen=r.squaredLength,r.normalize=i.normalize,r.exactEquals=i.exactEquals,r.equals=i.equals,r.rotationTo=(d=c.create(),p=c.fromValues(1,0,0),A=c.fromValues(0,1,0),function(t,a,n){var e=c.dot(a,n);return e<-.999999?(c.cross(d,p,a),c.len(d)<1e-6&&c.cross(d,A,a),c.normalize(d,d),M(t,d,Math.PI),t):e>.999999?(t[0]=0,t[1]=0,t[2]=0,t[3]=1,t):(c.cross(d,a,n),t[0]=d[0],t[1]=d[1],t[2]=d[2],t[3]=1+e,(0,r.normalize)(t,t))}),r.sqlerp=(g=h(),_=h(),function(t,a,r,n,e,o){return m(g,a,e,o),m(_,r,n,o),m(t,g,_,2*o*(1-o)),t}),r.setAxes=(P=u.create(),function(t,a,n,e){return P[0]=n[0],P[3]=n[1],P[6]=n[2],P[1]=e[0],P[4]=e[1],P[7]=e[2],P[2]=-a[0],P[5]=-a[1],P[8]=-a[2],(0,r.normalize)(t,q(t,P))})}\n//# sourceMappingURL=quat.min.js.map","min_map":"{\"version\":3,\"file\":\"quat.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"tslib_1\",\"glMatrix\",\"__importStar\",\"mat3\",\"vec3\",\"vec4\",\"create\",\"out\",\"ARRAY_TYPE\",\"Float32Array\",\"setAxisAngle\",\"axis\",\"rad\",\"s\",\"Math\",\"sin\",\"cos\",\"multiply\",\"a\",\"b\",\"ax\",\"ay\",\"az\",\"aw\",\"bx\",\"by\",\"bz\",\"bw\",\"exp\",\"x\",\"y\",\"z\",\"w\",\"r\",\"sqrt\",\"et\",\"ln\",\"t\",\"atan2\",\"log\",\"slerp\",\"omega\",\"cosom\",\"sinom\",\"scale0\",\"scale1\",\"EPSILON\",\"acos\",\"fromMat3\",\"m\",\"fRoot\",\"fTrace\",\"i\",\"j\",\"k\",\"tmpvec3\",\"xUnitVec3\",\"yUnitVec3\",\"temp1\",\"temp2\",\"matr\",\"identity\",\"getAxisAngle\",\"out_axis\",\"q\",\"getAngle\",\"dotproduct\",\"dot\",\"rotateX\",\"rotateY\",\"rotateZ\",\"calculateW\",\"abs\",\"pow\",\"scale\",\"random\",\"u1\",\"RANDOM\",\"u2\",\"u3\",\"sqrt1MinusU1\",\"sqrtU1\",\"PI\",\"invert\",\"a0\",\"a1\",\"a2\",\"a3\",\"invDot\",\"conjugate\",\"fromEuler\",\"halfToRad\",\"sx\",\"cx\",\"sy\",\"cy\",\"sz\",\"cz\",\"str\",\"clone\",\"fromValues\",\"copy\",\"set\",\"add\",\"mul\",\"lerp\",\"length\",\"len\",\"squaredLength\",\"sqrLen\",\"normalize\",\"exactEquals\",\"equals\",\"rotationTo\",\"cross\",\"sqlerp\",\"c\",\"d\",\"setAxes\",\"view\",\"right\",\"up\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/vec3.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"gl-matrix/esm/vec3.js","resolution":"ESM","id":"2c5eb22089","hash":"2c5eb220899a1383f1965a860c0fb3ed7ff494ba00e6ef4bf47631e93aa81991","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.forEach = exports.sqrLen = exports.len = exports.sqrDist = exports.dist = exports.div = exports.mul = exports.sub = exports.equals = exports.exactEquals = exports.str = exports.zero = exports.angle = exports.rotateZ = exports.rotateY = exports.rotateX = exports.transformQuat = exports.transformMat3 = exports.transformMat4 = exports.random = exports.bezier = exports.hermite = exports.lerp = exports.cross = exports.dot = exports.normalize = exports.inverse = exports.negate = exports.squaredLength = exports.squaredDistance = exports.distance = exports.scaleAndAdd = exports.scale = exports.round = exports.max = exports.min = exports.floor = exports.ceil = exports.divide = exports.multiply = exports.subtract = exports.add = exports.set = exports.copy = exports.fromValues = exports.length = exports.clone = exports.create = void 0;\nconst tslib_1 = require(\"tslib\");\nconst glMatrix = tslib_1.__importStar(require(\"./common.js\"));\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\nfunction create() {\n    var out = new glMatrix.ARRAY_TYPE(3);\n    if (glMatrix.ARRAY_TYPE != Float32Array) {\n        out[0] = 0;\n        out[1] = 0;\n        out[2] = 0;\n    }\n    return out;\n}\nexports.create = create;\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {vec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\nfunction clone(a) {\n    var out = new glMatrix.ARRAY_TYPE(3);\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    return out;\n}\nexports.clone = clone;\n/**\n * Calculates the length of a vec3\n *\n * @param {vec3} a vector to calculate length of\n * @returns {Number} length of a\n */\nfunction length(a) {\n    var x = a[0];\n    var y = a[1];\n    var z = a[2];\n    return Math.hypot(x, y, z);\n}\nexports.length = length;\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\nfunction fromValues(x, y, z) {\n    var out = new glMatrix.ARRAY_TYPE(3);\n    out[0] = x;\n    out[1] = y;\n    out[2] = z;\n    return out;\n}\nexports.fromValues = fromValues;\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the source vector\n * @returns {vec3} out\n */\nfunction copy(out, a) {\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    return out;\n}\nexports.copy = copy;\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\nfunction set(out, x, y, z) {\n    out[0] = x;\n    out[1] = y;\n    out[2] = z;\n    return out;\n}\nexports.set = set;\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nfunction add(out, a, b) {\n    out[0] = a[0] + b[0];\n    out[1] = a[1] + b[1];\n    out[2] = a[2] + b[2];\n    return out;\n}\nexports.add = add;\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nfunction subtract(out, a, b) {\n    out[0] = a[0] - b[0];\n    out[1] = a[1] - b[1];\n    out[2] = a[2] - b[2];\n    return out;\n}\nexports.subtract = subtract;\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nfunction multiply(out, a, b) {\n    out[0] = a[0] * b[0];\n    out[1] = a[1] * b[1];\n    out[2] = a[2] * b[2];\n    return out;\n}\nexports.multiply = multiply;\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nfunction divide(out, a, b) {\n    out[0] = a[0] / b[0];\n    out[1] = a[1] / b[1];\n    out[2] = a[2] / b[2];\n    return out;\n}\nexports.divide = divide;\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to ceil\n * @returns {vec3} out\n */\nfunction ceil(out, a) {\n    out[0] = Math.ceil(a[0]);\n    out[1] = Math.ceil(a[1]);\n    out[2] = Math.ceil(a[2]);\n    return out;\n}\nexports.ceil = ceil;\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to floor\n * @returns {vec3} out\n */\nfunction floor(out, a) {\n    out[0] = Math.floor(a[0]);\n    out[1] = Math.floor(a[1]);\n    out[2] = Math.floor(a[2]);\n    return out;\n}\nexports.floor = floor;\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nfunction min(out, a, b) {\n    out[0] = Math.min(a[0], b[0]);\n    out[1] = Math.min(a[1], b[1]);\n    out[2] = Math.min(a[2], b[2]);\n    return out;\n}\nexports.min = min;\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nfunction max(out, a, b) {\n    out[0] = Math.max(a[0], b[0]);\n    out[1] = Math.max(a[1], b[1]);\n    out[2] = Math.max(a[2], b[2]);\n    return out;\n}\nexports.max = max;\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to round\n * @returns {vec3} out\n */\nfunction round(out, a) {\n    out[0] = Math.round(a[0]);\n    out[1] = Math.round(a[1]);\n    out[2] = Math.round(a[2]);\n    return out;\n}\nexports.round = round;\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\nfunction scale(out, a, b) {\n    out[0] = a[0] * b;\n    out[1] = a[1] * b;\n    out[2] = a[2] * b;\n    return out;\n}\nexports.scale = scale;\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\nfunction scaleAndAdd(out, a, b, scale) {\n    out[0] = a[0] + b[0] * scale;\n    out[1] = a[1] + b[1] * scale;\n    out[2] = a[2] + b[2] * scale;\n    return out;\n}\nexports.scaleAndAdd = scaleAndAdd;\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {Number} distance between a and b\n */\nfunction distance(a, b) {\n    var x = b[0] - a[0];\n    var y = b[1] - a[1];\n    var z = b[2] - a[2];\n    return Math.hypot(x, y, z);\n}\nexports.distance = distance;\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\nfunction squaredDistance(a, b) {\n    var x = b[0] - a[0];\n    var y = b[1] - a[1];\n    var z = b[2] - a[2];\n    return x * x + y * y + z * z;\n}\nexports.squaredDistance = squaredDistance;\n/**\n * Calculates the squared length of a vec3\n *\n * @param {vec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\nfunction squaredLength(a) {\n    var x = a[0];\n    var y = a[1];\n    var z = a[2];\n    return x * x + y * y + z * z;\n}\nexports.squaredLength = squaredLength;\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to negate\n * @returns {vec3} out\n */\nfunction negate(out, a) {\n    out[0] = -a[0];\n    out[1] = -a[1];\n    out[2] = -a[2];\n    return out;\n}\nexports.negate = negate;\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to invert\n * @returns {vec3} out\n */\nfunction inverse(out, a) {\n    out[0] = 1.0 / a[0];\n    out[1] = 1.0 / a[1];\n    out[2] = 1.0 / a[2];\n    return out;\n}\nexports.inverse = inverse;\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a vector to normalize\n * @returns {vec3} out\n */\nfunction normalize(out, a) {\n    var x = a[0];\n    var y = a[1];\n    var z = a[2];\n    var len = x * x + y * y + z * z;\n    if (len > 0) {\n        //TODO: evaluate use of glm_invsqrt here?\n        len = 1 / Math.sqrt(len);\n    }\n    out[0] = a[0] * len;\n    out[1] = a[1] * len;\n    out[2] = a[2] * len;\n    return out;\n}\nexports.normalize = normalize;\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {Number} dot product of a and b\n */\nfunction dot(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\nexports.dot = dot;\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @returns {vec3} out\n */\nfunction cross(out, a, b) {\n    var ax = a[0], ay = a[1], az = a[2];\n    var bx = b[0], by = b[1], bz = b[2];\n    out[0] = ay * bz - az * by;\n    out[1] = az * bx - ax * bz;\n    out[2] = ax * by - ay * bx;\n    return out;\n}\nexports.cross = cross;\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\nfunction lerp(out, a, b, t) {\n    var ax = a[0];\n    var ay = a[1];\n    var az = a[2];\n    out[0] = ax + t * (b[0] - ax);\n    out[1] = ay + t * (b[1] - ay);\n    out[2] = az + t * (b[2] - az);\n    return out;\n}\nexports.lerp = lerp;\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @param {vec3} c the third operand\n * @param {vec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\nfunction hermite(out, a, b, c, d, t) {\n    var factorTimes2 = t * t;\n    var factor1 = factorTimes2 * (2 * t - 3) + 1;\n    var factor2 = factorTimes2 * (t - 2) + t;\n    var factor3 = factorTimes2 * (t - 1);\n    var factor4 = factorTimes2 * (3 - 2 * t);\n    out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n    out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n    out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n    return out;\n}\nexports.hermite = hermite;\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the first operand\n * @param {vec3} b the second operand\n * @param {vec3} c the third operand\n * @param {vec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\nfunction bezier(out, a, b, c, d, t) {\n    var inverseFactor = 1 - t;\n    var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n    var factorTimes2 = t * t;\n    var factor1 = inverseFactorTimesTwo * inverseFactor;\n    var factor2 = 3 * t * inverseFactorTimesTwo;\n    var factor3 = 3 * factorTimes2 * inverseFactor;\n    var factor4 = factorTimes2 * t;\n    out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n    out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n    out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n    return out;\n}\nexports.bezier = bezier;\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\nfunction random(out, scale) {\n    scale = scale || 1.0;\n    var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n    var z = glMatrix.RANDOM() * 2.0 - 1.0;\n    var zScale = Math.sqrt(1.0 - z * z) * scale;\n    out[0] = Math.cos(r) * zScale;\n    out[1] = Math.sin(r) * zScale;\n    out[2] = z * scale;\n    return out;\n}\nexports.random = random;\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to transform\n * @param {mat4} m matrix to transform with\n * @returns {vec3} out\n */\nfunction transformMat4(out, a, m) {\n    var x = a[0], y = a[1], z = a[2];\n    var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n    w = w || 1.0;\n    out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n    out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n    out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n    return out;\n}\nexports.transformMat4 = transformMat4;\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to transform\n * @param {mat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\nfunction transformMat3(out, a, m) {\n    var x = a[0], y = a[1], z = a[2];\n    out[0] = x * m[0] + y * m[3] + z * m[6];\n    out[1] = x * m[1] + y * m[4] + z * m[7];\n    out[2] = x * m[2] + y * m[5] + z * m[8];\n    return out;\n}\nexports.transformMat3 = transformMat3;\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {vec3} a the vector to transform\n * @param {quat} q quaternion to transform with\n * @returns {vec3} out\n */\nfunction transformQuat(out, a, q) {\n    // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n    var qx = q[0], qy = q[1], qz = q[2], qw = q[3];\n    var x = a[0], y = a[1], z = a[2]; // var qvec = [qx, qy, qz];\n    // var uv = vec3.cross([], qvec, a);\n    var uvx = qy * z - qz * y, uvy = qz * x - qx * z, uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n    var uuvx = qy * uvz - qz * uvy, uuvy = qz * uvx - qx * uvz, uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n    var w2 = qw * 2;\n    uvx *= w2;\n    uvy *= w2;\n    uvz *= w2; // vec3.scale(uuv, uuv, 2);\n    uuvx *= 2;\n    uuvy *= 2;\n    uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n    out[0] = x + uvx + uuvx;\n    out[1] = y + uvy + uuvy;\n    out[2] = z + uvz + uuvz;\n    return out;\n}\nexports.transformQuat = transformQuat;\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {vec3} a The vec3 point to rotate\n * @param {vec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\nfunction rotateX(out, a, b, rad) {\n    var p = [], r = []; //Translate point to the origin\n    p[0] = a[0] - b[0];\n    p[1] = a[1] - b[1];\n    p[2] = a[2] - b[2]; //perform rotation\n    r[0] = p[0];\n    r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n    r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n    out[0] = r[0] + b[0];\n    out[1] = r[1] + b[1];\n    out[2] = r[2] + b[2];\n    return out;\n}\nexports.rotateX = rotateX;\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {vec3} a The vec3 point to rotate\n * @param {vec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\nfunction rotateY(out, a, b, rad) {\n    var p = [], r = []; //Translate point to the origin\n    p[0] = a[0] - b[0];\n    p[1] = a[1] - b[1];\n    p[2] = a[2] - b[2]; //perform rotation\n    r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n    r[1] = p[1];\n    r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n    out[0] = r[0] + b[0];\n    out[1] = r[1] + b[1];\n    out[2] = r[2] + b[2];\n    return out;\n}\nexports.rotateY = rotateY;\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {vec3} a The vec3 point to rotate\n * @param {vec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\nfunction rotateZ(out, a, b, rad) {\n    var p = [], r = []; //Translate point to the origin\n    p[0] = a[0] - b[0];\n    p[1] = a[1] - b[1];\n    p[2] = a[2] - b[2]; //perform rotation\n    r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n    r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n    r[2] = p[2]; //translate to correct position\n    out[0] = r[0] + b[0];\n    out[1] = r[1] + b[1];\n    out[2] = r[2] + b[2];\n    return out;\n}\nexports.rotateZ = rotateZ;\n/**\n * Get the angle between two 3D vectors\n * @param {vec3} a The first operand\n * @param {vec3} b The second operand\n * @returns {Number} The angle in radians\n */\nfunction angle(a, b) {\n    var ax = a[0], ay = a[1], az = a[2], bx = b[0], by = b[1], bz = b[2], mag1 = Math.sqrt(ax * ax + ay * ay + az * az), mag2 = Math.sqrt(bx * bx + by * by + bz * bz), mag = mag1 * mag2, cosine = mag && dot(a, b) / mag;\n    return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\nexports.angle = angle;\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\nfunction zero(out) {\n    out[0] = 0.0;\n    out[1] = 0.0;\n    out[2] = 0.0;\n    return out;\n}\nexports.zero = zero;\n/**\n * Returns a string representation of a vector\n *\n * @param {vec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\nfunction str(a) {\n    return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\nexports.str = str;\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {vec3} a The first vector.\n * @param {vec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nfunction exactEquals(a, b) {\n    return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\nexports.exactEquals = exactEquals;\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {vec3} a The first vector.\n * @param {vec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nfunction equals(a, b) {\n    var a0 = a[0], a1 = a[1], a2 = a[2];\n    var b0 = b[0], b1 = b[1], b2 = b[2];\n    return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\nexports.equals = equals;\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\nexports.sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\nexports.mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\nexports.div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\nexports.dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\nexports.sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\nexports.len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\nexports.sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\nexports.forEach = function () {\n    var vec = create();\n    return function (a, stride, offset, count, fn, arg) {\n        var i, l;\n        if (!stride) {\n            stride = 3;\n        }\n        if (!offset) {\n            offset = 0;\n        }\n        if (count) {\n            l = Math.min(count * stride + offset, a.length);\n        }\n        else {\n            l = a.length;\n        }\n        for (i = offset; i < l; i += stride) {\n            vec[0] = a[i];\n            vec[1] = a[i + 1];\n            vec[2] = a[i + 2];\n            fn(vec, vec, arg);\n            a[i] = vec[0];\n            a[i + 1] = vec[1];\n            a[i + 2] = vec[2];\n        }\n        return a;\n    };\n}();\n","type":"js","dependency_paths":[["./common.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/common.js"]],"dependency_map":[],"exported":[{"type":"named","name":"create"},{"type":"named","name":"clone"},{"type":"named","name":"length"},{"type":"named","name":"fromValues"},{"type":"named","name":"copy"},{"type":"named","name":"set"},{"type":"named","name":"add"},{"type":"named","name":"subtract"},{"type":"named","name":"multiply"},{"type":"named","name":"divide"},{"type":"named","name":"ceil"},{"type":"named","name":"floor"},{"type":"named","name":"min"},{"type":"named","name":"max"},{"type":"named","name":"round"},{"type":"named","name":"scale"},{"type":"named","name":"scaleAndAdd"},{"type":"named","name":"distance"},{"type":"named","name":"squaredDistance"},{"type":"named","name":"squaredLength"},{"type":"named","name":"negate"},{"type":"named","name":"inverse"},{"type":"named","name":"normalize"},{"type":"named","name":"dot"},{"type":"named","name":"cross"},{"type":"named","name":"lerp"},{"type":"named","name":"hermite"},{"type":"named","name":"bezier"},{"type":"named","name":"random"},{"type":"named","name":"transformMat4"},{"type":"named","name":"transformMat3"},{"type":"named","name":"transformQuat"},{"type":"named","name":"rotateX"},{"type":"named","name":"rotateY"},{"type":"named","name":"rotateZ"},{"type":"named","name":"angle"},{"type":"named","name":"zero"},{"type":"named","name":"str"},{"type":"named","name":"exactEquals"},{"type":"named","name":"equals"}],"externals":[],"shims":[]},"code":{"source":"/* gl-matrix/esm/vec3.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    const glMatrix = tslib_1.__importStar(require(\"68ca94c15c\") /* ./common.js */);\n    /**\n     * 3 Dimensional Vector\n     * @module vec3\n     */\n    /**\n     * Creates a new, empty vec3\n     *\n     * @returns {vec3} a new 3D vector\n     */\n    function create() {\n        var out = new glMatrix.ARRAY_TYPE(3);\n        if (glMatrix.ARRAY_TYPE != Float32Array) {\n            out[0] = 0;\n            out[1] = 0;\n            out[2] = 0;\n        }\n        return out;\n    }\n    exports.create = create;\n    /**\n     * Creates a new vec3 initialized with values from an existing vector\n     *\n     * @param {vec3} a vector to clone\n     * @returns {vec3} a new 3D vector\n     */\n    function clone(a) {\n        var out = new glMatrix.ARRAY_TYPE(3);\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = a[2];\n        return out;\n    }\n    exports.clone = clone;\n    /**\n     * Calculates the length of a vec3\n     *\n     * @param {vec3} a vector to calculate length of\n     * @returns {Number} length of a\n     */\n    function length(a) {\n        var x = a[0];\n        var y = a[1];\n        var z = a[2];\n        return Math.hypot(x, y, z);\n    }\n    exports.length = length;\n    /**\n     * Creates a new vec3 initialized with the given values\n     *\n     * @param {Number} x X component\n     * @param {Number} y Y component\n     * @param {Number} z Z component\n     * @returns {vec3} a new 3D vector\n     */\n    function fromValues(x, y, z) {\n        var out = new glMatrix.ARRAY_TYPE(3);\n        out[0] = x;\n        out[1] = y;\n        out[2] = z;\n        return out;\n    }\n    exports.fromValues = fromValues;\n    /**\n     * Copy the values from one vec3 to another\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a the source vector\n     * @returns {vec3} out\n     */\n    function copy(out, a) {\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = a[2];\n        return out;\n    }\n    exports.copy = copy;\n    /**\n     * Set the components of a vec3 to the given values\n     *\n     * @param {vec3} out the receiving vector\n     * @param {Number} x X component\n     * @param {Number} y Y component\n     * @param {Number} z Z component\n     * @returns {vec3} out\n     */\n    function set(out, x, y, z) {\n        out[0] = x;\n        out[1] = y;\n        out[2] = z;\n        return out;\n    }\n    exports.set = set;\n    /**\n     * Adds two vec3's\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a the first operand\n     * @param {vec3} b the second operand\n     * @returns {vec3} out\n     */\n    function add(out, a, b) {\n        out[0] = a[0] + b[0];\n        out[1] = a[1] + b[1];\n        out[2] = a[2] + b[2];\n        return out;\n    }\n    exports.add = add;\n    /**\n     * Subtracts vector b from vector a\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a the first operand\n     * @param {vec3} b the second operand\n     * @returns {vec3} out\n     */\n    function subtract(out, a, b) {\n        out[0] = a[0] - b[0];\n        out[1] = a[1] - b[1];\n        out[2] = a[2] - b[2];\n        return out;\n    }\n    exports.subtract = subtract;\n    /**\n     * Multiplies two vec3's\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a the first operand\n     * @param {vec3} b the second operand\n     * @returns {vec3} out\n     */\n    function multiply(out, a, b) {\n        out[0] = a[0] * b[0];\n        out[1] = a[1] * b[1];\n        out[2] = a[2] * b[2];\n        return out;\n    }\n    exports.multiply = multiply;\n    /**\n     * Divides two vec3's\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a the first operand\n     * @param {vec3} b the second operand\n     * @returns {vec3} out\n     */\n    function divide(out, a, b) {\n        out[0] = a[0] / b[0];\n        out[1] = a[1] / b[1];\n        out[2] = a[2] / b[2];\n        return out;\n    }\n    exports.divide = divide;\n    /**\n     * Math.ceil the components of a vec3\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a vector to ceil\n     * @returns {vec3} out\n     */\n    function ceil(out, a) {\n        out[0] = Math.ceil(a[0]);\n        out[1] = Math.ceil(a[1]);\n        out[2] = Math.ceil(a[2]);\n        return out;\n    }\n    exports.ceil = ceil;\n    /**\n     * Math.floor the components of a vec3\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a vector to floor\n     * @returns {vec3} out\n     */\n    function floor(out, a) {\n        out[0] = Math.floor(a[0]);\n        out[1] = Math.floor(a[1]);\n        out[2] = Math.floor(a[2]);\n        return out;\n    }\n    exports.floor = floor;\n    /**\n     * Returns the minimum of two vec3's\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a the first operand\n     * @param {vec3} b the second operand\n     * @returns {vec3} out\n     */\n    function min(out, a, b) {\n        out[0] = Math.min(a[0], b[0]);\n        out[1] = Math.min(a[1], b[1]);\n        out[2] = Math.min(a[2], b[2]);\n        return out;\n    }\n    exports.min = min;\n    /**\n     * Returns the maximum of two vec3's\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a the first operand\n     * @param {vec3} b the second operand\n     * @returns {vec3} out\n     */\n    function max(out, a, b) {\n        out[0] = Math.max(a[0], b[0]);\n        out[1] = Math.max(a[1], b[1]);\n        out[2] = Math.max(a[2], b[2]);\n        return out;\n    }\n    exports.max = max;\n    /**\n     * Math.round the components of a vec3\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a vector to round\n     * @returns {vec3} out\n     */\n    function round(out, a) {\n        out[0] = Math.round(a[0]);\n        out[1] = Math.round(a[1]);\n        out[2] = Math.round(a[2]);\n        return out;\n    }\n    exports.round = round;\n    /**\n     * Scales a vec3 by a scalar number\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a the vector to scale\n     * @param {Number} b amount to scale the vector by\n     * @returns {vec3} out\n     */\n    function scale(out, a, b) {\n        out[0] = a[0] * b;\n        out[1] = a[1] * b;\n        out[2] = a[2] * b;\n        return out;\n    }\n    exports.scale = scale;\n    /**\n     * Adds two vec3's after scaling the second operand by a scalar value\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a the first operand\n     * @param {vec3} b the second operand\n     * @param {Number} scale the amount to scale b by before adding\n     * @returns {vec3} out\n     */\n    function scaleAndAdd(out, a, b, scale) {\n        out[0] = a[0] + b[0] * scale;\n        out[1] = a[1] + b[1] * scale;\n        out[2] = a[2] + b[2] * scale;\n        return out;\n    }\n    exports.scaleAndAdd = scaleAndAdd;\n    /**\n     * Calculates the euclidian distance between two vec3's\n     *\n     * @param {vec3} a the first operand\n     * @param {vec3} b the second operand\n     * @returns {Number} distance between a and b\n     */\n    function distance(a, b) {\n        var x = b[0] - a[0];\n        var y = b[1] - a[1];\n        var z = b[2] - a[2];\n        return Math.hypot(x, y, z);\n    }\n    exports.distance = distance;\n    /**\n     * Calculates the squared euclidian distance between two vec3's\n     *\n     * @param {vec3} a the first operand\n     * @param {vec3} b the second operand\n     * @returns {Number} squared distance between a and b\n     */\n    function squaredDistance(a, b) {\n        var x = b[0] - a[0];\n        var y = b[1] - a[1];\n        var z = b[2] - a[2];\n        return x * x + y * y + z * z;\n    }\n    exports.squaredDistance = squaredDistance;\n    /**\n     * Calculates the squared length of a vec3\n     *\n     * @param {vec3} a vector to calculate squared length of\n     * @returns {Number} squared length of a\n     */\n    function squaredLength(a) {\n        var x = a[0];\n        var y = a[1];\n        var z = a[2];\n        return x * x + y * y + z * z;\n    }\n    exports.squaredLength = squaredLength;\n    /**\n     * Negates the components of a vec3\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a vector to negate\n     * @returns {vec3} out\n     */\n    function negate(out, a) {\n        out[0] = -a[0];\n        out[1] = -a[1];\n        out[2] = -a[2];\n        return out;\n    }\n    exports.negate = negate;\n    /**\n     * Returns the inverse of the components of a vec3\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a vector to invert\n     * @returns {vec3} out\n     */\n    function inverse(out, a) {\n        out[0] = 1.0 / a[0];\n        out[1] = 1.0 / a[1];\n        out[2] = 1.0 / a[2];\n        return out;\n    }\n    exports.inverse = inverse;\n    /**\n     * Normalize a vec3\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a vector to normalize\n     * @returns {vec3} out\n     */\n    function normalize(out, a) {\n        var x = a[0];\n        var y = a[1];\n        var z = a[2];\n        var len = x * x + y * y + z * z;\n        if (len > 0) {\n            //TODO: evaluate use of glm_invsqrt here?\n            len = 1 / Math.sqrt(len);\n        }\n        out[0] = a[0] * len;\n        out[1] = a[1] * len;\n        out[2] = a[2] * len;\n        return out;\n    }\n    exports.normalize = normalize;\n    /**\n     * Calculates the dot product of two vec3's\n     *\n     * @param {vec3} a the first operand\n     * @param {vec3} b the second operand\n     * @returns {Number} dot product of a and b\n     */\n    function dot(a, b) {\n        return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n    }\n    exports.dot = dot;\n    /**\n     * Computes the cross product of two vec3's\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a the first operand\n     * @param {vec3} b the second operand\n     * @returns {vec3} out\n     */\n    function cross(out, a, b) {\n        var ax = a[0], ay = a[1], az = a[2];\n        var bx = b[0], by = b[1], bz = b[2];\n        out[0] = ay * bz - az * by;\n        out[1] = az * bx - ax * bz;\n        out[2] = ax * by - ay * bx;\n        return out;\n    }\n    exports.cross = cross;\n    /**\n     * Performs a linear interpolation between two vec3's\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a the first operand\n     * @param {vec3} b the second operand\n     * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n     * @returns {vec3} out\n     */\n    function lerp(out, a, b, t) {\n        var ax = a[0];\n        var ay = a[1];\n        var az = a[2];\n        out[0] = ax + t * (b[0] - ax);\n        out[1] = ay + t * (b[1] - ay);\n        out[2] = az + t * (b[2] - az);\n        return out;\n    }\n    exports.lerp = lerp;\n    /**\n     * Performs a hermite interpolation with two control points\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a the first operand\n     * @param {vec3} b the second operand\n     * @param {vec3} c the third operand\n     * @param {vec3} d the fourth operand\n     * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n     * @returns {vec3} out\n     */\n    function hermite(out, a, b, c, d, t) {\n        var factorTimes2 = t * t;\n        var factor1 = factorTimes2 * (2 * t - 3) + 1;\n        var factor2 = factorTimes2 * (t - 2) + t;\n        var factor3 = factorTimes2 * (t - 1);\n        var factor4 = factorTimes2 * (3 - 2 * t);\n        out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n        out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n        out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n        return out;\n    }\n    exports.hermite = hermite;\n    /**\n     * Performs a bezier interpolation with two control points\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a the first operand\n     * @param {vec3} b the second operand\n     * @param {vec3} c the third operand\n     * @param {vec3} d the fourth operand\n     * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n     * @returns {vec3} out\n     */\n    function bezier(out, a, b, c, d, t) {\n        var inverseFactor = 1 - t;\n        var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n        var factorTimes2 = t * t;\n        var factor1 = inverseFactorTimesTwo * inverseFactor;\n        var factor2 = 3 * t * inverseFactorTimesTwo;\n        var factor3 = 3 * factorTimes2 * inverseFactor;\n        var factor4 = factorTimes2 * t;\n        out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n        out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n        out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n        return out;\n    }\n    exports.bezier = bezier;\n    /**\n     * Generates a random vector with the given scale\n     *\n     * @param {vec3} out the receiving vector\n     * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n     * @returns {vec3} out\n     */\n    function random(out, scale) {\n        scale = scale || 1.0;\n        var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n        var z = glMatrix.RANDOM() * 2.0 - 1.0;\n        var zScale = Math.sqrt(1.0 - z * z) * scale;\n        out[0] = Math.cos(r) * zScale;\n        out[1] = Math.sin(r) * zScale;\n        out[2] = z * scale;\n        return out;\n    }\n    exports.random = random;\n    /**\n     * Transforms the vec3 with a mat4.\n     * 4th vector component is implicitly '1'\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a the vector to transform\n     * @param {mat4} m matrix to transform with\n     * @returns {vec3} out\n     */\n    function transformMat4(out, a, m) {\n        var x = a[0], y = a[1], z = a[2];\n        var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n        w = w || 1.0;\n        out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n        out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n        out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n        return out;\n    }\n    exports.transformMat4 = transformMat4;\n    /**\n     * Transforms the vec3 with a mat3.\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a the vector to transform\n     * @param {mat3} m the 3x3 matrix to transform with\n     * @returns {vec3} out\n     */\n    function transformMat3(out, a, m) {\n        var x = a[0], y = a[1], z = a[2];\n        out[0] = x * m[0] + y * m[3] + z * m[6];\n        out[1] = x * m[1] + y * m[4] + z * m[7];\n        out[2] = x * m[2] + y * m[5] + z * m[8];\n        return out;\n    }\n    exports.transformMat3 = transformMat3;\n    /**\n     * Transforms the vec3 with a quat\n     * Can also be used for dual quaternions. (Multiply it with the real part)\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec3} a the vector to transform\n     * @param {quat} q quaternion to transform with\n     * @returns {vec3} out\n     */\n    function transformQuat(out, a, q) {\n        // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n        var qx = q[0], qy = q[1], qz = q[2], qw = q[3];\n        var x = a[0], y = a[1], z = a[2]; // var qvec = [qx, qy, qz];\n        // var uv = vec3.cross([], qvec, a);\n        var uvx = qy * z - qz * y, uvy = qz * x - qx * z, uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n        var uuvx = qy * uvz - qz * uvy, uuvy = qz * uvx - qx * uvz, uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n        var w2 = qw * 2;\n        uvx *= w2;\n        uvy *= w2;\n        uvz *= w2; // vec3.scale(uuv, uuv, 2);\n        uuvx *= 2;\n        uuvy *= 2;\n        uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n        out[0] = x + uvx + uuvx;\n        out[1] = y + uvy + uuvy;\n        out[2] = z + uvz + uuvz;\n        return out;\n    }\n    exports.transformQuat = transformQuat;\n    /**\n     * Rotate a 3D vector around the x-axis\n     * @param {vec3} out The receiving vec3\n     * @param {vec3} a The vec3 point to rotate\n     * @param {vec3} b The origin of the rotation\n     * @param {Number} rad The angle of rotation in radians\n     * @returns {vec3} out\n     */\n    function rotateX(out, a, b, rad) {\n        var p = [], r = []; //Translate point to the origin\n        p[0] = a[0] - b[0];\n        p[1] = a[1] - b[1];\n        p[2] = a[2] - b[2]; //perform rotation\n        r[0] = p[0];\n        r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n        r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n        out[0] = r[0] + b[0];\n        out[1] = r[1] + b[1];\n        out[2] = r[2] + b[2];\n        return out;\n    }\n    exports.rotateX = rotateX;\n    /**\n     * Rotate a 3D vector around the y-axis\n     * @param {vec3} out The receiving vec3\n     * @param {vec3} a The vec3 point to rotate\n     * @param {vec3} b The origin of the rotation\n     * @param {Number} rad The angle of rotation in radians\n     * @returns {vec3} out\n     */\n    function rotateY(out, a, b, rad) {\n        var p = [], r = []; //Translate point to the origin\n        p[0] = a[0] - b[0];\n        p[1] = a[1] - b[1];\n        p[2] = a[2] - b[2]; //perform rotation\n        r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n        r[1] = p[1];\n        r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n        out[0] = r[0] + b[0];\n        out[1] = r[1] + b[1];\n        out[2] = r[2] + b[2];\n        return out;\n    }\n    exports.rotateY = rotateY;\n    /**\n     * Rotate a 3D vector around the z-axis\n     * @param {vec3} out The receiving vec3\n     * @param {vec3} a The vec3 point to rotate\n     * @param {vec3} b The origin of the rotation\n     * @param {Number} rad The angle of rotation in radians\n     * @returns {vec3} out\n     */\n    function rotateZ(out, a, b, rad) {\n        var p = [], r = []; //Translate point to the origin\n        p[0] = a[0] - b[0];\n        p[1] = a[1] - b[1];\n        p[2] = a[2] - b[2]; //perform rotation\n        r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n        r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n        r[2] = p[2]; //translate to correct position\n        out[0] = r[0] + b[0];\n        out[1] = r[1] + b[1];\n        out[2] = r[2] + b[2];\n        return out;\n    }\n    exports.rotateZ = rotateZ;\n    /**\n     * Get the angle between two 3D vectors\n     * @param {vec3} a The first operand\n     * @param {vec3} b The second operand\n     * @returns {Number} The angle in radians\n     */\n    function angle(a, b) {\n        var ax = a[0], ay = a[1], az = a[2], bx = b[0], by = b[1], bz = b[2], mag1 = Math.sqrt(ax * ax + ay * ay + az * az), mag2 = Math.sqrt(bx * bx + by * by + bz * bz), mag = mag1 * mag2, cosine = mag && dot(a, b) / mag;\n        return Math.acos(Math.min(Math.max(cosine, -1), 1));\n    }\n    exports.angle = angle;\n    /**\n     * Set the components of a vec3 to zero\n     *\n     * @param {vec3} out the receiving vector\n     * @returns {vec3} out\n     */\n    function zero(out) {\n        out[0] = 0.0;\n        out[1] = 0.0;\n        out[2] = 0.0;\n        return out;\n    }\n    exports.zero = zero;\n    /**\n     * Returns a string representation of a vector\n     *\n     * @param {vec3} a vector to represent as a string\n     * @returns {String} string representation of the vector\n     */\n    function str(a) {\n        return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n    }\n    exports.str = str;\n    /**\n     * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n     *\n     * @param {vec3} a The first vector.\n     * @param {vec3} b The second vector.\n     * @returns {Boolean} True if the vectors are equal, false otherwise.\n     */\n    function exactEquals(a, b) {\n        return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n    }\n    exports.exactEquals = exactEquals;\n    /**\n     * Returns whether or not the vectors have approximately the same elements in the same position.\n     *\n     * @param {vec3} a The first vector.\n     * @param {vec3} b The second vector.\n     * @returns {Boolean} True if the vectors are equal, false otherwise.\n     */\n    function equals(a, b) {\n        var a0 = a[0], a1 = a[1], a2 = a[2];\n        var b0 = b[0], b1 = b[1], b2 = b[2];\n        return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n    }\n    exports.equals = equals;\n    /**\n     * Alias for {@link vec3.subtract}\n     * @function\n     */\n    exports.sub = subtract;\n    /**\n     * Alias for {@link vec3.multiply}\n     * @function\n     */\n    exports.mul = multiply;\n    /**\n     * Alias for {@link vec3.divide}\n     * @function\n     */\n    exports.div = divide;\n    /**\n     * Alias for {@link vec3.distance}\n     * @function\n     */\n    exports.dist = distance;\n    /**\n     * Alias for {@link vec3.squaredDistance}\n     * @function\n     */\n    exports.sqrDist = squaredDistance;\n    /**\n     * Alias for {@link vec3.length}\n     * @function\n     */\n    exports.len = length;\n    /**\n     * Alias for {@link vec3.squaredLength}\n     * @function\n     */\n    exports.sqrLen = squaredLength;\n    /**\n     * Perform some operation over an array of vec3s.\n     *\n     * @param {Array} a the array of vectors to iterate over\n     * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n     * @param {Number} offset Number of elements to skip at the beginning of the array\n     * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n     * @param {Function} fn Function to call for each vector in the array\n     * @param {Object} [arg] additional argument to pass to fn\n     * @returns {Array} a\n     * @function\n     */\n    exports.forEach = function () {\n        var vec = create();\n        return function (a, stride, offset, count, fn, arg) {\n            var i, l;\n            if (!stride) {\n                stride = 3;\n            }\n            if (!offset) {\n                offset = 0;\n            }\n            if (count) {\n                l = Math.min(count * stride + offset, a.length);\n            }\n            else {\n                l = a.length;\n            }\n            for (i = offset; i < l; i += stride) {\n                vec[0] = a[i];\n                vec[1] = a[i + 1];\n                vec[2] = a[i + 2];\n                fn(vec, vec, arg);\n                a[i] = vec[0];\n                a[i + 1] = vec[1];\n                a[i + 2] = vec[2];\n            }\n            return a;\n        };\n    }();\n}\n","min_source":"function _(t,n,r,a,u){a();const e=t(\"tslib\").__importStar(t(\"68ca94c15c\"));function o(){var t=new e.ARRAY_TYPE(3);return e.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function i(t){var n=t[0],r=t[1],a=t[2];return Math.hypot(n,r,a)}function c(t,n,r){return t[0]=n[0]-r[0],t[1]=n[1]-r[1],t[2]=n[2]-r[2],t}function h(t,n,r){return t[0]=n[0]*r[0],t[1]=n[1]*r[1],t[2]=n[2]*r[2],t}function M(t,n,r){return t[0]=n[0]/r[0],t[1]=n[1]/r[1],t[2]=n[2]/r[2],t}function s(t,n){var r=n[0]-t[0],a=n[1]-t[1],u=n[2]-t[2];return Math.hypot(r,a,u)}function f(t,n){var r=n[0]-t[0],a=n[1]-t[1],u=n[2]-t[2];return r*r+a*a+u*u}function v(t){var n=t[0],r=t[1],a=t[2];return n*n+r*r+a*a}function l(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}var m;r.create=o,r.clone=function(t){var n=new e.ARRAY_TYPE(3);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n},r.length=i,r.fromValues=function(t,n,r){var a=new e.ARRAY_TYPE(3);return a[0]=t,a[1]=n,a[2]=r,a},r.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t},r.set=function(t,n,r,a){return t[0]=n,t[1]=r,t[2]=a,t},r.add=function(t,n,r){return t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t},r.subtract=c,r.multiply=h,r.divide=M,r.ceil=function(t,n){return t[0]=Math.ceil(n[0]),t[1]=Math.ceil(n[1]),t[2]=Math.ceil(n[2]),t},r.floor=function(t,n){return t[0]=Math.floor(n[0]),t[1]=Math.floor(n[1]),t[2]=Math.floor(n[2]),t},r.min=function(t,n,r){return t[0]=Math.min(n[0],r[0]),t[1]=Math.min(n[1],r[1]),t[2]=Math.min(n[2],r[2]),t},r.max=function(t,n,r){return t[0]=Math.max(n[0],r[0]),t[1]=Math.max(n[1],r[1]),t[2]=Math.max(n[2],r[2]),t},r.round=function(t,n){return t[0]=Math.round(n[0]),t[1]=Math.round(n[1]),t[2]=Math.round(n[2]),t},r.scale=function(t,n,r){return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t},r.scaleAndAdd=function(t,n,r,a){return t[0]=n[0]+r[0]*a,t[1]=n[1]+r[1]*a,t[2]=n[2]+r[2]*a,t},r.distance=s,r.squaredDistance=f,r.squaredLength=v,r.negate=function(t,n){return t[0]=-n[0],t[1]=-n[1],t[2]=-n[2],t},r.inverse=function(t,n){return t[0]=1/n[0],t[1]=1/n[1],t[2]=1/n[2],t},r.normalize=function(t,n){var r=n[0],a=n[1],u=n[2],e=r*r+a*a+u*u;return e>0&&(e=1/Math.sqrt(e)),t[0]=n[0]*e,t[1]=n[1]*e,t[2]=n[2]*e,t},r.dot=l,r.cross=function(t,n,r){var a=n[0],u=n[1],e=n[2],o=r[0],i=r[1],c=r[2];return t[0]=u*c-e*i,t[1]=e*o-a*c,t[2]=a*i-u*o,t},r.lerp=function(t,n,r,a){var u=n[0],e=n[1],o=n[2];return t[0]=u+a*(r[0]-u),t[1]=e+a*(r[1]-e),t[2]=o+a*(r[2]-o),t},r.hermite=function(t,n,r,a,u,e){var o=e*e,i=o*(2*e-3)+1,c=o*(e-2)+e,h=o*(e-1),M=o*(3-2*e);return t[0]=n[0]*i+r[0]*c+a[0]*h+u[0]*M,t[1]=n[1]*i+r[1]*c+a[1]*h+u[1]*M,t[2]=n[2]*i+r[2]*c+a[2]*h+u[2]*M,t},r.bezier=function(t,n,r,a,u,e){var o=1-e,i=o*o,c=e*e,h=i*o,M=3*e*i,s=3*c*o,f=c*e;return t[0]=n[0]*h+r[0]*M+a[0]*s+u[0]*f,t[1]=n[1]*h+r[1]*M+a[1]*s+u[1]*f,t[2]=n[2]*h+r[2]*M+a[2]*s+u[2]*f,t},r.random=function(t,n){n=n||1;var r=2*e.RANDOM()*Math.PI,a=2*e.RANDOM()-1,u=Math.sqrt(1-a*a)*n;return t[0]=Math.cos(r)*u,t[1]=Math.sin(r)*u,t[2]=a*n,t},r.transformMat4=function(t,n,r){var a=n[0],u=n[1],e=n[2],o=r[3]*a+r[7]*u+r[11]*e+r[15];return o=o||1,t[0]=(r[0]*a+r[4]*u+r[8]*e+r[12])/o,t[1]=(r[1]*a+r[5]*u+r[9]*e+r[13])/o,t[2]=(r[2]*a+r[6]*u+r[10]*e+r[14])/o,t},r.transformMat3=function(t,n,r){var a=n[0],u=n[1],e=n[2];return t[0]=a*r[0]+u*r[3]+e*r[6],t[1]=a*r[1]+u*r[4]+e*r[7],t[2]=a*r[2]+u*r[5]+e*r[8],t},r.transformQuat=function(t,n,r){var a=r[0],u=r[1],e=r[2],o=r[3],i=n[0],c=n[1],h=n[2],M=u*h-e*c,s=e*i-a*h,f=a*c-u*i,v=u*f-e*s,l=e*M-a*f,m=a*s-u*M,d=2*o;return M*=d,s*=d,f*=d,v*=2,l*=2,m*=2,t[0]=i+M+v,t[1]=c+s+l,t[2]=h+f+m,t},r.rotateX=function(t,n,r,a){var u=[],e=[];return u[0]=n[0]-r[0],u[1]=n[1]-r[1],u[2]=n[2]-r[2],e[0]=u[0],e[1]=u[1]*Math.cos(a)-u[2]*Math.sin(a),e[2]=u[1]*Math.sin(a)+u[2]*Math.cos(a),t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t},r.rotateY=function(t,n,r,a){var u=[],e=[];return u[0]=n[0]-r[0],u[1]=n[1]-r[1],u[2]=n[2]-r[2],e[0]=u[2]*Math.sin(a)+u[0]*Math.cos(a),e[1]=u[1],e[2]=u[2]*Math.cos(a)-u[0]*Math.sin(a),t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t},r.rotateZ=function(t,n,r,a){var u=[],e=[];return u[0]=n[0]-r[0],u[1]=n[1]-r[1],u[2]=n[2]-r[2],e[0]=u[0]*Math.cos(a)-u[1]*Math.sin(a),e[1]=u[0]*Math.sin(a)+u[1]*Math.cos(a),e[2]=u[2],t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t},r.angle=function(t,n){var r=t[0],a=t[1],u=t[2],e=n[0],o=n[1],i=n[2],c=Math.sqrt(r*r+a*a+u*u)*Math.sqrt(e*e+o*o+i*i),h=c&&l(t,n)/c;return Math.acos(Math.min(Math.max(h,-1),1))},r.zero=function(t){return t[0]=0,t[1]=0,t[2]=0,t},r.str=function(t){return\"vec3(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\")\"},r.exactEquals=function(t,n){return t[0]===n[0]&&t[1]===n[1]&&t[2]===n[2]},r.equals=function(t,n){var r=t[0],a=t[1],u=t[2],o=n[0],i=n[1],c=n[2];return Math.abs(r-o)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(a-i)<=e.EPSILON*Math.max(1,Math.abs(a),Math.abs(i))&&Math.abs(u-c)<=e.EPSILON*Math.max(1,Math.abs(u),Math.abs(c))},r.sub=c,r.mul=h,r.div=M,r.dist=s,r.sqrDist=f,r.len=i,r.sqrLen=v,r.forEach=(m=o(),function(t,n,r,a,u,e){var o,i;for(n||(n=3),r||(r=0),i=a?Math.min(a*n+r,t.length):t.length,o=r;o<i;o+=n)m[0]=t[o],m[1]=t[o+1],m[2]=t[o+2],u(m,m,e),t[o]=m[0],t[o+1]=m[1],t[o+2]=m[2];return t})}\n//# sourceMappingURL=vec3.min.js.map","min_map":"{\"version\":3,\"file\":\"vec3.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"glMatrix\",\"__importStar\",\"create\",\"out\",\"ARRAY_TYPE\",\"Float32Array\",\"length\",\"a\",\"x\",\"y\",\"z\",\"Math\",\"hypot\",\"subtract\",\"b\",\"multiply\",\"divide\",\"distance\",\"squaredDistance\",\"squaredLength\",\"dot\",\"vec\",\"clone\",\"fromValues\",\"copy\",\"set\",\"add\",\"ceil\",\"floor\",\"min\",\"max\",\"round\",\"scale\",\"scaleAndAdd\",\"negate\",\"inverse\",\"normalize\",\"len\",\"sqrt\",\"cross\",\"ax\",\"ay\",\"az\",\"bx\",\"by\",\"bz\",\"lerp\",\"t\",\"hermite\",\"c\",\"d\",\"factorTimes2\",\"factor1\",\"factor2\",\"factor3\",\"factor4\",\"bezier\",\"inverseFactor\",\"inverseFactorTimesTwo\",\"random\",\"r\",\"RANDOM\",\"PI\",\"zScale\",\"cos\",\"sin\",\"transformMat4\",\"m\",\"w\",\"transformMat3\",\"transformQuat\",\"q\",\"qx\",\"qy\",\"qz\",\"qw\",\"uvx\",\"uvy\",\"uvz\",\"uuvx\",\"uuvy\",\"uuvz\",\"w2\",\"rotateX\",\"rad\",\"p\",\"rotateY\",\"rotateZ\",\"angle\",\"mag\",\"cosine\",\"acos\",\"zero\",\"str\",\"exactEquals\",\"equals\",\"a0\",\"a1\",\"a2\",\"b0\",\"b1\",\"b2\",\"abs\",\"EPSILON\",\"sub\",\"mul\",\"div\",\"dist\",\"sqrDist\",\"sqrLen\",\"forEach\",\"stride\",\"offset\",\"count\",\"fn\",\"arg\",\"i\",\"l\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/vec4.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"gl-matrix/esm/vec4.js","resolution":"ESM","id":"c1aa33d719","hash":"c1aa33d7195e9ae36c82bc5b9eaf0206b2dd4fba934ef572eba5333fae7cb4bf","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.forEach = exports.sqrLen = exports.len = exports.sqrDist = exports.dist = exports.div = exports.mul = exports.sub = exports.equals = exports.exactEquals = exports.str = exports.zero = exports.transformQuat = exports.transformMat4 = exports.random = exports.lerp = exports.cross = exports.dot = exports.normalize = exports.inverse = exports.negate = exports.squaredLength = exports.length = exports.squaredDistance = exports.distance = exports.scaleAndAdd = exports.scale = exports.round = exports.max = exports.min = exports.floor = exports.ceil = exports.divide = exports.multiply = exports.subtract = exports.add = exports.set = exports.copy = exports.fromValues = exports.clone = exports.create = void 0;\nconst tslib_1 = require(\"tslib\");\nconst glMatrix = tslib_1.__importStar(require(\"./common.js\"));\n/**\n * 4 Dimensional Vector\n * @module vec4\n */\n/**\n * Creates a new, empty vec4\n *\n * @returns {vec4} a new 4D vector\n */\nfunction create() {\n    var out = new glMatrix.ARRAY_TYPE(4);\n    if (glMatrix.ARRAY_TYPE != Float32Array) {\n        out[0] = 0;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 0;\n    }\n    return out;\n}\nexports.create = create;\n/**\n * Creates a new vec4 initialized with values from an existing vector\n *\n * @param {vec4} a vector to clone\n * @returns {vec4} a new 4D vector\n */\nfunction clone(a) {\n    var out = new glMatrix.ARRAY_TYPE(4);\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    return out;\n}\nexports.clone = clone;\n/**\n * Creates a new vec4 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} a new 4D vector\n */\nfunction fromValues(x, y, z, w) {\n    var out = new glMatrix.ARRAY_TYPE(4);\n    out[0] = x;\n    out[1] = y;\n    out[2] = z;\n    out[3] = w;\n    return out;\n}\nexports.fromValues = fromValues;\n/**\n * Copy the values from one vec4 to another\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the source vector\n * @returns {vec4} out\n */\nfunction copy(out, a) {\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    return out;\n}\nexports.copy = copy;\n/**\n * Set the components of a vec4 to the given values\n *\n * @param {vec4} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @param {Number} w W component\n * @returns {vec4} out\n */\nfunction set(out, x, y, z, w) {\n    out[0] = x;\n    out[1] = y;\n    out[2] = z;\n    out[3] = w;\n    return out;\n}\nexports.set = set;\n/**\n * Adds two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */\nfunction add(out, a, b) {\n    out[0] = a[0] + b[0];\n    out[1] = a[1] + b[1];\n    out[2] = a[2] + b[2];\n    out[3] = a[3] + b[3];\n    return out;\n}\nexports.add = add;\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */\nfunction subtract(out, a, b) {\n    out[0] = a[0] - b[0];\n    out[1] = a[1] - b[1];\n    out[2] = a[2] - b[2];\n    out[3] = a[3] - b[3];\n    return out;\n}\nexports.subtract = subtract;\n/**\n * Multiplies two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */\nfunction multiply(out, a, b) {\n    out[0] = a[0] * b[0];\n    out[1] = a[1] * b[1];\n    out[2] = a[2] * b[2];\n    out[3] = a[3] * b[3];\n    return out;\n}\nexports.multiply = multiply;\n/**\n * Divides two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */\nfunction divide(out, a, b) {\n    out[0] = a[0] / b[0];\n    out[1] = a[1] / b[1];\n    out[2] = a[2] / b[2];\n    out[3] = a[3] / b[3];\n    return out;\n}\nexports.divide = divide;\n/**\n * Math.ceil the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a vector to ceil\n * @returns {vec4} out\n */\nfunction ceil(out, a) {\n    out[0] = Math.ceil(a[0]);\n    out[1] = Math.ceil(a[1]);\n    out[2] = Math.ceil(a[2]);\n    out[3] = Math.ceil(a[3]);\n    return out;\n}\nexports.ceil = ceil;\n/**\n * Math.floor the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a vector to floor\n * @returns {vec4} out\n */\nfunction floor(out, a) {\n    out[0] = Math.floor(a[0]);\n    out[1] = Math.floor(a[1]);\n    out[2] = Math.floor(a[2]);\n    out[3] = Math.floor(a[3]);\n    return out;\n}\nexports.floor = floor;\n/**\n * Returns the minimum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */\nfunction min(out, a, b) {\n    out[0] = Math.min(a[0], b[0]);\n    out[1] = Math.min(a[1], b[1]);\n    out[2] = Math.min(a[2], b[2]);\n    out[3] = Math.min(a[3], b[3]);\n    return out;\n}\nexports.min = min;\n/**\n * Returns the maximum of two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {vec4} out\n */\nfunction max(out, a, b) {\n    out[0] = Math.max(a[0], b[0]);\n    out[1] = Math.max(a[1], b[1]);\n    out[2] = Math.max(a[2], b[2]);\n    out[3] = Math.max(a[3], b[3]);\n    return out;\n}\nexports.max = max;\n/**\n * Math.round the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a vector to round\n * @returns {vec4} out\n */\nfunction round(out, a) {\n    out[0] = Math.round(a[0]);\n    out[1] = Math.round(a[1]);\n    out[2] = Math.round(a[2]);\n    out[3] = Math.round(a[3]);\n    return out;\n}\nexports.round = round;\n/**\n * Scales a vec4 by a scalar number\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec4} out\n */\nfunction scale(out, a, b) {\n    out[0] = a[0] * b;\n    out[1] = a[1] * b;\n    out[2] = a[2] * b;\n    out[3] = a[3] * b;\n    return out;\n}\nexports.scale = scale;\n/**\n * Adds two vec4's after scaling the second operand by a scalar value\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec4} out\n */\nfunction scaleAndAdd(out, a, b, scale) {\n    out[0] = a[0] + b[0] * scale;\n    out[1] = a[1] + b[1] * scale;\n    out[2] = a[2] + b[2] * scale;\n    out[3] = a[3] + b[3] * scale;\n    return out;\n}\nexports.scaleAndAdd = scaleAndAdd;\n/**\n * Calculates the euclidian distance between two vec4's\n *\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {Number} distance between a and b\n */\nfunction distance(a, b) {\n    var x = b[0] - a[0];\n    var y = b[1] - a[1];\n    var z = b[2] - a[2];\n    var w = b[3] - a[3];\n    return Math.hypot(x, y, z, w);\n}\nexports.distance = distance;\n/**\n * Calculates the squared euclidian distance between two vec4's\n *\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {Number} squared distance between a and b\n */\nfunction squaredDistance(a, b) {\n    var x = b[0] - a[0];\n    var y = b[1] - a[1];\n    var z = b[2] - a[2];\n    var w = b[3] - a[3];\n    return x * x + y * y + z * z + w * w;\n}\nexports.squaredDistance = squaredDistance;\n/**\n * Calculates the length of a vec4\n *\n * @param {vec4} a vector to calculate length of\n * @returns {Number} length of a\n */\nfunction length(a) {\n    var x = a[0];\n    var y = a[1];\n    var z = a[2];\n    var w = a[3];\n    return Math.hypot(x, y, z, w);\n}\nexports.length = length;\n/**\n * Calculates the squared length of a vec4\n *\n * @param {vec4} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\nfunction squaredLength(a) {\n    var x = a[0];\n    var y = a[1];\n    var z = a[2];\n    var w = a[3];\n    return x * x + y * y + z * z + w * w;\n}\nexports.squaredLength = squaredLength;\n/**\n * Negates the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a vector to negate\n * @returns {vec4} out\n */\nfunction negate(out, a) {\n    out[0] = -a[0];\n    out[1] = -a[1];\n    out[2] = -a[2];\n    out[3] = -a[3];\n    return out;\n}\nexports.negate = negate;\n/**\n * Returns the inverse of the components of a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a vector to invert\n * @returns {vec4} out\n */\nfunction inverse(out, a) {\n    out[0] = 1.0 / a[0];\n    out[1] = 1.0 / a[1];\n    out[2] = 1.0 / a[2];\n    out[3] = 1.0 / a[3];\n    return out;\n}\nexports.inverse = inverse;\n/**\n * Normalize a vec4\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a vector to normalize\n * @returns {vec4} out\n */\nfunction normalize(out, a) {\n    var x = a[0];\n    var y = a[1];\n    var z = a[2];\n    var w = a[3];\n    var len = x * x + y * y + z * z + w * w;\n    if (len > 0) {\n        len = 1 / Math.sqrt(len);\n    }\n    out[0] = x * len;\n    out[1] = y * len;\n    out[2] = z * len;\n    out[3] = w * len;\n    return out;\n}\nexports.normalize = normalize;\n/**\n * Calculates the dot product of two vec4's\n *\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @returns {Number} dot product of a and b\n */\nfunction dot(a, b) {\n    return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n}\nexports.dot = dot;\n/**\n * Returns the cross-product of three vectors in a 4-dimensional space\n *\n * @param {vec4} result the receiving vector\n * @param {vec4} U the first vector\n * @param {vec4} V the second vector\n * @param {vec4} W the third vector\n * @returns {vec4} result\n */\nfunction cross(out, u, v, w) {\n    var A = v[0] * w[1] - v[1] * w[0], B = v[0] * w[2] - v[2] * w[0], C = v[0] * w[3] - v[3] * w[0], D = v[1] * w[2] - v[2] * w[1], E = v[1] * w[3] - v[3] * w[1], F = v[2] * w[3] - v[3] * w[2];\n    var G = u[0];\n    var H = u[1];\n    var I = u[2];\n    var J = u[3];\n    out[0] = H * F - I * E + J * D;\n    out[1] = -(G * F) + I * C - J * B;\n    out[2] = G * E - H * C + J * A;\n    out[3] = -(G * D) + H * B - I * A;\n    return out;\n}\nexports.cross = cross;\n/**\n * Performs a linear interpolation between two vec4's\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the first operand\n * @param {vec4} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec4} out\n */\nfunction lerp(out, a, b, t) {\n    var ax = a[0];\n    var ay = a[1];\n    var az = a[2];\n    var aw = a[3];\n    out[0] = ax + t * (b[0] - ax);\n    out[1] = ay + t * (b[1] - ay);\n    out[2] = az + t * (b[2] - az);\n    out[3] = aw + t * (b[3] - aw);\n    return out;\n}\nexports.lerp = lerp;\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec4} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec4} out\n */\nfunction random(out, scale) {\n    scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n    // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n    // http://projecteuclid.org/euclid.aoms/1177692644;\n    var v1, v2, v3, v4;\n    var s1, s2;\n    do {\n        v1 = glMatrix.RANDOM() * 2 - 1;\n        v2 = glMatrix.RANDOM() * 2 - 1;\n        s1 = v1 * v1 + v2 * v2;\n    } while (s1 >= 1);\n    do {\n        v3 = glMatrix.RANDOM() * 2 - 1;\n        v4 = glMatrix.RANDOM() * 2 - 1;\n        s2 = v3 * v3 + v4 * v4;\n    } while (s2 >= 1);\n    var d = Math.sqrt((1 - s1) / s2);\n    out[0] = scale * v1;\n    out[1] = scale * v2;\n    out[2] = scale * v3 * d;\n    out[3] = scale * v4 * d;\n    return out;\n}\nexports.random = random;\n/**\n * Transforms the vec4 with a mat4.\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the vector to transform\n * @param {mat4} m matrix to transform with\n * @returns {vec4} out\n */\nfunction transformMat4(out, a, m) {\n    var x = a[0], y = a[1], z = a[2], w = a[3];\n    out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n    out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n    out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n    out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n    return out;\n}\nexports.transformMat4 = transformMat4;\n/**\n * Transforms the vec4 with a quat\n *\n * @param {vec4} out the receiving vector\n * @param {vec4} a the vector to transform\n * @param {quat} q quaternion to transform with\n * @returns {vec4} out\n */\nfunction transformQuat(out, a, q) {\n    var x = a[0], y = a[1], z = a[2];\n    var qx = q[0], qy = q[1], qz = q[2], qw = q[3]; // calculate quat * vec\n    var ix = qw * x + qy * z - qz * y;\n    var iy = qw * y + qz * x - qx * z;\n    var iz = qw * z + qx * y - qy * x;\n    var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n    out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n    out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n    out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n    out[3] = a[3];\n    return out;\n}\nexports.transformQuat = transformQuat;\n/**\n * Set the components of a vec4 to zero\n *\n * @param {vec4} out the receiving vector\n * @returns {vec4} out\n */\nfunction zero(out) {\n    out[0] = 0.0;\n    out[1] = 0.0;\n    out[2] = 0.0;\n    out[3] = 0.0;\n    return out;\n}\nexports.zero = zero;\n/**\n * Returns a string representation of a vector\n *\n * @param {vec4} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\nfunction str(a) {\n    return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n}\nexports.str = str;\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {vec4} a The first vector.\n * @param {vec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nfunction exactEquals(a, b) {\n    return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n}\nexports.exactEquals = exactEquals;\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {vec4} a The first vector.\n * @param {vec4} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nfunction equals(a, b) {\n    var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n    var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n    return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n}\nexports.equals = equals;\n/**\n * Alias for {@link vec4.subtract}\n * @function\n */\nexports.sub = subtract;\n/**\n * Alias for {@link vec4.multiply}\n * @function\n */\nexports.mul = multiply;\n/**\n * Alias for {@link vec4.divide}\n * @function\n */\nexports.div = divide;\n/**\n * Alias for {@link vec4.distance}\n * @function\n */\nexports.dist = distance;\n/**\n * Alias for {@link vec4.squaredDistance}\n * @function\n */\nexports.sqrDist = squaredDistance;\n/**\n * Alias for {@link vec4.length}\n * @function\n */\nexports.len = length;\n/**\n * Alias for {@link vec4.squaredLength}\n * @function\n */\nexports.sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec4s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\nexports.forEach = function () {\n    var vec = create();\n    return function (a, stride, offset, count, fn, arg) {\n        var i, l;\n        if (!stride) {\n            stride = 4;\n        }\n        if (!offset) {\n            offset = 0;\n        }\n        if (count) {\n            l = Math.min(count * stride + offset, a.length);\n        }\n        else {\n            l = a.length;\n        }\n        for (i = offset; i < l; i += stride) {\n            vec[0] = a[i];\n            vec[1] = a[i + 1];\n            vec[2] = a[i + 2];\n            vec[3] = a[i + 3];\n            fn(vec, vec, arg);\n            a[i] = vec[0];\n            a[i + 1] = vec[1];\n            a[i + 2] = vec[2];\n            a[i + 3] = vec[3];\n        }\n        return a;\n    };\n}();\n","type":"js","dependency_paths":[["./common.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/common.js"]],"dependency_map":[],"exported":[{"type":"named","name":"create"},{"type":"named","name":"clone"},{"type":"named","name":"fromValues"},{"type":"named","name":"copy"},{"type":"named","name":"set"},{"type":"named","name":"add"},{"type":"named","name":"subtract"},{"type":"named","name":"multiply"},{"type":"named","name":"divide"},{"type":"named","name":"ceil"},{"type":"named","name":"floor"},{"type":"named","name":"min"},{"type":"named","name":"max"},{"type":"named","name":"round"},{"type":"named","name":"scale"},{"type":"named","name":"scaleAndAdd"},{"type":"named","name":"distance"},{"type":"named","name":"squaredDistance"},{"type":"named","name":"length"},{"type":"named","name":"squaredLength"},{"type":"named","name":"negate"},{"type":"named","name":"inverse"},{"type":"named","name":"normalize"},{"type":"named","name":"dot"},{"type":"named","name":"cross"},{"type":"named","name":"lerp"},{"type":"named","name":"random"},{"type":"named","name":"transformMat4"},{"type":"named","name":"transformQuat"},{"type":"named","name":"zero"},{"type":"named","name":"str"},{"type":"named","name":"exactEquals"},{"type":"named","name":"equals"}],"externals":[],"shims":[]},"code":{"source":"/* gl-matrix/esm/vec4.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    const glMatrix = tslib_1.__importStar(require(\"68ca94c15c\") /* ./common.js */);\n    /**\n     * 4 Dimensional Vector\n     * @module vec4\n     */\n    /**\n     * Creates a new, empty vec4\n     *\n     * @returns {vec4} a new 4D vector\n     */\n    function create() {\n        var out = new glMatrix.ARRAY_TYPE(4);\n        if (glMatrix.ARRAY_TYPE != Float32Array) {\n            out[0] = 0;\n            out[1] = 0;\n            out[2] = 0;\n            out[3] = 0;\n        }\n        return out;\n    }\n    exports.create = create;\n    /**\n     * Creates a new vec4 initialized with values from an existing vector\n     *\n     * @param {vec4} a vector to clone\n     * @returns {vec4} a new 4D vector\n     */\n    function clone(a) {\n        var out = new glMatrix.ARRAY_TYPE(4);\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = a[2];\n        out[3] = a[3];\n        return out;\n    }\n    exports.clone = clone;\n    /**\n     * Creates a new vec4 initialized with the given values\n     *\n     * @param {Number} x X component\n     * @param {Number} y Y component\n     * @param {Number} z Z component\n     * @param {Number} w W component\n     * @returns {vec4} a new 4D vector\n     */\n    function fromValues(x, y, z, w) {\n        var out = new glMatrix.ARRAY_TYPE(4);\n        out[0] = x;\n        out[1] = y;\n        out[2] = z;\n        out[3] = w;\n        return out;\n    }\n    exports.fromValues = fromValues;\n    /**\n     * Copy the values from one vec4 to another\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a the source vector\n     * @returns {vec4} out\n     */\n    function copy(out, a) {\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = a[2];\n        out[3] = a[3];\n        return out;\n    }\n    exports.copy = copy;\n    /**\n     * Set the components of a vec4 to the given values\n     *\n     * @param {vec4} out the receiving vector\n     * @param {Number} x X component\n     * @param {Number} y Y component\n     * @param {Number} z Z component\n     * @param {Number} w W component\n     * @returns {vec4} out\n     */\n    function set(out, x, y, z, w) {\n        out[0] = x;\n        out[1] = y;\n        out[2] = z;\n        out[3] = w;\n        return out;\n    }\n    exports.set = set;\n    /**\n     * Adds two vec4's\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a the first operand\n     * @param {vec4} b the second operand\n     * @returns {vec4} out\n     */\n    function add(out, a, b) {\n        out[0] = a[0] + b[0];\n        out[1] = a[1] + b[1];\n        out[2] = a[2] + b[2];\n        out[3] = a[3] + b[3];\n        return out;\n    }\n    exports.add = add;\n    /**\n     * Subtracts vector b from vector a\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a the first operand\n     * @param {vec4} b the second operand\n     * @returns {vec4} out\n     */\n    function subtract(out, a, b) {\n        out[0] = a[0] - b[0];\n        out[1] = a[1] - b[1];\n        out[2] = a[2] - b[2];\n        out[3] = a[3] - b[3];\n        return out;\n    }\n    exports.subtract = subtract;\n    /**\n     * Multiplies two vec4's\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a the first operand\n     * @param {vec4} b the second operand\n     * @returns {vec4} out\n     */\n    function multiply(out, a, b) {\n        out[0] = a[0] * b[0];\n        out[1] = a[1] * b[1];\n        out[2] = a[2] * b[2];\n        out[3] = a[3] * b[3];\n        return out;\n    }\n    exports.multiply = multiply;\n    /**\n     * Divides two vec4's\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a the first operand\n     * @param {vec4} b the second operand\n     * @returns {vec4} out\n     */\n    function divide(out, a, b) {\n        out[0] = a[0] / b[0];\n        out[1] = a[1] / b[1];\n        out[2] = a[2] / b[2];\n        out[3] = a[3] / b[3];\n        return out;\n    }\n    exports.divide = divide;\n    /**\n     * Math.ceil the components of a vec4\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a vector to ceil\n     * @returns {vec4} out\n     */\n    function ceil(out, a) {\n        out[0] = Math.ceil(a[0]);\n        out[1] = Math.ceil(a[1]);\n        out[2] = Math.ceil(a[2]);\n        out[3] = Math.ceil(a[3]);\n        return out;\n    }\n    exports.ceil = ceil;\n    /**\n     * Math.floor the components of a vec4\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a vector to floor\n     * @returns {vec4} out\n     */\n    function floor(out, a) {\n        out[0] = Math.floor(a[0]);\n        out[1] = Math.floor(a[1]);\n        out[2] = Math.floor(a[2]);\n        out[3] = Math.floor(a[3]);\n        return out;\n    }\n    exports.floor = floor;\n    /**\n     * Returns the minimum of two vec4's\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a the first operand\n     * @param {vec4} b the second operand\n     * @returns {vec4} out\n     */\n    function min(out, a, b) {\n        out[0] = Math.min(a[0], b[0]);\n        out[1] = Math.min(a[1], b[1]);\n        out[2] = Math.min(a[2], b[2]);\n        out[3] = Math.min(a[3], b[3]);\n        return out;\n    }\n    exports.min = min;\n    /**\n     * Returns the maximum of two vec4's\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a the first operand\n     * @param {vec4} b the second operand\n     * @returns {vec4} out\n     */\n    function max(out, a, b) {\n        out[0] = Math.max(a[0], b[0]);\n        out[1] = Math.max(a[1], b[1]);\n        out[2] = Math.max(a[2], b[2]);\n        out[3] = Math.max(a[3], b[3]);\n        return out;\n    }\n    exports.max = max;\n    /**\n     * Math.round the components of a vec4\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a vector to round\n     * @returns {vec4} out\n     */\n    function round(out, a) {\n        out[0] = Math.round(a[0]);\n        out[1] = Math.round(a[1]);\n        out[2] = Math.round(a[2]);\n        out[3] = Math.round(a[3]);\n        return out;\n    }\n    exports.round = round;\n    /**\n     * Scales a vec4 by a scalar number\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a the vector to scale\n     * @param {Number} b amount to scale the vector by\n     * @returns {vec4} out\n     */\n    function scale(out, a, b) {\n        out[0] = a[0] * b;\n        out[1] = a[1] * b;\n        out[2] = a[2] * b;\n        out[3] = a[3] * b;\n        return out;\n    }\n    exports.scale = scale;\n    /**\n     * Adds two vec4's after scaling the second operand by a scalar value\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a the first operand\n     * @param {vec4} b the second operand\n     * @param {Number} scale the amount to scale b by before adding\n     * @returns {vec4} out\n     */\n    function scaleAndAdd(out, a, b, scale) {\n        out[0] = a[0] + b[0] * scale;\n        out[1] = a[1] + b[1] * scale;\n        out[2] = a[2] + b[2] * scale;\n        out[3] = a[3] + b[3] * scale;\n        return out;\n    }\n    exports.scaleAndAdd = scaleAndAdd;\n    /**\n     * Calculates the euclidian distance between two vec4's\n     *\n     * @param {vec4} a the first operand\n     * @param {vec4} b the second operand\n     * @returns {Number} distance between a and b\n     */\n    function distance(a, b) {\n        var x = b[0] - a[0];\n        var y = b[1] - a[1];\n        var z = b[2] - a[2];\n        var w = b[3] - a[3];\n        return Math.hypot(x, y, z, w);\n    }\n    exports.distance = distance;\n    /**\n     * Calculates the squared euclidian distance between two vec4's\n     *\n     * @param {vec4} a the first operand\n     * @param {vec4} b the second operand\n     * @returns {Number} squared distance between a and b\n     */\n    function squaredDistance(a, b) {\n        var x = b[0] - a[0];\n        var y = b[1] - a[1];\n        var z = b[2] - a[2];\n        var w = b[3] - a[3];\n        return x * x + y * y + z * z + w * w;\n    }\n    exports.squaredDistance = squaredDistance;\n    /**\n     * Calculates the length of a vec4\n     *\n     * @param {vec4} a vector to calculate length of\n     * @returns {Number} length of a\n     */\n    function length(a) {\n        var x = a[0];\n        var y = a[1];\n        var z = a[2];\n        var w = a[3];\n        return Math.hypot(x, y, z, w);\n    }\n    exports.length = length;\n    /**\n     * Calculates the squared length of a vec4\n     *\n     * @param {vec4} a vector to calculate squared length of\n     * @returns {Number} squared length of a\n     */\n    function squaredLength(a) {\n        var x = a[0];\n        var y = a[1];\n        var z = a[2];\n        var w = a[3];\n        return x * x + y * y + z * z + w * w;\n    }\n    exports.squaredLength = squaredLength;\n    /**\n     * Negates the components of a vec4\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a vector to negate\n     * @returns {vec4} out\n     */\n    function negate(out, a) {\n        out[0] = -a[0];\n        out[1] = -a[1];\n        out[2] = -a[2];\n        out[3] = -a[3];\n        return out;\n    }\n    exports.negate = negate;\n    /**\n     * Returns the inverse of the components of a vec4\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a vector to invert\n     * @returns {vec4} out\n     */\n    function inverse(out, a) {\n        out[0] = 1.0 / a[0];\n        out[1] = 1.0 / a[1];\n        out[2] = 1.0 / a[2];\n        out[3] = 1.0 / a[3];\n        return out;\n    }\n    exports.inverse = inverse;\n    /**\n     * Normalize a vec4\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a vector to normalize\n     * @returns {vec4} out\n     */\n    function normalize(out, a) {\n        var x = a[0];\n        var y = a[1];\n        var z = a[2];\n        var w = a[3];\n        var len = x * x + y * y + z * z + w * w;\n        if (len > 0) {\n            len = 1 / Math.sqrt(len);\n        }\n        out[0] = x * len;\n        out[1] = y * len;\n        out[2] = z * len;\n        out[3] = w * len;\n        return out;\n    }\n    exports.normalize = normalize;\n    /**\n     * Calculates the dot product of two vec4's\n     *\n     * @param {vec4} a the first operand\n     * @param {vec4} b the second operand\n     * @returns {Number} dot product of a and b\n     */\n    function dot(a, b) {\n        return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];\n    }\n    exports.dot = dot;\n    /**\n     * Returns the cross-product of three vectors in a 4-dimensional space\n     *\n     * @param {vec4} result the receiving vector\n     * @param {vec4} U the first vector\n     * @param {vec4} V the second vector\n     * @param {vec4} W the third vector\n     * @returns {vec4} result\n     */\n    function cross(out, u, v, w) {\n        var A = v[0] * w[1] - v[1] * w[0], B = v[0] * w[2] - v[2] * w[0], C = v[0] * w[3] - v[3] * w[0], D = v[1] * w[2] - v[2] * w[1], E = v[1] * w[3] - v[3] * w[1], F = v[2] * w[3] - v[3] * w[2];\n        var G = u[0];\n        var H = u[1];\n        var I = u[2];\n        var J = u[3];\n        out[0] = H * F - I * E + J * D;\n        out[1] = -(G * F) + I * C - J * B;\n        out[2] = G * E - H * C + J * A;\n        out[3] = -(G * D) + H * B - I * A;\n        return out;\n    }\n    exports.cross = cross;\n    /**\n     * Performs a linear interpolation between two vec4's\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a the first operand\n     * @param {vec4} b the second operand\n     * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n     * @returns {vec4} out\n     */\n    function lerp(out, a, b, t) {\n        var ax = a[0];\n        var ay = a[1];\n        var az = a[2];\n        var aw = a[3];\n        out[0] = ax + t * (b[0] - ax);\n        out[1] = ay + t * (b[1] - ay);\n        out[2] = az + t * (b[2] - az);\n        out[3] = aw + t * (b[3] - aw);\n        return out;\n    }\n    exports.lerp = lerp;\n    /**\n     * Generates a random vector with the given scale\n     *\n     * @param {vec4} out the receiving vector\n     * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n     * @returns {vec4} out\n     */\n    function random(out, scale) {\n        scale = scale || 1.0; // Marsaglia, George. Choosing a Point from the Surface of a\n        // Sphere. Ann. Math. Statist. 43 (1972), no. 2, 645--646.\n        // http://projecteuclid.org/euclid.aoms/1177692644;\n        var v1, v2, v3, v4;\n        var s1, s2;\n        do {\n            v1 = glMatrix.RANDOM() * 2 - 1;\n            v2 = glMatrix.RANDOM() * 2 - 1;\n            s1 = v1 * v1 + v2 * v2;\n        } while (s1 >= 1);\n        do {\n            v3 = glMatrix.RANDOM() * 2 - 1;\n            v4 = glMatrix.RANDOM() * 2 - 1;\n            s2 = v3 * v3 + v4 * v4;\n        } while (s2 >= 1);\n        var d = Math.sqrt((1 - s1) / s2);\n        out[0] = scale * v1;\n        out[1] = scale * v2;\n        out[2] = scale * v3 * d;\n        out[3] = scale * v4 * d;\n        return out;\n    }\n    exports.random = random;\n    /**\n     * Transforms the vec4 with a mat4.\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a the vector to transform\n     * @param {mat4} m matrix to transform with\n     * @returns {vec4} out\n     */\n    function transformMat4(out, a, m) {\n        var x = a[0], y = a[1], z = a[2], w = a[3];\n        out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n        out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n        out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n        out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n        return out;\n    }\n    exports.transformMat4 = transformMat4;\n    /**\n     * Transforms the vec4 with a quat\n     *\n     * @param {vec4} out the receiving vector\n     * @param {vec4} a the vector to transform\n     * @param {quat} q quaternion to transform with\n     * @returns {vec4} out\n     */\n    function transformQuat(out, a, q) {\n        var x = a[0], y = a[1], z = a[2];\n        var qx = q[0], qy = q[1], qz = q[2], qw = q[3]; // calculate quat * vec\n        var ix = qw * x + qy * z - qz * y;\n        var iy = qw * y + qz * x - qx * z;\n        var iz = qw * z + qx * y - qy * x;\n        var iw = -qx * x - qy * y - qz * z; // calculate result * inverse quat\n        out[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n        out[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n        out[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n        out[3] = a[3];\n        return out;\n    }\n    exports.transformQuat = transformQuat;\n    /**\n     * Set the components of a vec4 to zero\n     *\n     * @param {vec4} out the receiving vector\n     * @returns {vec4} out\n     */\n    function zero(out) {\n        out[0] = 0.0;\n        out[1] = 0.0;\n        out[2] = 0.0;\n        out[3] = 0.0;\n        return out;\n    }\n    exports.zero = zero;\n    /**\n     * Returns a string representation of a vector\n     *\n     * @param {vec4} a vector to represent as a string\n     * @returns {String} string representation of the vector\n     */\n    function str(a) {\n        return \"vec4(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \")\";\n    }\n    exports.str = str;\n    /**\n     * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n     *\n     * @param {vec4} a The first vector.\n     * @param {vec4} b The second vector.\n     * @returns {Boolean} True if the vectors are equal, false otherwise.\n     */\n    function exactEquals(a, b) {\n        return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3];\n    }\n    exports.exactEquals = exactEquals;\n    /**\n     * Returns whether or not the vectors have approximately the same elements in the same position.\n     *\n     * @param {vec4} a The first vector.\n     * @param {vec4} b The second vector.\n     * @returns {Boolean} True if the vectors are equal, false otherwise.\n     */\n    function equals(a, b) {\n        var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3];\n        var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n        return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3));\n    }\n    exports.equals = equals;\n    /**\n     * Alias for {@link vec4.subtract}\n     * @function\n     */\n    exports.sub = subtract;\n    /**\n     * Alias for {@link vec4.multiply}\n     * @function\n     */\n    exports.mul = multiply;\n    /**\n     * Alias for {@link vec4.divide}\n     * @function\n     */\n    exports.div = divide;\n    /**\n     * Alias for {@link vec4.distance}\n     * @function\n     */\n    exports.dist = distance;\n    /**\n     * Alias for {@link vec4.squaredDistance}\n     * @function\n     */\n    exports.sqrDist = squaredDistance;\n    /**\n     * Alias for {@link vec4.length}\n     * @function\n     */\n    exports.len = length;\n    /**\n     * Alias for {@link vec4.squaredLength}\n     * @function\n     */\n    exports.sqrLen = squaredLength;\n    /**\n     * Perform some operation over an array of vec4s.\n     *\n     * @param {Array} a the array of vectors to iterate over\n     * @param {Number} stride Number of elements between the start of each vec4. If 0 assumes tightly packed\n     * @param {Number} offset Number of elements to skip at the beginning of the array\n     * @param {Number} count Number of vec4s to iterate over. If 0 iterates over entire array\n     * @param {Function} fn Function to call for each vector in the array\n     * @param {Object} [arg] additional argument to pass to fn\n     * @returns {Array} a\n     * @function\n     */\n    exports.forEach = function () {\n        var vec = create();\n        return function (a, stride, offset, count, fn, arg) {\n            var i, l;\n            if (!stride) {\n                stride = 4;\n            }\n            if (!offset) {\n                offset = 0;\n            }\n            if (count) {\n                l = Math.min(count * stride + offset, a.length);\n            }\n            else {\n                l = a.length;\n            }\n            for (i = offset; i < l; i += stride) {\n                vec[0] = a[i];\n                vec[1] = a[i + 1];\n                vec[2] = a[i + 2];\n                vec[3] = a[i + 3];\n                fn(vec, vec, arg);\n                a[i] = vec[0];\n                a[i + 1] = vec[1];\n                a[i + 2] = vec[2];\n                a[i + 3] = vec[3];\n            }\n            return a;\n        };\n    }();\n}\n","min_source":"function _(t,n,r,a,u){a();const e=t(\"tslib\").__importStar(t(\"68ca94c15c\"));function o(){var t=new e.ARRAY_TYPE(4);return e.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}function i(t,n,r){return t[0]=n[0]-r[0],t[1]=n[1]-r[1],t[2]=n[2]-r[2],t[3]=n[3]-r[3],t}function c(t,n,r){return t[0]=n[0]*r[0],t[1]=n[1]*r[1],t[2]=n[2]*r[2],t[3]=n[3]*r[3],t}function h(t,n,r){return t[0]=n[0]/r[0],t[1]=n[1]/r[1],t[2]=n[2]/r[2],t[3]=n[3]/r[3],t}function M(t,n){var r=n[0]-t[0],a=n[1]-t[1],u=n[2]-t[2],e=n[3]-t[3];return Math.hypot(r,a,u,e)}function f(t,n){var r=n[0]-t[0],a=n[1]-t[1],u=n[2]-t[2],e=n[3]-t[3];return r*r+a*a+u*u+e*e}function s(t){var n=t[0],r=t[1],a=t[2],u=t[3];return Math.hypot(n,r,a,u)}function l(t){var n=t[0],r=t[1],a=t[2],u=t[3];return n*n+r*r+a*a+u*u}var m;r.create=o,r.clone=function(t){var n=new e.ARRAY_TYPE(4);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n},r.fromValues=function(t,n,r,a){var u=new e.ARRAY_TYPE(4);return u[0]=t,u[1]=n,u[2]=r,u[3]=a,u},r.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t},r.set=function(t,n,r,a,u){return t[0]=n,t[1]=r,t[2]=a,t[3]=u,t},r.add=function(t,n,r){return t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t[3]=n[3]+r[3],t},r.subtract=i,r.multiply=c,r.divide=h,r.ceil=function(t,n){return t[0]=Math.ceil(n[0]),t[1]=Math.ceil(n[1]),t[2]=Math.ceil(n[2]),t[3]=Math.ceil(n[3]),t},r.floor=function(t,n){return t[0]=Math.floor(n[0]),t[1]=Math.floor(n[1]),t[2]=Math.floor(n[2]),t[3]=Math.floor(n[3]),t},r.min=function(t,n,r){return t[0]=Math.min(n[0],r[0]),t[1]=Math.min(n[1],r[1]),t[2]=Math.min(n[2],r[2]),t[3]=Math.min(n[3],r[3]),t},r.max=function(t,n,r){return t[0]=Math.max(n[0],r[0]),t[1]=Math.max(n[1],r[1]),t[2]=Math.max(n[2],r[2]),t[3]=Math.max(n[3],r[3]),t},r.round=function(t,n){return t[0]=Math.round(n[0]),t[1]=Math.round(n[1]),t[2]=Math.round(n[2]),t[3]=Math.round(n[3]),t},r.scale=function(t,n,r){return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t[3]=n[3]*r,t},r.scaleAndAdd=function(t,n,r,a){return t[0]=n[0]+r[0]*a,t[1]=n[1]+r[1]*a,t[2]=n[2]+r[2]*a,t[3]=n[3]+r[3]*a,t},r.distance=M,r.squaredDistance=f,r.length=s,r.squaredLength=l,r.negate=function(t,n){return t[0]=-n[0],t[1]=-n[1],t[2]=-n[2],t[3]=-n[3],t},r.inverse=function(t,n){return t[0]=1/n[0],t[1]=1/n[1],t[2]=1/n[2],t[3]=1/n[3],t},r.normalize=function(t,n){var r=n[0],a=n[1],u=n[2],e=n[3],o=r*r+a*a+u*u+e*e;return o>0&&(o=1/Math.sqrt(o)),t[0]=r*o,t[1]=a*o,t[2]=u*o,t[3]=e*o,t},r.dot=function(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]+t[3]*n[3]},r.cross=function(t,n,r,a){var u=r[0]*a[1]-r[1]*a[0],e=r[0]*a[2]-r[2]*a[0],o=r[0]*a[3]-r[3]*a[0],i=r[1]*a[2]-r[2]*a[1],c=r[1]*a[3]-r[3]*a[1],h=r[2]*a[3]-r[3]*a[2],M=n[0],f=n[1],s=n[2],l=n[3];return t[0]=f*h-s*c+l*i,t[1]=-M*h+s*o-l*e,t[2]=M*c-f*o+l*u,t[3]=-M*i+f*e-s*u,t},r.lerp=function(t,n,r,a){var u=n[0],e=n[1],o=n[2],i=n[3];return t[0]=u+a*(r[0]-u),t[1]=e+a*(r[1]-e),t[2]=o+a*(r[2]-o),t[3]=i+a*(r[3]-i),t},r.random=function(t,n){var r,a,u,o,i,c;n=n||1;do{i=(r=2*e.RANDOM()-1)*r+(a=2*e.RANDOM()-1)*a}while(i>=1);do{c=(u=2*e.RANDOM()-1)*u+(o=2*e.RANDOM()-1)*o}while(c>=1);var h=Math.sqrt((1-i)/c);return t[0]=n*r,t[1]=n*a,t[2]=n*u*h,t[3]=n*o*h,t},r.transformMat4=function(t,n,r){var a=n[0],u=n[1],e=n[2],o=n[3];return t[0]=r[0]*a+r[4]*u+r[8]*e+r[12]*o,t[1]=r[1]*a+r[5]*u+r[9]*e+r[13]*o,t[2]=r[2]*a+r[6]*u+r[10]*e+r[14]*o,t[3]=r[3]*a+r[7]*u+r[11]*e+r[15]*o,t},r.transformQuat=function(t,n,r){var a=n[0],u=n[1],e=n[2],o=r[0],i=r[1],c=r[2],h=r[3],M=h*a+i*e-c*u,f=h*u+c*a-o*e,s=h*e+o*u-i*a,l=-o*a-i*u-c*e;return t[0]=M*h+l*-o+f*-c-s*-i,t[1]=f*h+l*-i+s*-o-M*-c,t[2]=s*h+l*-c+M*-i-f*-o,t[3]=n[3],t},r.zero=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t},r.str=function(t){return\"vec4(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\")\"},r.exactEquals=function(t,n){return t[0]===n[0]&&t[1]===n[1]&&t[2]===n[2]&&t[3]===n[3]},r.equals=function(t,n){var r=t[0],a=t[1],u=t[2],o=t[3],i=n[0],c=n[1],h=n[2],M=n[3];return Math.abs(r-i)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(i))&&Math.abs(a-c)<=e.EPSILON*Math.max(1,Math.abs(a),Math.abs(c))&&Math.abs(u-h)<=e.EPSILON*Math.max(1,Math.abs(u),Math.abs(h))&&Math.abs(o-M)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(M))},r.sub=i,r.mul=c,r.div=h,r.dist=M,r.sqrDist=f,r.len=s,r.sqrLen=l,r.forEach=(m=o(),function(t,n,r,a,u,e){var o,i;for(n||(n=4),r||(r=0),i=a?Math.min(a*n+r,t.length):t.length,o=r;o<i;o+=n)m[0]=t[o],m[1]=t[o+1],m[2]=t[o+2],m[3]=t[o+3],u(m,m,e),t[o]=m[0],t[o+1]=m[1],t[o+2]=m[2],t[o+3]=m[3];return t})}\n//# sourceMappingURL=vec4.min.js.map","min_map":"{\"version\":3,\"file\":\"vec4.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"glMatrix\",\"__importStar\",\"create\",\"out\",\"ARRAY_TYPE\",\"Float32Array\",\"subtract\",\"a\",\"b\",\"multiply\",\"divide\",\"distance\",\"x\",\"y\",\"z\",\"w\",\"Math\",\"hypot\",\"squaredDistance\",\"length\",\"squaredLength\",\"vec\",\"clone\",\"fromValues\",\"copy\",\"set\",\"add\",\"ceil\",\"floor\",\"min\",\"max\",\"round\",\"scale\",\"scaleAndAdd\",\"negate\",\"inverse\",\"normalize\",\"len\",\"sqrt\",\"dot\",\"cross\",\"u\",\"v\",\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"lerp\",\"t\",\"ax\",\"ay\",\"az\",\"aw\",\"random\",\"v1\",\"v2\",\"v3\",\"v4\",\"s1\",\"s2\",\"RANDOM\",\"d\",\"transformMat4\",\"m\",\"transformQuat\",\"q\",\"qx\",\"qy\",\"qz\",\"qw\",\"ix\",\"iy\",\"iz\",\"iw\",\"zero\",\"str\",\"exactEquals\",\"equals\",\"a0\",\"a1\",\"a2\",\"a3\",\"b0\",\"b1\",\"b2\",\"b3\",\"abs\",\"EPSILON\",\"sub\",\"mul\",\"div\",\"dist\",\"sqrDist\",\"sqrLen\",\"forEach\",\"stride\",\"offset\",\"count\",\"fn\",\"arg\",\"i\",\"l\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/quat2.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"gl-matrix/esm/quat2.js","resolution":"ESM","id":"277615c682","hash":"277615c6824d983fcc8a82ecb0c56f4eb2558d0cd652e83a34be62f2165e93e7","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.equals = exports.exactEquals = exports.str = exports.normalize = exports.sqrLen = exports.squaredLength = exports.len = exports.length = exports.conjugate = exports.invert = exports.lerp = exports.dot = exports.scale = exports.mul = exports.multiply = exports.add = exports.rotateAroundAxis = exports.rotateByQuatPrepend = exports.rotateByQuatAppend = exports.rotateZ = exports.rotateY = exports.rotateX = exports.translate = exports.getTranslation = exports.setDual = exports.setReal = exports.getDual = exports.getReal = exports.set = exports.identity = exports.copy = exports.fromMat4 = exports.fromRotation = exports.fromTranslation = exports.fromRotationTranslation = exports.fromRotationTranslationValues = exports.fromValues = exports.clone = exports.create = void 0;\nconst tslib_1 = require(\"tslib\");\nconst glMatrix = tslib_1.__importStar(require(\"./common.js\"));\nconst quat = tslib_1.__importStar(require(\"./quat.js\"));\nconst mat4 = tslib_1.__importStar(require(\"./mat4.js\"));\n/**\n * Dual Quaternion<br>\n * Format: [real, dual]<br>\n * Quaternion format: XYZW<br>\n * Make sure to have normalized dual quaternions, otherwise the functions may not work as intended.<br>\n * @module quat2\n */\n/**\n * Creates a new identity dual quat\n *\n * @returns {quat2} a new dual quaternion [real -> rotation, dual -> translation]\n */\nfunction create() {\n    var dq = new glMatrix.ARRAY_TYPE(8);\n    if (glMatrix.ARRAY_TYPE != Float32Array) {\n        dq[0] = 0;\n        dq[1] = 0;\n        dq[2] = 0;\n        dq[4] = 0;\n        dq[5] = 0;\n        dq[6] = 0;\n        dq[7] = 0;\n    }\n    dq[3] = 1;\n    return dq;\n}\nexports.create = create;\n/**\n * Creates a new quat initialized with values from an existing quaternion\n *\n * @param {quat2} a dual quaternion to clone\n * @returns {quat2} new dual quaternion\n * @function\n */\nfunction clone(a) {\n    var dq = new glMatrix.ARRAY_TYPE(8);\n    dq[0] = a[0];\n    dq[1] = a[1];\n    dq[2] = a[2];\n    dq[3] = a[3];\n    dq[4] = a[4];\n    dq[5] = a[5];\n    dq[6] = a[6];\n    dq[7] = a[7];\n    return dq;\n}\nexports.clone = clone;\n/**\n * Creates a new dual quat initialized with the given values\n *\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component\n * @param {Number} y2 Y component\n * @param {Number} z2 Z component\n * @param {Number} w2 W component\n * @returns {quat2} new dual quaternion\n * @function\n */\nfunction fromValues(x1, y1, z1, w1, x2, y2, z2, w2) {\n    var dq = new glMatrix.ARRAY_TYPE(8);\n    dq[0] = x1;\n    dq[1] = y1;\n    dq[2] = z1;\n    dq[3] = w1;\n    dq[4] = x2;\n    dq[5] = y2;\n    dq[6] = z2;\n    dq[7] = w2;\n    return dq;\n}\nexports.fromValues = fromValues;\n/**\n * Creates a new dual quat from the given values (quat and translation)\n *\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component (translation)\n * @param {Number} y2 Y component (translation)\n * @param {Number} z2 Z component (translation)\n * @returns {quat2} new dual quaternion\n * @function\n */\nfunction fromRotationTranslationValues(x1, y1, z1, w1, x2, y2, z2) {\n    var dq = new glMatrix.ARRAY_TYPE(8);\n    dq[0] = x1;\n    dq[1] = y1;\n    dq[2] = z1;\n    dq[3] = w1;\n    var ax = x2 * 0.5, ay = y2 * 0.5, az = z2 * 0.5;\n    dq[4] = ax * w1 + ay * z1 - az * y1;\n    dq[5] = ay * w1 + az * x1 - ax * z1;\n    dq[6] = az * w1 + ax * y1 - ay * x1;\n    dq[7] = -ax * x1 - ay * y1 - az * z1;\n    return dq;\n}\nexports.fromRotationTranslationValues = fromRotationTranslationValues;\n/**\n * Creates a dual quat from a quaternion and a translation\n *\n * @param {quat2} dual quaternion receiving operation result\n * @param {quat} q a normalized quaternion\n * @param {vec3} t tranlation vector\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\nfunction fromRotationTranslation(out, q, t) {\n    var ax = t[0] * 0.5, ay = t[1] * 0.5, az = t[2] * 0.5, bx = q[0], by = q[1], bz = q[2], bw = q[3];\n    out[0] = bx;\n    out[1] = by;\n    out[2] = bz;\n    out[3] = bw;\n    out[4] = ax * bw + ay * bz - az * by;\n    out[5] = ay * bw + az * bx - ax * bz;\n    out[6] = az * bw + ax * by - ay * bx;\n    out[7] = -ax * bx - ay * by - az * bz;\n    return out;\n}\nexports.fromRotationTranslation = fromRotationTranslation;\n/**\n * Creates a dual quat from a translation\n *\n * @param {quat2} dual quaternion receiving operation result\n * @param {vec3} t translation vector\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\nfunction fromTranslation(out, t) {\n    out[0] = 0;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 1;\n    out[4] = t[0] * 0.5;\n    out[5] = t[1] * 0.5;\n    out[6] = t[2] * 0.5;\n    out[7] = 0;\n    return out;\n}\nexports.fromTranslation = fromTranslation;\n/**\n * Creates a dual quat from a quaternion\n *\n * @param {quat2} dual quaternion receiving operation result\n * @param {quat} q the quaternion\n * @returns {quat2} dual quaternion receiving operation result\n * @function\n */\nfunction fromRotation(out, q) {\n    out[0] = q[0];\n    out[1] = q[1];\n    out[2] = q[2];\n    out[3] = q[3];\n    out[4] = 0;\n    out[5] = 0;\n    out[6] = 0;\n    out[7] = 0;\n    return out;\n}\nexports.fromRotation = fromRotation;\n/**\n * Creates a new dual quat from a matrix (4x4)\n *\n * @param {quat2} out the dual quaternion\n * @param {mat4} a the matrix\n * @returns {quat2} dual quat receiving operation result\n * @function\n */\nfunction fromMat4(out, a) {\n    //TODO Optimize this\n    var outer = quat.create();\n    mat4.getRotation(outer, a);\n    var t = new glMatrix.ARRAY_TYPE(3);\n    mat4.getTranslation(t, a);\n    fromRotationTranslation(out, outer, t);\n    return out;\n}\nexports.fromMat4 = fromMat4;\n/**\n * Copy the values from one dual quat to another\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {quat2} a the source dual quaternion\n * @returns {quat2} out\n * @function\n */\nfunction copy(out, a) {\n    out[0] = a[0];\n    out[1] = a[1];\n    out[2] = a[2];\n    out[3] = a[3];\n    out[4] = a[4];\n    out[5] = a[5];\n    out[6] = a[6];\n    out[7] = a[7];\n    return out;\n}\nexports.copy = copy;\n/**\n * Set a dual quat to the identity dual quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @returns {quat2} out\n */\nfunction identity(out) {\n    out[0] = 0;\n    out[1] = 0;\n    out[2] = 0;\n    out[3] = 1;\n    out[4] = 0;\n    out[5] = 0;\n    out[6] = 0;\n    out[7] = 0;\n    return out;\n}\nexports.identity = identity;\n/**\n * Set the components of a dual quat to the given values\n *\n * @param {quat2} out the receiving quaternion\n * @param {Number} x1 X component\n * @param {Number} y1 Y component\n * @param {Number} z1 Z component\n * @param {Number} w1 W component\n * @param {Number} x2 X component\n * @param {Number} y2 Y component\n * @param {Number} z2 Z component\n * @param {Number} w2 W component\n * @returns {quat2} out\n * @function\n */\nfunction set(out, x1, y1, z1, w1, x2, y2, z2, w2) {\n    out[0] = x1;\n    out[1] = y1;\n    out[2] = z1;\n    out[3] = w1;\n    out[4] = x2;\n    out[5] = y2;\n    out[6] = z2;\n    out[7] = w2;\n    return out;\n}\nexports.set = set;\n/**\n * Gets the real part of a dual quat\n * @param  {quat} out real part\n * @param  {quat2} a Dual Quaternion\n * @return {quat} real part\n */\nexports.getReal = quat.copy;\n/**\n * Gets the dual part of a dual quat\n * @param  {quat} out dual part\n * @param  {quat2} a Dual Quaternion\n * @return {quat} dual part\n */\nfunction getDual(out, a) {\n    out[0] = a[4];\n    out[1] = a[5];\n    out[2] = a[6];\n    out[3] = a[7];\n    return out;\n}\nexports.getDual = getDual;\n/**\n * Set the real component of a dual quat to the given quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @param {quat} q a quaternion representing the real part\n * @returns {quat2} out\n * @function\n */\nexports.setReal = quat.copy;\n/**\n * Set the dual component of a dual quat to the given quaternion\n *\n * @param {quat2} out the receiving quaternion\n * @param {quat} q a quaternion representing the dual part\n * @returns {quat2} out\n * @function\n */\nfunction setDual(out, q) {\n    out[4] = q[0];\n    out[5] = q[1];\n    out[6] = q[2];\n    out[7] = q[3];\n    return out;\n}\nexports.setDual = setDual;\n/**\n * Gets the translation of a normalized dual quat\n * @param  {vec3} out translation\n * @param  {quat2} a Dual Quaternion to be decomposed\n * @return {vec3} translation\n */\nfunction getTranslation(out, a) {\n    var ax = a[4], ay = a[5], az = a[6], aw = a[7], bx = -a[0], by = -a[1], bz = -a[2], bw = a[3];\n    out[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n    out[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n    out[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n    return out;\n}\nexports.getTranslation = getTranslation;\n/**\n * Translates a dual quat by the given vector\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {quat2} a the dual quaternion to translate\n * @param {vec3} v vector to translate by\n * @returns {quat2} out\n */\nfunction translate(out, a, v) {\n    var ax1 = a[0], ay1 = a[1], az1 = a[2], aw1 = a[3], bx1 = v[0] * 0.5, by1 = v[1] * 0.5, bz1 = v[2] * 0.5, ax2 = a[4], ay2 = a[5], az2 = a[6], aw2 = a[7];\n    out[0] = ax1;\n    out[1] = ay1;\n    out[2] = az1;\n    out[3] = aw1;\n    out[4] = aw1 * bx1 + ay1 * bz1 - az1 * by1 + ax2;\n    out[5] = aw1 * by1 + az1 * bx1 - ax1 * bz1 + ay2;\n    out[6] = aw1 * bz1 + ax1 * by1 - ay1 * bx1 + az2;\n    out[7] = -ax1 * bx1 - ay1 * by1 - az1 * bz1 + aw2;\n    return out;\n}\nexports.translate = translate;\n/**\n * Rotates a dual quat around the X axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {quat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\nfunction rotateX(out, a, rad) {\n    var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7], ax1 = ax * bw + aw * bx + ay * bz - az * by, ay1 = ay * bw + aw * by + az * bx - ax * bz, az1 = az * bw + aw * bz + ax * by - ay * bx, aw1 = aw * bw - ax * bx - ay * by - az * bz;\n    quat.rotateX(out, a, rad);\n    bx = out[0];\n    by = out[1];\n    bz = out[2];\n    bw = out[3];\n    out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n    out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n    out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n    out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n    return out;\n}\nexports.rotateX = rotateX;\n/**\n * Rotates a dual quat around the Y axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {quat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\nfunction rotateY(out, a, rad) {\n    var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7], ax1 = ax * bw + aw * bx + ay * bz - az * by, ay1 = ay * bw + aw * by + az * bx - ax * bz, az1 = az * bw + aw * bz + ax * by - ay * bx, aw1 = aw * bw - ax * bx - ay * by - az * bz;\n    quat.rotateY(out, a, rad);\n    bx = out[0];\n    by = out[1];\n    bz = out[2];\n    bw = out[3];\n    out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n    out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n    out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n    out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n    return out;\n}\nexports.rotateY = rotateY;\n/**\n * Rotates a dual quat around the Z axis\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {quat2} a the dual quaternion to rotate\n * @param {number} rad how far should the rotation be\n * @returns {quat2} out\n */\nfunction rotateZ(out, a, rad) {\n    var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7], ax1 = ax * bw + aw * bx + ay * bz - az * by, ay1 = ay * bw + aw * by + az * bx - ax * bz, az1 = az * bw + aw * bz + ax * by - ay * bx, aw1 = aw * bw - ax * bx - ay * by - az * bz;\n    quat.rotateZ(out, a, rad);\n    bx = out[0];\n    by = out[1];\n    bz = out[2];\n    bw = out[3];\n    out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n    out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n    out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n    out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n    return out;\n}\nexports.rotateZ = rotateZ;\n/**\n * Rotates a dual quat by a given quaternion (a * q)\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {quat2} a the dual quaternion to rotate\n * @param {quat} q quaternion to rotate by\n * @returns {quat2} out\n */\nfunction rotateByQuatAppend(out, a, q) {\n    var qx = q[0], qy = q[1], qz = q[2], qw = q[3], ax = a[0], ay = a[1], az = a[2], aw = a[3];\n    out[0] = ax * qw + aw * qx + ay * qz - az * qy;\n    out[1] = ay * qw + aw * qy + az * qx - ax * qz;\n    out[2] = az * qw + aw * qz + ax * qy - ay * qx;\n    out[3] = aw * qw - ax * qx - ay * qy - az * qz;\n    ax = a[4];\n    ay = a[5];\n    az = a[6];\n    aw = a[7];\n    out[4] = ax * qw + aw * qx + ay * qz - az * qy;\n    out[5] = ay * qw + aw * qy + az * qx - ax * qz;\n    out[6] = az * qw + aw * qz + ax * qy - ay * qx;\n    out[7] = aw * qw - ax * qx - ay * qy - az * qz;\n    return out;\n}\nexports.rotateByQuatAppend = rotateByQuatAppend;\n/**\n * Rotates a dual quat by a given quaternion (q * a)\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {quat} q quaternion to rotate by\n * @param {quat2} a the dual quaternion to rotate\n * @returns {quat2} out\n */\nfunction rotateByQuatPrepend(out, q, a) {\n    var qx = q[0], qy = q[1], qz = q[2], qw = q[3], bx = a[0], by = a[1], bz = a[2], bw = a[3];\n    out[0] = qx * bw + qw * bx + qy * bz - qz * by;\n    out[1] = qy * bw + qw * by + qz * bx - qx * bz;\n    out[2] = qz * bw + qw * bz + qx * by - qy * bx;\n    out[3] = qw * bw - qx * bx - qy * by - qz * bz;\n    bx = a[4];\n    by = a[5];\n    bz = a[6];\n    bw = a[7];\n    out[4] = qx * bw + qw * bx + qy * bz - qz * by;\n    out[5] = qy * bw + qw * by + qz * bx - qx * bz;\n    out[6] = qz * bw + qw * bz + qx * by - qy * bx;\n    out[7] = qw * bw - qx * bx - qy * by - qz * bz;\n    return out;\n}\nexports.rotateByQuatPrepend = rotateByQuatPrepend;\n/**\n * Rotates a dual quat around a given axis. Does the normalisation automatically\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {quat2} a the dual quaternion to rotate\n * @param {vec3} axis the axis to rotate around\n * @param {Number} rad how far the rotation should be\n * @returns {quat2} out\n */\nfunction rotateAroundAxis(out, a, axis, rad) {\n    //Special case for rad = 0\n    if (Math.abs(rad) < glMatrix.EPSILON) {\n        return copy(out, a);\n    }\n    var axisLength = Math.hypot(axis[0], axis[1], axis[2]);\n    rad = rad * 0.5;\n    var s = Math.sin(rad);\n    var bx = s * axis[0] / axisLength;\n    var by = s * axis[1] / axisLength;\n    var bz = s * axis[2] / axisLength;\n    var bw = Math.cos(rad);\n    var ax1 = a[0], ay1 = a[1], az1 = a[2], aw1 = a[3];\n    out[0] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n    out[1] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n    out[2] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n    out[3] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n    var ax = a[4], ay = a[5], az = a[6], aw = a[7];\n    out[4] = ax * bw + aw * bx + ay * bz - az * by;\n    out[5] = ay * bw + aw * by + az * bx - ax * bz;\n    out[6] = az * bw + aw * bz + ax * by - ay * bx;\n    out[7] = aw * bw - ax * bx - ay * by - az * bz;\n    return out;\n}\nexports.rotateAroundAxis = rotateAroundAxis;\n/**\n * Adds two dual quat's\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {quat2} a the first operand\n * @param {quat2} b the second operand\n * @returns {quat2} out\n * @function\n */\nfunction add(out, a, b) {\n    out[0] = a[0] + b[0];\n    out[1] = a[1] + b[1];\n    out[2] = a[2] + b[2];\n    out[3] = a[3] + b[3];\n    out[4] = a[4] + b[4];\n    out[5] = a[5] + b[5];\n    out[6] = a[6] + b[6];\n    out[7] = a[7] + b[7];\n    return out;\n}\nexports.add = add;\n/**\n * Multiplies two dual quat's\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {quat2} a the first operand\n * @param {quat2} b the second operand\n * @returns {quat2} out\n */\nfunction multiply(out, a, b) {\n    var ax0 = a[0], ay0 = a[1], az0 = a[2], aw0 = a[3], bx1 = b[4], by1 = b[5], bz1 = b[6], bw1 = b[7], ax1 = a[4], ay1 = a[5], az1 = a[6], aw1 = a[7], bx0 = b[0], by0 = b[1], bz0 = b[2], bw0 = b[3];\n    out[0] = ax0 * bw0 + aw0 * bx0 + ay0 * bz0 - az0 * by0;\n    out[1] = ay0 * bw0 + aw0 * by0 + az0 * bx0 - ax0 * bz0;\n    out[2] = az0 * bw0 + aw0 * bz0 + ax0 * by0 - ay0 * bx0;\n    out[3] = aw0 * bw0 - ax0 * bx0 - ay0 * by0 - az0 * bz0;\n    out[4] = ax0 * bw1 + aw0 * bx1 + ay0 * bz1 - az0 * by1 + ax1 * bw0 + aw1 * bx0 + ay1 * bz0 - az1 * by0;\n    out[5] = ay0 * bw1 + aw0 * by1 + az0 * bx1 - ax0 * bz1 + ay1 * bw0 + aw1 * by0 + az1 * bx0 - ax1 * bz0;\n    out[6] = az0 * bw1 + aw0 * bz1 + ax0 * by1 - ay0 * bx1 + az1 * bw0 + aw1 * bz0 + ax1 * by0 - ay1 * bx0;\n    out[7] = aw0 * bw1 - ax0 * bx1 - ay0 * by1 - az0 * bz1 + aw1 * bw0 - ax1 * bx0 - ay1 * by0 - az1 * bz0;\n    return out;\n}\nexports.multiply = multiply;\n/**\n * Alias for {@link quat2.multiply}\n * @function\n */\nexports.mul = multiply;\n/**\n * Scales a dual quat by a scalar number\n *\n * @param {quat2} out the receiving dual quat\n * @param {quat2} a the dual quat to scale\n * @param {Number} b amount to scale the dual quat by\n * @returns {quat2} out\n * @function\n */\nfunction scale(out, a, b) {\n    out[0] = a[0] * b;\n    out[1] = a[1] * b;\n    out[2] = a[2] * b;\n    out[3] = a[3] * b;\n    out[4] = a[4] * b;\n    out[5] = a[5] * b;\n    out[6] = a[6] * b;\n    out[7] = a[7] * b;\n    return out;\n}\nexports.scale = scale;\n/**\n * Calculates the dot product of two dual quat's (The dot product of the real parts)\n *\n * @param {quat2} a the first operand\n * @param {quat2} b the second operand\n * @returns {Number} dot product of a and b\n * @function\n */\nexports.dot = quat.dot;\n/**\n * Performs a linear interpolation between two dual quats's\n * NOTE: The resulting dual quaternions won't always be normalized (The error is most noticeable when t = 0.5)\n *\n * @param {quat2} out the receiving dual quat\n * @param {quat2} a the first operand\n * @param {quat2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {quat2} out\n */\nfunction lerp(out, a, b, t) {\n    var mt = 1 - t;\n    if ((0, exports.dot)(a, b) < 0)\n        t = -t;\n    out[0] = a[0] * mt + b[0] * t;\n    out[1] = a[1] * mt + b[1] * t;\n    out[2] = a[2] * mt + b[2] * t;\n    out[3] = a[3] * mt + b[3] * t;\n    out[4] = a[4] * mt + b[4] * t;\n    out[5] = a[5] * mt + b[5] * t;\n    out[6] = a[6] * mt + b[6] * t;\n    out[7] = a[7] * mt + b[7] * t;\n    return out;\n}\nexports.lerp = lerp;\n/**\n * Calculates the inverse of a dual quat. If they are normalized, conjugate is cheaper\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {quat2} a dual quat to calculate inverse of\n * @returns {quat2} out\n */\nfunction invert(out, a) {\n    var sqlen = (0, exports.squaredLength)(a);\n    out[0] = -a[0] / sqlen;\n    out[1] = -a[1] / sqlen;\n    out[2] = -a[2] / sqlen;\n    out[3] = a[3] / sqlen;\n    out[4] = -a[4] / sqlen;\n    out[5] = -a[5] / sqlen;\n    out[6] = -a[6] / sqlen;\n    out[7] = a[7] / sqlen;\n    return out;\n}\nexports.invert = invert;\n/**\n * Calculates the conjugate of a dual quat\n * If the dual quaternion is normalized, this function is faster than quat2.inverse and produces the same result.\n *\n * @param {quat2} out the receiving quaternion\n * @param {quat2} a quat to calculate conjugate of\n * @returns {quat2} out\n */\nfunction conjugate(out, a) {\n    out[0] = -a[0];\n    out[1] = -a[1];\n    out[2] = -a[2];\n    out[3] = a[3];\n    out[4] = -a[4];\n    out[5] = -a[5];\n    out[6] = -a[6];\n    out[7] = a[7];\n    return out;\n}\nexports.conjugate = conjugate;\n/**\n * Calculates the length of a dual quat\n *\n * @param {quat2} a dual quat to calculate length of\n * @returns {Number} length of a\n * @function\n */\nexports.length = quat.length;\n/**\n * Alias for {@link quat2.length}\n * @function\n */\nexports.len = exports.length;\n/**\n * Calculates the squared length of a dual quat\n *\n * @param {quat2} a dual quat to calculate squared length of\n * @returns {Number} squared length of a\n * @function\n */\nexports.squaredLength = quat.squaredLength;\n/**\n * Alias for {@link quat2.squaredLength}\n * @function\n */\nexports.sqrLen = exports.squaredLength;\n/**\n * Normalize a dual quat\n *\n * @param {quat2} out the receiving dual quaternion\n * @param {quat2} a dual quaternion to normalize\n * @returns {quat2} out\n * @function\n */\nfunction normalize(out, a) {\n    var magnitude = (0, exports.squaredLength)(a);\n    if (magnitude > 0) {\n        magnitude = Math.sqrt(magnitude);\n        var a0 = a[0] / magnitude;\n        var a1 = a[1] / magnitude;\n        var a2 = a[2] / magnitude;\n        var a3 = a[3] / magnitude;\n        var b0 = a[4];\n        var b1 = a[5];\n        var b2 = a[6];\n        var b3 = a[7];\n        var a_dot_b = a0 * b0 + a1 * b1 + a2 * b2 + a3 * b3;\n        out[0] = a0;\n        out[1] = a1;\n        out[2] = a2;\n        out[3] = a3;\n        out[4] = (b0 - a0 * a_dot_b) / magnitude;\n        out[5] = (b1 - a1 * a_dot_b) / magnitude;\n        out[6] = (b2 - a2 * a_dot_b) / magnitude;\n        out[7] = (b3 - a3 * a_dot_b) / magnitude;\n    }\n    return out;\n}\nexports.normalize = normalize;\n/**\n * Returns a string representation of a dual quatenion\n *\n * @param {quat2} a dual quaternion to represent as a string\n * @returns {String} string representation of the dual quat\n */\nfunction str(a) {\n    return \"quat2(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \")\";\n}\nexports.str = str;\n/**\n * Returns whether or not the dual quaternions have exactly the same elements in the same position (when compared with ===)\n *\n * @param {quat2} a the first dual quaternion.\n * @param {quat2} b the second dual quaternion.\n * @returns {Boolean} true if the dual quaternions are equal, false otherwise.\n */\nfunction exactEquals(a, b) {\n    return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7];\n}\nexports.exactEquals = exactEquals;\n/**\n * Returns whether or not the dual quaternions have approximately the same elements in the same position.\n *\n * @param {quat2} a the first dual quat.\n * @param {quat2} b the second dual quat.\n * @returns {Boolean} true if the dual quats are equal, false otherwise.\n */\nfunction equals(a, b) {\n    var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7];\n    var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7];\n    return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7));\n}\nexports.equals = equals;\n","type":"js","dependency_paths":[["./common.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/common.js"],["./quat.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/quat.js"],["./mat4.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/mat4.js"]],"dependency_map":[],"exported":[{"type":"named","name":"create"},{"type":"named","name":"clone"},{"type":"named","name":"fromValues"},{"type":"named","name":"fromRotationTranslationValues"},{"type":"named","name":"fromRotationTranslation"},{"type":"named","name":"fromTranslation"},{"type":"named","name":"fromRotation"},{"type":"named","name":"fromMat4"},{"type":"named","name":"copy"},{"type":"named","name":"identity"},{"type":"named","name":"set"},{"type":"named","name":"getDual"},{"type":"named","name":"setDual"},{"type":"named","name":"getTranslation"},{"type":"named","name":"translate"},{"type":"named","name":"rotateX"},{"type":"named","name":"rotateY"},{"type":"named","name":"rotateZ"},{"type":"named","name":"rotateByQuatAppend"},{"type":"named","name":"rotateByQuatPrepend"},{"type":"named","name":"rotateAroundAxis"},{"type":"named","name":"add"},{"type":"named","name":"multiply"},{"type":"named","name":"scale"},{"type":"named","name":"lerp"},{"type":"named","name":"invert"},{"type":"named","name":"conjugate"},{"type":"named","name":"normalize"},{"type":"named","name":"str"},{"type":"named","name":"exactEquals"},{"type":"named","name":"equals"}],"externals":[],"shims":[]},"code":{"source":"/* gl-matrix/esm/quat2.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    const glMatrix = tslib_1.__importStar(require(\"68ca94c15c\") /* ./common.js */);\n    const quat = tslib_1.__importStar(require(\"eb06fc032a\") /* ./quat.js */);\n    const mat4 = tslib_1.__importStar(require(\"a427635f32\") /* ./mat4.js */);\n    /**\n     * Dual Quaternion<br>\n     * Format: [real, dual]<br>\n     * Quaternion format: XYZW<br>\n     * Make sure to have normalized dual quaternions, otherwise the functions may not work as intended.<br>\n     * @module quat2\n     */\n    /**\n     * Creates a new identity dual quat\n     *\n     * @returns {quat2} a new dual quaternion [real -> rotation, dual -> translation]\n     */\n    function create() {\n        var dq = new glMatrix.ARRAY_TYPE(8);\n        if (glMatrix.ARRAY_TYPE != Float32Array) {\n            dq[0] = 0;\n            dq[1] = 0;\n            dq[2] = 0;\n            dq[4] = 0;\n            dq[5] = 0;\n            dq[6] = 0;\n            dq[7] = 0;\n        }\n        dq[3] = 1;\n        return dq;\n    }\n    exports.create = create;\n    /**\n     * Creates a new quat initialized with values from an existing quaternion\n     *\n     * @param {quat2} a dual quaternion to clone\n     * @returns {quat2} new dual quaternion\n     * @function\n     */\n    function clone(a) {\n        var dq = new glMatrix.ARRAY_TYPE(8);\n        dq[0] = a[0];\n        dq[1] = a[1];\n        dq[2] = a[2];\n        dq[3] = a[3];\n        dq[4] = a[4];\n        dq[5] = a[5];\n        dq[6] = a[6];\n        dq[7] = a[7];\n        return dq;\n    }\n    exports.clone = clone;\n    /**\n     * Creates a new dual quat initialized with the given values\n     *\n     * @param {Number} x1 X component\n     * @param {Number} y1 Y component\n     * @param {Number} z1 Z component\n     * @param {Number} w1 W component\n     * @param {Number} x2 X component\n     * @param {Number} y2 Y component\n     * @param {Number} z2 Z component\n     * @param {Number} w2 W component\n     * @returns {quat2} new dual quaternion\n     * @function\n     */\n    function fromValues(x1, y1, z1, w1, x2, y2, z2, w2) {\n        var dq = new glMatrix.ARRAY_TYPE(8);\n        dq[0] = x1;\n        dq[1] = y1;\n        dq[2] = z1;\n        dq[3] = w1;\n        dq[4] = x2;\n        dq[5] = y2;\n        dq[6] = z2;\n        dq[7] = w2;\n        return dq;\n    }\n    exports.fromValues = fromValues;\n    /**\n     * Creates a new dual quat from the given values (quat and translation)\n     *\n     * @param {Number} x1 X component\n     * @param {Number} y1 Y component\n     * @param {Number} z1 Z component\n     * @param {Number} w1 W component\n     * @param {Number} x2 X component (translation)\n     * @param {Number} y2 Y component (translation)\n     * @param {Number} z2 Z component (translation)\n     * @returns {quat2} new dual quaternion\n     * @function\n     */\n    function fromRotationTranslationValues(x1, y1, z1, w1, x2, y2, z2) {\n        var dq = new glMatrix.ARRAY_TYPE(8);\n        dq[0] = x1;\n        dq[1] = y1;\n        dq[2] = z1;\n        dq[3] = w1;\n        var ax = x2 * 0.5, ay = y2 * 0.5, az = z2 * 0.5;\n        dq[4] = ax * w1 + ay * z1 - az * y1;\n        dq[5] = ay * w1 + az * x1 - ax * z1;\n        dq[6] = az * w1 + ax * y1 - ay * x1;\n        dq[7] = -ax * x1 - ay * y1 - az * z1;\n        return dq;\n    }\n    exports.fromRotationTranslationValues = fromRotationTranslationValues;\n    /**\n     * Creates a dual quat from a quaternion and a translation\n     *\n     * @param {quat2} dual quaternion receiving operation result\n     * @param {quat} q a normalized quaternion\n     * @param {vec3} t tranlation vector\n     * @returns {quat2} dual quaternion receiving operation result\n     * @function\n     */\n    function fromRotationTranslation(out, q, t) {\n        var ax = t[0] * 0.5, ay = t[1] * 0.5, az = t[2] * 0.5, bx = q[0], by = q[1], bz = q[2], bw = q[3];\n        out[0] = bx;\n        out[1] = by;\n        out[2] = bz;\n        out[3] = bw;\n        out[4] = ax * bw + ay * bz - az * by;\n        out[5] = ay * bw + az * bx - ax * bz;\n        out[6] = az * bw + ax * by - ay * bx;\n        out[7] = -ax * bx - ay * by - az * bz;\n        return out;\n    }\n    exports.fromRotationTranslation = fromRotationTranslation;\n    /**\n     * Creates a dual quat from a translation\n     *\n     * @param {quat2} dual quaternion receiving operation result\n     * @param {vec3} t translation vector\n     * @returns {quat2} dual quaternion receiving operation result\n     * @function\n     */\n    function fromTranslation(out, t) {\n        out[0] = 0;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 1;\n        out[4] = t[0] * 0.5;\n        out[5] = t[1] * 0.5;\n        out[6] = t[2] * 0.5;\n        out[7] = 0;\n        return out;\n    }\n    exports.fromTranslation = fromTranslation;\n    /**\n     * Creates a dual quat from a quaternion\n     *\n     * @param {quat2} dual quaternion receiving operation result\n     * @param {quat} q the quaternion\n     * @returns {quat2} dual quaternion receiving operation result\n     * @function\n     */\n    function fromRotation(out, q) {\n        out[0] = q[0];\n        out[1] = q[1];\n        out[2] = q[2];\n        out[3] = q[3];\n        out[4] = 0;\n        out[5] = 0;\n        out[6] = 0;\n        out[7] = 0;\n        return out;\n    }\n    exports.fromRotation = fromRotation;\n    /**\n     * Creates a new dual quat from a matrix (4x4)\n     *\n     * @param {quat2} out the dual quaternion\n     * @param {mat4} a the matrix\n     * @returns {quat2} dual quat receiving operation result\n     * @function\n     */\n    function fromMat4(out, a) {\n        //TODO Optimize this\n        var outer = quat.create();\n        mat4.getRotation(outer, a);\n        var t = new glMatrix.ARRAY_TYPE(3);\n        mat4.getTranslation(t, a);\n        fromRotationTranslation(out, outer, t);\n        return out;\n    }\n    exports.fromMat4 = fromMat4;\n    /**\n     * Copy the values from one dual quat to another\n     *\n     * @param {quat2} out the receiving dual quaternion\n     * @param {quat2} a the source dual quaternion\n     * @returns {quat2} out\n     * @function\n     */\n    function copy(out, a) {\n        out[0] = a[0];\n        out[1] = a[1];\n        out[2] = a[2];\n        out[3] = a[3];\n        out[4] = a[4];\n        out[5] = a[5];\n        out[6] = a[6];\n        out[7] = a[7];\n        return out;\n    }\n    exports.copy = copy;\n    /**\n     * Set a dual quat to the identity dual quaternion\n     *\n     * @param {quat2} out the receiving quaternion\n     * @returns {quat2} out\n     */\n    function identity(out) {\n        out[0] = 0;\n        out[1] = 0;\n        out[2] = 0;\n        out[3] = 1;\n        out[4] = 0;\n        out[5] = 0;\n        out[6] = 0;\n        out[7] = 0;\n        return out;\n    }\n    exports.identity = identity;\n    /**\n     * Set the components of a dual quat to the given values\n     *\n     * @param {quat2} out the receiving quaternion\n     * @param {Number} x1 X component\n     * @param {Number} y1 Y component\n     * @param {Number} z1 Z component\n     * @param {Number} w1 W component\n     * @param {Number} x2 X component\n     * @param {Number} y2 Y component\n     * @param {Number} z2 Z component\n     * @param {Number} w2 W component\n     * @returns {quat2} out\n     * @function\n     */\n    function set(out, x1, y1, z1, w1, x2, y2, z2, w2) {\n        out[0] = x1;\n        out[1] = y1;\n        out[2] = z1;\n        out[3] = w1;\n        out[4] = x2;\n        out[5] = y2;\n        out[6] = z2;\n        out[7] = w2;\n        return out;\n    }\n    exports.set = set;\n    /**\n     * Gets the real part of a dual quat\n     * @param  {quat} out real part\n     * @param  {quat2} a Dual Quaternion\n     * @return {quat} real part\n     */\n    exports.getReal = quat.copy;\n    /**\n     * Gets the dual part of a dual quat\n     * @param  {quat} out dual part\n     * @param  {quat2} a Dual Quaternion\n     * @return {quat} dual part\n     */\n    function getDual(out, a) {\n        out[0] = a[4];\n        out[1] = a[5];\n        out[2] = a[6];\n        out[3] = a[7];\n        return out;\n    }\n    exports.getDual = getDual;\n    /**\n     * Set the real component of a dual quat to the given quaternion\n     *\n     * @param {quat2} out the receiving quaternion\n     * @param {quat} q a quaternion representing the real part\n     * @returns {quat2} out\n     * @function\n     */\n    exports.setReal = quat.copy;\n    /**\n     * Set the dual component of a dual quat to the given quaternion\n     *\n     * @param {quat2} out the receiving quaternion\n     * @param {quat} q a quaternion representing the dual part\n     * @returns {quat2} out\n     * @function\n     */\n    function setDual(out, q) {\n        out[4] = q[0];\n        out[5] = q[1];\n        out[6] = q[2];\n        out[7] = q[3];\n        return out;\n    }\n    exports.setDual = setDual;\n    /**\n     * Gets the translation of a normalized dual quat\n     * @param  {vec3} out translation\n     * @param  {quat2} a Dual Quaternion to be decomposed\n     * @return {vec3} translation\n     */\n    function getTranslation(out, a) {\n        var ax = a[4], ay = a[5], az = a[6], aw = a[7], bx = -a[0], by = -a[1], bz = -a[2], bw = a[3];\n        out[0] = (ax * bw + aw * bx + ay * bz - az * by) * 2;\n        out[1] = (ay * bw + aw * by + az * bx - ax * bz) * 2;\n        out[2] = (az * bw + aw * bz + ax * by - ay * bx) * 2;\n        return out;\n    }\n    exports.getTranslation = getTranslation;\n    /**\n     * Translates a dual quat by the given vector\n     *\n     * @param {quat2} out the receiving dual quaternion\n     * @param {quat2} a the dual quaternion to translate\n     * @param {vec3} v vector to translate by\n     * @returns {quat2} out\n     */\n    function translate(out, a, v) {\n        var ax1 = a[0], ay1 = a[1], az1 = a[2], aw1 = a[3], bx1 = v[0] * 0.5, by1 = v[1] * 0.5, bz1 = v[2] * 0.5, ax2 = a[4], ay2 = a[5], az2 = a[6], aw2 = a[7];\n        out[0] = ax1;\n        out[1] = ay1;\n        out[2] = az1;\n        out[3] = aw1;\n        out[4] = aw1 * bx1 + ay1 * bz1 - az1 * by1 + ax2;\n        out[5] = aw1 * by1 + az1 * bx1 - ax1 * bz1 + ay2;\n        out[6] = aw1 * bz1 + ax1 * by1 - ay1 * bx1 + az2;\n        out[7] = -ax1 * bx1 - ay1 * by1 - az1 * bz1 + aw2;\n        return out;\n    }\n    exports.translate = translate;\n    /**\n     * Rotates a dual quat around the X axis\n     *\n     * @param {quat2} out the receiving dual quaternion\n     * @param {quat2} a the dual quaternion to rotate\n     * @param {number} rad how far should the rotation be\n     * @returns {quat2} out\n     */\n    function rotateX(out, a, rad) {\n        var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7], ax1 = ax * bw + aw * bx + ay * bz - az * by, ay1 = ay * bw + aw * by + az * bx - ax * bz, az1 = az * bw + aw * bz + ax * by - ay * bx, aw1 = aw * bw - ax * bx - ay * by - az * bz;\n        quat.rotateX(out, a, rad);\n        bx = out[0];\n        by = out[1];\n        bz = out[2];\n        bw = out[3];\n        out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n        out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n        out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n        out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n        return out;\n    }\n    exports.rotateX = rotateX;\n    /**\n     * Rotates a dual quat around the Y axis\n     *\n     * @param {quat2} out the receiving dual quaternion\n     * @param {quat2} a the dual quaternion to rotate\n     * @param {number} rad how far should the rotation be\n     * @returns {quat2} out\n     */\n    function rotateY(out, a, rad) {\n        var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7], ax1 = ax * bw + aw * bx + ay * bz - az * by, ay1 = ay * bw + aw * by + az * bx - ax * bz, az1 = az * bw + aw * bz + ax * by - ay * bx, aw1 = aw * bw - ax * bx - ay * by - az * bz;\n        quat.rotateY(out, a, rad);\n        bx = out[0];\n        by = out[1];\n        bz = out[2];\n        bw = out[3];\n        out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n        out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n        out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n        out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n        return out;\n    }\n    exports.rotateY = rotateY;\n    /**\n     * Rotates a dual quat around the Z axis\n     *\n     * @param {quat2} out the receiving dual quaternion\n     * @param {quat2} a the dual quaternion to rotate\n     * @param {number} rad how far should the rotation be\n     * @returns {quat2} out\n     */\n    function rotateZ(out, a, rad) {\n        var bx = -a[0], by = -a[1], bz = -a[2], bw = a[3], ax = a[4], ay = a[5], az = a[6], aw = a[7], ax1 = ax * bw + aw * bx + ay * bz - az * by, ay1 = ay * bw + aw * by + az * bx - ax * bz, az1 = az * bw + aw * bz + ax * by - ay * bx, aw1 = aw * bw - ax * bx - ay * by - az * bz;\n        quat.rotateZ(out, a, rad);\n        bx = out[0];\n        by = out[1];\n        bz = out[2];\n        bw = out[3];\n        out[4] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n        out[5] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n        out[6] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n        out[7] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n        return out;\n    }\n    exports.rotateZ = rotateZ;\n    /**\n     * Rotates a dual quat by a given quaternion (a * q)\n     *\n     * @param {quat2} out the receiving dual quaternion\n     * @param {quat2} a the dual quaternion to rotate\n     * @param {quat} q quaternion to rotate by\n     * @returns {quat2} out\n     */\n    function rotateByQuatAppend(out, a, q) {\n        var qx = q[0], qy = q[1], qz = q[2], qw = q[3], ax = a[0], ay = a[1], az = a[2], aw = a[3];\n        out[0] = ax * qw + aw * qx + ay * qz - az * qy;\n        out[1] = ay * qw + aw * qy + az * qx - ax * qz;\n        out[2] = az * qw + aw * qz + ax * qy - ay * qx;\n        out[3] = aw * qw - ax * qx - ay * qy - az * qz;\n        ax = a[4];\n        ay = a[5];\n        az = a[6];\n        aw = a[7];\n        out[4] = ax * qw + aw * qx + ay * qz - az * qy;\n        out[5] = ay * qw + aw * qy + az * qx - ax * qz;\n        out[6] = az * qw + aw * qz + ax * qy - ay * qx;\n        out[7] = aw * qw - ax * qx - ay * qy - az * qz;\n        return out;\n    }\n    exports.rotateByQuatAppend = rotateByQuatAppend;\n    /**\n     * Rotates a dual quat by a given quaternion (q * a)\n     *\n     * @param {quat2} out the receiving dual quaternion\n     * @param {quat} q quaternion to rotate by\n     * @param {quat2} a the dual quaternion to rotate\n     * @returns {quat2} out\n     */\n    function rotateByQuatPrepend(out, q, a) {\n        var qx = q[0], qy = q[1], qz = q[2], qw = q[3], bx = a[0], by = a[1], bz = a[2], bw = a[3];\n        out[0] = qx * bw + qw * bx + qy * bz - qz * by;\n        out[1] = qy * bw + qw * by + qz * bx - qx * bz;\n        out[2] = qz * bw + qw * bz + qx * by - qy * bx;\n        out[3] = qw * bw - qx * bx - qy * by - qz * bz;\n        bx = a[4];\n        by = a[5];\n        bz = a[6];\n        bw = a[7];\n        out[4] = qx * bw + qw * bx + qy * bz - qz * by;\n        out[5] = qy * bw + qw * by + qz * bx - qx * bz;\n        out[6] = qz * bw + qw * bz + qx * by - qy * bx;\n        out[7] = qw * bw - qx * bx - qy * by - qz * bz;\n        return out;\n    }\n    exports.rotateByQuatPrepend = rotateByQuatPrepend;\n    /**\n     * Rotates a dual quat around a given axis. Does the normalisation automatically\n     *\n     * @param {quat2} out the receiving dual quaternion\n     * @param {quat2} a the dual quaternion to rotate\n     * @param {vec3} axis the axis to rotate around\n     * @param {Number} rad how far the rotation should be\n     * @returns {quat2} out\n     */\n    function rotateAroundAxis(out, a, axis, rad) {\n        //Special case for rad = 0\n        if (Math.abs(rad) < glMatrix.EPSILON) {\n            return copy(out, a);\n        }\n        var axisLength = Math.hypot(axis[0], axis[1], axis[2]);\n        rad = rad * 0.5;\n        var s = Math.sin(rad);\n        var bx = s * axis[0] / axisLength;\n        var by = s * axis[1] / axisLength;\n        var bz = s * axis[2] / axisLength;\n        var bw = Math.cos(rad);\n        var ax1 = a[0], ay1 = a[1], az1 = a[2], aw1 = a[3];\n        out[0] = ax1 * bw + aw1 * bx + ay1 * bz - az1 * by;\n        out[1] = ay1 * bw + aw1 * by + az1 * bx - ax1 * bz;\n        out[2] = az1 * bw + aw1 * bz + ax1 * by - ay1 * bx;\n        out[3] = aw1 * bw - ax1 * bx - ay1 * by - az1 * bz;\n        var ax = a[4], ay = a[5], az = a[6], aw = a[7];\n        out[4] = ax * bw + aw * bx + ay * bz - az * by;\n        out[5] = ay * bw + aw * by + az * bx - ax * bz;\n        out[6] = az * bw + aw * bz + ax * by - ay * bx;\n        out[7] = aw * bw - ax * bx - ay * by - az * bz;\n        return out;\n    }\n    exports.rotateAroundAxis = rotateAroundAxis;\n    /**\n     * Adds two dual quat's\n     *\n     * @param {quat2} out the receiving dual quaternion\n     * @param {quat2} a the first operand\n     * @param {quat2} b the second operand\n     * @returns {quat2} out\n     * @function\n     */\n    function add(out, a, b) {\n        out[0] = a[0] + b[0];\n        out[1] = a[1] + b[1];\n        out[2] = a[2] + b[2];\n        out[3] = a[3] + b[3];\n        out[4] = a[4] + b[4];\n        out[5] = a[5] + b[5];\n        out[6] = a[6] + b[6];\n        out[7] = a[7] + b[7];\n        return out;\n    }\n    exports.add = add;\n    /**\n     * Multiplies two dual quat's\n     *\n     * @param {quat2} out the receiving dual quaternion\n     * @param {quat2} a the first operand\n     * @param {quat2} b the second operand\n     * @returns {quat2} out\n     */\n    function multiply(out, a, b) {\n        var ax0 = a[0], ay0 = a[1], az0 = a[2], aw0 = a[3], bx1 = b[4], by1 = b[5], bz1 = b[6], bw1 = b[7], ax1 = a[4], ay1 = a[5], az1 = a[6], aw1 = a[7], bx0 = b[0], by0 = b[1], bz0 = b[2], bw0 = b[3];\n        out[0] = ax0 * bw0 + aw0 * bx0 + ay0 * bz0 - az0 * by0;\n        out[1] = ay0 * bw0 + aw0 * by0 + az0 * bx0 - ax0 * bz0;\n        out[2] = az0 * bw0 + aw0 * bz0 + ax0 * by0 - ay0 * bx0;\n        out[3] = aw0 * bw0 - ax0 * bx0 - ay0 * by0 - az0 * bz0;\n        out[4] = ax0 * bw1 + aw0 * bx1 + ay0 * bz1 - az0 * by1 + ax1 * bw0 + aw1 * bx0 + ay1 * bz0 - az1 * by0;\n        out[5] = ay0 * bw1 + aw0 * by1 + az0 * bx1 - ax0 * bz1 + ay1 * bw0 + aw1 * by0 + az1 * bx0 - ax1 * bz0;\n        out[6] = az0 * bw1 + aw0 * bz1 + ax0 * by1 - ay0 * bx1 + az1 * bw0 + aw1 * bz0 + ax1 * by0 - ay1 * bx0;\n        out[7] = aw0 * bw1 - ax0 * bx1 - ay0 * by1 - az0 * bz1 + aw1 * bw0 - ax1 * bx0 - ay1 * by0 - az1 * bz0;\n        return out;\n    }\n    exports.multiply = multiply;\n    /**\n     * Alias for {@link quat2.multiply}\n     * @function\n     */\n    exports.mul = multiply;\n    /**\n     * Scales a dual quat by a scalar number\n     *\n     * @param {quat2} out the receiving dual quat\n     * @param {quat2} a the dual quat to scale\n     * @param {Number} b amount to scale the dual quat by\n     * @returns {quat2} out\n     * @function\n     */\n    function scale(out, a, b) {\n        out[0] = a[0] * b;\n        out[1] = a[1] * b;\n        out[2] = a[2] * b;\n        out[3] = a[3] * b;\n        out[4] = a[4] * b;\n        out[5] = a[5] * b;\n        out[6] = a[6] * b;\n        out[7] = a[7] * b;\n        return out;\n    }\n    exports.scale = scale;\n    /**\n     * Calculates the dot product of two dual quat's (The dot product of the real parts)\n     *\n     * @param {quat2} a the first operand\n     * @param {quat2} b the second operand\n     * @returns {Number} dot product of a and b\n     * @function\n     */\n    exports.dot = quat.dot;\n    /**\n     * Performs a linear interpolation between two dual quats's\n     * NOTE: The resulting dual quaternions won't always be normalized (The error is most noticeable when t = 0.5)\n     *\n     * @param {quat2} out the receiving dual quat\n     * @param {quat2} a the first operand\n     * @param {quat2} b the second operand\n     * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n     * @returns {quat2} out\n     */\n    function lerp(out, a, b, t) {\n        var mt = 1 - t;\n        if ((0, exports.dot)(a, b) < 0)\n            t = -t;\n        out[0] = a[0] * mt + b[0] * t;\n        out[1] = a[1] * mt + b[1] * t;\n        out[2] = a[2] * mt + b[2] * t;\n        out[3] = a[3] * mt + b[3] * t;\n        out[4] = a[4] * mt + b[4] * t;\n        out[5] = a[5] * mt + b[5] * t;\n        out[6] = a[6] * mt + b[6] * t;\n        out[7] = a[7] * mt + b[7] * t;\n        return out;\n    }\n    exports.lerp = lerp;\n    /**\n     * Calculates the inverse of a dual quat. If they are normalized, conjugate is cheaper\n     *\n     * @param {quat2} out the receiving dual quaternion\n     * @param {quat2} a dual quat to calculate inverse of\n     * @returns {quat2} out\n     */\n    function invert(out, a) {\n        var sqlen = (0, exports.squaredLength)(a);\n        out[0] = -a[0] / sqlen;\n        out[1] = -a[1] / sqlen;\n        out[2] = -a[2] / sqlen;\n        out[3] = a[3] / sqlen;\n        out[4] = -a[4] / sqlen;\n        out[5] = -a[5] / sqlen;\n        out[6] = -a[6] / sqlen;\n        out[7] = a[7] / sqlen;\n        return out;\n    }\n    exports.invert = invert;\n    /**\n     * Calculates the conjugate of a dual quat\n     * If the dual quaternion is normalized, this function is faster than quat2.inverse and produces the same result.\n     *\n     * @param {quat2} out the receiving quaternion\n     * @param {quat2} a quat to calculate conjugate of\n     * @returns {quat2} out\n     */\n    function conjugate(out, a) {\n        out[0] = -a[0];\n        out[1] = -a[1];\n        out[2] = -a[2];\n        out[3] = a[3];\n        out[4] = -a[4];\n        out[5] = -a[5];\n        out[6] = -a[6];\n        out[7] = a[7];\n        return out;\n    }\n    exports.conjugate = conjugate;\n    /**\n     * Calculates the length of a dual quat\n     *\n     * @param {quat2} a dual quat to calculate length of\n     * @returns {Number} length of a\n     * @function\n     */\n    exports.length = quat.length;\n    /**\n     * Alias for {@link quat2.length}\n     * @function\n     */\n    exports.len = exports.length;\n    /**\n     * Calculates the squared length of a dual quat\n     *\n     * @param {quat2} a dual quat to calculate squared length of\n     * @returns {Number} squared length of a\n     * @function\n     */\n    exports.squaredLength = quat.squaredLength;\n    /**\n     * Alias for {@link quat2.squaredLength}\n     * @function\n     */\n    exports.sqrLen = exports.squaredLength;\n    /**\n     * Normalize a dual quat\n     *\n     * @param {quat2} out the receiving dual quaternion\n     * @param {quat2} a dual quaternion to normalize\n     * @returns {quat2} out\n     * @function\n     */\n    function normalize(out, a) {\n        var magnitude = (0, exports.squaredLength)(a);\n        if (magnitude > 0) {\n            magnitude = Math.sqrt(magnitude);\n            var a0 = a[0] / magnitude;\n            var a1 = a[1] / magnitude;\n            var a2 = a[2] / magnitude;\n            var a3 = a[3] / magnitude;\n            var b0 = a[4];\n            var b1 = a[5];\n            var b2 = a[6];\n            var b3 = a[7];\n            var a_dot_b = a0 * b0 + a1 * b1 + a2 * b2 + a3 * b3;\n            out[0] = a0;\n            out[1] = a1;\n            out[2] = a2;\n            out[3] = a3;\n            out[4] = (b0 - a0 * a_dot_b) / magnitude;\n            out[5] = (b1 - a1 * a_dot_b) / magnitude;\n            out[6] = (b2 - a2 * a_dot_b) / magnitude;\n            out[7] = (b3 - a3 * a_dot_b) / magnitude;\n        }\n        return out;\n    }\n    exports.normalize = normalize;\n    /**\n     * Returns a string representation of a dual quatenion\n     *\n     * @param {quat2} a dual quaternion to represent as a string\n     * @returns {String} string representation of the dual quat\n     */\n    function str(a) {\n        return \"quat2(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \")\";\n    }\n    exports.str = str;\n    /**\n     * Returns whether or not the dual quaternions have exactly the same elements in the same position (when compared with ===)\n     *\n     * @param {quat2} a the first dual quaternion.\n     * @param {quat2} b the second dual quaternion.\n     * @returns {Boolean} true if the dual quaternions are equal, false otherwise.\n     */\n    function exactEquals(a, b) {\n        return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7];\n    }\n    exports.exactEquals = exactEquals;\n    /**\n     * Returns whether or not the dual quaternions have approximately the same elements in the same position.\n     *\n     * @param {quat2} a the first dual quat.\n     * @param {quat2} b the second dual quat.\n     * @returns {Boolean} true if the dual quats are equal, false otherwise.\n     */\n    function equals(a, b) {\n        var a0 = a[0], a1 = a[1], a2 = a[2], a3 = a[3], a4 = a[4], a5 = a[5], a6 = a[6], a7 = a[7];\n        var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7];\n        return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7));\n    }\n    exports.equals = equals;\n}\n","min_source":"function _(t,a,n,r,e){r();const u=t(\"tslib\"),o=u.__importStar(t(\"68ca94c15c\")),i=u.__importStar(t(\"eb06fc032a\")),s=u.__importStar(t(\"a427635f32\"));function c(t,a,n){var r=.5*n[0],e=.5*n[1],u=.5*n[2],o=a[0],i=a[1],s=a[2],c=a[3];return t[0]=o,t[1]=i,t[2]=s,t[3]=c,t[4]=r*c+e*s-u*i,t[5]=e*c+u*o-r*s,t[6]=u*c+r*i-e*o,t[7]=-r*o-e*i-u*s,t}function h(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t}function f(t,a,n){var r=a[0],e=a[1],u=a[2],o=a[3],i=n[4],s=n[5],c=n[6],h=n[7],f=a[4],M=a[5],b=a[6],l=a[7],v=n[0],m=n[1],R=n[2],A=n[3];return t[0]=r*A+o*v+e*R-u*m,t[1]=e*A+o*m+u*v-r*R,t[2]=u*A+o*R+r*m-e*v,t[3]=o*A-r*v-e*m-u*R,t[4]=r*h+o*i+e*c-u*s+f*A+l*v+M*R-b*m,t[5]=e*h+o*s+u*i-r*c+M*A+l*m+b*v-f*R,t[6]=u*h+o*c+r*s-e*i+b*A+l*R+f*m-M*v,t[7]=o*h-r*i-e*s-u*c+l*A-f*v-M*m-b*R,t}n.create=function(){var t=new o.ARRAY_TYPE(8);return o.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[4]=0,t[5]=0,t[6]=0,t[7]=0),t[3]=1,t},n.clone=function(t){var a=new o.ARRAY_TYPE(8);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=t[4],a[5]=t[5],a[6]=t[6],a[7]=t[7],a},n.fromValues=function(t,a,n,r,e,u,i,s){var c=new o.ARRAY_TYPE(8);return c[0]=t,c[1]=a,c[2]=n,c[3]=r,c[4]=e,c[5]=u,c[6]=i,c[7]=s,c},n.fromRotationTranslationValues=function(t,a,n,r,e,u,i){var s=new o.ARRAY_TYPE(8);s[0]=t,s[1]=a,s[2]=n,s[3]=r;var c=.5*e,h=.5*u,f=.5*i;return s[4]=c*r+h*n-f*a,s[5]=h*r+f*t-c*n,s[6]=f*r+c*a-h*t,s[7]=-c*t-h*a-f*n,s},n.fromRotationTranslation=c,n.fromTranslation=function(t,a){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t[4]=.5*a[0],t[5]=.5*a[1],t[6]=.5*a[2],t[7]=0,t},n.fromRotation=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=0,t[5]=0,t[6]=0,t[7]=0,t},n.fromMat4=function(t,a){var n=i.create();s.getRotation(n,a);var r=new o.ARRAY_TYPE(3);return s.getTranslation(r,a),c(t,n,r),t},n.copy=h,n.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t[6]=0,t[7]=0,t},n.set=function(t,a,n,r,e,u,o,i,s){return t[0]=a,t[1]=n,t[2]=r,t[3]=e,t[4]=u,t[5]=o,t[6]=i,t[7]=s,t},n.getReal=i.copy,n.getDual=function(t,a){return t[0]=a[4],t[1]=a[5],t[2]=a[6],t[3]=a[7],t},n.setReal=i.copy,n.setDual=function(t,a){return t[4]=a[0],t[5]=a[1],t[6]=a[2],t[7]=a[3],t},n.getTranslation=function(t,a){var n=a[4],r=a[5],e=a[6],u=a[7],o=-a[0],i=-a[1],s=-a[2],c=a[3];return t[0]=2*(n*c+u*o+r*s-e*i),t[1]=2*(r*c+u*i+e*o-n*s),t[2]=2*(e*c+u*s+n*i-r*o),t},n.translate=function(t,a,n){var r=a[0],e=a[1],u=a[2],o=a[3],i=.5*n[0],s=.5*n[1],c=.5*n[2],h=a[4],f=a[5],M=a[6],b=a[7];return t[0]=r,t[1]=e,t[2]=u,t[3]=o,t[4]=o*i+e*c-u*s+h,t[5]=o*s+u*i-r*c+f,t[6]=o*c+r*s-e*i+M,t[7]=-r*i-e*s-u*c+b,t},n.rotateX=function(t,a,n){var r=-a[0],e=-a[1],u=-a[2],o=a[3],s=a[4],c=a[5],h=a[6],f=a[7],M=s*o+f*r+c*u-h*e,b=c*o+f*e+h*r-s*u,l=h*o+f*u+s*e-c*r,v=f*o-s*r-c*e-h*u;return i.rotateX(t,a,n),r=t[0],e=t[1],u=t[2],o=t[3],t[4]=M*o+v*r+b*u-l*e,t[5]=b*o+v*e+l*r-M*u,t[6]=l*o+v*u+M*e-b*r,t[7]=v*o-M*r-b*e-l*u,t},n.rotateY=function(t,a,n){var r=-a[0],e=-a[1],u=-a[2],o=a[3],s=a[4],c=a[5],h=a[6],f=a[7],M=s*o+f*r+c*u-h*e,b=c*o+f*e+h*r-s*u,l=h*o+f*u+s*e-c*r,v=f*o-s*r-c*e-h*u;return i.rotateY(t,a,n),r=t[0],e=t[1],u=t[2],o=t[3],t[4]=M*o+v*r+b*u-l*e,t[5]=b*o+v*e+l*r-M*u,t[6]=l*o+v*u+M*e-b*r,t[7]=v*o-M*r-b*e-l*u,t},n.rotateZ=function(t,a,n){var r=-a[0],e=-a[1],u=-a[2],o=a[3],s=a[4],c=a[5],h=a[6],f=a[7],M=s*o+f*r+c*u-h*e,b=c*o+f*e+h*r-s*u,l=h*o+f*u+s*e-c*r,v=f*o-s*r-c*e-h*u;return i.rotateZ(t,a,n),r=t[0],e=t[1],u=t[2],o=t[3],t[4]=M*o+v*r+b*u-l*e,t[5]=b*o+v*e+l*r-M*u,t[6]=l*o+v*u+M*e-b*r,t[7]=v*o-M*r-b*e-l*u,t},n.rotateByQuatAppend=function(t,a,n){var r=n[0],e=n[1],u=n[2],o=n[3],i=a[0],s=a[1],c=a[2],h=a[3];return t[0]=i*o+h*r+s*u-c*e,t[1]=s*o+h*e+c*r-i*u,t[2]=c*o+h*u+i*e-s*r,t[3]=h*o-i*r-s*e-c*u,i=a[4],s=a[5],c=a[6],h=a[7],t[4]=i*o+h*r+s*u-c*e,t[5]=s*o+h*e+c*r-i*u,t[6]=c*o+h*u+i*e-s*r,t[7]=h*o-i*r-s*e-c*u,t},n.rotateByQuatPrepend=function(t,a,n){var r=a[0],e=a[1],u=a[2],o=a[3],i=n[0],s=n[1],c=n[2],h=n[3];return t[0]=r*h+o*i+e*c-u*s,t[1]=e*h+o*s+u*i-r*c,t[2]=u*h+o*c+r*s-e*i,t[3]=o*h-r*i-e*s-u*c,i=n[4],s=n[5],c=n[6],h=n[7],t[4]=r*h+o*i+e*c-u*s,t[5]=e*h+o*s+u*i-r*c,t[6]=u*h+o*c+r*s-e*i,t[7]=o*h-r*i-e*s-u*c,t},n.rotateAroundAxis=function(t,a,n,r){if(Math.abs(r)<o.EPSILON)return h(t,a);var e=Math.hypot(n[0],n[1],n[2]);r*=.5;var u=Math.sin(r),i=u*n[0]/e,s=u*n[1]/e,c=u*n[2]/e,f=Math.cos(r),M=a[0],b=a[1],l=a[2],v=a[3];t[0]=M*f+v*i+b*c-l*s,t[1]=b*f+v*s+l*i-M*c,t[2]=l*f+v*c+M*s-b*i,t[3]=v*f-M*i-b*s-l*c;var m=a[4],R=a[5],A=a[6],E=a[7];return t[4]=m*f+E*i+R*c-A*s,t[5]=R*f+E*s+A*i-m*c,t[6]=A*f+E*c+m*s-R*i,t[7]=E*f-m*i-R*s-A*c,t},n.add=function(t,a,n){return t[0]=a[0]+n[0],t[1]=a[1]+n[1],t[2]=a[2]+n[2],t[3]=a[3]+n[3],t[4]=a[4]+n[4],t[5]=a[5]+n[5],t[6]=a[6]+n[6],t[7]=a[7]+n[7],t},n.multiply=f,n.mul=f,n.scale=function(t,a,n){return t[0]=a[0]*n,t[1]=a[1]*n,t[2]=a[2]*n,t[3]=a[3]*n,t[4]=a[4]*n,t[5]=a[5]*n,t[6]=a[6]*n,t[7]=a[7]*n,t},n.dot=i.dot,n.lerp=function(t,a,r,e){var u=1-e;return(0,n.dot)(a,r)<0&&(e=-e),t[0]=a[0]*u+r[0]*e,t[1]=a[1]*u+r[1]*e,t[2]=a[2]*u+r[2]*e,t[3]=a[3]*u+r[3]*e,t[4]=a[4]*u+r[4]*e,t[5]=a[5]*u+r[5]*e,t[6]=a[6]*u+r[6]*e,t[7]=a[7]*u+r[7]*e,t},n.invert=function(t,a){var r=(0,n.squaredLength)(a);return t[0]=-a[0]/r,t[1]=-a[1]/r,t[2]=-a[2]/r,t[3]=a[3]/r,t[4]=-a[4]/r,t[5]=-a[5]/r,t[6]=-a[6]/r,t[7]=a[7]/r,t},n.conjugate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t[2]=-a[2],t[3]=a[3],t[4]=-a[4],t[5]=-a[5],t[6]=-a[6],t[7]=a[7],t},n.length=i.length,n.len=n.length,n.squaredLength=i.squaredLength,n.sqrLen=n.squaredLength,n.normalize=function(t,a){var r=(0,n.squaredLength)(a);if(r>0){r=Math.sqrt(r);var e=a[0]/r,u=a[1]/r,o=a[2]/r,i=a[3]/r,s=a[4],c=a[5],h=a[6],f=a[7],M=e*s+u*c+o*h+i*f;t[0]=e,t[1]=u,t[2]=o,t[3]=i,t[4]=(s-e*M)/r,t[5]=(c-u*M)/r,t[6]=(h-o*M)/r,t[7]=(f-i*M)/r}return t},n.str=function(t){return\"quat2(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\", \"+t[3]+\", \"+t[4]+\", \"+t[5]+\", \"+t[6]+\", \"+t[7]+\")\"},n.exactEquals=function(t,a){return t[0]===a[0]&&t[1]===a[1]&&t[2]===a[2]&&t[3]===a[3]&&t[4]===a[4]&&t[5]===a[5]&&t[6]===a[6]&&t[7]===a[7]},n.equals=function(t,a){var n=t[0],r=t[1],e=t[2],u=t[3],i=t[4],s=t[5],c=t[6],h=t[7],f=a[0],M=a[1],b=a[2],l=a[3],v=a[4],m=a[5],R=a[6],A=a[7];return Math.abs(n-f)<=o.EPSILON*Math.max(1,Math.abs(n),Math.abs(f))&&Math.abs(r-M)<=o.EPSILON*Math.max(1,Math.abs(r),Math.abs(M))&&Math.abs(e-b)<=o.EPSILON*Math.max(1,Math.abs(e),Math.abs(b))&&Math.abs(u-l)<=o.EPSILON*Math.max(1,Math.abs(u),Math.abs(l))&&Math.abs(i-v)<=o.EPSILON*Math.max(1,Math.abs(i),Math.abs(v))&&Math.abs(s-m)<=o.EPSILON*Math.max(1,Math.abs(s),Math.abs(m))&&Math.abs(c-R)<=o.EPSILON*Math.max(1,Math.abs(c),Math.abs(R))&&Math.abs(h-A)<=o.EPSILON*Math.max(1,Math.abs(h),Math.abs(A))}}\n//# sourceMappingURL=quat2.min.js.map","min_map":"{\"version\":3,\"file\":\"quat2.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"tslib_1\",\"glMatrix\",\"__importStar\",\"quat\",\"mat4\",\"fromRotationTranslation\",\"out\",\"q\",\"t\",\"ax\",\"ay\",\"az\",\"bx\",\"by\",\"bz\",\"bw\",\"copy\",\"a\",\"multiply\",\"b\",\"ax0\",\"ay0\",\"az0\",\"aw0\",\"bx1\",\"by1\",\"bz1\",\"bw1\",\"ax1\",\"ay1\",\"az1\",\"aw1\",\"bx0\",\"by0\",\"bz0\",\"bw0\",\"create\",\"dq\",\"ARRAY_TYPE\",\"Float32Array\",\"clone\",\"fromValues\",\"x1\",\"y1\",\"z1\",\"w1\",\"x2\",\"y2\",\"z2\",\"w2\",\"fromRotationTranslationValues\",\"fromTranslation\",\"fromRotation\",\"fromMat4\",\"outer\",\"getRotation\",\"getTranslation\",\"identity\",\"set\",\"getReal\",\"getDual\",\"setReal\",\"setDual\",\"aw\",\"translate\",\"v\",\"ax2\",\"ay2\",\"az2\",\"aw2\",\"rotateX\",\"rad\",\"rotateY\",\"rotateZ\",\"rotateByQuatAppend\",\"qx\",\"qy\",\"qz\",\"qw\",\"rotateByQuatPrepend\",\"rotateAroundAxis\",\"axis\",\"Math\",\"abs\",\"EPSILON\",\"axisLength\",\"hypot\",\"s\",\"sin\",\"cos\",\"add\",\"mul\",\"scale\",\"dot\",\"lerp\",\"mt\",\"invert\",\"sqlen\",\"squaredLength\",\"conjugate\",\"length\",\"len\",\"sqrLen\",\"normalize\",\"magnitude\",\"sqrt\",\"a0\",\"a1\",\"a2\",\"a3\",\"b0\",\"b1\",\"b2\",\"b3\",\"a_dot_b\",\"str\",\"exactEquals\",\"equals\",\"a4\",\"a5\",\"a6\",\"a7\",\"b4\",\"b5\",\"b6\",\"b7\",\"max\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/vec2.js","base":"/croot/panel_1706539561184/work/panel/node_modules","base_path":"gl-matrix/esm/vec2.js","resolution":"ESM","id":"c56d9ff837","hash":"c56d9ff8375ce2257bf268270241ad504fd4c092434d22c778619de295b29b17","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.forEach = exports.sqrLen = exports.sqrDist = exports.dist = exports.div = exports.mul = exports.sub = exports.len = exports.equals = exports.exactEquals = exports.str = exports.zero = exports.angle = exports.rotate = exports.transformMat4 = exports.transformMat3 = exports.transformMat2d = exports.transformMat2 = exports.random = exports.lerp = exports.cross = exports.dot = exports.normalize = exports.inverse = exports.negate = exports.squaredLength = exports.length = exports.squaredDistance = exports.distance = exports.scaleAndAdd = exports.scale = exports.round = exports.max = exports.min = exports.floor = exports.ceil = exports.divide = exports.multiply = exports.subtract = exports.add = exports.set = exports.copy = exports.fromValues = exports.clone = exports.create = void 0;\nconst tslib_1 = require(\"tslib\");\nconst glMatrix = tslib_1.__importStar(require(\"./common.js\"));\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\nfunction create() {\n    var out = new glMatrix.ARRAY_TYPE(2);\n    if (glMatrix.ARRAY_TYPE != Float32Array) {\n        out[0] = 0;\n        out[1] = 0;\n    }\n    return out;\n}\nexports.create = create;\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {vec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\nfunction clone(a) {\n    var out = new glMatrix.ARRAY_TYPE(2);\n    out[0] = a[0];\n    out[1] = a[1];\n    return out;\n}\nexports.clone = clone;\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\nfunction fromValues(x, y) {\n    var out = new glMatrix.ARRAY_TYPE(2);\n    out[0] = x;\n    out[1] = y;\n    return out;\n}\nexports.fromValues = fromValues;\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the source vector\n * @returns {vec2} out\n */\nfunction copy(out, a) {\n    out[0] = a[0];\n    out[1] = a[1];\n    return out;\n}\nexports.copy = copy;\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\nfunction set(out, x, y) {\n    out[0] = x;\n    out[1] = y;\n    return out;\n}\nexports.set = set;\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction add(out, a, b) {\n    out[0] = a[0] + b[0];\n    out[1] = a[1] + b[1];\n    return out;\n}\nexports.add = add;\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction subtract(out, a, b) {\n    out[0] = a[0] - b[0];\n    out[1] = a[1] - b[1];\n    return out;\n}\nexports.subtract = subtract;\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction multiply(out, a, b) {\n    out[0] = a[0] * b[0];\n    out[1] = a[1] * b[1];\n    return out;\n}\nexports.multiply = multiply;\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction divide(out, a, b) {\n    out[0] = a[0] / b[0];\n    out[1] = a[1] / b[1];\n    return out;\n}\nexports.divide = divide;\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to ceil\n * @returns {vec2} out\n */\nfunction ceil(out, a) {\n    out[0] = Math.ceil(a[0]);\n    out[1] = Math.ceil(a[1]);\n    return out;\n}\nexports.ceil = ceil;\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to floor\n * @returns {vec2} out\n */\nfunction floor(out, a) {\n    out[0] = Math.floor(a[0]);\n    out[1] = Math.floor(a[1]);\n    return out;\n}\nexports.floor = floor;\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction min(out, a, b) {\n    out[0] = Math.min(a[0], b[0]);\n    out[1] = Math.min(a[1], b[1]);\n    return out;\n}\nexports.min = min;\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec2} out\n */\nfunction max(out, a, b) {\n    out[0] = Math.max(a[0], b[0]);\n    out[1] = Math.max(a[1], b[1]);\n    return out;\n}\nexports.max = max;\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to round\n * @returns {vec2} out\n */\nfunction round(out, a) {\n    out[0] = Math.round(a[0]);\n    out[1] = Math.round(a[1]);\n    return out;\n}\nexports.round = round;\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\nfunction scale(out, a, b) {\n    out[0] = a[0] * b;\n    out[1] = a[1] * b;\n    return out;\n}\nexports.scale = scale;\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\nfunction scaleAndAdd(out, a, b, scale) {\n    out[0] = a[0] + b[0] * scale;\n    out[1] = a[1] + b[1] * scale;\n    return out;\n}\nexports.scaleAndAdd = scaleAndAdd;\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} distance between a and b\n */\nfunction distance(a, b) {\n    var x = b[0] - a[0], y = b[1] - a[1];\n    return Math.hypot(x, y);\n}\nexports.distance = distance;\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\nfunction squaredDistance(a, b) {\n    var x = b[0] - a[0], y = b[1] - a[1];\n    return x * x + y * y;\n}\nexports.squaredDistance = squaredDistance;\n/**\n * Calculates the length of a vec2\n *\n * @param {vec2} a vector to calculate length of\n * @returns {Number} length of a\n */\nfunction length(a) {\n    var x = a[0], y = a[1];\n    return Math.hypot(x, y);\n}\nexports.length = length;\n/**\n * Calculates the squared length of a vec2\n *\n * @param {vec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\nfunction squaredLength(a) {\n    var x = a[0], y = a[1];\n    return x * x + y * y;\n}\nexports.squaredLength = squaredLength;\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to negate\n * @returns {vec2} out\n */\nfunction negate(out, a) {\n    out[0] = -a[0];\n    out[1] = -a[1];\n    return out;\n}\nexports.negate = negate;\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to invert\n * @returns {vec2} out\n */\nfunction inverse(out, a) {\n    out[0] = 1.0 / a[0];\n    out[1] = 1.0 / a[1];\n    return out;\n}\nexports.inverse = inverse;\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a vector to normalize\n * @returns {vec2} out\n */\nfunction normalize(out, a) {\n    var x = a[0], y = a[1];\n    var len = x * x + y * y;\n    if (len > 0) {\n        //TODO: evaluate use of glm_invsqrt here?\n        len = 1 / Math.sqrt(len);\n    }\n    out[0] = a[0] * len;\n    out[1] = a[1] * len;\n    return out;\n}\nexports.normalize = normalize;\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {Number} dot product of a and b\n */\nfunction dot(a, b) {\n    return a[0] * b[0] + a[1] * b[1];\n}\nexports.dot = dot;\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @returns {vec3} out\n */\nfunction cross(out, a, b) {\n    var z = a[0] * b[1] - a[1] * b[0];\n    out[0] = out[1] = 0;\n    out[2] = z;\n    return out;\n}\nexports.cross = cross;\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the first operand\n * @param {vec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\nfunction lerp(out, a, b, t) {\n    var ax = a[0], ay = a[1];\n    out[0] = ax + t * (b[0] - ax);\n    out[1] = ay + t * (b[1] - ay);\n    return out;\n}\nexports.lerp = lerp;\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\nfunction random(out, scale) {\n    scale = scale || 1.0;\n    var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n    out[0] = Math.cos(r) * scale;\n    out[1] = Math.sin(r) * scale;\n    return out;\n}\nexports.random = random;\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat2} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat2(out, a, m) {\n    var x = a[0], y = a[1];\n    out[0] = m[0] * x + m[2] * y;\n    out[1] = m[1] * x + m[3] * y;\n    return out;\n}\nexports.transformMat2 = transformMat2;\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat2d} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat2d(out, a, m) {\n    var x = a[0], y = a[1];\n    out[0] = m[0] * x + m[2] * y + m[4];\n    out[1] = m[1] * x + m[3] * y + m[5];\n    return out;\n}\nexports.transformMat2d = transformMat2d;\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat3} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat3(out, a, m) {\n    var x = a[0], y = a[1];\n    out[0] = m[0] * x + m[3] * y + m[6];\n    out[1] = m[1] * x + m[4] * y + m[7];\n    return out;\n}\nexports.transformMat3 = transformMat3;\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {vec2} a the vector to transform\n * @param {mat4} m matrix to transform with\n * @returns {vec2} out\n */\nfunction transformMat4(out, a, m) {\n    var x = a[0];\n    var y = a[1];\n    out[0] = m[0] * x + m[4] * y + m[12];\n    out[1] = m[1] * x + m[5] * y + m[13];\n    return out;\n}\nexports.transformMat4 = transformMat4;\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {vec2} a The vec2 point to rotate\n * @param {vec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\nfunction rotate(out, a, b, rad) {\n    //Translate point to the origin\n    var p0 = a[0] - b[0], p1 = a[1] - b[1], sinC = Math.sin(rad), cosC = Math.cos(rad); //perform rotation and translate to correct position\n    out[0] = p0 * cosC - p1 * sinC + b[0];\n    out[1] = p0 * sinC + p1 * cosC + b[1];\n    return out;\n}\nexports.rotate = rotate;\n/**\n * Get the angle between two 2D vectors\n * @param {vec2} a The first operand\n * @param {vec2} b The second operand\n * @returns {Number} The angle in radians\n */\nfunction angle(a, b) {\n    var x1 = a[0], y1 = a[1], x2 = b[0], y2 = b[1], \n    // mag is the product of the magnitudes of a and b\n    mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2), \n    // mag &&.. short circuits if mag == 0\n    cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n    return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\nexports.angle = angle;\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\nfunction zero(out) {\n    out[0] = 0.0;\n    out[1] = 0.0;\n    return out;\n}\nexports.zero = zero;\n/**\n * Returns a string representation of a vector\n *\n * @param {vec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\nfunction str(a) {\n    return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\nexports.str = str;\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {vec2} a The first vector.\n * @param {vec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nfunction exactEquals(a, b) {\n    return a[0] === b[0] && a[1] === b[1];\n}\nexports.exactEquals = exactEquals;\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {vec2} a The first vector.\n * @param {vec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\nfunction equals(a, b) {\n    var a0 = a[0], a1 = a[1];\n    var b0 = b[0], b1 = b[1];\n    return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\nexports.equals = equals;\n/**\n * Alias for {@link vec2.length}\n * @function\n */\nexports.len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\nexports.sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\nexports.mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\nexports.div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\nexports.dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\nexports.sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\nexports.sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\nexports.forEach = function () {\n    var vec = create();\n    return function (a, stride, offset, count, fn, arg) {\n        var i, l;\n        if (!stride) {\n            stride = 2;\n        }\n        if (!offset) {\n            offset = 0;\n        }\n        if (count) {\n            l = Math.min(count * stride + offset, a.length);\n        }\n        else {\n            l = a.length;\n        }\n        for (i = offset; i < l; i += stride) {\n            vec[0] = a[i];\n            vec[1] = a[i + 1];\n            fn(vec, vec, arg);\n            a[i] = vec[0];\n            a[i + 1] = vec[1];\n        }\n        return a;\n    };\n}();\n","type":"js","dependency_paths":[["./common.js","/croot/panel_1706539561184/work/panel/node_modules/gl-matrix/esm/common.js"]],"dependency_map":[],"exported":[{"type":"named","name":"create"},{"type":"named","name":"clone"},{"type":"named","name":"fromValues"},{"type":"named","name":"copy"},{"type":"named","name":"set"},{"type":"named","name":"add"},{"type":"named","name":"subtract"},{"type":"named","name":"multiply"},{"type":"named","name":"divide"},{"type":"named","name":"ceil"},{"type":"named","name":"floor"},{"type":"named","name":"min"},{"type":"named","name":"max"},{"type":"named","name":"round"},{"type":"named","name":"scale"},{"type":"named","name":"scaleAndAdd"},{"type":"named","name":"distance"},{"type":"named","name":"squaredDistance"},{"type":"named","name":"length"},{"type":"named","name":"squaredLength"},{"type":"named","name":"negate"},{"type":"named","name":"inverse"},{"type":"named","name":"normalize"},{"type":"named","name":"dot"},{"type":"named","name":"cross"},{"type":"named","name":"lerp"},{"type":"named","name":"random"},{"type":"named","name":"transformMat2"},{"type":"named","name":"transformMat2d"},{"type":"named","name":"transformMat3"},{"type":"named","name":"transformMat4"},{"type":"named","name":"rotate"},{"type":"named","name":"angle"},{"type":"named","name":"zero"},{"type":"named","name":"str"},{"type":"named","name":"exactEquals"},{"type":"named","name":"equals"}],"externals":[],"shims":[]},"code":{"source":"/* gl-matrix/esm/vec2.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const tslib_1 = require(\"tslib\");\n    const glMatrix = tslib_1.__importStar(require(\"68ca94c15c\") /* ./common.js */);\n    /**\n     * 2 Dimensional Vector\n     * @module vec2\n     */\n    /**\n     * Creates a new, empty vec2\n     *\n     * @returns {vec2} a new 2D vector\n     */\n    function create() {\n        var out = new glMatrix.ARRAY_TYPE(2);\n        if (glMatrix.ARRAY_TYPE != Float32Array) {\n            out[0] = 0;\n            out[1] = 0;\n        }\n        return out;\n    }\n    exports.create = create;\n    /**\n     * Creates a new vec2 initialized with values from an existing vector\n     *\n     * @param {vec2} a vector to clone\n     * @returns {vec2} a new 2D vector\n     */\n    function clone(a) {\n        var out = new glMatrix.ARRAY_TYPE(2);\n        out[0] = a[0];\n        out[1] = a[1];\n        return out;\n    }\n    exports.clone = clone;\n    /**\n     * Creates a new vec2 initialized with the given values\n     *\n     * @param {Number} x X component\n     * @param {Number} y Y component\n     * @returns {vec2} a new 2D vector\n     */\n    function fromValues(x, y) {\n        var out = new glMatrix.ARRAY_TYPE(2);\n        out[0] = x;\n        out[1] = y;\n        return out;\n    }\n    exports.fromValues = fromValues;\n    /**\n     * Copy the values from one vec2 to another\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a the source vector\n     * @returns {vec2} out\n     */\n    function copy(out, a) {\n        out[0] = a[0];\n        out[1] = a[1];\n        return out;\n    }\n    exports.copy = copy;\n    /**\n     * Set the components of a vec2 to the given values\n     *\n     * @param {vec2} out the receiving vector\n     * @param {Number} x X component\n     * @param {Number} y Y component\n     * @returns {vec2} out\n     */\n    function set(out, x, y) {\n        out[0] = x;\n        out[1] = y;\n        return out;\n    }\n    exports.set = set;\n    /**\n     * Adds two vec2's\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a the first operand\n     * @param {vec2} b the second operand\n     * @returns {vec2} out\n     */\n    function add(out, a, b) {\n        out[0] = a[0] + b[0];\n        out[1] = a[1] + b[1];\n        return out;\n    }\n    exports.add = add;\n    /**\n     * Subtracts vector b from vector a\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a the first operand\n     * @param {vec2} b the second operand\n     * @returns {vec2} out\n     */\n    function subtract(out, a, b) {\n        out[0] = a[0] - b[0];\n        out[1] = a[1] - b[1];\n        return out;\n    }\n    exports.subtract = subtract;\n    /**\n     * Multiplies two vec2's\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a the first operand\n     * @param {vec2} b the second operand\n     * @returns {vec2} out\n     */\n    function multiply(out, a, b) {\n        out[0] = a[0] * b[0];\n        out[1] = a[1] * b[1];\n        return out;\n    }\n    exports.multiply = multiply;\n    /**\n     * Divides two vec2's\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a the first operand\n     * @param {vec2} b the second operand\n     * @returns {vec2} out\n     */\n    function divide(out, a, b) {\n        out[0] = a[0] / b[0];\n        out[1] = a[1] / b[1];\n        return out;\n    }\n    exports.divide = divide;\n    /**\n     * Math.ceil the components of a vec2\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a vector to ceil\n     * @returns {vec2} out\n     */\n    function ceil(out, a) {\n        out[0] = Math.ceil(a[0]);\n        out[1] = Math.ceil(a[1]);\n        return out;\n    }\n    exports.ceil = ceil;\n    /**\n     * Math.floor the components of a vec2\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a vector to floor\n     * @returns {vec2} out\n     */\n    function floor(out, a) {\n        out[0] = Math.floor(a[0]);\n        out[1] = Math.floor(a[1]);\n        return out;\n    }\n    exports.floor = floor;\n    /**\n     * Returns the minimum of two vec2's\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a the first operand\n     * @param {vec2} b the second operand\n     * @returns {vec2} out\n     */\n    function min(out, a, b) {\n        out[0] = Math.min(a[0], b[0]);\n        out[1] = Math.min(a[1], b[1]);\n        return out;\n    }\n    exports.min = min;\n    /**\n     * Returns the maximum of two vec2's\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a the first operand\n     * @param {vec2} b the second operand\n     * @returns {vec2} out\n     */\n    function max(out, a, b) {\n        out[0] = Math.max(a[0], b[0]);\n        out[1] = Math.max(a[1], b[1]);\n        return out;\n    }\n    exports.max = max;\n    /**\n     * Math.round the components of a vec2\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a vector to round\n     * @returns {vec2} out\n     */\n    function round(out, a) {\n        out[0] = Math.round(a[0]);\n        out[1] = Math.round(a[1]);\n        return out;\n    }\n    exports.round = round;\n    /**\n     * Scales a vec2 by a scalar number\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a the vector to scale\n     * @param {Number} b amount to scale the vector by\n     * @returns {vec2} out\n     */\n    function scale(out, a, b) {\n        out[0] = a[0] * b;\n        out[1] = a[1] * b;\n        return out;\n    }\n    exports.scale = scale;\n    /**\n     * Adds two vec2's after scaling the second operand by a scalar value\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a the first operand\n     * @param {vec2} b the second operand\n     * @param {Number} scale the amount to scale b by before adding\n     * @returns {vec2} out\n     */\n    function scaleAndAdd(out, a, b, scale) {\n        out[0] = a[0] + b[0] * scale;\n        out[1] = a[1] + b[1] * scale;\n        return out;\n    }\n    exports.scaleAndAdd = scaleAndAdd;\n    /**\n     * Calculates the euclidian distance between two vec2's\n     *\n     * @param {vec2} a the first operand\n     * @param {vec2} b the second operand\n     * @returns {Number} distance between a and b\n     */\n    function distance(a, b) {\n        var x = b[0] - a[0], y = b[1] - a[1];\n        return Math.hypot(x, y);\n    }\n    exports.distance = distance;\n    /**\n     * Calculates the squared euclidian distance between two vec2's\n     *\n     * @param {vec2} a the first operand\n     * @param {vec2} b the second operand\n     * @returns {Number} squared distance between a and b\n     */\n    function squaredDistance(a, b) {\n        var x = b[0] - a[0], y = b[1] - a[1];\n        return x * x + y * y;\n    }\n    exports.squaredDistance = squaredDistance;\n    /**\n     * Calculates the length of a vec2\n     *\n     * @param {vec2} a vector to calculate length of\n     * @returns {Number} length of a\n     */\n    function length(a) {\n        var x = a[0], y = a[1];\n        return Math.hypot(x, y);\n    }\n    exports.length = length;\n    /**\n     * Calculates the squared length of a vec2\n     *\n     * @param {vec2} a vector to calculate squared length of\n     * @returns {Number} squared length of a\n     */\n    function squaredLength(a) {\n        var x = a[0], y = a[1];\n        return x * x + y * y;\n    }\n    exports.squaredLength = squaredLength;\n    /**\n     * Negates the components of a vec2\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a vector to negate\n     * @returns {vec2} out\n     */\n    function negate(out, a) {\n        out[0] = -a[0];\n        out[1] = -a[1];\n        return out;\n    }\n    exports.negate = negate;\n    /**\n     * Returns the inverse of the components of a vec2\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a vector to invert\n     * @returns {vec2} out\n     */\n    function inverse(out, a) {\n        out[0] = 1.0 / a[0];\n        out[1] = 1.0 / a[1];\n        return out;\n    }\n    exports.inverse = inverse;\n    /**\n     * Normalize a vec2\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a vector to normalize\n     * @returns {vec2} out\n     */\n    function normalize(out, a) {\n        var x = a[0], y = a[1];\n        var len = x * x + y * y;\n        if (len > 0) {\n            //TODO: evaluate use of glm_invsqrt here?\n            len = 1 / Math.sqrt(len);\n        }\n        out[0] = a[0] * len;\n        out[1] = a[1] * len;\n        return out;\n    }\n    exports.normalize = normalize;\n    /**\n     * Calculates the dot product of two vec2's\n     *\n     * @param {vec2} a the first operand\n     * @param {vec2} b the second operand\n     * @returns {Number} dot product of a and b\n     */\n    function dot(a, b) {\n        return a[0] * b[0] + a[1] * b[1];\n    }\n    exports.dot = dot;\n    /**\n     * Computes the cross product of two vec2's\n     * Note that the cross product must by definition produce a 3D vector\n     *\n     * @param {vec3} out the receiving vector\n     * @param {vec2} a the first operand\n     * @param {vec2} b the second operand\n     * @returns {vec3} out\n     */\n    function cross(out, a, b) {\n        var z = a[0] * b[1] - a[1] * b[0];\n        out[0] = out[1] = 0;\n        out[2] = z;\n        return out;\n    }\n    exports.cross = cross;\n    /**\n     * Performs a linear interpolation between two vec2's\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a the first operand\n     * @param {vec2} b the second operand\n     * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n     * @returns {vec2} out\n     */\n    function lerp(out, a, b, t) {\n        var ax = a[0], ay = a[1];\n        out[0] = ax + t * (b[0] - ax);\n        out[1] = ay + t * (b[1] - ay);\n        return out;\n    }\n    exports.lerp = lerp;\n    /**\n     * Generates a random vector with the given scale\n     *\n     * @param {vec2} out the receiving vector\n     * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n     * @returns {vec2} out\n     */\n    function random(out, scale) {\n        scale = scale || 1.0;\n        var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n        out[0] = Math.cos(r) * scale;\n        out[1] = Math.sin(r) * scale;\n        return out;\n    }\n    exports.random = random;\n    /**\n     * Transforms the vec2 with a mat2\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a the vector to transform\n     * @param {mat2} m matrix to transform with\n     * @returns {vec2} out\n     */\n    function transformMat2(out, a, m) {\n        var x = a[0], y = a[1];\n        out[0] = m[0] * x + m[2] * y;\n        out[1] = m[1] * x + m[3] * y;\n        return out;\n    }\n    exports.transformMat2 = transformMat2;\n    /**\n     * Transforms the vec2 with a mat2d\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a the vector to transform\n     * @param {mat2d} m matrix to transform with\n     * @returns {vec2} out\n     */\n    function transformMat2d(out, a, m) {\n        var x = a[0], y = a[1];\n        out[0] = m[0] * x + m[2] * y + m[4];\n        out[1] = m[1] * x + m[3] * y + m[5];\n        return out;\n    }\n    exports.transformMat2d = transformMat2d;\n    /**\n     * Transforms the vec2 with a mat3\n     * 3rd vector component is implicitly '1'\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a the vector to transform\n     * @param {mat3} m matrix to transform with\n     * @returns {vec2} out\n     */\n    function transformMat3(out, a, m) {\n        var x = a[0], y = a[1];\n        out[0] = m[0] * x + m[3] * y + m[6];\n        out[1] = m[1] * x + m[4] * y + m[7];\n        return out;\n    }\n    exports.transformMat3 = transformMat3;\n    /**\n     * Transforms the vec2 with a mat4\n     * 3rd vector component is implicitly '0'\n     * 4th vector component is implicitly '1'\n     *\n     * @param {vec2} out the receiving vector\n     * @param {vec2} a the vector to transform\n     * @param {mat4} m matrix to transform with\n     * @returns {vec2} out\n     */\n    function transformMat4(out, a, m) {\n        var x = a[0];\n        var y = a[1];\n        out[0] = m[0] * x + m[4] * y + m[12];\n        out[1] = m[1] * x + m[5] * y + m[13];\n        return out;\n    }\n    exports.transformMat4 = transformMat4;\n    /**\n     * Rotate a 2D vector\n     * @param {vec2} out The receiving vec2\n     * @param {vec2} a The vec2 point to rotate\n     * @param {vec2} b The origin of the rotation\n     * @param {Number} rad The angle of rotation in radians\n     * @returns {vec2} out\n     */\n    function rotate(out, a, b, rad) {\n        //Translate point to the origin\n        var p0 = a[0] - b[0], p1 = a[1] - b[1], sinC = Math.sin(rad), cosC = Math.cos(rad); //perform rotation and translate to correct position\n        out[0] = p0 * cosC - p1 * sinC + b[0];\n        out[1] = p0 * sinC + p1 * cosC + b[1];\n        return out;\n    }\n    exports.rotate = rotate;\n    /**\n     * Get the angle between two 2D vectors\n     * @param {vec2} a The first operand\n     * @param {vec2} b The second operand\n     * @returns {Number} The angle in radians\n     */\n    function angle(a, b) {\n        var x1 = a[0], y1 = a[1], x2 = b[0], y2 = b[1], \n        // mag is the product of the magnitudes of a and b\n        mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2), \n        // mag &&.. short circuits if mag == 0\n        cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n        return Math.acos(Math.min(Math.max(cosine, -1), 1));\n    }\n    exports.angle = angle;\n    /**\n     * Set the components of a vec2 to zero\n     *\n     * @param {vec2} out the receiving vector\n     * @returns {vec2} out\n     */\n    function zero(out) {\n        out[0] = 0.0;\n        out[1] = 0.0;\n        return out;\n    }\n    exports.zero = zero;\n    /**\n     * Returns a string representation of a vector\n     *\n     * @param {vec2} a vector to represent as a string\n     * @returns {String} string representation of the vector\n     */\n    function str(a) {\n        return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n    }\n    exports.str = str;\n    /**\n     * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n     *\n     * @param {vec2} a The first vector.\n     * @param {vec2} b The second vector.\n     * @returns {Boolean} True if the vectors are equal, false otherwise.\n     */\n    function exactEquals(a, b) {\n        return a[0] === b[0] && a[1] === b[1];\n    }\n    exports.exactEquals = exactEquals;\n    /**\n     * Returns whether or not the vectors have approximately the same elements in the same position.\n     *\n     * @param {vec2} a The first vector.\n     * @param {vec2} b The second vector.\n     * @returns {Boolean} True if the vectors are equal, false otherwise.\n     */\n    function equals(a, b) {\n        var a0 = a[0], a1 = a[1];\n        var b0 = b[0], b1 = b[1];\n        return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n    }\n    exports.equals = equals;\n    /**\n     * Alias for {@link vec2.length}\n     * @function\n     */\n    exports.len = length;\n    /**\n     * Alias for {@link vec2.subtract}\n     * @function\n     */\n    exports.sub = subtract;\n    /**\n     * Alias for {@link vec2.multiply}\n     * @function\n     */\n    exports.mul = multiply;\n    /**\n     * Alias for {@link vec2.divide}\n     * @function\n     */\n    exports.div = divide;\n    /**\n     * Alias for {@link vec2.distance}\n     * @function\n     */\n    exports.dist = distance;\n    /**\n     * Alias for {@link vec2.squaredDistance}\n     * @function\n     */\n    exports.sqrDist = squaredDistance;\n    /**\n     * Alias for {@link vec2.squaredLength}\n     * @function\n     */\n    exports.sqrLen = squaredLength;\n    /**\n     * Perform some operation over an array of vec2s.\n     *\n     * @param {Array} a the array of vectors to iterate over\n     * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n     * @param {Number} offset Number of elements to skip at the beginning of the array\n     * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n     * @param {Function} fn Function to call for each vector in the array\n     * @param {Object} [arg] additional argument to pass to fn\n     * @returns {Array} a\n     * @function\n     */\n    exports.forEach = function () {\n        var vec = create();\n        return function (a, stride, offset, count, fn, arg) {\n            var i, l;\n            if (!stride) {\n                stride = 2;\n            }\n            if (!offset) {\n                offset = 0;\n            }\n            if (count) {\n                l = Math.min(count * stride + offset, a.length);\n            }\n            else {\n                l = a.length;\n            }\n            for (i = offset; i < l; i += stride) {\n                vec[0] = a[i];\n                vec[1] = a[i + 1];\n                fn(vec, vec, arg);\n                a[i] = vec[0];\n                a[i + 1] = vec[1];\n            }\n            return a;\n        };\n    }();\n}\n","min_source":"function _(n,t,r,a,u){a();const e=n(\"tslib\").__importStar(n(\"68ca94c15c\"));function o(){var n=new e.ARRAY_TYPE(2);return e.ARRAY_TYPE!=Float32Array&&(n[0]=0,n[1]=0),n}function c(n,t,r){return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n}function i(n,t,r){return n[0]=t[0]*r[0],n[1]=t[1]*r[1],n}function f(n,t,r){return n[0]=t[0]/r[0],n[1]=t[1]/r[1],n}function s(n,t){var r=t[0]-n[0],a=t[1]-n[1];return Math.hypot(r,a)}function h(n,t){var r=t[0]-n[0],a=t[1]-n[1];return r*r+a*a}function M(n){var t=n[0],r=n[1];return Math.hypot(t,r)}function l(n){var t=n[0],r=n[1];return t*t+r*r}var v;r.create=o,r.clone=function(n){var t=new e.ARRAY_TYPE(2);return t[0]=n[0],t[1]=n[1],t},r.fromValues=function(n,t){var r=new e.ARRAY_TYPE(2);return r[0]=n,r[1]=t,r},r.copy=function(n,t){return n[0]=t[0],n[1]=t[1],n},r.set=function(n,t,r){return n[0]=t,n[1]=r,n},r.add=function(n,t,r){return n[0]=t[0]+r[0],n[1]=t[1]+r[1],n},r.subtract=c,r.multiply=i,r.divide=f,r.ceil=function(n,t){return n[0]=Math.ceil(t[0]),n[1]=Math.ceil(t[1]),n},r.floor=function(n,t){return n[0]=Math.floor(t[0]),n[1]=Math.floor(t[1]),n},r.min=function(n,t,r){return n[0]=Math.min(t[0],r[0]),n[1]=Math.min(t[1],r[1]),n},r.max=function(n,t,r){return n[0]=Math.max(t[0],r[0]),n[1]=Math.max(t[1],r[1]),n},r.round=function(n,t){return n[0]=Math.round(t[0]),n[1]=Math.round(t[1]),n},r.scale=function(n,t,r){return n[0]=t[0]*r,n[1]=t[1]*r,n},r.scaleAndAdd=function(n,t,r,a){return n[0]=t[0]+r[0]*a,n[1]=t[1]+r[1]*a,n},r.distance=s,r.squaredDistance=h,r.length=M,r.squaredLength=l,r.negate=function(n,t){return n[0]=-t[0],n[1]=-t[1],n},r.inverse=function(n,t){return n[0]=1/t[0],n[1]=1/t[1],n},r.normalize=function(n,t){var r=t[0],a=t[1],u=r*r+a*a;return u>0&&(u=1/Math.sqrt(u)),n[0]=t[0]*u,n[1]=t[1]*u,n},r.dot=function(n,t){return n[0]*t[0]+n[1]*t[1]},r.cross=function(n,t,r){var a=t[0]*r[1]-t[1]*r[0];return n[0]=n[1]=0,n[2]=a,n},r.lerp=function(n,t,r,a){var u=t[0],e=t[1];return n[0]=u+a*(r[0]-u),n[1]=e+a*(r[1]-e),n},r.random=function(n,t){t=t||1;var r=2*e.RANDOM()*Math.PI;return n[0]=Math.cos(r)*t,n[1]=Math.sin(r)*t,n},r.transformMat2=function(n,t,r){var a=t[0],u=t[1];return n[0]=r[0]*a+r[2]*u,n[1]=r[1]*a+r[3]*u,n},r.transformMat2d=function(n,t,r){var a=t[0],u=t[1];return n[0]=r[0]*a+r[2]*u+r[4],n[1]=r[1]*a+r[3]*u+r[5],n},r.transformMat3=function(n,t,r){var a=t[0],u=t[1];return n[0]=r[0]*a+r[3]*u+r[6],n[1]=r[1]*a+r[4]*u+r[7],n},r.transformMat4=function(n,t,r){var a=t[0],u=t[1];return n[0]=r[0]*a+r[4]*u+r[12],n[1]=r[1]*a+r[5]*u+r[13],n},r.rotate=function(n,t,r,a){var u=t[0]-r[0],e=t[1]-r[1],o=Math.sin(a),c=Math.cos(a);return n[0]=u*c-e*o+r[0],n[1]=u*o+e*c+r[1],n},r.angle=function(n,t){var r=n[0],a=n[1],u=t[0],e=t[1],o=Math.sqrt(r*r+a*a)*Math.sqrt(u*u+e*e),c=o&&(r*u+a*e)/o;return Math.acos(Math.min(Math.max(c,-1),1))},r.zero=function(n){return n[0]=0,n[1]=0,n},r.str=function(n){return\"vec2(\"+n[0]+\", \"+n[1]+\")\"},r.exactEquals=function(n,t){return n[0]===t[0]&&n[1]===t[1]},r.equals=function(n,t){var r=n[0],a=n[1],u=t[0],o=t[1];return Math.abs(r-u)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(u))&&Math.abs(a-o)<=e.EPSILON*Math.max(1,Math.abs(a),Math.abs(o))},r.len=M,r.sub=c,r.mul=i,r.div=f,r.dist=s,r.sqrDist=h,r.sqrLen=l,r.forEach=(v=o(),function(n,t,r,a,u,e){var o,c;for(t||(t=2),r||(r=0),c=a?Math.min(a*t+r,n.length):n.length,o=r;o<c;o+=t)v[0]=n[o],v[1]=n[o+1],u(v,v,e),n[o]=v[0],n[o+1]=v[1];return n})}\n//# sourceMappingURL=vec2.min.js.map","min_map":"{\"version\":3,\"file\":\"vec2.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"glMatrix\",\"__importStar\",\"create\",\"out\",\"ARRAY_TYPE\",\"Float32Array\",\"subtract\",\"a\",\"b\",\"multiply\",\"divide\",\"distance\",\"x\",\"y\",\"Math\",\"hypot\",\"squaredDistance\",\"length\",\"squaredLength\",\"vec\",\"clone\",\"fromValues\",\"copy\",\"set\",\"add\",\"ceil\",\"floor\",\"min\",\"max\",\"round\",\"scale\",\"scaleAndAdd\",\"negate\",\"inverse\",\"normalize\",\"len\",\"sqrt\",\"dot\",\"cross\",\"z\",\"lerp\",\"t\",\"ax\",\"ay\",\"random\",\"r\",\"RANDOM\",\"PI\",\"cos\",\"sin\",\"transformMat2\",\"m\",\"transformMat2d\",\"transformMat3\",\"transformMat4\",\"rotate\",\"rad\",\"p0\",\"p1\",\"sinC\",\"cosC\",\"angle\",\"x1\",\"y1\",\"x2\",\"y2\",\"mag\",\"cosine\",\"acos\",\"zero\",\"str\",\"exactEquals\",\"equals\",\"a0\",\"a1\",\"b0\",\"b1\",\"abs\",\"EPSILON\",\"sub\",\"mul\",\"div\",\"dist\",\"sqrDist\",\"sqrLen\",\"forEach\",\"stride\",\"offset\",\"count\",\"fn\",\"arg\",\"i\",\"l\"],\"sources\":[\"0\"],\"mappings\":\"AAA4B,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GACzED,IACA,MACME,EADUL,EAAQ,SACCM,aAAaN,EAAQ,eAU9C,SAASO,IACL,IAAIC,EAAM,IAAIH,EAASI,WAAW,GAKlC,OAJIJ,EAASI,YAAcC,eACvBF,EAAI,GAAK,EACTA,EAAI,GAAK,GAENA,CACX,CA8EA,SAASG,EAASH,EAAKI,EAAGC,GAGtB,OAFAL,EAAI,GAAKI,EAAE,GAAKC,EAAE,GAClBL,EAAI,GAAKI,EAAE,GAAKC,EAAE,GACXL,CACX,CAUA,SAASM,EAASN,EAAKI,EAAGC,GAGtB,OAFAL,EAAI,GAAKI,EAAE,GAAKC,EAAE,GAClBL,EAAI,GAAKI,EAAE,GAAKC,EAAE,GACXL,CACX,CAUA,SAASO,EAAOP,EAAKI,EAAGC,GAGpB,OAFAL,EAAI,GAAKI,EAAE,GAAKC,EAAE,GAClBL,EAAI,GAAKI,EAAE,GAAKC,EAAE,GACXL,CACX,CAyGA,SAASQ,EAASJ,EAAGC,GACjB,IAAII,EAAIJ,EAAE,GAAKD,EAAE,GAAIM,EAAIL,EAAE,GAAKD,EAAE,GAClC,OAAOO,KAAKC,MAAMH,EAAGC,EACzB,CASA,SAASG,EAAgBT,EAAGC,GACxB,IAAII,EAAIJ,EAAE,GAAKD,EAAE,GAAIM,EAAIL,EAAE,GAAKD,EAAE,GAClC,OAAOK,EAAIA,EAAIC,EAAIA,CACvB,CAQA,SAASI,EAAOV,GACZ,IAAIK,EAAIL,EAAE,GAAIM,EAAIN,EAAE,GACpB,OAAOO,KAAKC,MAAMH,EAAGC,EACzB,CAQA,SAASK,EAAcX,GACnB,IAAIK,EAAIL,EAAE,GAAIM,EAAIN,EAAE,GACpB,OAAOK,EAAIA,EAAIC,EAAIA,CACvB,CAqSkB,IACVM,EAjiBRtB,EAAQK,OAASA,EAajBL,EAAQuB,MANR,SAAeb,GACX,IAAIJ,EAAM,IAAIH,EAASI,WAAW,GAGlC,OAFAD,EAAI,GAAKI,EAAE,GACXJ,EAAI,GAAKI,EAAE,GACJJ,CACX,EAeAN,EAAQwB,WANR,SAAoBT,EAAGC,GACnB,IAAIV,EAAM,IAAIH,EAASI,WAAW,GAGlC,OAFAD,EAAI,GAAKS,EACTT,EAAI,GAAKU,EACFV,CACX,EAcAN,EAAQyB,KALR,SAAcnB,EAAKI,GAGf,OAFAJ,EAAI,GAAKI,EAAE,GACXJ,EAAI,GAAKI,EAAE,GACJJ,CACX,EAeAN,EAAQ0B,IALR,SAAapB,EAAKS,EAAGC,GAGjB,OAFAV,EAAI,GAAKS,EACTT,EAAI,GAAKU,EACFV,CACX,EAeAN,EAAQ2B,IALR,SAAarB,EAAKI,EAAGC,GAGjB,OAFAL,EAAI,GAAKI,EAAE,GAAKC,EAAE,GAClBL,EAAI,GAAKI,EAAE,GAAKC,EAAE,GACXL,CACX,EAeAN,EAAQS,SAAWA,EAcnBT,EAAQY,SAAWA,EAcnBZ,EAAQa,OAASA,EAajBb,EAAQ4B,KALR,SAActB,EAAKI,GAGf,OAFAJ,EAAI,GAAKW,KAAKW,KAAKlB,EAAE,IACrBJ,EAAI,GAAKW,KAAKW,KAAKlB,EAAE,IACdJ,CACX,EAcAN,EAAQ6B,MALR,SAAevB,EAAKI,GAGhB,OAFAJ,EAAI,GAAKW,KAAKY,MAAMnB,EAAE,IACtBJ,EAAI,GAAKW,KAAKY,MAAMnB,EAAE,IACfJ,CACX,EAeAN,EAAQ8B,IALR,SAAaxB,EAAKI,EAAGC,GAGjB,OAFAL,EAAI,GAAKW,KAAKa,IAAIpB,EAAE,GAAIC,EAAE,IAC1BL,EAAI,GAAKW,KAAKa,IAAIpB,EAAE,GAAIC,EAAE,IACnBL,CACX,EAeAN,EAAQ+B,IALR,SAAazB,EAAKI,EAAGC,GAGjB,OAFAL,EAAI,GAAKW,KAAKc,IAAIrB,EAAE,GAAIC,EAAE,IAC1BL,EAAI,GAAKW,KAAKc,IAAIrB,EAAE,GAAIC,EAAE,IACnBL,CACX,EAcAN,EAAQgC,MALR,SAAe1B,EAAKI,GAGhB,OAFAJ,EAAI,GAAKW,KAAKe,MAAMtB,EAAE,IACtBJ,EAAI,GAAKW,KAAKe,MAAMtB,EAAE,IACfJ,CACX,EAeAN,EAAQiC,MALR,SAAe3B,EAAKI,EAAGC,GAGnB,OAFAL,EAAI,GAAKI,EAAE,GAAKC,EAChBL,EAAI,GAAKI,EAAE,GAAKC,EACTL,CACX,EAgBAN,EAAQkC,YALR,SAAqB5B,EAAKI,EAAGC,EAAGsB,GAG5B,OAFA3B,EAAI,GAAKI,EAAE,GAAKC,EAAE,GAAKsB,EACvB3B,EAAI,GAAKI,EAAE,GAAKC,EAAE,GAAKsB,EAChB3B,CACX,EAaAN,EAAQc,SAAWA,EAYnBd,EAAQmB,gBAAkBA,EAW1BnB,EAAQoB,OAASA,EAWjBpB,EAAQqB,cAAgBA,EAaxBrB,EAAQmC,OALR,SAAgB7B,EAAKI,GAGjB,OAFAJ,EAAI,IAAMI,EAAE,GACZJ,EAAI,IAAMI,EAAE,GACLJ,CACX,EAcAN,EAAQoC,QALR,SAAiB9B,EAAKI,GAGlB,OAFAJ,EAAI,GAAK,EAAMI,EAAE,GACjBJ,EAAI,GAAK,EAAMI,EAAE,GACVJ,CACX,EAoBAN,EAAQqC,UAXR,SAAmB/B,EAAKI,GACpB,IAAIK,EAAIL,EAAE,GAAIM,EAAIN,EAAE,GAChB4B,EAAMvB,EAAIA,EAAIC,EAAIA,EAOtB,OANIsB,EAAM,IAENA,EAAM,EAAIrB,KAAKsB,KAAKD,IAExBhC,EAAI,GAAKI,EAAE,GAAK4B,EAChBhC,EAAI,GAAKI,EAAE,GAAK4B,EACThC,CACX,EAYAN,EAAQwC,IAHR,SAAa9B,EAAGC,GACZ,OAAOD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,EAClC,EAiBAX,EAAQyC,MANR,SAAenC,EAAKI,EAAGC,GACnB,IAAI+B,EAAIhC,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAG/B,OAFAL,EAAI,GAAKA,EAAI,GAAK,EAClBA,EAAI,GAAKoC,EACFpC,CACX,EAiBAN,EAAQ2C,KANR,SAAcrC,EAAKI,EAAGC,EAAGiC,GACrB,IAAIC,EAAKnC,EAAE,GAAIoC,EAAKpC,EAAE,GAGtB,OAFAJ,EAAI,GAAKuC,EAAKD,GAAKjC,EAAE,GAAKkC,GAC1BvC,EAAI,GAAKwC,EAAKF,GAAKjC,EAAE,GAAKmC,GACnBxC,CACX,EAgBAN,EAAQ+C,OAPR,SAAgBzC,EAAK2B,GACjBA,EAAQA,GAAS,EACjB,IAAIe,EAAwB,EAApB7C,EAAS8C,SAAiBhC,KAAKiC,GAGvC,OAFA5C,EAAI,GAAKW,KAAKkC,IAAIH,GAAKf,EACvB3B,EAAI,GAAKW,KAAKmC,IAAIJ,GAAKf,EAChB3B,CACX,EAgBAN,EAAQqD,cANR,SAAuB/C,EAAKI,EAAG4C,GAC3B,IAAIvC,EAAIL,EAAE,GAAIM,EAAIN,EAAE,GAGpB,OAFAJ,EAAI,GAAKgD,EAAE,GAAKvC,EAAIuC,EAAE,GAAKtC,EAC3BV,EAAI,GAAKgD,EAAE,GAAKvC,EAAIuC,EAAE,GAAKtC,EACpBV,CACX,EAgBAN,EAAQuD,eANR,SAAwBjD,EAAKI,EAAG4C,GAC5B,IAAIvC,EAAIL,EAAE,GAAIM,EAAIN,EAAE,GAGpB,OAFAJ,EAAI,GAAKgD,EAAE,GAAKvC,EAAIuC,EAAE,GAAKtC,EAAIsC,EAAE,GACjChD,EAAI,GAAKgD,EAAE,GAAKvC,EAAIuC,EAAE,GAAKtC,EAAIsC,EAAE,GAC1BhD,CACX,EAiBAN,EAAQwD,cANR,SAAuBlD,EAAKI,EAAG4C,GAC3B,IAAIvC,EAAIL,EAAE,GAAIM,EAAIN,EAAE,GAGpB,OAFAJ,EAAI,GAAKgD,EAAE,GAAKvC,EAAIuC,EAAE,GAAKtC,EAAIsC,EAAE,GACjChD,EAAI,GAAKgD,EAAE,GAAKvC,EAAIuC,EAAE,GAAKtC,EAAIsC,EAAE,GAC1BhD,CACX,EAmBAN,EAAQyD,cAPR,SAAuBnD,EAAKI,EAAG4C,GAC3B,IAAIvC,EAAIL,EAAE,GACNM,EAAIN,EAAE,GAGV,OAFAJ,EAAI,GAAKgD,EAAE,GAAKvC,EAAIuC,EAAE,GAAKtC,EAAIsC,EAAE,IACjChD,EAAI,GAAKgD,EAAE,GAAKvC,EAAIuC,EAAE,GAAKtC,EAAIsC,EAAE,IAC1BhD,CACX,EAiBAN,EAAQ0D,OAPR,SAAgBpD,EAAKI,EAAGC,EAAGgD,GAEvB,IAAIC,EAAKlD,EAAE,GAAKC,EAAE,GAAIkD,EAAKnD,EAAE,GAAKC,EAAE,GAAImD,EAAO7C,KAAKmC,IAAIO,GAAMI,EAAO9C,KAAKkC,IAAIQ,GAG9E,OAFArD,EAAI,GAAKsD,EAAKG,EAAOF,EAAKC,EAAOnD,EAAE,GACnCL,EAAI,GAAKsD,EAAKE,EAAOD,EAAKE,EAAOpD,EAAE,GAC5BL,CACX,EAgBAN,EAAQgE,MARR,SAAetD,EAAGC,GACd,IAAIsD,EAAKvD,EAAE,GAAIwD,EAAKxD,EAAE,GAAIyD,EAAKxD,EAAE,GAAIyD,EAAKzD,EAAE,GAE5C0D,EAAMpD,KAAKsB,KAAK0B,EAAKA,EAAKC,EAAKA,GAAMjD,KAAKsB,KAAK4B,EAAKA,EAAKC,EAAKA,GAE9DE,EAASD,IAAQJ,EAAKE,EAAKD,EAAKE,GAAMC,EACtC,OAAOpD,KAAKsD,KAAKtD,KAAKa,IAAIb,KAAKc,IAAIuC,GAAS,GAAI,GACpD,EAaAtE,EAAQwE,KALR,SAAclE,GAGV,OAFAA,EAAI,GAAK,EACTA,EAAI,GAAK,EACFA,CACX,EAWAN,EAAQyE,IAHR,SAAa/D,GACT,MAAO,QAAUA,EAAE,GAAK,KAAOA,EAAE,GAAK,GAC1C,EAYAV,EAAQ0E,YAHR,SAAqBhE,EAAGC,GACpB,OAAOD,EAAE,KAAOC,EAAE,IAAMD,EAAE,KAAOC,EAAE,EACvC,EAcAX,EAAQ2E,OALR,SAAgBjE,EAAGC,GACf,IAAIiE,EAAKlE,EAAE,GAAImE,EAAKnE,EAAE,GAClBoE,EAAKnE,EAAE,GAAIoE,EAAKpE,EAAE,GACtB,OAAOM,KAAK+D,IAAIJ,EAAKE,IAAO3E,EAAS8E,QAAUhE,KAAKc,IAAI,EAAKd,KAAK+D,IAAIJ,GAAK3D,KAAK+D,IAAIF,KAAQ7D,KAAK+D,IAAIH,EAAKE,IAAO5E,EAAS8E,QAAUhE,KAAKc,IAAI,EAAKd,KAAK+D,IAAIH,GAAK5D,KAAK+D,IAAID,GAC7K,EAMA/E,EAAQsC,IAAMlB,EAKdpB,EAAQkF,IAAMzE,EAKdT,EAAQmF,IAAMvE,EAKdZ,EAAQoF,IAAMvE,EAKdb,EAAQqF,KAAOvE,EAKfd,EAAQsF,QAAUnE,EAKlBnB,EAAQuF,OAASlE,EAajBrB,EAAQwF,SACAlE,EAAMjB,IACH,SAAUK,EAAG+E,EAAQC,EAAQC,EAAOC,EAAIC,GAC3C,IAAIC,EAAGC,EAaP,IAZKN,IACDA,EAAS,GAERC,IACDA,EAAS,GAGTK,EADAJ,EACI1E,KAAKa,IAAI6D,EAAQF,EAASC,EAAQhF,EAAEU,QAGpCV,EAAEU,OAEL0E,EAAIJ,EAAQI,EAAIC,EAAGD,GAAKL,EACzBnE,EAAI,GAAKZ,EAAEoF,GACXxE,EAAI,GAAKZ,EAAEoF,EAAI,GACfF,EAAGtE,EAAKA,EAAKuE,GACbnF,EAAEoF,GAAKxE,EAAI,GACXZ,EAAEoF,EAAI,GAAKxE,EAAI,GAEnB,OAAOZ,CACX,EAER\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/vtkvolume.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/vtk/vtkvolume.js","canonical":"models/vtk/vtkvolume","resolution":"ESM","id":"9cb70c6ab6","hash":"9cb70c6ab62517a9b36b0a221947016e77688a7665e35c463f1c6eef7cd40e6a","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VTKVolumePlot = exports.VTKVolumePlotView = void 0;\nvar _a;\nconst vtklayout_1 = require(\"./vtklayout\");\nconst util_1 = require(\"./util\");\nclass VTKVolumePlotView extends vtklayout_1.AbstractVTKView {\n    connect_signals() {\n        super.connect_signals();\n        this.connect(this.model.properties.data.change, () => {\n            this._vtk_image_data = (0, util_1.data2VTKImageData)(this.model.data);\n            this.invalidate_render();\n        });\n        this.connect(this.model.properties.colormap.change, () => {\n            this.colormap_selector.value = this.model.colormap;\n            const event = new Event(\"change\");\n            this.colormap_selector.dispatchEvent(event);\n        });\n        this.connect(this.model.properties.shadow.change, () => {\n            this.shadow_selector.value = this.model.shadow ? \"1\" : \"0\";\n            const event = new Event(\"change\");\n            this.shadow_selector.dispatchEvent(event);\n        });\n        this.connect(this.model.properties.sampling.change, () => {\n            this.sampling_slider.value = this.model.sampling.toFixed(2);\n            const event = new Event(\"input\");\n            this.sampling_slider.dispatchEvent(event);\n        });\n        this.connect(this.model.properties.edge_gradient.change, () => {\n            this.edge_gradient_slider.value = this.model.edge_gradient.toFixed(2);\n            const event = new Event(\"input\");\n            this.edge_gradient_slider.dispatchEvent(event);\n        });\n        this.connect(this.model.properties.rescale.change, () => {\n            this._controllerWidget.setRescaleColorMap(this.model.rescale);\n            this._vtk_renwin.getRenderWindow().render();\n        });\n        this.connect(this.model.properties.ambient.change, () => {\n            this.volume.getProperty().setAmbient(this.model.ambient);\n            this._vtk_renwin.getRenderWindow().render();\n        });\n        this.connect(this.model.properties.diffuse.change, () => {\n            this.volume.getProperty().setDiffuse(this.model.diffuse);\n            this._vtk_renwin.getRenderWindow().render();\n        });\n        this.connect(this.model.properties.camera.change, () => {\n            if (!this._setting_camera) {\n                this._set_camera_state();\n                this._vtk_renwin.getRenderWindow().render();\n            }\n        });\n        this.connect(this.model.properties.specular.change, () => {\n            this.volume.getProperty().setSpecular(this.model.specular);\n            this._vtk_renwin.getRenderWindow().render();\n        });\n        this.connect(this.model.properties.specular_power.change, () => {\n            this.volume.getProperty().setSpecularPower(this.model.specular_power);\n            this._vtk_renwin.getRenderWindow().render();\n        });\n        this.connect(this.model.properties.display_volume.change, () => {\n            this._set_volume_visibility(this.model.display_volume);\n            this._vtk_renwin.getRenderWindow().render();\n        });\n        this.connect(this.model.properties.display_slices.change, () => {\n            this._set_slices_visibility(this.model.display_slices);\n            this._vtk_renwin.getRenderWindow().render();\n        });\n        this.connect(this.model.properties.slice_i.change, () => {\n            if (this.image_actor_i !== undefined) {\n                this.image_actor_i.getMapper().setISlice(this.model.slice_i);\n                this._vtk_renwin.getRenderWindow().render();\n            }\n        });\n        this.connect(this.model.properties.slice_j.change, () => {\n            if (this.image_actor_j !== undefined) {\n                this.image_actor_j.getMapper().setJSlice(this.model.slice_j);\n                this._vtk_renwin.getRenderWindow().render();\n            }\n        });\n        this.connect(this.model.properties.slice_k.change, () => {\n            if (this.image_actor_k !== undefined) {\n                this.image_actor_k.getMapper().setKSlice(this.model.slice_k);\n                this._vtk_renwin.getRenderWindow().render();\n            }\n        });\n        this.connect(this.model.properties.render_background.change, () => {\n            this._vtk_renwin\n                .getRenderer()\n                .setBackground(...(0, util_1.hexToRGB)(this.model.render_background));\n            this._vtk_renwin.getRenderWindow().render();\n        });\n        this.connect(this.model.properties.interpolation.change, () => {\n            this._set_interpolation(this.model.interpolation);\n            this._vtk_renwin.getRenderWindow().render();\n        });\n        this.connect(this.model.properties.controller_expanded.change, () => {\n            if (this._controllerWidget != null)\n                this._controllerWidget.setExpanded(this.model.controller_expanded);\n        });\n        this.connect(this.model.properties.nan_opacity.change, () => {\n            const scalar_opacity = this.image_actor_i.getProperty().getScalarOpacity();\n            scalar_opacity.get([\"nodes\"]).nodes[0].y = this.model.nan_opacity;\n            scalar_opacity.modified();\n            this._vtk_renwin.getRenderWindow().render();\n        });\n    }\n    render() {\n        this._vtk_renwin = null;\n        this._orientationWidget = null;\n        this._axes = null;\n        super.render();\n        this._create_orientation_widget();\n        this._set_axes();\n        this._vtk_renwin.getRenderer().resetCamera();\n        if (Object.keys(this.model.camera).length)\n            this._set_camera_state();\n        this._get_camera_state();\n    }\n    invalidate_render() {\n        this._vtk_renwin = null;\n        super.invalidate_render();\n    }\n    init_vtk_renwin() {\n        this._vtk_renwin = util_1.vtkns.FullScreenRenderWindow.newInstance({\n            rootContainer: this.shadow_el,\n            container: this._vtk_container,\n        });\n    }\n    plot() {\n        this._controllerWidget = util_1.vtkns.VolumeController.newInstance({\n            size: [400, 150],\n            rescaleColorMap: this.model.rescale,\n        });\n        this._plot_volume();\n        this._plot_slices();\n        this._controllerWidget.setupContent(this._vtk_renwin.getRenderWindow(), this.volume, true);\n        this._controllerWidget.setContainer(this.el);\n        this._controllerWidget.setExpanded(this.model.controller_expanded);\n        this._connect_js_controls();\n        this._vtk_renwin.getRenderWindow().getInteractor();\n        this._vtk_renwin.getRenderWindow().getInteractor().setDesiredUpdateRate(45);\n        this._set_volume_visibility(this.model.display_volume);\n        this._set_slices_visibility(this.model.display_slices);\n        this._vtk_renwin\n            .getRenderer()\n            .setBackground(...(0, util_1.hexToRGB)(this.model.render_background));\n        this._set_interpolation(this.model.interpolation);\n        this._set_camera_state();\n    }\n    get vtk_image_data() {\n        if (!this._vtk_image_data)\n            this._vtk_image_data = (0, util_1.data2VTKImageData)(this.model.data);\n        return this._vtk_image_data;\n    }\n    get volume() {\n        return this._vtk_renwin.getRenderer().getVolumes()[0];\n    }\n    get image_actor_i() {\n        return this._vtk_renwin.getRenderer().getActors()[0];\n    }\n    get image_actor_j() {\n        return this._vtk_renwin.getRenderer().getActors()[1];\n    }\n    get image_actor_k() {\n        return this._vtk_renwin.getRenderer().getActors()[2];\n    }\n    get shadow_selector() {\n        return this.el.querySelector(\".js-shadow\");\n    }\n    get edge_gradient_slider() {\n        return this.el.querySelector(\".js-edge\");\n    }\n    get sampling_slider() {\n        return this.el.querySelector(\".js-spacing\");\n    }\n    get colormap_selector() {\n        return this.el.querySelector(\".js-color-preset\");\n    }\n    _connect_js_controls() {\n        const { el: controller_el } = this._controllerWidget.get('el');\n        if (controller_el !== undefined) {\n            const controller_button = controller_el.querySelector('.js-button');\n            controller_button.addEventListener('click', () => this.model.controller_expanded = this._controllerWidget.getExpanded());\n        }\n        // Colormap selector\n        this.colormap_selector.addEventListener(\"change\", () => {\n            this.model.colormap = this.colormap_selector.value;\n        });\n        if (!this.model.colormap)\n            this.model.colormap = this.colormap_selector.value;\n        else\n            this.model.properties.colormap.change.emit();\n        // Shadow selector\n        this.shadow_selector.addEventListener(\"change\", () => {\n            this.model.shadow = !!Number(this.shadow_selector.value);\n        });\n        if ((this.model.shadow = !!Number(this.shadow_selector.value)))\n            this.model.properties.shadow.change.emit();\n        // Sampling slider\n        this.sampling_slider.addEventListener(\"input\", () => {\n            const js_sampling_value = Number(this.sampling_slider.value);\n            if (Math.abs(this.model.sampling - js_sampling_value) >= 5e-3)\n                this.model.sampling = js_sampling_value;\n        });\n        if (Math.abs(this.model.sampling - Number(this.shadow_selector.value)) >= 5e-3)\n            this.model.properties.sampling.change.emit();\n        // Edge Gradient slider\n        this.edge_gradient_slider.addEventListener(\"input\", () => {\n            const js_edge_gradient_value = Number(this.edge_gradient_slider.value);\n            if (Math.abs(this.model.edge_gradient - js_edge_gradient_value) >= 5e-3)\n                this.model.edge_gradient = js_edge_gradient_value;\n        });\n        if (Math.abs(this.model.edge_gradient - Number(this.edge_gradient_slider.value)) >= 5e-3)\n            this.model.properties.edge_gradient.change.emit();\n    }\n    _plot_slices() {\n        const source = this._vtk_image_data;\n        const image_actor_i = util_1.vtkns.ImageSlice.newInstance();\n        const image_actor_j = util_1.vtkns.ImageSlice.newInstance();\n        const image_actor_k = util_1.vtkns.ImageSlice.newInstance();\n        const image_mapper_i = util_1.vtkns.ImageMapper.newInstance();\n        const image_mapper_j = util_1.vtkns.ImageMapper.newInstance();\n        const image_mapper_k = util_1.vtkns.ImageMapper.newInstance();\n        image_mapper_i.setInputData(source);\n        image_mapper_i.setISlice(this.model.slice_i);\n        image_actor_i.setMapper(image_mapper_i);\n        image_mapper_j.setInputData(source);\n        image_mapper_j.setJSlice(this.model.slice_j);\n        image_actor_j.setMapper(image_mapper_j);\n        image_mapper_k.setInputData(source);\n        image_mapper_k.setKSlice(this.model.slice_k);\n        image_actor_k.setMapper(image_mapper_k);\n        // set_color and opacity\n        const piecewiseFunction = util_1.vtkns.PiecewiseFunction.newInstance();\n        const lookupTable = this.volume.getProperty().getRGBTransferFunction(0);\n        const range = this.volume.getMapper().getInputData().getPointData().getScalars().getRange();\n        piecewiseFunction.removeAllPoints();\n        piecewiseFunction.addPoint(range[0] - 1, this.model.nan_opacity);\n        piecewiseFunction.addPoint(range[0], 1);\n        piecewiseFunction.addPoint(range[1], 1);\n        const property = image_actor_i.getProperty();\n        image_actor_j.setProperty(property);\n        image_actor_k.setProperty(property);\n        property.setRGBTransferFunction(lookupTable);\n        property.setScalarOpacity(piecewiseFunction);\n        const renderer = this._vtk_renwin.getRenderer();\n        renderer.addActor(image_actor_i);\n        renderer.addActor(image_actor_j);\n        renderer.addActor(image_actor_k);\n    }\n    _plot_volume() {\n        //Create vtk volume and add it to the scene\n        const source = this.vtk_image_data;\n        const actor = util_1.vtkns.Volume.newInstance();\n        const mapper = util_1.vtkns.VolumeMapper.newInstance();\n        actor.setMapper(mapper);\n        mapper.setInputData(source);\n        const dataArray = source.getPointData().getScalars() || source.getPointData().getArrays()[0];\n        const dataRange = dataArray.getRange();\n        const lookupTable = util_1.vtkns.ColorTransferFunction.newInstance();\n        if (this.model.colormap != null) {\n            const preset = util_1.vtkns.ColorTransferFunction.vtkColorMaps.getPresetByName(this.model.colormap);\n            lookupTable.applyColorMap(preset);\n        }\n        lookupTable.onModified(() => (this.model.mapper = (0, util_1.vtkLutToMapper)(lookupTable)));\n        const piecewiseFunction = util_1.vtkns.PiecewiseFunction.newInstance();\n        const sampleDistance = 0.7 *\n            Math.sqrt(source\n                .getSpacing()\n                .map((v) => v * v)\n                .reduce((a, b) => a + b, 0));\n        mapper.setSampleDistance(sampleDistance);\n        actor.getProperty().setRGBTransferFunction(0, lookupTable);\n        actor.getProperty().setScalarOpacity(0, piecewiseFunction);\n        actor.getProperty().setInterpolationTypeToFastLinear();\n        // actor.getProperty().setInterpolationTypeToLinear();\n        // For better looking volume rendering\n        // - distance in world coordinates a scalar opacity of 1.0\n        actor\n            .getProperty()\n            .setScalarOpacityUnitDistance(0, util_1.vtkns.BoundingBox.getDiagonalLength(source.getBounds()) /\n            Math.max(...source.getDimensions()));\n        // - control how we emphasize surface boundaries\n        //  => max should be around the average gradient magnitude for the\n        //     volume or maybe average plus one std dev of the gradient magnitude\n        //     (adjusted for spacing, this is a world coordinate gradient, not a\n        //     pixel gradient)\n        //  => max hack: (dataRange[1] - dataRange[0]) * 0.05\n        actor.getProperty().setGradientOpacityMinimumValue(0, 0);\n        actor\n            .getProperty()\n            .setGradientOpacityMaximumValue(0, (dataRange[1] - dataRange[0]) * 0.05);\n        // - Use shading based on gradient\n        actor.getProperty().setShade(this.model.shadow);\n        actor.getProperty().setUseGradientOpacity(0, true);\n        // - generic good default\n        actor.getProperty().setGradientOpacityMinimumOpacity(0, 0.0);\n        actor.getProperty().setGradientOpacityMaximumOpacity(0, 1.0);\n        actor.getProperty().setAmbient(this.model.ambient);\n        actor.getProperty().setDiffuse(this.model.diffuse);\n        actor.getProperty().setSpecular(this.model.specular);\n        actor.getProperty().setSpecularPower(this.model.specular_power);\n        this._vtk_renwin.getRenderer().addVolume(actor);\n    }\n    _set_interpolation(interpolation) {\n        if (interpolation == \"fast_linear\") {\n            this.volume.getProperty().setInterpolationTypeToFastLinear();\n            this.image_actor_i.getProperty().setInterpolationTypeToLinear();\n        }\n        else if (interpolation == \"linear\") {\n            this.volume.getProperty().setInterpolationTypeToLinear();\n            this.image_actor_i.getProperty().setInterpolationTypeToLinear();\n        }\n        else {\n            //nearest\n            this.volume.getProperty().setInterpolationTypeToNearest();\n            this.image_actor_i.getProperty().setInterpolationTypeToNearest();\n        }\n    }\n    _set_slices_visibility(visibility) {\n        this.image_actor_i.setVisibility(visibility);\n        this.image_actor_j.setVisibility(visibility);\n        this.image_actor_k.setVisibility(visibility);\n    }\n    _set_volume_visibility(visibility) {\n        this.volume.setVisibility(visibility);\n    }\n}\nexports.VTKVolumePlotView = VTKVolumePlotView;\nVTKVolumePlotView.__name__ = \"VTKVolumePlotView\";\nclass VTKVolumePlot extends vtklayout_1.AbstractVTKPlot {\n    constructor(attrs) {\n        super(attrs);\n    }\n}\nexports.VTKVolumePlot = VTKVolumePlot;\n_a = VTKVolumePlot;\nVTKVolumePlot.__name__ = \"VTKVolumePlot\";\n(() => {\n    _a.prototype.default_view = VTKVolumePlotView;\n    _a.define(({ Any, Array, Boolean, Int, Number, String, Struct }) => ({\n        ambient: [Number, 0.2],\n        colormap: [String],\n        data: [Any],\n        diffuse: [Number, 0.7],\n        display_slices: [Boolean, false],\n        display_volume: [Boolean, true],\n        edge_gradient: [Number, 0.2],\n        interpolation: [util_1.Interpolation, 'fast_linear'],\n        mapper: [Struct({ palette: Array(String), low: Number, high: Number }), { palette: [], low: 0, high: 0 }],\n        nan_opacity: [Number, 1],\n        render_background: [String, '#52576e'],\n        rescale: [Boolean, false],\n        sampling: [Number, 0.4],\n        shadow: [Boolean, true],\n        slice_i: [Int, 0],\n        slice_j: [Int, 0],\n        slice_k: [Int, 0],\n        specular: [Number, 0.3],\n        specular_power: [Number, 8.0],\n        controller_expanded: [Boolean, true],\n    }));\n    _a.override({\n        height: 300,\n        width: 300,\n    });\n})();\n//# sourceMappingURL=vtkvolume.js.map\n","type":"js","dependency_paths":[["./vtklayout","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/vtklayout.js"],["./util","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/util.js"]],"dependency_map":[],"exported":[{"type":"named","name":"VTKVolumePlotView"},{"type":"named","name":"VTKVolumePlot"}],"externals":[],"shims":[]},"code":{"source":"/* models/vtk/vtkvolume.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const vtklayout_1 = require(\"1de1ccb7ff\") /* ./vtklayout */;\n    const util_1 = require(\"a76a9b7c23\") /* ./util */;\n    class VTKVolumePlotView extends vtklayout_1.AbstractVTKView {\n        connect_signals() {\n            super.connect_signals();\n            this.connect(this.model.properties.data.change, () => {\n                this._vtk_image_data = (0, util_1.data2VTKImageData)(this.model.data);\n                this.invalidate_render();\n            });\n            this.connect(this.model.properties.colormap.change, () => {\n                this.colormap_selector.value = this.model.colormap;\n                const event = new Event(\"change\");\n                this.colormap_selector.dispatchEvent(event);\n            });\n            this.connect(this.model.properties.shadow.change, () => {\n                this.shadow_selector.value = this.model.shadow ? \"1\" : \"0\";\n                const event = new Event(\"change\");\n                this.shadow_selector.dispatchEvent(event);\n            });\n            this.connect(this.model.properties.sampling.change, () => {\n                this.sampling_slider.value = this.model.sampling.toFixed(2);\n                const event = new Event(\"input\");\n                this.sampling_slider.dispatchEvent(event);\n            });\n            this.connect(this.model.properties.edge_gradient.change, () => {\n                this.edge_gradient_slider.value = this.model.edge_gradient.toFixed(2);\n                const event = new Event(\"input\");\n                this.edge_gradient_slider.dispatchEvent(event);\n            });\n            this.connect(this.model.properties.rescale.change, () => {\n                this._controllerWidget.setRescaleColorMap(this.model.rescale);\n                this._vtk_renwin.getRenderWindow().render();\n            });\n            this.connect(this.model.properties.ambient.change, () => {\n                this.volume.getProperty().setAmbient(this.model.ambient);\n                this._vtk_renwin.getRenderWindow().render();\n            });\n            this.connect(this.model.properties.diffuse.change, () => {\n                this.volume.getProperty().setDiffuse(this.model.diffuse);\n                this._vtk_renwin.getRenderWindow().render();\n            });\n            this.connect(this.model.properties.camera.change, () => {\n                if (!this._setting_camera) {\n                    this._set_camera_state();\n                    this._vtk_renwin.getRenderWindow().render();\n                }\n            });\n            this.connect(this.model.properties.specular.change, () => {\n                this.volume.getProperty().setSpecular(this.model.specular);\n                this._vtk_renwin.getRenderWindow().render();\n            });\n            this.connect(this.model.properties.specular_power.change, () => {\n                this.volume.getProperty().setSpecularPower(this.model.specular_power);\n                this._vtk_renwin.getRenderWindow().render();\n            });\n            this.connect(this.model.properties.display_volume.change, () => {\n                this._set_volume_visibility(this.model.display_volume);\n                this._vtk_renwin.getRenderWindow().render();\n            });\n            this.connect(this.model.properties.display_slices.change, () => {\n                this._set_slices_visibility(this.model.display_slices);\n                this._vtk_renwin.getRenderWindow().render();\n            });\n            this.connect(this.model.properties.slice_i.change, () => {\n                if (this.image_actor_i !== undefined) {\n                    this.image_actor_i.getMapper().setISlice(this.model.slice_i);\n                    this._vtk_renwin.getRenderWindow().render();\n                }\n            });\n            this.connect(this.model.properties.slice_j.change, () => {\n                if (this.image_actor_j !== undefined) {\n                    this.image_actor_j.getMapper().setJSlice(this.model.slice_j);\n                    this._vtk_renwin.getRenderWindow().render();\n                }\n            });\n            this.connect(this.model.properties.slice_k.change, () => {\n                if (this.image_actor_k !== undefined) {\n                    this.image_actor_k.getMapper().setKSlice(this.model.slice_k);\n                    this._vtk_renwin.getRenderWindow().render();\n                }\n            });\n            this.connect(this.model.properties.render_background.change, () => {\n                this._vtk_renwin\n                    .getRenderer()\n                    .setBackground(...(0, util_1.hexToRGB)(this.model.render_background));\n                this._vtk_renwin.getRenderWindow().render();\n            });\n            this.connect(this.model.properties.interpolation.change, () => {\n                this._set_interpolation(this.model.interpolation);\n                this._vtk_renwin.getRenderWindow().render();\n            });\n            this.connect(this.model.properties.controller_expanded.change, () => {\n                if (this._controllerWidget != null)\n                    this._controllerWidget.setExpanded(this.model.controller_expanded);\n            });\n            this.connect(this.model.properties.nan_opacity.change, () => {\n                const scalar_opacity = this.image_actor_i.getProperty().getScalarOpacity();\n                scalar_opacity.get([\"nodes\"]).nodes[0].y = this.model.nan_opacity;\n                scalar_opacity.modified();\n                this._vtk_renwin.getRenderWindow().render();\n            });\n        }\n        render() {\n            this._vtk_renwin = null;\n            this._orientationWidget = null;\n            this._axes = null;\n            super.render();\n            this._create_orientation_widget();\n            this._set_axes();\n            this._vtk_renwin.getRenderer().resetCamera();\n            if (Object.keys(this.model.camera).length)\n                this._set_camera_state();\n            this._get_camera_state();\n        }\n        invalidate_render() {\n            this._vtk_renwin = null;\n            super.invalidate_render();\n        }\n        init_vtk_renwin() {\n            this._vtk_renwin = util_1.vtkns.FullScreenRenderWindow.newInstance({\n                rootContainer: this.shadow_el,\n                container: this._vtk_container,\n            });\n        }\n        plot() {\n            this._controllerWidget = util_1.vtkns.VolumeController.newInstance({\n                size: [400, 150],\n                rescaleColorMap: this.model.rescale,\n            });\n            this._plot_volume();\n            this._plot_slices();\n            this._controllerWidget.setupContent(this._vtk_renwin.getRenderWindow(), this.volume, true);\n            this._controllerWidget.setContainer(this.el);\n            this._controllerWidget.setExpanded(this.model.controller_expanded);\n            this._connect_js_controls();\n            this._vtk_renwin.getRenderWindow().getInteractor();\n            this._vtk_renwin.getRenderWindow().getInteractor().setDesiredUpdateRate(45);\n            this._set_volume_visibility(this.model.display_volume);\n            this._set_slices_visibility(this.model.display_slices);\n            this._vtk_renwin\n                .getRenderer()\n                .setBackground(...(0, util_1.hexToRGB)(this.model.render_background));\n            this._set_interpolation(this.model.interpolation);\n            this._set_camera_state();\n        }\n        get vtk_image_data() {\n            if (!this._vtk_image_data)\n                this._vtk_image_data = (0, util_1.data2VTKImageData)(this.model.data);\n            return this._vtk_image_data;\n        }\n        get volume() {\n            return this._vtk_renwin.getRenderer().getVolumes()[0];\n        }\n        get image_actor_i() {\n            return this._vtk_renwin.getRenderer().getActors()[0];\n        }\n        get image_actor_j() {\n            return this._vtk_renwin.getRenderer().getActors()[1];\n        }\n        get image_actor_k() {\n            return this._vtk_renwin.getRenderer().getActors()[2];\n        }\n        get shadow_selector() {\n            return this.el.querySelector(\".js-shadow\");\n        }\n        get edge_gradient_slider() {\n            return this.el.querySelector(\".js-edge\");\n        }\n        get sampling_slider() {\n            return this.el.querySelector(\".js-spacing\");\n        }\n        get colormap_selector() {\n            return this.el.querySelector(\".js-color-preset\");\n        }\n        _connect_js_controls() {\n            const { el: controller_el } = this._controllerWidget.get('el');\n            if (controller_el !== undefined) {\n                const controller_button = controller_el.querySelector('.js-button');\n                controller_button.addEventListener('click', () => this.model.controller_expanded = this._controllerWidget.getExpanded());\n            }\n            // Colormap selector\n            this.colormap_selector.addEventListener(\"change\", () => {\n                this.model.colormap = this.colormap_selector.value;\n            });\n            if (!this.model.colormap)\n                this.model.colormap = this.colormap_selector.value;\n            else\n                this.model.properties.colormap.change.emit();\n            // Shadow selector\n            this.shadow_selector.addEventListener(\"change\", () => {\n                this.model.shadow = !!Number(this.shadow_selector.value);\n            });\n            if ((this.model.shadow = !!Number(this.shadow_selector.value)))\n                this.model.properties.shadow.change.emit();\n            // Sampling slider\n            this.sampling_slider.addEventListener(\"input\", () => {\n                const js_sampling_value = Number(this.sampling_slider.value);\n                if (Math.abs(this.model.sampling - js_sampling_value) >= 5e-3)\n                    this.model.sampling = js_sampling_value;\n            });\n            if (Math.abs(this.model.sampling - Number(this.shadow_selector.value)) >= 5e-3)\n                this.model.properties.sampling.change.emit();\n            // Edge Gradient slider\n            this.edge_gradient_slider.addEventListener(\"input\", () => {\n                const js_edge_gradient_value = Number(this.edge_gradient_slider.value);\n                if (Math.abs(this.model.edge_gradient - js_edge_gradient_value) >= 5e-3)\n                    this.model.edge_gradient = js_edge_gradient_value;\n            });\n            if (Math.abs(this.model.edge_gradient - Number(this.edge_gradient_slider.value)) >= 5e-3)\n                this.model.properties.edge_gradient.change.emit();\n        }\n        _plot_slices() {\n            const source = this._vtk_image_data;\n            const image_actor_i = util_1.vtkns.ImageSlice.newInstance();\n            const image_actor_j = util_1.vtkns.ImageSlice.newInstance();\n            const image_actor_k = util_1.vtkns.ImageSlice.newInstance();\n            const image_mapper_i = util_1.vtkns.ImageMapper.newInstance();\n            const image_mapper_j = util_1.vtkns.ImageMapper.newInstance();\n            const image_mapper_k = util_1.vtkns.ImageMapper.newInstance();\n            image_mapper_i.setInputData(source);\n            image_mapper_i.setISlice(this.model.slice_i);\n            image_actor_i.setMapper(image_mapper_i);\n            image_mapper_j.setInputData(source);\n            image_mapper_j.setJSlice(this.model.slice_j);\n            image_actor_j.setMapper(image_mapper_j);\n            image_mapper_k.setInputData(source);\n            image_mapper_k.setKSlice(this.model.slice_k);\n            image_actor_k.setMapper(image_mapper_k);\n            // set_color and opacity\n            const piecewiseFunction = util_1.vtkns.PiecewiseFunction.newInstance();\n            const lookupTable = this.volume.getProperty().getRGBTransferFunction(0);\n            const range = this.volume.getMapper().getInputData().getPointData().getScalars().getRange();\n            piecewiseFunction.removeAllPoints();\n            piecewiseFunction.addPoint(range[0] - 1, this.model.nan_opacity);\n            piecewiseFunction.addPoint(range[0], 1);\n            piecewiseFunction.addPoint(range[1], 1);\n            const property = image_actor_i.getProperty();\n            image_actor_j.setProperty(property);\n            image_actor_k.setProperty(property);\n            property.setRGBTransferFunction(lookupTable);\n            property.setScalarOpacity(piecewiseFunction);\n            const renderer = this._vtk_renwin.getRenderer();\n            renderer.addActor(image_actor_i);\n            renderer.addActor(image_actor_j);\n            renderer.addActor(image_actor_k);\n        }\n        _plot_volume() {\n            //Create vtk volume and add it to the scene\n            const source = this.vtk_image_data;\n            const actor = util_1.vtkns.Volume.newInstance();\n            const mapper = util_1.vtkns.VolumeMapper.newInstance();\n            actor.setMapper(mapper);\n            mapper.setInputData(source);\n            const dataArray = source.getPointData().getScalars() || source.getPointData().getArrays()[0];\n            const dataRange = dataArray.getRange();\n            const lookupTable = util_1.vtkns.ColorTransferFunction.newInstance();\n            if (this.model.colormap != null) {\n                const preset = util_1.vtkns.ColorTransferFunction.vtkColorMaps.getPresetByName(this.model.colormap);\n                lookupTable.applyColorMap(preset);\n            }\n            lookupTable.onModified(() => (this.model.mapper = (0, util_1.vtkLutToMapper)(lookupTable)));\n            const piecewiseFunction = util_1.vtkns.PiecewiseFunction.newInstance();\n            const sampleDistance = 0.7 *\n                Math.sqrt(source\n                    .getSpacing()\n                    .map((v) => v * v)\n                    .reduce((a, b) => a + b, 0));\n            mapper.setSampleDistance(sampleDistance);\n            actor.getProperty().setRGBTransferFunction(0, lookupTable);\n            actor.getProperty().setScalarOpacity(0, piecewiseFunction);\n            actor.getProperty().setInterpolationTypeToFastLinear();\n            // actor.getProperty().setInterpolationTypeToLinear();\n            // For better looking volume rendering\n            // - distance in world coordinates a scalar opacity of 1.0\n            actor\n                .getProperty()\n                .setScalarOpacityUnitDistance(0, util_1.vtkns.BoundingBox.getDiagonalLength(source.getBounds()) /\n                Math.max(...source.getDimensions()));\n            // - control how we emphasize surface boundaries\n            //  => max should be around the average gradient magnitude for the\n            //     volume or maybe average plus one std dev of the gradient magnitude\n            //     (adjusted for spacing, this is a world coordinate gradient, not a\n            //     pixel gradient)\n            //  => max hack: (dataRange[1] - dataRange[0]) * 0.05\n            actor.getProperty().setGradientOpacityMinimumValue(0, 0);\n            actor\n                .getProperty()\n                .setGradientOpacityMaximumValue(0, (dataRange[1] - dataRange[0]) * 0.05);\n            // - Use shading based on gradient\n            actor.getProperty().setShade(this.model.shadow);\n            actor.getProperty().setUseGradientOpacity(0, true);\n            // - generic good default\n            actor.getProperty().setGradientOpacityMinimumOpacity(0, 0.0);\n            actor.getProperty().setGradientOpacityMaximumOpacity(0, 1.0);\n            actor.getProperty().setAmbient(this.model.ambient);\n            actor.getProperty().setDiffuse(this.model.diffuse);\n            actor.getProperty().setSpecular(this.model.specular);\n            actor.getProperty().setSpecularPower(this.model.specular_power);\n            this._vtk_renwin.getRenderer().addVolume(actor);\n        }\n        _set_interpolation(interpolation) {\n            if (interpolation == \"fast_linear\") {\n                this.volume.getProperty().setInterpolationTypeToFastLinear();\n                this.image_actor_i.getProperty().setInterpolationTypeToLinear();\n            }\n            else if (interpolation == \"linear\") {\n                this.volume.getProperty().setInterpolationTypeToLinear();\n                this.image_actor_i.getProperty().setInterpolationTypeToLinear();\n            }\n            else {\n                //nearest\n                this.volume.getProperty().setInterpolationTypeToNearest();\n                this.image_actor_i.getProperty().setInterpolationTypeToNearest();\n            }\n        }\n        _set_slices_visibility(visibility) {\n            this.image_actor_i.setVisibility(visibility);\n            this.image_actor_j.setVisibility(visibility);\n            this.image_actor_k.setVisibility(visibility);\n        }\n        _set_volume_visibility(visibility) {\n            this.volume.setVisibility(visibility);\n        }\n    }\n    exports.VTKVolumePlotView = VTKVolumePlotView;\n    VTKVolumePlotView.__name__ = \"VTKVolumePlotView\";\n    class VTKVolumePlot extends vtklayout_1.AbstractVTKPlot {\n        constructor(attrs) {\n            super(attrs);\n        }\n    }\n    exports.VTKVolumePlot = VTKVolumePlot;\n    _a = VTKVolumePlot;\n    VTKVolumePlot.__name__ = \"VTKVolumePlot\";\n    (() => {\n        _a.prototype.default_view = VTKVolumePlotView;\n        _a.define(({ Any, Array, Boolean, Int, Number, String, Struct }) => ({\n            ambient: [Number, 0.2],\n            colormap: [String],\n            data: [Any],\n            diffuse: [Number, 0.7],\n            display_slices: [Boolean, false],\n            display_volume: [Boolean, true],\n            edge_gradient: [Number, 0.2],\n            interpolation: [util_1.Interpolation, 'fast_linear'],\n            mapper: [Struct({ palette: Array(String), low: Number, high: Number }), { palette: [], low: 0, high: 0 }],\n            nan_opacity: [Number, 1],\n            render_background: [String, '#52576e'],\n            rescale: [Boolean, false],\n            sampling: [Number, 0.4],\n            shadow: [Boolean, true],\n            slice_i: [Int, 0],\n            slice_j: [Int, 0],\n            slice_k: [Int, 0],\n            specular: [Number, 0.3],\n            specular_power: [Number, 8.0],\n            controller_expanded: [Boolean, true],\n        }));\n        _a.override({\n            height: 300,\n            width: 300,\n        });\n    })();\n}\n","min_source":"function _(e,t,i,s,n){var r;s();const o=e(\"1de1ccb7ff\"),a=e(\"a76a9b7c23\");class l extends o.AbstractVTKView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.data.change,(()=>{this._vtk_image_data=(0,a.data2VTKImageData)(this.model.data),this.invalidate_render()})),this.connect(this.model.properties.colormap.change,(()=>{this.colormap_selector.value=this.model.colormap;const e=new Event(\"change\");this.colormap_selector.dispatchEvent(e)})),this.connect(this.model.properties.shadow.change,(()=>{this.shadow_selector.value=this.model.shadow?\"1\":\"0\";const e=new Event(\"change\");this.shadow_selector.dispatchEvent(e)})),this.connect(this.model.properties.sampling.change,(()=>{this.sampling_slider.value=this.model.sampling.toFixed(2);const e=new Event(\"input\");this.sampling_slider.dispatchEvent(e)})),this.connect(this.model.properties.edge_gradient.change,(()=>{this.edge_gradient_slider.value=this.model.edge_gradient.toFixed(2);const e=new Event(\"input\");this.edge_gradient_slider.dispatchEvent(e)})),this.connect(this.model.properties.rescale.change,(()=>{this._controllerWidget.setRescaleColorMap(this.model.rescale),this._vtk_renwin.getRenderWindow().render()})),this.connect(this.model.properties.ambient.change,(()=>{this.volume.getProperty().setAmbient(this.model.ambient),this._vtk_renwin.getRenderWindow().render()})),this.connect(this.model.properties.diffuse.change,(()=>{this.volume.getProperty().setDiffuse(this.model.diffuse),this._vtk_renwin.getRenderWindow().render()})),this.connect(this.model.properties.camera.change,(()=>{this._setting_camera||(this._set_camera_state(),this._vtk_renwin.getRenderWindow().render())})),this.connect(this.model.properties.specular.change,(()=>{this.volume.getProperty().setSpecular(this.model.specular),this._vtk_renwin.getRenderWindow().render()})),this.connect(this.model.properties.specular_power.change,(()=>{this.volume.getProperty().setSpecularPower(this.model.specular_power),this._vtk_renwin.getRenderWindow().render()})),this.connect(this.model.properties.display_volume.change,(()=>{this._set_volume_visibility(this.model.display_volume),this._vtk_renwin.getRenderWindow().render()})),this.connect(this.model.properties.display_slices.change,(()=>{this._set_slices_visibility(this.model.display_slices),this._vtk_renwin.getRenderWindow().render()})),this.connect(this.model.properties.slice_i.change,(()=>{void 0!==this.image_actor_i&&(this.image_actor_i.getMapper().setISlice(this.model.slice_i),this._vtk_renwin.getRenderWindow().render())})),this.connect(this.model.properties.slice_j.change,(()=>{void 0!==this.image_actor_j&&(this.image_actor_j.getMapper().setJSlice(this.model.slice_j),this._vtk_renwin.getRenderWindow().render())})),this.connect(this.model.properties.slice_k.change,(()=>{void 0!==this.image_actor_k&&(this.image_actor_k.getMapper().setKSlice(this.model.slice_k),this._vtk_renwin.getRenderWindow().render())})),this.connect(this.model.properties.render_background.change,(()=>{this._vtk_renwin.getRenderer().setBackground(...(0,a.hexToRGB)(this.model.render_background)),this._vtk_renwin.getRenderWindow().render()})),this.connect(this.model.properties.interpolation.change,(()=>{this._set_interpolation(this.model.interpolation),this._vtk_renwin.getRenderWindow().render()})),this.connect(this.model.properties.controller_expanded.change,(()=>{null!=this._controllerWidget&&this._controllerWidget.setExpanded(this.model.controller_expanded)})),this.connect(this.model.properties.nan_opacity.change,(()=>{const e=this.image_actor_i.getProperty().getScalarOpacity();e.get([\"nodes\"]).nodes[0].y=this.model.nan_opacity,e.modified(),this._vtk_renwin.getRenderWindow().render()}))}render(){this._vtk_renwin=null,this._orientationWidget=null,this._axes=null,super.render(),this._create_orientation_widget(),this._set_axes(),this._vtk_renwin.getRenderer().resetCamera(),Object.keys(this.model.camera).length&&this._set_camera_state(),this._get_camera_state()}invalidate_render(){this._vtk_renwin=null,super.invalidate_render()}init_vtk_renwin(){this._vtk_renwin=a.vtkns.FullScreenRenderWindow.newInstance({rootContainer:this.shadow_el,container:this._vtk_container})}plot(){this._controllerWidget=a.vtkns.VolumeController.newInstance({size:[400,150],rescaleColorMap:this.model.rescale}),this._plot_volume(),this._plot_slices(),this._controllerWidget.setupContent(this._vtk_renwin.getRenderWindow(),this.volume,!0),this._controllerWidget.setContainer(this.el),this._controllerWidget.setExpanded(this.model.controller_expanded),this._connect_js_controls(),this._vtk_renwin.getRenderWindow().getInteractor(),this._vtk_renwin.getRenderWindow().getInteractor().setDesiredUpdateRate(45),this._set_volume_visibility(this.model.display_volume),this._set_slices_visibility(this.model.display_slices),this._vtk_renwin.getRenderer().setBackground(...(0,a.hexToRGB)(this.model.render_background)),this._set_interpolation(this.model.interpolation),this._set_camera_state()}get vtk_image_data(){return this._vtk_image_data||(this._vtk_image_data=(0,a.data2VTKImageData)(this.model.data)),this._vtk_image_data}get volume(){return this._vtk_renwin.getRenderer().getVolumes()[0]}get image_actor_i(){return this._vtk_renwin.getRenderer().getActors()[0]}get image_actor_j(){return this._vtk_renwin.getRenderer().getActors()[1]}get image_actor_k(){return this._vtk_renwin.getRenderer().getActors()[2]}get shadow_selector(){return this.el.querySelector(\".js-shadow\")}get edge_gradient_slider(){return this.el.querySelector(\".js-edge\")}get sampling_slider(){return this.el.querySelector(\".js-spacing\")}get colormap_selector(){return this.el.querySelector(\".js-color-preset\")}_connect_js_controls(){const{el:e}=this._controllerWidget.get(\"el\");if(void 0!==e){e.querySelector(\".js-button\").addEventListener(\"click\",(()=>this.model.controller_expanded=this._controllerWidget.getExpanded()))}this.colormap_selector.addEventListener(\"change\",(()=>{this.model.colormap=this.colormap_selector.value})),this.model.colormap?this.model.properties.colormap.change.emit():this.model.colormap=this.colormap_selector.value,this.shadow_selector.addEventListener(\"change\",(()=>{this.model.shadow=!!Number(this.shadow_selector.value)})),(this.model.shadow=!!Number(this.shadow_selector.value))&&this.model.properties.shadow.change.emit(),this.sampling_slider.addEventListener(\"input\",(()=>{const e=Number(this.sampling_slider.value);Math.abs(this.model.sampling-e)>=.005&&(this.model.sampling=e)})),Math.abs(this.model.sampling-Number(this.shadow_selector.value))>=.005&&this.model.properties.sampling.change.emit(),this.edge_gradient_slider.addEventListener(\"input\",(()=>{const e=Number(this.edge_gradient_slider.value);Math.abs(this.model.edge_gradient-e)>=.005&&(this.model.edge_gradient=e)})),Math.abs(this.model.edge_gradient-Number(this.edge_gradient_slider.value))>=.005&&this.model.properties.edge_gradient.change.emit()}_plot_slices(){const e=this._vtk_image_data,t=a.vtkns.ImageSlice.newInstance(),i=a.vtkns.ImageSlice.newInstance(),s=a.vtkns.ImageSlice.newInstance(),n=a.vtkns.ImageMapper.newInstance(),r=a.vtkns.ImageMapper.newInstance(),o=a.vtkns.ImageMapper.newInstance();n.setInputData(e),n.setISlice(this.model.slice_i),t.setMapper(n),r.setInputData(e),r.setJSlice(this.model.slice_j),i.setMapper(r),o.setInputData(e),o.setKSlice(this.model.slice_k),s.setMapper(o);const l=a.vtkns.PiecewiseFunction.newInstance(),d=this.volume.getProperty().getRGBTransferFunction(0),c=this.volume.getMapper().getInputData().getPointData().getScalars().getRange();l.removeAllPoints(),l.addPoint(c[0]-1,this.model.nan_opacity),l.addPoint(c[0],1),l.addPoint(c[1],1);const h=t.getProperty();i.setProperty(h),s.setProperty(h),h.setRGBTransferFunction(d),h.setScalarOpacity(l);const _=this._vtk_renwin.getRenderer();_.addActor(t),_.addActor(i),_.addActor(s)}_plot_volume(){const e=this.vtk_image_data,t=a.vtkns.Volume.newInstance(),i=a.vtkns.VolumeMapper.newInstance();t.setMapper(i),i.setInputData(e);const s=(e.getPointData().getScalars()||e.getPointData().getArrays()[0]).getRange(),n=a.vtkns.ColorTransferFunction.newInstance();if(null!=this.model.colormap){const e=a.vtkns.ColorTransferFunction.vtkColorMaps.getPresetByName(this.model.colormap);n.applyColorMap(e)}n.onModified((()=>this.model.mapper=(0,a.vtkLutToMapper)(n)));const r=a.vtkns.PiecewiseFunction.newInstance(),o=.7*Math.sqrt(e.getSpacing().map((e=>e*e)).reduce(((e,t)=>e+t),0));i.setSampleDistance(o),t.getProperty().setRGBTransferFunction(0,n),t.getProperty().setScalarOpacity(0,r),t.getProperty().setInterpolationTypeToFastLinear(),t.getProperty().setScalarOpacityUnitDistance(0,a.vtkns.BoundingBox.getDiagonalLength(e.getBounds())/Math.max(...e.getDimensions())),t.getProperty().setGradientOpacityMinimumValue(0,0),t.getProperty().setGradientOpacityMaximumValue(0,.05*(s[1]-s[0])),t.getProperty().setShade(this.model.shadow),t.getProperty().setUseGradientOpacity(0,!0),t.getProperty().setGradientOpacityMinimumOpacity(0,0),t.getProperty().setGradientOpacityMaximumOpacity(0,1),t.getProperty().setAmbient(this.model.ambient),t.getProperty().setDiffuse(this.model.diffuse),t.getProperty().setSpecular(this.model.specular),t.getProperty().setSpecularPower(this.model.specular_power),this._vtk_renwin.getRenderer().addVolume(t)}_set_interpolation(e){\"fast_linear\"==e?(this.volume.getProperty().setInterpolationTypeToFastLinear(),this.image_actor_i.getProperty().setInterpolationTypeToLinear()):\"linear\"==e?(this.volume.getProperty().setInterpolationTypeToLinear(),this.image_actor_i.getProperty().setInterpolationTypeToLinear()):(this.volume.getProperty().setInterpolationTypeToNearest(),this.image_actor_i.getProperty().setInterpolationTypeToNearest())}_set_slices_visibility(e){this.image_actor_i.setVisibility(e),this.image_actor_j.setVisibility(e),this.image_actor_k.setVisibility(e)}_set_volume_visibility(e){this.volume.setVisibility(e)}}i.VTKVolumePlotView=l,l.__name__=\"VTKVolumePlotView\";class d extends o.AbstractVTKPlot{constructor(e){super(e)}}i.VTKVolumePlot=d,r=d,d.__name__=\"VTKVolumePlot\",r.prototype.default_view=l,r.define((({Any:e,Array:t,Boolean:i,Int:s,Number:n,String:r,Struct:o})=>({ambient:[n,.2],colormap:[r],data:[e],diffuse:[n,.7],display_slices:[i,!1],display_volume:[i,!0],edge_gradient:[n,.2],interpolation:[a.Interpolation,\"fast_linear\"],mapper:[o({palette:t(r),low:n,high:n}),{palette:[],low:0,high:0}],nan_opacity:[n,1],render_background:[r,\"#52576e\"],rescale:[i,!1],sampling:[n,.4],shadow:[i,!0],slice_i:[s,0],slice_j:[s,0],slice_k:[s,0],specular:[n,.3],specular_power:[n,8],controller_expanded:[i,!0]}))),r.override({height:300,width:300})}\n//# sourceMappingURL=vtkvolume.min.js.map","min_map":"{\"version\":3,\"file\":\"vtkvolume.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"vtklayout_1\",\"util_1\",\"VTKVolumePlotView\",\"AbstractVTKView\",\"connect_signals\",\"super\",\"this\",\"connect\",\"model\",\"properties\",\"data\",\"change\",\"_vtk_image_data\",\"data2VTKImageData\",\"invalidate_render\",\"colormap\",\"colormap_selector\",\"value\",\"event\",\"Event\",\"dispatchEvent\",\"shadow\",\"shadow_selector\",\"sampling\",\"sampling_slider\",\"toFixed\",\"edge_gradient\",\"edge_gradient_slider\",\"rescale\",\"_controllerWidget\",\"setRescaleColorMap\",\"_vtk_renwin\",\"getRenderWindow\",\"render\",\"ambient\",\"volume\",\"getProperty\",\"setAmbient\",\"diffuse\",\"setDiffuse\",\"camera\",\"_setting_camera\",\"_set_camera_state\",\"specular\",\"setSpecular\",\"specular_power\",\"setSpecularPower\",\"display_volume\",\"_set_volume_visibility\",\"display_slices\",\"_set_slices_visibility\",\"slice_i\",\"undefined\",\"image_actor_i\",\"getMapper\",\"setISlice\",\"slice_j\",\"image_actor_j\",\"setJSlice\",\"slice_k\",\"image_actor_k\",\"setKSlice\",\"render_background\",\"getRenderer\",\"setBackground\",\"hexToRGB\",\"interpolation\",\"_set_interpolation\",\"controller_expanded\",\"setExpanded\",\"nan_opacity\",\"scalar_opacity\",\"getScalarOpacity\",\"get\",\"nodes\",\"y\",\"modified\",\"_orientationWidget\",\"_axes\",\"_create_orientation_widget\",\"_set_axes\",\"resetCamera\",\"Object\",\"keys\",\"length\",\"_get_camera_state\",\"init_vtk_renwin\",\"vtkns\",\"FullScreenRenderWindow\",\"newInstance\",\"rootContainer\",\"shadow_el\",\"container\",\"_vtk_container\",\"plot\",\"VolumeController\",\"size\",\"rescaleColorMap\",\"_plot_volume\",\"_plot_slices\",\"setupContent\",\"setContainer\",\"el\",\"_connect_js_controls\",\"getInteractor\",\"setDesiredUpdateRate\",\"vtk_image_data\",\"getVolumes\",\"getActors\",\"querySelector\",\"controller_el\",\"addEventListener\",\"getExpanded\",\"emit\",\"Number\",\"js_sampling_value\",\"Math\",\"abs\",\"js_edge_gradient_value\",\"source\",\"ImageSlice\",\"image_mapper_i\",\"ImageMapper\",\"image_mapper_j\",\"image_mapper_k\",\"setInputData\",\"setMapper\",\"piecewiseFunction\",\"PiecewiseFunction\",\"lookupTable\",\"getRGBTransferFunction\",\"range\",\"getInputData\",\"getPointData\",\"getScalars\",\"getRange\",\"removeAllPoints\",\"addPoint\",\"property\",\"setProperty\",\"setRGBTransferFunction\",\"setScalarOpacity\",\"renderer\",\"addActor\",\"actor\",\"Volume\",\"mapper\",\"VolumeMapper\",\"dataRange\",\"getArrays\",\"ColorTransferFunction\",\"preset\",\"vtkColorMaps\",\"getPresetByName\",\"applyColorMap\",\"onModified\",\"vtkLutToMapper\",\"sampleDistance\",\"sqrt\",\"getSpacing\",\"map\",\"v\",\"reduce\",\"a\",\"b\",\"setSampleDistance\",\"setInterpolationTypeToFastLinear\",\"setScalarOpacityUnitDistance\",\"BoundingBox\",\"getDiagonalLength\",\"getBounds\",\"max\",\"getDimensions\",\"setGradientOpacityMinimumValue\",\"setGradientOpacityMaximumValue\",\"setShade\",\"setUseGradientOpacity\",\"setGradientOpacityMinimumOpacity\",\"setGradientOpacityMaximumOpacity\",\"addVolume\",\"setInterpolationTypeToLinear\",\"setInterpolationTypeToNearest\",\"visibility\",\"setVisibility\",\"__name__\",\"VTKVolumePlot\",\"AbstractVTKPlot\",\"constructor\",\"attrs\",\"prototype\",\"default_view\",\"define\",\"Any\",\"Array\",\"Boolean\",\"Int\",\"String\",\"Struct\",\"Interpolation\",\"palette\",\"low\",\"high\",\"override\",\"height\",\"width\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/vtksynchronized.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/vtk/vtksynchronized.js","canonical":"models/vtk/vtksynchronized","resolution":"ESM","id":"66775d6392","hash":"66775d639234cc5c947c6fbff85a18fc0525220c0841c5087822080861036ecd","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VTKSynchronizedPlot = exports.VTKSynchronizedPlotView = void 0;\nvar _a;\nconst object_1 = require(\"@bokehjs/core/util/object\");\nconst debounce_1 = require(\"debounce\");\nconst vtklayout_1 = require(\"./vtklayout\");\nconst panel_fullscreen_renwin_sync_1 = require(\"./panel_fullscreen_renwin_sync\");\nconst util_1 = require(\"./util\");\nconst CONTEXT_NAME = \"panel\";\nclass VTKSynchronizedPlotView extends vtklayout_1.AbstractVTKView {\n    initialize() {\n        super.initialize();\n        this._renderable = false;\n        // Context initialisation\n        this._synchronizer_context = util_1.vtkns.SynchronizableRenderWindow.getSynchronizerContext(`${CONTEXT_NAME}-{this.model.id}`);\n    }\n    connect_signals() {\n        super.connect_signals();\n        const update = (0, debounce_1.debounce)(() => {\n            this._vtk_renwin.delete();\n            this._vtk_renwin = null;\n            this.invalidate_render();\n        }, 20);\n        this.connect(this.model.properties.arrays.change, update);\n        this.connect(this.model.properties.scene.change, update);\n        this.connect(this.model.properties.one_time_reset.change, () => {\n            this._vtk_renwin.getRenderWindow().clearOneTimeUpdaters();\n        });\n    }\n    init_vtk_renwin() {\n        this._vtk_renwin = util_1.vtkns.FullScreenRenderWindowSynchronized.newInstance({\n            rootContainer: this.el,\n            container: this._vtk_container,\n            synchronizerContext: this._synchronizer_context,\n        });\n    }\n    remove() {\n        if (this._vtk_renwin) {\n            this._vtk_renwin.delete();\n        }\n        super.remove();\n    }\n    plot() {\n        this._vtk_renwin.getRenderWindow().clearOneTimeUpdaters();\n        const state = (0, object_1.clone)(this.model.scene);\n        this._sync_plot(state, () => this._on_scene_ready()).then(() => {\n            this._set_camera_state();\n            this._get_camera_state();\n        });\n    }\n    _on_scene_ready() {\n        this._renderable = true;\n        this._camera_callbacks.push(this._vtk_renwin\n            .getRenderer()\n            .getActiveCamera()\n            .onModified(() => this._vtk_render()));\n        if (!this._orientationWidget)\n            this._create_orientation_widget();\n        if (!this._axes)\n            this._set_axes();\n        this._vtk_renwin.resize();\n        this._vtk_render();\n    }\n    _sync_plot(state, onSceneReady) {\n        // Need to ensure all promises are resolved before calling this function\n        this._renderable = false;\n        this._unsubscribe_camera_cb();\n        this._synchronizer_context.setFetchArrayFunction((hash) => {\n            return Promise.resolve(this.model.arrays[hash]);\n        });\n        const renderer = this._synchronizer_context.getInstance(this.model.scene.dependencies[0].id);\n        if (renderer && !this._vtk_renwin.getRenderer())\n            this._vtk_renwin.getRenderWindow().addRenderer(renderer);\n        return this._vtk_renwin\n            .getRenderWindow()\n            .synchronize(state).then(onSceneReady);\n    }\n}\nexports.VTKSynchronizedPlotView = VTKSynchronizedPlotView;\nVTKSynchronizedPlotView.__name__ = \"VTKSynchronizedPlotView\";\nclass VTKSynchronizedPlot extends vtklayout_1.AbstractVTKPlot {\n    constructor(attrs) {\n        super(attrs);\n        (0, panel_fullscreen_renwin_sync_1.initialize_fullscreen_render)();\n        this.outline = util_1.vtkns.OutlineFilter.newInstance(); //use to display bounding box of a selected actor\n        const mapper = util_1.vtkns.Mapper.newInstance();\n        mapper.setInputConnection(this.outline.getOutputPort());\n        this.outline_actor = util_1.vtkns.Actor.newInstance();\n        this.outline_actor.setMapper(mapper);\n    }\n    getActors(ptr_ref) {\n        let actors = this.renderer_el.getRenderer().getActors();\n        if (ptr_ref) {\n            const context = this.renderer_el.getSynchronizerContext(CONTEXT_NAME);\n            actors = actors.filter((actor) => {\n                const id_actor = context.getInstanceId(actor);\n                return id_actor ? id_actor.slice(-16) == ptr_ref.slice(1, 17) : false;\n            });\n        }\n        return actors;\n    }\n}\nexports.VTKSynchronizedPlot = VTKSynchronizedPlot;\n_a = VTKSynchronizedPlot;\nVTKSynchronizedPlot.__name__ = \"VTKSynchronizedPlot\";\nVTKSynchronizedPlot.__module__ = \"panel.models.vtk\";\n(() => {\n    _a.prototype.default_view = VTKSynchronizedPlotView;\n    _a.define(({ Any, Array, Boolean, Bytes, Dict, String }) => ({\n        arrays: [Dict(Bytes), {}],\n        arrays_processed: [Array(String), []],\n        enable_keybindings: [Boolean, false],\n        one_time_reset: [Boolean, false],\n        rebuild: [Boolean, false],\n        scene: [Any, {}],\n    }));\n    _a.override({\n        height: 300,\n        width: 300,\n    });\n})();\n//# sourceMappingURL=vtksynchronized.js.map\n","type":"js","dependency_paths":[["debounce","/croot/panel_1706539561184/work/panel/node_modules/debounce/index.js"],["./vtklayout","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/vtklayout.js"],["./panel_fullscreen_renwin_sync","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/panel_fullscreen_renwin_sync.js"],["./util","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/util.js"]],"dependency_map":[],"exported":[{"type":"named","name":"VTKSynchronizedPlotView"},{"type":"named","name":"VTKSynchronizedPlot"}],"externals":[],"shims":[]},"code":{"source":"/* models/vtk/vtksynchronized.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    var _a;\n    const object_1 = require(\"@bokehjs/core/util/object\");\n    const debounce_1 = require(\"99a25e6992\") /* debounce */;\n    const vtklayout_1 = require(\"1de1ccb7ff\") /* ./vtklayout */;\n    const panel_fullscreen_renwin_sync_1 = require(\"877619fe71\") /* ./panel_fullscreen_renwin_sync */;\n    const util_1 = require(\"a76a9b7c23\") /* ./util */;\n    const CONTEXT_NAME = \"panel\";\n    class VTKSynchronizedPlotView extends vtklayout_1.AbstractVTKView {\n        initialize() {\n            super.initialize();\n            this._renderable = false;\n            // Context initialisation\n            this._synchronizer_context = util_1.vtkns.SynchronizableRenderWindow.getSynchronizerContext(`${CONTEXT_NAME}-{this.model.id}`);\n        }\n        connect_signals() {\n            super.connect_signals();\n            const update = (0, debounce_1.debounce)(() => {\n                this._vtk_renwin.delete();\n                this._vtk_renwin = null;\n                this.invalidate_render();\n            }, 20);\n            this.connect(this.model.properties.arrays.change, update);\n            this.connect(this.model.properties.scene.change, update);\n            this.connect(this.model.properties.one_time_reset.change, () => {\n                this._vtk_renwin.getRenderWindow().clearOneTimeUpdaters();\n            });\n        }\n        init_vtk_renwin() {\n            this._vtk_renwin = util_1.vtkns.FullScreenRenderWindowSynchronized.newInstance({\n                rootContainer: this.el,\n                container: this._vtk_container,\n                synchronizerContext: this._synchronizer_context,\n            });\n        }\n        remove() {\n            if (this._vtk_renwin) {\n                this._vtk_renwin.delete();\n            }\n            super.remove();\n        }\n        plot() {\n            this._vtk_renwin.getRenderWindow().clearOneTimeUpdaters();\n            const state = (0, object_1.clone)(this.model.scene);\n            this._sync_plot(state, () => this._on_scene_ready()).then(() => {\n                this._set_camera_state();\n                this._get_camera_state();\n            });\n        }\n        _on_scene_ready() {\n            this._renderable = true;\n            this._camera_callbacks.push(this._vtk_renwin\n                .getRenderer()\n                .getActiveCamera()\n                .onModified(() => this._vtk_render()));\n            if (!this._orientationWidget)\n                this._create_orientation_widget();\n            if (!this._axes)\n                this._set_axes();\n            this._vtk_renwin.resize();\n            this._vtk_render();\n        }\n        _sync_plot(state, onSceneReady) {\n            // Need to ensure all promises are resolved before calling this function\n            this._renderable = false;\n            this._unsubscribe_camera_cb();\n            this._synchronizer_context.setFetchArrayFunction((hash) => {\n                return Promise.resolve(this.model.arrays[hash]);\n            });\n            const renderer = this._synchronizer_context.getInstance(this.model.scene.dependencies[0].id);\n            if (renderer && !this._vtk_renwin.getRenderer())\n                this._vtk_renwin.getRenderWindow().addRenderer(renderer);\n            return this._vtk_renwin\n                .getRenderWindow()\n                .synchronize(state).then(onSceneReady);\n        }\n    }\n    exports.VTKSynchronizedPlotView = VTKSynchronizedPlotView;\n    VTKSynchronizedPlotView.__name__ = \"VTKSynchronizedPlotView\";\n    class VTKSynchronizedPlot extends vtklayout_1.AbstractVTKPlot {\n        constructor(attrs) {\n            super(attrs);\n            (0, panel_fullscreen_renwin_sync_1.initialize_fullscreen_render)();\n            this.outline = util_1.vtkns.OutlineFilter.newInstance(); //use to display bounding box of a selected actor\n            const mapper = util_1.vtkns.Mapper.newInstance();\n            mapper.setInputConnection(this.outline.getOutputPort());\n            this.outline_actor = util_1.vtkns.Actor.newInstance();\n            this.outline_actor.setMapper(mapper);\n        }\n        getActors(ptr_ref) {\n            let actors = this.renderer_el.getRenderer().getActors();\n            if (ptr_ref) {\n                const context = this.renderer_el.getSynchronizerContext(CONTEXT_NAME);\n                actors = actors.filter((actor) => {\n                    const id_actor = context.getInstanceId(actor);\n                    return id_actor ? id_actor.slice(-16) == ptr_ref.slice(1, 17) : false;\n                });\n            }\n            return actors;\n        }\n    }\n    exports.VTKSynchronizedPlot = VTKSynchronizedPlot;\n    _a = VTKSynchronizedPlot;\n    VTKSynchronizedPlot.__name__ = \"VTKSynchronizedPlot\";\n    VTKSynchronizedPlot.__module__ = \"panel.models.vtk\";\n    (() => {\n        _a.prototype.default_view = VTKSynchronizedPlotView;\n        _a.define(({ Any, Array, Boolean, Bytes, Dict, String }) => ({\n            arrays: [Dict(Bytes), {}],\n            arrays_processed: [Array(String), []],\n            enable_keybindings: [Boolean, false],\n            one_time_reset: [Boolean, false],\n            rebuild: [Boolean, false],\n            scene: [Any, {}],\n        }));\n        _a.override({\n            height: 300,\n            width: 300,\n        });\n    })();\n}\n","min_source":"function _(e,t,n,i,r){var s;i();const o=e(\"@bokehjs/core/util/object\"),_=e(\"99a25e6992\"),c=e(\"1de1ccb7ff\"),a=e(\"877619fe71\"),h=e(\"a76a9b7c23\"),d=\"panel\";class l extends c.AbstractVTKView{initialize(){super.initialize(),this._renderable=!1,this._synchronizer_context=h.vtkns.SynchronizableRenderWindow.getSynchronizerContext(`${d}-{this.model.id}`)}connect_signals(){super.connect_signals();const e=(0,_.debounce)((()=>{this._vtk_renwin.delete(),this._vtk_renwin=null,this.invalidate_render()}),20);this.connect(this.model.properties.arrays.change,e),this.connect(this.model.properties.scene.change,e),this.connect(this.model.properties.one_time_reset.change,(()=>{this._vtk_renwin.getRenderWindow().clearOneTimeUpdaters()}))}init_vtk_renwin(){this._vtk_renwin=h.vtkns.FullScreenRenderWindowSynchronized.newInstance({rootContainer:this.el,container:this._vtk_container,synchronizerContext:this._synchronizer_context})}remove(){this._vtk_renwin&&this._vtk_renwin.delete(),super.remove()}plot(){this._vtk_renwin.getRenderWindow().clearOneTimeUpdaters();const e=(0,o.clone)(this.model.scene);this._sync_plot(e,(()=>this._on_scene_ready())).then((()=>{this._set_camera_state(),this._get_camera_state()}))}_on_scene_ready(){this._renderable=!0,this._camera_callbacks.push(this._vtk_renwin.getRenderer().getActiveCamera().onModified((()=>this._vtk_render()))),this._orientationWidget||this._create_orientation_widget(),this._axes||this._set_axes(),this._vtk_renwin.resize(),this._vtk_render()}_sync_plot(e,t){this._renderable=!1,this._unsubscribe_camera_cb(),this._synchronizer_context.setFetchArrayFunction((e=>Promise.resolve(this.model.arrays[e])));const n=this._synchronizer_context.getInstance(this.model.scene.dependencies[0].id);return n&&!this._vtk_renwin.getRenderer()&&this._vtk_renwin.getRenderWindow().addRenderer(n),this._vtk_renwin.getRenderWindow().synchronize(e).then(t)}}n.VTKSynchronizedPlotView=l,l.__name__=\"VTKSynchronizedPlotView\";class v extends c.AbstractVTKPlot{constructor(e){super(e),(0,a.initialize_fullscreen_render)(),this.outline=h.vtkns.OutlineFilter.newInstance();const t=h.vtkns.Mapper.newInstance();t.setInputConnection(this.outline.getOutputPort()),this.outline_actor=h.vtkns.Actor.newInstance(),this.outline_actor.setMapper(t)}getActors(e){let t=this.renderer_el.getRenderer().getActors();if(e){const n=this.renderer_el.getSynchronizerContext(d);t=t.filter((t=>{const i=n.getInstanceId(t);return!!i&&i.slice(-16)==e.slice(1,17)}))}return t}}n.VTKSynchronizedPlot=v,s=v,v.__name__=\"VTKSynchronizedPlot\",v.__module__=\"panel.models.vtk\",s.prototype.default_view=l,s.define((({Any:e,Array:t,Boolean:n,Bytes:i,Dict:r,String:s})=>({arrays:[r(i),{}],arrays_processed:[t(s),[]],enable_keybindings:[n,!1],one_time_reset:[n,!1],rebuild:[n,!1],scene:[e,{}]}))),s.override({height:300,width:300})}\n//# sourceMappingURL=vtksynchronized.min.js.map","min_map":"{\"version\":3,\"file\":\"vtksynchronized.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"_a\",\"object_1\",\"debounce_1\",\"vtklayout_1\",\"panel_fullscreen_renwin_sync_1\",\"util_1\",\"CONTEXT_NAME\",\"VTKSynchronizedPlotView\",\"AbstractVTKView\",\"initialize\",\"super\",\"this\",\"_renderable\",\"_synchronizer_context\",\"vtkns\",\"SynchronizableRenderWindow\",\"getSynchronizerContext\",\"connect_signals\",\"update\",\"debounce\",\"_vtk_renwin\",\"delete\",\"invalidate_render\",\"connect\",\"model\",\"properties\",\"arrays\",\"change\",\"scene\",\"one_time_reset\",\"getRenderWindow\",\"clearOneTimeUpdaters\",\"init_vtk_renwin\",\"FullScreenRenderWindowSynchronized\",\"newInstance\",\"rootContainer\",\"el\",\"container\",\"_vtk_container\",\"synchronizerContext\",\"remove\",\"plot\",\"state\",\"clone\",\"_sync_plot\",\"_on_scene_ready\",\"then\",\"_set_camera_state\",\"_get_camera_state\",\"_camera_callbacks\",\"push\",\"getRenderer\",\"getActiveCamera\",\"onModified\",\"_vtk_render\",\"_orientationWidget\",\"_create_orientation_widget\",\"_axes\",\"_set_axes\",\"resize\",\"onSceneReady\",\"_unsubscribe_camera_cb\",\"setFetchArrayFunction\",\"hash\",\"Promise\",\"resolve\",\"renderer\",\"getInstance\",\"dependencies\",\"id\",\"addRenderer\",\"synchronize\",\"__name__\",\"VTKSynchronizedPlot\",\"AbstractVTKPlot\",\"constructor\",\"attrs\",\"initialize_fullscreen_render\",\"outline\",\"OutlineFilter\",\"mapper\",\"Mapper\",\"setInputConnection\",\"getOutputPort\",\"outline_actor\",\"Actor\",\"setMapper\",\"getActors\",\"ptr_ref\",\"actors\",\"renderer_el\",\"context\",\"filter\",\"actor\",\"id_actor\",\"getInstanceId\",\"slice\",\"__module__\",\"prototype\",\"default_view\",\"define\",\"Any\",\"Array\",\"Boolean\",\"Bytes\",\"Dict\",\"String\",\"arrays_processed\",\"enable_keybindings\",\"rebuild\",\"override\",\"height\",\"width\"],\"sources\":[\"0\"],\"mappings\":\"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\"}"}},{"module":{"file":"/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/panel_fullscreen_renwin_sync.js","base":"/croot/panel_1706539561184/work/panel/dist/lib","base_path":"models/vtk/panel_fullscreen_renwin_sync.js","canonical":"models/vtk/panel_fullscreen_renwin_sync","resolution":"ESM","id":"877619fe71","hash":"877619fe71efec8e3c6d9106c3759044347430adf8d5e7ff06c3aa2fedf9c1d9","source":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.initialize_fullscreen_render = void 0;\nconst util_1 = require(\"./util\");\n//------------------------//\n//Custom Extended Classes\n//------------------------//\nconst DEFAULT_VALUES = {\n    containerStyle: null,\n    controlPanelStyle: null,\n    listenWindowResize: true,\n    resizeCallback: null,\n    controllerVisibility: true,\n    synchronizerContextName: \"default\",\n};\nconst STYLE_CONTROL_PANEL = {\n    position: \"absolute\",\n    left: \"25px\",\n    top: \"25px\",\n    backgroundColor: \"white\",\n    borderRadius: \"5px\",\n    listStyle: \"none\",\n    padding: \"5px 10px\",\n    margin: \"0\",\n    display: \"block\",\n    border: \"solid 1px black\",\n    maxWidth: \"calc(100vw - 70px)\",\n    maxHeight: \"calc(100vh - 60px)\",\n    overflow: \"auto\",\n};\nfunction panelFullScreenRenderWindowSynchronized(publicAPI, model) {\n    // Panel (modification) synchronizable renderWindow\n    model.renderWindow = util_1.vtkns.SynchronizableRenderWindow.newInstance({\n        synchronizerContext: model.synchronizerContext,\n    });\n    // OpenGlRenderWindow\n    model.openGLRenderWindow = util_1.vtkns.OpenGLRenderWindow.newInstance();\n    model.openGLRenderWindow.setContainer(model.container);\n    model.renderWindow.addView(model.openGLRenderWindow);\n    // Interactor\n    model.interactor = util_1.vtkns.RenderWindowInteractor.newInstance();\n    model.interactor.setInteractorStyle(util_1.vtkns.InteractorStyleTrackballCamera.newInstance());\n    model.interactor.setView(model.openGLRenderWindow);\n    model.interactor.initialize();\n    model.interactor.bindEvents(model.container);\n    publicAPI.getRenderer = () => model.renderWindow.getRenderers()[0];\n    publicAPI.removeController = () => {\n        const el = model.controlContainer;\n        if (el) {\n            el.parentNode.removeChild(el);\n        }\n    };\n    publicAPI.setControllerVisibility = (visible) => {\n        model.controllerVisibility = visible;\n        if (model.controlContainer) {\n            if (visible) {\n                model.controlContainer.style.display = \"block\";\n            }\n            else {\n                model.controlContainer.style.display = \"none\";\n            }\n        }\n    };\n    publicAPI.toggleControllerVisibility = () => {\n        publicAPI.setControllerVisibility(!model.controllerVisibility);\n    };\n    publicAPI.addController = (html) => {\n        model.controlContainer = document.createElement(\"div\");\n        (0, util_1.applyStyle)(model.controlContainer, model.controlPanelStyle || STYLE_CONTROL_PANEL);\n        model.rootContainer.appendChild(model.controlContainer);\n        model.controlContainer.innerHTML = html;\n        publicAPI.setControllerVisibility(model.controllerVisibility);\n        model.rootContainer.addEventListener(\"keypress\", (e) => {\n            if (String.fromCharCode(e.charCode) === \"c\") {\n                publicAPI.toggleControllerVisibility();\n            }\n        });\n    };\n    // Properly release GL context\n    publicAPI.delete = window.vtk.macro.chain(publicAPI.setContainer, model.openGLRenderWindow.delete, publicAPI.delete);\n    // Handle window resize\n    publicAPI.resize = () => {\n        const dims = model.container.getBoundingClientRect();\n        const devicePixelRatio = window.devicePixelRatio || 1;\n        model.openGLRenderWindow.setSize(Math.floor(dims.width * devicePixelRatio), Math.floor(dims.height * devicePixelRatio));\n        if (model.resizeCallback) {\n            model.resizeCallback(dims);\n        }\n        model.renderWindow.render();\n    };\n    publicAPI.setResizeCallback = (cb) => {\n        model.resizeCallback = cb;\n        publicAPI.resize();\n    };\n    if (model.listenWindowResize) {\n        window.addEventListener(\"resize\", publicAPI.resize);\n    }\n    publicAPI.resize();\n}\nfunction initialize_fullscreen_render() {\n    let FullScreenRenderWindowSynchronized = {\n        newInstance: window.vtk.macro.newInstance((publicAPI, model, initialValues = {}) => {\n            Object.assign(model, DEFAULT_VALUES, initialValues);\n            // Object methods\n            window.vtk.macro.obj(publicAPI, model);\n            window.vtk.macro.get(publicAPI, model, [\n                \"renderWindow\",\n                \"openGLRenderWindow\",\n                \"interactor\",\n                \"rootContainer\",\n                \"container\",\n                \"controlContainer\",\n                \"synchronizerContext\",\n            ]);\n            // Object specific methods\n            panelFullScreenRenderWindowSynchronized(publicAPI, model);\n        }),\n    };\n    util_1.vtkns.FullScreenRenderWindowSynchronized = FullScreenRenderWindowSynchronized;\n}\nexports.initialize_fullscreen_render = initialize_fullscreen_render;\n//# sourceMappingURL=panel_fullscreen_renwin_sync.js.map\n","type":"js","dependency_paths":[["./util","/croot/panel_1706539561184/work/panel/dist/lib/models/vtk/util.js"]],"dependency_map":[],"exported":[{"type":"named","name":"initialize_fullscreen_render"}],"externals":[],"shims":[]},"code":{"source":"/* models/vtk/panel_fullscreen_renwin_sync.js */ function _(require, module, exports, __esModule, __esExport) {\n    __esModule();\n    const util_1 = require(\"a76a9b7c23\") /* ./util */;\n    //------------------------//\n    //Custom Extended Classes\n    //------------------------//\n    const DEFAULT_VALUES = {\n        containerStyle: null,\n        controlPanelStyle: null,\n        listenWindowResize: true,\n        resizeCallback: null,\n        controllerVisibility: true,\n        synchronizerContextName: \"default\",\n    };\n    const STYLE_CONTROL_PANEL = {\n        position: \"absolute\",\n        left: \"25px\",\n        top: \"25px\",\n        backgroundColor: \"white\",\n        borderRadius: \"5px\",\n        listStyle: \"none\",\n        padding: \"5px 10px\",\n        margin: \"0\",\n        display: \"block\",\n        border: \"solid 1px black\",\n        maxWidth: \"calc(100vw - 70px)\",\n        maxHeight: \"calc(100vh - 60px)\",\n        overflow: \"auto\",\n    };\n    function panelFullScreenRenderWindowSynchronized(publicAPI, model) {\n        // Panel (modification) synchronizable renderWindow\n        model.renderWindow = util_1.vtkns.SynchronizableRenderWindow.newInstance({\n            synchronizerContext: model.synchronizerContext,\n        });\n        // OpenGlRenderWindow\n        model.openGLRenderWindow = util_1.vtkns.OpenGLRenderWindow.newInstance();\n        model.openGLRenderWindow.setContainer(model.container);\n        model.renderWindow.addView(model.openGLRenderWindow);\n        // Interactor\n        model.interactor = util_1.vtkns.RenderWindowInteractor.newInstance();\n        model.interactor.setInteractorStyle(util_1.vtkns.InteractorStyleTrackballCamera.newInstance());\n        model.interactor.setView(model.openGLRenderWindow);\n        model.interactor.initialize();\n        model.interactor.bindEvents(model.container);\n        publicAPI.getRenderer = () => model.renderWindow.getRenderers()[0];\n        publicAPI.removeController = () => {\n            const el = model.controlContainer;\n            if (el) {\n                el.parentNode.removeChild(el);\n            }\n        };\n        publicAPI.setControllerVisibility = (visible) => {\n            model.controllerVisibility = visible;\n            if (model.controlContainer) {\n                if (visible) {\n                    model.controlContainer.style.display = \"block\";\n                }\n                else {\n                    model.controlContainer.style.display = \"none\";\n                }\n            }\n        };\n        publicAPI.toggleControllerVisibility = () => {\n            publicAPI.setControllerVisibility(!model.controllerVisibility);\n        };\n        publicAPI.addController = (html) => {\n            model.controlContainer = document.createElement(\"div\");\n            (0, util_1.applyStyle)(model.controlContainer, model.controlPanelStyle || STYLE_CONTROL_PANEL);\n            model.rootContainer.appendChild(model.controlContainer);\n            model.controlContainer.innerHTML = html;\n            publicAPI.setControllerVisibility(model.controllerVisibility);\n            model.rootContainer.addEventListener(\"keypress\", (e) => {\n                if (String.fromCharCode(e.charCode) === \"c\") {\n                    publicAPI.toggleControllerVisibility();\n                }\n            });\n        };\n        // Properly release GL context\n        publicAPI.delete = window.vtk.macro.chain(publicAPI.setContainer, model.openGLRenderWindow.delete, publicAPI.delete);\n        // Handle window resize\n        publicAPI.resize = () => {\n            const dims = model.container.getBoundingClientRect();\n            const devicePixelRatio = window.devicePixelRatio || 1;\n            model.openGLRenderWindow.setSize(Math.floor(dims.width * devicePixelRatio), Math.floor(dims.height * devicePixelRatio));\n            if (model.resizeCallback) {\n                model.resizeCallback(dims);\n            }\n            model.renderWindow.render();\n        };\n        publicAPI.setResizeCallback = (cb) => {\n            model.resizeCallback = cb;\n            publicAPI.resize();\n        };\n        if (model.listenWindowResize) {\n            window.addEventListener(\"resize\", publicAPI.resize);\n        }\n        publicAPI.resize();\n    }\n    function initialize_fullscreen_render() {\n        let FullScreenRenderWindowSynchronized = {\n            newInstance: window.vtk.macro.newInstance((publicAPI, model, initialValues = {}) => {\n                Object.assign(model, DEFAULT_VALUES, initialValues);\n                // Object methods\n                window.vtk.macro.obj(publicAPI, model);\n                window.vtk.macro.get(publicAPI, model, [\n                    \"renderWindow\",\n                    \"openGLRenderWindow\",\n                    \"interactor\",\n                    \"rootContainer\",\n                    \"container\",\n                    \"controlContainer\",\n                    \"synchronizerContext\",\n                ]);\n                // Object specific methods\n                panelFullScreenRenderWindowSynchronized(publicAPI, model);\n            }),\n        };\n        util_1.vtkns.FullScreenRenderWindowSynchronized = FullScreenRenderWindowSynchronized;\n    }\n    exports.initialize_fullscreen_render = initialize_fullscreen_render;\n}\n","min_source":"function _(e,n,o,t,r){t();const i=e(\"a76a9b7c23\"),l={containerStyle:null,controlPanelStyle:null,listenWindowResize:!0,resizeCallback:null,controllerVisibility:!0,synchronizerContextName:\"default\"},a={position:\"absolute\",left:\"25px\",top:\"25px\",backgroundColor:\"white\",borderRadius:\"5px\",listStyle:\"none\",padding:\"5px 10px\",margin:\"0\",display:\"block\",border:\"solid 1px black\",maxWidth:\"calc(100vw - 70px)\",maxHeight:\"calc(100vh - 60px)\",overflow:\"auto\"};o.initialize_fullscreen_render=function(){let e={newInstance:window.vtk.macro.newInstance(((e,n,o={})=>{Object.assign(n,l,o),window.vtk.macro.obj(e,n),window.vtk.macro.get(e,n,[\"renderWindow\",\"openGLRenderWindow\",\"interactor\",\"rootContainer\",\"container\",\"controlContainer\",\"synchronizerContext\"]),function(e,n){n.renderWindow=i.vtkns.SynchronizableRenderWindow.newInstance({synchronizerContext:n.synchronizerContext}),n.openGLRenderWindow=i.vtkns.OpenGLRenderWindow.newInstance(),n.openGLRenderWindow.setContainer(n.container),n.renderWindow.addView(n.openGLRenderWindow),n.interactor=i.vtkns.RenderWindowInteractor.newInstance(),n.interactor.setInteractorStyle(i.vtkns.InteractorStyleTrackballCamera.newInstance()),n.interactor.setView(n.openGLRenderWindow),n.interactor.initialize(),n.interactor.bindEvents(n.container),e.getRenderer=()=>n.renderWindow.getRenderers()[0],e.removeController=()=>{const e=n.controlContainer;e&&e.parentNode.removeChild(e)},e.setControllerVisibility=e=>{n.controllerVisibility=e,n.controlContainer&&(n.controlContainer.style.display=e?\"block\":\"none\")},e.toggleControllerVisibility=()=>{e.setControllerVisibility(!n.controllerVisibility)},e.addController=o=>{n.controlContainer=document.createElement(\"div\"),(0,i.applyStyle)(n.controlContainer,n.controlPanelStyle||a),n.rootContainer.appendChild(n.controlContainer),n.controlContainer.innerHTML=o,e.setControllerVisibility(n.controllerVisibility),n.rootContainer.addEventListener(\"keypress\",(n=>{\"c\"===String.fromCharCode(n.charCode)&&e.toggleControllerVisibility()}))},e.delete=window.vtk.macro.chain(e.setContainer,n.openGLRenderWindow.delete,e.delete),e.resize=()=>{const e=n.container.getBoundingClientRect(),o=window.devicePixelRatio||1;n.openGLRenderWindow.setSize(Math.floor(e.width*o),Math.floor(e.height*o)),n.resizeCallback&&n.resizeCallback(e),n.renderWindow.render()},e.setResizeCallback=o=>{n.resizeCallback=o,e.resize()},n.listenWindowResize&&window.addEventListener(\"resize\",e.resize),e.resize()}(e,n)}))};i.vtkns.FullScreenRenderWindowSynchronized=e}}\n//# sourceMappingURL=panel_fullscreen_renwin_sync.min.js.map","min_map":"{\"version\":3,\"file\":\"panel_fullscreen_renwin_sync.min.js\",\"names\":[\"_\",\"require\",\"module\",\"exports\",\"__esModule\",\"__esExport\",\"util_1\",\"DEFAULT_VALUES\",\"containerStyle\",\"controlPanelStyle\",\"listenWindowResize\",\"resizeCallback\",\"controllerVisibility\",\"synchronizerContextName\",\"STYLE_CONTROL_PANEL\",\"position\",\"left\",\"top\",\"backgroundColor\",\"borderRadius\",\"listStyle\",\"padding\",\"margin\",\"display\",\"border\",\"maxWidth\",\"maxHeight\",\"overflow\",\"initialize_fullscreen_render\",\"FullScreenRenderWindowSynchronized\",\"newInstance\",\"window\",\"vtk\",\"macro\",\"publicAPI\",\"model\",\"initialValues\",\"Object\",\"assign\",\"obj\",\"get\",\"renderWindow\",\"vtkns\",\"SynchronizableRenderWindow\",\"synchronizerContext\",\"openGLRenderWindow\",\"OpenGLRenderWindow\",\"setContainer\",\"container\",\"addView\",\"interactor\",\"RenderWindowInteractor\",\"setInteractorStyle\",\"InteractorStyleTrackballCamera\",\"setView\",\"initialize\",\"bindEvents\",\"getRenderer\",\"getRenderers\",\"removeController\",\"el\",\"controlContainer\",\"parentNode\",\"removeChild\",\"setControllerVisibility\",\"visible\",\"style\",\"toggleControllerVisibility\",\"addController\",\"html\",\"document\",\"createElement\",\"applyStyle\",\"rootContainer\",\"appendChild\",\"innerHTML\",\"addEventListener\",\"e\",\"String\",\"fromCharCode\",\"charCode\",\"delete\",\"chain\",\"resize\",\"dims\",\"getBoundingClientRect\",\"devicePixelRatio\",\"setSize\",\"Math\",\"floor\",\"width\",\"height\",\"render\",\"setResizeCallback\",\"cb\",\"panelFullScreenRenderWindowSynchronized\"],\"sources\":[\"0\"],\"mappings\":\"AAAiD,SAASA,EAAEC,EAASC,EAAQC,EAASC,EAAYC,GAC9FD,IACA,MAAME,EAASL,EAAQ,cAIjBM,EAAiB,CACnBC,eAAgB,KAChBC,kBAAmB,KACnBC,oBAAoB,EACpBC,eAAgB,KAChBC,sBAAsB,EACtBC,wBAAyB,WAEvBC,EAAsB,CACxBC,SAAU,WACVC,KAAM,OACNC,IAAK,OACLC,gBAAiB,QACjBC,aAAc,MACdC,UAAW,OACXC,QAAS,WACTC,OAAQ,IACRC,QAAS,QACTC,OAAQ,kBACRC,SAAU,qBACVC,UAAW,qBACXC,SAAU,QA4FdxB,EAAQyB,6BArBR,WACI,IAAIC,EAAqC,CACrCC,YAAaC,OAAOC,IAAIC,MAAMH,aAAY,CAACI,EAAWC,EAAOC,EAAgB,CAAC,KAC1EC,OAAOC,OAAOH,EAAO5B,EAAgB6B,GAErCL,OAAOC,IAAIC,MAAMM,IAAIL,EAAWC,GAChCJ,OAAOC,IAAIC,MAAMO,IAAIN,EAAWC,EAAO,CACnC,eACA,qBACA,aACA,gBACA,YACA,mBACA,wBAlFhB,SAAiDD,EAAWC,GAExDA,EAAMM,aAAenC,EAAOoC,MAAMC,2BAA2Bb,YAAY,CACrEc,oBAAqBT,EAAMS,sBAG/BT,EAAMU,mBAAqBvC,EAAOoC,MAAMI,mBAAmBhB,cAC3DK,EAAMU,mBAAmBE,aAAaZ,EAAMa,WAC5Cb,EAAMM,aAAaQ,QAAQd,EAAMU,oBAEjCV,EAAMe,WAAa5C,EAAOoC,MAAMS,uBAAuBrB,cACvDK,EAAMe,WAAWE,mBAAmB9C,EAAOoC,MAAMW,+BAA+BvB,eAChFK,EAAMe,WAAWI,QAAQnB,EAAMU,oBAC/BV,EAAMe,WAAWK,aACjBpB,EAAMe,WAAWM,WAAWrB,EAAMa,WAClCd,EAAUuB,YAAc,IAAMtB,EAAMM,aAAaiB,eAAe,GAChExB,EAAUyB,iBAAmB,KACzB,MAAMC,EAAKzB,EAAM0B,iBACbD,GACAA,EAAGE,WAAWC,YAAYH,EAC9B,EAEJ1B,EAAU8B,wBAA2BC,IACjC9B,EAAMvB,qBAAuBqD,EACzB9B,EAAM0B,mBAEF1B,EAAM0B,iBAAiBK,MAAM3C,QAD7B0C,EACuC,QAGA,OAE/C,EAEJ/B,EAAUiC,2BAA6B,KACnCjC,EAAU8B,yBAAyB7B,EAAMvB,qBAAqB,EAElEsB,EAAUkC,cAAiBC,IACvBlC,EAAM0B,iBAAmBS,SAASC,cAAc,QAChD,EAAIjE,EAAOkE,YAAYrC,EAAM0B,iBAAkB1B,EAAM1B,mBAAqBK,GAC1EqB,EAAMsC,cAAcC,YAAYvC,EAAM0B,kBACtC1B,EAAM0B,iBAAiBc,UAAYN,EACnCnC,EAAU8B,wBAAwB7B,EAAMvB,sBACxCuB,EAAMsC,cAAcG,iBAAiB,YAAaC,IACN,MAApCC,OAAOC,aAAaF,EAAEG,WACtB9C,EAAUiC,4BACd,GACF,EAGNjC,EAAU+C,OAASlD,OAAOC,IAAIC,MAAMiD,MAAMhD,EAAUa,aAAcZ,EAAMU,mBAAmBoC,OAAQ/C,EAAU+C,QAE7G/C,EAAUiD,OAAS,KACf,MAAMC,EAAOjD,EAAMa,UAAUqC,wBACvBC,EAAmBvD,OAAOuD,kBAAoB,EACpDnD,EAAMU,mBAAmB0C,QAAQC,KAAKC,MAAML,EAAKM,MAAQJ,GAAmBE,KAAKC,MAAML,EAAKO,OAASL,IACjGnD,EAAMxB,gBACNwB,EAAMxB,eAAeyE,GAEzBjD,EAAMM,aAAamD,QAAQ,EAE/B1D,EAAU2D,kBAAqBC,IAC3B3D,EAAMxB,eAAiBmF,EACvB5D,EAAUiD,QAAQ,EAElBhD,EAAMzB,oBACNqB,OAAO6C,iBAAiB,SAAU1C,EAAUiD,QAEhDjD,EAAUiD,QACd,CAiBYY,CAAwC7D,EAAWC,EAAM,KAGjE7B,EAAOoC,MAAMb,mCAAqCA,CACtD,CAEJ\"}"}}]}