{"version":3,"file":"position-engine.mjs","sources":["../../../../../packages/utils/private/position-engine.ts"],"sourcesContent":["import { getScrollbarWidth } from './scroll'\nimport { platform } from '../platform'\nimport { CSSProperties } from 'vue'\n\nlet vpLeft, vpTop\n\nexport function validatePosition(pos) {\n  const parts = pos.split(' ')\n  if (parts.length !== 2) {\n    return false\n  }\n  if (['top', 'center', 'bottom'].includes(parts[0]) !== true) {\n    console.error('Anchor/Self position must start with one of top/center/bottom')\n    return false\n  }\n  if (['left', 'middle', 'right', 'start', 'end'].includes(parts[1]) !== true) {\n    console.error('Anchor/Self position must end with one of left/middle/right/start/end')\n    return false\n  }\n  return true\n}\n\nexport function validateOffset(val) {\n  if (!val) {\n    return true\n  }\n  if (val.length !== 2) {\n    return false\n  }\n  if (typeof val[0] !== 'number' || typeof val[1] !== 'number') {\n    return false\n  }\n  return true\n}\n\nconst horizontalPos = {\n  'start#ltr': 'left',\n  'start#rtl': 'right',\n  'end#ltr': 'right',\n  'end#rtl': 'left'\n}\n;['left', 'middle', 'right'].forEach(pos => {\n  horizontalPos[`${pos}#ltr`] = pos\n  horizontalPos[`${pos}#rtl`] = pos\n})\n\nexport function parsePosition(pos, rtl) {\n  const parts = pos.split(' ')\n  return {\n    vertical: parts[0],\n    horizontal: horizontalPos[`${parts[1]}#${rtl === true ? 'rtl' : 'ltr'}`]\n  }\n}\n\nexport function validateCover(val) {\n  if (val === true || val === false) {\n    return true\n  }\n  return validatePosition(val)\n}\n\nexport function getAnchorProps(el, offset) {\n  let { top, left, right, bottom, width, height } = el.getBoundingClientRect()\n\n  if (offset !== void 0) {\n    top -= offset[1]\n    left -= offset[0]\n    bottom += offset[1]\n    right += offset[0]\n\n    width += offset[0]\n    height += offset[1]\n  }\n\n  return {\n    top,\n    left,\n    right,\n    bottom,\n    width,\n    height,\n    middle: left + (right - left) / 2,\n    center: top + (bottom - top) / 2\n  }\n}\n\nexport function getTargetProps(el) {\n  return {\n    top: 0,\n    center: el.offsetHeight / 2,\n    bottom: el.offsetHeight,\n    left: 0,\n    middle: el.offsetWidth / 2,\n    right: el.offsetWidth\n  }\n}\n\n// cfg: { el, anchorEl, anchorOrigin, selfOrigin, offset, absoluteOffset, cover, fit, maxHeight, maxWidth }\nexport function setPosition(cfg) {\n  if (platform().isIOS === true && window.visualViewport !== void 0) {\n    // uses the vc-position-engine CSS class\n\n    const el = document.body.style\n    const { offsetLeft: left, offsetTop: top } = window.visualViewport\n\n    if (left !== vpLeft) {\n      el.setProperty('--vc-pe-left', left + 'px')\n      vpLeft = left\n    }\n    if (top !== vpTop) {\n      el.setProperty('--vc-pe-top', top + 'px')\n      vpTop = top\n    }\n  }\n\n  let anchorProps: any = {}\n\n  // scroll position might change\n  // if max-height/-width changes, so we\n  // need to restore it after we calculate\n  // the new positioning\n  const { scrollLeft, scrollTop } = cfg.el\n\n  if (cfg.absoluteOffset === void 0) {\n    anchorProps = getAnchorProps(cfg.anchorEl, cfg.cover === true ? [0, 0] : cfg.offset)\n  } else {\n    const { top: anchorTop, left: anchorLeft } = cfg.anchorEl.getBoundingClientRect(),\n      top = anchorTop + cfg.absoluteOffset.top,\n      left = anchorLeft + cfg.absoluteOffset.left\n\n    anchorProps = { top, left, width: 1, height: 1, right: left + 1, center: top, middle: left, bottom: top + 1 }\n  }\n\n  let elStyle: CSSProperties = {\n    maxHeight: cfg.maxHeight,\n    maxWidth: cfg.maxWidth,\n    visibility: 'visible'\n  }\n\n  if (cfg.fit === true || cfg.cover === true) {\n    elStyle.minWidth = anchorProps.width + 'px'\n    if (cfg.cover === true) {\n      elStyle.minHeight = anchorProps.height + 'px'\n    }\n  }\n\n  Object.assign(cfg.el.style, elStyle)\n\n  const targetProps = getTargetProps(cfg.el),\n    props: any = {\n      top: anchorProps[cfg.anchorOrigin.vertical] - targetProps[cfg.selfOrigin.vertical],\n      left: anchorProps[cfg.anchorOrigin.horizontal] - targetProps[cfg.selfOrigin.horizontal]\n    }\n\n  applyBoundaries(props, anchorProps, targetProps, cfg.anchorOrigin, cfg.selfOrigin)\n\n  elStyle = {\n    top: props.top + 'px',\n    left: props.left + 'px'\n  }\n\n  if (props.maxHeight !== void 0) {\n    elStyle.maxHeight = props.maxHeight + 'px'\n\n    if (anchorProps.height > props.maxHeight) {\n      elStyle.minHeight = elStyle.maxHeight\n    }\n  }\n  if (props.maxWidth !== void 0) {\n    elStyle.maxWidth = props.maxWidth + 'px'\n\n    if (anchorProps.width > props.maxWidth) {\n      elStyle.minWidth = elStyle.maxWidth\n    }\n  }\n\n  Object.assign(cfg.el.style, elStyle)\n\n  // restore scroll position\n  if (cfg.el.scrollTop !== scrollTop) {\n    cfg.el.scrollTop = scrollTop\n  }\n  if (cfg.el.scrollLeft !== scrollLeft) {\n    cfg.el.scrollLeft = scrollLeft\n  }\n}\n\nfunction applyBoundaries(props, anchorProps, targetProps, anchorOrigin, selfOrigin) {\n  const currentHeight = targetProps.bottom,\n    currentWidth = targetProps.right,\n    margin = getScrollbarWidth(),\n    innerHeight = window.innerHeight - margin,\n    innerWidth = document.body.clientWidth\n\n  if (props.top < 0 || props.top + currentHeight > innerHeight) {\n    if (selfOrigin.vertical === 'center') {\n      props.top = anchorProps[anchorOrigin.vertical] > innerHeight / 2 ? Math.max(0, innerHeight - currentHeight) : 0\n      props.maxHeight = Math.min(currentHeight, innerHeight)\n    } else if (anchorProps[anchorOrigin.vertical] > innerHeight / 2) {\n      const anchorY = Math.min(\n        innerHeight,\n        anchorOrigin.vertical === 'center' ? anchorProps.center : anchorOrigin.vertical === selfOrigin.vertical ? anchorProps.bottom : anchorProps.top\n      )\n      props.maxHeight = Math.min(currentHeight, anchorY)\n      props.top = Math.max(0, anchorY - currentHeight)\n    } else {\n      props.top = Math.max(\n        0,\n        anchorOrigin.vertical === 'center' ? anchorProps.center : anchorOrigin.vertical === selfOrigin.vertical ? anchorProps.top : anchorProps.bottom\n      )\n      props.maxHeight = Math.min(currentHeight, innerHeight - props.top)\n    }\n  }\n\n  if (props.left < 0 || props.left + currentWidth > innerWidth) {\n    props.maxWidth = Math.min(currentWidth, innerWidth)\n    if (selfOrigin.horizontal === 'middle') {\n      props.left = anchorProps[anchorOrigin.horizontal] > innerWidth / 2 ? Math.max(0, innerWidth - currentWidth) : 0\n    } else if (anchorProps[anchorOrigin.horizontal] > innerWidth / 2) {\n      const anchorX = Math.min(\n        innerWidth,\n        anchorOrigin.horizontal === 'middle'\n          ? anchorProps.middle\n          : anchorOrigin.horizontal === selfOrigin.horizontal\n          ? anchorProps.right\n          : anchorProps.left\n      )\n      props.maxWidth = Math.min(currentWidth, anchorX)\n      props.left = Math.max(0, anchorX - props.maxWidth)\n    } else {\n      props.left = Math.max(\n        0,\n        anchorOrigin.horizontal === 'middle'\n          ? anchorProps.middle\n          : anchorOrigin.horizontal === selfOrigin.horizontal\n          ? anchorProps.left\n          : anchorProps.right\n      )\n      props.maxWidth = Math.min(currentWidth, innerWidth - props.left)\n    }\n  }\n}\n"],"names":[],"mappings":";;;;AAIA,IAAI,MAAQ,EAAA,KAAA,CAAA;AAEL,SAAS,iBAAiB,GAAK,EAAA;AACpC,EAAM,MAAA,KAAA,GAAQ,GAAI,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AAC3B,EAAI,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AACtB,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AACA,EAAI,IAAA,CAAC,KAAO,EAAA,QAAA,EAAU,QAAQ,CAAA,CAAE,SAAS,KAAM,CAAA,CAAC,CAAC,CAAA,KAAM,IAAM,EAAA;AAC3D,IAAA,OAAA,CAAQ,MAAM,+DAA+D,CAAA,CAAA;AAC7E,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AACA,EAAA,IAAI,CAAC,MAAA,EAAQ,QAAU,EAAA,OAAA,EAAS,OAAS,EAAA,KAAK,CAAE,CAAA,QAAA,CAAS,KAAM,CAAA,CAAC,CAAC,CAAA,KAAM,IAAM,EAAA;AAC3E,IAAA,OAAA,CAAQ,MAAM,uEAAuE,CAAA,CAAA;AACrF,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEO,SAAS,eAAe,GAAK,EAAA;AAClC,EAAA,IAAI,CAAC,GAAK,EAAA;AACR,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACA,EAAI,IAAA,GAAA,CAAI,WAAW,CAAG,EAAA;AACpB,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AACA,EAAI,IAAA,OAAO,IAAI,CAAC,CAAA,KAAM,YAAY,OAAO,GAAA,CAAI,CAAC,CAAA,KAAM,QAAU,EAAA;AAC5D,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEA,MAAM,aAAgB,GAAA;AAAA,EACpB,WAAa,EAAA,MAAA;AAAA,EACb,WAAa,EAAA,OAAA;AAAA,EACb,SAAW,EAAA,OAAA;AAAA,EACX,SAAW,EAAA,MAAA;AACb,CAAA,CAAA;AACC,CAAC,MAAQ,EAAA,QAAA,EAAU,OAAO,CAAA,CAAE,QAAQ,CAAO,GAAA,KAAA;AAC1C,EAAc,aAAA,CAAA,CAAA,EAAG,GAAG,CAAA,IAAA,CAAM,CAAI,GAAA,GAAA,CAAA;AAC9B,EAAc,aAAA,CAAA,CAAA,EAAG,GAAG,CAAA,IAAA,CAAM,CAAI,GAAA,GAAA,CAAA;AAChC,CAAC,CAAA,CAAA;AAEe,SAAA,aAAA,CAAc,KAAK,GAAK,EAAA;AACtC,EAAM,MAAA,KAAA,GAAQ,GAAI,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AAC3B,EAAO,OAAA;AAAA,IACL,QAAA,EAAU,MAAM,CAAC,CAAA;AAAA,IACjB,UAAA,EAAY,aAAc,CAAA,CAAA,EAAG,KAAM,CAAA,CAAC,CAAC,CAAA,CAAA,EAAI,GAAQ,KAAA,IAAA,GAAO,KAAQ,GAAA,KAAK,CAAE,CAAA,CAAA;AAAA,GACzE,CAAA;AACF,CAAA;AAEO,SAAS,cAAc,GAAK,EAAA;AACjC,EAAI,IAAA,GAAA,KAAQ,IAAQ,IAAA,GAAA,KAAQ,KAAO,EAAA;AACjC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACA,EAAA,OAAO,iBAAiB,GAAG,CAAA,CAAA;AAC7B,CAAA;AAEgB,SAAA,cAAA,CAAe,IAAI,MAAQ,EAAA;AACzC,EAAI,IAAA,EAAE,KAAK,IAAM,EAAA,KAAA,EAAO,QAAQ,KAAO,EAAA,MAAA,EAAW,GAAA,EAAA,CAAG,qBAAsB,EAAA,CAAA;AAE3E,EAAA,IAAI,WAAW,KAAQ,CAAA,EAAA;AACrB,IAAA,GAAA,IAAO,OAAO,CAAC,CAAA,CAAA;AACf,IAAA,IAAA,IAAQ,OAAO,CAAC,CAAA,CAAA;AAChB,IAAA,MAAA,IAAU,OAAO,CAAC,CAAA,CAAA;AAClB,IAAA,KAAA,IAAS,OAAO,CAAC,CAAA,CAAA;AAEjB,IAAA,KAAA,IAAS,OAAO,CAAC,CAAA,CAAA;AACjB,IAAA,MAAA,IAAU,OAAO,CAAC,CAAA,CAAA;AAAA,GACpB;AAEA,EAAO,OAAA;AAAA,IACL,GAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA,EAAQ,IAAQ,GAAA,CAAA,KAAA,GAAQ,IAAQ,IAAA,CAAA;AAAA,IAChC,MAAA,EAAQ,GAAO,GAAA,CAAA,MAAA,GAAS,GAAO,IAAA,CAAA;AAAA,GACjC,CAAA;AACF,CAAA;AAEO,SAAS,eAAe,EAAI,EAAA;AACjC,EAAO,OAAA;AAAA,IACL,GAAK,EAAA,CAAA;AAAA,IACL,MAAA,EAAQ,GAAG,YAAe,GAAA,CAAA;AAAA,IAC1B,QAAQ,EAAG,CAAA,YAAA;AAAA,IACX,IAAM,EAAA,CAAA;AAAA,IACN,MAAA,EAAQ,GAAG,WAAc,GAAA,CAAA;AAAA,IACzB,OAAO,EAAG,CAAA,WAAA;AAAA,GACZ,CAAA;AACF,CAAA;AAGO,SAAS,YAAY,GAAK,EAAA;AAC/B,EAAA,IAAI,UAAW,CAAA,KAAA,KAAU,IAAQ,IAAA,MAAA,CAAO,mBAAmB,KAAQ,CAAA,EAAA;AAGjE,IAAM,MAAA,EAAA,GAAK,SAAS,IAAK,CAAA,KAAA,CAAA;AACzB,IAAA,MAAM,EAAE,UAAY,EAAA,IAAA,EAAM,SAAW,EAAA,GAAA,KAAQ,MAAO,CAAA,cAAA,CAAA;AAEpD,IAAA,IAAI,SAAS,MAAQ,EAAA;AACnB,MAAG,EAAA,CAAA,WAAA,CAAY,cAAgB,EAAA,IAAA,GAAO,IAAI,CAAA,CAAA;AAC1C,MAAS,MAAA,GAAA,IAAA,CAAA;AAAA,KACX;AACA,IAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,MAAG,EAAA,CAAA,WAAA,CAAY,aAAe,EAAA,GAAA,GAAM,IAAI,CAAA,CAAA;AACxC,MAAQ,KAAA,GAAA,GAAA,CAAA;AAAA,KACV;AAAA,GACF;AAEA,EAAA,IAAI,cAAmB,EAAC,CAAA;AAMxB,EAAA,MAAM,EAAE,UAAA,EAAY,SAAU,EAAA,GAAI,GAAI,CAAA,EAAA,CAAA;AAEtC,EAAI,IAAA,GAAA,CAAI,mBAAmB,KAAQ,CAAA,EAAA;AACjC,IAAc,WAAA,GAAA,cAAA,CAAe,GAAI,CAAA,QAAA,EAAU,GAAI,CAAA,KAAA,KAAU,IAAO,GAAA,CAAC,CAAG,EAAA,CAAC,CAAI,GAAA,GAAA,CAAI,MAAM,CAAA,CAAA;AAAA,GAC9E,MAAA;AACL,IAAA,MAAM,EAAE,GAAK,EAAA,SAAA,EAAW,MAAM,UAAW,EAAA,GAAI,IAAI,QAAS,CAAA,qBAAA,EACxD,EAAA,GAAA,GAAM,YAAY,GAAI,CAAA,cAAA,CAAe,KACrC,IAAO,GAAA,UAAA,GAAa,IAAI,cAAe,CAAA,IAAA,CAAA;AAEzC,IAAA,WAAA,GAAc,EAAE,GAAK,EAAA,IAAA,EAAM,KAAO,EAAA,CAAA,EAAG,QAAQ,CAAG,EAAA,KAAA,EAAO,IAAO,GAAA,CAAA,EAAG,QAAQ,GAAK,EAAA,MAAA,EAAQ,IAAM,EAAA,MAAA,EAAQ,MAAM,CAAE,EAAA,CAAA;AAAA,GAC9G;AAEA,EAAA,IAAI,OAAyB,GAAA;AAAA,IAC3B,WAAW,GAAI,CAAA,SAAA;AAAA,IACf,UAAU,GAAI,CAAA,QAAA;AAAA,IACd,UAAY,EAAA,SAAA;AAAA,GACd,CAAA;AAEA,EAAA,IAAI,GAAI,CAAA,GAAA,KAAQ,IAAQ,IAAA,GAAA,CAAI,UAAU,IAAM,EAAA;AAC1C,IAAQ,OAAA,CAAA,QAAA,GAAW,YAAY,KAAQ,GAAA,IAAA,CAAA;AACvC,IAAI,IAAA,GAAA,CAAI,UAAU,IAAM,EAAA;AACtB,MAAQ,OAAA,CAAA,SAAA,GAAY,YAAY,MAAS,GAAA,IAAA,CAAA;AAAA,KAC3C;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,MAAO,CAAA,GAAA,CAAI,EAAG,CAAA,KAAA,EAAO,OAAO,CAAA,CAAA;AAEnC,EAAA,MAAM,WAAc,GAAA,cAAA,CAAe,GAAI,CAAA,EAAE,GACvC,KAAa,GAAA;AAAA,IACX,GAAA,EAAK,YAAY,GAAI,CAAA,YAAA,CAAa,QAAQ,CAAI,GAAA,WAAA,CAAY,GAAI,CAAA,UAAA,CAAW,QAAQ,CAAA;AAAA,IACjF,IAAA,EAAM,YAAY,GAAI,CAAA,YAAA,CAAa,UAAU,CAAI,GAAA,WAAA,CAAY,GAAI,CAAA,UAAA,CAAW,UAAU,CAAA;AAAA,GACxF,CAAA;AAEF,EAAA,eAAA,CAAgB,OAAO,WAAa,EAAA,WAAA,EAAa,GAAI,CAAA,YAAA,EAAc,IAAI,UAAU,CAAA,CAAA;AAEjF,EAAU,OAAA,GAAA;AAAA,IACR,GAAA,EAAK,MAAM,GAAM,GAAA,IAAA;AAAA,IACjB,IAAA,EAAM,MAAM,IAAO,GAAA,IAAA;AAAA,GACrB,CAAA;AAEA,EAAI,IAAA,KAAA,CAAM,cAAc,KAAQ,CAAA,EAAA;AAC9B,IAAQ,OAAA,CAAA,SAAA,GAAY,MAAM,SAAY,GAAA,IAAA,CAAA;AAEtC,IAAI,IAAA,WAAA,CAAY,MAAS,GAAA,KAAA,CAAM,SAAW,EAAA;AACxC,MAAA,OAAA,CAAQ,YAAY,OAAQ,CAAA,SAAA,CAAA;AAAA,KAC9B;AAAA,GACF;AACA,EAAI,IAAA,KAAA,CAAM,aAAa,KAAQ,CAAA,EAAA;AAC7B,IAAQ,OAAA,CAAA,QAAA,GAAW,MAAM,QAAW,GAAA,IAAA,CAAA;AAEpC,IAAI,IAAA,WAAA,CAAY,KAAQ,GAAA,KAAA,CAAM,QAAU,EAAA;AACtC,MAAA,OAAA,CAAQ,WAAW,OAAQ,CAAA,QAAA,CAAA;AAAA,KAC7B;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,MAAO,CAAA,GAAA,CAAI,EAAG,CAAA,KAAA,EAAO,OAAO,CAAA,CAAA;AAGnC,EAAI,IAAA,GAAA,CAAI,EAAG,CAAA,SAAA,KAAc,SAAW,EAAA;AAClC,IAAA,GAAA,CAAI,GAAG,SAAY,GAAA,SAAA,CAAA;AAAA,GACrB;AACA,EAAI,IAAA,GAAA,CAAI,EAAG,CAAA,UAAA,KAAe,UAAY,EAAA;AACpC,IAAA,GAAA,CAAI,GAAG,UAAa,GAAA,UAAA,CAAA;AAAA,GACtB;AACF,CAAA;AAEA,SAAS,eAAgB,CAAA,KAAA,EAAO,WAAa,EAAA,WAAA,EAAa,cAAc,UAAY,EAAA;AAClF,EAAA,MAAM,aAAgB,GAAA,WAAA,CAAY,MAChC,EAAA,YAAA,GAAe,YAAY,KAC3B,EAAA,MAAA,GAAS,iBAAkB,EAAA,EAC3B,cAAc,MAAO,CAAA,WAAA,GAAc,MACnC,EAAA,UAAA,GAAa,SAAS,IAAK,CAAA,WAAA,CAAA;AAE7B,EAAA,IAAI,MAAM,GAAM,GAAA,CAAA,IAAK,KAAM,CAAA,GAAA,GAAM,gBAAgB,WAAa,EAAA;AAC5D,IAAI,IAAA,UAAA,CAAW,aAAa,QAAU,EAAA;AACpC,MAAA,KAAA,CAAM,GAAM,GAAA,WAAA,CAAY,YAAa,CAAA,QAAQ,CAAI,GAAA,WAAA,GAAc,CAAI,GAAA,IAAA,CAAK,GAAI,CAAA,CAAA,EAAG,WAAc,GAAA,aAAa,CAAI,GAAA,CAAA,CAAA;AAC9G,MAAA,KAAA,CAAM,SAAY,GAAA,IAAA,CAAK,GAAI,CAAA,aAAA,EAAe,WAAW,CAAA,CAAA;AAAA,eAC5C,WAAY,CAAA,YAAA,CAAa,QAAQ,CAAA,GAAI,cAAc,CAAG,EAAA;AAC/D,MAAA,MAAM,UAAU,IAAK,CAAA,GAAA;AAAA,QACnB,WAAA;AAAA,QACA,YAAA,CAAa,QAAa,KAAA,QAAA,GAAW,WAAY,CAAA,MAAA,GAAS,YAAa,CAAA,QAAA,KAAa,UAAW,CAAA,QAAA,GAAW,WAAY,CAAA,MAAA,GAAS,WAAY,CAAA,GAAA;AAAA,OAC7I,CAAA;AACA,MAAA,KAAA,CAAM,SAAY,GAAA,IAAA,CAAK,GAAI,CAAA,aAAA,EAAe,OAAO,CAAA,CAAA;AACjD,MAAA,KAAA,CAAM,GAAM,GAAA,IAAA,CAAK,GAAI,CAAA,CAAA,EAAG,UAAU,aAAa,CAAA,CAAA;AAAA,KAC1C,MAAA;AACL,MAAA,KAAA,CAAM,MAAM,IAAK,CAAA,GAAA;AAAA,QACf,CAAA;AAAA,QACA,YAAA,CAAa,QAAa,KAAA,QAAA,GAAW,WAAY,CAAA,MAAA,GAAS,YAAa,CAAA,QAAA,KAAa,UAAW,CAAA,QAAA,GAAW,WAAY,CAAA,GAAA,GAAM,WAAY,CAAA,MAAA;AAAA,OAC1I,CAAA;AACA,MAAA,KAAA,CAAM,YAAY,IAAK,CAAA,GAAA,CAAI,aAAe,EAAA,WAAA,GAAc,MAAM,GAAG,CAAA,CAAA;AAAA,KACnE;AAAA,GACF;AAEA,EAAA,IAAI,MAAM,IAAO,GAAA,CAAA,IAAK,KAAM,CAAA,IAAA,GAAO,eAAe,UAAY,EAAA;AAC5D,IAAA,KAAA,CAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,YAAA,EAAc,UAAU,CAAA,CAAA;AAClD,IAAI,IAAA,UAAA,CAAW,eAAe,QAAU,EAAA;AACtC,MAAA,KAAA,CAAM,IAAO,GAAA,WAAA,CAAY,YAAa,CAAA,UAAU,CAAI,GAAA,UAAA,GAAa,CAAI,GAAA,IAAA,CAAK,GAAI,CAAA,CAAA,EAAG,UAAa,GAAA,YAAY,CAAI,GAAA,CAAA,CAAA;AAAA,eACrG,WAAY,CAAA,YAAA,CAAa,UAAU,CAAA,GAAI,aAAa,CAAG,EAAA;AAChE,MAAA,MAAM,UAAU,IAAK,CAAA,GAAA;AAAA,QACnB,UAAA;AAAA,QACA,YAAA,CAAa,UAAe,KAAA,QAAA,GACxB,WAAY,CAAA,MAAA,GACZ,YAAa,CAAA,UAAA,KAAe,UAAW,CAAA,UAAA,GACvC,WAAY,CAAA,KAAA,GACZ,WAAY,CAAA,IAAA;AAAA,OAClB,CAAA;AACA,MAAA,KAAA,CAAM,QAAW,GAAA,IAAA,CAAK,GAAI,CAAA,YAAA,EAAc,OAAO,CAAA,CAAA;AAC/C,MAAA,KAAA,CAAM,OAAO,IAAK,CAAA,GAAA,CAAI,CAAG,EAAA,OAAA,GAAU,MAAM,QAAQ,CAAA,CAAA;AAAA,KAC5C,MAAA;AACL,MAAA,KAAA,CAAM,OAAO,IAAK,CAAA,GAAA;AAAA,QAChB,CAAA;AAAA,QACA,YAAA,CAAa,UAAe,KAAA,QAAA,GACxB,WAAY,CAAA,MAAA,GACZ,YAAa,CAAA,UAAA,KAAe,UAAW,CAAA,UAAA,GACvC,WAAY,CAAA,IAAA,GACZ,WAAY,CAAA,KAAA;AAAA,OAClB,CAAA;AACA,MAAA,KAAA,CAAM,WAAW,IAAK,CAAA,GAAA,CAAI,YAAc,EAAA,UAAA,GAAa,MAAM,IAAI,CAAA,CAAA;AAAA,KACjE;AAAA,GACF;AACF;;;;"}