{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    },
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "version_major": 2,
        "version_minor": 0,
        "state": {
          "fde6f67f04b044729fecb750b0948f19": {
            "model_module": "jupyter-leaflet",
            "model_name": "LeafletMapModel",
            "model_module_version": "^0.20",
            "state": {
              "_dom_classes": [],
              "_model_module": "jupyter-leaflet",
              "_model_module_version": "^0.20",
              "_model_name": "LeafletMapModel",
              "_view_count": null,
              "_view_module": "jupyter-leaflet",
              "_view_module_version": "^0.20",
              "_view_name": "LeafletMapView",
              "bottom": 2185,
              "bounce_at_zoom_limits": true,
              "box_zoom": true,
              "center": [
                14.179186142354181,
                135.7864700081508
              ],
              "close_popup_on_click": true,
              "controls": [
                "IPY_MODEL_e789f98a5d5e4fabb1e8e6b70cc8da79",
                "IPY_MODEL_0f8622e00d6d4d57b8eb0750df66a0fe",
                "IPY_MODEL_27118e4810f7438bb39f68f980026c59",
                "IPY_MODEL_357402c533564ed7b9ad4db576084c8a",
                "IPY_MODEL_8387ac47d1314e8c850a345b1041eb18",
                "IPY_MODEL_da1d9b8ab3d54b2eaf6941197f581440",
                "IPY_MODEL_41a012fffda34eebb99ca4c175f0ee7f"
              ],
              "crs": {
                "name": "EPSG3857",
                "custom": false
              },
              "default_style": "IPY_MODEL_8ef5a411c6c34a84968c8c1fe8411405",
              "double_click_zoom": true,
              "dragging": true,
              "dragging_style": "IPY_MODEL_5a3bda70992e40ce8d5474c4a3442871",
              "east": 202.0560012581508,
              "fullscreen": false,
              "inertia": true,
              "inertia_deceleration": 3000,
              "inertia_max_speed": 1500,
              "interpolation": "bilinear",
              "keyboard": true,
              "keyboard_pan_offset": 80,
              "keyboard_zoom_offset": 1,
              "layers": [
                "IPY_MODEL_9fc868f311ac468790021dfa3441e0ce",
                "IPY_MODEL_aee28f9c998e4ef695f0a0c0074ebc88",
                "IPY_MODEL_6c4aa18bb0eb47c1a48f845aa9fee312"
              ],
              "layout": "IPY_MODEL_dd3204e61c694b8aa89823c99c016bff",
              "left": 2838.9482809816263,
              "max_zoom": null,
              "min_zoom": null,
              "modisdate": "2026-11-09",
              "north": 37.64903402157866,
              "options": [
                "bounce_at_zoom_limits",
                "box_zoom",
                "center",
                "close_popup_on_click",
                "double_click_zoom",
                "dragging",
                "fullscreen",
                "inertia",
                "inertia_deceleration",
                "inertia_max_speed",
                "interpolation",
                "keyboard",
                "keyboard_pan_offset",
                "keyboard_zoom_offset",
                "max_zoom",
                "min_zoom",
                "prefer_canvas",
                "scroll_wheel_zoom",
                "tap",
                "tap_tolerance",
                "touch_zoom",
                "world_copy_jump",
                "zoom",
                "zoom_animation_threshold",
                "zoom_delta",
                "zoom_snap"
              ],
              "panes": {},
              "prefer_canvas": false,
              "right": 4346.948280981626,
              "scroll_wheel_zoom": true,
              "south": -11.953349393643416,
              "style": "IPY_MODEL_8ef5a411c6c34a84968c8c1fe8411405",
              "tap": true,
              "tap_tolerance": 15,
              "top": 1585,
              "touch_zoom": true,
              "west": 69.51693875815076,
              "window_url": "https://e1oo8eak2jk-496ff2e9c6d22116-0-colab.googleusercontent.com/outputframe.html?vrz=colab-external_20261109-060059_RC00_1017214607",
              "world_copy_jump": false,
              "zoom": 4,
              "zoom_animation_threshold": 4,
              "zoom_delta": 1,
              "zoom_snap": 1
            }
          },
          "e789f98a5d5e4fabb1e8e6b70cc8da79": {
            "model_module": "jupyter-leaflet",
            "model_name": "LeafletWidgetControlModel",
            "model_module_version": "^0.20",
            "state": {
              "_model_module": "jupyter-leaflet",
              "_model_module_version": "^0.20",
              "_model_name": "LeafletWidgetControlModel",
              "_view_count": null,
              "_view_module": "jupyter-leaflet",
              "_view_module_version": "^0.20",
              "_view_name": "LeafletWidgetControlView",
              "max_height": null,
              "max_width": null,
              "min_height": null,
              "min_width": null,
              "options": [
                "position",
                "transparent_bg"
              ],
              "position": "topright",
              "transparent_bg": true,
              "widget": "IPY_MODEL_98e9b183a9a04f7bbf1c5c8c57ef1d80"
            }
          },
          "0f8622e00d6d4d57b8eb0750df66a0fe": {
            "model_module": "jupyter-leaflet",
            "model_name": "LeafletWidgetControlModel",
            "model_module_version": "^0.20",
            "state": {
              "_model_module": "jupyter-leaflet",
              "_model_module_version": "^0.20",
              "_model_name": "LeafletWidgetControlModel",
              "_view_count": null,
              "_view_module": "jupyter-leaflet",
              "_view_module_version": "^0.20",
              "_view_name": "LeafletWidgetControlView",
              "max_height": null,
              "max_width": null,
              "min_height": null,
              "min_width": null,
              "options": [
                "position",
                "transparent_bg"
              ],
              "position": "topleft",
              "transparent_bg": true,
              "widget": "IPY_MODEL_b4891dc96859405189029c2f6a59976b"
            }
          },
          "27118e4810f7438bb39f68f980026c59": {
            "model_module": "jupyter-leaflet",
            "model_name": "LeafletZoomControlModel",
            "model_module_version": "^0.20",
            "state": {
              "_model_module": "jupyter-leaflet",
              "_model_module_version": "^0.20",
              "_model_name": "LeafletZoomControlModel",
              "_view_count": null,
              "_view_module": "jupyter-leaflet",
              "_view_module_version": "^0.20",
              "_view_name": "LeafletZoomControlView",
              "options": [
                "position",
                "zoom_in_text",
                "zoom_in_title",
                "zoom_out_text",
                "zoom_out_title"
              ],
              "position": "topleft",
              "zoom_in_text": "+",
              "zoom_in_title": "Zoom in",
              "zoom_out_text": "-",
              "zoom_out_title": "Zoom out"
            }
          },
          "357402c533564ed7b9ad4db576084c8a": {
            "model_module": "jupyter-leaflet",
            "model_name": "LeafletFullScreenControlModel",
            "model_module_version": "^0.20",
            "state": {
              "_model_module": "jupyter-leaflet",
              "_model_module_version": "^0.20",
              "_model_name": "LeafletFullScreenControlModel",
              "_view_count": null,
              "_view_module": "jupyter-leaflet",
              "_view_module_version": "^0.20",
              "_view_name": "LeafletFullScreenControlView",
              "options": [
                "position"
              ],
              "position": "topleft"
            }
          },
          "8387ac47d1314e8c850a345b1041eb18": {
            "model_module": "jupyter-leaflet",
            "model_name": "LeafletDrawControlModel",
            "model_module_version": "^0.20",
            "state": {
              "_model_module": "jupyter-leaflet",
              "_model_module_version": "^0.20",
              "_model_name": "LeafletDrawControlModel",
              "_view_count": null,
              "_view_module": "jupyter-leaflet",
              "_view_module_version": "^0.20",
              "_view_name": "LeafletDrawControlView",
              "circle": {},
              "circlemarker": {},
              "data": [],
              "edit": true,
              "marker": {
                "shapeOptions": {
                  "color": "#3388ff"
                }
              },
              "options": [
                "position"
              ],
              "polygon": {
                "shapeOptions": {}
              },
              "polyline": {
                "shapeOptions": {}
              },
              "position": "topleft",
              "rectangle": {
                "shapeOptions": {
                  "color": "#3388ff"
                }
              },
              "remove": true
            }
          },
          "da1d9b8ab3d54b2eaf6941197f581440": {
            "model_module": "jupyter-leaflet",
            "model_name": "LeafletScaleControlModel",
            "model_module_version": "^0.20",
            "state": {
              "_model_module": "jupyter-leaflet",
              "_model_module_version": "^0.20",
              "_model_name": "LeafletScaleControlModel",
              "_view_count": null,
              "_view_module": "jupyter-leaflet",
              "_view_module_version": "^0.20",
              "_view_name": "LeafletScaleControlView",
              "imperial": true,
              "max_width": 100,
              "metric": true,
              "options": [
                "imperial",
                "max_width",
                "metric",
                "position",
                "update_when_idle"
              ],
              "position": "bottomleft",
              "update_when_idle": false
            }
          },
          "41a012fffda34eebb99ca4c175f0ee7f": {
            "model_module": "jupyter-leaflet",
            "model_name": "LeafletAttributionControlModel",
            "model_module_version": "^0.20",
            "state": {
              "_model_module": "jupyter-leaflet",
              "_model_module_version": "^0.20",
              "_model_name": "LeafletAttributionControlModel",
              "_view_count": null,
              "_view_module": "jupyter-leaflet",
              "_view_module_version": "^0.20",
              "_view_name": "LeafletAttributionControlView",
              "options": [
                "position",
                "prefix"
              ],
              "position": "bottomright",
              "prefix": "ipyleaflet"
            }
          },
          "8ef5a411c6c34a84968c8c1fe8411405": {
            "model_module": "jupyter-leaflet",
            "model_name": "LeafletMapStyleModel",
            "model_module_version": "^0.20",
            "state": {
              "_model_module": "jupyter-leaflet",
              "_model_module_version": "^0.20",
              "_model_name": "LeafletMapStyleModel",
              "_view_count": null,
              "_view_module": "@jupyter-widgets/base",
              "_view_module_version": "1.2.0",
              "_view_name": "StyleView",
              "cursor": "grab"
            }
          },
          "5a3bda70992e40ce8d5474c4a3442871": {
            "model_module": "jupyter-leaflet",
            "model_name": "LeafletMapStyleModel",
            "model_module_version": "^0.20",
            "state": {
              "_model_module": "jupyter-leaflet",
              "_model_module_version": "^0.20",
              "_model_name": "LeafletMapStyleModel",
              "_view_count": null,
              "_view_module": "@jupyter-widgets/base",
              "_view_module_version": "1.2.0",
              "_view_name": "StyleView",
              "cursor": "move"
            }
          },
          "9fc868f311ac468790021dfa3441e0ce": {
            "model_module": "jupyter-leaflet",
            "model_name": "LeafletTileLayerModel",
            "model_module_version": "^0.20",
            "state": {
              "_model_module": "jupyter-leaflet",
              "_model_module_version": "^0.20",
              "_model_name": "LeafletTileLayerModel",
              "_view_count": null,
              "_view_module": "jupyter-leaflet",
              "_view_module_version": "^0.20",
              "_view_name": "LeafletTileLayerView",
              "attribution": "&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors",
              "base": true,
              "bottom": true,
              "bounds": null,
              "detect_retina": false,
              "loading": false,
              "max_native_zoom": null,
              "max_zoom": 18,
              "min_native_zoom": null,
              "min_zoom": 1,
              "name": "OpenStreetMap.DE",
              "no_wrap": false,
              "opacity": 1,
              "options": [
                "attribution",
                "bounds",
                "detect_retina",
                "max_native_zoom",
                "max_zoom",
                "min_native_zoom",
                "min_zoom",
                "no_wrap",
                "pm_ignore",
                "tile_size",
                "tms",
                "zoom_offset"
              ],
              "pane": "",
              "pm_ignore": true,
              "popup": null,
              "popup_max_height": null,
              "popup_max_width": 300,
              "popup_min_width": 50,
              "show_loading": false,
              "snap_ignore": true,
              "subitems": [],
              "tile_size": 256,
              "tms": false,
              "url": "https://tile.openstreetmap.de/{z}/{x}/{y}.png",
              "visible": true,
              "zoom_offset": 0
            }
          },
          "aee28f9c998e4ef695f0a0c0074ebc88": {
            "model_module": "jupyter-leaflet",
            "model_name": "LeafletTileLayerModel",
            "model_module_version": "^0.20",
            "state": {
              "_model_module": "jupyter-leaflet",
              "_model_module_version": "^0.20",
              "_model_name": "LeafletTileLayerModel",
              "_view_count": null,
              "_view_module": "jupyter-leaflet",
              "_view_module_version": "^0.20",
              "_view_name": "LeafletTileLayerView",
              "attribution": "Google Earth Engine",
              "base": false,
              "bottom": true,
              "bounds": null,
              "detect_retina": false,
              "loading": false,
              "max_native_zoom": null,
              "max_zoom": 24,
              "min_native_zoom": null,
              "min_zoom": 0,
              "name": "PARDIG 24h Rainfall Accumulation (mm)",
              "no_wrap": false,
              "opacity": 0.75,
              "options": [
                "attribution",
                "bounds",
                "detect_retina",
                "max_native_zoom",
                "max_zoom",
                "min_native_zoom",
                "min_zoom",
                "no_wrap",
                "pm_ignore",
                "tile_size",
                "tms",
                "zoom_offset"
              ],
              "pane": "",
              "pm_ignore": true,
              "popup": null,
              "popup_max_height": null,
              "popup_max_width": 300,
              "popup_min_width": 50,
              "show_loading": false,
              "snap_ignore": true,
              "subitems": [],
              "tile_size": 256,
              "tms": false,
              "url": "https://earthengine.googleapis.com/v1/projects/anthromet-prod/maps/8684acd1dc4ebb8452bfcf8c21a70074-944c8cd8625516739d5d0a232e643893/tiles/{z}/{x}/{y}",
              "visible": true,
              "zoom_offset": 0
            }
          },
          "6c4aa18bb0eb47c1a48f845aa9fee312": {
            "model_module": "jupyter-leaflet",
            "model_name": "LeafletTileLayerModel",
            "model_module_version": "^0.20",
            "state": {
              "_model_module": "jupyter-leaflet",
              "_model_module_version": "^0.20",
              "_model_name": "LeafletTileLayerModel",
              "_view_count": null,
              "_view_module": "jupyter-leaflet",
              "_view_module_version": "^0.20",
              "_view_name": "LeafletTileLayerView",
              "attribution": "Google Earth Engine",
              "base": false,
              "bottom": true,
              "bounds": null,
              "detect_retina": false,
              "loading": false,
              "max_native_zoom": null,
              "max_zoom": 24,
              "min_native_zoom": null,
              "min_zoom": 0,
              "name": "PARDIG 15-min Rain Rate (mm/h) — 12:00 UTC",
              "no_wrap": false,
              "opacity": 0.75,
              "options": [
                "attribution",
                "bounds",
                "detect_retina",
                "max_native_zoom",
                "max_zoom",
                "min_native_zoom",
                "min_zoom",
                "no_wrap",
                "pm_ignore",
                "tile_size",
                "tms",
                "zoom_offset"
              ],
              "pane": "",
              "pm_ignore": true,
              "popup": null,
              "popup_max_height": null,
              "popup_max_width": 300,
              "popup_min_width": 50,
              "show_loading": false,
              "snap_ignore": true,
              "subitems": [],
              "tile_size": 256,
              "tms": false,
              "url": "https://earthengine.googleapis.com/v1/projects/anthromet-prod/maps/cf44c0e497579fe2102acb4085e5a11c-6e5241ecf4d33a90bbf3ca7b81f79a0f/tiles/{z}/{x}/{y}",
              "visible": false,
              "zoom_offset": 0
            }
          },
          "dd3204e61c694b8aa89823c99c016bff": {
            "model_module": "@jupyter-widgets/base",
            "model_name": "LayoutModel",
            "model_module_version": "1.2.0",
            "state": {
              "_model_module": "@jupyter-widgets/base",
              "_model_module_version": "1.2.0",
              "_model_name": "LayoutModel",
              "_view_count": null,
              "_view_module": "@jupyter-widgets/base",
              "_view_module_version": "1.2.0",
              "_view_name": "LayoutView",
              "align_content": null,
              "align_items": null,
              "align_self": null,
              "border": null,
              "bottom": null,
              "display": null,
              "flex": null,
              "flex_flow": null,
              "grid_area": null,
              "grid_auto_columns": null,
              "grid_auto_flow": null,
              "grid_auto_rows": null,
              "grid_column": null,
              "grid_gap": null,
              "grid_row": null,
              "grid_template_areas": null,
              "grid_template_columns": null,
              "grid_template_rows": null,
              "height": "600px",
              "justify_content": null,
              "justify_items": null,
              "left": null,
              "margin": null,
              "max_height": null,
              "max_width": null,
              "min_height": null,
              "min_width": null,
              "object_fit": null,
              "object_position": null,
              "order": null,
              "overflow": null,
              "overflow_x": null,
              "overflow_y": null,
              "padding": null,
              "right": null,
              "top": null,
              "visibility": null,
              "width": null
            }
          },
          "d4706360248f4339bb0b9c80afad591b": {
            "model_module": "jupyter-leaflet",
            "model_name": "LeafletMapStyleModel",
            "model_module_version": "^0.20",
            "state": {
              "_model_module": "jupyter-leaflet",
              "_model_module_version": "^0.20",
              "_model_name": "LeafletMapStyleModel",
              "_view_count": null,
              "_view_module": "@jupyter-widgets/base",
              "_view_module_version": "1.2.0",
              "_view_name": "StyleView",
              "cursor": "grab"
            }
          },
          "98e9b183a9a04f7bbf1c5c8c57ef1d80": {
            "model_module": "@jupyter-widgets/controls",
            "model_name": "GridBoxModel",
            "model_module_version": "1.5.0",
            "state": {
              "_dom_classes": [],
              "_model_module": "@jupyter-widgets/controls",
              "_model_module_version": "1.5.0",
              "_model_name": "GridBoxModel",
              "_view_count": null,
              "_view_module": "@jupyter-widgets/controls",
              "_view_module_version": "1.5.0",
              "_view_name": "GridBoxView",
              "box_style": "",
              "children": [
                "IPY_MODEL_0831c417bdec4825b43c1ef11be6d606",
                "IPY_MODEL_4401aec07b4e4fdf9068bb2c95af3a57"
              ],
              "layout": "IPY_MODEL_468f09b65c924d189bb0dcbdda172cdc"
            }
          },
          "b4891dc96859405189029c2f6a59976b": {
            "model_module": "anywidget",
            "model_name": "AnyModel",
            "model_module_version": "~0.9.*",
            "state": {
              "_anywidget_id": "geemap.map_widgets.SearchBar",
              "_dom_classes": [
                "geemap-colab"
              ],
              "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n  for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n    if (decorator = decorators[i4])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp(target, key, result);\n  return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n  constructor(t3, e7, o5) {\n    if (this._$cssResult$ = true, o5 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n    this.cssText = t3, this.t = e7;\n  }\n  get styleSheet() {\n    let t3 = this.o;\n    const s2 = this.t;\n    if (e && void 0 === t3) {\n      const e7 = void 0 !== s2 && 1 === s2.length;\n      e7 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e7 && o.set(s2, t3));\n    }\n    return t3;\n  }\n  toString() {\n    return this.cssText;\n  }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e7) => {\n  const o5 = 1 === t3.length ? t3[0] : e7.reduce(((e8, s2, o6) => e8 + ((t4) => {\n    if (true === t4._$cssResult$) return t4.cssText;\n    if (\"number\" == typeof t4) return t4;\n    throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n  })(s2) + t3[o6 + 1]), t3[0]);\n  return new n(o5, t3, s);\n};\nvar S = (s2, o5) => {\n  if (e) s2.adoptedStyleSheets = o5.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n  else for (const e7 of o5) {\n    const o6 = document.createElement(\"style\"), n5 = t.litNonce;\n    void 0 !== n5 && o6.setAttribute(\"nonce\", n5), o6.textContent = e7.cssText, s2.appendChild(o6);\n  }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n  let e7 = \"\";\n  for (const s2 of t4.cssRules) e7 += s2.cssText;\n  return r(e7);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n  switch (s2) {\n    case Boolean:\n      t3 = t3 ? l : null;\n      break;\n    case Object:\n    case Array:\n      t3 = null == t3 ? t3 : JSON.stringify(t3);\n  }\n  return t3;\n}, fromAttribute(t3, s2) {\n  let i4 = t3;\n  switch (s2) {\n    case Boolean:\n      i4 = null !== t3;\n      break;\n    case Number:\n      i4 = null === t3 ? null : Number(t3);\n      break;\n    case Object:\n    case Array:\n      try {\n        i4 = JSON.parse(t3);\n      } catch (t4) {\n        i4 = null;\n      }\n  }\n  return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n  static addInitializer(t3) {\n    this._$Ei(), (this.l ??= []).push(t3);\n  }\n  static get observedAttributes() {\n    return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n  }\n  static createProperty(t3, s2 = y) {\n    if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n      const i4 = /* @__PURE__ */ Symbol(), r5 = this.getPropertyDescriptor(t3, i4, s2);\n      void 0 !== r5 && e2(this.prototype, t3, r5);\n    }\n  }\n  static getPropertyDescriptor(t3, s2, i4) {\n    const { get: e7, set: h4 } = r2(this.prototype, t3) ?? { get() {\n      return this[s2];\n    }, set(t4) {\n      this[s2] = t4;\n    } };\n    return { get() {\n      return e7?.call(this);\n    }, set(s3) {\n      const r5 = e7?.call(this);\n      h4.call(this, s3), this.requestUpdate(t3, r5, i4);\n    }, configurable: true, enumerable: true };\n  }\n  static getPropertyOptions(t3) {\n    return this.elementProperties.get(t3) ?? y;\n  }\n  static _$Ei() {\n    if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n    const t3 = n2(this);\n    t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n  }\n  static finalize() {\n    if (this.hasOwnProperty(d(\"finalized\"))) return;\n    if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n      const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n      for (const i4 of s2) this.createProperty(i4, t4[i4]);\n    }\n    const t3 = this[Symbol.metadata];\n    if (null !== t3) {\n      const s2 = litPropertyMetadata.get(t3);\n      if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n    }\n    this._$Eh = /* @__PURE__ */ new Map();\n    for (const [t4, s2] of this.elementProperties) {\n      const i4 = this._$Eu(t4, s2);\n      void 0 !== i4 && this._$Eh.set(i4, t4);\n    }\n    this.elementStyles = this.finalizeStyles(this.styles);\n  }\n  static finalizeStyles(s2) {\n    const i4 = [];\n    if (Array.isArray(s2)) {\n      const e7 = new Set(s2.flat(1 / 0).reverse());\n      for (const s3 of e7) i4.unshift(c(s3));\n    } else void 0 !== s2 && i4.push(c(s2));\n    return i4;\n  }\n  static _$Eu(t3, s2) {\n    const i4 = s2.attribute;\n    return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n  }\n  constructor() {\n    super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n  }\n  _$Ev() {\n    this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n  }\n  addController(t3) {\n    (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n  }\n  removeController(t3) {\n    this._$EO?.delete(t3);\n  }\n  _$E_() {\n    const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n    for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n    t3.size > 0 && (this._$Ep = t3);\n  }\n  createRenderRoot() {\n    const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n    return S(t3, this.constructor.elementStyles), t3;\n  }\n  connectedCallback() {\n    this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n  }\n  enableUpdating(t3) {\n  }\n  disconnectedCallback() {\n    this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n  }\n  attributeChangedCallback(t3, s2, i4) {\n    this._$AK(t3, i4);\n  }\n  _$EC(t3, s2) {\n    const i4 = this.constructor.elementProperties.get(t3), e7 = this.constructor._$Eu(t3, i4);\n    if (void 0 !== e7 && true === i4.reflect) {\n      const r5 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n      this._$Em = t3, null == r5 ? this.removeAttribute(e7) : this.setAttribute(e7, r5), this._$Em = null;\n    }\n  }\n  _$AK(t3, s2) {\n    const i4 = this.constructor, e7 = i4._$Eh.get(t3);\n    if (void 0 !== e7 && this._$Em !== e7) {\n      const t4 = i4.getPropertyOptions(e7), r5 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n      this._$Em = e7, this[e7] = r5.fromAttribute(s2, t4.type), this._$Em = null;\n    }\n  }\n  requestUpdate(t3, s2, i4) {\n    if (void 0 !== t3) {\n      if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n      this.P(t3, s2, i4);\n    }\n    false === this.isUpdatePending && (this._$ES = this._$ET());\n  }\n  P(t3, s2, i4) {\n    this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n  }\n  async _$ET() {\n    this.isUpdatePending = true;\n    try {\n      await this._$ES;\n    } catch (t4) {\n      Promise.reject(t4);\n    }\n    const t3 = this.scheduleUpdate();\n    return null != t3 && await t3, !this.isUpdatePending;\n  }\n  scheduleUpdate() {\n    return this.performUpdate();\n  }\n  performUpdate() {\n    if (!this.isUpdatePending) return;\n    if (!this.hasUpdated) {\n      if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n        for (const [t5, s3] of this._$Ep) this[t5] = s3;\n        this._$Ep = void 0;\n      }\n      const t4 = this.constructor.elementProperties;\n      if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n    }\n    let t3 = false;\n    const s2 = this._$AL;\n    try {\n      t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n    } catch (s3) {\n      throw t3 = false, this._$EU(), s3;\n    }\n    t3 && this._$AE(s2);\n  }\n  willUpdate(t3) {\n  }\n  _$AE(t3) {\n    this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n  }\n  _$EU() {\n    this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n  }\n  get updateComplete() {\n    return this.getUpdateComplete();\n  }\n  getUpdateComplete() {\n    return this._$ES;\n  }\n  shouldUpdate(t3) {\n    return true;\n  }\n  update(t3) {\n    this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n  }\n  updated(t3) {\n  }\n  firstUpdated(t3) {\n  }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n  if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n  return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n  const s2 = t3.length - 1, e7 = [];\n  let h4, o5 = 2 === i4 ? \"<svg>\" : 3 === i4 ? \"<math>\" : \"\", n5 = T;\n  for (let i5 = 0; i5 < s2; i5++) {\n    const s3 = t3[i5];\n    let r5, l2, c4 = -1, a2 = 0;\n    for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"</\" + l2[2], \"g\")), n5 = O) : void 0 !== l2[3] && (n5 = O) : n5 === O ? \">\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r5 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n    const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n    o5 += n5 === T ? s3 + _ : c4 >= 0 ? (e7.push(r5), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n  }\n  return [N(t3, o5 + (t3[s2] || \"<?>\") + (2 === i4 ? \"</svg>\" : 3 === i4 ? \"</math>\" : \"\")), e7];\n};\nvar B = class _B {\n  constructor({ strings: t3, _$litType$: i4 }, s2) {\n    let e7;\n    this.parts = [];\n    let h4 = 0, o5 = 0;\n    const n5 = t3.length - 1, r5 = this.parts, [l2, a2] = U(t3, i4);\n    if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n      const t4 = this.el.content.firstChild;\n      t4.replaceWith(...t4.childNodes);\n    }\n    for (; null !== (e7 = I.nextNode()) && r5.length < n5; ) {\n      if (1 === e7.nodeType) {\n        if (e7.hasAttributes()) for (const t4 of e7.getAttributeNames()) if (t4.endsWith(f2)) {\n          const i5 = a2[o5++], s3 = e7.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n          r5.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e7.removeAttribute(t4);\n        } else t4.startsWith(v) && (r5.push({ type: 6, index: h4 }), e7.removeAttribute(t4));\n        if (M.test(e7.tagName)) {\n          const t4 = e7.textContent.split(v), i5 = t4.length - 1;\n          if (i5 > 0) {\n            e7.textContent = c3 ? c3.emptyScript : \"\";\n            for (let s3 = 0; s3 < i5; s3++) e7.append(t4[s3], lt()), I.nextNode(), r5.push({ type: 2, index: ++h4 });\n            e7.append(t4[i5], lt());\n          }\n        }\n      } else if (8 === e7.nodeType) if (e7.data === m) r5.push({ type: 2, index: h4 });\n      else {\n        let t4 = -1;\n        for (; -1 !== (t4 = e7.data.indexOf(v, t4 + 1)); ) r5.push({ type: 7, index: h4 }), t4 += v.length - 1;\n      }\n      h4++;\n    }\n  }\n  static createElement(t3, i4) {\n    const s2 = w.createElement(\"template\");\n    return s2.innerHTML = t3, s2;\n  }\n};\nfunction z(t3, i4, s2 = t3, e7) {\n  if (i4 === R) return i4;\n  let h4 = void 0 !== e7 ? s2.o?.[e7] : s2.l;\n  const o5 = st(i4) ? void 0 : i4._$litDirective$;\n  return h4?.constructor !== o5 && (h4?._$AO?.(false), void 0 === o5 ? h4 = void 0 : (h4 = new o5(t3), h4._$AT(t3, s2, e7)), void 0 !== e7 ? (s2.o ??= [])[e7] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e7)), i4;\n}\nvar F = class {\n  constructor(t3, i4) {\n    this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n  }\n  get parentNode() {\n    return this._$AM.parentNode;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  u(t3) {\n    const { el: { content: i4 }, parts: s2 } = this._$AD, e7 = (t3?.creationScope ?? w).importNode(i4, true);\n    I.currentNode = e7;\n    let h4 = I.nextNode(), o5 = 0, n5 = 0, r5 = s2[0];\n    for (; void 0 !== r5; ) {\n      if (o5 === r5.index) {\n        let i5;\n        2 === r5.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r5.type ? i5 = new r5.ctor(h4, r5.name, r5.strings, this, t3) : 6 === r5.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r5 = s2[++n5];\n      }\n      o5 !== r5?.index && (h4 = I.nextNode(), o5++);\n    }\n    return I.currentNode = w, e7;\n  }\n  p(t3) {\n    let i4 = 0;\n    for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n  }\n};\nvar et = class _et {\n  get _$AU() {\n    return this._$AM?._$AU ?? this.v;\n  }\n  constructor(t3, i4, s2, e7) {\n    this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e7, this.v = e7?.isConnected ?? true;\n  }\n  get parentNode() {\n    let t3 = this._$AA.parentNode;\n    const i4 = this._$AM;\n    return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n  }\n  get startNode() {\n    return this._$AA;\n  }\n  get endNode() {\n    return this._$AB;\n  }\n  _$AI(t3, i4 = this) {\n    t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n  }\n  O(t3) {\n    return this._$AA.parentNode.insertBefore(t3, this._$AB);\n  }\n  T(t3) {\n    this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n  }\n  _(t3) {\n    this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n  }\n  $(t3) {\n    const { values: i4, _$litType$: s2 } = t3, e7 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n    if (this._$AH?._$AD === e7) this._$AH.p(i4);\n    else {\n      const t4 = new F(e7, this), s3 = t4.u(this.options);\n      t4.p(i4), this.T(s3), this._$AH = t4;\n    }\n  }\n  _$AC(t3) {\n    let i4 = V.get(t3.strings);\n    return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n  }\n  k(t3) {\n    g(this._$AH) || (this._$AH = [], this._$AR());\n    const i4 = this._$AH;\n    let s2, e7 = 0;\n    for (const h4 of t3) e7 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e7], s2._$AI(h4), e7++;\n    e7 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e7), i4.length = e7);\n  }\n  _$AR(t3 = this._$AA.nextSibling, i4) {\n    for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n      const i5 = t3.nextSibling;\n      t3.remove(), t3 = i5;\n    }\n  }\n  setConnected(t3) {\n    void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n  }\n};\nvar G = class {\n  get tagName() {\n    return this.element.tagName;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  constructor(t3, i4, s2, e7, h4) {\n    this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e7, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n  }\n  _$AI(t3, i4 = this, s2, e7) {\n    const h4 = this.strings;\n    let o5 = false;\n    if (void 0 === h4) t3 = z(this, t3, i4, 0), o5 = !st(t3) || t3 !== this._$AH && t3 !== R, o5 && (this._$AH = t3);\n    else {\n      const e8 = t3;\n      let n5, r5;\n      for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r5 = z(this, e8[s2 + n5], i4, n5), r5 === R && (r5 = this._$AH[n5]), o5 ||= !st(r5) || r5 !== this._$AH[n5], r5 === D ? t3 = D : t3 !== D && (t3 += (r5 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r5;\n    }\n    o5 && !e7 && this.j(t3);\n  }\n  j(t3) {\n    t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n  }\n};\nvar Y = class extends G {\n  constructor() {\n    super(...arguments), this.type = 3;\n  }\n  j(t3) {\n    this.element[this.name] = t3 === D ? void 0 : t3;\n  }\n};\nvar Z = class extends G {\n  constructor() {\n    super(...arguments), this.type = 4;\n  }\n  j(t3) {\n    this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n  }\n};\nvar q = class extends G {\n  constructor(t3, i4, s2, e7, h4) {\n    super(t3, i4, s2, e7, h4), this.type = 5;\n  }\n  _$AI(t3, i4 = this) {\n    if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n    const s2 = this._$AH, e7 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e7);\n    e7 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n  }\n  handleEvent(t3) {\n    \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n  }\n};\nvar K = class {\n  constructor(t3, i4, s2) {\n    this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AI(t3) {\n    z(this, t3);\n  }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n  const e7 = s2?.renderBefore ?? i4;\n  let h4 = e7._$litPart$;\n  if (void 0 === h4) {\n    const t4 = s2?.renderBefore ?? null;\n    e7._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n  }\n  return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n  constructor() {\n    super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n  }\n  createRenderRoot() {\n    const t3 = super.createRenderRoot();\n    return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n  }\n  update(t3) {\n    const e7 = this.render();\n    this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e7, this.renderRoot, this.renderOptions);\n  }\n  connectedCallback() {\n    super.connectedCallback(), this.o?.setConnected(true);\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback(), this.o?.setConnected(false);\n  }\n  render() {\n    return R;\n  }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e7, r5) => {\n  const { kind: n5, metadata: i4 } = r5;\n  let s2 = globalThis.litPropertyMetadata.get(i4);\n  if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r5.name, t3), \"accessor\" === n5) {\n    const { name: o5 } = r5;\n    return { set(r6) {\n      const n6 = e7.get.call(this);\n      e7.set.call(this, r6), this.requestUpdate(o5, n6, t3);\n    }, init(e8) {\n      return void 0 !== e8 && this.P(o5, void 0, t3), e8;\n    } };\n  }\n  if (\"setter\" === n5) {\n    const { name: o5 } = r5;\n    return function(r6) {\n      const n6 = this[o5];\n      e7.call(this, r6), this.requestUpdate(o5, n6, t3);\n    };\n  }\n  throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n  return (e7, o5) => \"object\" == typeof o5 ? r3(t3, e7, o5) : ((t4, e8, o6) => {\n    const r5 = e8.hasOwnProperty(o6);\n    return e8.constructor.createProperty(o6, r5 ? { ...t4, wrapped: true } : t4), r5 ? Object.getOwnPropertyDescriptor(e8, o6) : void 0;\n  })(t3, e7, o5);\n}\n\n// node_modules/@lit/reactive-element/decorators/base.js\nvar e3 = (e7, t3, c4) => (c4.configurable = true, c4.enumerable = true, Reflect.decorate && \"object\" != typeof t3 && Object.defineProperty(e7, t3, c4), c4);\n\n// node_modules/@lit/reactive-element/decorators/query.js\nfunction e4(e7, r5) {\n  return (n5, s2, i4) => {\n    const o5 = (t3) => t3.renderRoot?.querySelector(e7) ?? null;\n    if (r5) {\n      const { get: e8, set: r6 } = \"object\" == typeof s2 ? n5 : i4 ?? /* @__PURE__ */ (() => {\n        const t3 = /* @__PURE__ */ Symbol();\n        return { get() {\n          return this[t3];\n        }, set(e9) {\n          this[t3] = e9;\n        } };\n      })();\n      return e3(n5, s2, { get() {\n        let t3 = e8.call(this);\n        return void 0 === t3 && (t3 = o5(this), (null !== t3 || this.hasUpdated) && r6.call(this, t3)), t3;\n      } });\n    }\n    return e3(n5, s2, { get() {\n      return o5(this);\n    } });\n  };\n}\n\n// node_modules/@lit/reactive-element/decorators/query-all.js\nvar e5;\nfunction r4(r5) {\n  return (n5, o5) => e3(n5, o5, { get() {\n    return (this.renderRoot ?? (e5 ??= document.createDocumentFragment())).querySelectorAll(r5);\n  } });\n}\n\n// node_modules/@lit/reactive-element/decorators/query-assigned-elements.js\nfunction o4(o5) {\n  return (e7, n5) => {\n    const { slot: r5, selector: s2 } = o5 ?? {}, c4 = \"slot\" + (r5 ? `[name=${r5}]` : \":not([name])\");\n    return e3(e7, n5, { get() {\n      const t3 = this.renderRoot?.querySelector(c4), e8 = t3?.assignedElements(o5) ?? [];\n      return void 0 === s2 ? e8 : e8.filter(((t4) => t4.matches(s2)));\n    } });\n  };\n}\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n    .legacy-button {\n        align-items: center;\n        background-color: var(--jp-layout-color2);\n        border-width: 0;\n        box-shadow: none;\n        color: var(--jp-ui-font-color1);\n        cursor: pointer;\n        display: flex;\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        justify-content: center;\n        line-height: var(--jp-widgets-inline-height);\n        padding: 0;\n        user-select: none;\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button:hover:enabled,\n    .legacy-button:focus:enabled {\n        box-shadow: 0 2px 2px 0\n                rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n            0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n            0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n    }\n\n    .legacy-slider {\n        -webkit-appearance: none;\n        appearance: none;\n        background: var(--jp-layout-color3);\n        border-radius: 3px;\n        height: 4px;\n        outline: none;\n    }\n\n    .legacy-slider::-webkit-slider-thumb,\n    .legacy-slider::-moz-range-thumb {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        border-radius: 50%;\n        cursor: pointer;\n        height: var(--jp-widgets-slider-handle-size);\n        width: var(--jp-widgets-slider-handle-size);\n    }\n\n    .legacy-text {\n        color: var(--jp-widgets-label-color);\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        vertical-align: middle;\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: 28px;\n        line-height: 28px;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-select[disabled] {\n        opacity: 0.4;\n        cursor: not-allowed;\n    }\n\n    .legacy-text-input {\n        background: var(--jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n    }\n\n    .legacy-text-input:disabled {\n        opacity: var(--jp-widgets-disabled-opacity);\n    }\n\n    .legacy-color {\n        align-self: stretch;\n        background: var(--jp-widgets-input-background-color);\n        border-left: none;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 0;\n        flex-shrink: 0;\n        height: var(--jp-widgets-inline-height);\n        outline: none !important;\n        padding: 0 2px;\n        width: var(--jp-widgets-inline-height);\n    }\n\n    .legacy-radio {\n        margin: 0;\n        vertical-align: middle;\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: inherit;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-input {\n        box-sizing: border-box;\n        background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n    }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n  if (!document.querySelector(\".custom-fonts\")) {\n    const styleElement = document.createElement(\"style\");\n    styleElement.classList.add(\"custom-fonts\");\n    styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n    document.body.appendChild(styleElement);\n  }\n}\nfunction reverseMap(map) {\n  const reversedMap = /* @__PURE__ */ new Map();\n  for (const [key, value] of map.entries()) {\n    if (value != null) {\n      reversedMap.set(value, key);\n    }\n  }\n  return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n  constructor() {\n    super(...arguments);\n    this._model = void 0;\n  }\n  onCustomMessage(_msg) {\n  }\n  viewNameToModelName() {\n    return reverseMap(this.modelNameToViewName());\n  }\n  set model(model) {\n    this._model = model;\n    for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n      if (widgetKey) {\n        this[widgetKey] = model.get(modelKey);\n        model.on(`change:${String(modelKey)}`, () => {\n          this[widgetKey] = model.get(modelKey);\n        });\n      }\n    }\n    model.on(\"msg:custom\", (msg) => {\n      this.onCustomMessage?.(msg);\n    });\n  }\n  get model() {\n    return this._model;\n  }\n  updated(changedProperties) {\n    const viewToModelMap = this.viewNameToModelName();\n    for (const [viewProp, _2] of changedProperties) {\n      const castViewProp = viewProp;\n      if (viewToModelMap.has(castViewProp)) {\n        const modelProp = viewToModelMap.get(castViewProp);\n        this._model?.set(\n          modelProp,\n          this[castViewProp]\n        );\n      }\n    }\n    this._model?.save_changes();\n  }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n    @font-face {\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: 400;\n        src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n            format(\"woff2\");\n    }\n\n    .material-symbols-outlined {\n        -webkit-font-feature-settings: \"liga\";\n        -webkit-font-smoothing: antialiased;\n        direction: ltr;\n        display: inline-block;\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: normal;\n        letter-spacing: normal;\n        line-height: 1;\n        text-transform: none;\n        white-space: nowrap;\n        word-wrap: normal;\n    }\n`;\nvar flexStyles = i`\n    .vertical-flex {\n        display: flex;\n        flex-direction: column;\n        gap: 8px;\n    }\n\n    .horizontal-flex {\n        align-items: center;\n        display: flex;\n        flex-wrap: nowrap;\n        gap: 8px;\n    }\n\n    input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n        width: 100%;\n    }\n\n    select {\n        width: 100%;\n    }\n\n    .horizontal-flex .legacy-text {\n        flex-shrink: 0;\n    }\n`;\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e6 = (t3) => (...e7) => ({ _$litDirective$: t3, values: e7 });\nvar i3 = class {\n  constructor(t3) {\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AT(t3, e7, i4) {\n    this.t = t3, this._$AM = e7, this.i = i4;\n  }\n  _$AS(t3, e7) {\n    return this.update(t3, e7);\n  }\n  update(t3, e7) {\n    return this.render(...e7);\n  }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e6(class extends i3 {\n  constructor(s2) {\n    if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n  }\n  render(t3) {\n    return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n  }\n  update(t3, [s2]) {\n    if (void 0 === this.st) {\n      this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n      for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n      return this.render(s2);\n    }\n    const i4 = t3.element.classList;\n    for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n    for (const t4 in s2) {\n      const r5 = !!s2[t4];\n      r5 === this.st.has(t4) || this.nt?.has(t4) || (r5 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n    }\n    return R;\n  }\n});\n\n// node_modules/lit-html/directives/style-map.js\nvar ee = \"important\";\nvar ie = \" !\" + ee;\nvar se = e6(class extends i3 {\n  constructor(e7) {\n    if (super(e7), e7.type !== t2.ATTRIBUTE || \"style\" !== e7.name || e7.strings?.length > 2) throw Error(\"The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.\");\n  }\n  render(t3) {\n    return Object.keys(t3).reduce(((e7, r5) => {\n      const s2 = t3[r5];\n      return null == s2 ? e7 : e7 + `${r5 = r5.includes(\"-\") ? r5 : r5.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g, \"-$&\").toLowerCase()}:${s2};`;\n    }), \"\");\n  }\n  update(t3, [e7]) {\n    const { style: r5 } = t3.element;\n    if (void 0 === this.ft) return this.ft = new Set(Object.keys(e7)), this.render(e7);\n    for (const t4 of this.ft) null == e7[t4] && (this.ft.delete(t4), t4.includes(\"-\") ? r5.removeProperty(t4) : r5[t4] = null);\n    for (const t4 in e7) {\n      const s2 = e7[t4];\n      if (null != s2) {\n        this.ft.add(t4);\n        const e8 = \"string\" == typeof s2 && s2.endsWith(ie);\n        t4.includes(\"-\") || e8 ? r5.setProperty(t4, e8 ? s2.slice(0, -11) : s2, e8 ? ee : \"\") : r5[t4] = s2;\n      }\n    }\n    return R;\n  }\n});\n\n// js/tab_panel.ts\nfunction convertToId(name) {\n  return (name || \"\").trim().replace(\" \", \"-\").toLowerCase();\n}\nvar TabPanel = class extends h3 {\n  constructor() {\n    super(...arguments);\n    this.tabs = [];\n    this.index = 0;\n    this.mode = 1 /* HIDE_ON_SECOND_CLICK */;\n    this.alignment = \"left\" /* LEFT */;\n  }\n  static get componentName() {\n    return `tab-panel`;\n  }\n  static {\n    this.styles = [\n      legacyStyles,\n      materialStyles,\n      i`\n            ::slotted(*) {\n                display: none;\n            }\n\n            ::slotted(.show-tab) {\n                display: block;\n            }\n\n            .container {\n                padding: 0;\n                width: 100%;\n            }\n\n            .tab-container {\n                align-items: center;\n                display: flex;\n                flex-direction: row;\n            }\n\n            .tab-container.center {\n                justify-content: center;\n            }\n\n            .tab-container.left {\n                justify-content: flex-start;\n            }\n\n            .tab-container.right {\n                justify-content: flex-end;\n            }\n\n            .tab-container button {\n                border-radius: 5px;\n                height: 28px;\n                margin: 2px 0 2px 8px;\n                user-select: none;\n            }\n\n            .tab-container button.icon {\n                font-size: 16px;\n                width: 28px;\n            }\n\n            .tab-container button.name {\n                padding: 0 8px;\n            }\n        `\n    ];\n  }\n  render() {\n    return ke`\n            <div class=\"container\">\n                <div\n                    role=\"tablist\"\n                    class=\"${Rt({\n      \"tab-container\": true,\n      \"center\": this.alignment === \"center\" /* CENTER */,\n      \"left\": this.alignment === \"left\" /* LEFT */,\n      \"right\": this.alignment === \"right\" /* RIGHT */\n    })}\">\n                    ${this.renderTabs()}\n                </div>\n                <slot @slotchange=${this.updateSlotChildren}></slot>\n            </div>\n        `;\n  }\n  update(changedProperties) {\n    super.update(changedProperties);\n    if (changedProperties.has(\"index\") && changedProperties.get(\"index\") != null) {\n      this.updateSlotChildren();\n    }\n  }\n  updateSlotChildren() {\n    if (!this.tabContentElements) {\n      return;\n    }\n    this.tabContentElements.forEach((element, i4) => {\n      element.classList.remove(\"show-tab\");\n      const id = convertToId(this.tabs[i4].name);\n      element.setAttribute(\"id\", `tabpanel-${id}-${i4}`);\n      element.setAttribute(\"role\", \"tabpanel\");\n      element.setAttribute(\"aria-labelledby\", `tab-${id}-${i4}`);\n    });\n    this.tabContentElements[this.index]?.classList.add(\"show-tab\");\n  }\n  renderTabs() {\n    return this.tabs.map((tab, i4) => {\n      const id = convertToId(this.tabs[i4].name);\n      return ke`<button\n                            id=\"tab-${id}-${i4}\"\n                            class=\"${Rt({\n        \"legacy-button\": true,\n        \"active\": i4 === this.index,\n        \"icon\": !!tab.icon,\n        \"name\": !!tab.name\n      })}\"\n                            style=\"${se({\n        width: tab.width ? `${tab.width}px` : null\n      })}\"\n                            type=\"button\"\n                            role=\"tab\"\n                            aria-selected=\"${i4 === this.index ? true : false}\"\n                            aria-controls=\"tabpanel-${id}-${i4}\"\n                            @click=${() => {\n        this.onTabClick(i4);\n      }}>\n                            ${tab.icon ? ke`<span class=\"material-symbols-outlined\">${tab.icon}</span>` : D}\n                            <span>${tab.name}</span>\n                        </button>`;\n    });\n  }\n  onTabClick(index) {\n    switch (this.mode) {\n      case 1 /* HIDE_ON_SECOND_CLICK */:\n        this.index = this.index === index ? -1 : index;\n        break;\n      case 0 /* ALWAYS_SHOW */:\n      default:\n        this.index = index;\n    }\n    this.dispatchEvent(new CustomEvent(\"tab-changed\", {\n      detail: index\n    }));\n  }\n};\n__decorateClass([\n  n4({ type: Array })\n], TabPanel.prototype, \"tabs\", 2);\n__decorateClass([\n  n4({ type: Number })\n], TabPanel.prototype, \"index\", 2);\n__decorateClass([\n  n4({ type: Number })\n], TabPanel.prototype, \"mode\", 2);\n__decorateClass([\n  n4({ type: String })\n], TabPanel.prototype, \"alignment\", 2);\n__decorateClass([\n  r4(\".tab\")\n], TabPanel.prototype, \"tabElements\", 2);\n__decorateClass([\n  o4()\n], TabPanel.prototype, \"tabContentElements\", 2);\nif (!customElements.get(TabPanel.componentName)) {\n  customElements.define(TabPanel.componentName, TabPanel);\n}\n\n// node_modules/lit-html/directives/unsafe-html.js\nvar le = class extends i3 {\n  constructor(i4) {\n    if (super(i4), this.it = D, i4.type !== t2.CHILD) throw Error(this.constructor.directiveName + \"() can only be used in child bindings\");\n  }\n  render(t3) {\n    if (t3 === D || null == t3) return this._t = void 0, this.it = t3;\n    if (t3 === R) return t3;\n    if (\"string\" != typeof t3) throw Error(this.constructor.directiveName + \"() called with a non-string value\");\n    if (t3 === this.it) return this._t;\n    this.it = t3;\n    const i4 = [t3];\n    return i4.raw = i4, this._t = { _$litType$: this.constructor.resultType, strings: i4, values: [] };\n  }\n};\nle.directiveName = \"unsafeHTML\", le.resultType = 1;\nvar ae = e6(le);\n\n// js/container.ts\nvar Container = class extends LitWidget {\n  constructor() {\n    super(...arguments);\n    this.icon = \"\";\n    this.title = \"\";\n    this.collapsed = false;\n    this.hideCloseButton = false;\n    this.compactMode = false;\n    this.noHeader = false;\n    this.reverseHeader = false;\n  }\n  static get componentName() {\n    return `widget-container`;\n  }\n  static {\n    this.styles = [\n      legacyStyles,\n      materialStyles,\n      i`\n            .container {\n                background: var(--jp-layout-color1);\n                border-radius: 4.5px;\n                box-shadow: 4px 5px 8px 0px #9e9e9e;\n            }\n\n            div {\n                background-color: var(--colab-primary-surface-color, --jp-layout-color1, white);\n            }\n\n            .header {\n                display: flex;\n                gap: 4px;\n                padding: 4px;\n            }\n\n            .reversed {\n                flex-direction: row-reverse;\n            }\n\n            .icon {\n                align-items: center;\n                display: flex;\n                font-size: 20px;\n                height: 28px;\n                justify-content: center;\n                padding: 0 4px;\n            }\n\n            .widget-container {\n                padding: 8px 12px 12px 12px;\n            }\n\n            .hidden {\n                display: none;\n            }\n\n            .header-button {\n                font-size: 16px;\n                height: 28px;\n                width: 28px;\n            }\n\n            .compact-header-button {\n                background: transparent;\n                font-size: 16px;\n                height: 28px;\n                width: 28px;\n            }\n\n            .header-text {\n                align-content: center;\n                flex-grow: 1;\n                padding: 0 12px 0 0;\n            }\n\n            .left-padding {\n                padding-left: 8px;\n            }\n        `\n    ];\n  }\n  modelNameToViewName() {\n    return /* @__PURE__ */ new Map([\n      [\"icon\", \"icon\"],\n      [\"collapsed\", \"collapsed\"],\n      [\"title\", \"title\"],\n      [\"hide_close_button\", \"hideCloseButton\"]\n    ]);\n  }\n  render() {\n    return ke`\n            <div class=\"container\">\n                ${this.noHeader ? D : this.renderHeader()}\n                <div class=\"widget-container ${this.collapsed ? \"hidden\" : \"\"}\">\n                    <slot></slot>\n                </div>\n            </div>\n        `;\n  }\n  renderHeader() {\n    return this.compactMode ? this.renderCompactHeader() : ke`\n            <div class=\"header ${this.reverseHeader ? \"reversed\" : \"\"}\">\n                ${this.renderIcon()}\n                ${this.title ? this.renderTitle() : D}\n                ${this.renderCollapseButton()}\n                ${this.renderCloseButton()}\n            </div>`;\n  }\n  renderCompactHeader() {\n    return ke`<div class=\"header ${this.reverseHeader ? \"reversed\" : \"\"}\">\n            ${this.renderCollapseButton()}\n            ${this.title && !this.collapsed ? this.renderTitle() : D}\n            ${this.renderCloseButton()}\n        </div>`;\n  }\n  renderCloseButton() {\n    if (this.hideCloseButton) {\n      return D;\n    }\n    return ke`\n            <button\n                class=\"legacy-button primary header-button\"\n                @click=\"${this.onCloseButtonClicked}\"\n            >\n                <span class=\"material-symbols-outlined\">&#xe5cd;</span>\n            </button>\n        `;\n  }\n  renderTitle() {\n    return ke`<span\n            class=\"${Rt({\n      \"legacy-text\": true,\n      \"header-text\": true,\n      \"left-padding\": this.compactMode && this.title && !this.reverseHeader\n    })}\"\n            >${this.title}</span\n        >`;\n  }\n  onCloseButtonClicked() {\n    this.dispatchEvent(new CustomEvent(\"close-clicked\", {}));\n  }\n  onCollapseToggled() {\n    this.collapsed = !this.collapsed;\n    this.dispatchEvent(new CustomEvent(\"collapse-clicked\", {}));\n  }\n  renderIcon() {\n    return ke`<span class=\"icon material-symbols-outlined\">\n                        ${this.icon}\n                    </span>`;\n  }\n  renderCollapseButton() {\n    let icon;\n    if (this.compactMode) {\n      icon = this.renderIcon();\n    } else if (this.collapsed) {\n      icon = ke`<span class=\"material-symbols-outlined\"\n                >&#xf830;</span\n            >`;\n    } else {\n      icon = ke`<span class=\"material-symbols-outlined\">&#xf507;</span>`;\n    }\n    return ke`<button\n            class=\"${Rt({\n      \"legacy-button\": true,\n      \"header-button\": !this.compactMode,\n      \"compact-header-button\": this.compactMode,\n      \"active\": !this.collapsed\n    })}\"\n            class=\"legacy-button header-button\"\n            @click=\"${this.onCollapseToggled}\"\n        >\n            ${icon}\n        </button>`;\n  }\n};\n__decorateClass([\n  n4({ type: String })\n], Container.prototype, \"icon\", 2);\n__decorateClass([\n  n4({ type: String })\n], Container.prototype, \"title\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], Container.prototype, \"collapsed\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], Container.prototype, \"hideCloseButton\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], Container.prototype, \"compactMode\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], Container.prototype, \"noHeader\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], Container.prototype, \"reverseHeader\", 2);\nif (!customElements.get(Container.componentName)) {\n  customElements.define(Container.componentName, Container);\n}\n\n// js/search_bar.ts\nvar SearchBar = class extends LitWidget {\n  constructor() {\n    super(...arguments);\n    this.collapsed = true;\n    this.tab_index = 0;\n    this.locationModel = JSON.stringify({\n      search: \"\",\n      results: [],\n      selected: \"\",\n      additional_html: \"\"\n    });\n    this.datasetModel = JSON.stringify({\n      search: \"\",\n      results: [],\n      selected: \"\",\n      additional_html: \"\"\n    });\n  }\n  static get componentName() {\n    return `search-bar`;\n  }\n  static {\n    this.styles = [\n      legacyStyles,\n      materialStyles,\n      i`\n            .row {\n                display: flex;\n                gap: 6px;\n            }\n\n            .input-container {\n                max-width: 320px;\n            }\n\n            .input-container > p {\n                margin: 8px 3px;\n            }\n\n            input.search {\n                margin: 2px 2px 8px 2px;\n                width: calc(100% - 4px);\n            }\n\n            ul.results {\n                list-style-type: none;\n                margin: 0;\n                margin-bottom: 4px;\n                padding: 8px 0;\n            }\n\n            label.result {\n                align-items: center;\n                display: flex;\n                margin-bottom: 4px;\n            }\n\n            .import-button, .reset-button {\n                margin: 0 2px 2px 2px;\n                padding: 0 8px;\n                white-space: nowrap;\n            }\n\n            .dataset-select {\n                margin-bottom: 2px;\n                margin-right: 2px;\n            }\n\n            .additional-html-container {\n                max-height: 300px;\n                overflow: auto;\n                padding: 8px 0;\n            }\n\n            .additional-html-container pre {\n                white-space: break-spaces;\n            }\n        `\n    ];\n  }\n  modelNameToViewName() {\n    return /* @__PURE__ */ new Map([\n      [\"collapsed\", \"collapsed\"],\n      [\"tab_index\", \"tab_index\"],\n      [\"location_model\", \"locationModel\"],\n      [\"dataset_model\", \"datasetModel\"]\n    ]);\n  }\n  render() {\n    return ke`\n            <widget-container\n                icon=\"search\"\n                title=\"Search\"\n                .collapsed=\"${this.collapsed}\"\n                .hideCloseButton=\"${true}\"\n                .compactMode=\"${true}\">\n                <tab-panel\n                    .index=\"${this.tab_index}\"\n                    .tabs=${[\n      { name: \"location\", width: 110 },\n      { name: \"data\", width: 110 }\n    ]}\n                    @tab-changed=${(e7) => {\n      this.tab_index = e7.detail;\n    }}\n                    .mode=\"${0 /* ALWAYS_SHOW */}\">\n                    <div class=\"input-container location-container\">\n                        ${this.renderLocationSearch()}\n                    </div>\n                    <div class=\"input-container dataset-container\">\n                        ${this.renderDatasetSearch()}\n                    </div>\n                </tab-panel>\n            </widget-container>`;\n  }\n  renderLocationSearch() {\n    const locationModel = JSON.parse(this.locationModel);\n    const helpText = ke`<p>\n            Find your point of interest (by place name,\n            address, or coordinates, e.g. 40,-100)\n        </p>`;\n    const searchInput = ke`<input\n            class=\"legacy-input search location-search\"\n            type=\"search\"\n            placeholder=\"Search by location / lat-lon\"\n            @keydown=\"${(e7) => {\n      if (e7.key === \"Enter\") {\n        e7.preventDefault();\n        const locationModel2 = JSON.parse(this.locationModel);\n        locationModel2.search = this.locationSearch.value || \"\";\n        this.locationModel = JSON.stringify(locationModel2);\n      }\n    }}\" />`;\n    const renderedInputs = [helpText, searchInput];\n    if (locationModel.results.length) {\n      const results = ke`\n                ${locationModel.results.map((result) => ke`\n                    <li>\n                        <label class=\"result\">\n                            <input\n                            type=\"radio\"\n                            name=\"location-result\"\n                            value=\"${result}\"\n                            .checked=\"${locationModel.selected === result}\"\n                            @input=\"${(e7) => {\n        const input = e7.target;\n        const locationModel2 = JSON.parse(this.locationModel);\n        locationModel2.selected = input.value || \"\";\n        this.locationModel = JSON.stringify(locationModel2);\n      }}\" />\n                            <span>${result}</span>\n                        </label>\n                    </li>`)}\n            `;\n      renderedInputs.push(ke`<ul class=\"results location-results\">\n                ${results}\n            </ul>`);\n    }\n    if (locationModel.additional_html) {\n      renderedInputs.push(ke`<div class=\"additional-html-container\">\n                ${ae(locationModel.additional_html)}\n            </div>`);\n    }\n    if (locationModel.search || locationModel.results.length || locationModel.selected) {\n      renderedInputs.push(ke`<button\n                    class=\"legacy-button primary reset-button\"\n                    @click=\"${() => {\n        this.locationModel = JSON.stringify({\n          search: \"\",\n          results: [],\n          selected: \"\",\n          additional_html: \"\"\n        });\n        if (this.locationSearch) {\n          this.locationSearch.value = \"\";\n        }\n      }}\">Reset</button>`);\n    }\n    return renderedInputs;\n  }\n  renderDatasetSearch() {\n    const datasetModel = JSON.parse(this.datasetModel);\n    const helpText = ke`<p>\n            Find a dataset by GEE data catalog name or keywords, e.g. elevation\n        </p>`;\n    const searchInput = ke`<input\n            class=\"legacy-input search dataset-search\"\n            type=\"search\"\n            placeholder=\"Search dataset / keywords\"\n            @keydown=\"${(e7) => {\n      if (e7.key === \"Enter\") {\n        e7.preventDefault();\n        const datasetModel2 = JSON.parse(this.datasetModel);\n        datasetModel2.search = this.datasetSearch?.value || \"\";\n        this.datasetModel = JSON.stringify(datasetModel2);\n      }\n    }}\" />`;\n    const renderedInputs = [helpText, searchInput];\n    const importButton = ke`<button\n            class=\"legacy-button primary import-button\"\n            title=\"Click to import the selected asset\"\n            @click=\"${() => {\n      this.model?.send({ type: \"click\", id: \"import\" });\n    }}\">\n            Reveal Code\n        </button>`;\n    const results = ke`\n            <select\n                class=\"legacy-select dataset-select\"\n                @input=\"${(e7) => {\n      const input = e7.target;\n      const datasetModel2 = JSON.parse(this.datasetModel);\n      datasetModel2.selected = input.value || \"\";\n      this.datasetModel = JSON.stringify(datasetModel2);\n    }}\">\n                ${datasetModel.results.map((result) => ke`\n                <option>\n                    ${result}\n                </option>\n                `)}\n            </select>\n        `;\n    renderedInputs.push(\n      ke`<div class=\"row\">\n                ${importButton}\n                ${results}\n            </div>`\n    );\n    if (datasetModel.additional_html) {\n      renderedInputs.push(ke`<div class=\"additional-html-container\">\n                ${ae(datasetModel.additional_html)}\n            </div>`);\n    }\n    return renderedInputs;\n  }\n};\n__decorateClass([\n  n4()\n], SearchBar.prototype, \"collapsed\", 2);\n__decorateClass([\n  n4()\n], SearchBar.prototype, \"tab_index\", 2);\n__decorateClass([\n  n4()\n], SearchBar.prototype, \"locationModel\", 2);\n__decorateClass([\n  n4()\n], SearchBar.prototype, \"datasetModel\", 2);\n__decorateClass([\n  e4(\".location-search\")\n], SearchBar.prototype, \"locationSearch\", 2);\n__decorateClass([\n  r4(\".location-results input\")\n], SearchBar.prototype, \"locationResults\", 2);\n__decorateClass([\n  e4(\".dataset-search\")\n], SearchBar.prototype, \"datasetSearch\", 2);\nif (!customElements.get(SearchBar.componentName)) {\n  customElements.define(SearchBar.componentName, SearchBar);\n}\nasync function render({ model, el }) {\n  loadFonts();\n  const row = document.createElement(SearchBar.componentName);\n  row.model = model;\n  el.appendChild(row);\n}\nvar search_bar_default = { render };\nexport {\n  SearchBar,\n  search_bar_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n  (**\n   * @license\n   * Copyright 2019 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\nlit-html/directives/unsafe-html.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/is-server.js:\n  (**\n   * @license\n   * Copyright 2022 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n  (**\n   * @license\n   * Copyright 2021 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/directives/class-map.js:\nlit-html/directives/style-map.js:\n  (**\n   * @license\n   * Copyright 2018 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n*/\n",
              "_model_module": "anywidget",
              "_model_module_version": "~0.9.*",
              "_model_name": "AnyModel",
              "_view_count": null,
              "_view_module": "anywidget",
              "_view_module_version": "~0.9.*",
              "_view_name": "AnyView",
              "collapsed": true,
              "dataset_model": "{\"search\": \"\", \"results\": [], \"selected\": \"\", \"additional_html\": \"\"}",
              "layout": "IPY_MODEL_ef0aae39006645c2a93e2e63ff2ef57c",
              "location_model": "{\"search\": \"\", \"results\": [], \"selected\": \"\", \"additional_html\": \"\"}",
              "tab_index": 0
            }
          },
          "0831c417bdec4825b43c1ef11be6d606": {
            "model_module": "anywidget",
            "model_name": "AnyModel",
            "model_module_version": "~0.9.*",
            "state": {
              "_anywidget_id": "geemap.map_widgets.LayerManager",
              "_dom_classes": [],
              "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n  for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n    if (decorator = decorators[i4])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp(target, key, result);\n  return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n  constructor(t3, e5, o4) {\n    if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n    this.cssText = t3, this.t = e5;\n  }\n  get styleSheet() {\n    let t3 = this.o;\n    const s2 = this.t;\n    if (e && void 0 === t3) {\n      const e5 = void 0 !== s2 && 1 === s2.length;\n      e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n    }\n    return t3;\n  }\n  toString() {\n    return this.cssText;\n  }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n  const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n    if (true === t4._$cssResult$) return t4.cssText;\n    if (\"number\" == typeof t4) return t4;\n    throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n  })(s2) + t3[o5 + 1]), t3[0]);\n  return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n  if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n  else for (const e5 of o4) {\n    const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n    void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n  }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n  let e5 = \"\";\n  for (const s2 of t4.cssRules) e5 += s2.cssText;\n  return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n  switch (s2) {\n    case Boolean:\n      t3 = t3 ? l : null;\n      break;\n    case Object:\n    case Array:\n      t3 = null == t3 ? t3 : JSON.stringify(t3);\n  }\n  return t3;\n}, fromAttribute(t3, s2) {\n  let i4 = t3;\n  switch (s2) {\n    case Boolean:\n      i4 = null !== t3;\n      break;\n    case Number:\n      i4 = null === t3 ? null : Number(t3);\n      break;\n    case Object:\n    case Array:\n      try {\n        i4 = JSON.parse(t3);\n      } catch (t4) {\n        i4 = null;\n      }\n  }\n  return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n  static addInitializer(t3) {\n    this._$Ei(), (this.l ??= []).push(t3);\n  }\n  static get observedAttributes() {\n    return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n  }\n  static createProperty(t3, s2 = y) {\n    if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n      const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n      void 0 !== r4 && e2(this.prototype, t3, r4);\n    }\n  }\n  static getPropertyDescriptor(t3, s2, i4) {\n    const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n      return this[s2];\n    }, set(t4) {\n      this[s2] = t4;\n    } };\n    return { get() {\n      return e5?.call(this);\n    }, set(s3) {\n      const r4 = e5?.call(this);\n      h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n    }, configurable: true, enumerable: true };\n  }\n  static getPropertyOptions(t3) {\n    return this.elementProperties.get(t3) ?? y;\n  }\n  static _$Ei() {\n    if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n    const t3 = n2(this);\n    t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n  }\n  static finalize() {\n    if (this.hasOwnProperty(d(\"finalized\"))) return;\n    if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n      const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n      for (const i4 of s2) this.createProperty(i4, t4[i4]);\n    }\n    const t3 = this[Symbol.metadata];\n    if (null !== t3) {\n      const s2 = litPropertyMetadata.get(t3);\n      if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n    }\n    this._$Eh = /* @__PURE__ */ new Map();\n    for (const [t4, s2] of this.elementProperties) {\n      const i4 = this._$Eu(t4, s2);\n      void 0 !== i4 && this._$Eh.set(i4, t4);\n    }\n    this.elementStyles = this.finalizeStyles(this.styles);\n  }\n  static finalizeStyles(s2) {\n    const i4 = [];\n    if (Array.isArray(s2)) {\n      const e5 = new Set(s2.flat(1 / 0).reverse());\n      for (const s3 of e5) i4.unshift(c(s3));\n    } else void 0 !== s2 && i4.push(c(s2));\n    return i4;\n  }\n  static _$Eu(t3, s2) {\n    const i4 = s2.attribute;\n    return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n  }\n  constructor() {\n    super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n  }\n  _$Ev() {\n    this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n  }\n  addController(t3) {\n    (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n  }\n  removeController(t3) {\n    this._$EO?.delete(t3);\n  }\n  _$E_() {\n    const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n    for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n    t3.size > 0 && (this._$Ep = t3);\n  }\n  createRenderRoot() {\n    const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n    return S(t3, this.constructor.elementStyles), t3;\n  }\n  connectedCallback() {\n    this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n  }\n  enableUpdating(t3) {\n  }\n  disconnectedCallback() {\n    this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n  }\n  attributeChangedCallback(t3, s2, i4) {\n    this._$AK(t3, i4);\n  }\n  _$EC(t3, s2) {\n    const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n    if (void 0 !== e5 && true === i4.reflect) {\n      const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n      this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n    }\n  }\n  _$AK(t3, s2) {\n    const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n    if (void 0 !== e5 && this._$Em !== e5) {\n      const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n      this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n    }\n  }\n  requestUpdate(t3, s2, i4) {\n    if (void 0 !== t3) {\n      if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n      this.P(t3, s2, i4);\n    }\n    false === this.isUpdatePending && (this._$ES = this._$ET());\n  }\n  P(t3, s2, i4) {\n    this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n  }\n  async _$ET() {\n    this.isUpdatePending = true;\n    try {\n      await this._$ES;\n    } catch (t4) {\n      Promise.reject(t4);\n    }\n    const t3 = this.scheduleUpdate();\n    return null != t3 && await t3, !this.isUpdatePending;\n  }\n  scheduleUpdate() {\n    return this.performUpdate();\n  }\n  performUpdate() {\n    if (!this.isUpdatePending) return;\n    if (!this.hasUpdated) {\n      if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n        for (const [t5, s3] of this._$Ep) this[t5] = s3;\n        this._$Ep = void 0;\n      }\n      const t4 = this.constructor.elementProperties;\n      if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n    }\n    let t3 = false;\n    const s2 = this._$AL;\n    try {\n      t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n    } catch (s3) {\n      throw t3 = false, this._$EU(), s3;\n    }\n    t3 && this._$AE(s2);\n  }\n  willUpdate(t3) {\n  }\n  _$AE(t3) {\n    this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n  }\n  _$EU() {\n    this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n  }\n  get updateComplete() {\n    return this.getUpdateComplete();\n  }\n  getUpdateComplete() {\n    return this._$ES;\n  }\n  shouldUpdate(t3) {\n    return true;\n  }\n  update(t3) {\n    this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n  }\n  updated(t3) {\n  }\n  firstUpdated(t3) {\n  }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n  if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n  return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n  const s2 = t3.length - 1, e5 = [];\n  let h4, o4 = 2 === i4 ? \"<svg>\" : 3 === i4 ? \"<math>\" : \"\", n5 = T;\n  for (let i5 = 0; i5 < s2; i5++) {\n    const s3 = t3[i5];\n    let r4, l2, c4 = -1, a2 = 0;\n    for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"</\" + l2[2], \"g\")), n5 = O) : void 0 !== l2[3] && (n5 = O) : n5 === O ? \">\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n    const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n    o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n  }\n  return [N(t3, o4 + (t3[s2] || \"<?>\") + (2 === i4 ? \"</svg>\" : 3 === i4 ? \"</math>\" : \"\")), e5];\n};\nvar B = class _B {\n  constructor({ strings: t3, _$litType$: i4 }, s2) {\n    let e5;\n    this.parts = [];\n    let h4 = 0, o4 = 0;\n    const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n    if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n      const t4 = this.el.content.firstChild;\n      t4.replaceWith(...t4.childNodes);\n    }\n    for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n      if (1 === e5.nodeType) {\n        if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n          const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n          r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n        } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n        if (M.test(e5.tagName)) {\n          const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n          if (i5 > 0) {\n            e5.textContent = c3 ? c3.emptyScript : \"\";\n            for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n            e5.append(t4[i5], lt());\n          }\n        }\n      } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n      else {\n        let t4 = -1;\n        for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n      }\n      h4++;\n    }\n  }\n  static createElement(t3, i4) {\n    const s2 = w.createElement(\"template\");\n    return s2.innerHTML = t3, s2;\n  }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n  if (i4 === R) return i4;\n  let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n  const o4 = st(i4) ? void 0 : i4._$litDirective$;\n  return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n  constructor(t3, i4) {\n    this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n  }\n  get parentNode() {\n    return this._$AM.parentNode;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  u(t3) {\n    const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n    I.currentNode = e5;\n    let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n    for (; void 0 !== r4; ) {\n      if (o4 === r4.index) {\n        let i5;\n        2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n      }\n      o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n    }\n    return I.currentNode = w, e5;\n  }\n  p(t3) {\n    let i4 = 0;\n    for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n  }\n};\nvar et = class _et {\n  get _$AU() {\n    return this._$AM?._$AU ?? this.v;\n  }\n  constructor(t3, i4, s2, e5) {\n    this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n  }\n  get parentNode() {\n    let t3 = this._$AA.parentNode;\n    const i4 = this._$AM;\n    return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n  }\n  get startNode() {\n    return this._$AA;\n  }\n  get endNode() {\n    return this._$AB;\n  }\n  _$AI(t3, i4 = this) {\n    t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n  }\n  O(t3) {\n    return this._$AA.parentNode.insertBefore(t3, this._$AB);\n  }\n  T(t3) {\n    this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n  }\n  _(t3) {\n    this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n  }\n  $(t3) {\n    const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n    if (this._$AH?._$AD === e5) this._$AH.p(i4);\n    else {\n      const t4 = new F(e5, this), s3 = t4.u(this.options);\n      t4.p(i4), this.T(s3), this._$AH = t4;\n    }\n  }\n  _$AC(t3) {\n    let i4 = V.get(t3.strings);\n    return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n  }\n  k(t3) {\n    g(this._$AH) || (this._$AH = [], this._$AR());\n    const i4 = this._$AH;\n    let s2, e5 = 0;\n    for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n    e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n  }\n  _$AR(t3 = this._$AA.nextSibling, i4) {\n    for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n      const i5 = t3.nextSibling;\n      t3.remove(), t3 = i5;\n    }\n  }\n  setConnected(t3) {\n    void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n  }\n};\nvar G = class {\n  get tagName() {\n    return this.element.tagName;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  constructor(t3, i4, s2, e5, h4) {\n    this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n  }\n  _$AI(t3, i4 = this, s2, e5) {\n    const h4 = this.strings;\n    let o4 = false;\n    if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n    else {\n      const e6 = t3;\n      let n5, r4;\n      for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n    }\n    o4 && !e5 && this.j(t3);\n  }\n  j(t3) {\n    t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n  }\n};\nvar Y = class extends G {\n  constructor() {\n    super(...arguments), this.type = 3;\n  }\n  j(t3) {\n    this.element[this.name] = t3 === D ? void 0 : t3;\n  }\n};\nvar Z = class extends G {\n  constructor() {\n    super(...arguments), this.type = 4;\n  }\n  j(t3) {\n    this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n  }\n};\nvar q = class extends G {\n  constructor(t3, i4, s2, e5, h4) {\n    super(t3, i4, s2, e5, h4), this.type = 5;\n  }\n  _$AI(t3, i4 = this) {\n    if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n    const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n    e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n  }\n  handleEvent(t3) {\n    \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n  }\n};\nvar K = class {\n  constructor(t3, i4, s2) {\n    this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AI(t3) {\n    z(this, t3);\n  }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n  const e5 = s2?.renderBefore ?? i4;\n  let h4 = e5._$litPart$;\n  if (void 0 === h4) {\n    const t4 = s2?.renderBefore ?? null;\n    e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n  }\n  return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n  constructor() {\n    super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n  }\n  createRenderRoot() {\n    const t3 = super.createRenderRoot();\n    return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n  }\n  update(t3) {\n    const e5 = this.render();\n    this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n  }\n  connectedCallback() {\n    super.connectedCallback(), this.o?.setConnected(true);\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback(), this.o?.setConnected(false);\n  }\n  render() {\n    return R;\n  }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n  const { kind: n5, metadata: i4 } = r4;\n  let s2 = globalThis.litPropertyMetadata.get(i4);\n  if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n    const { name: o4 } = r4;\n    return { set(r5) {\n      const n6 = e5.get.call(this);\n      e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n    }, init(e6) {\n      return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n    } };\n  }\n  if (\"setter\" === n5) {\n    const { name: o4 } = r4;\n    return function(r5) {\n      const n6 = this[o4];\n      e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n    };\n  }\n  throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n  return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n    const r4 = e6.hasOwnProperty(o5);\n    return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n  })(t3, e5, o4);\n}\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n    .legacy-button {\n        align-items: center;\n        background-color: var(--jp-layout-color2);\n        border-width: 0;\n        box-shadow: none;\n        color: var(--jp-ui-font-color1);\n        cursor: pointer;\n        display: flex;\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        justify-content: center;\n        line-height: var(--jp-widgets-inline-height);\n        padding: 0;\n        user-select: none;\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button:hover:enabled,\n    .legacy-button:focus:enabled {\n        box-shadow: 0 2px 2px 0\n                rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n            0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n            0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n    }\n\n    .legacy-slider {\n        -webkit-appearance: none;\n        appearance: none;\n        background: var(--jp-layout-color3);\n        border-radius: 3px;\n        height: 4px;\n        outline: none;\n    }\n\n    .legacy-slider::-webkit-slider-thumb,\n    .legacy-slider::-moz-range-thumb {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        border-radius: 50%;\n        cursor: pointer;\n        height: var(--jp-widgets-slider-handle-size);\n        width: var(--jp-widgets-slider-handle-size);\n    }\n\n    .legacy-text {\n        color: var(--jp-widgets-label-color);\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        vertical-align: middle;\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: 28px;\n        line-height: 28px;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-select[disabled] {\n        opacity: 0.4;\n        cursor: not-allowed;\n    }\n\n    .legacy-text-input {\n        background: var(--jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n    }\n\n    .legacy-text-input:disabled {\n        opacity: var(--jp-widgets-disabled-opacity);\n    }\n\n    .legacy-color {\n        align-self: stretch;\n        background: var(--jp-widgets-input-background-color);\n        border-left: none;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 0;\n        flex-shrink: 0;\n        height: var(--jp-widgets-inline-height);\n        outline: none !important;\n        padding: 0 2px;\n        width: var(--jp-widgets-inline-height);\n    }\n\n    .legacy-radio {\n        margin: 0;\n        vertical-align: middle;\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: inherit;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-input {\n        box-sizing: border-box;\n        background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n    }\n`;\n\n// js/utils.ts\nasync function unpackModels(modelIds, manager) {\n  return Promise.all(\n    modelIds.map((id) => manager.get_model(id.slice(\"IPY_MODEL_\".length)))\n  );\n}\nfunction loadFonts() {\n  if (!document.querySelector(\".custom-fonts\")) {\n    const styleElement = document.createElement(\"style\");\n    styleElement.classList.add(\"custom-fonts\");\n    styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n    document.body.appendChild(styleElement);\n  }\n}\nasync function updateChildren(container, model, property = \"children\") {\n  let children = model.get(property);\n  if (!Array.isArray(children)) {\n    children = [children];\n  }\n  const child_models = await unpackModels(children, model.widget_manager);\n  const child_views = await Promise.all(\n    child_models.map((model2) => model2.widget_manager.create_view(model2))\n  );\n  container.innerHTML = ``;\n  for (const child_view of child_views) {\n    container.appendChild(child_view.el);\n  }\n}\nfunction reverseMap(map) {\n  const reversedMap = /* @__PURE__ */ new Map();\n  for (const [key, value] of map.entries()) {\n    if (value != null) {\n      reversedMap.set(value, key);\n    }\n  }\n  return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n  constructor() {\n    super(...arguments);\n    this._model = void 0;\n  }\n  onCustomMessage(_msg) {\n  }\n  viewNameToModelName() {\n    return reverseMap(this.modelNameToViewName());\n  }\n  set model(model) {\n    this._model = model;\n    for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n      if (widgetKey) {\n        this[widgetKey] = model.get(modelKey);\n        model.on(`change:${String(modelKey)}`, () => {\n          this[widgetKey] = model.get(modelKey);\n        });\n      }\n    }\n    model.on(\"msg:custom\", (msg) => {\n      this.onCustomMessage?.(msg);\n    });\n  }\n  get model() {\n    return this._model;\n  }\n  updated(changedProperties) {\n    const viewToModelMap = this.viewNameToModelName();\n    for (const [viewProp, _2] of changedProperties) {\n      const castViewProp = viewProp;\n      if (viewToModelMap.has(castViewProp)) {\n        const modelProp = viewToModelMap.get(castViewProp);\n        this._model?.set(\n          modelProp,\n          this[castViewProp]\n        );\n      }\n    }\n    this._model?.save_changes();\n  }\n};\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n  constructor(t3) {\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AT(t3, e5, i4) {\n    this.t = t3, this._$AM = e5, this.i = i4;\n  }\n  _$AS(t3, e5) {\n    return this.update(t3, e5);\n  }\n  update(t3, e5) {\n    return this.render(...e5);\n  }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n  constructor(s2) {\n    if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n  }\n  render(t3) {\n    return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n  }\n  update(t3, [s2]) {\n    if (void 0 === this.st) {\n      this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n      for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n      return this.render(s2);\n    }\n    const i4 = t3.element.classList;\n    for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n    for (const t4 in s2) {\n      const r4 = !!s2[t4];\n      r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n    }\n    return R;\n  }\n});\n\n// js/styles.ts\nvar materialStyles = i`\n    @font-face {\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: 400;\n        src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n            format(\"woff2\");\n    }\n\n    .material-symbols-outlined {\n        -webkit-font-feature-settings: \"liga\";\n        -webkit-font-smoothing: antialiased;\n        direction: ltr;\n        display: inline-block;\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: normal;\n        letter-spacing: normal;\n        line-height: 1;\n        text-transform: none;\n        white-space: nowrap;\n        word-wrap: normal;\n    }\n`;\nvar flexStyles = i`\n    .vertical-flex {\n        display: flex;\n        flex-direction: column;\n        gap: 8px;\n    }\n\n    .horizontal-flex {\n        align-items: center;\n        display: flex;\n        flex-wrap: nowrap;\n        gap: 8px;\n    }\n\n    input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n        width: 100%;\n    }\n\n    select {\n        width: 100%;\n    }\n\n    .horizontal-flex .legacy-text {\n        flex-shrink: 0;\n    }\n`;\n\n// js/container.ts\nvar Container = class extends LitWidget {\n  constructor() {\n    super(...arguments);\n    this.icon = \"\";\n    this.title = \"\";\n    this.collapsed = false;\n    this.hideCloseButton = false;\n    this.compactMode = false;\n    this.noHeader = false;\n    this.reverseHeader = false;\n  }\n  static get componentName() {\n    return `widget-container`;\n  }\n  static {\n    this.styles = [\n      legacyStyles,\n      materialStyles,\n      i`\n            .container {\n                background: var(--jp-layout-color1);\n                border-radius: 4.5px;\n                box-shadow: 4px 5px 8px 0px #9e9e9e;\n            }\n\n            div {\n                background-color: var(--colab-primary-surface-color, --jp-layout-color1, white);\n            }\n\n            .header {\n                display: flex;\n                gap: 4px;\n                padding: 4px;\n            }\n\n            .reversed {\n                flex-direction: row-reverse;\n            }\n\n            .icon {\n                align-items: center;\n                display: flex;\n                font-size: 20px;\n                height: 28px;\n                justify-content: center;\n                padding: 0 4px;\n            }\n\n            .widget-container {\n                padding: 8px 12px 12px 12px;\n            }\n\n            .hidden {\n                display: none;\n            }\n\n            .header-button {\n                font-size: 16px;\n                height: 28px;\n                width: 28px;\n            }\n\n            .compact-header-button {\n                background: transparent;\n                font-size: 16px;\n                height: 28px;\n                width: 28px;\n            }\n\n            .header-text {\n                align-content: center;\n                flex-grow: 1;\n                padding: 0 12px 0 0;\n            }\n\n            .left-padding {\n                padding-left: 8px;\n            }\n        `\n    ];\n  }\n  modelNameToViewName() {\n    return /* @__PURE__ */ new Map([\n      [\"icon\", \"icon\"],\n      [\"collapsed\", \"collapsed\"],\n      [\"title\", \"title\"],\n      [\"hide_close_button\", \"hideCloseButton\"]\n    ]);\n  }\n  render() {\n    return ke`\n            <div class=\"container\">\n                ${this.noHeader ? D : this.renderHeader()}\n                <div class=\"widget-container ${this.collapsed ? \"hidden\" : \"\"}\">\n                    <slot></slot>\n                </div>\n            </div>\n        `;\n  }\n  renderHeader() {\n    return this.compactMode ? this.renderCompactHeader() : ke`\n            <div class=\"header ${this.reverseHeader ? \"reversed\" : \"\"}\">\n                ${this.renderIcon()}\n                ${this.title ? this.renderTitle() : D}\n                ${this.renderCollapseButton()}\n                ${this.renderCloseButton()}\n            </div>`;\n  }\n  renderCompactHeader() {\n    return ke`<div class=\"header ${this.reverseHeader ? \"reversed\" : \"\"}\">\n            ${this.renderCollapseButton()}\n            ${this.title && !this.collapsed ? this.renderTitle() : D}\n            ${this.renderCloseButton()}\n        </div>`;\n  }\n  renderCloseButton() {\n    if (this.hideCloseButton) {\n      return D;\n    }\n    return ke`\n            <button\n                class=\"legacy-button primary header-button\"\n                @click=\"${this.onCloseButtonClicked}\"\n            >\n                <span class=\"material-symbols-outlined\">&#xe5cd;</span>\n            </button>\n        `;\n  }\n  renderTitle() {\n    return ke`<span\n            class=\"${Rt({\n      \"legacy-text\": true,\n      \"header-text\": true,\n      \"left-padding\": this.compactMode && this.title && !this.reverseHeader\n    })}\"\n            >${this.title}</span\n        >`;\n  }\n  onCloseButtonClicked() {\n    this.dispatchEvent(new CustomEvent(\"close-clicked\", {}));\n  }\n  onCollapseToggled() {\n    this.collapsed = !this.collapsed;\n    this.dispatchEvent(new CustomEvent(\"collapse-clicked\", {}));\n  }\n  renderIcon() {\n    return ke`<span class=\"icon material-symbols-outlined\">\n                        ${this.icon}\n                    </span>`;\n  }\n  renderCollapseButton() {\n    let icon;\n    if (this.compactMode) {\n      icon = this.renderIcon();\n    } else if (this.collapsed) {\n      icon = ke`<span class=\"material-symbols-outlined\"\n                >&#xf830;</span\n            >`;\n    } else {\n      icon = ke`<span class=\"material-symbols-outlined\">&#xf507;</span>`;\n    }\n    return ke`<button\n            class=\"${Rt({\n      \"legacy-button\": true,\n      \"header-button\": !this.compactMode,\n      \"compact-header-button\": this.compactMode,\n      \"active\": !this.collapsed\n    })}\"\n            class=\"legacy-button header-button\"\n            @click=\"${this.onCollapseToggled}\"\n        >\n            ${icon}\n        </button>`;\n  }\n};\n__decorateClass([\n  n4({ type: String })\n], Container.prototype, \"icon\", 2);\n__decorateClass([\n  n4({ type: String })\n], Container.prototype, \"title\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], Container.prototype, \"collapsed\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], Container.prototype, \"hideCloseButton\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], Container.prototype, \"compactMode\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], Container.prototype, \"noHeader\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], Container.prototype, \"reverseHeader\", 2);\nif (!customElements.get(Container.componentName)) {\n  customElements.define(Container.componentName, Container);\n}\n\n// js/layer_manager.ts\nvar LayerManager = class extends LitWidget {\n  constructor() {\n    super(...arguments);\n    this.visible = false;\n    this.tabIndex = 0;\n    this.collapsed = true;\n  }\n  static get componentName() {\n    return `layer-manager`;\n  }\n  static {\n    this.styles = [\n      legacyStyles,\n      i`\n            .row {\n                align-items: center;\n                display: flex;\n                gap: 4px;\n                height: 28px;\n            }\n\n            .visibility-checkbox {\n                margin: 2px;\n            }\n\n            .layer-manager-rows {\n                display: flex;\n                flex-direction: column;\n                gap: 10px;\n            }\n        `\n    ];\n  }\n  modelNameToViewName() {\n    return /* @__PURE__ */ new Map([\n      [\"children\", null],\n      [\"visible\", \"visible\"]\n    ]);\n  }\n  render() {\n    return ke`\n            <widget-container\n                icon=\"layers\"\n                title=\"\"\n                .collapsed=\"${this.collapsed}\"\n                .hideCloseButton=\"${true}\"\n                .compactMode=\"${true}\"\n                .reverseHeader=\"${true}\"\n            >\n                <div class=\"container\">\n                    <div class=\"layer-manager-rows\">\n                        <div class=\"row\">\n                            <input\n                                type=\"checkbox\"\n                                class=\"visibility-checkbox\"\n                                .checked=\"${this.visible}\"\n                                @change=\"${this.onLayerVisibilityChanged}\"\n                            />\n                            <span\n                                class=\"legacy-text all-layers-text\"\n                                @click=\"${this.onLayerVisibilityChanged}\"\n                            >\n                                All layers on/off</span\n                            >\n                        </div>\n                        <slot></slot>\n                    </div>\n                </div>\n            </widget-container>\n        `;\n  }\n  onLayerVisibilityChanged(_event) {\n    this.visible = !this.visible;\n  }\n};\n__decorateClass([\n  n4()\n], LayerManager.prototype, \"visible\", 2);\n__decorateClass([\n  n4()\n], LayerManager.prototype, \"tabIndex\", 2);\n__decorateClass([\n  n4()\n], LayerManager.prototype, \"collapsed\", 2);\nif (!customElements.get(LayerManager.componentName)) {\n  customElements.define(LayerManager.componentName, LayerManager);\n}\nasync function render({ model, el }) {\n  loadFonts();\n  const manager = document.createElement(LayerManager.componentName);\n  manager.model = model;\n  el.appendChild(manager);\n  updateChildren(manager, model);\n  model.on(\"change:children\", () => {\n    updateChildren(manager, model);\n  });\n}\nvar layer_manager_default = { render };\nexport {\n  LayerManager,\n  layer_manager_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n  (**\n   * @license\n   * Copyright 2019 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/is-server.js:\n  (**\n   * @license\n   * Copyright 2022 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n  (**\n   * @license\n   * Copyright 2021 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/directives/class-map.js:\n  (**\n   * @license\n   * Copyright 2018 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n*/\n",
              "_model_module": "anywidget",
              "_model_module_version": "~0.9.*",
              "_model_name": "AnyModel",
              "_view_count": null,
              "_view_module": "anywidget",
              "_view_module_version": "~0.9.*",
              "_view_name": "AnyView",
              "children": [
                "IPY_MODEL_894876befa8c4b03866dfaf3a921094a",
                "IPY_MODEL_fd730fe29529462cb9283b683f8b8a45",
                "IPY_MODEL_0fb26b9389474648b96630ee49ae8b76"
              ],
              "layout": "IPY_MODEL_982da6ddceed4a71b8a5f86537dee4bb",
              "visible": true
            }
          },
          "4401aec07b4e4fdf9068bb2c95af3a57": {
            "model_module": "anywidget",
            "model_name": "AnyModel",
            "model_module_version": "~0.9.*",
            "state": {
              "_anywidget_id": "geemap.toolbar.Toolbar",
              "_dom_classes": [],
              "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n  for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n    if (decorator = decorators[i4])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp(target, key, result);\n  return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n  constructor(t3, e6, o5) {\n    if (this._$cssResult$ = true, o5 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n    this.cssText = t3, this.t = e6;\n  }\n  get styleSheet() {\n    let t3 = this.o;\n    const s2 = this.t;\n    if (e && void 0 === t3) {\n      const e6 = void 0 !== s2 && 1 === s2.length;\n      e6 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e6 && o.set(s2, t3));\n    }\n    return t3;\n  }\n  toString() {\n    return this.cssText;\n  }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e6) => {\n  const o5 = 1 === t3.length ? t3[0] : e6.reduce(((e7, s2, o6) => e7 + ((t4) => {\n    if (true === t4._$cssResult$) return t4.cssText;\n    if (\"number\" == typeof t4) return t4;\n    throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n  })(s2) + t3[o6 + 1]), t3[0]);\n  return new n(o5, t3, s);\n};\nvar S = (s2, o5) => {\n  if (e) s2.adoptedStyleSheets = o5.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n  else for (const e6 of o5) {\n    const o6 = document.createElement(\"style\"), n5 = t.litNonce;\n    void 0 !== n5 && o6.setAttribute(\"nonce\", n5), o6.textContent = e6.cssText, s2.appendChild(o6);\n  }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n  let e6 = \"\";\n  for (const s2 of t4.cssRules) e6 += s2.cssText;\n  return r(e6);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n  switch (s2) {\n    case Boolean:\n      t3 = t3 ? l : null;\n      break;\n    case Object:\n    case Array:\n      t3 = null == t3 ? t3 : JSON.stringify(t3);\n  }\n  return t3;\n}, fromAttribute(t3, s2) {\n  let i4 = t3;\n  switch (s2) {\n    case Boolean:\n      i4 = null !== t3;\n      break;\n    case Number:\n      i4 = null === t3 ? null : Number(t3);\n      break;\n    case Object:\n    case Array:\n      try {\n        i4 = JSON.parse(t3);\n      } catch (t4) {\n        i4 = null;\n      }\n  }\n  return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n  static addInitializer(t3) {\n    this._$Ei(), (this.l ??= []).push(t3);\n  }\n  static get observedAttributes() {\n    return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n  }\n  static createProperty(t3, s2 = y) {\n    if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n      const i4 = /* @__PURE__ */ Symbol(), r5 = this.getPropertyDescriptor(t3, i4, s2);\n      void 0 !== r5 && e2(this.prototype, t3, r5);\n    }\n  }\n  static getPropertyDescriptor(t3, s2, i4) {\n    const { get: e6, set: h4 } = r2(this.prototype, t3) ?? { get() {\n      return this[s2];\n    }, set(t4) {\n      this[s2] = t4;\n    } };\n    return { get() {\n      return e6?.call(this);\n    }, set(s3) {\n      const r5 = e6?.call(this);\n      h4.call(this, s3), this.requestUpdate(t3, r5, i4);\n    }, configurable: true, enumerable: true };\n  }\n  static getPropertyOptions(t3) {\n    return this.elementProperties.get(t3) ?? y;\n  }\n  static _$Ei() {\n    if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n    const t3 = n2(this);\n    t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n  }\n  static finalize() {\n    if (this.hasOwnProperty(d(\"finalized\"))) return;\n    if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n      const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n      for (const i4 of s2) this.createProperty(i4, t4[i4]);\n    }\n    const t3 = this[Symbol.metadata];\n    if (null !== t3) {\n      const s2 = litPropertyMetadata.get(t3);\n      if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n    }\n    this._$Eh = /* @__PURE__ */ new Map();\n    for (const [t4, s2] of this.elementProperties) {\n      const i4 = this._$Eu(t4, s2);\n      void 0 !== i4 && this._$Eh.set(i4, t4);\n    }\n    this.elementStyles = this.finalizeStyles(this.styles);\n  }\n  static finalizeStyles(s2) {\n    const i4 = [];\n    if (Array.isArray(s2)) {\n      const e6 = new Set(s2.flat(1 / 0).reverse());\n      for (const s3 of e6) i4.unshift(c(s3));\n    } else void 0 !== s2 && i4.push(c(s2));\n    return i4;\n  }\n  static _$Eu(t3, s2) {\n    const i4 = s2.attribute;\n    return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n  }\n  constructor() {\n    super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n  }\n  _$Ev() {\n    this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n  }\n  addController(t3) {\n    (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n  }\n  removeController(t3) {\n    this._$EO?.delete(t3);\n  }\n  _$E_() {\n    const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n    for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n    t3.size > 0 && (this._$Ep = t3);\n  }\n  createRenderRoot() {\n    const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n    return S(t3, this.constructor.elementStyles), t3;\n  }\n  connectedCallback() {\n    this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n  }\n  enableUpdating(t3) {\n  }\n  disconnectedCallback() {\n    this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n  }\n  attributeChangedCallback(t3, s2, i4) {\n    this._$AK(t3, i4);\n  }\n  _$EC(t3, s2) {\n    const i4 = this.constructor.elementProperties.get(t3), e6 = this.constructor._$Eu(t3, i4);\n    if (void 0 !== e6 && true === i4.reflect) {\n      const r5 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n      this._$Em = t3, null == r5 ? this.removeAttribute(e6) : this.setAttribute(e6, r5), this._$Em = null;\n    }\n  }\n  _$AK(t3, s2) {\n    const i4 = this.constructor, e6 = i4._$Eh.get(t3);\n    if (void 0 !== e6 && this._$Em !== e6) {\n      const t4 = i4.getPropertyOptions(e6), r5 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n      this._$Em = e6, this[e6] = r5.fromAttribute(s2, t4.type), this._$Em = null;\n    }\n  }\n  requestUpdate(t3, s2, i4) {\n    if (void 0 !== t3) {\n      if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n      this.P(t3, s2, i4);\n    }\n    false === this.isUpdatePending && (this._$ES = this._$ET());\n  }\n  P(t3, s2, i4) {\n    this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n  }\n  async _$ET() {\n    this.isUpdatePending = true;\n    try {\n      await this._$ES;\n    } catch (t4) {\n      Promise.reject(t4);\n    }\n    const t3 = this.scheduleUpdate();\n    return null != t3 && await t3, !this.isUpdatePending;\n  }\n  scheduleUpdate() {\n    return this.performUpdate();\n  }\n  performUpdate() {\n    if (!this.isUpdatePending) return;\n    if (!this.hasUpdated) {\n      if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n        for (const [t5, s3] of this._$Ep) this[t5] = s3;\n        this._$Ep = void 0;\n      }\n      const t4 = this.constructor.elementProperties;\n      if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n    }\n    let t3 = false;\n    const s2 = this._$AL;\n    try {\n      t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n    } catch (s3) {\n      throw t3 = false, this._$EU(), s3;\n    }\n    t3 && this._$AE(s2);\n  }\n  willUpdate(t3) {\n  }\n  _$AE(t3) {\n    this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n  }\n  _$EU() {\n    this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n  }\n  get updateComplete() {\n    return this.getUpdateComplete();\n  }\n  getUpdateComplete() {\n    return this._$ES;\n  }\n  shouldUpdate(t3) {\n    return true;\n  }\n  update(t3) {\n    this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n  }\n  updated(t3) {\n  }\n  firstUpdated(t3) {\n  }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n  if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n  return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n  const s2 = t3.length - 1, e6 = [];\n  let h4, o5 = 2 === i4 ? \"<svg>\" : 3 === i4 ? \"<math>\" : \"\", n5 = T;\n  for (let i5 = 0; i5 < s2; i5++) {\n    const s3 = t3[i5];\n    let r5, l2, c4 = -1, a2 = 0;\n    for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"</\" + l2[2], \"g\")), n5 = O) : void 0 !== l2[3] && (n5 = O) : n5 === O ? \">\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r5 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n    const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n    o5 += n5 === T ? s3 + _ : c4 >= 0 ? (e6.push(r5), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n  }\n  return [N(t3, o5 + (t3[s2] || \"<?>\") + (2 === i4 ? \"</svg>\" : 3 === i4 ? \"</math>\" : \"\")), e6];\n};\nvar B = class _B {\n  constructor({ strings: t3, _$litType$: i4 }, s2) {\n    let e6;\n    this.parts = [];\n    let h4 = 0, o5 = 0;\n    const n5 = t3.length - 1, r5 = this.parts, [l2, a2] = U(t3, i4);\n    if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n      const t4 = this.el.content.firstChild;\n      t4.replaceWith(...t4.childNodes);\n    }\n    for (; null !== (e6 = I.nextNode()) && r5.length < n5; ) {\n      if (1 === e6.nodeType) {\n        if (e6.hasAttributes()) for (const t4 of e6.getAttributeNames()) if (t4.endsWith(f2)) {\n          const i5 = a2[o5++], s3 = e6.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n          r5.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e6.removeAttribute(t4);\n        } else t4.startsWith(v) && (r5.push({ type: 6, index: h4 }), e6.removeAttribute(t4));\n        if (M.test(e6.tagName)) {\n          const t4 = e6.textContent.split(v), i5 = t4.length - 1;\n          if (i5 > 0) {\n            e6.textContent = c3 ? c3.emptyScript : \"\";\n            for (let s3 = 0; s3 < i5; s3++) e6.append(t4[s3], lt()), I.nextNode(), r5.push({ type: 2, index: ++h4 });\n            e6.append(t4[i5], lt());\n          }\n        }\n      } else if (8 === e6.nodeType) if (e6.data === m) r5.push({ type: 2, index: h4 });\n      else {\n        let t4 = -1;\n        for (; -1 !== (t4 = e6.data.indexOf(v, t4 + 1)); ) r5.push({ type: 7, index: h4 }), t4 += v.length - 1;\n      }\n      h4++;\n    }\n  }\n  static createElement(t3, i4) {\n    const s2 = w.createElement(\"template\");\n    return s2.innerHTML = t3, s2;\n  }\n};\nfunction z(t3, i4, s2 = t3, e6) {\n  if (i4 === R) return i4;\n  let h4 = void 0 !== e6 ? s2.o?.[e6] : s2.l;\n  const o5 = st(i4) ? void 0 : i4._$litDirective$;\n  return h4?.constructor !== o5 && (h4?._$AO?.(false), void 0 === o5 ? h4 = void 0 : (h4 = new o5(t3), h4._$AT(t3, s2, e6)), void 0 !== e6 ? (s2.o ??= [])[e6] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e6)), i4;\n}\nvar F = class {\n  constructor(t3, i4) {\n    this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n  }\n  get parentNode() {\n    return this._$AM.parentNode;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  u(t3) {\n    const { el: { content: i4 }, parts: s2 } = this._$AD, e6 = (t3?.creationScope ?? w).importNode(i4, true);\n    I.currentNode = e6;\n    let h4 = I.nextNode(), o5 = 0, n5 = 0, r5 = s2[0];\n    for (; void 0 !== r5; ) {\n      if (o5 === r5.index) {\n        let i5;\n        2 === r5.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r5.type ? i5 = new r5.ctor(h4, r5.name, r5.strings, this, t3) : 6 === r5.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r5 = s2[++n5];\n      }\n      o5 !== r5?.index && (h4 = I.nextNode(), o5++);\n    }\n    return I.currentNode = w, e6;\n  }\n  p(t3) {\n    let i4 = 0;\n    for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n  }\n};\nvar et = class _et {\n  get _$AU() {\n    return this._$AM?._$AU ?? this.v;\n  }\n  constructor(t3, i4, s2, e6) {\n    this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e6, this.v = e6?.isConnected ?? true;\n  }\n  get parentNode() {\n    let t3 = this._$AA.parentNode;\n    const i4 = this._$AM;\n    return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n  }\n  get startNode() {\n    return this._$AA;\n  }\n  get endNode() {\n    return this._$AB;\n  }\n  _$AI(t3, i4 = this) {\n    t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n  }\n  O(t3) {\n    return this._$AA.parentNode.insertBefore(t3, this._$AB);\n  }\n  T(t3) {\n    this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n  }\n  _(t3) {\n    this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n  }\n  $(t3) {\n    const { values: i4, _$litType$: s2 } = t3, e6 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n    if (this._$AH?._$AD === e6) this._$AH.p(i4);\n    else {\n      const t4 = new F(e6, this), s3 = t4.u(this.options);\n      t4.p(i4), this.T(s3), this._$AH = t4;\n    }\n  }\n  _$AC(t3) {\n    let i4 = V.get(t3.strings);\n    return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n  }\n  k(t3) {\n    g(this._$AH) || (this._$AH = [], this._$AR());\n    const i4 = this._$AH;\n    let s2, e6 = 0;\n    for (const h4 of t3) e6 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e6], s2._$AI(h4), e6++;\n    e6 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e6), i4.length = e6);\n  }\n  _$AR(t3 = this._$AA.nextSibling, i4) {\n    for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n      const i5 = t3.nextSibling;\n      t3.remove(), t3 = i5;\n    }\n  }\n  setConnected(t3) {\n    void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n  }\n};\nvar G = class {\n  get tagName() {\n    return this.element.tagName;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  constructor(t3, i4, s2, e6, h4) {\n    this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e6, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n  }\n  _$AI(t3, i4 = this, s2, e6) {\n    const h4 = this.strings;\n    let o5 = false;\n    if (void 0 === h4) t3 = z(this, t3, i4, 0), o5 = !st(t3) || t3 !== this._$AH && t3 !== R, o5 && (this._$AH = t3);\n    else {\n      const e7 = t3;\n      let n5, r5;\n      for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r5 = z(this, e7[s2 + n5], i4, n5), r5 === R && (r5 = this._$AH[n5]), o5 ||= !st(r5) || r5 !== this._$AH[n5], r5 === D ? t3 = D : t3 !== D && (t3 += (r5 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r5;\n    }\n    o5 && !e6 && this.j(t3);\n  }\n  j(t3) {\n    t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n  }\n};\nvar Y = class extends G {\n  constructor() {\n    super(...arguments), this.type = 3;\n  }\n  j(t3) {\n    this.element[this.name] = t3 === D ? void 0 : t3;\n  }\n};\nvar Z = class extends G {\n  constructor() {\n    super(...arguments), this.type = 4;\n  }\n  j(t3) {\n    this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n  }\n};\nvar q = class extends G {\n  constructor(t3, i4, s2, e6, h4) {\n    super(t3, i4, s2, e6, h4), this.type = 5;\n  }\n  _$AI(t3, i4 = this) {\n    if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n    const s2 = this._$AH, e6 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e6);\n    e6 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n  }\n  handleEvent(t3) {\n    \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n  }\n};\nvar K = class {\n  constructor(t3, i4, s2) {\n    this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AI(t3) {\n    z(this, t3);\n  }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n  const e6 = s2?.renderBefore ?? i4;\n  let h4 = e6._$litPart$;\n  if (void 0 === h4) {\n    const t4 = s2?.renderBefore ?? null;\n    e6._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n  }\n  return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n  constructor() {\n    super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n  }\n  createRenderRoot() {\n    const t3 = super.createRenderRoot();\n    return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n  }\n  update(t3) {\n    const e6 = this.render();\n    this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e6, this.renderRoot, this.renderOptions);\n  }\n  connectedCallback() {\n    super.connectedCallback(), this.o?.setConnected(true);\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback(), this.o?.setConnected(false);\n  }\n  render() {\n    return R;\n  }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e6, r5) => {\n  const { kind: n5, metadata: i4 } = r5;\n  let s2 = globalThis.litPropertyMetadata.get(i4);\n  if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r5.name, t3), \"accessor\" === n5) {\n    const { name: o5 } = r5;\n    return { set(r6) {\n      const n6 = e6.get.call(this);\n      e6.set.call(this, r6), this.requestUpdate(o5, n6, t3);\n    }, init(e7) {\n      return void 0 !== e7 && this.P(o5, void 0, t3), e7;\n    } };\n  }\n  if (\"setter\" === n5) {\n    const { name: o5 } = r5;\n    return function(r6) {\n      const n6 = this[o5];\n      e6.call(this, r6), this.requestUpdate(o5, n6, t3);\n    };\n  }\n  throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n  return (e6, o5) => \"object\" == typeof o5 ? r3(t3, e6, o5) : ((t4, e7, o6) => {\n    const r5 = e7.hasOwnProperty(o6);\n    return e7.constructor.createProperty(o6, r5 ? { ...t4, wrapped: true } : t4), r5 ? Object.getOwnPropertyDescriptor(e7, o6) : void 0;\n  })(t3, e6, o5);\n}\n\n// node_modules/@lit/reactive-element/decorators/base.js\nvar e3 = (e6, t3, c4) => (c4.configurable = true, c4.enumerable = true, Reflect.decorate && \"object\" != typeof t3 && Object.defineProperty(e6, t3, c4), c4);\n\n// node_modules/@lit/reactive-element/decorators/query-all.js\nvar e4;\nfunction r4(r5) {\n  return (n5, o5) => e3(n5, o5, { get() {\n    return (this.renderRoot ?? (e4 ??= document.createDocumentFragment())).querySelectorAll(r5);\n  } });\n}\n\n// node_modules/@lit/reactive-element/decorators/query-assigned-elements.js\nfunction o4(o5) {\n  return (e6, n5) => {\n    const { slot: r5, selector: s2 } = o5 ?? {}, c4 = \"slot\" + (r5 ? `[name=${r5}]` : \":not([name])\");\n    return e3(e6, n5, { get() {\n      const t3 = this.renderRoot?.querySelector(c4), e7 = t3?.assignedElements(o5) ?? [];\n      return void 0 === s2 ? e7 : e7.filter(((t4) => t4.matches(s2)));\n    } });\n  };\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e5 = (t3) => (...e6) => ({ _$litDirective$: t3, values: e6 });\nvar i3 = class {\n  constructor(t3) {\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AT(t3, e6, i4) {\n    this.t = t3, this._$AM = e6, this.i = i4;\n  }\n  _$AS(t3, e6) {\n    return this.update(t3, e6);\n  }\n  update(t3, e6) {\n    return this.render(...e6);\n  }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e5(class extends i3 {\n  constructor(s2) {\n    if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n  }\n  render(t3) {\n    return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n  }\n  update(t3, [s2]) {\n    if (void 0 === this.st) {\n      this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n      for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n      return this.render(s2);\n    }\n    const i4 = t3.element.classList;\n    for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n    for (const t4 in s2) {\n      const r5 = !!s2[t4];\n      r5 === this.st.has(t4) || this.nt?.has(t4) || (r5 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n    }\n    return R;\n  }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n    .legacy-button {\n        align-items: center;\n        background-color: var(--jp-layout-color2);\n        border-width: 0;\n        box-shadow: none;\n        color: var(--jp-ui-font-color1);\n        cursor: pointer;\n        display: flex;\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        justify-content: center;\n        line-height: var(--jp-widgets-inline-height);\n        padding: 0;\n        user-select: none;\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button:hover:enabled,\n    .legacy-button:focus:enabled {\n        box-shadow: 0 2px 2px 0\n                rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n            0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n            0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n    }\n\n    .legacy-slider {\n        -webkit-appearance: none;\n        appearance: none;\n        background: var(--jp-layout-color3);\n        border-radius: 3px;\n        height: 4px;\n        outline: none;\n    }\n\n    .legacy-slider::-webkit-slider-thumb,\n    .legacy-slider::-moz-range-thumb {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        border-radius: 50%;\n        cursor: pointer;\n        height: var(--jp-widgets-slider-handle-size);\n        width: var(--jp-widgets-slider-handle-size);\n    }\n\n    .legacy-text {\n        color: var(--jp-widgets-label-color);\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        vertical-align: middle;\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: 28px;\n        line-height: 28px;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-select[disabled] {\n        opacity: 0.4;\n        cursor: not-allowed;\n    }\n\n    .legacy-text-input {\n        background: var(--jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n    }\n\n    .legacy-text-input:disabled {\n        opacity: var(--jp-widgets-disabled-opacity);\n    }\n\n    .legacy-color {\n        align-self: stretch;\n        background: var(--jp-widgets-input-background-color);\n        border-left: none;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 0;\n        flex-shrink: 0;\n        height: var(--jp-widgets-inline-height);\n        outline: none !important;\n        padding: 0 2px;\n        width: var(--jp-widgets-inline-height);\n    }\n\n    .legacy-radio {\n        margin: 0;\n        vertical-align: middle;\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: inherit;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-input {\n        box-sizing: border-box;\n        background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n    }\n`;\n\n// js/utils.ts\nasync function unpackModels(modelIds, manager) {\n  return Promise.all(\n    modelIds.map((id) => manager.get_model(id.slice(\"IPY_MODEL_\".length)))\n  );\n}\nfunction loadFonts() {\n  if (!document.querySelector(\".custom-fonts\")) {\n    const styleElement = document.createElement(\"style\");\n    styleElement.classList.add(\"custom-fonts\");\n    styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n    document.body.appendChild(styleElement);\n  }\n}\nasync function updateChildren(container, model, property = \"children\") {\n  let children = model.get(property);\n  if (!Array.isArray(children)) {\n    children = [children];\n  }\n  const child_models = await unpackModels(children, model.widget_manager);\n  const child_views = await Promise.all(\n    child_models.map((model2) => model2.widget_manager.create_view(model2))\n  );\n  container.innerHTML = ``;\n  for (const child_view of child_views) {\n    container.appendChild(child_view.el);\n  }\n}\nfunction reverseMap(map) {\n  const reversedMap = /* @__PURE__ */ new Map();\n  for (const [key, value] of map.entries()) {\n    if (value != null) {\n      reversedMap.set(value, key);\n    }\n  }\n  return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n  constructor() {\n    super(...arguments);\n    this._model = void 0;\n  }\n  onCustomMessage(_msg) {\n  }\n  viewNameToModelName() {\n    return reverseMap(this.modelNameToViewName());\n  }\n  set model(model) {\n    this._model = model;\n    for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n      if (widgetKey) {\n        this[widgetKey] = model.get(modelKey);\n        model.on(`change:${String(modelKey)}`, () => {\n          this[widgetKey] = model.get(modelKey);\n        });\n      }\n    }\n    model.on(\"msg:custom\", (msg) => {\n      this.onCustomMessage?.(msg);\n    });\n  }\n  get model() {\n    return this._model;\n  }\n  updated(changedProperties) {\n    const viewToModelMap = this.viewNameToModelName();\n    for (const [viewProp, _2] of changedProperties) {\n      const castViewProp = viewProp;\n      if (viewToModelMap.has(castViewProp)) {\n        const modelProp = viewToModelMap.get(castViewProp);\n        this._model?.set(\n          modelProp,\n          this[castViewProp]\n        );\n      }\n    }\n    this._model?.save_changes();\n  }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n    @font-face {\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: 400;\n        src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n            format(\"woff2\");\n    }\n\n    .material-symbols-outlined {\n        -webkit-font-feature-settings: \"liga\";\n        -webkit-font-smoothing: antialiased;\n        direction: ltr;\n        display: inline-block;\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: normal;\n        letter-spacing: normal;\n        line-height: 1;\n        text-transform: none;\n        white-space: nowrap;\n        word-wrap: normal;\n    }\n`;\nvar flexStyles = i`\n    .vertical-flex {\n        display: flex;\n        flex-direction: column;\n        gap: 8px;\n    }\n\n    .horizontal-flex {\n        align-items: center;\n        display: flex;\n        flex-wrap: nowrap;\n        gap: 8px;\n    }\n\n    input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n        width: 100%;\n    }\n\n    select {\n        width: 100%;\n    }\n\n    .horizontal-flex .legacy-text {\n        flex-shrink: 0;\n    }\n`;\n\n// js/container.ts\nvar Container = class extends LitWidget {\n  constructor() {\n    super(...arguments);\n    this.icon = \"\";\n    this.title = \"\";\n    this.collapsed = false;\n    this.hideCloseButton = false;\n    this.compactMode = false;\n    this.noHeader = false;\n    this.reverseHeader = false;\n  }\n  static get componentName() {\n    return `widget-container`;\n  }\n  static {\n    this.styles = [\n      legacyStyles,\n      materialStyles,\n      i`\n            .container {\n                background: var(--jp-layout-color1);\n                border-radius: 4.5px;\n                box-shadow: 4px 5px 8px 0px #9e9e9e;\n            }\n\n            div {\n                background-color: var(--colab-primary-surface-color, --jp-layout-color1, white);\n            }\n\n            .header {\n                display: flex;\n                gap: 4px;\n                padding: 4px;\n            }\n\n            .reversed {\n                flex-direction: row-reverse;\n            }\n\n            .icon {\n                align-items: center;\n                display: flex;\n                font-size: 20px;\n                height: 28px;\n                justify-content: center;\n                padding: 0 4px;\n            }\n\n            .widget-container {\n                padding: 8px 12px 12px 12px;\n            }\n\n            .hidden {\n                display: none;\n            }\n\n            .header-button {\n                font-size: 16px;\n                height: 28px;\n                width: 28px;\n            }\n\n            .compact-header-button {\n                background: transparent;\n                font-size: 16px;\n                height: 28px;\n                width: 28px;\n            }\n\n            .header-text {\n                align-content: center;\n                flex-grow: 1;\n                padding: 0 12px 0 0;\n            }\n\n            .left-padding {\n                padding-left: 8px;\n            }\n        `\n    ];\n  }\n  modelNameToViewName() {\n    return /* @__PURE__ */ new Map([\n      [\"icon\", \"icon\"],\n      [\"collapsed\", \"collapsed\"],\n      [\"title\", \"title\"],\n      [\"hide_close_button\", \"hideCloseButton\"]\n    ]);\n  }\n  render() {\n    return ke`\n            <div class=\"container\">\n                ${this.noHeader ? D : this.renderHeader()}\n                <div class=\"widget-container ${this.collapsed ? \"hidden\" : \"\"}\">\n                    <slot></slot>\n                </div>\n            </div>\n        `;\n  }\n  renderHeader() {\n    return this.compactMode ? this.renderCompactHeader() : ke`\n            <div class=\"header ${this.reverseHeader ? \"reversed\" : \"\"}\">\n                ${this.renderIcon()}\n                ${this.title ? this.renderTitle() : D}\n                ${this.renderCollapseButton()}\n                ${this.renderCloseButton()}\n            </div>`;\n  }\n  renderCompactHeader() {\n    return ke`<div class=\"header ${this.reverseHeader ? \"reversed\" : \"\"}\">\n            ${this.renderCollapseButton()}\n            ${this.title && !this.collapsed ? this.renderTitle() : D}\n            ${this.renderCloseButton()}\n        </div>`;\n  }\n  renderCloseButton() {\n    if (this.hideCloseButton) {\n      return D;\n    }\n    return ke`\n            <button\n                class=\"legacy-button primary header-button\"\n                @click=\"${this.onCloseButtonClicked}\"\n            >\n                <span class=\"material-symbols-outlined\">&#xe5cd;</span>\n            </button>\n        `;\n  }\n  renderTitle() {\n    return ke`<span\n            class=\"${Rt({\n      \"legacy-text\": true,\n      \"header-text\": true,\n      \"left-padding\": this.compactMode && this.title && !this.reverseHeader\n    })}\"\n            >${this.title}</span\n        >`;\n  }\n  onCloseButtonClicked() {\n    this.dispatchEvent(new CustomEvent(\"close-clicked\", {}));\n  }\n  onCollapseToggled() {\n    this.collapsed = !this.collapsed;\n    this.dispatchEvent(new CustomEvent(\"collapse-clicked\", {}));\n  }\n  renderIcon() {\n    return ke`<span class=\"icon material-symbols-outlined\">\n                        ${this.icon}\n                    </span>`;\n  }\n  renderCollapseButton() {\n    let icon;\n    if (this.compactMode) {\n      icon = this.renderIcon();\n    } else if (this.collapsed) {\n      icon = ke`<span class=\"material-symbols-outlined\"\n                >&#xf830;</span\n            >`;\n    } else {\n      icon = ke`<span class=\"material-symbols-outlined\">&#xf507;</span>`;\n    }\n    return ke`<button\n            class=\"${Rt({\n      \"legacy-button\": true,\n      \"header-button\": !this.compactMode,\n      \"compact-header-button\": this.compactMode,\n      \"active\": !this.collapsed\n    })}\"\n            class=\"legacy-button header-button\"\n            @click=\"${this.onCollapseToggled}\"\n        >\n            ${icon}\n        </button>`;\n  }\n};\n__decorateClass([\n  n4({ type: String })\n], Container.prototype, \"icon\", 2);\n__decorateClass([\n  n4({ type: String })\n], Container.prototype, \"title\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], Container.prototype, \"collapsed\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], Container.prototype, \"hideCloseButton\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], Container.prototype, \"compactMode\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], Container.prototype, \"noHeader\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], Container.prototype, \"reverseHeader\", 2);\nif (!customElements.get(Container.componentName)) {\n  customElements.define(Container.componentName, Container);\n}\n\n// node_modules/lit-html/directives/style-map.js\nvar ee = \"important\";\nvar ie = \" !\" + ee;\nvar se = e5(class extends i3 {\n  constructor(e6) {\n    if (super(e6), e6.type !== t2.ATTRIBUTE || \"style\" !== e6.name || e6.strings?.length > 2) throw Error(\"The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.\");\n  }\n  render(t3) {\n    return Object.keys(t3).reduce(((e6, r5) => {\n      const s2 = t3[r5];\n      return null == s2 ? e6 : e6 + `${r5 = r5.includes(\"-\") ? r5 : r5.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g, \"-$&\").toLowerCase()}:${s2};`;\n    }), \"\");\n  }\n  update(t3, [e6]) {\n    const { style: r5 } = t3.element;\n    if (void 0 === this.ft) return this.ft = new Set(Object.keys(e6)), this.render(e6);\n    for (const t4 of this.ft) null == e6[t4] && (this.ft.delete(t4), t4.includes(\"-\") ? r5.removeProperty(t4) : r5[t4] = null);\n    for (const t4 in e6) {\n      const s2 = e6[t4];\n      if (null != s2) {\n        this.ft.add(t4);\n        const e7 = \"string\" == typeof s2 && s2.endsWith(ie);\n        t4.includes(\"-\") || e7 ? r5.setProperty(t4, e7 ? s2.slice(0, -11) : s2, e7 ? ee : \"\") : r5[t4] = s2;\n      }\n    }\n    return R;\n  }\n});\n\n// js/tab_panel.ts\nfunction convertToId(name) {\n  return (name || \"\").trim().replace(\" \", \"-\").toLowerCase();\n}\nvar TabPanel = class extends h3 {\n  constructor() {\n    super(...arguments);\n    this.tabs = [];\n    this.index = 0;\n    this.mode = 1 /* HIDE_ON_SECOND_CLICK */;\n    this.alignment = \"left\" /* LEFT */;\n  }\n  static get componentName() {\n    return `tab-panel`;\n  }\n  static {\n    this.styles = [\n      legacyStyles,\n      materialStyles,\n      i`\n            ::slotted(*) {\n                display: none;\n            }\n\n            ::slotted(.show-tab) {\n                display: block;\n            }\n\n            .container {\n                padding: 0;\n                width: 100%;\n            }\n\n            .tab-container {\n                align-items: center;\n                display: flex;\n                flex-direction: row;\n            }\n\n            .tab-container.center {\n                justify-content: center;\n            }\n\n            .tab-container.left {\n                justify-content: flex-start;\n            }\n\n            .tab-container.right {\n                justify-content: flex-end;\n            }\n\n            .tab-container button {\n                border-radius: 5px;\n                height: 28px;\n                margin: 2px 0 2px 8px;\n                user-select: none;\n            }\n\n            .tab-container button.icon {\n                font-size: 16px;\n                width: 28px;\n            }\n\n            .tab-container button.name {\n                padding: 0 8px;\n            }\n        `\n    ];\n  }\n  render() {\n    return ke`\n            <div class=\"container\">\n                <div\n                    role=\"tablist\"\n                    class=\"${Rt({\n      \"tab-container\": true,\n      \"center\": this.alignment === \"center\" /* CENTER */,\n      \"left\": this.alignment === \"left\" /* LEFT */,\n      \"right\": this.alignment === \"right\" /* RIGHT */\n    })}\">\n                    ${this.renderTabs()}\n                </div>\n                <slot @slotchange=${this.updateSlotChildren}></slot>\n            </div>\n        `;\n  }\n  update(changedProperties) {\n    super.update(changedProperties);\n    if (changedProperties.has(\"index\") && changedProperties.get(\"index\") != null) {\n      this.updateSlotChildren();\n    }\n  }\n  updateSlotChildren() {\n    if (!this.tabContentElements) {\n      return;\n    }\n    this.tabContentElements.forEach((element, i4) => {\n      element.classList.remove(\"show-tab\");\n      const id = convertToId(this.tabs[i4].name);\n      element.setAttribute(\"id\", `tabpanel-${id}-${i4}`);\n      element.setAttribute(\"role\", \"tabpanel\");\n      element.setAttribute(\"aria-labelledby\", `tab-${id}-${i4}`);\n    });\n    this.tabContentElements[this.index]?.classList.add(\"show-tab\");\n  }\n  renderTabs() {\n    return this.tabs.map((tab, i4) => {\n      const id = convertToId(this.tabs[i4].name);\n      return ke`<button\n                            id=\"tab-${id}-${i4}\"\n                            class=\"${Rt({\n        \"legacy-button\": true,\n        \"active\": i4 === this.index,\n        \"icon\": !!tab.icon,\n        \"name\": !!tab.name\n      })}\"\n                            style=\"${se({\n        width: tab.width ? `${tab.width}px` : null\n      })}\"\n                            type=\"button\"\n                            role=\"tab\"\n                            aria-selected=\"${i4 === this.index ? true : false}\"\n                            aria-controls=\"tabpanel-${id}-${i4}\"\n                            @click=${() => {\n        this.onTabClick(i4);\n      }}>\n                            ${tab.icon ? ke`<span class=\"material-symbols-outlined\">${tab.icon}</span>` : D}\n                            <span>${tab.name}</span>\n                        </button>`;\n    });\n  }\n  onTabClick(index) {\n    switch (this.mode) {\n      case 1 /* HIDE_ON_SECOND_CLICK */:\n        this.index = this.index === index ? -1 : index;\n        break;\n      case 0 /* ALWAYS_SHOW */:\n      default:\n        this.index = index;\n    }\n    this.dispatchEvent(new CustomEvent(\"tab-changed\", {\n      detail: index\n    }));\n  }\n};\n__decorateClass([\n  n4({ type: Array })\n], TabPanel.prototype, \"tabs\", 2);\n__decorateClass([\n  n4({ type: Number })\n], TabPanel.prototype, \"index\", 2);\n__decorateClass([\n  n4({ type: Number })\n], TabPanel.prototype, \"mode\", 2);\n__decorateClass([\n  n4({ type: String })\n], TabPanel.prototype, \"alignment\", 2);\n__decorateClass([\n  r4(\".tab\")\n], TabPanel.prototype, \"tabElements\", 2);\n__decorateClass([\n  o4()\n], TabPanel.prototype, \"tabContentElements\", 2);\nif (!customElements.get(TabPanel.componentName)) {\n  customElements.define(TabPanel.componentName, TabPanel);\n}\n\n// js/toolbar.ts\nvar Toolbar = class extends LitWidget {\n  constructor() {\n    super(...arguments);\n    this.expanded = false;\n  }\n  static get componentName() {\n    return `toolbar-panel`;\n  }\n  static {\n    this.styles = [\n      legacyStyles,\n      materialStyles,\n      i`\n            .hide {\n                display: none;\n            }\n\n            .expanded {\n                display: block; !important\n            }\n\n            slot[name=\"extra-tools\"] {\n                margin-top: 4px;\n            }\n\n            ::slotted([slot=\"main-tools\"]),\n            ::slotted([slot=\"extra-tools\"])  {\n                align-items: center;\n                display: inline-grid;\n                grid-template-columns: auto auto auto;\n                grid-gap: 4px;\n                justify-items: center;\n            }\n        `\n    ];\n  }\n  modelNameToViewName() {\n    return /* @__PURE__ */ new Map([\n      [\"main_tools\", null],\n      [\"extra_tools\", null],\n      [\"expanded\", \"expanded\"]\n    ]);\n  }\n  render() {\n    return ke`\n            <widget-container\n                icon=\"build\"\n                title=\"\"\n                .collapsed=\"${true}\"\n                .hideCloseButton=${true}\n                .compactMode=\"${true}\"\n                .reverseHeader=\"${true}\"\n            >\n                <div class=\"tools-container\">\n                    <slot name=\"main-tools\"></slot>\n                    <slot\n                        name=\"extra-tools\"\n                        class=\"${Rt({\n      hide: !this.expanded,\n      expanded: this.expanded\n    })}\"\n                    ></slot>\n                </div>\n            </widget-container>\n        `;\n  }\n};\n__decorateClass([\n  n4()\n], Toolbar.prototype, \"expanded\", 2);\nif (!customElements.get(Toolbar.componentName)) {\n  customElements.define(Toolbar.componentName, Toolbar);\n}\nasync function render({ model, el }) {\n  loadFonts();\n  const manager = document.createElement(Toolbar.componentName);\n  manager.model = model;\n  el.appendChild(manager);\n  const mainToolsEl = document.createElement(\"div\");\n  mainToolsEl.slot = \"main-tools\";\n  manager.appendChild(mainToolsEl);\n  updateChildren(mainToolsEl, model, \"main_tools\");\n  model.on(\"change:main_tools\", () => {\n    updateChildren(mainToolsEl, model, \"main_tools\");\n  });\n  const extraToolsEl = document.createElement(\"div\");\n  extraToolsEl.slot = \"extra-tools\";\n  manager.appendChild(extraToolsEl);\n  updateChildren(extraToolsEl, model, \"extra_tools\");\n  model.on(\"change:extra_tools\", () => {\n    updateChildren(extraToolsEl, model, \"extra_tools\");\n  });\n}\nvar toolbar_default = { render };\nexport {\n  Toolbar,\n  toolbar_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n  (**\n   * @license\n   * Copyright 2019 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/is-server.js:\n  (**\n   * @license\n   * Copyright 2022 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n  (**\n   * @license\n   * Copyright 2021 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/directives/class-map.js:\nlit-html/directives/style-map.js:\n  (**\n   * @license\n   * Copyright 2018 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n*/\n",
              "_model_module": "anywidget",
              "_model_module_version": "~0.9.*",
              "_model_name": "AnyModel",
              "_view_count": null,
              "_view_module": "anywidget",
              "_view_module_version": "~0.9.*",
              "_view_name": "AnyView",
              "expanded": false,
              "extra_tools": [],
              "layout": "IPY_MODEL_280353ad8b1c481ab07683e9944d3684",
              "main_tools": [
                "IPY_MODEL_20c59c7bf470420fb6f51a8e302ed066",
                "IPY_MODEL_f67fb79b98e34bd6975dde7ae714f4c2",
                "IPY_MODEL_2326024fb88742c0ab616fb09d682fd3"
              ]
            }
          },
          "468f09b65c924d189bb0dcbdda172cdc": {
            "model_module": "@jupyter-widgets/base",
            "model_name": "LayoutModel",
            "model_module_version": "1.2.0",
            "state": {
              "_model_module": "@jupyter-widgets/base",
              "_model_module_version": "1.2.0",
              "_model_name": "LayoutModel",
              "_view_count": null,
              "_view_module": "@jupyter-widgets/base",
              "_view_module_version": "1.2.0",
              "_view_name": "LayoutView",
              "align_content": null,
              "align_items": null,
              "align_self": null,
              "border": null,
              "bottom": null,
              "display": null,
              "flex": null,
              "flex_flow": null,
              "grid_area": null,
              "grid_auto_columns": null,
              "grid_auto_flow": null,
              "grid_auto_rows": null,
              "grid_column": null,
              "grid_gap": "0px 10px",
              "grid_row": null,
              "grid_template_areas": null,
              "grid_template_columns": "auto auto",
              "grid_template_rows": null,
              "height": null,
              "justify_content": null,
              "justify_items": null,
              "left": null,
              "margin": null,
              "max_height": null,
              "max_width": null,
              "min_height": null,
              "min_width": null,
              "object_fit": null,
              "object_position": null,
              "order": null,
              "overflow": "visible",
              "overflow_x": null,
              "overflow_y": null,
              "padding": null,
              "right": null,
              "top": null,
              "visibility": null,
              "width": null
            }
          },
          "ef0aae39006645c2a93e2e63ff2ef57c": {
            "model_module": "@jupyter-widgets/base",
            "model_name": "LayoutModel",
            "model_module_version": "1.2.0",
            "state": {
              "_model_module": "@jupyter-widgets/base",
              "_model_module_version": "1.2.0",
              "_model_name": "LayoutModel",
              "_view_count": null,
              "_view_module": "@jupyter-widgets/base",
              "_view_module_version": "1.2.0",
              "_view_name": "LayoutView",
              "align_content": null,
              "align_items": null,
              "align_self": null,
              "border": null,
              "bottom": null,
              "display": null,
              "flex": null,
              "flex_flow": null,
              "grid_area": null,
              "grid_auto_columns": null,
              "grid_auto_flow": null,
              "grid_auto_rows": null,
              "grid_column": null,
              "grid_gap": null,
              "grid_row": null,
              "grid_template_areas": null,
              "grid_template_columns": null,
              "grid_template_rows": null,
              "height": null,
              "justify_content": null,
              "justify_items": null,
              "left": null,
              "margin": null,
              "max_height": null,
              "max_width": null,
              "min_height": null,
              "min_width": null,
              "object_fit": null,
              "object_position": null,
              "order": null,
              "overflow": null,
              "overflow_x": null,
              "overflow_y": null,
              "padding": null,
              "right": null,
              "top": null,
              "visibility": null,
              "width": null
            }
          },
          "982da6ddceed4a71b8a5f86537dee4bb": {
            "model_module": "@jupyter-widgets/base",
            "model_name": "LayoutModel",
            "model_module_version": "1.2.0",
            "state": {
              "_model_module": "@jupyter-widgets/base",
              "_model_module_version": "1.2.0",
              "_model_name": "LayoutModel",
              "_view_count": null,
              "_view_module": "@jupyter-widgets/base",
              "_view_module_version": "1.2.0",
              "_view_name": "LayoutView",
              "align_content": null,
              "align_items": null,
              "align_self": null,
              "border": null,
              "bottom": null,
              "display": null,
              "flex": null,
              "flex_flow": null,
              "grid_area": null,
              "grid_auto_columns": null,
              "grid_auto_flow": null,
              "grid_auto_rows": null,
              "grid_column": null,
              "grid_gap": null,
              "grid_row": null,
              "grid_template_areas": null,
              "grid_template_columns": null,
              "grid_template_rows": null,
              "height": null,
              "justify_content": null,
              "justify_items": null,
              "left": null,
              "margin": null,
              "max_height": null,
              "max_width": null,
              "min_height": null,
              "min_width": null,
              "object_fit": null,
              "object_position": null,
              "order": null,
              "overflow": null,
              "overflow_x": null,
              "overflow_y": null,
              "padding": null,
              "right": null,
              "top": null,
              "visibility": null,
              "width": null
            }
          },
          "280353ad8b1c481ab07683e9944d3684": {
            "model_module": "@jupyter-widgets/base",
            "model_name": "LayoutModel",
            "model_module_version": "1.2.0",
            "state": {
              "_model_module": "@jupyter-widgets/base",
              "_model_module_version": "1.2.0",
              "_model_name": "LayoutModel",
              "_view_count": null,
              "_view_module": "@jupyter-widgets/base",
              "_view_module_version": "1.2.0",
              "_view_name": "LayoutView",
              "align_content": null,
              "align_items": null,
              "align_self": null,
              "border": null,
              "bottom": null,
              "display": null,
              "flex": null,
              "flex_flow": null,
              "grid_area": null,
              "grid_auto_columns": null,
              "grid_auto_flow": null,
              "grid_auto_rows": null,
              "grid_column": null,
              "grid_gap": null,
              "grid_row": null,
              "grid_template_areas": null,
              "grid_template_columns": null,
              "grid_template_rows": null,
              "height": null,
              "justify_content": null,
              "justify_items": null,
              "left": null,
              "margin": null,
              "max_height": null,
              "max_width": null,
              "min_height": null,
              "min_width": null,
              "object_fit": null,
              "object_position": null,
              "order": null,
              "overflow": null,
              "overflow_x": null,
              "overflow_y": null,
              "padding": null,
              "right": null,
              "top": null,
              "visibility": null,
              "width": null
            }
          },
          "894876befa8c4b03866dfaf3a921094a": {
            "model_module": "anywidget",
            "model_name": "AnyModel",
            "model_module_version": "~0.9.*",
            "state": {
              "_anywidget_id": "geemap.map_widgets.LayerManagerRow",
              "_dom_classes": [
                "geemap-colab"
              ],
              "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n  for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n    if (decorator = decorators[i4])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp(target, key, result);\n  return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n  constructor(t3, e5, o4) {\n    if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n    this.cssText = t3, this.t = e5;\n  }\n  get styleSheet() {\n    let t3 = this.o;\n    const s2 = this.t;\n    if (e && void 0 === t3) {\n      const e5 = void 0 !== s2 && 1 === s2.length;\n      e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n    }\n    return t3;\n  }\n  toString() {\n    return this.cssText;\n  }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n  const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n    if (true === t4._$cssResult$) return t4.cssText;\n    if (\"number\" == typeof t4) return t4;\n    throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n  })(s2) + t3[o5 + 1]), t3[0]);\n  return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n  if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n  else for (const e5 of o4) {\n    const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n    void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n  }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n  let e5 = \"\";\n  for (const s2 of t4.cssRules) e5 += s2.cssText;\n  return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n  switch (s2) {\n    case Boolean:\n      t3 = t3 ? l : null;\n      break;\n    case Object:\n    case Array:\n      t3 = null == t3 ? t3 : JSON.stringify(t3);\n  }\n  return t3;\n}, fromAttribute(t3, s2) {\n  let i4 = t3;\n  switch (s2) {\n    case Boolean:\n      i4 = null !== t3;\n      break;\n    case Number:\n      i4 = null === t3 ? null : Number(t3);\n      break;\n    case Object:\n    case Array:\n      try {\n        i4 = JSON.parse(t3);\n      } catch (t4) {\n        i4 = null;\n      }\n  }\n  return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n  static addInitializer(t3) {\n    this._$Ei(), (this.l ??= []).push(t3);\n  }\n  static get observedAttributes() {\n    return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n  }\n  static createProperty(t3, s2 = y) {\n    if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n      const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n      void 0 !== r4 && e2(this.prototype, t3, r4);\n    }\n  }\n  static getPropertyDescriptor(t3, s2, i4) {\n    const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n      return this[s2];\n    }, set(t4) {\n      this[s2] = t4;\n    } };\n    return { get() {\n      return e5?.call(this);\n    }, set(s3) {\n      const r4 = e5?.call(this);\n      h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n    }, configurable: true, enumerable: true };\n  }\n  static getPropertyOptions(t3) {\n    return this.elementProperties.get(t3) ?? y;\n  }\n  static _$Ei() {\n    if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n    const t3 = n2(this);\n    t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n  }\n  static finalize() {\n    if (this.hasOwnProperty(d(\"finalized\"))) return;\n    if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n      const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n      for (const i4 of s2) this.createProperty(i4, t4[i4]);\n    }\n    const t3 = this[Symbol.metadata];\n    if (null !== t3) {\n      const s2 = litPropertyMetadata.get(t3);\n      if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n    }\n    this._$Eh = /* @__PURE__ */ new Map();\n    for (const [t4, s2] of this.elementProperties) {\n      const i4 = this._$Eu(t4, s2);\n      void 0 !== i4 && this._$Eh.set(i4, t4);\n    }\n    this.elementStyles = this.finalizeStyles(this.styles);\n  }\n  static finalizeStyles(s2) {\n    const i4 = [];\n    if (Array.isArray(s2)) {\n      const e5 = new Set(s2.flat(1 / 0).reverse());\n      for (const s3 of e5) i4.unshift(c(s3));\n    } else void 0 !== s2 && i4.push(c(s2));\n    return i4;\n  }\n  static _$Eu(t3, s2) {\n    const i4 = s2.attribute;\n    return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n  }\n  constructor() {\n    super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n  }\n  _$Ev() {\n    this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n  }\n  addController(t3) {\n    (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n  }\n  removeController(t3) {\n    this._$EO?.delete(t3);\n  }\n  _$E_() {\n    const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n    for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n    t3.size > 0 && (this._$Ep = t3);\n  }\n  createRenderRoot() {\n    const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n    return S(t3, this.constructor.elementStyles), t3;\n  }\n  connectedCallback() {\n    this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n  }\n  enableUpdating(t3) {\n  }\n  disconnectedCallback() {\n    this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n  }\n  attributeChangedCallback(t3, s2, i4) {\n    this._$AK(t3, i4);\n  }\n  _$EC(t3, s2) {\n    const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n    if (void 0 !== e5 && true === i4.reflect) {\n      const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n      this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n    }\n  }\n  _$AK(t3, s2) {\n    const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n    if (void 0 !== e5 && this._$Em !== e5) {\n      const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n      this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n    }\n  }\n  requestUpdate(t3, s2, i4) {\n    if (void 0 !== t3) {\n      if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n      this.P(t3, s2, i4);\n    }\n    false === this.isUpdatePending && (this._$ES = this._$ET());\n  }\n  P(t3, s2, i4) {\n    this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n  }\n  async _$ET() {\n    this.isUpdatePending = true;\n    try {\n      await this._$ES;\n    } catch (t4) {\n      Promise.reject(t4);\n    }\n    const t3 = this.scheduleUpdate();\n    return null != t3 && await t3, !this.isUpdatePending;\n  }\n  scheduleUpdate() {\n    return this.performUpdate();\n  }\n  performUpdate() {\n    if (!this.isUpdatePending) return;\n    if (!this.hasUpdated) {\n      if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n        for (const [t5, s3] of this._$Ep) this[t5] = s3;\n        this._$Ep = void 0;\n      }\n      const t4 = this.constructor.elementProperties;\n      if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n    }\n    let t3 = false;\n    const s2 = this._$AL;\n    try {\n      t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n    } catch (s3) {\n      throw t3 = false, this._$EU(), s3;\n    }\n    t3 && this._$AE(s2);\n  }\n  willUpdate(t3) {\n  }\n  _$AE(t3) {\n    this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n  }\n  _$EU() {\n    this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n  }\n  get updateComplete() {\n    return this.getUpdateComplete();\n  }\n  getUpdateComplete() {\n    return this._$ES;\n  }\n  shouldUpdate(t3) {\n    return true;\n  }\n  update(t3) {\n    this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n  }\n  updated(t3) {\n  }\n  firstUpdated(t3) {\n  }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n  if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n  return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n  const s2 = t3.length - 1, e5 = [];\n  let h4, o4 = 2 === i4 ? \"<svg>\" : 3 === i4 ? \"<math>\" : \"\", n5 = T;\n  for (let i5 = 0; i5 < s2; i5++) {\n    const s3 = t3[i5];\n    let r4, l2, c4 = -1, a2 = 0;\n    for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"</\" + l2[2], \"g\")), n5 = O) : void 0 !== l2[3] && (n5 = O) : n5 === O ? \">\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n    const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n    o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n  }\n  return [N(t3, o4 + (t3[s2] || \"<?>\") + (2 === i4 ? \"</svg>\" : 3 === i4 ? \"</math>\" : \"\")), e5];\n};\nvar B = class _B {\n  constructor({ strings: t3, _$litType$: i4 }, s2) {\n    let e5;\n    this.parts = [];\n    let h4 = 0, o4 = 0;\n    const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n    if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n      const t4 = this.el.content.firstChild;\n      t4.replaceWith(...t4.childNodes);\n    }\n    for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n      if (1 === e5.nodeType) {\n        if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n          const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n          r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n        } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n        if (M.test(e5.tagName)) {\n          const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n          if (i5 > 0) {\n            e5.textContent = c3 ? c3.emptyScript : \"\";\n            for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n            e5.append(t4[i5], lt());\n          }\n        }\n      } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n      else {\n        let t4 = -1;\n        for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n      }\n      h4++;\n    }\n  }\n  static createElement(t3, i4) {\n    const s2 = w.createElement(\"template\");\n    return s2.innerHTML = t3, s2;\n  }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n  if (i4 === R) return i4;\n  let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n  const o4 = st(i4) ? void 0 : i4._$litDirective$;\n  return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n  constructor(t3, i4) {\n    this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n  }\n  get parentNode() {\n    return this._$AM.parentNode;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  u(t3) {\n    const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n    I.currentNode = e5;\n    let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n    for (; void 0 !== r4; ) {\n      if (o4 === r4.index) {\n        let i5;\n        2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n      }\n      o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n    }\n    return I.currentNode = w, e5;\n  }\n  p(t3) {\n    let i4 = 0;\n    for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n  }\n};\nvar et = class _et {\n  get _$AU() {\n    return this._$AM?._$AU ?? this.v;\n  }\n  constructor(t3, i4, s2, e5) {\n    this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n  }\n  get parentNode() {\n    let t3 = this._$AA.parentNode;\n    const i4 = this._$AM;\n    return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n  }\n  get startNode() {\n    return this._$AA;\n  }\n  get endNode() {\n    return this._$AB;\n  }\n  _$AI(t3, i4 = this) {\n    t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n  }\n  O(t3) {\n    return this._$AA.parentNode.insertBefore(t3, this._$AB);\n  }\n  T(t3) {\n    this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n  }\n  _(t3) {\n    this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n  }\n  $(t3) {\n    const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n    if (this._$AH?._$AD === e5) this._$AH.p(i4);\n    else {\n      const t4 = new F(e5, this), s3 = t4.u(this.options);\n      t4.p(i4), this.T(s3), this._$AH = t4;\n    }\n  }\n  _$AC(t3) {\n    let i4 = V.get(t3.strings);\n    return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n  }\n  k(t3) {\n    g(this._$AH) || (this._$AH = [], this._$AR());\n    const i4 = this._$AH;\n    let s2, e5 = 0;\n    for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n    e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n  }\n  _$AR(t3 = this._$AA.nextSibling, i4) {\n    for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n      const i5 = t3.nextSibling;\n      t3.remove(), t3 = i5;\n    }\n  }\n  setConnected(t3) {\n    void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n  }\n};\nvar G = class {\n  get tagName() {\n    return this.element.tagName;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  constructor(t3, i4, s2, e5, h4) {\n    this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n  }\n  _$AI(t3, i4 = this, s2, e5) {\n    const h4 = this.strings;\n    let o4 = false;\n    if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n    else {\n      const e6 = t3;\n      let n5, r4;\n      for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n    }\n    o4 && !e5 && this.j(t3);\n  }\n  j(t3) {\n    t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n  }\n};\nvar Y = class extends G {\n  constructor() {\n    super(...arguments), this.type = 3;\n  }\n  j(t3) {\n    this.element[this.name] = t3 === D ? void 0 : t3;\n  }\n};\nvar Z = class extends G {\n  constructor() {\n    super(...arguments), this.type = 4;\n  }\n  j(t3) {\n    this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n  }\n};\nvar q = class extends G {\n  constructor(t3, i4, s2, e5, h4) {\n    super(t3, i4, s2, e5, h4), this.type = 5;\n  }\n  _$AI(t3, i4 = this) {\n    if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n    const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n    e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n  }\n  handleEvent(t3) {\n    \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n  }\n};\nvar K = class {\n  constructor(t3, i4, s2) {\n    this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AI(t3) {\n    z(this, t3);\n  }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n  const e5 = s2?.renderBefore ?? i4;\n  let h4 = e5._$litPart$;\n  if (void 0 === h4) {\n    const t4 = s2?.renderBefore ?? null;\n    e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n  }\n  return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n  constructor() {\n    super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n  }\n  createRenderRoot() {\n    const t3 = super.createRenderRoot();\n    return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n  }\n  update(t3) {\n    const e5 = this.render();\n    this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n  }\n  connectedCallback() {\n    super.connectedCallback(), this.o?.setConnected(true);\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback(), this.o?.setConnected(false);\n  }\n  render() {\n    return R;\n  }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n  const { kind: n5, metadata: i4 } = r4;\n  let s2 = globalThis.litPropertyMetadata.get(i4);\n  if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n    const { name: o4 } = r4;\n    return { set(r5) {\n      const n6 = e5.get.call(this);\n      e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n    }, init(e6) {\n      return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n    } };\n  }\n  if (\"setter\" === n5) {\n    const { name: o4 } = r4;\n    return function(r5) {\n      const n6 = this[o4];\n      e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n    };\n  }\n  throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n  return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n    const r4 = e6.hasOwnProperty(o5);\n    return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n  })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n  constructor(t3) {\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AT(t3, e5, i4) {\n    this.t = t3, this._$AM = e5, this.i = i4;\n  }\n  _$AS(t3, e5) {\n    return this.update(t3, e5);\n  }\n  update(t3, e5) {\n    return this.render(...e5);\n  }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n  constructor(s2) {\n    if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n  }\n  render(t3) {\n    return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n  }\n  update(t3, [s2]) {\n    if (void 0 === this.st) {\n      this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n      for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n      return this.render(s2);\n    }\n    const i4 = t3.element.classList;\n    for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n    for (const t4 in s2) {\n      const r4 = !!s2[t4];\n      r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n    }\n    return R;\n  }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n    .legacy-button {\n        align-items: center;\n        background-color: var(--jp-layout-color2);\n        border-width: 0;\n        box-shadow: none;\n        color: var(--jp-ui-font-color1);\n        cursor: pointer;\n        display: flex;\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        justify-content: center;\n        line-height: var(--jp-widgets-inline-height);\n        padding: 0;\n        user-select: none;\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button:hover:enabled,\n    .legacy-button:focus:enabled {\n        box-shadow: 0 2px 2px 0\n                rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n            0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n            0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n    }\n\n    .legacy-slider {\n        -webkit-appearance: none;\n        appearance: none;\n        background: var(--jp-layout-color3);\n        border-radius: 3px;\n        height: 4px;\n        outline: none;\n    }\n\n    .legacy-slider::-webkit-slider-thumb,\n    .legacy-slider::-moz-range-thumb {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        border-radius: 50%;\n        cursor: pointer;\n        height: var(--jp-widgets-slider-handle-size);\n        width: var(--jp-widgets-slider-handle-size);\n    }\n\n    .legacy-text {\n        color: var(--jp-widgets-label-color);\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        vertical-align: middle;\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: 28px;\n        line-height: 28px;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-select[disabled] {\n        opacity: 0.4;\n        cursor: not-allowed;\n    }\n\n    .legacy-text-input {\n        background: var(--jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n    }\n\n    .legacy-text-input:disabled {\n        opacity: var(--jp-widgets-disabled-opacity);\n    }\n\n    .legacy-color {\n        align-self: stretch;\n        background: var(--jp-widgets-input-background-color);\n        border-left: none;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 0;\n        flex-shrink: 0;\n        height: var(--jp-widgets-inline-height);\n        outline: none !important;\n        padding: 0 2px;\n        width: var(--jp-widgets-inline-height);\n    }\n\n    .legacy-radio {\n        margin: 0;\n        vertical-align: middle;\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: inherit;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-input {\n        box-sizing: border-box;\n        background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n    }\n`;\n\n// js/styles.ts\nvar materialStyles = i`\n    @font-face {\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: 400;\n        src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n            format(\"woff2\");\n    }\n\n    .material-symbols-outlined {\n        -webkit-font-feature-settings: \"liga\";\n        -webkit-font-smoothing: antialiased;\n        direction: ltr;\n        display: inline-block;\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: normal;\n        letter-spacing: normal;\n        line-height: 1;\n        text-transform: none;\n        white-space: nowrap;\n        word-wrap: normal;\n    }\n`;\nvar flexStyles = i`\n    .vertical-flex {\n        display: flex;\n        flex-direction: column;\n        gap: 8px;\n    }\n\n    .horizontal-flex {\n        align-items: center;\n        display: flex;\n        flex-wrap: nowrap;\n        gap: 8px;\n    }\n\n    input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n        width: 100%;\n    }\n\n    select {\n        width: 100%;\n    }\n\n    .horizontal-flex .legacy-text {\n        flex-shrink: 0;\n    }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n  if (!document.querySelector(\".custom-fonts\")) {\n    const styleElement = document.createElement(\"style\");\n    styleElement.classList.add(\"custom-fonts\");\n    styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n    document.body.appendChild(styleElement);\n  }\n}\nfunction reverseMap(map) {\n  const reversedMap = /* @__PURE__ */ new Map();\n  for (const [key, value] of map.entries()) {\n    if (value != null) {\n      reversedMap.set(value, key);\n    }\n  }\n  return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n  constructor() {\n    super(...arguments);\n    this._model = void 0;\n  }\n  onCustomMessage(_msg) {\n  }\n  viewNameToModelName() {\n    return reverseMap(this.modelNameToViewName());\n  }\n  set model(model) {\n    this._model = model;\n    for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n      if (widgetKey) {\n        this[widgetKey] = model.get(modelKey);\n        model.on(`change:${String(modelKey)}`, () => {\n          this[widgetKey] = model.get(modelKey);\n        });\n      }\n    }\n    model.on(\"msg:custom\", (msg) => {\n      this.onCustomMessage?.(msg);\n    });\n  }\n  get model() {\n    return this._model;\n  }\n  updated(changedProperties) {\n    const viewToModelMap = this.viewNameToModelName();\n    for (const [viewProp, _2] of changedProperties) {\n      const castViewProp = viewProp;\n      if (viewToModelMap.has(castViewProp)) {\n        const modelProp = viewToModelMap.get(castViewProp);\n        this._model?.set(\n          modelProp,\n          this[castViewProp]\n        );\n      }\n    }\n    this._model?.save_changes();\n  }\n};\n\n// js/layer_manager_row.ts\nvar LayerManagerRow = class extends LitWidget {\n  constructor() {\n    super(...arguments);\n    this.name = \"\";\n    this.visible = true;\n    this.opacity = 1;\n    this.isLoading = false;\n    this.isConfirmDialogVisible = false;\n  }\n  static get componentName() {\n    return `layer-manager-row`;\n  }\n  static {\n    this.styles = [\n      legacyStyles,\n      materialStyles,\n      i`\n            .row {\n                align-items: center;\n                display: flex;\n                gap: 4px;\n            }\n\n            .layer-name {\n                cursor: pointer;\n                flex-grow: 1;\n                max-width: 150px;\n                overflow: hidden;\n                text-overflow: ellipsis;\n            }\n\n            .row-button {\n                font-size: 16px;\n                height: 28px;\n                width: 28px;\n            }\n\n            .layer-opacity-slider {\n                width: 70px;\n            }\n\n            .layer-visibility-checkbox {\n                margin: 2px;\n            }\n\n            .spinner {\n                -webkit-animation: spin 2s linear infinite;\n                animation: spin 2s linear infinite;\n                border-radius: 50%;\n                border: 4px solid var(--jp-widgets-input-border-color);\n                border-top: 4px solid var(--jp-widgets-color);\n                height: 12px;\n                width: 12px;\n            }\n\n            @-webkit-keyframes spin {\n                0% {\n                    -webkit-transform: rotate(0deg);\n                }\n                100% {\n                    -webkit-transform: rotate(360deg);\n                }\n            }\n\n            @keyframes spin {\n                0% {\n                    transform: rotate(0deg);\n                }\n                100% {\n                    transform: rotate(360deg);\n                }\n            }\n\n            button.loading .spinner,\n            button.loading:hover .close-icon,\n            button.done-loading .close-icon {\n                display: block;\n            }\n\n            button.loading .close-icon,\n            button.loading:hover .spinner,\n            button.done-loading .spinner {\n                display: none;\n            }\n\n            .remove-layer-text {\n                flex-grow: 1;\n                padding-left: 22px;\n            }\n\n            .confirm-deletion-container {\n                margin-top: 4px;\n            }\n\n            .confirm-deletion-container button {\n                height: 28px;\n                width: 70px;\n            }\n        `\n    ];\n  }\n  modelNameToViewName() {\n    return /* @__PURE__ */ new Map([\n      [\"name\", \"name\"],\n      [\"visible\", \"visible\"],\n      [\"opacity\", \"opacity\"],\n      [\"is_loading\", \"isLoading\"]\n    ]);\n  }\n  render() {\n    return ke`\n            <div class=\"row\">\n                <input\n                    type=\"checkbox\"\n                    class=\"layer-visibility-checkbox\"\n                    .checked=\"${this.visible}\"\n                    @click=\"${this.onLayerVisibilityChanged}\"\n                />\n                <span\n                    class=\"legacy-text layer-name\"\n                    @click=\"${this.onLayerVisibilityChanged}\"\n                >\n                    ${this.name}\n                </span>\n                <input\n                    type=\"range\"\n                    class=\"legacy-slider layer-opacity-slider\"\n                    min=\"0\"\n                    max=\"1\"\n                    step=\"0.01\"\n                    .value=\"${this.opacity}\"\n                    @input=\"${this.onLayerOpacityChanged}\"\n                />\n                <button\n                    class=\"legacy-button row-button settings-button\"\n                    @click=\"${this.onSettingsClicked}\"\n                >\n                    <span class=\"material-symbols-outlined\">settings</span>\n                </button>\n                <button\n                    class=${Rt({\n      \"legacy-button\": true,\n      \"row-button\": true,\n      \"delete-button\": true,\n      loading: this.isLoading,\n      \"done-loading\": !this.isLoading\n    })}\n                    @click=\"${this.onDeleteClicked}\"\n                >\n                    <div class=\"spinner\"></div>\n                    <span class=\"close-icon material-symbols-outlined\"\n                        >delete</span\n                    >\n                </button>\n            </div>\n            ${this.renderConfirmDialog()}\n        `;\n  }\n  renderConfirmDialog() {\n    if (!this.isConfirmDialogVisible) {\n      return D;\n    }\n    return ke`\n            <div class=\"row confirm-deletion-container\">\n                <span class=\"legacy-text remove-layer-text\">Remove layer?</span>\n                <button\n                    class=\"legacy-button\"\n                    @click=\"${this.cancelDeletion}\"\n                >\n                    No\n                </button>\n                <button\n                    class=\"legacy-button primary confirm-deletion-button\"\n                    @click=\"${this.confirmDeletion}\"\n                >\n                    Yes\n                </button>\n            </div>\n        `;\n  }\n  onLayerVisibilityChanged(_event) {\n    this.visible = !this.visible;\n  }\n  onLayerOpacityChanged(event) {\n    const target = event.target;\n    this.opacity = parseFloat(target.value);\n  }\n  onSettingsClicked(_2) {\n    this.model?.send({ type: \"click\", id: \"settings\" });\n  }\n  onDeleteClicked(_2) {\n    this.isConfirmDialogVisible = true;\n  }\n  confirmDeletion(_2) {\n    this.model?.send({ type: \"click\", id: \"delete\" });\n  }\n  cancelDeletion(_2) {\n    this.isConfirmDialogVisible = false;\n  }\n};\n__decorateClass([\n  n4()\n], LayerManagerRow.prototype, \"name\", 2);\n__decorateClass([\n  n4()\n], LayerManagerRow.prototype, \"visible\", 2);\n__decorateClass([\n  n4()\n], LayerManagerRow.prototype, \"opacity\", 2);\n__decorateClass([\n  n4()\n], LayerManagerRow.prototype, \"isLoading\", 2);\n__decorateClass([\n  n4()\n], LayerManagerRow.prototype, \"isConfirmDialogVisible\", 2);\nif (!customElements.get(LayerManagerRow.componentName)) {\n  customElements.define(LayerManagerRow.componentName, LayerManagerRow);\n}\nfunction render({ model, el }) {\n  loadFonts();\n  const row = document.createElement(LayerManagerRow.componentName);\n  row.model = model;\n  el.appendChild(row);\n}\nvar layer_manager_row_default = { render };\nexport {\n  LayerManagerRow,\n  layer_manager_row_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n  (**\n   * @license\n   * Copyright 2019 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/is-server.js:\n  (**\n   * @license\n   * Copyright 2022 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n  (**\n   * @license\n   * Copyright 2021 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/directives/class-map.js:\n  (**\n   * @license\n   * Copyright 2018 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n*/\n",
              "_model_module": "anywidget",
              "_model_module_version": "~0.9.*",
              "_model_name": "AnyModel",
              "_view_count": null,
              "_view_module": "anywidget",
              "_view_module_version": "~0.9.*",
              "_view_name": "AnyView",
              "is_loading": false,
              "layout": "IPY_MODEL_a9b02c6d53844f678c1e108f39c194c0",
              "name": "OpenStreetMap.DE",
              "opacity": 1,
              "visible": true
            }
          },
          "fd730fe29529462cb9283b683f8b8a45": {
            "model_module": "anywidget",
            "model_name": "AnyModel",
            "model_module_version": "~0.9.*",
            "state": {
              "_anywidget_id": "geemap.map_widgets.LayerManagerRow",
              "_dom_classes": [
                "geemap-colab"
              ],
              "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n  for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n    if (decorator = decorators[i4])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp(target, key, result);\n  return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n  constructor(t3, e5, o4) {\n    if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n    this.cssText = t3, this.t = e5;\n  }\n  get styleSheet() {\n    let t3 = this.o;\n    const s2 = this.t;\n    if (e && void 0 === t3) {\n      const e5 = void 0 !== s2 && 1 === s2.length;\n      e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n    }\n    return t3;\n  }\n  toString() {\n    return this.cssText;\n  }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n  const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n    if (true === t4._$cssResult$) return t4.cssText;\n    if (\"number\" == typeof t4) return t4;\n    throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n  })(s2) + t3[o5 + 1]), t3[0]);\n  return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n  if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n  else for (const e5 of o4) {\n    const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n    void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n  }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n  let e5 = \"\";\n  for (const s2 of t4.cssRules) e5 += s2.cssText;\n  return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n  switch (s2) {\n    case Boolean:\n      t3 = t3 ? l : null;\n      break;\n    case Object:\n    case Array:\n      t3 = null == t3 ? t3 : JSON.stringify(t3);\n  }\n  return t3;\n}, fromAttribute(t3, s2) {\n  let i4 = t3;\n  switch (s2) {\n    case Boolean:\n      i4 = null !== t3;\n      break;\n    case Number:\n      i4 = null === t3 ? null : Number(t3);\n      break;\n    case Object:\n    case Array:\n      try {\n        i4 = JSON.parse(t3);\n      } catch (t4) {\n        i4 = null;\n      }\n  }\n  return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n  static addInitializer(t3) {\n    this._$Ei(), (this.l ??= []).push(t3);\n  }\n  static get observedAttributes() {\n    return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n  }\n  static createProperty(t3, s2 = y) {\n    if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n      const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n      void 0 !== r4 && e2(this.prototype, t3, r4);\n    }\n  }\n  static getPropertyDescriptor(t3, s2, i4) {\n    const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n      return this[s2];\n    }, set(t4) {\n      this[s2] = t4;\n    } };\n    return { get() {\n      return e5?.call(this);\n    }, set(s3) {\n      const r4 = e5?.call(this);\n      h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n    }, configurable: true, enumerable: true };\n  }\n  static getPropertyOptions(t3) {\n    return this.elementProperties.get(t3) ?? y;\n  }\n  static _$Ei() {\n    if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n    const t3 = n2(this);\n    t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n  }\n  static finalize() {\n    if (this.hasOwnProperty(d(\"finalized\"))) return;\n    if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n      const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n      for (const i4 of s2) this.createProperty(i4, t4[i4]);\n    }\n    const t3 = this[Symbol.metadata];\n    if (null !== t3) {\n      const s2 = litPropertyMetadata.get(t3);\n      if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n    }\n    this._$Eh = /* @__PURE__ */ new Map();\n    for (const [t4, s2] of this.elementProperties) {\n      const i4 = this._$Eu(t4, s2);\n      void 0 !== i4 && this._$Eh.set(i4, t4);\n    }\n    this.elementStyles = this.finalizeStyles(this.styles);\n  }\n  static finalizeStyles(s2) {\n    const i4 = [];\n    if (Array.isArray(s2)) {\n      const e5 = new Set(s2.flat(1 / 0).reverse());\n      for (const s3 of e5) i4.unshift(c(s3));\n    } else void 0 !== s2 && i4.push(c(s2));\n    return i4;\n  }\n  static _$Eu(t3, s2) {\n    const i4 = s2.attribute;\n    return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n  }\n  constructor() {\n    super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n  }\n  _$Ev() {\n    this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n  }\n  addController(t3) {\n    (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n  }\n  removeController(t3) {\n    this._$EO?.delete(t3);\n  }\n  _$E_() {\n    const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n    for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n    t3.size > 0 && (this._$Ep = t3);\n  }\n  createRenderRoot() {\n    const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n    return S(t3, this.constructor.elementStyles), t3;\n  }\n  connectedCallback() {\n    this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n  }\n  enableUpdating(t3) {\n  }\n  disconnectedCallback() {\n    this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n  }\n  attributeChangedCallback(t3, s2, i4) {\n    this._$AK(t3, i4);\n  }\n  _$EC(t3, s2) {\n    const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n    if (void 0 !== e5 && true === i4.reflect) {\n      const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n      this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n    }\n  }\n  _$AK(t3, s2) {\n    const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n    if (void 0 !== e5 && this._$Em !== e5) {\n      const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n      this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n    }\n  }\n  requestUpdate(t3, s2, i4) {\n    if (void 0 !== t3) {\n      if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n      this.P(t3, s2, i4);\n    }\n    false === this.isUpdatePending && (this._$ES = this._$ET());\n  }\n  P(t3, s2, i4) {\n    this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n  }\n  async _$ET() {\n    this.isUpdatePending = true;\n    try {\n      await this._$ES;\n    } catch (t4) {\n      Promise.reject(t4);\n    }\n    const t3 = this.scheduleUpdate();\n    return null != t3 && await t3, !this.isUpdatePending;\n  }\n  scheduleUpdate() {\n    return this.performUpdate();\n  }\n  performUpdate() {\n    if (!this.isUpdatePending) return;\n    if (!this.hasUpdated) {\n      if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n        for (const [t5, s3] of this._$Ep) this[t5] = s3;\n        this._$Ep = void 0;\n      }\n      const t4 = this.constructor.elementProperties;\n      if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n    }\n    let t3 = false;\n    const s2 = this._$AL;\n    try {\n      t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n    } catch (s3) {\n      throw t3 = false, this._$EU(), s3;\n    }\n    t3 && this._$AE(s2);\n  }\n  willUpdate(t3) {\n  }\n  _$AE(t3) {\n    this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n  }\n  _$EU() {\n    this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n  }\n  get updateComplete() {\n    return this.getUpdateComplete();\n  }\n  getUpdateComplete() {\n    return this._$ES;\n  }\n  shouldUpdate(t3) {\n    return true;\n  }\n  update(t3) {\n    this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n  }\n  updated(t3) {\n  }\n  firstUpdated(t3) {\n  }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n  if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n  return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n  const s2 = t3.length - 1, e5 = [];\n  let h4, o4 = 2 === i4 ? \"<svg>\" : 3 === i4 ? \"<math>\" : \"\", n5 = T;\n  for (let i5 = 0; i5 < s2; i5++) {\n    const s3 = t3[i5];\n    let r4, l2, c4 = -1, a2 = 0;\n    for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"</\" + l2[2], \"g\")), n5 = O) : void 0 !== l2[3] && (n5 = O) : n5 === O ? \">\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n    const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n    o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n  }\n  return [N(t3, o4 + (t3[s2] || \"<?>\") + (2 === i4 ? \"</svg>\" : 3 === i4 ? \"</math>\" : \"\")), e5];\n};\nvar B = class _B {\n  constructor({ strings: t3, _$litType$: i4 }, s2) {\n    let e5;\n    this.parts = [];\n    let h4 = 0, o4 = 0;\n    const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n    if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n      const t4 = this.el.content.firstChild;\n      t4.replaceWith(...t4.childNodes);\n    }\n    for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n      if (1 === e5.nodeType) {\n        if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n          const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n          r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n        } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n        if (M.test(e5.tagName)) {\n          const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n          if (i5 > 0) {\n            e5.textContent = c3 ? c3.emptyScript : \"\";\n            for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n            e5.append(t4[i5], lt());\n          }\n        }\n      } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n      else {\n        let t4 = -1;\n        for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n      }\n      h4++;\n    }\n  }\n  static createElement(t3, i4) {\n    const s2 = w.createElement(\"template\");\n    return s2.innerHTML = t3, s2;\n  }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n  if (i4 === R) return i4;\n  let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n  const o4 = st(i4) ? void 0 : i4._$litDirective$;\n  return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n  constructor(t3, i4) {\n    this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n  }\n  get parentNode() {\n    return this._$AM.parentNode;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  u(t3) {\n    const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n    I.currentNode = e5;\n    let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n    for (; void 0 !== r4; ) {\n      if (o4 === r4.index) {\n        let i5;\n        2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n      }\n      o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n    }\n    return I.currentNode = w, e5;\n  }\n  p(t3) {\n    let i4 = 0;\n    for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n  }\n};\nvar et = class _et {\n  get _$AU() {\n    return this._$AM?._$AU ?? this.v;\n  }\n  constructor(t3, i4, s2, e5) {\n    this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n  }\n  get parentNode() {\n    let t3 = this._$AA.parentNode;\n    const i4 = this._$AM;\n    return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n  }\n  get startNode() {\n    return this._$AA;\n  }\n  get endNode() {\n    return this._$AB;\n  }\n  _$AI(t3, i4 = this) {\n    t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n  }\n  O(t3) {\n    return this._$AA.parentNode.insertBefore(t3, this._$AB);\n  }\n  T(t3) {\n    this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n  }\n  _(t3) {\n    this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n  }\n  $(t3) {\n    const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n    if (this._$AH?._$AD === e5) this._$AH.p(i4);\n    else {\n      const t4 = new F(e5, this), s3 = t4.u(this.options);\n      t4.p(i4), this.T(s3), this._$AH = t4;\n    }\n  }\n  _$AC(t3) {\n    let i4 = V.get(t3.strings);\n    return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n  }\n  k(t3) {\n    g(this._$AH) || (this._$AH = [], this._$AR());\n    const i4 = this._$AH;\n    let s2, e5 = 0;\n    for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n    e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n  }\n  _$AR(t3 = this._$AA.nextSibling, i4) {\n    for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n      const i5 = t3.nextSibling;\n      t3.remove(), t3 = i5;\n    }\n  }\n  setConnected(t3) {\n    void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n  }\n};\nvar G = class {\n  get tagName() {\n    return this.element.tagName;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  constructor(t3, i4, s2, e5, h4) {\n    this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n  }\n  _$AI(t3, i4 = this, s2, e5) {\n    const h4 = this.strings;\n    let o4 = false;\n    if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n    else {\n      const e6 = t3;\n      let n5, r4;\n      for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n    }\n    o4 && !e5 && this.j(t3);\n  }\n  j(t3) {\n    t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n  }\n};\nvar Y = class extends G {\n  constructor() {\n    super(...arguments), this.type = 3;\n  }\n  j(t3) {\n    this.element[this.name] = t3 === D ? void 0 : t3;\n  }\n};\nvar Z = class extends G {\n  constructor() {\n    super(...arguments), this.type = 4;\n  }\n  j(t3) {\n    this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n  }\n};\nvar q = class extends G {\n  constructor(t3, i4, s2, e5, h4) {\n    super(t3, i4, s2, e5, h4), this.type = 5;\n  }\n  _$AI(t3, i4 = this) {\n    if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n    const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n    e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n  }\n  handleEvent(t3) {\n    \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n  }\n};\nvar K = class {\n  constructor(t3, i4, s2) {\n    this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AI(t3) {\n    z(this, t3);\n  }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n  const e5 = s2?.renderBefore ?? i4;\n  let h4 = e5._$litPart$;\n  if (void 0 === h4) {\n    const t4 = s2?.renderBefore ?? null;\n    e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n  }\n  return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n  constructor() {\n    super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n  }\n  createRenderRoot() {\n    const t3 = super.createRenderRoot();\n    return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n  }\n  update(t3) {\n    const e5 = this.render();\n    this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n  }\n  connectedCallback() {\n    super.connectedCallback(), this.o?.setConnected(true);\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback(), this.o?.setConnected(false);\n  }\n  render() {\n    return R;\n  }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n  const { kind: n5, metadata: i4 } = r4;\n  let s2 = globalThis.litPropertyMetadata.get(i4);\n  if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n    const { name: o4 } = r4;\n    return { set(r5) {\n      const n6 = e5.get.call(this);\n      e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n    }, init(e6) {\n      return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n    } };\n  }\n  if (\"setter\" === n5) {\n    const { name: o4 } = r4;\n    return function(r5) {\n      const n6 = this[o4];\n      e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n    };\n  }\n  throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n  return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n    const r4 = e6.hasOwnProperty(o5);\n    return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n  })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n  constructor(t3) {\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AT(t3, e5, i4) {\n    this.t = t3, this._$AM = e5, this.i = i4;\n  }\n  _$AS(t3, e5) {\n    return this.update(t3, e5);\n  }\n  update(t3, e5) {\n    return this.render(...e5);\n  }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n  constructor(s2) {\n    if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n  }\n  render(t3) {\n    return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n  }\n  update(t3, [s2]) {\n    if (void 0 === this.st) {\n      this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n      for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n      return this.render(s2);\n    }\n    const i4 = t3.element.classList;\n    for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n    for (const t4 in s2) {\n      const r4 = !!s2[t4];\n      r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n    }\n    return R;\n  }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n    .legacy-button {\n        align-items: center;\n        background-color: var(--jp-layout-color2);\n        border-width: 0;\n        box-shadow: none;\n        color: var(--jp-ui-font-color1);\n        cursor: pointer;\n        display: flex;\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        justify-content: center;\n        line-height: var(--jp-widgets-inline-height);\n        padding: 0;\n        user-select: none;\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button:hover:enabled,\n    .legacy-button:focus:enabled {\n        box-shadow: 0 2px 2px 0\n                rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n            0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n            0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n    }\n\n    .legacy-slider {\n        -webkit-appearance: none;\n        appearance: none;\n        background: var(--jp-layout-color3);\n        border-radius: 3px;\n        height: 4px;\n        outline: none;\n    }\n\n    .legacy-slider::-webkit-slider-thumb,\n    .legacy-slider::-moz-range-thumb {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        border-radius: 50%;\n        cursor: pointer;\n        height: var(--jp-widgets-slider-handle-size);\n        width: var(--jp-widgets-slider-handle-size);\n    }\n\n    .legacy-text {\n        color: var(--jp-widgets-label-color);\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        vertical-align: middle;\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: 28px;\n        line-height: 28px;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-select[disabled] {\n        opacity: 0.4;\n        cursor: not-allowed;\n    }\n\n    .legacy-text-input {\n        background: var(--jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n    }\n\n    .legacy-text-input:disabled {\n        opacity: var(--jp-widgets-disabled-opacity);\n    }\n\n    .legacy-color {\n        align-self: stretch;\n        background: var(--jp-widgets-input-background-color);\n        border-left: none;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 0;\n        flex-shrink: 0;\n        height: var(--jp-widgets-inline-height);\n        outline: none !important;\n        padding: 0 2px;\n        width: var(--jp-widgets-inline-height);\n    }\n\n    .legacy-radio {\n        margin: 0;\n        vertical-align: middle;\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: inherit;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-input {\n        box-sizing: border-box;\n        background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n    }\n`;\n\n// js/styles.ts\nvar materialStyles = i`\n    @font-face {\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: 400;\n        src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n            format(\"woff2\");\n    }\n\n    .material-symbols-outlined {\n        -webkit-font-feature-settings: \"liga\";\n        -webkit-font-smoothing: antialiased;\n        direction: ltr;\n        display: inline-block;\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: normal;\n        letter-spacing: normal;\n        line-height: 1;\n        text-transform: none;\n        white-space: nowrap;\n        word-wrap: normal;\n    }\n`;\nvar flexStyles = i`\n    .vertical-flex {\n        display: flex;\n        flex-direction: column;\n        gap: 8px;\n    }\n\n    .horizontal-flex {\n        align-items: center;\n        display: flex;\n        flex-wrap: nowrap;\n        gap: 8px;\n    }\n\n    input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n        width: 100%;\n    }\n\n    select {\n        width: 100%;\n    }\n\n    .horizontal-flex .legacy-text {\n        flex-shrink: 0;\n    }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n  if (!document.querySelector(\".custom-fonts\")) {\n    const styleElement = document.createElement(\"style\");\n    styleElement.classList.add(\"custom-fonts\");\n    styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n    document.body.appendChild(styleElement);\n  }\n}\nfunction reverseMap(map) {\n  const reversedMap = /* @__PURE__ */ new Map();\n  for (const [key, value] of map.entries()) {\n    if (value != null) {\n      reversedMap.set(value, key);\n    }\n  }\n  return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n  constructor() {\n    super(...arguments);\n    this._model = void 0;\n  }\n  onCustomMessage(_msg) {\n  }\n  viewNameToModelName() {\n    return reverseMap(this.modelNameToViewName());\n  }\n  set model(model) {\n    this._model = model;\n    for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n      if (widgetKey) {\n        this[widgetKey] = model.get(modelKey);\n        model.on(`change:${String(modelKey)}`, () => {\n          this[widgetKey] = model.get(modelKey);\n        });\n      }\n    }\n    model.on(\"msg:custom\", (msg) => {\n      this.onCustomMessage?.(msg);\n    });\n  }\n  get model() {\n    return this._model;\n  }\n  updated(changedProperties) {\n    const viewToModelMap = this.viewNameToModelName();\n    for (const [viewProp, _2] of changedProperties) {\n      const castViewProp = viewProp;\n      if (viewToModelMap.has(castViewProp)) {\n        const modelProp = viewToModelMap.get(castViewProp);\n        this._model?.set(\n          modelProp,\n          this[castViewProp]\n        );\n      }\n    }\n    this._model?.save_changes();\n  }\n};\n\n// js/layer_manager_row.ts\nvar LayerManagerRow = class extends LitWidget {\n  constructor() {\n    super(...arguments);\n    this.name = \"\";\n    this.visible = true;\n    this.opacity = 1;\n    this.isLoading = false;\n    this.isConfirmDialogVisible = false;\n  }\n  static get componentName() {\n    return `layer-manager-row`;\n  }\n  static {\n    this.styles = [\n      legacyStyles,\n      materialStyles,\n      i`\n            .row {\n                align-items: center;\n                display: flex;\n                gap: 4px;\n            }\n\n            .layer-name {\n                cursor: pointer;\n                flex-grow: 1;\n                max-width: 150px;\n                overflow: hidden;\n                text-overflow: ellipsis;\n            }\n\n            .row-button {\n                font-size: 16px;\n                height: 28px;\n                width: 28px;\n            }\n\n            .layer-opacity-slider {\n                width: 70px;\n            }\n\n            .layer-visibility-checkbox {\n                margin: 2px;\n            }\n\n            .spinner {\n                -webkit-animation: spin 2s linear infinite;\n                animation: spin 2s linear infinite;\n                border-radius: 50%;\n                border: 4px solid var(--jp-widgets-input-border-color);\n                border-top: 4px solid var(--jp-widgets-color);\n                height: 12px;\n                width: 12px;\n            }\n\n            @-webkit-keyframes spin {\n                0% {\n                    -webkit-transform: rotate(0deg);\n                }\n                100% {\n                    -webkit-transform: rotate(360deg);\n                }\n            }\n\n            @keyframes spin {\n                0% {\n                    transform: rotate(0deg);\n                }\n                100% {\n                    transform: rotate(360deg);\n                }\n            }\n\n            button.loading .spinner,\n            button.loading:hover .close-icon,\n            button.done-loading .close-icon {\n                display: block;\n            }\n\n            button.loading .close-icon,\n            button.loading:hover .spinner,\n            button.done-loading .spinner {\n                display: none;\n            }\n\n            .remove-layer-text {\n                flex-grow: 1;\n                padding-left: 22px;\n            }\n\n            .confirm-deletion-container {\n                margin-top: 4px;\n            }\n\n            .confirm-deletion-container button {\n                height: 28px;\n                width: 70px;\n            }\n        `\n    ];\n  }\n  modelNameToViewName() {\n    return /* @__PURE__ */ new Map([\n      [\"name\", \"name\"],\n      [\"visible\", \"visible\"],\n      [\"opacity\", \"opacity\"],\n      [\"is_loading\", \"isLoading\"]\n    ]);\n  }\n  render() {\n    return ke`\n            <div class=\"row\">\n                <input\n                    type=\"checkbox\"\n                    class=\"layer-visibility-checkbox\"\n                    .checked=\"${this.visible}\"\n                    @click=\"${this.onLayerVisibilityChanged}\"\n                />\n                <span\n                    class=\"legacy-text layer-name\"\n                    @click=\"${this.onLayerVisibilityChanged}\"\n                >\n                    ${this.name}\n                </span>\n                <input\n                    type=\"range\"\n                    class=\"legacy-slider layer-opacity-slider\"\n                    min=\"0\"\n                    max=\"1\"\n                    step=\"0.01\"\n                    .value=\"${this.opacity}\"\n                    @input=\"${this.onLayerOpacityChanged}\"\n                />\n                <button\n                    class=\"legacy-button row-button settings-button\"\n                    @click=\"${this.onSettingsClicked}\"\n                >\n                    <span class=\"material-symbols-outlined\">settings</span>\n                </button>\n                <button\n                    class=${Rt({\n      \"legacy-button\": true,\n      \"row-button\": true,\n      \"delete-button\": true,\n      loading: this.isLoading,\n      \"done-loading\": !this.isLoading\n    })}\n                    @click=\"${this.onDeleteClicked}\"\n                >\n                    <div class=\"spinner\"></div>\n                    <span class=\"close-icon material-symbols-outlined\"\n                        >delete</span\n                    >\n                </button>\n            </div>\n            ${this.renderConfirmDialog()}\n        `;\n  }\n  renderConfirmDialog() {\n    if (!this.isConfirmDialogVisible) {\n      return D;\n    }\n    return ke`\n            <div class=\"row confirm-deletion-container\">\n                <span class=\"legacy-text remove-layer-text\">Remove layer?</span>\n                <button\n                    class=\"legacy-button\"\n                    @click=\"${this.cancelDeletion}\"\n                >\n                    No\n                </button>\n                <button\n                    class=\"legacy-button primary confirm-deletion-button\"\n                    @click=\"${this.confirmDeletion}\"\n                >\n                    Yes\n                </button>\n            </div>\n        `;\n  }\n  onLayerVisibilityChanged(_event) {\n    this.visible = !this.visible;\n  }\n  onLayerOpacityChanged(event) {\n    const target = event.target;\n    this.opacity = parseFloat(target.value);\n  }\n  onSettingsClicked(_2) {\n    this.model?.send({ type: \"click\", id: \"settings\" });\n  }\n  onDeleteClicked(_2) {\n    this.isConfirmDialogVisible = true;\n  }\n  confirmDeletion(_2) {\n    this.model?.send({ type: \"click\", id: \"delete\" });\n  }\n  cancelDeletion(_2) {\n    this.isConfirmDialogVisible = false;\n  }\n};\n__decorateClass([\n  n4()\n], LayerManagerRow.prototype, \"name\", 2);\n__decorateClass([\n  n4()\n], LayerManagerRow.prototype, \"visible\", 2);\n__decorateClass([\n  n4()\n], LayerManagerRow.prototype, \"opacity\", 2);\n__decorateClass([\n  n4()\n], LayerManagerRow.prototype, \"isLoading\", 2);\n__decorateClass([\n  n4()\n], LayerManagerRow.prototype, \"isConfirmDialogVisible\", 2);\nif (!customElements.get(LayerManagerRow.componentName)) {\n  customElements.define(LayerManagerRow.componentName, LayerManagerRow);\n}\nfunction render({ model, el }) {\n  loadFonts();\n  const row = document.createElement(LayerManagerRow.componentName);\n  row.model = model;\n  el.appendChild(row);\n}\nvar layer_manager_row_default = { render };\nexport {\n  LayerManagerRow,\n  layer_manager_row_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n  (**\n   * @license\n   * Copyright 2019 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/is-server.js:\n  (**\n   * @license\n   * Copyright 2022 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n  (**\n   * @license\n   * Copyright 2021 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/directives/class-map.js:\n  (**\n   * @license\n   * Copyright 2018 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n*/\n",
              "_model_module": "anywidget",
              "_model_module_version": "~0.9.*",
              "_model_name": "AnyModel",
              "_view_count": null,
              "_view_module": "anywidget",
              "_view_module_version": "~0.9.*",
              "_view_name": "AnyView",
              "is_loading": false,
              "layout": "IPY_MODEL_97f9645792d94800b1e86e9ee5da0f5c",
              "name": "PARDIG 24h Rainfall Accumulation (mm)",
              "opacity": 0.75,
              "visible": true
            }
          },
          "0fb26b9389474648b96630ee49ae8b76": {
            "model_module": "anywidget",
            "model_name": "AnyModel",
            "model_module_version": "~0.9.*",
            "state": {
              "_anywidget_id": "geemap.map_widgets.LayerManagerRow",
              "_dom_classes": [
                "geemap-colab"
              ],
              "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n  for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n    if (decorator = decorators[i4])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp(target, key, result);\n  return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n  constructor(t3, e5, o4) {\n    if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n    this.cssText = t3, this.t = e5;\n  }\n  get styleSheet() {\n    let t3 = this.o;\n    const s2 = this.t;\n    if (e && void 0 === t3) {\n      const e5 = void 0 !== s2 && 1 === s2.length;\n      e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n    }\n    return t3;\n  }\n  toString() {\n    return this.cssText;\n  }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n  const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n    if (true === t4._$cssResult$) return t4.cssText;\n    if (\"number\" == typeof t4) return t4;\n    throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n  })(s2) + t3[o5 + 1]), t3[0]);\n  return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n  if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n  else for (const e5 of o4) {\n    const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n    void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n  }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n  let e5 = \"\";\n  for (const s2 of t4.cssRules) e5 += s2.cssText;\n  return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n  switch (s2) {\n    case Boolean:\n      t3 = t3 ? l : null;\n      break;\n    case Object:\n    case Array:\n      t3 = null == t3 ? t3 : JSON.stringify(t3);\n  }\n  return t3;\n}, fromAttribute(t3, s2) {\n  let i4 = t3;\n  switch (s2) {\n    case Boolean:\n      i4 = null !== t3;\n      break;\n    case Number:\n      i4 = null === t3 ? null : Number(t3);\n      break;\n    case Object:\n    case Array:\n      try {\n        i4 = JSON.parse(t3);\n      } catch (t4) {\n        i4 = null;\n      }\n  }\n  return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n  static addInitializer(t3) {\n    this._$Ei(), (this.l ??= []).push(t3);\n  }\n  static get observedAttributes() {\n    return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n  }\n  static createProperty(t3, s2 = y) {\n    if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n      const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n      void 0 !== r4 && e2(this.prototype, t3, r4);\n    }\n  }\n  static getPropertyDescriptor(t3, s2, i4) {\n    const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n      return this[s2];\n    }, set(t4) {\n      this[s2] = t4;\n    } };\n    return { get() {\n      return e5?.call(this);\n    }, set(s3) {\n      const r4 = e5?.call(this);\n      h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n    }, configurable: true, enumerable: true };\n  }\n  static getPropertyOptions(t3) {\n    return this.elementProperties.get(t3) ?? y;\n  }\n  static _$Ei() {\n    if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n    const t3 = n2(this);\n    t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n  }\n  static finalize() {\n    if (this.hasOwnProperty(d(\"finalized\"))) return;\n    if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n      const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n      for (const i4 of s2) this.createProperty(i4, t4[i4]);\n    }\n    const t3 = this[Symbol.metadata];\n    if (null !== t3) {\n      const s2 = litPropertyMetadata.get(t3);\n      if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n    }\n    this._$Eh = /* @__PURE__ */ new Map();\n    for (const [t4, s2] of this.elementProperties) {\n      const i4 = this._$Eu(t4, s2);\n      void 0 !== i4 && this._$Eh.set(i4, t4);\n    }\n    this.elementStyles = this.finalizeStyles(this.styles);\n  }\n  static finalizeStyles(s2) {\n    const i4 = [];\n    if (Array.isArray(s2)) {\n      const e5 = new Set(s2.flat(1 / 0).reverse());\n      for (const s3 of e5) i4.unshift(c(s3));\n    } else void 0 !== s2 && i4.push(c(s2));\n    return i4;\n  }\n  static _$Eu(t3, s2) {\n    const i4 = s2.attribute;\n    return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n  }\n  constructor() {\n    super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n  }\n  _$Ev() {\n    this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n  }\n  addController(t3) {\n    (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n  }\n  removeController(t3) {\n    this._$EO?.delete(t3);\n  }\n  _$E_() {\n    const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n    for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n    t3.size > 0 && (this._$Ep = t3);\n  }\n  createRenderRoot() {\n    const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n    return S(t3, this.constructor.elementStyles), t3;\n  }\n  connectedCallback() {\n    this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n  }\n  enableUpdating(t3) {\n  }\n  disconnectedCallback() {\n    this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n  }\n  attributeChangedCallback(t3, s2, i4) {\n    this._$AK(t3, i4);\n  }\n  _$EC(t3, s2) {\n    const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n    if (void 0 !== e5 && true === i4.reflect) {\n      const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n      this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n    }\n  }\n  _$AK(t3, s2) {\n    const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n    if (void 0 !== e5 && this._$Em !== e5) {\n      const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n      this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n    }\n  }\n  requestUpdate(t3, s2, i4) {\n    if (void 0 !== t3) {\n      if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n      this.P(t3, s2, i4);\n    }\n    false === this.isUpdatePending && (this._$ES = this._$ET());\n  }\n  P(t3, s2, i4) {\n    this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n  }\n  async _$ET() {\n    this.isUpdatePending = true;\n    try {\n      await this._$ES;\n    } catch (t4) {\n      Promise.reject(t4);\n    }\n    const t3 = this.scheduleUpdate();\n    return null != t3 && await t3, !this.isUpdatePending;\n  }\n  scheduleUpdate() {\n    return this.performUpdate();\n  }\n  performUpdate() {\n    if (!this.isUpdatePending) return;\n    if (!this.hasUpdated) {\n      if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n        for (const [t5, s3] of this._$Ep) this[t5] = s3;\n        this._$Ep = void 0;\n      }\n      const t4 = this.constructor.elementProperties;\n      if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n    }\n    let t3 = false;\n    const s2 = this._$AL;\n    try {\n      t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n    } catch (s3) {\n      throw t3 = false, this._$EU(), s3;\n    }\n    t3 && this._$AE(s2);\n  }\n  willUpdate(t3) {\n  }\n  _$AE(t3) {\n    this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n  }\n  _$EU() {\n    this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n  }\n  get updateComplete() {\n    return this.getUpdateComplete();\n  }\n  getUpdateComplete() {\n    return this._$ES;\n  }\n  shouldUpdate(t3) {\n    return true;\n  }\n  update(t3) {\n    this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n  }\n  updated(t3) {\n  }\n  firstUpdated(t3) {\n  }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n  if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n  return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n  const s2 = t3.length - 1, e5 = [];\n  let h4, o4 = 2 === i4 ? \"<svg>\" : 3 === i4 ? \"<math>\" : \"\", n5 = T;\n  for (let i5 = 0; i5 < s2; i5++) {\n    const s3 = t3[i5];\n    let r4, l2, c4 = -1, a2 = 0;\n    for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"</\" + l2[2], \"g\")), n5 = O) : void 0 !== l2[3] && (n5 = O) : n5 === O ? \">\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n    const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n    o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n  }\n  return [N(t3, o4 + (t3[s2] || \"<?>\") + (2 === i4 ? \"</svg>\" : 3 === i4 ? \"</math>\" : \"\")), e5];\n};\nvar B = class _B {\n  constructor({ strings: t3, _$litType$: i4 }, s2) {\n    let e5;\n    this.parts = [];\n    let h4 = 0, o4 = 0;\n    const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n    if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n      const t4 = this.el.content.firstChild;\n      t4.replaceWith(...t4.childNodes);\n    }\n    for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n      if (1 === e5.nodeType) {\n        if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n          const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n          r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n        } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n        if (M.test(e5.tagName)) {\n          const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n          if (i5 > 0) {\n            e5.textContent = c3 ? c3.emptyScript : \"\";\n            for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n            e5.append(t4[i5], lt());\n          }\n        }\n      } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n      else {\n        let t4 = -1;\n        for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n      }\n      h4++;\n    }\n  }\n  static createElement(t3, i4) {\n    const s2 = w.createElement(\"template\");\n    return s2.innerHTML = t3, s2;\n  }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n  if (i4 === R) return i4;\n  let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n  const o4 = st(i4) ? void 0 : i4._$litDirective$;\n  return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n  constructor(t3, i4) {\n    this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n  }\n  get parentNode() {\n    return this._$AM.parentNode;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  u(t3) {\n    const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n    I.currentNode = e5;\n    let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n    for (; void 0 !== r4; ) {\n      if (o4 === r4.index) {\n        let i5;\n        2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n      }\n      o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n    }\n    return I.currentNode = w, e5;\n  }\n  p(t3) {\n    let i4 = 0;\n    for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n  }\n};\nvar et = class _et {\n  get _$AU() {\n    return this._$AM?._$AU ?? this.v;\n  }\n  constructor(t3, i4, s2, e5) {\n    this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n  }\n  get parentNode() {\n    let t3 = this._$AA.parentNode;\n    const i4 = this._$AM;\n    return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n  }\n  get startNode() {\n    return this._$AA;\n  }\n  get endNode() {\n    return this._$AB;\n  }\n  _$AI(t3, i4 = this) {\n    t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n  }\n  O(t3) {\n    return this._$AA.parentNode.insertBefore(t3, this._$AB);\n  }\n  T(t3) {\n    this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n  }\n  _(t3) {\n    this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n  }\n  $(t3) {\n    const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n    if (this._$AH?._$AD === e5) this._$AH.p(i4);\n    else {\n      const t4 = new F(e5, this), s3 = t4.u(this.options);\n      t4.p(i4), this.T(s3), this._$AH = t4;\n    }\n  }\n  _$AC(t3) {\n    let i4 = V.get(t3.strings);\n    return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n  }\n  k(t3) {\n    g(this._$AH) || (this._$AH = [], this._$AR());\n    const i4 = this._$AH;\n    let s2, e5 = 0;\n    for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n    e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n  }\n  _$AR(t3 = this._$AA.nextSibling, i4) {\n    for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n      const i5 = t3.nextSibling;\n      t3.remove(), t3 = i5;\n    }\n  }\n  setConnected(t3) {\n    void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n  }\n};\nvar G = class {\n  get tagName() {\n    return this.element.tagName;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  constructor(t3, i4, s2, e5, h4) {\n    this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n  }\n  _$AI(t3, i4 = this, s2, e5) {\n    const h4 = this.strings;\n    let o4 = false;\n    if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n    else {\n      const e6 = t3;\n      let n5, r4;\n      for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n    }\n    o4 && !e5 && this.j(t3);\n  }\n  j(t3) {\n    t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n  }\n};\nvar Y = class extends G {\n  constructor() {\n    super(...arguments), this.type = 3;\n  }\n  j(t3) {\n    this.element[this.name] = t3 === D ? void 0 : t3;\n  }\n};\nvar Z = class extends G {\n  constructor() {\n    super(...arguments), this.type = 4;\n  }\n  j(t3) {\n    this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n  }\n};\nvar q = class extends G {\n  constructor(t3, i4, s2, e5, h4) {\n    super(t3, i4, s2, e5, h4), this.type = 5;\n  }\n  _$AI(t3, i4 = this) {\n    if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n    const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n    e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n  }\n  handleEvent(t3) {\n    \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n  }\n};\nvar K = class {\n  constructor(t3, i4, s2) {\n    this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AI(t3) {\n    z(this, t3);\n  }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n  const e5 = s2?.renderBefore ?? i4;\n  let h4 = e5._$litPart$;\n  if (void 0 === h4) {\n    const t4 = s2?.renderBefore ?? null;\n    e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n  }\n  return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n  constructor() {\n    super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n  }\n  createRenderRoot() {\n    const t3 = super.createRenderRoot();\n    return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n  }\n  update(t3) {\n    const e5 = this.render();\n    this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n  }\n  connectedCallback() {\n    super.connectedCallback(), this.o?.setConnected(true);\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback(), this.o?.setConnected(false);\n  }\n  render() {\n    return R;\n  }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n  const { kind: n5, metadata: i4 } = r4;\n  let s2 = globalThis.litPropertyMetadata.get(i4);\n  if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n    const { name: o4 } = r4;\n    return { set(r5) {\n      const n6 = e5.get.call(this);\n      e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n    }, init(e6) {\n      return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n    } };\n  }\n  if (\"setter\" === n5) {\n    const { name: o4 } = r4;\n    return function(r5) {\n      const n6 = this[o4];\n      e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n    };\n  }\n  throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n  return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n    const r4 = e6.hasOwnProperty(o5);\n    return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n  })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n  constructor(t3) {\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AT(t3, e5, i4) {\n    this.t = t3, this._$AM = e5, this.i = i4;\n  }\n  _$AS(t3, e5) {\n    return this.update(t3, e5);\n  }\n  update(t3, e5) {\n    return this.render(...e5);\n  }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n  constructor(s2) {\n    if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n  }\n  render(t3) {\n    return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n  }\n  update(t3, [s2]) {\n    if (void 0 === this.st) {\n      this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n      for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n      return this.render(s2);\n    }\n    const i4 = t3.element.classList;\n    for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n    for (const t4 in s2) {\n      const r4 = !!s2[t4];\n      r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n    }\n    return R;\n  }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n    .legacy-button {\n        align-items: center;\n        background-color: var(--jp-layout-color2);\n        border-width: 0;\n        box-shadow: none;\n        color: var(--jp-ui-font-color1);\n        cursor: pointer;\n        display: flex;\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        justify-content: center;\n        line-height: var(--jp-widgets-inline-height);\n        padding: 0;\n        user-select: none;\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button:hover:enabled,\n    .legacy-button:focus:enabled {\n        box-shadow: 0 2px 2px 0\n                rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n            0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n            0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n    }\n\n    .legacy-slider {\n        -webkit-appearance: none;\n        appearance: none;\n        background: var(--jp-layout-color3);\n        border-radius: 3px;\n        height: 4px;\n        outline: none;\n    }\n\n    .legacy-slider::-webkit-slider-thumb,\n    .legacy-slider::-moz-range-thumb {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        border-radius: 50%;\n        cursor: pointer;\n        height: var(--jp-widgets-slider-handle-size);\n        width: var(--jp-widgets-slider-handle-size);\n    }\n\n    .legacy-text {\n        color: var(--jp-widgets-label-color);\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        vertical-align: middle;\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: 28px;\n        line-height: 28px;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-select[disabled] {\n        opacity: 0.4;\n        cursor: not-allowed;\n    }\n\n    .legacy-text-input {\n        background: var(--jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n    }\n\n    .legacy-text-input:disabled {\n        opacity: var(--jp-widgets-disabled-opacity);\n    }\n\n    .legacy-color {\n        align-self: stretch;\n        background: var(--jp-widgets-input-background-color);\n        border-left: none;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 0;\n        flex-shrink: 0;\n        height: var(--jp-widgets-inline-height);\n        outline: none !important;\n        padding: 0 2px;\n        width: var(--jp-widgets-inline-height);\n    }\n\n    .legacy-radio {\n        margin: 0;\n        vertical-align: middle;\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: inherit;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-input {\n        box-sizing: border-box;\n        background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n    }\n`;\n\n// js/styles.ts\nvar materialStyles = i`\n    @font-face {\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: 400;\n        src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n            format(\"woff2\");\n    }\n\n    .material-symbols-outlined {\n        -webkit-font-feature-settings: \"liga\";\n        -webkit-font-smoothing: antialiased;\n        direction: ltr;\n        display: inline-block;\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: normal;\n        letter-spacing: normal;\n        line-height: 1;\n        text-transform: none;\n        white-space: nowrap;\n        word-wrap: normal;\n    }\n`;\nvar flexStyles = i`\n    .vertical-flex {\n        display: flex;\n        flex-direction: column;\n        gap: 8px;\n    }\n\n    .horizontal-flex {\n        align-items: center;\n        display: flex;\n        flex-wrap: nowrap;\n        gap: 8px;\n    }\n\n    input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n        width: 100%;\n    }\n\n    select {\n        width: 100%;\n    }\n\n    .horizontal-flex .legacy-text {\n        flex-shrink: 0;\n    }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n  if (!document.querySelector(\".custom-fonts\")) {\n    const styleElement = document.createElement(\"style\");\n    styleElement.classList.add(\"custom-fonts\");\n    styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n    document.body.appendChild(styleElement);\n  }\n}\nfunction reverseMap(map) {\n  const reversedMap = /* @__PURE__ */ new Map();\n  for (const [key, value] of map.entries()) {\n    if (value != null) {\n      reversedMap.set(value, key);\n    }\n  }\n  return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n  constructor() {\n    super(...arguments);\n    this._model = void 0;\n  }\n  onCustomMessage(_msg) {\n  }\n  viewNameToModelName() {\n    return reverseMap(this.modelNameToViewName());\n  }\n  set model(model) {\n    this._model = model;\n    for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n      if (widgetKey) {\n        this[widgetKey] = model.get(modelKey);\n        model.on(`change:${String(modelKey)}`, () => {\n          this[widgetKey] = model.get(modelKey);\n        });\n      }\n    }\n    model.on(\"msg:custom\", (msg) => {\n      this.onCustomMessage?.(msg);\n    });\n  }\n  get model() {\n    return this._model;\n  }\n  updated(changedProperties) {\n    const viewToModelMap = this.viewNameToModelName();\n    for (const [viewProp, _2] of changedProperties) {\n      const castViewProp = viewProp;\n      if (viewToModelMap.has(castViewProp)) {\n        const modelProp = viewToModelMap.get(castViewProp);\n        this._model?.set(\n          modelProp,\n          this[castViewProp]\n        );\n      }\n    }\n    this._model?.save_changes();\n  }\n};\n\n// js/layer_manager_row.ts\nvar LayerManagerRow = class extends LitWidget {\n  constructor() {\n    super(...arguments);\n    this.name = \"\";\n    this.visible = true;\n    this.opacity = 1;\n    this.isLoading = false;\n    this.isConfirmDialogVisible = false;\n  }\n  static get componentName() {\n    return `layer-manager-row`;\n  }\n  static {\n    this.styles = [\n      legacyStyles,\n      materialStyles,\n      i`\n            .row {\n                align-items: center;\n                display: flex;\n                gap: 4px;\n            }\n\n            .layer-name {\n                cursor: pointer;\n                flex-grow: 1;\n                max-width: 150px;\n                overflow: hidden;\n                text-overflow: ellipsis;\n            }\n\n            .row-button {\n                font-size: 16px;\n                height: 28px;\n                width: 28px;\n            }\n\n            .layer-opacity-slider {\n                width: 70px;\n            }\n\n            .layer-visibility-checkbox {\n                margin: 2px;\n            }\n\n            .spinner {\n                -webkit-animation: spin 2s linear infinite;\n                animation: spin 2s linear infinite;\n                border-radius: 50%;\n                border: 4px solid var(--jp-widgets-input-border-color);\n                border-top: 4px solid var(--jp-widgets-color);\n                height: 12px;\n                width: 12px;\n            }\n\n            @-webkit-keyframes spin {\n                0% {\n                    -webkit-transform: rotate(0deg);\n                }\n                100% {\n                    -webkit-transform: rotate(360deg);\n                }\n            }\n\n            @keyframes spin {\n                0% {\n                    transform: rotate(0deg);\n                }\n                100% {\n                    transform: rotate(360deg);\n                }\n            }\n\n            button.loading .spinner,\n            button.loading:hover .close-icon,\n            button.done-loading .close-icon {\n                display: block;\n            }\n\n            button.loading .close-icon,\n            button.loading:hover .spinner,\n            button.done-loading .spinner {\n                display: none;\n            }\n\n            .remove-layer-text {\n                flex-grow: 1;\n                padding-left: 22px;\n            }\n\n            .confirm-deletion-container {\n                margin-top: 4px;\n            }\n\n            .confirm-deletion-container button {\n                height: 28px;\n                width: 70px;\n            }\n        `\n    ];\n  }\n  modelNameToViewName() {\n    return /* @__PURE__ */ new Map([\n      [\"name\", \"name\"],\n      [\"visible\", \"visible\"],\n      [\"opacity\", \"opacity\"],\n      [\"is_loading\", \"isLoading\"]\n    ]);\n  }\n  render() {\n    return ke`\n            <div class=\"row\">\n                <input\n                    type=\"checkbox\"\n                    class=\"layer-visibility-checkbox\"\n                    .checked=\"${this.visible}\"\n                    @click=\"${this.onLayerVisibilityChanged}\"\n                />\n                <span\n                    class=\"legacy-text layer-name\"\n                    @click=\"${this.onLayerVisibilityChanged}\"\n                >\n                    ${this.name}\n                </span>\n                <input\n                    type=\"range\"\n                    class=\"legacy-slider layer-opacity-slider\"\n                    min=\"0\"\n                    max=\"1\"\n                    step=\"0.01\"\n                    .value=\"${this.opacity}\"\n                    @input=\"${this.onLayerOpacityChanged}\"\n                />\n                <button\n                    class=\"legacy-button row-button settings-button\"\n                    @click=\"${this.onSettingsClicked}\"\n                >\n                    <span class=\"material-symbols-outlined\">settings</span>\n                </button>\n                <button\n                    class=${Rt({\n      \"legacy-button\": true,\n      \"row-button\": true,\n      \"delete-button\": true,\n      loading: this.isLoading,\n      \"done-loading\": !this.isLoading\n    })}\n                    @click=\"${this.onDeleteClicked}\"\n                >\n                    <div class=\"spinner\"></div>\n                    <span class=\"close-icon material-symbols-outlined\"\n                        >delete</span\n                    >\n                </button>\n            </div>\n            ${this.renderConfirmDialog()}\n        `;\n  }\n  renderConfirmDialog() {\n    if (!this.isConfirmDialogVisible) {\n      return D;\n    }\n    return ke`\n            <div class=\"row confirm-deletion-container\">\n                <span class=\"legacy-text remove-layer-text\">Remove layer?</span>\n                <button\n                    class=\"legacy-button\"\n                    @click=\"${this.cancelDeletion}\"\n                >\n                    No\n                </button>\n                <button\n                    class=\"legacy-button primary confirm-deletion-button\"\n                    @click=\"${this.confirmDeletion}\"\n                >\n                    Yes\n                </button>\n            </div>\n        `;\n  }\n  onLayerVisibilityChanged(_event) {\n    this.visible = !this.visible;\n  }\n  onLayerOpacityChanged(event) {\n    const target = event.target;\n    this.opacity = parseFloat(target.value);\n  }\n  onSettingsClicked(_2) {\n    this.model?.send({ type: \"click\", id: \"settings\" });\n  }\n  onDeleteClicked(_2) {\n    this.isConfirmDialogVisible = true;\n  }\n  confirmDeletion(_2) {\n    this.model?.send({ type: \"click\", id: \"delete\" });\n  }\n  cancelDeletion(_2) {\n    this.isConfirmDialogVisible = false;\n  }\n};\n__decorateClass([\n  n4()\n], LayerManagerRow.prototype, \"name\", 2);\n__decorateClass([\n  n4()\n], LayerManagerRow.prototype, \"visible\", 2);\n__decorateClass([\n  n4()\n], LayerManagerRow.prototype, \"opacity\", 2);\n__decorateClass([\n  n4()\n], LayerManagerRow.prototype, \"isLoading\", 2);\n__decorateClass([\n  n4()\n], LayerManagerRow.prototype, \"isConfirmDialogVisible\", 2);\nif (!customElements.get(LayerManagerRow.componentName)) {\n  customElements.define(LayerManagerRow.componentName, LayerManagerRow);\n}\nfunction render({ model, el }) {\n  loadFonts();\n  const row = document.createElement(LayerManagerRow.componentName);\n  row.model = model;\n  el.appendChild(row);\n}\nvar layer_manager_row_default = { render };\nexport {\n  LayerManagerRow,\n  layer_manager_row_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n  (**\n   * @license\n   * Copyright 2019 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/is-server.js:\n  (**\n   * @license\n   * Copyright 2022 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n  (**\n   * @license\n   * Copyright 2021 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/directives/class-map.js:\n  (**\n   * @license\n   * Copyright 2018 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n*/\n",
              "_model_module": "anywidget",
              "_model_module_version": "~0.9.*",
              "_model_name": "AnyModel",
              "_view_count": null,
              "_view_module": "anywidget",
              "_view_module_version": "~0.9.*",
              "_view_name": "AnyView",
              "is_loading": false,
              "layout": "IPY_MODEL_e66f293801a34fd5b08b454a31f93f9c",
              "name": "PARDIG 15-min Rain Rate (mm/h) — 12:00 UTC",
              "opacity": 0.75,
              "visible": false
            }
          },
          "20c59c7bf470420fb6f51a8e302ed066": {
            "model_module": "anywidget",
            "model_name": "AnyModel",
            "model_module_version": "~0.9.*",
            "state": {
              "_anywidget_id": "geemap.toolbar.ToolbarItem",
              "_dom_classes": [
                "geemap-colab"
              ],
              "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n  for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n    if (decorator = decorators[i4])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp(target, key, result);\n  return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n  constructor(t3, e5, o4) {\n    if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n    this.cssText = t3, this.t = e5;\n  }\n  get styleSheet() {\n    let t3 = this.o;\n    const s2 = this.t;\n    if (e && void 0 === t3) {\n      const e5 = void 0 !== s2 && 1 === s2.length;\n      e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n    }\n    return t3;\n  }\n  toString() {\n    return this.cssText;\n  }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n  const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n    if (true === t4._$cssResult$) return t4.cssText;\n    if (\"number\" == typeof t4) return t4;\n    throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n  })(s2) + t3[o5 + 1]), t3[0]);\n  return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n  if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n  else for (const e5 of o4) {\n    const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n    void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n  }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n  let e5 = \"\";\n  for (const s2 of t4.cssRules) e5 += s2.cssText;\n  return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n  switch (s2) {\n    case Boolean:\n      t3 = t3 ? l : null;\n      break;\n    case Object:\n    case Array:\n      t3 = null == t3 ? t3 : JSON.stringify(t3);\n  }\n  return t3;\n}, fromAttribute(t3, s2) {\n  let i4 = t3;\n  switch (s2) {\n    case Boolean:\n      i4 = null !== t3;\n      break;\n    case Number:\n      i4 = null === t3 ? null : Number(t3);\n      break;\n    case Object:\n    case Array:\n      try {\n        i4 = JSON.parse(t3);\n      } catch (t4) {\n        i4 = null;\n      }\n  }\n  return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n  static addInitializer(t3) {\n    this._$Ei(), (this.l ??= []).push(t3);\n  }\n  static get observedAttributes() {\n    return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n  }\n  static createProperty(t3, s2 = y) {\n    if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n      const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n      void 0 !== r4 && e2(this.prototype, t3, r4);\n    }\n  }\n  static getPropertyDescriptor(t3, s2, i4) {\n    const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n      return this[s2];\n    }, set(t4) {\n      this[s2] = t4;\n    } };\n    return { get() {\n      return e5?.call(this);\n    }, set(s3) {\n      const r4 = e5?.call(this);\n      h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n    }, configurable: true, enumerable: true };\n  }\n  static getPropertyOptions(t3) {\n    return this.elementProperties.get(t3) ?? y;\n  }\n  static _$Ei() {\n    if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n    const t3 = n2(this);\n    t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n  }\n  static finalize() {\n    if (this.hasOwnProperty(d(\"finalized\"))) return;\n    if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n      const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n      for (const i4 of s2) this.createProperty(i4, t4[i4]);\n    }\n    const t3 = this[Symbol.metadata];\n    if (null !== t3) {\n      const s2 = litPropertyMetadata.get(t3);\n      if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n    }\n    this._$Eh = /* @__PURE__ */ new Map();\n    for (const [t4, s2] of this.elementProperties) {\n      const i4 = this._$Eu(t4, s2);\n      void 0 !== i4 && this._$Eh.set(i4, t4);\n    }\n    this.elementStyles = this.finalizeStyles(this.styles);\n  }\n  static finalizeStyles(s2) {\n    const i4 = [];\n    if (Array.isArray(s2)) {\n      const e5 = new Set(s2.flat(1 / 0).reverse());\n      for (const s3 of e5) i4.unshift(c(s3));\n    } else void 0 !== s2 && i4.push(c(s2));\n    return i4;\n  }\n  static _$Eu(t3, s2) {\n    const i4 = s2.attribute;\n    return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n  }\n  constructor() {\n    super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n  }\n  _$Ev() {\n    this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n  }\n  addController(t3) {\n    (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n  }\n  removeController(t3) {\n    this._$EO?.delete(t3);\n  }\n  _$E_() {\n    const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n    for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n    t3.size > 0 && (this._$Ep = t3);\n  }\n  createRenderRoot() {\n    const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n    return S(t3, this.constructor.elementStyles), t3;\n  }\n  connectedCallback() {\n    this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n  }\n  enableUpdating(t3) {\n  }\n  disconnectedCallback() {\n    this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n  }\n  attributeChangedCallback(t3, s2, i4) {\n    this._$AK(t3, i4);\n  }\n  _$EC(t3, s2) {\n    const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n    if (void 0 !== e5 && true === i4.reflect) {\n      const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n      this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n    }\n  }\n  _$AK(t3, s2) {\n    const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n    if (void 0 !== e5 && this._$Em !== e5) {\n      const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n      this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n    }\n  }\n  requestUpdate(t3, s2, i4) {\n    if (void 0 !== t3) {\n      if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n      this.P(t3, s2, i4);\n    }\n    false === this.isUpdatePending && (this._$ES = this._$ET());\n  }\n  P(t3, s2, i4) {\n    this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n  }\n  async _$ET() {\n    this.isUpdatePending = true;\n    try {\n      await this._$ES;\n    } catch (t4) {\n      Promise.reject(t4);\n    }\n    const t3 = this.scheduleUpdate();\n    return null != t3 && await t3, !this.isUpdatePending;\n  }\n  scheduleUpdate() {\n    return this.performUpdate();\n  }\n  performUpdate() {\n    if (!this.isUpdatePending) return;\n    if (!this.hasUpdated) {\n      if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n        for (const [t5, s3] of this._$Ep) this[t5] = s3;\n        this._$Ep = void 0;\n      }\n      const t4 = this.constructor.elementProperties;\n      if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n    }\n    let t3 = false;\n    const s2 = this._$AL;\n    try {\n      t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n    } catch (s3) {\n      throw t3 = false, this._$EU(), s3;\n    }\n    t3 && this._$AE(s2);\n  }\n  willUpdate(t3) {\n  }\n  _$AE(t3) {\n    this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n  }\n  _$EU() {\n    this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n  }\n  get updateComplete() {\n    return this.getUpdateComplete();\n  }\n  getUpdateComplete() {\n    return this._$ES;\n  }\n  shouldUpdate(t3) {\n    return true;\n  }\n  update(t3) {\n    this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n  }\n  updated(t3) {\n  }\n  firstUpdated(t3) {\n  }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n  if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n  return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n  const s2 = t3.length - 1, e5 = [];\n  let h4, o4 = 2 === i4 ? \"<svg>\" : 3 === i4 ? \"<math>\" : \"\", n5 = T;\n  for (let i5 = 0; i5 < s2; i5++) {\n    const s3 = t3[i5];\n    let r4, l2, c4 = -1, a2 = 0;\n    for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"</\" + l2[2], \"g\")), n5 = O) : void 0 !== l2[3] && (n5 = O) : n5 === O ? \">\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n    const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n    o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n  }\n  return [N(t3, o4 + (t3[s2] || \"<?>\") + (2 === i4 ? \"</svg>\" : 3 === i4 ? \"</math>\" : \"\")), e5];\n};\nvar B = class _B {\n  constructor({ strings: t3, _$litType$: i4 }, s2) {\n    let e5;\n    this.parts = [];\n    let h4 = 0, o4 = 0;\n    const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n    if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n      const t4 = this.el.content.firstChild;\n      t4.replaceWith(...t4.childNodes);\n    }\n    for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n      if (1 === e5.nodeType) {\n        if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n          const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n          r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n        } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n        if (M.test(e5.tagName)) {\n          const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n          if (i5 > 0) {\n            e5.textContent = c3 ? c3.emptyScript : \"\";\n            for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n            e5.append(t4[i5], lt());\n          }\n        }\n      } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n      else {\n        let t4 = -1;\n        for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n      }\n      h4++;\n    }\n  }\n  static createElement(t3, i4) {\n    const s2 = w.createElement(\"template\");\n    return s2.innerHTML = t3, s2;\n  }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n  if (i4 === R) return i4;\n  let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n  const o4 = st(i4) ? void 0 : i4._$litDirective$;\n  return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n  constructor(t3, i4) {\n    this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n  }\n  get parentNode() {\n    return this._$AM.parentNode;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  u(t3) {\n    const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n    I.currentNode = e5;\n    let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n    for (; void 0 !== r4; ) {\n      if (o4 === r4.index) {\n        let i5;\n        2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n      }\n      o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n    }\n    return I.currentNode = w, e5;\n  }\n  p(t3) {\n    let i4 = 0;\n    for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n  }\n};\nvar et = class _et {\n  get _$AU() {\n    return this._$AM?._$AU ?? this.v;\n  }\n  constructor(t3, i4, s2, e5) {\n    this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n  }\n  get parentNode() {\n    let t3 = this._$AA.parentNode;\n    const i4 = this._$AM;\n    return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n  }\n  get startNode() {\n    return this._$AA;\n  }\n  get endNode() {\n    return this._$AB;\n  }\n  _$AI(t3, i4 = this) {\n    t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n  }\n  O(t3) {\n    return this._$AA.parentNode.insertBefore(t3, this._$AB);\n  }\n  T(t3) {\n    this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n  }\n  _(t3) {\n    this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n  }\n  $(t3) {\n    const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n    if (this._$AH?._$AD === e5) this._$AH.p(i4);\n    else {\n      const t4 = new F(e5, this), s3 = t4.u(this.options);\n      t4.p(i4), this.T(s3), this._$AH = t4;\n    }\n  }\n  _$AC(t3) {\n    let i4 = V.get(t3.strings);\n    return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n  }\n  k(t3) {\n    g(this._$AH) || (this._$AH = [], this._$AR());\n    const i4 = this._$AH;\n    let s2, e5 = 0;\n    for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n    e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n  }\n  _$AR(t3 = this._$AA.nextSibling, i4) {\n    for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n      const i5 = t3.nextSibling;\n      t3.remove(), t3 = i5;\n    }\n  }\n  setConnected(t3) {\n    void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n  }\n};\nvar G = class {\n  get tagName() {\n    return this.element.tagName;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  constructor(t3, i4, s2, e5, h4) {\n    this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n  }\n  _$AI(t3, i4 = this, s2, e5) {\n    const h4 = this.strings;\n    let o4 = false;\n    if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n    else {\n      const e6 = t3;\n      let n5, r4;\n      for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n    }\n    o4 && !e5 && this.j(t3);\n  }\n  j(t3) {\n    t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n  }\n};\nvar Y = class extends G {\n  constructor() {\n    super(...arguments), this.type = 3;\n  }\n  j(t3) {\n    this.element[this.name] = t3 === D ? void 0 : t3;\n  }\n};\nvar Z = class extends G {\n  constructor() {\n    super(...arguments), this.type = 4;\n  }\n  j(t3) {\n    this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n  }\n};\nvar q = class extends G {\n  constructor(t3, i4, s2, e5, h4) {\n    super(t3, i4, s2, e5, h4), this.type = 5;\n  }\n  _$AI(t3, i4 = this) {\n    if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n    const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n    e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n  }\n  handleEvent(t3) {\n    \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n  }\n};\nvar K = class {\n  constructor(t3, i4, s2) {\n    this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AI(t3) {\n    z(this, t3);\n  }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n  const e5 = s2?.renderBefore ?? i4;\n  let h4 = e5._$litPart$;\n  if (void 0 === h4) {\n    const t4 = s2?.renderBefore ?? null;\n    e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n  }\n  return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n  constructor() {\n    super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n  }\n  createRenderRoot() {\n    const t3 = super.createRenderRoot();\n    return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n  }\n  update(t3) {\n    const e5 = this.render();\n    this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n  }\n  connectedCallback() {\n    super.connectedCallback(), this.o?.setConnected(true);\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback(), this.o?.setConnected(false);\n  }\n  render() {\n    return R;\n  }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n  const { kind: n5, metadata: i4 } = r4;\n  let s2 = globalThis.litPropertyMetadata.get(i4);\n  if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n    const { name: o4 } = r4;\n    return { set(r5) {\n      const n6 = e5.get.call(this);\n      e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n    }, init(e6) {\n      return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n    } };\n  }\n  if (\"setter\" === n5) {\n    const { name: o4 } = r4;\n    return function(r5) {\n      const n6 = this[o4];\n      e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n    };\n  }\n  throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n  return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n    const r4 = e6.hasOwnProperty(o5);\n    return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n  })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n  constructor(t3) {\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AT(t3, e5, i4) {\n    this.t = t3, this._$AM = e5, this.i = i4;\n  }\n  _$AS(t3, e5) {\n    return this.update(t3, e5);\n  }\n  update(t3, e5) {\n    return this.render(...e5);\n  }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n  constructor(s2) {\n    if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n  }\n  render(t3) {\n    return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n  }\n  update(t3, [s2]) {\n    if (void 0 === this.st) {\n      this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n      for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n      return this.render(s2);\n    }\n    const i4 = t3.element.classList;\n    for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n    for (const t4 in s2) {\n      const r4 = !!s2[t4];\n      r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n    }\n    return R;\n  }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n    .legacy-button {\n        align-items: center;\n        background-color: var(--jp-layout-color2);\n        border-width: 0;\n        box-shadow: none;\n        color: var(--jp-ui-font-color1);\n        cursor: pointer;\n        display: flex;\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        justify-content: center;\n        line-height: var(--jp-widgets-inline-height);\n        padding: 0;\n        user-select: none;\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button:hover:enabled,\n    .legacy-button:focus:enabled {\n        box-shadow: 0 2px 2px 0\n                rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n            0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n            0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n    }\n\n    .legacy-slider {\n        -webkit-appearance: none;\n        appearance: none;\n        background: var(--jp-layout-color3);\n        border-radius: 3px;\n        height: 4px;\n        outline: none;\n    }\n\n    .legacy-slider::-webkit-slider-thumb,\n    .legacy-slider::-moz-range-thumb {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        border-radius: 50%;\n        cursor: pointer;\n        height: var(--jp-widgets-slider-handle-size);\n        width: var(--jp-widgets-slider-handle-size);\n    }\n\n    .legacy-text {\n        color: var(--jp-widgets-label-color);\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        vertical-align: middle;\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: 28px;\n        line-height: 28px;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-select[disabled] {\n        opacity: 0.4;\n        cursor: not-allowed;\n    }\n\n    .legacy-text-input {\n        background: var(--jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n    }\n\n    .legacy-text-input:disabled {\n        opacity: var(--jp-widgets-disabled-opacity);\n    }\n\n    .legacy-color {\n        align-self: stretch;\n        background: var(--jp-widgets-input-background-color);\n        border-left: none;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 0;\n        flex-shrink: 0;\n        height: var(--jp-widgets-inline-height);\n        outline: none !important;\n        padding: 0 2px;\n        width: var(--jp-widgets-inline-height);\n    }\n\n    .legacy-radio {\n        margin: 0;\n        vertical-align: middle;\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: inherit;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-input {\n        box-sizing: border-box;\n        background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n    }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n  if (!document.querySelector(\".custom-fonts\")) {\n    const styleElement = document.createElement(\"style\");\n    styleElement.classList.add(\"custom-fonts\");\n    styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n    document.body.appendChild(styleElement);\n  }\n}\nfunction reverseMap(map) {\n  const reversedMap = /* @__PURE__ */ new Map();\n  for (const [key, value] of map.entries()) {\n    if (value != null) {\n      reversedMap.set(value, key);\n    }\n  }\n  return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n  constructor() {\n    super(...arguments);\n    this._model = void 0;\n  }\n  onCustomMessage(_msg) {\n  }\n  viewNameToModelName() {\n    return reverseMap(this.modelNameToViewName());\n  }\n  set model(model) {\n    this._model = model;\n    for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n      if (widgetKey) {\n        this[widgetKey] = model.get(modelKey);\n        model.on(`change:${String(modelKey)}`, () => {\n          this[widgetKey] = model.get(modelKey);\n        });\n      }\n    }\n    model.on(\"msg:custom\", (msg) => {\n      this.onCustomMessage?.(msg);\n    });\n  }\n  get model() {\n    return this._model;\n  }\n  updated(changedProperties) {\n    const viewToModelMap = this.viewNameToModelName();\n    for (const [viewProp, _2] of changedProperties) {\n      const castViewProp = viewProp;\n      if (viewToModelMap.has(castViewProp)) {\n        const modelProp = viewToModelMap.get(castViewProp);\n        this._model?.set(\n          modelProp,\n          this[castViewProp]\n        );\n      }\n    }\n    this._model?.save_changes();\n  }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n    @font-face {\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: 400;\n        src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n            format(\"woff2\");\n    }\n\n    .material-symbols-outlined {\n        -webkit-font-feature-settings: \"liga\";\n        -webkit-font-smoothing: antialiased;\n        direction: ltr;\n        display: inline-block;\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: normal;\n        letter-spacing: normal;\n        line-height: 1;\n        text-transform: none;\n        white-space: nowrap;\n        word-wrap: normal;\n    }\n`;\nvar flexStyles = i`\n    .vertical-flex {\n        display: flex;\n        flex-direction: column;\n        gap: 8px;\n    }\n\n    .horizontal-flex {\n        align-items: center;\n        display: flex;\n        flex-wrap: nowrap;\n        gap: 8px;\n    }\n\n    input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n        width: 100%;\n    }\n\n    select {\n        width: 100%;\n    }\n\n    .horizontal-flex .legacy-text {\n        flex-shrink: 0;\n    }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n  constructor() {\n    super(...arguments);\n    this.active = false;\n    this.primary = true;\n    this.icon = \"\";\n    this.tooltip_text = \"\";\n  }\n  static get componentName() {\n    return `tool-button`;\n  }\n  static {\n    this.styles = [\n      legacyStyles,\n      materialStyles,\n      i`\n            button {\n                font-size: 16px !important;\n                height: 32px;\n                padding: 0px 0px 0px 4px;\n                width: 32px;\n            }\n        `\n    ];\n  }\n  modelNameToViewName() {\n    return /* @__PURE__ */ new Map([\n      [\"active\", \"active\"],\n      [\"primary\", \"primary\"],\n      [\"icon\", \"icon\"],\n      [\"tooltip_text\", \"tooltip_text\"]\n    ]);\n  }\n  render() {\n    return ke`\n            <button\n                class=${Rt({\n      \"legacy-button\": true,\n      \"primary\": this.primary,\n      \"active\": this.active\n    })}\n                title=\"${this.tooltip_text}\"\n                @click=\"${this.onClick}\">\n                <span class=\"material-symbols-outlined\">${this.icon}</span>\n            </button>`;\n  }\n  onClick(_2) {\n    this.active = !this.active;\n  }\n};\n__decorateClass([\n  n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n  n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n  n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n  customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n  loadFonts();\n  const manager = document.createElement(ToolbarItem.componentName);\n  manager.model = model;\n  el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n  ToolbarItem,\n  toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n  (**\n   * @license\n   * Copyright 2019 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/is-server.js:\n  (**\n   * @license\n   * Copyright 2022 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n  (**\n   * @license\n   * Copyright 2021 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/directives/class-map.js:\n  (**\n   * @license\n   * Copyright 2018 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n*/\n",
              "_model_module": "anywidget",
              "_model_module_version": "~0.9.*",
              "_model_name": "AnyModel",
              "_view_count": null,
              "_view_module": "anywidget",
              "_view_module_version": "~0.9.*",
              "_view_name": "AnyView",
              "active": false,
              "icon": "map",
              "layout": "IPY_MODEL_8963c54ad9954c04bc47ba70dc7604df",
              "primary": true,
              "tooltip_text": "Basemap selector"
            }
          },
          "f67fb79b98e34bd6975dde7ae714f4c2": {
            "model_module": "anywidget",
            "model_name": "AnyModel",
            "model_module_version": "~0.9.*",
            "state": {
              "_anywidget_id": "geemap.toolbar.ToolbarItem",
              "_dom_classes": [
                "geemap-colab"
              ],
              "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n  for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n    if (decorator = decorators[i4])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp(target, key, result);\n  return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n  constructor(t3, e5, o4) {\n    if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n    this.cssText = t3, this.t = e5;\n  }\n  get styleSheet() {\n    let t3 = this.o;\n    const s2 = this.t;\n    if (e && void 0 === t3) {\n      const e5 = void 0 !== s2 && 1 === s2.length;\n      e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n    }\n    return t3;\n  }\n  toString() {\n    return this.cssText;\n  }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n  const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n    if (true === t4._$cssResult$) return t4.cssText;\n    if (\"number\" == typeof t4) return t4;\n    throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n  })(s2) + t3[o5 + 1]), t3[0]);\n  return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n  if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n  else for (const e5 of o4) {\n    const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n    void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n  }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n  let e5 = \"\";\n  for (const s2 of t4.cssRules) e5 += s2.cssText;\n  return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n  switch (s2) {\n    case Boolean:\n      t3 = t3 ? l : null;\n      break;\n    case Object:\n    case Array:\n      t3 = null == t3 ? t3 : JSON.stringify(t3);\n  }\n  return t3;\n}, fromAttribute(t3, s2) {\n  let i4 = t3;\n  switch (s2) {\n    case Boolean:\n      i4 = null !== t3;\n      break;\n    case Number:\n      i4 = null === t3 ? null : Number(t3);\n      break;\n    case Object:\n    case Array:\n      try {\n        i4 = JSON.parse(t3);\n      } catch (t4) {\n        i4 = null;\n      }\n  }\n  return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n  static addInitializer(t3) {\n    this._$Ei(), (this.l ??= []).push(t3);\n  }\n  static get observedAttributes() {\n    return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n  }\n  static createProperty(t3, s2 = y) {\n    if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n      const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n      void 0 !== r4 && e2(this.prototype, t3, r4);\n    }\n  }\n  static getPropertyDescriptor(t3, s2, i4) {\n    const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n      return this[s2];\n    }, set(t4) {\n      this[s2] = t4;\n    } };\n    return { get() {\n      return e5?.call(this);\n    }, set(s3) {\n      const r4 = e5?.call(this);\n      h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n    }, configurable: true, enumerable: true };\n  }\n  static getPropertyOptions(t3) {\n    return this.elementProperties.get(t3) ?? y;\n  }\n  static _$Ei() {\n    if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n    const t3 = n2(this);\n    t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n  }\n  static finalize() {\n    if (this.hasOwnProperty(d(\"finalized\"))) return;\n    if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n      const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n      for (const i4 of s2) this.createProperty(i4, t4[i4]);\n    }\n    const t3 = this[Symbol.metadata];\n    if (null !== t3) {\n      const s2 = litPropertyMetadata.get(t3);\n      if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n    }\n    this._$Eh = /* @__PURE__ */ new Map();\n    for (const [t4, s2] of this.elementProperties) {\n      const i4 = this._$Eu(t4, s2);\n      void 0 !== i4 && this._$Eh.set(i4, t4);\n    }\n    this.elementStyles = this.finalizeStyles(this.styles);\n  }\n  static finalizeStyles(s2) {\n    const i4 = [];\n    if (Array.isArray(s2)) {\n      const e5 = new Set(s2.flat(1 / 0).reverse());\n      for (const s3 of e5) i4.unshift(c(s3));\n    } else void 0 !== s2 && i4.push(c(s2));\n    return i4;\n  }\n  static _$Eu(t3, s2) {\n    const i4 = s2.attribute;\n    return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n  }\n  constructor() {\n    super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n  }\n  _$Ev() {\n    this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n  }\n  addController(t3) {\n    (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n  }\n  removeController(t3) {\n    this._$EO?.delete(t3);\n  }\n  _$E_() {\n    const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n    for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n    t3.size > 0 && (this._$Ep = t3);\n  }\n  createRenderRoot() {\n    const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n    return S(t3, this.constructor.elementStyles), t3;\n  }\n  connectedCallback() {\n    this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n  }\n  enableUpdating(t3) {\n  }\n  disconnectedCallback() {\n    this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n  }\n  attributeChangedCallback(t3, s2, i4) {\n    this._$AK(t3, i4);\n  }\n  _$EC(t3, s2) {\n    const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n    if (void 0 !== e5 && true === i4.reflect) {\n      const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n      this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n    }\n  }\n  _$AK(t3, s2) {\n    const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n    if (void 0 !== e5 && this._$Em !== e5) {\n      const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n      this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n    }\n  }\n  requestUpdate(t3, s2, i4) {\n    if (void 0 !== t3) {\n      if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n      this.P(t3, s2, i4);\n    }\n    false === this.isUpdatePending && (this._$ES = this._$ET());\n  }\n  P(t3, s2, i4) {\n    this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n  }\n  async _$ET() {\n    this.isUpdatePending = true;\n    try {\n      await this._$ES;\n    } catch (t4) {\n      Promise.reject(t4);\n    }\n    const t3 = this.scheduleUpdate();\n    return null != t3 && await t3, !this.isUpdatePending;\n  }\n  scheduleUpdate() {\n    return this.performUpdate();\n  }\n  performUpdate() {\n    if (!this.isUpdatePending) return;\n    if (!this.hasUpdated) {\n      if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n        for (const [t5, s3] of this._$Ep) this[t5] = s3;\n        this._$Ep = void 0;\n      }\n      const t4 = this.constructor.elementProperties;\n      if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n    }\n    let t3 = false;\n    const s2 = this._$AL;\n    try {\n      t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n    } catch (s3) {\n      throw t3 = false, this._$EU(), s3;\n    }\n    t3 && this._$AE(s2);\n  }\n  willUpdate(t3) {\n  }\n  _$AE(t3) {\n    this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n  }\n  _$EU() {\n    this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n  }\n  get updateComplete() {\n    return this.getUpdateComplete();\n  }\n  getUpdateComplete() {\n    return this._$ES;\n  }\n  shouldUpdate(t3) {\n    return true;\n  }\n  update(t3) {\n    this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n  }\n  updated(t3) {\n  }\n  firstUpdated(t3) {\n  }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n  if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n  return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n  const s2 = t3.length - 1, e5 = [];\n  let h4, o4 = 2 === i4 ? \"<svg>\" : 3 === i4 ? \"<math>\" : \"\", n5 = T;\n  for (let i5 = 0; i5 < s2; i5++) {\n    const s3 = t3[i5];\n    let r4, l2, c4 = -1, a2 = 0;\n    for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"</\" + l2[2], \"g\")), n5 = O) : void 0 !== l2[3] && (n5 = O) : n5 === O ? \">\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n    const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n    o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n  }\n  return [N(t3, o4 + (t3[s2] || \"<?>\") + (2 === i4 ? \"</svg>\" : 3 === i4 ? \"</math>\" : \"\")), e5];\n};\nvar B = class _B {\n  constructor({ strings: t3, _$litType$: i4 }, s2) {\n    let e5;\n    this.parts = [];\n    let h4 = 0, o4 = 0;\n    const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n    if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n      const t4 = this.el.content.firstChild;\n      t4.replaceWith(...t4.childNodes);\n    }\n    for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n      if (1 === e5.nodeType) {\n        if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n          const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n          r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n        } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n        if (M.test(e5.tagName)) {\n          const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n          if (i5 > 0) {\n            e5.textContent = c3 ? c3.emptyScript : \"\";\n            for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n            e5.append(t4[i5], lt());\n          }\n        }\n      } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n      else {\n        let t4 = -1;\n        for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n      }\n      h4++;\n    }\n  }\n  static createElement(t3, i4) {\n    const s2 = w.createElement(\"template\");\n    return s2.innerHTML = t3, s2;\n  }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n  if (i4 === R) return i4;\n  let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n  const o4 = st(i4) ? void 0 : i4._$litDirective$;\n  return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n  constructor(t3, i4) {\n    this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n  }\n  get parentNode() {\n    return this._$AM.parentNode;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  u(t3) {\n    const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n    I.currentNode = e5;\n    let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n    for (; void 0 !== r4; ) {\n      if (o4 === r4.index) {\n        let i5;\n        2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n      }\n      o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n    }\n    return I.currentNode = w, e5;\n  }\n  p(t3) {\n    let i4 = 0;\n    for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n  }\n};\nvar et = class _et {\n  get _$AU() {\n    return this._$AM?._$AU ?? this.v;\n  }\n  constructor(t3, i4, s2, e5) {\n    this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n  }\n  get parentNode() {\n    let t3 = this._$AA.parentNode;\n    const i4 = this._$AM;\n    return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n  }\n  get startNode() {\n    return this._$AA;\n  }\n  get endNode() {\n    return this._$AB;\n  }\n  _$AI(t3, i4 = this) {\n    t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n  }\n  O(t3) {\n    return this._$AA.parentNode.insertBefore(t3, this._$AB);\n  }\n  T(t3) {\n    this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n  }\n  _(t3) {\n    this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n  }\n  $(t3) {\n    const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n    if (this._$AH?._$AD === e5) this._$AH.p(i4);\n    else {\n      const t4 = new F(e5, this), s3 = t4.u(this.options);\n      t4.p(i4), this.T(s3), this._$AH = t4;\n    }\n  }\n  _$AC(t3) {\n    let i4 = V.get(t3.strings);\n    return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n  }\n  k(t3) {\n    g(this._$AH) || (this._$AH = [], this._$AR());\n    const i4 = this._$AH;\n    let s2, e5 = 0;\n    for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n    e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n  }\n  _$AR(t3 = this._$AA.nextSibling, i4) {\n    for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n      const i5 = t3.nextSibling;\n      t3.remove(), t3 = i5;\n    }\n  }\n  setConnected(t3) {\n    void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n  }\n};\nvar G = class {\n  get tagName() {\n    return this.element.tagName;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  constructor(t3, i4, s2, e5, h4) {\n    this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n  }\n  _$AI(t3, i4 = this, s2, e5) {\n    const h4 = this.strings;\n    let o4 = false;\n    if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n    else {\n      const e6 = t3;\n      let n5, r4;\n      for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n    }\n    o4 && !e5 && this.j(t3);\n  }\n  j(t3) {\n    t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n  }\n};\nvar Y = class extends G {\n  constructor() {\n    super(...arguments), this.type = 3;\n  }\n  j(t3) {\n    this.element[this.name] = t3 === D ? void 0 : t3;\n  }\n};\nvar Z = class extends G {\n  constructor() {\n    super(...arguments), this.type = 4;\n  }\n  j(t3) {\n    this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n  }\n};\nvar q = class extends G {\n  constructor(t3, i4, s2, e5, h4) {\n    super(t3, i4, s2, e5, h4), this.type = 5;\n  }\n  _$AI(t3, i4 = this) {\n    if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n    const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n    e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n  }\n  handleEvent(t3) {\n    \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n  }\n};\nvar K = class {\n  constructor(t3, i4, s2) {\n    this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AI(t3) {\n    z(this, t3);\n  }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n  const e5 = s2?.renderBefore ?? i4;\n  let h4 = e5._$litPart$;\n  if (void 0 === h4) {\n    const t4 = s2?.renderBefore ?? null;\n    e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n  }\n  return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n  constructor() {\n    super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n  }\n  createRenderRoot() {\n    const t3 = super.createRenderRoot();\n    return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n  }\n  update(t3) {\n    const e5 = this.render();\n    this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n  }\n  connectedCallback() {\n    super.connectedCallback(), this.o?.setConnected(true);\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback(), this.o?.setConnected(false);\n  }\n  render() {\n    return R;\n  }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n  const { kind: n5, metadata: i4 } = r4;\n  let s2 = globalThis.litPropertyMetadata.get(i4);\n  if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n    const { name: o4 } = r4;\n    return { set(r5) {\n      const n6 = e5.get.call(this);\n      e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n    }, init(e6) {\n      return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n    } };\n  }\n  if (\"setter\" === n5) {\n    const { name: o4 } = r4;\n    return function(r5) {\n      const n6 = this[o4];\n      e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n    };\n  }\n  throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n  return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n    const r4 = e6.hasOwnProperty(o5);\n    return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n  })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n  constructor(t3) {\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AT(t3, e5, i4) {\n    this.t = t3, this._$AM = e5, this.i = i4;\n  }\n  _$AS(t3, e5) {\n    return this.update(t3, e5);\n  }\n  update(t3, e5) {\n    return this.render(...e5);\n  }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n  constructor(s2) {\n    if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n  }\n  render(t3) {\n    return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n  }\n  update(t3, [s2]) {\n    if (void 0 === this.st) {\n      this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n      for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n      return this.render(s2);\n    }\n    const i4 = t3.element.classList;\n    for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n    for (const t4 in s2) {\n      const r4 = !!s2[t4];\n      r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n    }\n    return R;\n  }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n    .legacy-button {\n        align-items: center;\n        background-color: var(--jp-layout-color2);\n        border-width: 0;\n        box-shadow: none;\n        color: var(--jp-ui-font-color1);\n        cursor: pointer;\n        display: flex;\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        justify-content: center;\n        line-height: var(--jp-widgets-inline-height);\n        padding: 0;\n        user-select: none;\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button:hover:enabled,\n    .legacy-button:focus:enabled {\n        box-shadow: 0 2px 2px 0\n                rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n            0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n            0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n    }\n\n    .legacy-slider {\n        -webkit-appearance: none;\n        appearance: none;\n        background: var(--jp-layout-color3);\n        border-radius: 3px;\n        height: 4px;\n        outline: none;\n    }\n\n    .legacy-slider::-webkit-slider-thumb,\n    .legacy-slider::-moz-range-thumb {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        border-radius: 50%;\n        cursor: pointer;\n        height: var(--jp-widgets-slider-handle-size);\n        width: var(--jp-widgets-slider-handle-size);\n    }\n\n    .legacy-text {\n        color: var(--jp-widgets-label-color);\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        vertical-align: middle;\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: 28px;\n        line-height: 28px;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-select[disabled] {\n        opacity: 0.4;\n        cursor: not-allowed;\n    }\n\n    .legacy-text-input {\n        background: var(--jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n    }\n\n    .legacy-text-input:disabled {\n        opacity: var(--jp-widgets-disabled-opacity);\n    }\n\n    .legacy-color {\n        align-self: stretch;\n        background: var(--jp-widgets-input-background-color);\n        border-left: none;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 0;\n        flex-shrink: 0;\n        height: var(--jp-widgets-inline-height);\n        outline: none !important;\n        padding: 0 2px;\n        width: var(--jp-widgets-inline-height);\n    }\n\n    .legacy-radio {\n        margin: 0;\n        vertical-align: middle;\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: inherit;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-input {\n        box-sizing: border-box;\n        background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n    }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n  if (!document.querySelector(\".custom-fonts\")) {\n    const styleElement = document.createElement(\"style\");\n    styleElement.classList.add(\"custom-fonts\");\n    styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n    document.body.appendChild(styleElement);\n  }\n}\nfunction reverseMap(map) {\n  const reversedMap = /* @__PURE__ */ new Map();\n  for (const [key, value] of map.entries()) {\n    if (value != null) {\n      reversedMap.set(value, key);\n    }\n  }\n  return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n  constructor() {\n    super(...arguments);\n    this._model = void 0;\n  }\n  onCustomMessage(_msg) {\n  }\n  viewNameToModelName() {\n    return reverseMap(this.modelNameToViewName());\n  }\n  set model(model) {\n    this._model = model;\n    for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n      if (widgetKey) {\n        this[widgetKey] = model.get(modelKey);\n        model.on(`change:${String(modelKey)}`, () => {\n          this[widgetKey] = model.get(modelKey);\n        });\n      }\n    }\n    model.on(\"msg:custom\", (msg) => {\n      this.onCustomMessage?.(msg);\n    });\n  }\n  get model() {\n    return this._model;\n  }\n  updated(changedProperties) {\n    const viewToModelMap = this.viewNameToModelName();\n    for (const [viewProp, _2] of changedProperties) {\n      const castViewProp = viewProp;\n      if (viewToModelMap.has(castViewProp)) {\n        const modelProp = viewToModelMap.get(castViewProp);\n        this._model?.set(\n          modelProp,\n          this[castViewProp]\n        );\n      }\n    }\n    this._model?.save_changes();\n  }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n    @font-face {\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: 400;\n        src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n            format(\"woff2\");\n    }\n\n    .material-symbols-outlined {\n        -webkit-font-feature-settings: \"liga\";\n        -webkit-font-smoothing: antialiased;\n        direction: ltr;\n        display: inline-block;\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: normal;\n        letter-spacing: normal;\n        line-height: 1;\n        text-transform: none;\n        white-space: nowrap;\n        word-wrap: normal;\n    }\n`;\nvar flexStyles = i`\n    .vertical-flex {\n        display: flex;\n        flex-direction: column;\n        gap: 8px;\n    }\n\n    .horizontal-flex {\n        align-items: center;\n        display: flex;\n        flex-wrap: nowrap;\n        gap: 8px;\n    }\n\n    input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n        width: 100%;\n    }\n\n    select {\n        width: 100%;\n    }\n\n    .horizontal-flex .legacy-text {\n        flex-shrink: 0;\n    }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n  constructor() {\n    super(...arguments);\n    this.active = false;\n    this.primary = true;\n    this.icon = \"\";\n    this.tooltip_text = \"\";\n  }\n  static get componentName() {\n    return `tool-button`;\n  }\n  static {\n    this.styles = [\n      legacyStyles,\n      materialStyles,\n      i`\n            button {\n                font-size: 16px !important;\n                height: 32px;\n                padding: 0px 0px 0px 4px;\n                width: 32px;\n            }\n        `\n    ];\n  }\n  modelNameToViewName() {\n    return /* @__PURE__ */ new Map([\n      [\"active\", \"active\"],\n      [\"primary\", \"primary\"],\n      [\"icon\", \"icon\"],\n      [\"tooltip_text\", \"tooltip_text\"]\n    ]);\n  }\n  render() {\n    return ke`\n            <button\n                class=${Rt({\n      \"legacy-button\": true,\n      \"primary\": this.primary,\n      \"active\": this.active\n    })}\n                title=\"${this.tooltip_text}\"\n                @click=\"${this.onClick}\">\n                <span class=\"material-symbols-outlined\">${this.icon}</span>\n            </button>`;\n  }\n  onClick(_2) {\n    this.active = !this.active;\n  }\n};\n__decorateClass([\n  n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n  n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n  n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n  customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n  loadFonts();\n  const manager = document.createElement(ToolbarItem.componentName);\n  manager.model = model;\n  el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n  ToolbarItem,\n  toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n  (**\n   * @license\n   * Copyright 2019 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/is-server.js:\n  (**\n   * @license\n   * Copyright 2022 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n  (**\n   * @license\n   * Copyright 2021 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/directives/class-map.js:\n  (**\n   * @license\n   * Copyright 2018 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n*/\n",
              "_model_module": "anywidget",
              "_model_module_version": "~0.9.*",
              "_model_name": "AnyModel",
              "_view_count": null,
              "_view_module": "anywidget",
              "_view_module_version": "~0.9.*",
              "_view_name": "AnyView",
              "active": false,
              "icon": "point_scan",
              "layout": "IPY_MODEL_fb7c857105874d9481b7963d226d7a25",
              "primary": true,
              "tooltip_text": "Inspector"
            }
          },
          "2326024fb88742c0ab616fb09d682fd3": {
            "model_module": "anywidget",
            "model_name": "AnyModel",
            "model_module_version": "~0.9.*",
            "state": {
              "_anywidget_id": "geemap.toolbar.ToolbarItem",
              "_dom_classes": [
                "geemap-colab"
              ],
              "_esm": "var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __decorateClass = (decorators, target, key, kind) => {\n  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n  for (var i4 = decorators.length - 1, decorator; i4 >= 0; i4--)\n    if (decorator = decorators[i4])\n      result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n  if (kind && result) __defProp(target, key, result);\n  return result;\n};\n\n// node_modules/@lit/reactive-element/css-tag.js\nvar t = globalThis;\nvar e = t.ShadowRoot && (void 0 === t.ShadyCSS || t.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar s = /* @__PURE__ */ Symbol();\nvar o = /* @__PURE__ */ new WeakMap();\nvar n = class {\n  constructor(t3, e5, o4) {\n    if (this._$cssResult$ = true, o4 !== s) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n    this.cssText = t3, this.t = e5;\n  }\n  get styleSheet() {\n    let t3 = this.o;\n    const s2 = this.t;\n    if (e && void 0 === t3) {\n      const e5 = void 0 !== s2 && 1 === s2.length;\n      e5 && (t3 = o.get(s2)), void 0 === t3 && ((this.o = t3 = new CSSStyleSheet()).replaceSync(this.cssText), e5 && o.set(s2, t3));\n    }\n    return t3;\n  }\n  toString() {\n    return this.cssText;\n  }\n};\nvar r = (t3) => new n(\"string\" == typeof t3 ? t3 : t3 + \"\", void 0, s);\nvar i = (t3, ...e5) => {\n  const o4 = 1 === t3.length ? t3[0] : e5.reduce(((e6, s2, o5) => e6 + ((t4) => {\n    if (true === t4._$cssResult$) return t4.cssText;\n    if (\"number\" == typeof t4) return t4;\n    throw Error(\"Value passed to 'css' function must be a 'css' function result: \" + t4 + \". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\");\n  })(s2) + t3[o5 + 1]), t3[0]);\n  return new n(o4, t3, s);\n};\nvar S = (s2, o4) => {\n  if (e) s2.adoptedStyleSheets = o4.map(((t3) => t3 instanceof CSSStyleSheet ? t3 : t3.styleSheet));\n  else for (const e5 of o4) {\n    const o5 = document.createElement(\"style\"), n5 = t.litNonce;\n    void 0 !== n5 && o5.setAttribute(\"nonce\", n5), o5.textContent = e5.cssText, s2.appendChild(o5);\n  }\n};\nvar c = e ? (t3) => t3 : (t3) => t3 instanceof CSSStyleSheet ? ((t4) => {\n  let e5 = \"\";\n  for (const s2 of t4.cssRules) e5 += s2.cssText;\n  return r(e5);\n})(t3) : t3;\n\n// node_modules/@lit/reactive-element/reactive-element.js\nvar { is: i2, defineProperty: e2, getOwnPropertyDescriptor: r2, getOwnPropertyNames: h, getOwnPropertySymbols: o2, getPrototypeOf: n2 } = Object;\nvar a = globalThis;\nvar c2 = a.trustedTypes;\nvar l = c2 ? c2.emptyScript : \"\";\nvar p = a.reactiveElementPolyfillSupport;\nvar d = (t3, s2) => t3;\nvar u = { toAttribute(t3, s2) {\n  switch (s2) {\n    case Boolean:\n      t3 = t3 ? l : null;\n      break;\n    case Object:\n    case Array:\n      t3 = null == t3 ? t3 : JSON.stringify(t3);\n  }\n  return t3;\n}, fromAttribute(t3, s2) {\n  let i4 = t3;\n  switch (s2) {\n    case Boolean:\n      i4 = null !== t3;\n      break;\n    case Number:\n      i4 = null === t3 ? null : Number(t3);\n      break;\n    case Object:\n    case Array:\n      try {\n        i4 = JSON.parse(t3);\n      } catch (t4) {\n        i4 = null;\n      }\n  }\n  return i4;\n} };\nvar f = (t3, s2) => !i2(t3, s2);\nvar y = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nSymbol.metadata ??= /* @__PURE__ */ Symbol(\"metadata\"), a.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();\nvar b = class extends HTMLElement {\n  static addInitializer(t3) {\n    this._$Ei(), (this.l ??= []).push(t3);\n  }\n  static get observedAttributes() {\n    return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n  }\n  static createProperty(t3, s2 = y) {\n    if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t3, s2), !s2.noAccessor) {\n      const i4 = /* @__PURE__ */ Symbol(), r4 = this.getPropertyDescriptor(t3, i4, s2);\n      void 0 !== r4 && e2(this.prototype, t3, r4);\n    }\n  }\n  static getPropertyDescriptor(t3, s2, i4) {\n    const { get: e5, set: h4 } = r2(this.prototype, t3) ?? { get() {\n      return this[s2];\n    }, set(t4) {\n      this[s2] = t4;\n    } };\n    return { get() {\n      return e5?.call(this);\n    }, set(s3) {\n      const r4 = e5?.call(this);\n      h4.call(this, s3), this.requestUpdate(t3, r4, i4);\n    }, configurable: true, enumerable: true };\n  }\n  static getPropertyOptions(t3) {\n    return this.elementProperties.get(t3) ?? y;\n  }\n  static _$Ei() {\n    if (this.hasOwnProperty(d(\"elementProperties\"))) return;\n    const t3 = n2(this);\n    t3.finalize(), void 0 !== t3.l && (this.l = [...t3.l]), this.elementProperties = new Map(t3.elementProperties);\n  }\n  static finalize() {\n    if (this.hasOwnProperty(d(\"finalized\"))) return;\n    if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d(\"properties\"))) {\n      const t4 = this.properties, s2 = [...h(t4), ...o2(t4)];\n      for (const i4 of s2) this.createProperty(i4, t4[i4]);\n    }\n    const t3 = this[Symbol.metadata];\n    if (null !== t3) {\n      const s2 = litPropertyMetadata.get(t3);\n      if (void 0 !== s2) for (const [t4, i4] of s2) this.elementProperties.set(t4, i4);\n    }\n    this._$Eh = /* @__PURE__ */ new Map();\n    for (const [t4, s2] of this.elementProperties) {\n      const i4 = this._$Eu(t4, s2);\n      void 0 !== i4 && this._$Eh.set(i4, t4);\n    }\n    this.elementStyles = this.finalizeStyles(this.styles);\n  }\n  static finalizeStyles(s2) {\n    const i4 = [];\n    if (Array.isArray(s2)) {\n      const e5 = new Set(s2.flat(1 / 0).reverse());\n      for (const s3 of e5) i4.unshift(c(s3));\n    } else void 0 !== s2 && i4.push(c(s2));\n    return i4;\n  }\n  static _$Eu(t3, s2) {\n    const i4 = s2.attribute;\n    return false === i4 ? void 0 : \"string\" == typeof i4 ? i4 : \"string\" == typeof t3 ? t3.toLowerCase() : void 0;\n  }\n  constructor() {\n    super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n  }\n  _$Ev() {\n    this._$ES = new Promise(((t3) => this.enableUpdating = t3)), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach(((t3) => t3(this)));\n  }\n  addController(t3) {\n    (this._$EO ??= /* @__PURE__ */ new Set()).add(t3), void 0 !== this.renderRoot && this.isConnected && t3.hostConnected?.();\n  }\n  removeController(t3) {\n    this._$EO?.delete(t3);\n  }\n  _$E_() {\n    const t3 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n    for (const i4 of s2.keys()) this.hasOwnProperty(i4) && (t3.set(i4, this[i4]), delete this[i4]);\n    t3.size > 0 && (this._$Ep = t3);\n  }\n  createRenderRoot() {\n    const t3 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n    return S(t3, this.constructor.elementStyles), t3;\n  }\n  connectedCallback() {\n    this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(true), this._$EO?.forEach(((t3) => t3.hostConnected?.()));\n  }\n  enableUpdating(t3) {\n  }\n  disconnectedCallback() {\n    this._$EO?.forEach(((t3) => t3.hostDisconnected?.()));\n  }\n  attributeChangedCallback(t3, s2, i4) {\n    this._$AK(t3, i4);\n  }\n  _$EC(t3, s2) {\n    const i4 = this.constructor.elementProperties.get(t3), e5 = this.constructor._$Eu(t3, i4);\n    if (void 0 !== e5 && true === i4.reflect) {\n      const r4 = (void 0 !== i4.converter?.toAttribute ? i4.converter : u).toAttribute(s2, i4.type);\n      this._$Em = t3, null == r4 ? this.removeAttribute(e5) : this.setAttribute(e5, r4), this._$Em = null;\n    }\n  }\n  _$AK(t3, s2) {\n    const i4 = this.constructor, e5 = i4._$Eh.get(t3);\n    if (void 0 !== e5 && this._$Em !== e5) {\n      const t4 = i4.getPropertyOptions(e5), r4 = \"function\" == typeof t4.converter ? { fromAttribute: t4.converter } : void 0 !== t4.converter?.fromAttribute ? t4.converter : u;\n      this._$Em = e5, this[e5] = r4.fromAttribute(s2, t4.type), this._$Em = null;\n    }\n  }\n  requestUpdate(t3, s2, i4) {\n    if (void 0 !== t3) {\n      if (i4 ??= this.constructor.getPropertyOptions(t3), !(i4.hasChanged ?? f)(this[t3], s2)) return;\n      this.P(t3, s2, i4);\n    }\n    false === this.isUpdatePending && (this._$ES = this._$ET());\n  }\n  P(t3, s2, i4) {\n    this._$AL.has(t3) || this._$AL.set(t3, s2), true === i4.reflect && this._$Em !== t3 && (this._$Ej ??= /* @__PURE__ */ new Set()).add(t3);\n  }\n  async _$ET() {\n    this.isUpdatePending = true;\n    try {\n      await this._$ES;\n    } catch (t4) {\n      Promise.reject(t4);\n    }\n    const t3 = this.scheduleUpdate();\n    return null != t3 && await t3, !this.isUpdatePending;\n  }\n  scheduleUpdate() {\n    return this.performUpdate();\n  }\n  performUpdate() {\n    if (!this.isUpdatePending) return;\n    if (!this.hasUpdated) {\n      if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {\n        for (const [t5, s3] of this._$Ep) this[t5] = s3;\n        this._$Ep = void 0;\n      }\n      const t4 = this.constructor.elementProperties;\n      if (t4.size > 0) for (const [s3, i4] of t4) true !== i4.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i4);\n    }\n    let t3 = false;\n    const s2 = this._$AL;\n    try {\n      t3 = this.shouldUpdate(s2), t3 ? (this.willUpdate(s2), this._$EO?.forEach(((t4) => t4.hostUpdate?.())), this.update(s2)) : this._$EU();\n    } catch (s3) {\n      throw t3 = false, this._$EU(), s3;\n    }\n    t3 && this._$AE(s2);\n  }\n  willUpdate(t3) {\n  }\n  _$AE(t3) {\n    this._$EO?.forEach(((t4) => t4.hostUpdated?.())), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t3)), this.updated(t3);\n  }\n  _$EU() {\n    this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n  }\n  get updateComplete() {\n    return this.getUpdateComplete();\n  }\n  getUpdateComplete() {\n    return this._$ES;\n  }\n  shouldUpdate(t3) {\n    return true;\n  }\n  update(t3) {\n    this._$Ej &&= this._$Ej.forEach(((t4) => this._$EC(t4, this[t4]))), this._$EU();\n  }\n  updated(t3) {\n  }\n  firstUpdated(t3) {\n  }\n};\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d(\"finalized\")] = /* @__PURE__ */ new Map(), p?.({ ReactiveElement: b }), (a.reactiveElementVersions ??= []).push(\"2.0.4\");\n\n// node_modules/lit-html/lit-html.js\nvar n3 = globalThis;\nvar c3 = n3.trustedTypes;\nvar h2 = c3 ? c3.createPolicy(\"lit-html\", { createHTML: (t3) => t3 }) : void 0;\nvar f2 = \"$lit$\";\nvar v = `lit$${Math.random().toFixed(9).slice(2)}$`;\nvar m = \"?\" + v;\nvar _ = `<${m}>`;\nvar w = document;\nvar lt = () => w.createComment(\"\");\nvar st = (t3) => null === t3 || \"object\" != typeof t3 && \"function\" != typeof t3;\nvar g = Array.isArray;\nvar $ = (t3) => g(t3) || \"function\" == typeof t3?.[Symbol.iterator];\nvar x = \"[ \t\\n\\f\\r]\";\nvar T = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar E = /-->/g;\nvar k = />/g;\nvar O = RegExp(`>|${x}(?:([^\\\\s\"'>=/]+)(${x}*=${x}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\");\nvar S2 = /'/g;\nvar j = /\"/g;\nvar M = /^(?:script|style|textarea|title)$/i;\nvar P = (t3) => (i4, ...s2) => ({ _$litType$: t3, strings: i4, values: s2 });\nvar ke = P(1);\nvar Oe = P(2);\nvar Se = P(3);\nvar R = /* @__PURE__ */ Symbol.for(\"lit-noChange\");\nvar D = /* @__PURE__ */ Symbol.for(\"lit-nothing\");\nvar V = /* @__PURE__ */ new WeakMap();\nvar I = w.createTreeWalker(w, 129);\nfunction N(t3, i4) {\n  if (!g(t3) || !t3.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n  return void 0 !== h2 ? h2.createHTML(i4) : i4;\n}\nvar U = (t3, i4) => {\n  const s2 = t3.length - 1, e5 = [];\n  let h4, o4 = 2 === i4 ? \"<svg>\" : 3 === i4 ? \"<math>\" : \"\", n5 = T;\n  for (let i5 = 0; i5 < s2; i5++) {\n    const s3 = t3[i5];\n    let r4, l2, c4 = -1, a2 = 0;\n    for (; a2 < s3.length && (n5.lastIndex = a2, l2 = n5.exec(s3), null !== l2); ) a2 = n5.lastIndex, n5 === T ? \"!--\" === l2[1] ? n5 = E : void 0 !== l2[1] ? n5 = k : void 0 !== l2[2] ? (M.test(l2[2]) && (h4 = RegExp(\"</\" + l2[2], \"g\")), n5 = O) : void 0 !== l2[3] && (n5 = O) : n5 === O ? \">\" === l2[0] ? (n5 = h4 ?? T, c4 = -1) : void 0 === l2[1] ? c4 = -2 : (c4 = n5.lastIndex - l2[2].length, r4 = l2[1], n5 = void 0 === l2[3] ? O : '\"' === l2[3] ? j : S2) : n5 === j || n5 === S2 ? n5 = O : n5 === E || n5 === k ? n5 = T : (n5 = O, h4 = void 0);\n    const u2 = n5 === O && t3[i5 + 1].startsWith(\"/>\") ? \" \" : \"\";\n    o4 += n5 === T ? s3 + _ : c4 >= 0 ? (e5.push(r4), s3.slice(0, c4) + f2 + s3.slice(c4) + v + u2) : s3 + v + (-2 === c4 ? i5 : u2);\n  }\n  return [N(t3, o4 + (t3[s2] || \"<?>\") + (2 === i4 ? \"</svg>\" : 3 === i4 ? \"</math>\" : \"\")), e5];\n};\nvar B = class _B {\n  constructor({ strings: t3, _$litType$: i4 }, s2) {\n    let e5;\n    this.parts = [];\n    let h4 = 0, o4 = 0;\n    const n5 = t3.length - 1, r4 = this.parts, [l2, a2] = U(t3, i4);\n    if (this.el = _B.createElement(l2, s2), I.currentNode = this.el.content, 2 === i4 || 3 === i4) {\n      const t4 = this.el.content.firstChild;\n      t4.replaceWith(...t4.childNodes);\n    }\n    for (; null !== (e5 = I.nextNode()) && r4.length < n5; ) {\n      if (1 === e5.nodeType) {\n        if (e5.hasAttributes()) for (const t4 of e5.getAttributeNames()) if (t4.endsWith(f2)) {\n          const i5 = a2[o4++], s3 = e5.getAttribute(t4).split(v), n6 = /([.?@])?(.*)/.exec(i5);\n          r4.push({ type: 1, index: h4, name: n6[2], strings: s3, ctor: \".\" === n6[1] ? Y : \"?\" === n6[1] ? Z : \"@\" === n6[1] ? q : G }), e5.removeAttribute(t4);\n        } else t4.startsWith(v) && (r4.push({ type: 6, index: h4 }), e5.removeAttribute(t4));\n        if (M.test(e5.tagName)) {\n          const t4 = e5.textContent.split(v), i5 = t4.length - 1;\n          if (i5 > 0) {\n            e5.textContent = c3 ? c3.emptyScript : \"\";\n            for (let s3 = 0; s3 < i5; s3++) e5.append(t4[s3], lt()), I.nextNode(), r4.push({ type: 2, index: ++h4 });\n            e5.append(t4[i5], lt());\n          }\n        }\n      } else if (8 === e5.nodeType) if (e5.data === m) r4.push({ type: 2, index: h4 });\n      else {\n        let t4 = -1;\n        for (; -1 !== (t4 = e5.data.indexOf(v, t4 + 1)); ) r4.push({ type: 7, index: h4 }), t4 += v.length - 1;\n      }\n      h4++;\n    }\n  }\n  static createElement(t3, i4) {\n    const s2 = w.createElement(\"template\");\n    return s2.innerHTML = t3, s2;\n  }\n};\nfunction z(t3, i4, s2 = t3, e5) {\n  if (i4 === R) return i4;\n  let h4 = void 0 !== e5 ? s2.o?.[e5] : s2.l;\n  const o4 = st(i4) ? void 0 : i4._$litDirective$;\n  return h4?.constructor !== o4 && (h4?._$AO?.(false), void 0 === o4 ? h4 = void 0 : (h4 = new o4(t3), h4._$AT(t3, s2, e5)), void 0 !== e5 ? (s2.o ??= [])[e5] = h4 : s2.l = h4), void 0 !== h4 && (i4 = z(t3, h4._$AS(t3, i4.values), h4, e5)), i4;\n}\nvar F = class {\n  constructor(t3, i4) {\n    this._$AV = [], this._$AN = void 0, this._$AD = t3, this._$AM = i4;\n  }\n  get parentNode() {\n    return this._$AM.parentNode;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  u(t3) {\n    const { el: { content: i4 }, parts: s2 } = this._$AD, e5 = (t3?.creationScope ?? w).importNode(i4, true);\n    I.currentNode = e5;\n    let h4 = I.nextNode(), o4 = 0, n5 = 0, r4 = s2[0];\n    for (; void 0 !== r4; ) {\n      if (o4 === r4.index) {\n        let i5;\n        2 === r4.type ? i5 = new et(h4, h4.nextSibling, this, t3) : 1 === r4.type ? i5 = new r4.ctor(h4, r4.name, r4.strings, this, t3) : 6 === r4.type && (i5 = new K(h4, this, t3)), this._$AV.push(i5), r4 = s2[++n5];\n      }\n      o4 !== r4?.index && (h4 = I.nextNode(), o4++);\n    }\n    return I.currentNode = w, e5;\n  }\n  p(t3) {\n    let i4 = 0;\n    for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t3, s2, i4), i4 += s2.strings.length - 2) : s2._$AI(t3[i4])), i4++;\n  }\n};\nvar et = class _et {\n  get _$AU() {\n    return this._$AM?._$AU ?? this.v;\n  }\n  constructor(t3, i4, s2, e5) {\n    this.type = 2, this._$AH = D, this._$AN = void 0, this._$AA = t3, this._$AB = i4, this._$AM = s2, this.options = e5, this.v = e5?.isConnected ?? true;\n  }\n  get parentNode() {\n    let t3 = this._$AA.parentNode;\n    const i4 = this._$AM;\n    return void 0 !== i4 && 11 === t3?.nodeType && (t3 = i4.parentNode), t3;\n  }\n  get startNode() {\n    return this._$AA;\n  }\n  get endNode() {\n    return this._$AB;\n  }\n  _$AI(t3, i4 = this) {\n    t3 = z(this, t3, i4), st(t3) ? t3 === D || null == t3 || \"\" === t3 ? (this._$AH !== D && this._$AR(), this._$AH = D) : t3 !== this._$AH && t3 !== R && this._(t3) : void 0 !== t3._$litType$ ? this.$(t3) : void 0 !== t3.nodeType ? this.T(t3) : $(t3) ? this.k(t3) : this._(t3);\n  }\n  O(t3) {\n    return this._$AA.parentNode.insertBefore(t3, this._$AB);\n  }\n  T(t3) {\n    this._$AH !== t3 && (this._$AR(), this._$AH = this.O(t3));\n  }\n  _(t3) {\n    this._$AH !== D && st(this._$AH) ? this._$AA.nextSibling.data = t3 : this.T(w.createTextNode(t3)), this._$AH = t3;\n  }\n  $(t3) {\n    const { values: i4, _$litType$: s2 } = t3, e5 = \"number\" == typeof s2 ? this._$AC(t3) : (void 0 === s2.el && (s2.el = B.createElement(N(s2.h, s2.h[0]), this.options)), s2);\n    if (this._$AH?._$AD === e5) this._$AH.p(i4);\n    else {\n      const t4 = new F(e5, this), s3 = t4.u(this.options);\n      t4.p(i4), this.T(s3), this._$AH = t4;\n    }\n  }\n  _$AC(t3) {\n    let i4 = V.get(t3.strings);\n    return void 0 === i4 && V.set(t3.strings, i4 = new B(t3)), i4;\n  }\n  k(t3) {\n    g(this._$AH) || (this._$AH = [], this._$AR());\n    const i4 = this._$AH;\n    let s2, e5 = 0;\n    for (const h4 of t3) e5 === i4.length ? i4.push(s2 = new _et(this.O(lt()), this.O(lt()), this, this.options)) : s2 = i4[e5], s2._$AI(h4), e5++;\n    e5 < i4.length && (this._$AR(s2 && s2._$AB.nextSibling, e5), i4.length = e5);\n  }\n  _$AR(t3 = this._$AA.nextSibling, i4) {\n    for (this._$AP?.(false, true, i4); t3 && t3 !== this._$AB; ) {\n      const i5 = t3.nextSibling;\n      t3.remove(), t3 = i5;\n    }\n  }\n  setConnected(t3) {\n    void 0 === this._$AM && (this.v = t3, this._$AP?.(t3));\n  }\n};\nvar G = class {\n  get tagName() {\n    return this.element.tagName;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  constructor(t3, i4, s2, e5, h4) {\n    this.type = 1, this._$AH = D, this._$AN = void 0, this.element = t3, this.name = i4, this._$AM = e5, this.options = h4, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = D;\n  }\n  _$AI(t3, i4 = this, s2, e5) {\n    const h4 = this.strings;\n    let o4 = false;\n    if (void 0 === h4) t3 = z(this, t3, i4, 0), o4 = !st(t3) || t3 !== this._$AH && t3 !== R, o4 && (this._$AH = t3);\n    else {\n      const e6 = t3;\n      let n5, r4;\n      for (t3 = h4[0], n5 = 0; n5 < h4.length - 1; n5++) r4 = z(this, e6[s2 + n5], i4, n5), r4 === R && (r4 = this._$AH[n5]), o4 ||= !st(r4) || r4 !== this._$AH[n5], r4 === D ? t3 = D : t3 !== D && (t3 += (r4 ?? \"\") + h4[n5 + 1]), this._$AH[n5] = r4;\n    }\n    o4 && !e5 && this.j(t3);\n  }\n  j(t3) {\n    t3 === D ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t3 ?? \"\");\n  }\n};\nvar Y = class extends G {\n  constructor() {\n    super(...arguments), this.type = 3;\n  }\n  j(t3) {\n    this.element[this.name] = t3 === D ? void 0 : t3;\n  }\n};\nvar Z = class extends G {\n  constructor() {\n    super(...arguments), this.type = 4;\n  }\n  j(t3) {\n    this.element.toggleAttribute(this.name, !!t3 && t3 !== D);\n  }\n};\nvar q = class extends G {\n  constructor(t3, i4, s2, e5, h4) {\n    super(t3, i4, s2, e5, h4), this.type = 5;\n  }\n  _$AI(t3, i4 = this) {\n    if ((t3 = z(this, t3, i4, 0) ?? D) === R) return;\n    const s2 = this._$AH, e5 = t3 === D && s2 !== D || t3.capture !== s2.capture || t3.once !== s2.once || t3.passive !== s2.passive, h4 = t3 !== D && (s2 === D || e5);\n    e5 && this.element.removeEventListener(this.name, this, s2), h4 && this.element.addEventListener(this.name, this, t3), this._$AH = t3;\n  }\n  handleEvent(t3) {\n    \"function\" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t3) : this._$AH.handleEvent(t3);\n  }\n};\nvar K = class {\n  constructor(t3, i4, s2) {\n    this.element = t3, this.type = 6, this._$AN = void 0, this._$AM = i4, this.options = s2;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AI(t3) {\n    z(this, t3);\n  }\n};\nvar Re = n3.litHtmlPolyfillSupport;\nRe?.(B, et), (n3.litHtmlVersions ??= []).push(\"3.2.0\");\nvar Q = (t3, i4, s2) => {\n  const e5 = s2?.renderBefore ?? i4;\n  let h4 = e5._$litPart$;\n  if (void 0 === h4) {\n    const t4 = s2?.renderBefore ?? null;\n    e5._$litPart$ = h4 = new et(i4.insertBefore(lt(), t4), t4, void 0, s2 ?? {});\n  }\n  return h4._$AI(t3), h4;\n};\n\n// node_modules/lit-element/lit-element.js\nvar h3 = class extends b {\n  constructor() {\n    super(...arguments), this.renderOptions = { host: this }, this.o = void 0;\n  }\n  createRenderRoot() {\n    const t3 = super.createRenderRoot();\n    return this.renderOptions.renderBefore ??= t3.firstChild, t3;\n  }\n  update(t3) {\n    const e5 = this.render();\n    this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t3), this.o = Q(e5, this.renderRoot, this.renderOptions);\n  }\n  connectedCallback() {\n    super.connectedCallback(), this.o?.setConnected(true);\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback(), this.o?.setConnected(false);\n  }\n  render() {\n    return R;\n  }\n};\nh3._$litElement$ = true, h3[\"finalized\"] = true, globalThis.litElementHydrateSupport?.({ LitElement: h3 });\nvar f3 = globalThis.litElementPolyfillSupport;\nf3?.({ LitElement: h3 });\n(globalThis.litElementVersions ??= []).push(\"4.1.0\");\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar o3 = { attribute: true, type: String, converter: u, reflect: false, hasChanged: f };\nvar r3 = (t3 = o3, e5, r4) => {\n  const { kind: n5, metadata: i4 } = r4;\n  let s2 = globalThis.litPropertyMetadata.get(i4);\n  if (void 0 === s2 && globalThis.litPropertyMetadata.set(i4, s2 = /* @__PURE__ */ new Map()), s2.set(r4.name, t3), \"accessor\" === n5) {\n    const { name: o4 } = r4;\n    return { set(r5) {\n      const n6 = e5.get.call(this);\n      e5.set.call(this, r5), this.requestUpdate(o4, n6, t3);\n    }, init(e6) {\n      return void 0 !== e6 && this.P(o4, void 0, t3), e6;\n    } };\n  }\n  if (\"setter\" === n5) {\n    const { name: o4 } = r4;\n    return function(r5) {\n      const n6 = this[o4];\n      e5.call(this, r5), this.requestUpdate(o4, n6, t3);\n    };\n  }\n  throw Error(\"Unsupported decorator location: \" + n5);\n};\nfunction n4(t3) {\n  return (e5, o4) => \"object\" == typeof o4 ? r3(t3, e5, o4) : ((t4, e6, o5) => {\n    const r4 = e6.hasOwnProperty(o5);\n    return e6.constructor.createProperty(o5, r4 ? { ...t4, wrapped: true } : t4), r4 ? Object.getOwnPropertyDescriptor(e6, o5) : void 0;\n  })(t3, e5, o4);\n}\n\n// node_modules/lit-html/directive.js\nvar t2 = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 };\nvar e4 = (t3) => (...e5) => ({ _$litDirective$: t3, values: e5 });\nvar i3 = class {\n  constructor(t3) {\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AT(t3, e5, i4) {\n    this.t = t3, this._$AM = e5, this.i = i4;\n  }\n  _$AS(t3, e5) {\n    return this.update(t3, e5);\n  }\n  update(t3, e5) {\n    return this.render(...e5);\n  }\n};\n\n// node_modules/lit-html/directives/class-map.js\nvar Rt = e4(class extends i3 {\n  constructor(s2) {\n    if (super(s2), s2.type !== t2.ATTRIBUTE || \"class\" !== s2.name || s2.strings?.length > 2) throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\");\n  }\n  render(t3) {\n    return \" \" + Object.keys(t3).filter(((s2) => t3[s2])).join(\" \") + \" \";\n  }\n  update(t3, [s2]) {\n    if (void 0 === this.st) {\n      this.st = /* @__PURE__ */ new Set(), void 0 !== t3.strings && (this.nt = new Set(t3.strings.join(\" \").split(/\\s/).filter(((t4) => \"\" !== t4))));\n      for (const t4 in s2) s2[t4] && !this.nt?.has(t4) && this.st.add(t4);\n      return this.render(s2);\n    }\n    const i4 = t3.element.classList;\n    for (const t4 of this.st) t4 in s2 || (i4.remove(t4), this.st.delete(t4));\n    for (const t4 in s2) {\n      const r4 = !!s2[t4];\n      r4 === this.st.has(t4) || this.nt?.has(t4) || (r4 ? (i4.add(t4), this.st.add(t4)) : (i4.remove(t4), this.st.delete(t4)));\n    }\n    return R;\n  }\n});\n\n// js/ipywidgets_styles.ts\nvar legacyStyles = i`\n    .legacy-button {\n        align-items: center;\n        background-color: var(--jp-layout-color2);\n        border-width: 0;\n        box-shadow: none;\n        color: var(--jp-ui-font-color1);\n        cursor: pointer;\n        display: flex;\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        justify-content: center;\n        line-height: var(--jp-widgets-inline-height);\n        padding: 0;\n        user-select: none;\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button:hover:enabled,\n    .legacy-button:focus:enabled {\n        box-shadow: 0 2px 2px 0\n                rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n            0 3px 1px -2px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity)),\n            0 1px 5px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity));\n    }\n\n    .legacy-slider {\n        -webkit-appearance: none;\n        appearance: none;\n        background: var(--jp-layout-color3);\n        border-radius: 3px;\n        height: 4px;\n        outline: none;\n    }\n\n    .legacy-slider::-webkit-slider-thumb,\n    .legacy-slider::-moz-range-thumb {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        border-radius: 50%;\n        cursor: pointer;\n        height: var(--jp-widgets-slider-handle-size);\n        width: var(--jp-widgets-slider-handle-size);\n    }\n\n    .legacy-text {\n        color: var(--jp-widgets-label-color);\n        font-family: \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        vertical-align: middle;\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: 28px;\n        line-height: 28px;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-select[disabled] {\n        opacity: 0.4;\n        cursor: not-allowed;\n    }\n\n    .legacy-text-input {\n        background: var(--jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding) * 2);\n    }\n\n    .legacy-text-input:disabled {\n        opacity: var(--jp-widgets-disabled-opacity);\n    }\n\n    .legacy-color {\n        align-self: stretch;\n        background: var(--jp-widgets-input-background-color);\n        border-left: none;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex-grow: 0;\n        flex-shrink: 0;\n        height: var(--jp-widgets-inline-height);\n        outline: none !important;\n        padding: 0 2px;\n        width: var(--jp-widgets-inline-height);\n    }\n\n    .legacy-radio {\n        margin: 0;\n        vertical-align: middle;\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-button.active {\n        background-color: var(--colab-primary-surface-color, --jp-layout-color3);\n        color: var(--jp-ui-font-color1);\n        box-shadow: 0 4px 5px 0 rgba(0, 0, 0, var(--md-shadow-key-penumbra-opacity)),\n                    0 1px 10px 0 rgba(0, 0, 0, var(--md-shadow-ambient-shadow-opacity)),\n                    0 2px 4px -1px rgba(0, 0, 0, var(--md-shadow-key-umbra-opacity));\n    }\n\n    .legacy-button.primary {\n        background-color: var(--jp-brand-color1);\n        color: var(--jp-ui-inverse-font-color1);\n    }\n\n    .legacy-button.primary.active {\n        background-color: var(--jp-brand-color0);\n        color: var(--jp-ui-inverse-font-color0);\n    }\n\n    .legacy-select {\n        -moz-appearance: none;\n        -webkit-appearance: none;\n        appearance: none;\n        background-color: var(--jp-widgets-input-background-color);\n        background-image: var(--jp-widgets-dropdown-arrow);\n        background-position: right center;\n        background-repeat: no-repeat;\n        background-size: 20px;\n        border-radius: 0;\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        box-shadow: none;\n        box-sizing: border-box;\n        color: var(--jp-widgets-input-color);\n        flex: 1 1 var(--jp-widgets-inline-width-short);\n        font-size: var(--jp-widgets-font-size);\n        height: inherit;\n        min-width: 0;\n        outline: none !important;\n        padding-left: calc(var(--jp-widgets-input-padding)* 2);\n        padding-right: 20px;\n        vertical-align: top;\n    }\n\n    .legacy-input {\n        box-sizing: border-box;\n        background-color: var(--colab-primary-surface-color, --jp-widgets-input-background-color);\n        border: var(--jp-widgets-input-border-width) solid var(--jp-widgets-input-border-color);\n        color: var(--jp-widgets-input-color);\n        flex-grow: 1;\n        flex-shrink: 1;\n        font-size: var(--jp-widgets-font-size);\n        min-width: 0;\n        outline: none !important;\n        padding: var(--jp-widgets-input-padding) calc(var(--jp-widgets-input-padding)* 2);\n        height: var(--jp-widgets-inline-height);\n        line-height: var(--jp-widgets-inline-height);\n    }\n`;\n\n// js/utils.ts\nfunction loadFonts() {\n  if (!document.querySelector(\".custom-fonts\")) {\n    const styleElement = document.createElement(\"style\");\n    styleElement.classList.add(\"custom-fonts\");\n    styleElement.textContent = '@import \"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined\";';\n    document.body.appendChild(styleElement);\n  }\n}\nfunction reverseMap(map) {\n  const reversedMap = /* @__PURE__ */ new Map();\n  for (const [key, value] of map.entries()) {\n    if (value != null) {\n      reversedMap.set(value, key);\n    }\n  }\n  return reversedMap;\n}\n\n// js/lit_widget.ts\nvar LitWidget = class extends h3 {\n  constructor() {\n    super(...arguments);\n    this._model = void 0;\n  }\n  onCustomMessage(_msg) {\n  }\n  viewNameToModelName() {\n    return reverseMap(this.modelNameToViewName());\n  }\n  set model(model) {\n    this._model = model;\n    for (const [modelKey, widgetKey] of this.modelNameToViewName()) {\n      if (widgetKey) {\n        this[widgetKey] = model.get(modelKey);\n        model.on(`change:${String(modelKey)}`, () => {\n          this[widgetKey] = model.get(modelKey);\n        });\n      }\n    }\n    model.on(\"msg:custom\", (msg) => {\n      this.onCustomMessage?.(msg);\n    });\n  }\n  get model() {\n    return this._model;\n  }\n  updated(changedProperties) {\n    const viewToModelMap = this.viewNameToModelName();\n    for (const [viewProp, _2] of changedProperties) {\n      const castViewProp = viewProp;\n      if (viewToModelMap.has(castViewProp)) {\n        const modelProp = viewToModelMap.get(castViewProp);\n        this._model?.set(\n          modelProp,\n          this[castViewProp]\n        );\n      }\n    }\n    this._model?.save_changes();\n  }\n};\n\n// js/styles.ts\nvar materialStyles = i`\n    @font-face {\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: 400;\n        src: url(https://fonts.gstatic.com/s/materialsymbolsoutlined/v205/kJF1BvYX7BgnkSrUwT8OhrdQw4oELdPIeeII9v6oDMzByHX9rA6RzaxHMPdY43zj-jCxv3fzvRNU22ZXGJpEpjC_1v-p_4MrImHCIJIZrDCvHOejbd5zrDAt.woff2)\n            format(\"woff2\");\n    }\n\n    .material-symbols-outlined {\n        -webkit-font-feature-settings: \"liga\";\n        -webkit-font-smoothing: antialiased;\n        direction: ltr;\n        display: inline-block;\n        font-family: \"Material Symbols Outlined\";\n        font-style: normal;\n        font-weight: normal;\n        letter-spacing: normal;\n        line-height: 1;\n        text-transform: none;\n        white-space: nowrap;\n        word-wrap: normal;\n    }\n`;\nvar flexStyles = i`\n    .vertical-flex {\n        display: flex;\n        flex-direction: column;\n        gap: 8px;\n    }\n\n    .horizontal-flex {\n        align-items: center;\n        display: flex;\n        flex-wrap: nowrap;\n        gap: 8px;\n    }\n\n    input:not([type=\"radio\"]):not([type=\"checkbox\"]) {\n        width: 100%;\n    }\n\n    select {\n        width: 100%;\n    }\n\n    .horizontal-flex .legacy-text {\n        flex-shrink: 0;\n    }\n`;\n\n// js/toolbar_item.ts\nvar ToolbarItem = class extends LitWidget {\n  constructor() {\n    super(...arguments);\n    this.active = false;\n    this.primary = true;\n    this.icon = \"\";\n    this.tooltip_text = \"\";\n  }\n  static get componentName() {\n    return `tool-button`;\n  }\n  static {\n    this.styles = [\n      legacyStyles,\n      materialStyles,\n      i`\n            button {\n                font-size: 16px !important;\n                height: 32px;\n                padding: 0px 0px 0px 4px;\n                width: 32px;\n            }\n        `\n    ];\n  }\n  modelNameToViewName() {\n    return /* @__PURE__ */ new Map([\n      [\"active\", \"active\"],\n      [\"primary\", \"primary\"],\n      [\"icon\", \"icon\"],\n      [\"tooltip_text\", \"tooltip_text\"]\n    ]);\n  }\n  render() {\n    return ke`\n            <button\n                class=${Rt({\n      \"legacy-button\": true,\n      \"primary\": this.primary,\n      \"active\": this.active\n    })}\n                title=\"${this.tooltip_text}\"\n                @click=\"${this.onClick}\">\n                <span class=\"material-symbols-outlined\">${this.icon}</span>\n            </button>`;\n  }\n  onClick(_2) {\n    this.active = !this.active;\n  }\n};\n__decorateClass([\n  n4({ type: Boolean })\n], ToolbarItem.prototype, \"active\", 2);\n__decorateClass([\n  n4({ type: Boolean })\n], ToolbarItem.prototype, \"primary\", 2);\n__decorateClass([\n  n4({ type: String })\n], ToolbarItem.prototype, \"icon\", 2);\n__decorateClass([\n  n4({ type: String })\n], ToolbarItem.prototype, \"tooltip_text\", 2);\nif (!customElements.get(ToolbarItem.componentName)) {\n  customElements.define(ToolbarItem.componentName, ToolbarItem);\n}\nasync function render({ model, el }) {\n  loadFonts();\n  const manager = document.createElement(ToolbarItem.componentName);\n  manager.model = model;\n  el.appendChild(manager);\n}\nvar toolbar_item_default = { render };\nexport {\n  ToolbarItem,\n  toolbar_item_default as default\n};\n/*! Bundled license information:\n\n@lit/reactive-element/css-tag.js:\n  (**\n   * @license\n   * Copyright 2019 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/reactive-element.js:\nlit-html/lit-html.js:\nlit-element/lit-element.js:\n@lit/reactive-element/decorators/custom-element.js:\n@lit/reactive-element/decorators/property.js:\n@lit/reactive-element/decorators/state.js:\n@lit/reactive-element/decorators/event-options.js:\n@lit/reactive-element/decorators/base.js:\n@lit/reactive-element/decorators/query.js:\n@lit/reactive-element/decorators/query-all.js:\n@lit/reactive-element/decorators/query-async.js:\n@lit/reactive-element/decorators/query-assigned-nodes.js:\nlit-html/directive.js:\n  (**\n   * @license\n   * Copyright 2017 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/is-server.js:\n  (**\n   * @license\n   * Copyright 2022 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\n@lit/reactive-element/decorators/query-assigned-elements.js:\n  (**\n   * @license\n   * Copyright 2021 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n\nlit-html/directives/class-map.js:\n  (**\n   * @license\n   * Copyright 2018 Google LLC\n   * SPDX-License-Identifier: BSD-3-Clause\n   *)\n*/\n",
              "_model_module": "anywidget",
              "_model_module_version": "~0.9.*",
              "_model_name": "AnyModel",
              "_view_count": null,
              "_view_module": "anywidget",
              "_view_module_version": "~0.9.*",
              "_view_name": "AnyView",
              "active": false,
              "icon": "question_mark",
              "layout": "IPY_MODEL_d7c0fc1a4c1a41f88d4ec84f651c2452",
              "primary": true,
              "tooltip_text": "Get help"
            }
          },
          "a9b02c6d53844f678c1e108f39c194c0": {
            "model_module": "@jupyter-widgets/base",
            "model_name": "LayoutModel",
            "model_module_version": "1.2.0",
            "state": {
              "_model_module": "@jupyter-widgets/base",
              "_model_module_version": "1.2.0",
              "_model_name": "LayoutModel",
              "_view_count": null,
              "_view_module": "@jupyter-widgets/base",
              "_view_module_version": "1.2.0",
              "_view_name": "LayoutView",
              "align_content": null,
              "align_items": null,
              "align_self": null,
              "border": null,
              "bottom": null,
              "display": null,
              "flex": null,
              "flex_flow": null,
              "grid_area": null,
              "grid_auto_columns": null,
              "grid_auto_flow": null,
              "grid_auto_rows": null,
              "grid_column": null,
              "grid_gap": null,
              "grid_row": null,
              "grid_template_areas": null,
              "grid_template_columns": null,
              "grid_template_rows": null,
              "height": null,
              "justify_content": null,
              "justify_items": null,
              "left": null,
              "margin": null,
              "max_height": null,
              "max_width": null,
              "min_height": null,
              "min_width": null,
              "object_fit": null,
              "object_position": null,
              "order": null,
              "overflow": null,
              "overflow_x": null,
              "overflow_y": null,
              "padding": null,
              "right": null,
              "top": null,
              "visibility": null,
              "width": null
            }
          },
          "97f9645792d94800b1e86e9ee5da0f5c": {
            "model_module": "@jupyter-widgets/base",
            "model_name": "LayoutModel",
            "model_module_version": "1.2.0",
            "state": {
              "_model_module": "@jupyter-widgets/base",
              "_model_module_version": "1.2.0",
              "_model_name": "LayoutModel",
              "_view_count": null,
              "_view_module": "@jupyter-widgets/base",
              "_view_module_version": "1.2.0",
              "_view_name": "LayoutView",
              "align_content": null,
              "align_items": null,
              "align_self": null,
              "border": null,
              "bottom": null,
              "display": null,
              "flex": null,
              "flex_flow": null,
              "grid_area": null,
              "grid_auto_columns": null,
              "grid_auto_flow": null,
              "grid_auto_rows": null,
              "grid_column": null,
              "grid_gap": null,
              "grid_row": null,
              "grid_template_areas": null,
              "grid_template_columns": null,
              "grid_template_rows": null,
              "height": null,
              "justify_content": null,
              "justify_items": null,
              "left": null,
              "margin": null,
              "max_height": null,
              "max_width": null,
              "min_height": null,
              "min_width": null,
              "object_fit": null,
              "object_position": null,
              "order": null,
              "overflow": null,
              "overflow_x": null,
              "overflow_y": null,
              "padding": null,
              "right": null,
              "top": null,
              "visibility": null,
              "width": null
            }
          },
          "e66f293801a34fd5b08b454a31f93f9c": {
            "model_module": "@jupyter-widgets/base",
            "model_name": "LayoutModel",
            "model_module_version": "1.2.0",
            "state": {
              "_model_module": "@jupyter-widgets/base",
              "_model_module_version": "1.2.0",
              "_model_name": "LayoutModel",
              "_view_count": null,
              "_view_module": "@jupyter-widgets/base",
              "_view_module_version": "1.2.0",
              "_view_name": "LayoutView",
              "align_content": null,
              "align_items": null,
              "align_self": null,
              "border": null,
              "bottom": null,
              "display": null,
              "flex": null,
              "flex_flow": null,
              "grid_area": null,
              "grid_auto_columns": null,
              "grid_auto_flow": null,
              "grid_auto_rows": null,
              "grid_column": null,
              "grid_gap": null,
              "grid_row": null,
              "grid_template_areas": null,
              "grid_template_columns": null,
              "grid_template_rows": null,
              "height": null,
              "justify_content": null,
              "justify_items": null,
              "left": null,
              "margin": null,
              "max_height": null,
              "max_width": null,
              "min_height": null,
              "min_width": null,
              "object_fit": null,
              "object_position": null,
              "order": null,
              "overflow": null,
              "overflow_x": null,
              "overflow_y": null,
              "padding": null,
              "right": null,
              "top": null,
              "visibility": null,
              "width": null
            }
          },
          "8963c54ad9954c04bc47ba70dc7604df": {
            "model_module": "@jupyter-widgets/base",
            "model_name": "LayoutModel",
            "model_module_version": "1.2.0",
            "state": {
              "_model_module": "@jupyter-widgets/base",
              "_model_module_version": "1.2.0",
              "_model_name": "LayoutModel",
              "_view_count": null,
              "_view_module": "@jupyter-widgets/base",
              "_view_module_version": "1.2.0",
              "_view_name": "LayoutView",
              "align_content": null,
              "align_items": null,
              "align_self": null,
              "border": null,
              "bottom": null,
              "display": null,
              "flex": null,
              "flex_flow": null,
              "grid_area": null,
              "grid_auto_columns": null,
              "grid_auto_flow": null,
              "grid_auto_rows": null,
              "grid_column": null,
              "grid_gap": null,
              "grid_row": null,
              "grid_template_areas": null,
              "grid_template_columns": null,
              "grid_template_rows": null,
              "height": null,
              "justify_content": null,
              "justify_items": null,
              "left": null,
              "margin": null,
              "max_height": null,
              "max_width": null,
              "min_height": null,
              "min_width": null,
              "object_fit": null,
              "object_position": null,
              "order": null,
              "overflow": null,
              "overflow_x": null,
              "overflow_y": null,
              "padding": null,
              "right": null,
              "top": null,
              "visibility": null,
              "width": null
            }
          },
          "fb7c857105874d9481b7963d226d7a25": {
            "model_module": "@jupyter-widgets/base",
            "model_name": "LayoutModel",
            "model_module_version": "1.2.0",
            "state": {
              "_model_module": "@jupyter-widgets/base",
              "_model_module_version": "1.2.0",
              "_model_name": "LayoutModel",
              "_view_count": null,
              "_view_module": "@jupyter-widgets/base",
              "_view_module_version": "1.2.0",
              "_view_name": "LayoutView",
              "align_content": null,
              "align_items": null,
              "align_self": null,
              "border": null,
              "bottom": null,
              "display": null,
              "flex": null,
              "flex_flow": null,
              "grid_area": null,
              "grid_auto_columns": null,
              "grid_auto_flow": null,
              "grid_auto_rows": null,
              "grid_column": null,
              "grid_gap": null,
              "grid_row": null,
              "grid_template_areas": null,
              "grid_template_columns": null,
              "grid_template_rows": null,
              "height": null,
              "justify_content": null,
              "justify_items": null,
              "left": null,
              "margin": null,
              "max_height": null,
              "max_width": null,
              "min_height": null,
              "min_width": null,
              "object_fit": null,
              "object_position": null,
              "order": null,
              "overflow": null,
              "overflow_x": null,
              "overflow_y": null,
              "padding": null,
              "right": null,
              "top": null,
              "visibility": null,
              "width": null
            }
          },
          "d7c0fc1a4c1a41f88d4ec84f651c2452": {
            "model_module": "@jupyter-widgets/base",
            "model_name": "LayoutModel",
            "model_module_version": "1.2.0",
            "state": {
              "_model_module": "@jupyter-widgets/base",
              "_model_module_version": "1.2.0",
              "_model_name": "LayoutModel",
              "_view_count": null,
              "_view_module": "@jupyter-widgets/base",
              "_view_module_version": "1.2.0",
              "_view_name": "LayoutView",
              "align_content": null,
              "align_items": null,
              "align_self": null,
              "border": null,
              "bottom": null,
              "display": null,
              "flex": null,
              "flex_flow": null,
              "grid_area": null,
              "grid_auto_columns": null,
              "grid_auto_flow": null,
              "grid_auto_rows": null,
              "grid_column": null,
              "grid_gap": null,
              "grid_row": null,
              "grid_template_areas": null,
              "grid_template_columns": null,
              "grid_template_rows": null,
              "height": null,
              "justify_content": null,
              "justify_items": null,
              "left": null,
              "margin": null,
              "max_height": null,
              "max_width": null,
              "min_height": null,
              "min_width": null,
              "object_fit": null,
              "object_position": null,
              "order": null,
              "overflow": null,
              "overflow_x": null,
              "overflow_y": null,
              "padding": null,
              "right": null,
              "top": null,
              "visibility": null,
              "width": null
            }
          }
        }
      }
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "<a target=\"_blank\" href=\"https://storage.googleapis.com/weathernext-public/colabs/Pardig_Starter_Guide_Earth_Engine.ipynb\">\n",
        "  <img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/>\n",
        "</a>"
      ],
      "metadata": {
        "id": "mzo92lGD-0MZ"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Exploring Global Precipitation with Earth Engine and PARDIG\n",
        "\n",
        "**Welcome!** This notebook section demonstrates how to access, analyze, and visualize the **PARDIG** (*Precipitation AI Reanalysis — Densely Inferred GPM*) dataset in Google Earth Engine, developed by Google DeepMind and Google Research.\n",
        "\n",
        "**Dataset Overview**\n",
        "\n",
        "PARDIG is an experimental dataset of global, AI-driven precipitation estimates trained directly on spaceborne radar retrievals from the Combined Radar-Radiometer Algorithm (CORRA) aboard the NASA/JAXA Global Precipitation Measurement (GPM) Core Observatory.\n",
        "\n",
        "PARDIG precipitation estimates are provided at a **15-minute cadence** and **0.1° (~10 km) spatial resolution**:\n",
        "* **PARDIG-LR (Long-Record):** Static 25-year historical archive (`1999-01-01T00:00:00Z` to `2023-12-31T23:45:00Z`). Relies on ECMWF ERA5, NOAA GridSat-B1, and polar-orbiting microwave sounders.\n",
        "* **PARDIG-NRT (Near-Real-Time):** Static archive at launch covering `2016-01-01T07:45:00Z` through October 2026 on Earth Engine (for live 6-hourly updates, query the Cloud Storage Zarr store). Relies on ECMWF HRES and the SatWeave geostationary satellite mosaic.\n",
        "\n",
        "Both datasets are publicly accessible in the Earth Engine Data Catalog under CC BY 4.0 with any Google Cloud account (no access request form required).\n",
        "\n",
        "**Earth Engine Snippets**\n",
        "* PARDIG-LR: `ee.ImageCollection(\"projects/gcp-public-data-weathernext/assets/PARDIG_1_LR\")`\n",
        "* PARDIG-NRT: `ee.ImageCollection(\"projects/gcp-public-data-weathernext/assets/PARDIG_1_NRT\")`\n",
        "\n",
        "**Notebook Purpose**\n",
        "\n",
        "This section aims to:\n",
        "* Familiarize users with querying PARDIG ImageCollections, date filtering, and spatial reducers in Earth Engine.\n",
        "* Demonstrate how to compute 1-hour and 24-hour accumulated rainfall depths (in mm) from 15-minute instantaneous rates (in m/h).\n",
        "* Visualize local precipitation event time series and render global interactive precipitation maps using `geemap`.\n",
        "\n",
        "**Copyright & License Information**\n",
        "\n",
        "Copyright 2026 Google LLC. All materials and data are licensed under the [Creative Commons Attribution 4.0 International License (CC-BY 4.0)](https://creativecommons.org/licenses/by/4.0/).\n",
        "\n",
        "[Earth Engine Client Library Documentation](https://developers.google.com/earth-engine/apidocs)\n",
        "\n",
        "---\n",
        "\n",
        "# PARDIG Earth Engine Dataset Schema\n",
        "\n",
        "### Image Collection Properties & Metadata\n",
        "\n",
        "<div align=\"left\">\n",
        "\n",
        "| Name | Type | Description |\n",
        "| --- | --- | --- |\n",
        "| `system:time_start` | LONG | Valid timestamp expressed as milliseconds since Unix epoch (UTC). |\n",
        "| `system:index` | STRING | Unique image identifier corresponding to the 15-minute valid timestamp. |\n",
        "\n",
        "</div>\n",
        "\n",
        "### Supported Bands\n",
        "\n",
        "<div align=\"left\">\n",
        "\n",
        "| Band Name | Units | Step Type | Description |\n",
        "| --- | --- | --- | --- |\n",
        "| `precipitation` | m/h (`m h**-1`) | Instantaneous | Instantaneous surface precipitation rate at the 15-minute valid timestamp (deterministic rates cap at 75 mm/h / 0.075 m/h). |\n",
        "\n",
        "</div>\n",
        "\n",
        "> **Important Unit Conversion in Earth Engine:**\n",
        "> * `precipitation` reports the **instantaneous rate in meters per hour (`m/h`)**.\n",
        "> * Since each image represents a **15-minute (0.25 hour) interval**, multiplying the rate by `0.25 h` and by `1,000 mm/m` gives the interval's accumulated depth in millimeters:\n",
        ">   $$\\text{Accumulated Depth (mm)} = \\text{Rate (m/h)} \\times 0.25 \\times 1000 = \\text{Rate (m/h)} \\times 250.0$$\n",
        "> * If the rates have already been converted to **mm/h**, multiply by `0.25 h` to compute the 15-minute depth in millimeters.\n",
        "> * To calculate 24-hour total accumulation (96 images), sum the interval depths over the filtered collection."
      ],
      "metadata": {
        "id": "2nv53ibIXsYa"
      }
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "fInpqTgUpRl2"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Import Python Libraries & Some Other Setup"
      ],
      "metadata": {
        "id": "X4EBcCI5obFt"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from collections.abc import Mapping\n",
        "\n",
        "import ee\n",
        "import geemap.core as geemap\n",
        "import pandas as pd\n",
        "import matplotlib.pyplot as plt\n",
        "import matplotlib.dates as mdates\n",
        "import seaborn as sns\n",
        "import numpy as np\n",
        "\n",
        "import warnings\n",
        "# Suppress the FutureWarning\n",
        "warnings.filterwarnings(\"ignore\", category=FutureWarning)"
      ],
      "metadata": {
        "id": "Fqqo0TpxxIQW"
      },
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Set Google Cloud/Earth Engine Project ID"
      ],
      "metadata": {
        "id": "L_Tfl2oCobFu"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "project_id = ''  #@param{type:\"string\"}\n",
        "ee.Authenticate()\n",
        "ee.Initialize(project=project_id)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 17
        },
        "id": "55BGLfGULI0J",
        "outputId": "975963ff-2172-4408-ae12-d5564d2c499e"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ],
            "text/html": [
              "\n",
              "            <style>\n",
              "                .geemap-dark {\n",
              "                    --jp-widgets-color: white;\n",
              "                    --jp-widgets-label-color: white;\n",
              "                    --jp-ui-font-color1: white;\n",
              "                    --jp-layout-color2: #454545;\n",
              "                    background-color: #383838;\n",
              "                }\n",
              "\n",
              "                .geemap-dark .jupyter-button {\n",
              "                    --jp-layout-color3: #383838;\n",
              "                }\n",
              "\n",
              "                .geemap-colab {\n",
              "                    background-color: var(--colab-primary-surface-color, white);\n",
              "                }\n",
              "\n",
              "                .geemap-colab .jupyter-button {\n",
              "                    --jp-layout-color3: var(--colab-primary-surface-color, white);\n",
              "                }\n",
              "            </style>\n",
              "            "
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## Utility functions"
      ],
      "metadata": {
        "id": "NeXvgbqbmN9W"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "def convert_to_dataframe(\n",
        "    image_collection: ee.ImageCollection,\n",
        "    geometry: ee.Geometry,\n",
        "    bands_to_reducer: Mapping[str, ee.Reducer]\n",
        "):\n",
        "  \"\"\"Converts an EE ImageCollection into a Pandas Dataframe for plotting.\"\"\"\n",
        "  covering_grid = geometry.coveringGrid(\n",
        "      image_collection.first().projection(),\n",
        "      image_collection.first().projection().nominalScale()\n",
        "  )\n",
        "\n",
        "  def convert_to_feature_collection(image: ee.Image):\n",
        "    def get_feature_for_cell(cell_polygon: ee.Geometry.Polygon):\n",
        "      feature_dict = {\n",
        "          'time': image.get('end_time'),\n",
        "          'init_time': image.get('start_time'),\n",
        "          'forecast_hour': image.get('forecast_hour'),\n",
        "      }\n",
        "      # Add each of the band values to the feature dict. Use the supplied\n",
        "      # reducer method to get this value (typically, mean).\n",
        "      for band_id, reducer in bands_to_reducer.items():\n",
        "        value = image.reduceRegion(\n",
        "            reducer=reducer,\n",
        "            geometry=cell_polygon.geometry(),\n",
        "            scale=image.projection().nominalScale()\n",
        "        ).get(band_id)\n",
        "        feature_dict[band_id] = value\n",
        "      return ee.Feature(cell_polygon.geometry(), feature_dict)\n",
        "    return covering_grid.map(get_feature_for_cell)\n",
        "\n",
        "  features = image_collection.map(convert_to_feature_collection).flatten()\n",
        "  df = ee.data.computeFeatures(\n",
        "      {'expression': features, 'fileFormat': 'PANDAS_DATAFRAME'}\n",
        "  )\n",
        "  df['time'] = pd.to_datetime(df['time'])\n",
        "  df['init_time'] = pd.to_datetime(df['init_time'])\n",
        "  return df"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 17
        },
        "id": "pCH4K0jhmDWz",
        "outputId": "24a6d4aa-6795-4f84-d3f5-062556876754"
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ],
            "text/html": [
              "\n",
              "            <style>\n",
              "                .geemap-dark {\n",
              "                    --jp-widgets-color: white;\n",
              "                    --jp-widgets-label-color: white;\n",
              "                    --jp-ui-font-color1: white;\n",
              "                    --jp-layout-color2: #454545;\n",
              "                    background-color: #383838;\n",
              "                }\n",
              "\n",
              "                .geemap-dark .jupyter-button {\n",
              "                    --jp-layout-color3: #383838;\n",
              "                }\n",
              "\n",
              "                .geemap-colab {\n",
              "                    background-color: var(--colab-primary-surface-color, white);\n",
              "                }\n",
              "\n",
              "                .geemap-colab .jupyter-button {\n",
              "                    --jp-layout-color3: var(--colab-primary-surface-color, white);\n",
              "                }\n",
              "            </style>\n",
              "            "
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Reference PARDIG Earth Engine Image Collections\n",
        "pardig_lr = ee.ImageCollection(\"projects/gcp-public-data-weathernext/assets/PARDIG_1_LR\")\n",
        "pardig_nrt = ee.ImageCollection(\"projects/gcp-public-data-weathernext/assets/PARDIG_1_NRT\")\n",
        "\n",
        "# Inspect sample images and verify available bands\n",
        "sample_lr = pardig_lr.first()\n",
        "sample_nrt = pardig_nrt.first()\n",
        "\n",
        "print(\"PARDIG-LR sample ID:\", sample_lr.id().getInfo())\n",
        "print(\"PARDIG-LR bands:\", sample_lr.bandNames().getInfo())\n",
        "print(\"PARDIG-NRT sample ID:\", sample_nrt.id().getInfo())\n",
        "print(\"PARDIG-NRT bands:\", sample_nrt.bandNames().getInfo())"
      ],
      "metadata": {
        "id": "N_UAWlDJZdDa",
        "outputId": "3a2557d1-cc27-4fad-8d50-d15be25bb925",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 90
        }
      },
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ],
            "text/html": [
              "\n",
              "            <style>\n",
              "                .geemap-dark {\n",
              "                    --jp-widgets-color: white;\n",
              "                    --jp-widgets-label-color: white;\n",
              "                    --jp-ui-font-color1: white;\n",
              "                    --jp-layout-color2: #454545;\n",
              "                    background-color: #383838;\n",
              "                }\n",
              "\n",
              "                .geemap-dark .jupyter-button {\n",
              "                    --jp-layout-color3: #383838;\n",
              "                }\n",
              "\n",
              "                .geemap-colab {\n",
              "                    background-color: var(--colab-primary-surface-color, white);\n",
              "                }\n",
              "\n",
              "                .geemap-colab .jupyter-button {\n",
              "                    --jp-layout-color3: var(--colab-primary-surface-color, white);\n",
              "                }\n",
              "            </style>\n",
              "            "
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "PARDIG-LR sample ID: 19990101000000\n",
            "PARDIG-LR bands: ['precipitation']\n",
            "PARDIG-NRT sample ID: 20160101074500\n",
            "PARDIG-NRT bands: ['precipitation']\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "cell_1794214674250359831_12"
      },
      "source": [
        "## 24-Hour Regional Precipitation Event Time Series — New York City\n",
        "\n",
        "This query retrieves a continuous 24-hour sequence of 15-minute precipitation rate observations (96 frames) over the New York City metropolitan area (`ee.Geometry.BBox(-74.26, 40.50, -73.70, 40.90)`).\n",
        "\n",
        "For each 15-minute frame:\n",
        "1. The instantaneous rate is converted from **m/h** to **mm/h** (`multiply(1000.0)`).\n",
        "2. The `convert_to_dataframe` utility function samples each grid cell within the metropolitan bounding box and exports the collection to a Pandas DataFrame.\n",
        "3. We aggregate across grid cells to compute both the spatial average and peak rainfall intensity across the city to plot the storm progression."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "height": 696,
          "base_uri": "https://localhost:8080/"
        },
        "id": "cell_1794214688127878873_13",
        "outputId": "0b644981-966a-42b1-ad57-24526506fc12"
      },
      "source": [
        "# NYC metropolitan bounding box coordinates\n",
        "ny_geom = ee.Geometry.BBox(-74.26, 40.50, -73.70, 40.90)\n",
        "\n",
        "# Filter 24-hour storm progression (NYC historic rainfall event of Sep 29, 2023)\n",
        "start_time = \"2023-09-29T00:00:00\"\n",
        "end_time = \"2023-09-30T00:00:00\"\n",
        "\n",
        "# Convert instantaneous rate from m/h to mm/h and annotate metadata for convert_to_dataframe\n",
        "nyc_precip_col = (\n",
        "    pardig_nrt.filterDate(start_time, end_time)\n",
        "    .filterBounds(ny_geom)\n",
        "    .map(lambda img: img.select(\"precipitation\").multiply(1000.0).rename(\"precipitation_mm_h\").set({\n",
        "        \"end_time\": img.date().format(\"YYYY-MM-dd HH:mm:ss\"),\n",
        "        \"start_time\": img.date().format(\"YYYY-MM-dd HH:mm:ss\"),\n",
        "        \"forecast_hour\": 0,\n",
        "    }))\n",
        ")\n",
        "\n",
        "# Convert Earth Engine ImageCollection to Pandas DataFrame using the convert_to_dataframe utility\n",
        "df_nyc_grid = convert_to_dataframe(\n",
        "    nyc_precip_col,\n",
        "    ny_geom,\n",
        "    {\n",
        "        \"precipitation_mm_h\": ee.Reducer.mean(),\n",
        "    },\n",
        ")\n",
        "\n",
        "# Aggregate across grid cells in NYC bounding box to get spatial mean and regional peak rates\n",
        "df_nyc_precip = (\n",
        "    df_nyc_grid.groupby(\"time\", as_index=False)[\"precipitation_mm_h\"]\n",
        "    .agg(mean_rate_mm_h=\"mean\", max_rate_mm_h=\"max\")\n",
        "    .sort_values(\"time\")\n",
        "    .reset_index(drop=True)\n",
        ")\n",
        "\n",
        "display(df_nyc_precip.head())\n",
        "\n",
        "# Plot 15-minute precipitation rate time series\n",
        "plt.figure(figsize=(12, 5))\n",
        "plt.plot(\n",
        "    df_nyc_precip[\"time\"],\n",
        "    df_nyc_precip[\"max_rate_mm_h\"],\n",
        "    color=\"firebrick\",\n",
        "    linewidth=2,\n",
        "    label=\"Peak Rate (Regional Max)\",\n",
        ")\n",
        "plt.plot(\n",
        "    df_nyc_precip[\"time\"],\n",
        "    df_nyc_precip[\"mean_rate_mm_h\"],\n",
        "    color=\"steelblue\",\n",
        "    linewidth=2,\n",
        "    label=\"Spatial Mean Rate\",\n",
        ")\n",
        "plt.fill_between(\n",
        "    df_nyc_precip[\"time\"],\n",
        "    df_nyc_precip[\"mean_rate_mm_h\"],\n",
        "    color=\"powderblue\",\n",
        "    alpha=0.5,\n",
        ")\n",
        "\n",
        "plt.title(\"PARDIG 15-Minute Precipitation Rate — New York City (2023-09-29 Storm)\", fontsize=14)\n",
        "plt.xlabel(\"Valid Time (UTC)\", fontsize=11)\n",
        "plt.ylabel(\"Precipitation Rate (mm/h)\", fontsize=11)\n",
        "plt.gca().xaxis.set_major_formatter(mdates.DateFormatter(\"%H:%M\"))\n",
        "plt.gca().xaxis.set_major_locator(mdates.HourLocator(interval=2))\n",
        "plt.xticks(rotation=45, ha=\"right\")\n",
        "plt.grid(True, linestyle=\"--\", alpha=0.6)\n",
        "plt.legend(loc=\"upper right\", fontsize=11)\n",
        "plt.tight_layout()\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ],
            "text/html": [
              "\n",
              "            <style>\n",
              "                .geemap-dark {\n",
              "                    --jp-widgets-color: white;\n",
              "                    --jp-widgets-label-color: white;\n",
              "                    --jp-ui-font-color1: white;\n",
              "                    --jp-layout-color2: #454545;\n",
              "                    background-color: #383838;\n",
              "                }\n",
              "\n",
              "                .geemap-dark .jupyter-button {\n",
              "                    --jp-layout-color3: #383838;\n",
              "                }\n",
              "\n",
              "                .geemap-colab {\n",
              "                    background-color: var(--colab-primary-surface-color, white);\n",
              "                }\n",
              "\n",
              "                .geemap-colab .jupyter-button {\n",
              "                    --jp-layout-color3: var(--colab-primary-surface-color, white);\n",
              "                }\n",
              "            </style>\n",
              "            "
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "                 time  mean_rate_mm_h  max_rate_mm_h\n",
              "0 2023-09-29 00:00:00        0.000000       0.000000\n",
              "1 2023-09-29 00:15:00        0.000000       0.000000\n",
              "2 2023-09-29 00:30:00        0.184895       1.922922\n",
              "3 2023-09-29 00:45:00        0.822499       8.080962\n",
              "4 2023-09-29 01:00:00        1.132574       6.208733"
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-20fc188f-cf56-4bb5-8f75-799b79b54c25\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>time</th>\n",
              "      <th>mean_rate_mm_h</th>\n",
              "      <th>max_rate_mm_h</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>2023-09-29 00:00:00</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>2023-09-29 00:15:00</td>\n",
              "      <td>0.000000</td>\n",
              "      <td>0.000000</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2023-09-29 00:30:00</td>\n",
              "      <td>0.184895</td>\n",
              "      <td>1.922922</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>2023-09-29 00:45:00</td>\n",
              "      <td>0.822499</td>\n",
              "      <td>8.080962</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>2023-09-29 01:00:00</td>\n",
              "      <td>1.132574</td>\n",
              "      <td>6.208733</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-20fc188f-cf56-4bb5-8f75-799b79b54c25')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-20fc188f-cf56-4bb5-8f75-799b79b54c25 button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-20fc188f-cf56-4bb5-8f75-799b79b54c25');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "summary": "{\n  \"name\": \"plt\",\n  \"rows\": 5,\n  \"fields\": [\n    {\n      \"column\": \"time\",\n      \"properties\": {\n        \"dtype\": \"date\",\n        \"min\": \"2023-09-29 00:00:00\",\n        \"max\": \"2023-09-29 01:00:00\",\n        \"num_unique_values\": 5,\n        \"samples\": [\n          \"2023-09-29 00:15:00\",\n          \"2023-09-29 01:00:00\",\n          \"2023-09-29 00:30:00\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"mean_rate_mm_h\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.5190188993101905,\n        \"min\": 0.0,\n        \"max\": 1.1325741793760764,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          0.18489454814698547,\n          1.1325741793760764,\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"max_rate_mm_h\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 3.707362604999129,\n        \"min\": 0.0,\n        \"max\": 8.080962114036083,\n        \"num_unique_values\": 4,\n        \"samples\": [\n          1.9229223253205419,\n          6.208732724189758,\n          0.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"
            }
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 1200x500 with 1 Axes>"
            ],
            "image/png": "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kc1mg91up+9abqbT6dCjRw/nbfqude2oLnCNPFsT8z08z7sMWjZ48GA2dOhQ5+2qqirnv/v06cPuuusuxhhzeQ6pj+d554wPtUfsMMacs5l9/fXXLDk52eU5RqOx5Trogy5dVxlzDGSclJTkHGhzzJgxTCKRsDFjxrC8vDxPdNPnXJrr7NmzWdeuXdm0adPYBx984PLYp556inXq1IlZrdZ6M/MRV5fmevPNN7PQ0FA2YsQIplQq2ebNm533LV++nMXFxbGMjAxPdNUn2e12ZrVa2f33388mTpzIqqqqmCAIziN7UlNT2YABA9iUKVNcnldRUeGJ7vqUv/76iy1YsMCljed5Fh8fz/78888Gn0O5Ns+//vUvduHCBcYYY6+++irTaDTM39+fbd261eVxlGvjfvvtN3bTTTexjz76iI0aNYplZ2czxhxH8y5ZsoT179/fZcDt2l/2ScN4nmcVFRVs9OjR7I477mArV65kzzzzDFOpVGz16tVs8+bNbMmSJaxXr17sxx9/dD6Pcm26vn37shtvvNF5m75rXRue5+m7lptQXcB9aEypZjh16hSmT5+O0aNH4+GHH8Zff/2FFStWICcnB5MnTwbg+LXEbrcDAIYOHQqTyQQANNDxFdTmevPNN+M///kPTpw44byP53kAjgp+3V+cn3zySdx1113O+4mruuvqv//9b2zatAmCIGDAgAFISEiASqXCAw88gOPHj+OTTz7Bzp078cgjjyAnJ8fTXfdqdXN95JFHsGPHDrz88ssICAjAmjVrXMYzAYB//etfUCgUMJlMNF7EFVy6bd29ezc2b96M33//Hf/+97/RtWtX9O3b12XbqlAoUFVV5eGee7/abaRUKoVcLsd9992HH374AR988AE4joNEIgHP82jbti2WLVuGb7/9FidPnnRub/V6vSe777XqfvYMHToUy5YtA3BxwGLAMU6MzWZz3t62bZtzPCTKtWGX+0y3Wq3YsWMHAMdYKFKpFCqVCkePHkVubq7zcZRrfZdmGhMTgzNnzuDNN98EYwzR0dEAAH9/f9x///04duwYjh8/7ny8Wq1u0f76irr7p3q9HkuWLIHFYsGuXbuwfv16vPvuu5gxYwZuvvlmPPLIIyguLnYZR4pybZjJZILBYEBlZaWz7YMPPsDJkycxdepUAPRd62rUzVUikaBNmzYAHEf71u6f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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "cell_1794214747356594513_7"
      },
      "source": [
        "## 24-Hour Accumulated Rainfall Aggregation & Storm Hyetograph\n",
        "\n",
        "Because PARDIG provides instantaneous precipitation rates in **m/h** at **15-minute intervals** ($\\Delta t = 0.25\\text{ h}$), computing the total accumulated rainfall depth over any time window requires:\n",
        "$$\\text{Frame Depth (mm)} = \\text{Rate (m/h)} \\times 0.25\\text{ h} \\times 1,000\\text{ mm/m} = \\text{Rate (m/h)} \\times 250.0$$\n",
        "\n",
        "In Earth Engine, mapping `image.multiply(250.0)` over the 96 frames of the 24-hour collection and computing `.sum()` produces a single composite `ee.Image` representing the 24-hour total accumulated rainfall in millimeters.\n",
        "\n",
        "Below, we:\n",
        "1. Aggregate the 96 15-minute frames into an Earth Engine 24-hour total accumulation image.\n",
        "2. Calculate the metropolitan spatial summary statistics (peak accumulation, spatial mean, and area-wide total).\n",
        "3. Visualize the storm's **hyetograph** (hourly rainfall volume) alongside the **cumulative rainfall mass curve** showing the rapid deluge during the event."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "height": 580,
          "base_uri": "https://localhost:8080/"
        },
        "id": "cell_1794214764549628859_8",
        "outputId": "fbf44d86-451e-42af-c0c1-1eac7652b44f"
      },
      "source": [
        "# Compute 24-hour accumulated rainfall depth image in Earth Engine\n",
        "# Since nyc_precip_col already converted rates to mm/h ('precipitation_mm_h'),\n",
        "# multiplying each 15-minute frame by 0.25 h yields interval rainfall depth in mm:\n",
        "daily_precip_24h_mm = (\n",
        "    nyc_precip_col\n",
        "    .map(lambda img: img.select(\"precipitation_mm_h\").multiply(0.25))\n",
        "    .sum()\n",
        "    .rename(\"accumulated_precip_mm\")\n",
        ")\n",
        "\n",
        "# Extract spatial summary statistics across the NYC bounding box\n",
        "stats_24h = daily_precip_24h_mm.reduceRegion(\n",
        "    reducer=ee.Reducer.mean()\n",
        "    .combine(ee.Reducer.max(), sharedInputs=True)\n",
        "    .combine(ee.Reducer.min(), sharedInputs=True),\n",
        "    geometry=ny_geom,\n",
        "    scale=10000,\n",
        "    maxPixels=1e9,\n",
        ").getInfo()\n",
        "\n",
        "mean_accum = stats_24h.get(\"accumulated_precip_mm_mean\", 0)\n",
        "max_accum = stats_24h.get(\"accumulated_precip_mm_max\", 0)\n",
        "min_accum = stats_24h.get(\"accumulated_precip_mm_min\", 0)\n",
        "\n",
        "print(\"=== NYC 24-Hour Precipitation Totals (Sep 29, 2023) ===\")\n",
        "print(f\"  Spatial Average Accumulation: {mean_accum:.1f} mm ({mean_accum / 25.4:.2f} inches)\")\n",
        "print(f\"  Peak Local Accumulation:      {max_accum:.1f} mm ({max_accum / 25.4:.2f} inches)\")\n",
        "print(f\"  Minimum Local Accumulation:   {min_accum:.1f} mm ({min_accum / 25.4:.2f} inches)\")\n",
        "\n",
        "# Derive interval depth and cumulative buildup from the 15-minute time series\n",
        "df_nyc_precip[\"depth_mm\"] = df_nyc_precip[\"mean_rate_mm_h\"] * 0.25\n",
        "df_nyc_precip[\"cum_depth_mm\"] = df_nyc_precip[\"depth_mm\"].cumsum()\n",
        "\n",
        "# Aggregate to hourly totals for hyetograph\n",
        "df_hourly = (\n",
        "    df_nyc_precip.set_index(\"time\")\n",
        "    .resample(\"1h\")[\"depth_mm\"]\n",
        "    .sum()\n",
        "    .reset_index()\n",
        ")\n",
        "df_hourly[\"hour_str\"] = df_hourly[\"time\"].dt.strftime(\"%H:00\")\n",
        "\n",
        "# Plot Hourly Hyetograph and Cumulative Mass Curve\n",
        "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))\n",
        "\n",
        "# 1. Hourly Hyetograph\n",
        "ax1.bar(\n",
        "    range(len(df_hourly)),\n",
        "    df_hourly[\"depth_mm\"],\n",
        "    color=\"royalblue\",\n",
        "    edgecolor=\"navy\",\n",
        "    width=0.75,\n",
        ")\n",
        "ax1.set_title(\"Hourly Rainfall Hyetograph — New York City (2023-09-29)\", fontsize=13)\n",
        "ax1.set_xlabel(\"Hour of Day (UTC)\", fontsize=11)\n",
        "ax1.set_ylabel(\"Hourly Rainfall Depth (mm)\", fontsize=11)\n",
        "ax1.set_xticks(range(0, len(df_hourly), 2))\n",
        "ax1.set_xticklabels(df_hourly[\"hour_str\"].iloc[::2], rotation=45, ha=\"right\")\n",
        "ax1.grid(True, linestyle=\"--\", alpha=0.6)\n",
        "\n",
        "# 2. Cumulative Mass Curve\n",
        "ax2.plot(\n",
        "    df_nyc_precip[\"time\"],\n",
        "    df_nyc_precip[\"cum_depth_mm\"],\n",
        "    color=\"darkblue\",\n",
        "    linewidth=2.5,\n",
        "    label=\"Spatial Mean Accumulation\",\n",
        ")\n",
        "ax2.fill_between(\n",
        "    df_nyc_precip[\"time\"],\n",
        "    df_nyc_precip[\"cum_depth_mm\"],\n",
        "    color=\"lightsteelblue\",\n",
        "    alpha=0.5,\n",
        ")\n",
        "ax2.set_title(\"Cumulative Rainfall Mass Curve — NYC (2023-09-29)\", fontsize=13)\n",
        "ax2.set_xlabel(\"Valid Time (UTC)\", fontsize=11)\n",
        "ax2.set_ylabel(\"Cumulative Depth (mm)\", fontsize=11)\n",
        "ax2.xaxis.set_major_formatter(mdates.DateFormatter(\"%H:%M\"))\n",
        "ax2.xaxis.set_major_locator(mdates.HourLocator(interval=2))\n",
        "ax2.tick_params(axis=\"x\", rotation=45)\n",
        "ax2.grid(True, linestyle=\"--\", alpha=0.6)\n",
        "ax2.legend(loc=\"upper left\", fontsize=11)\n",
        "\n",
        "plt.tight_layout()\n",
        "plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ],
            "text/html": [
              "\n",
              "            <style>\n",
              "                .geemap-dark {\n",
              "                    --jp-widgets-color: white;\n",
              "                    --jp-widgets-label-color: white;\n",
              "                    --jp-ui-font-color1: white;\n",
              "                    --jp-layout-color2: #454545;\n",
              "                    background-color: #383838;\n",
              "                }\n",
              "\n",
              "                .geemap-dark .jupyter-button {\n",
              "                    --jp-layout-color3: #383838;\n",
              "                }\n",
              "\n",
              "                .geemap-colab {\n",
              "                    background-color: var(--colab-primary-surface-color, white);\n",
              "                }\n",
              "\n",
              "                .geemap-colab .jupyter-button {\n",
              "                    --jp-layout-color3: var(--colab-primary-surface-color, white);\n",
              "                }\n",
              "            </style>\n",
              "            "
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "=== NYC 24-Hour Precipitation Totals (Sep 29, 2023) ===\n",
            "  Spatial Average Accumulation: 94.8 mm (3.73 inches)\n",
            "  Peak Local Accumulation:      216.3 mm (8.52 inches)\n",
            "  Minimum Local Accumulation:   39.6 mm (1.56 inches)\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 1400x500 with 2 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "cell_1794214916895478920_9"
      },
      "source": [
        "## Interactive Global & Regional Precipitation Map (`geemap`)\n",
        "\n",
        "This interactive map renders PARDIG Earth Engine raster layers over a dynamic cartographic base map:\n",
        "1. **24-Hour Accumulated Rainfall (mm):** Full 24-hour accumulation sum across the regional storm event (Sep 29, 2023), highlighting areas that received in excess of 100–200 mm of rain.\n",
        "2. **Instantaneous 15-Minute Rain Rate (mm/h):** A snapshot from the peak intensity period (12:00 UTC), masked at `rate >= 0.1 mm/h` so dry regions remain transparent.\n",
        "3. **NYC Bounding Box:** Vector boundary highlighting the metropolitan analysis domain.\n",
        "\n",
        "Use the layer selector control on the map to toggle between layers and adjust layer visibility."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "height": 621,
          "base_uri": "https://localhost:8080/",
          "referenced_widgets": [
            "fde6f67f04b044729fecb750b0948f19",
            "e789f98a5d5e4fabb1e8e6b70cc8da79",
            "0f8622e00d6d4d57b8eb0750df66a0fe",
            "27118e4810f7438bb39f68f980026c59",
            "357402c533564ed7b9ad4db576084c8a",
            "8387ac47d1314e8c850a345b1041eb18",
            "da1d9b8ab3d54b2eaf6941197f581440",
            "41a012fffda34eebb99ca4c175f0ee7f",
            "8ef5a411c6c34a84968c8c1fe8411405",
            "5a3bda70992e40ce8d5474c4a3442871",
            "9fc868f311ac468790021dfa3441e0ce",
            "aee28f9c998e4ef695f0a0c0074ebc88",
            "6c4aa18bb0eb47c1a48f845aa9fee312",
            "dd3204e61c694b8aa89823c99c016bff",
            "d4706360248f4339bb0b9c80afad591b",
            "98e9b183a9a04f7bbf1c5c8c57ef1d80",
            "b4891dc96859405189029c2f6a59976b",
            "0831c417bdec4825b43c1ef11be6d606",
            "4401aec07b4e4fdf9068bb2c95af3a57",
            "468f09b65c924d189bb0dcbdda172cdc",
            "ef0aae39006645c2a93e2e63ff2ef57c",
            "982da6ddceed4a71b8a5f86537dee4bb",
            "280353ad8b1c481ab07683e9944d3684",
            "894876befa8c4b03866dfaf3a921094a",
            "fd730fe29529462cb9283b683f8b8a45",
            "0fb26b9389474648b96630ee49ae8b76",
            "20c59c7bf470420fb6f51a8e302ed066",
            "f67fb79b98e34bd6975dde7ae714f4c2",
            "2326024fb88742c0ab616fb09d682fd3",
            "a9b02c6d53844f678c1e108f39c194c0",
            "97f9645792d94800b1e86e9ee5da0f5c",
            "e66f293801a34fd5b08b454a31f93f9c",
            "8963c54ad9954c04bc47ba70dc7604df",
            "fb7c857105874d9481b7963d226d7a25",
            "d7c0fc1a4c1a41f88d4ec84f651c2452"
          ]
        },
        "id": "cell_1794214930075392241_10",
        "outputId": "bc17eaf3-5340-4f6f-a812-c4b946996dbb"
      },
      "source": [
        "import geemap.core as geemap\n",
        "from ipyleaflet import basemaps\n",
        "\n",
        "# 1. 24-Hour total accumulation layer (converted to mm depth)\n",
        "daily_accum = (\n",
        "    pardig_nrt.filterDate(\"2023-09-29T00:00:00\", \"2023-09-30T00:00:00\")\n",
        "    .map(lambda img: img.select(\"precipitation\").multiply(250.0))\n",
        "    .sum()\n",
        ")\n",
        "# Mask dry pixels (< 1 mm) so basemap shows through\n",
        "daily_accum_masked = daily_accum.updateMask(daily_accum.gte(1.0))\n",
        "\n",
        "# 2. Peak-hour 15-minute precipitation rate snapshot (12:00 UTC, converted to mm/h)\n",
        "peak_snapshot = (\n",
        "    pardig_nrt.filterDate(\"2023-09-29T12:00:00\", \"2023-09-29T12:15:00\")\n",
        "    .first()\n",
        "    .select(\"precipitation\")\n",
        "    .multiply(1000.0)\n",
        ")\n",
        "# Mask dry pixels (< 0.1 mm/h)\n",
        "peak_snapshot_masked = peak_snapshot.updateMask(peak_snapshot.gte(0.1))\n",
        "\n",
        "# Visualization parameters\n",
        "vis_params_accum = {\n",
        "    \"min\": 5.0,\n",
        "    \"max\": 150.0,\n",
        "    \"palette\": [\n",
        "        \"#f7fbff\",\n",
        "        \"#c6dbef\",\n",
        "        \"#6baed6\",\n",
        "        \"#2171b5\",\n",
        "        \"#08306b\",\n",
        "        \"#fed976\",\n",
        "        \"#feb24c\",\n",
        "        \"#fd8d3c\",\n",
        "        \"#f03b20\",\n",
        "        \"#bd0026\",\n",
        "    ],\n",
        "}\n",
        "\n",
        "vis_params_rate = {\n",
        "    \"min\": 0.5,\n",
        "    \"max\": 30.0,\n",
        "    \"palette\": [\n",
        "        \"#e0f3f8\",\n",
        "        \"#abd9e9\",\n",
        "        \"#74add1\",\n",
        "        \"#4575b4\",\n",
        "        \"#313695\",\n",
        "        \"#fdae61\",\n",
        "        \"#f46d43\",\n",
        "        \"#d73027\",\n",
        "        \"#a50026\",\n",
        "    ],\n",
        "}\n",
        "\n",
        "# Create interactive geemap centered over the US East Coast / Mid-Atlantic\n",
        "m_ee = geemap.Map(basemap=basemaps.OpenStreetMap.DE, center=[40.7, -74.0], zoom=2)\n",
        "\n",
        "# Add layers to the map\n",
        "m_ee.add_layer(\n",
        "    daily_accum_masked,\n",
        "    vis_params_accum,\n",
        "    \"PARDIG 24h Rainfall Accumulation (mm)\",\n",
        "    True,\n",
        "    0.75,\n",
        ")\n",
        "m_ee.add_layer(\n",
        "    peak_snapshot_masked,\n",
        "    vis_params_rate,\n",
        "    \"PARDIG 15-min Rain Rate (mm/h) — 12:00 UTC\",\n",
        "    False,\n",
        "    0.75,\n",
        ")\n",
        "\n",
        "# Display interactive map\n",
        "m_ee"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ],
            "text/html": [
              "\n",
              "            <style>\n",
              "                .geemap-dark {\n",
              "                    --jp-widgets-color: white;\n",
              "                    --jp-widgets-label-color: white;\n",
              "                    --jp-ui-font-color1: white;\n",
              "                    --jp-layout-color2: #454545;\n",
              "                    background-color: #383838;\n",
              "                }\n",
              "\n",
              "                .geemap-dark .jupyter-button {\n",
              "                    --jp-layout-color3: #383838;\n",
              "                }\n",
              "\n",
              "                .geemap-colab {\n",
              "                    background-color: var(--colab-primary-surface-color, white);\n",
              "                }\n",
              "\n",
              "                .geemap-colab .jupyter-button {\n",
              "                    --jp-layout-color3: var(--colab-primary-surface-color, white);\n",
              "                }\n",
              "            </style>\n",
              "            "
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "Map(center=[40.7, -74.0], controls=(WidgetControl(options=['position', 'transparent_bg'], position='topright',…"
            ],
            "application/vnd.jupyter.widget-view+json": {
              "version_major": 2,
              "version_minor": 0,
              "model_id": "fde6f67f04b044729fecb750b0948f19"
            }
          },
          "metadata": {
            "application/vnd.jupyter.widget-view+json": {
              "colab": {
                "custom_widget_manager": {
                  "url": "https://ssl.gstatic.com/colaboratory-static/widgets/colab-cdn-widget-manager/2b70e893a8ba7c0f/manager.min.js"
                }
              }
            }
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [],
      "metadata": {
        "id": "Il7oAqO2sfXJ"
      },
      "execution_count": null,
      "outputs": []
    }
  ]
}