{"version":3,"file":"flex-split-layout.vue2.mjs","sources":["../../../../../../packages/components/flex-split-layout/src/flex-split-layout.vue"],"sourcesContent":["<template>\r\n  <div ref=\"dragLayoutRef\" :class=\"[bem.b()]\">\r\n    <!-- 左侧 -->\r\n    <div\r\n      ref=\"leftPanelRef\"\r\n      :class=\"[\r\n        bem.e('left-panel'),\r\n        showDragBtn ? bem.is('drag-btn') : '',\r\n        speed ? bem.is(speed) : '',\r\n      ]\"\r\n      :style=\"{\r\n        width: props.flex && !foldState ? 'auto' : `${leftWidth}px`,\r\n      }\"\r\n    >\r\n      <slot name=\"left-layout\"></slot>\r\n      <div\r\n        :class=\"[\r\n          drag || fold ? bem.e('divider') : '',\r\n          bem.is(drag && !(fold && foldState) ? 'drag' : 'undrag'),\r\n        ]\"\r\n        :style=\"{\r\n          backgroundColor:\r\n            leftWidth === 0 && !props.flex\r\n              ? 'transparent'\r\n              : dividerColor || 'var(--color-split)',\r\n        }\"\r\n        @mousedown.prevent=\"startDrag\"\r\n      >\r\n        <ll-icon\r\n          v-if=\"showDragBtn\"\r\n          :class=\"[bem.e('divider-icon')]\"\r\n          icon-name=\"icon-drag2\"\r\n          :size=\"8\"\r\n        />\r\n        <!-- 折叠按钮 -->\r\n\r\n        <div\r\n          v-if=\"fold\"\r\n          ref=\"foldBtnRef\"\r\n          :class=\"[bem.e('fold-btn'), bem.is(foldState ? 'fold' : 'unfold')]\"\r\n          @mousedown.stop\r\n          @click=\"handleFold(!foldState)\"\r\n        >\r\n          <ll-tooltip\r\n            :open=\"true\"\r\n            :tip=\"foldState ? '展开' : '收起'\"\r\n            placement=\"right\"\r\n            :arrow=\"false\"\r\n            :get-popup-container=\"() => foldBtnRef\"\r\n          >\r\n            <ll-icon\r\n              :icon-name=\"\r\n                foldState ? 'icon-solid-arrow-right' : 'icon-solid-arrow-left'\r\n              \"\r\n              :size=\"12\"\r\n            />\r\n          </ll-tooltip>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n    <!-- 右侧 -->\r\n    <div :class=\"bem.e('right-panel')\">\r\n      <slot name=\"right-layout\"></slot>\r\n    </div>\r\n  </div>\r\n</template>\r\n<script lang=\"ts\" setup>\r\nimport { createNamespace } from '@ll-plus/utils'\r\nimport { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'\r\nimport { flexSplitLayoutProps } from './flex-split-layout'\r\n\r\ndefineOptions({ name: 'LlFlexSplitLayout' })\r\n\r\nconst bem = createNamespace('flex-split-layout')\r\n\r\nconst props = defineProps(flexSplitLayoutProps)\r\nconst emits = defineEmits([\r\n  'update:leftCurrentWidth',\r\n  'update:foldState',\r\n  'handleFold',\r\n])\r\n\r\nconst leftWidth = ref(0) // 左侧实时宽度\r\nconst isDragging = ref(false) // 是否拖拽中\r\nconst startX = ref(0)\r\nconst startWidth = ref(0)\r\nconst dragLayoutRef = ref() // 整个容器的Ref\r\nconst leftPanelRef = ref() // 左侧拖拽区域Ref\r\n\r\nconst layoutWidth = ref(0) // 整个容器区域宽度\r\nconst foldBtnRef = ref()\r\n\r\n// 是否显示拖拽按钮\r\nconst showDragBtn = computed(() => {\r\n  return props.drag && props.isShowBtn && !(props.fold && foldState.value)\r\n})\r\n\r\n// 记录折叠前的宽度，用于展开时恢复\r\nconst preFoldWidth = ref(0)\r\n\r\n// 处理折叠状态 - 支持双向绑定或内部状态\r\nconst foldState = computed({\r\n  get: () => internalFoldState.value,\r\n  set: (value) => {\r\n    internalFoldState.value = value\r\n    emits('update:foldState', value)\r\n    emits('handleFold', value)\r\n  },\r\n})\r\n\r\n// 内部折叠状态，用于当没有双向绑定时\r\nconst internalFoldState = ref(props.foldState || false)\r\n\r\n// 初始化宽度\r\nconst initLayoutWidth = () => {\r\n  leftWidth.value =\r\n    props.leftCurrentWidth > 0\r\n      ? props.leftCurrentWidth\r\n      : props.leftDefaultWidth > 0\r\n        ? props.leftDefaultWidth\r\n        : 0\r\n\r\n  // 初始化时记录宽度\r\n  preFoldWidth.value = leftWidth.value\r\n}\r\n\r\n// 宽度布局维护函数\r\nconst constrainBoundaries = () => {\r\n  if (!dragLayoutRef.value) return\r\n\r\n  // 对参数进行非负处理\r\n  const leftMin = props.leftMinWidth\r\n  const leftMax = Math.max(0, props.leftMaxWidth)\r\n  const rightMin = Math.max(0, props.rightMinWidth)\r\n\r\n  // 获取实时容器宽度\r\n  layoutWidth.value = dragLayoutRef.value.clientWidth\r\n\r\n  // 边界1：总宽度不足时\r\n  if (layoutWidth.value < leftMin + rightMin) {\r\n    const safeWidth = Math.max(0, layoutWidth.value - rightMin)\r\n    leftWidth.value = Math.min(leftMax, safeWidth)\r\n    return\r\n  }\r\n\r\n  // 边界2：左侧过小\r\n  if (leftWidth.value < leftMin) {\r\n    leftWidth.value = leftMin\r\n  }\r\n\r\n  // 边界3：左侧过大\r\n  if (leftWidth.value > leftMax) {\r\n    leftWidth.value = leftMax\r\n  }\r\n\r\n  // 边界4：右侧被挤压\r\n  if (layoutWidth.value - leftWidth.value < rightMin) {\r\n    leftWidth.value = Math.max(0, layoutWidth.value - rightMin)\r\n  }\r\n\r\n  // 确保左侧宽度不为负\r\n  leftWidth.value = Math.max(0, leftWidth.value)\r\n}\r\n\r\n// 折叠/展开函数\r\nconst handleFold = (state?: boolean) => {\r\n  if (!props.fold) return // 如果未启用折叠功能，直接返回\r\n\r\n  const newState = state !== undefined ? state : !foldState.value\r\n  if (newState) {\r\n    // 折叠：记录当前宽度并设置为0\r\n    preFoldWidth.value = leftWidth.value\r\n    leftWidth.value = 0\r\n  } else {\r\n    // 展开：恢复到折叠前的宽度，如果没有记录则使用默认宽度\r\n    const targetWidth =\r\n      preFoldWidth.value > 0 ? preFoldWidth.value : props.leftDefaultWidth\r\n\r\n    leftWidth.value = targetWidth\r\n    // 确保宽度在合理范围内\r\n    constrainBoundaries()\r\n  }\r\n\r\n  foldState.value = newState\r\n}\r\n\r\n// 拖拽开始\r\nconst startDrag = (e: MouseEvent) => {\r\n  // 关闭拖拽 或者当前处于折叠状态则停止\r\n  if (!props.drag || (foldState.value && props.fold)) return\r\n\r\n  isDragging.value = true\r\n  startX.value = e.clientX\r\n  startWidth.value = leftPanelRef.value.offsetWidth\r\n\r\n  // 获取容器当前总宽度\r\n  layoutWidth.value = dragLayoutRef.value.clientWidth\r\n\r\n  // 约束边界\r\n  constrainBoundaries()\r\n\r\n  // 添加全局事件监听\r\n  window.addEventListener('mousemove', onDrag)\r\n  window.addEventListener('mouseup', stopDrag)\r\n}\r\n\r\n// 拖拽结束\r\nconst stopDrag = () => {\r\n  isDragging.value = false\r\n  emits('update:leftCurrentWidth', leftWidth.value) // 抛出当前宽度\r\n  preFoldWidth.value = leftWidth.value\r\n  removeListeners()\r\n}\r\n\r\n// 拖拽逻辑\r\nconst onDrag = (e: MouseEvent) => {\r\n  if (!isDragging.value || !leftPanelRef.value) return\r\n\r\n  // 实时获取容器宽度（解决视口宽度变化同时拖拽的问题）\r\n  const currentLayoutWidth = dragLayoutRef.value.clientWidth\r\n\r\n  // 对边界参数进行非负处理\r\n  const safeLeftMin = props.leftMinWidth\r\n  const safeLeftMax = Math.max(0, props.leftMaxWidth)\r\n  const safeRightMin = Math.max(0, props.rightMinWidth)\r\n\r\n  // 动态计算最大允许宽度（考虑当前容器尺寸）\r\n  const maxAllowedLeftWidth = Math.max(0, currentLayoutWidth - safeRightMin)\r\n\r\n  const deltaX = e.clientX - startX.value\r\n  let newWidth = startWidth.value + deltaX\r\n\r\n  // 双层限制逻辑\r\n  newWidth = Math.min(\r\n    Math.min(safeLeftMax, maxAllowedLeftWidth),\r\n    Math.max(safeLeftMin, newWidth),\r\n  )\r\n\r\n  // 确保最终值不为负\r\n  leftWidth.value = Math.max(0, newWidth)\r\n}\r\n\r\n// 添加窗口监听（响应式修正）\r\nconst handleResize = () => {\r\n  // 在窗口调整时调用边界约束\r\n  if (props.fold && foldState.value) return\r\n  constrainBoundaries()\r\n}\r\n\r\nwatch(\r\n  () => props.leftCurrentWidth,\r\n  (val) => {\r\n    if (!isDragging.value && !foldState.value) {\r\n      leftWidth.value = val < 0 ? 0 : val\r\n      preFoldWidth.value = leftWidth.value // 更新记录宽度\r\n    }\r\n  },\r\n)\r\n\r\nwatch(\r\n  () => leftWidth.value,\r\n  (val) => {\r\n    if (!isDragging.value) {\r\n      emits('update:leftCurrentWidth', val)\r\n    }\r\n  },\r\n)\r\n\r\nwatch(\r\n  () => props.foldState,\r\n  (newState) => {\r\n    if (newState !== foldState.value) {\r\n      handleFold(newState)\r\n    }\r\n  },\r\n)\r\n\r\n// 清理事件监听\r\nconst removeListeners = () => {\r\n  window.removeEventListener('mousemove', onDrag)\r\n  window.removeEventListener('mouseup', stopDrag)\r\n}\r\n\r\n// 组件挂载\r\nonMounted(() => {\r\n  window.addEventListener('resize', handleResize)\r\n  initLayoutWidth()\r\n\r\n  if (props.foldState) {\r\n    handleFold(props.foldState)\r\n    emits('update:leftCurrentWidth', leftWidth.value)\r\n  }\r\n})\r\n\r\n// 组件卸载时清理\r\nonBeforeUnmount(() => {\r\n  window.removeEventListener('resize', handleResize)\r\n  removeListeners()\r\n})\r\n\r\ndefineExpose({ handleFold })\r\n</script>\r\n"],"names":["_createElementBlock","_normalizeClass","_unref","_createCommentVNode","_createElementVNode","speed","_normalizeStyle","_renderSlot","drag","fold","dividerColor","_createBlock","_createVNode"],"mappings":";;;;;;;;;;;;;;;;AA0EA,IAAA,MAAM,GAAA,GAAM,gBAAgB,mBAAmB,CAAA;AAE/C,IAAA,MAAM,KAAA,GAAQ,OAAA;AACd,IAAA,MAAM,KAAA,GAAQ,MAAA;AAMd,IAAA,MAAM,SAAA,GAAY,IAAI,CAAC,CAAA;AACvB,IAAA,MAAM,UAAA,GAAa,IAAI,KAAK,CAAA;AAC5B,IAAA,MAAM,MAAA,GAAS,IAAI,CAAC,CAAA;AACpB,IAAA,MAAM,UAAA,GAAa,IAAI,CAAC,CAAA;AACxB,IAAA,MAAM,gBAAgB,GAAA,EAAI;AAC1B,IAAA,MAAM,eAAe,GAAA,EAAI;AAEzB,IAAA,MAAM,WAAA,GAAc,IAAI,CAAC,CAAA;AACzB,IAAA,MAAM,aAAa,GAAA,EAAI;AAGvB,IAAA,MAAM,WAAA,GAAc,SAAS,MAAM;AACjC,MAAA,OAAO,MAAM,IAAA,IAAQ,KAAA,CAAM,aAAa,EAAE,KAAA,CAAM,QAAQ,SAAA,CAAU,KAAA,CAAA;AAAA,IACpE,CAAC,CAAA;AAGD,IAAA,MAAM,YAAA,GAAe,IAAI,CAAC,CAAA;AAG1B,IAAA,MAAM,YAAY,QAAA,CAAS;AAAA,MACzB,GAAA,EAAK,MAAM,iBAAA,CAAkB,KAAA;AAAA,MAC7B,GAAA,EAAK,CAAC,KAAA,KAAU;AACd,QAAA,iBAAA,CAAkB,KAAA,GAAQ,KAAA;AAC1B,QAAA,KAAA,CAAM,oBAAoB,KAAK,CAAA;AAC/B,QAAA,KAAA,CAAM,cAAc,KAAK,CAAA;AAAA,MAC3B;AAAA,KACD,CAAA;AAGD,IAAA,MAAM,iBAAA,GAAoB,GAAA,CAAI,KAAA,CAAM,SAAA,IAAa,KAAK,CAAA;AAGtD,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,SAAA,CAAU,KAAA,GACR,KAAA,CAAM,gBAAA,GAAmB,CAAA,GACrB,KAAA,CAAM,mBACN,KAAA,CAAM,gBAAA,GAAmB,CAAA,GACvB,KAAA,CAAM,gBAAA,GACN,CAAA;AAGR,MAAA,YAAA,CAAa,QAAQ,SAAA,CAAU,KAAA;AAAA,IACjC,CAAA;AAGA,IAAA,MAAM,sBAAsB,MAAM;AAChC,MAAA,IAAI,CAAC,cAAc,KAAA,EAAO;AAG1B,MAAA,MAAM,UAAU,KAAA,CAAM,YAAA;AACtB,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAM,YAAY,CAAA;AAC9C,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAM,aAAa,CAAA;AAGhD,MAAA,WAAA,CAAY,KAAA,GAAQ,cAAc,KAAA,CAAM,WAAA;AAGxC,MAAA,IAAI,WAAA,CAAY,KAAA,GAAQ,OAAA,GAAU,QAAA,EAAU;AAC1C,QAAA,MAAM,YAAY,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,WAAA,CAAY,QAAQ,QAAQ,CAAA;AAC1D,QAAA,SAAA,CAAU,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,OAAA,EAAS,SAAS,CAAA;AAC7C,QAAA;AAAA,MACF;AAGA,MAAA,IAAI,SAAA,CAAU,QAAQ,OAAA,EAAS;AAC7B,QAAA,SAAA,CAAU,KAAA,GAAQ,OAAA;AAAA,MACpB;AAGA,MAAA,IAAI,SAAA,CAAU,QAAQ,OAAA,EAAS;AAC7B,QAAA,SAAA,CAAU,KAAA,GAAQ,OAAA;AAAA,MACpB;AAGA,MAAA,IAAI,WAAA,CAAY,KAAA,GAAQ,SAAA,CAAU,KAAA,GAAQ,QAAA,EAAU;AAClD,QAAA,SAAA,CAAU,QAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,WAAA,CAAY,QAAQ,QAAQ,CAAA;AAAA,MAC5D;AAGA,MAAA,SAAA,CAAU,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,UAAU,KAAK,CAAA;AAAA,IAC/C,CAAA;AAGA,IAAA,MAAM,UAAA,GAAa,CAAC,KAAA,KAAoB;AACtC,MAAA,IAAI,CAAC,MAAM,IAAA,EAAM;AAEjB,MAAA,MAAM,QAAA,GAAW,KAAA,KAAU,KAAA,CAAA,GAAY,KAAA,GAAQ,CAAC,SAAA,CAAU,KAAA;AAC1D,MAAA,IAAI,QAAA,EAAU;AAEZ,QAAA,YAAA,CAAa,QAAQ,SAAA,CAAU,KAAA;AAC/B,QAAA,SAAA,CAAU,KAAA,GAAQ,CAAA;AAAA,MACpB,CAAA,MAAO;AAEL,QAAA,MAAM,cACJ,YAAA,CAAa,KAAA,GAAQ,CAAA,GAAI,YAAA,CAAa,QAAQ,KAAA,CAAM,gBAAA;AAEtD,QAAA,SAAA,CAAU,KAAA,GAAQ,WAAA;AAElB,QAAA,mBAAA,EAAoB;AAAA,MACtB;AAEA,MAAA,SAAA,CAAU,KAAA,GAAQ,QAAA;AAAA,IACpB,CAAA;AAGA,IAAA,MAAM,SAAA,GAAY,CAAC,CAAA,KAAkB;AAEnC,MAAA,IAAI,CAAC,KAAA,CAAM,IAAA,IAAS,SAAA,CAAU,KAAA,IAAS,MAAM,IAAA,EAAO;AAEpD,MAAA,UAAA,CAAW,KAAA,GAAQ,IAAA;AACnB,MAAA,MAAA,CAAO,QAAQ,CAAA,CAAE,OAAA;AACjB,MAAA,UAAA,CAAW,KAAA,GAAQ,aAAa,KAAA,CAAM,WAAA;AAGtC,MAAA,WAAA,CAAY,KAAA,GAAQ,cAAc,KAAA,CAAM,WAAA;AAGxC,MAAA,mBAAA,EAAoB;AAGpB,MAAA,MAAA,CAAO,gBAAA,CAAiB,aAAa,MAAM,CAAA;AAC3C,MAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,QAAQ,CAAA;AAAA,IAC7C,CAAA;AAGA,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,UAAA,CAAW,KAAA,GAAQ,KAAA;AACnB,MAAA,KAAA,CAAM,yBAAA,EAA2B,UAAU,KAAK,CAAA;AAChD,MAAA,YAAA,CAAa,QAAQ,SAAA,CAAU,KAAA;AAC/B,MAAA,eAAA,EAAgB;AAAA,IAClB,CAAA;AAGA,IAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAAkB;AAChC,MAAA,IAAI,CAAC,UAAA,CAAW,KAAA,IAAS,CAAC,aAAa,KAAA,EAAO;AAG9C,MAAA,MAAM,kBAAA,GAAqB,cAAc,KAAA,CAAM,WAAA;AAG/C,MAAA,MAAM,cAAc,KAAA,CAAM,YAAA;AAC1B,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAM,YAAY,CAAA;AAClD,MAAA,MAAM,YAAA,GAAe,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAM,aAAa,CAAA;AAGpD,MAAA,MAAM,mBAAA,GAAsB,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,qBAAqB,YAAY,CAAA;AAEzE,MAAA,MAAM,MAAA,GAAS,CAAA,CAAE,OAAA,GAAU,MAAA,CAAO,KAAA;AAClC,MAAA,IAAI,QAAA,GAAW,WAAW,KAAA,GAAQ,MAAA;AAGlC,MAAA,QAAA,GAAW,IAAA,CAAK,GAAA;AAAA,QACd,IAAA,CAAK,GAAA,CAAI,WAAA,EAAa,mBAAmB,CAAA;AAAA,QACzC,IAAA,CAAK,GAAA,CAAI,WAAA,EAAa,QAAQ;AAAA,OAChC;AAGA,MAAA,SAAA,CAAU,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,QAAQ,CAAA;AAAA,IACxC,CAAA;AAGA,IAAA,MAAM,eAAe,MAAM;AAEzB,MAAA,IAAI,KAAA,CAAM,IAAA,IAAQ,SAAA,CAAU,KAAA,EAAO;AACnC,MAAA,mBAAA,EAAoB;AAAA,IACtB,CAAA;AAEA,IAAA,KAAA;AAAA,MACE,MAAM,KAAA,CAAM,gBAAA;AAAA,MACZ,CAAC,GAAA,KAAQ;AACP,QAAA,IAAI,CAAC,UAAA,CAAW,KAAA,IAAS,CAAC,UAAU,KAAA,EAAO;AACzC,UAAA,SAAA,CAAU,KAAA,GAAQ,GAAA,GAAM,CAAA,GAAI,CAAA,GAAI,GAAA;AAChC,UAAA,YAAA,CAAa,QAAQ,SAAA,CAAU,KAAA;AAAA,QACjC;AAAA,MACF;AAAA,KACF;AAEA,IAAA,KAAA;AAAA,MACE,MAAM,SAAA,CAAU,KAAA;AAAA,MAChB,CAAC,GAAA,KAAQ;AACP,QAAA,IAAI,CAAC,WAAW,KAAA,EAAO;AACrB,UAAA,KAAA,CAAM,2BAA2B,GAAG,CAAA;AAAA,QACtC;AAAA,MACF;AAAA,KACF;AAEA,IAAA,KAAA;AAAA,MACE,MAAM,KAAA,CAAM,SAAA;AAAA,MACZ,CAAC,QAAA,KAAa;AACZ,QAAA,IAAI,QAAA,KAAa,UAAU,KAAA,EAAO;AAChC,UAAA,UAAA,CAAW,QAAQ,CAAA;AAAA,QACrB;AAAA,MACF;AAAA,KACF;AAGA,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,MAAM,CAAA;AAC9C,MAAA,MAAA,CAAO,mBAAA,CAAoB,WAAW,QAAQ,CAAA;AAAA,IAChD,CAAA;AAGA,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,MAAA,CAAO,gBAAA,CAAiB,UAAU,YAAY,CAAA;AAC9C,MAAA,eAAA,EAAgB;AAEhB,MAAA,IAAI,MAAM,SAAA,EAAW;AACnB,QAAA,UAAA,CAAW,MAAM,SAAS,CAAA;AAC1B,QAAA,KAAA,CAAM,yBAAA,EAA2B,UAAU,KAAK,CAAA;AAAA,MAClD;AAAA,IACF,CAAC,CAAA;AAGD,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAA,MAAA,CAAO,mBAAA,CAAoB,UAAU,YAAY,CAAA;AACjD,MAAA,eAAA,EAAgB;AAAA,IAClB,CAAC,CAAA;AAED,IAAA,QAAA,CAAa,EAAE,YAAY,CAAA;;;;0BA5SzBA,kBAAA;AAAA,QAgEM,KAAA;AAAA,QAAA;AAAA,mBAhEG,eAAA;AAAA,UAAJ,GAAA,EAAI,aAAA;AAAA,UAAiB,KAAA,EAAKC,eAAA,CAAGC,KAAA,CAAA,GAAA,CAAA,CAAI,CAAA,EAAC,CAAA;AAAA;;UACrCC,mBAAA,gBAAA,CAAA;AAAA,UACAC,kBAAA;AAAA,YAwDM,KAAA;AAAA,YAAA;AAAA,uBAvDA,cAAA;AAAA,cAAJ,GAAA,EAAI,YAAA;AAAA,cACH,OAAKH,cAAA,CAAA;AAAA,gBAAaC,KAAA,CAAA,GAAA,CAAA,CAAI,CAAA,CAAC,YAAA,CAAA;AAAA,gBAAyB,YAAA,KAAA,GAAcA,KAAA,CAAA,GAAA,CAAA,CAAI,EAAA,CAAE,UAAA,CAAA,GAAA,EAAA;AAAA,gBAA4BG,IAAAA,CAAAA,QAAQH,KAAA,CAAA,GAAA,EAAI,EAAA,CAAGG,IAAAA,CAAAA,KAAK,CAAA,GAAA;AAAA;cAKpH,OAAKC,cAAA,CAAA;AAAA,gBAAoB,KAAA,EAAA,MAAM,IAAA,IAAI,CAAK,UAAA,KAAA,eAAwB,SAAA,CAAA,KAAS,CAAA,EAAA;AAAA;;;cAI1EC,UAAA,CAAgC,IAAA,CAAA,MAAA,EAAA,aAAA,CAAA;AAAA,cAChCH,kBAAA;AAAA,gBA2CM,KAAA;AAAA,gBAAA;AAAA,kBA1CH,OAAKH,cAAA,CAAA;AAAA,oBAAeO,IAAAA,CAAAA,QAAQC,IAAAA,CAAAA,IAAAA,GAAOP,MAAA,GAAA,CAAA,CAAI,CAAA,CAAC,SAAA,CAAA,GAAA,EAAA;AAAA,oBAA6BA,KAAA,CAAA,GAAA,CAAA,CAAI,EAAA,CAAGM,IAAAA,SAAI,EAAMC,IAAAA,CAAAA,IAAAA,IAAQ,SAAA,CAAA,KAAA,CAAA,GAAS,MAAA,GAAA,QAAA;AAAA;kBAIvG,OAAKH,cAAA,CAAA;AAAA,qCAA6C,UAAA,KAAA,KAAS,CAAA,IAAA,CAAW,KAAA,CAAM,IAAA,mBAAqDI,IAAAA,CAAAA,YAAAA,IAAY;AAAA;kBAM7I,WAAA,gBAAmB,SAAA,EAAS,CAAA,SAAA,CAAA;AAAA;;kBAGrB,WAAA,CAAA,KAAA,iBADRC,YAKE,kBAAA,EAAA;AAAA;oBAHC,KAAA,EAAKV,eAAA,CAAGC,KAAA,CAAA,GAAA,CAAA,CAAI,CAAA,CAAC,cAAA,CAAA,CAAA,CAAA;AAAA,oBACd,WAAA,EAAU,YAAA;AAAA,oBACT,IAAA,EAAM;AAAA;kBAETC,mBAAA,4BAAA,CAAA;AAAA,kBAGQM,IAAAA,CAAAA,IAAAA,iBADRT,kBAAA;AAAA,oBAqBM,KAAA;AAAA,oBAAA;AAAA;+BAnBA,YAAA;AAAA,sBAAJ,GAAA,EAAI,UAAA;AAAA,sBACH,OAAKC,cAAA,CAAA,CAAGC,WAAI,eAAeA,KAAA,CAAA,GAAA,EAAI,EAAA,CAAG,SAAA,CAAA,QAAS,MAAA,GAAA,QAAA,CAAA,CAAA,CAAA;AAAA,sBAC3C,WAAA,0CAAD,MAAA;AAAA,sBAAA,CAAA,EAAe,CAAA,MAAA,CAAA,CAAA,CAAA;AAAA,sBACd,OAAA,EAAK,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAE,UAAA,CAAU,CAAE,SAAA,CAAA,KAAS,CAAA;AAAA;;sBAE7BU,YAaa,qBAAA,EAAA;AAAA,wBAZV,IAAA,EAAM,IAAA;AAAA,wBACN,GAAA,EAAK,SAAA,CAAA,KAAA,GAAS,cAAA,GAAA,cAAA;AAAA,wBACf,SAAA,EAAU,OAAA;AAAA,wBACT,KAAA,EAAO,KAAA;AAAA,wBACP,qBAAA,QAA2B,UAAA,CAAA;AAAA;yCAE5B,MAKE;AAAA,0BALFA,YAKE,kBAAA,EAAA;AAAA,4BAJC,WAAA,EAA6B,SAAA,CAAA,KAAA,GAAS,wBAAA,GAAA,uBAAA;AAAA,4BAGtC,IAAA,EAAM;AAAA;;;;;;;;;;;;;;;;;UAOjBT,mBAAA,gBAAA,CAAA;AAAA,UACAC,kBAAA;AAAA,YAEM,KAAA;AAAA,YAAA;AAAA,cAFA,OAAKH,cAAA,CAAEC,KAAA,CAAA,GAAA,CAAA,CAAI,CAAA,CAAC,aAAA,CAAA;AAAA;;cAChBK,UAAA,CAAiC,IAAA,CAAA,MAAA,EAAA,cAAA;AAAA;;;;;;;;;;;;;;"}