vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 21.2 kB
Source Map (JSON)
{"version":3,"file":"Viewshed.mjs","sources":["../../../../../packages/shared/analyses/Viewshed.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-04-16 18:52:39\n * @LastEditTime: 2024-10-09 14:57:31\n * @LastEditors: zouyaoji 370681295@qq.com\n * @Description:\n * @FilePath: \\vue-cesium\\packages\\shared\\analyses\\Viewshed.ts\n */\n\nimport { VcViewshedOpts } from '@vue-cesium/utils/drawing-types'\nimport { DebugCameraPrimitive } from '../src'\n\nclass Viewshed {\n _scene: Cesium.Scene\n _frustum: Cesium.PerspectiveFrustum\n _spotLightCamera: Cesium.Camera\n _viewshedShadowMap: Cesium.ShadowMap\n _debugCameraPrimitive: DebugCameraPrimitive\n _enabledChangedEvent: Cesium.Event\n _position: Cesium.Cartesian3\n _offsetHeight: number\n _visibleColor: Cesium.Color\n _invisibleColor: Cesium.Color\n _showGridLine: boolean\n _fovH: number\n _fovV: number\n constructor(scene: Cesium.Scene, options?: VcViewshedOpts) {\n const {\n defined,\n DeveloperError,\n PerspectiveFrustum,\n Math: CesiumMath,\n Camera,\n ShadowMap,\n ShadowMode,\n Event,\n Cartesian3,\n defaultValue,\n Color\n } = Cesium\n if (!defined(scene)) {\n throw new DeveloperError('scene is required.')\n }\n this._scene = scene\n this._frustum = new PerspectiveFrustum()\n this._frustum.fov = CesiumMath.PI / 3\n this._frustum.aspectRatio = 3\n this._frustum.near = 1\n this._frustum.far = 400\n this._spotLightCamera = new Camera(this._scene)\n this._frustum.clone(this._spotLightCamera.frustum as Cesium.PerspectiveFrustum)\n this._viewshedShadowMap = new ShadowMap({\n context: (this._scene as any).context,\n lightCamera: this._spotLightCamera,\n cascadesEnabled: !1\n })\n options = options || {}\n this._scene.globe.shadows = ShadowMode.ENABLED\n ;(this._viewshedShadowMap as any)._terrainBias.depthBias = 0\n this._debugCameraPrimitive = new DebugCameraPrimitive({})\n this._enabledChangedEvent = new Event()\n this._position = new Cartesian3()\n this._offsetHeight = defaultValue(options.offsetHeight, 1.8)\n this._visibleColor = defaultValue(options.visibleColor, new Color(0, 1, 0, 1))\n this._invisibleColor = defaultValue(options.invisibleColor, new Color(1, 0, 0, 1))\n ;(this._viewshedShadowMap as any)._viewshedColors = {\n visible: this._visibleColor,\n invisible: this._invisibleColor\n }\n this._showGridLine = options.showGridLine\n this._debugCameraPrimitive.show = this._showGridLine\n this._debugCameraPrimitive.lineColor = defaultValue(options.lineColor, new Color(1, 1, 1, 0.4))\n this._debugCameraPrimitive.faceColor = defaultValue(options.faceColor, new Color(1, 1, 1, 0.1))\n }\n\n get frustum() {\n return this._frustum\n }\n\n get fovH() {\n return this._fovH\n }\n set fovH(e) {\n if (isNaN(e) || void 0 === e || null == e || e < 0 || e >= Math.PI) {\n throw new Error('fovH must be in the range [0, PI).')\n }\n this._fovH = Number(e)\n this.frustum.aspectRatio = Math.tan(0.5 * this._fovH) / Math.tan(0.5 * this._fovV)\n this.frustum.fov = this._fovH > this._fovV ? this._fovH : this._fovV\n }\n\n get fovV() {\n return this._fovV\n }\n set fovV(e) {\n if (isNaN(e) || void 0 === e || null == e || e < 0 || e >= Math.PI) {\n throw new Error('fovV must be in the range [0, PI).')\n }\n\n this._fovV = Number(e)\n this.frustum.aspectRatio = Math.tan(0.5 * this._fovH) / Math.tan(0.5 * this._fovV)\n this.frustum.fov = this._fovH > this._fovV ? this._fovH : this._fovV\n }\n\n get near() {\n return this.frustum.near\n }\n set near(e) {\n this.frustum.near !== e && (this.frustum.near = e)\n }\n\n get far() {\n return this.far.near\n }\n set far(e) {\n this.frustum.far !== e && (this.frustum.far = e)\n }\n\n get position() {\n return this._position\n }\n set position(e) {\n if (e instanceof Cesium.Cartesian3) {\n this.setView({\n destination: e.clone(),\n orientation: {\n heading: this._spotLightCamera.heading,\n pitch: this._spotLightCamera.pitch,\n roll: this._spotLightCamera.roll\n }\n })\n }\n }\n\n get offsetHeight() {\n return this._offsetHeight\n }\n set offsetHeight(e) {\n if (isNaN(e) || null == e || null == e) {\n throw new Error('Unacceptable offset.')\n }\n\n this._offsetHeight = Number(e)\n this.setView({\n destination: this._position.clone(),\n orientation: {\n heading: this._spotLightCamera.heading,\n pitch: this._spotLightCamera.pitch,\n roll: this._spotLightCamera.roll\n }\n })\n }\n\n get heading() {\n return this._spotLightCamera.heading\n }\n set heading(e) {\n this._spotLightCamera.heading !== e &&\n this._spotLightCamera.setView({\n destination: this._spotLightCamera.positionWC,\n orientation: {\n heading: e,\n pitch: this._spotLightCamera.pitch,\n roll: this._spotLightCamera.roll\n }\n })\n }\n\n get pitch() {\n return this._spotLightCamera.pitch\n }\n set pitch(e) {\n this._spotLightCamera.pitch !== e &&\n this._spotLightCamera.setView({\n destination: this._spotLightCamera.positionWC,\n orientation: {\n heading: this._spotLightCamera.heading,\n pitch: e,\n roll: this._spotLightCamera.roll\n }\n })\n }\n\n get roll() {\n return this._spotLightCamera.roll\n }\n set roll(e) {\n this._spotLightCamera.roll !== e &&\n this._spotLightCamera.setView({\n destination: this._spotLightCamera.positionWC,\n orientation: {\n heading: this._spotLightCamera.heading,\n pitch: this._spotLightCamera.pitch,\n roll: e\n }\n })\n }\n\n get shadowMap() {\n return this._viewshedShadowMap\n }\n\n get lightCamera() {\n return this._spotLightCamera\n }\n\n get enabled() {\n return this._viewshedShadowMap.enabled\n }\n set enabled(e) {\n if (this._viewshedShadowMap.enabled !== e) {\n if (e) {\n // this._debugCameraPrimitive.show = true\n this._viewshedShadowMap.enabled = true\n this._viewshedShadowMap._pointLightRadius = this._spotLightCamera.frustum.far\n } else {\n // this._debugCameraPrimitive.show = false\n this._viewshedShadowMap.enabled = false\n }\n this._enabledChangedEvent.raiseEvent(e)\n }\n }\n\n get enabledChangedEvent() {\n return this._enabledChangedEvent\n }\n\n get visibleColor() {\n return this._visibleColor\n }\n set visibleColor(e: Cesium.Color) {\n this._visibleColor = e\n ;(this._viewshedShadowMap as any)._viewshedColors.visible = e\n }\n\n get invisibleColor() {\n return this._invisibleColor\n }\n set invisibleColor(e: Cesium.Color) {\n this._invisibleColor = e\n ;(this._viewshedShadowMap as any)._viewshedColors.invisible = e\n }\n\n get showGridLine() {\n return this._showGridLine\n }\n set showGridLine(e) {\n this._showGridLine = e\n this._debugCameraPrimitive.show = e\n }\n\n get faceColor() {\n return this._debugCameraPrimitive.faceColor\n }\n set faceColor(e) {\n this._debugCameraPrimitive.faceColor = e\n }\n\n get lineColor() {\n return this._debugCameraPrimitive.lineColor\n }\n set lineColor(e) {\n this._debugCameraPrimitive.lineColor = e\n }\n\n update(frameState) {\n if (this._viewshedShadowMap.enabled) {\n const { ShadowMode, Matrix3, Matrix4, Math: CesiumMath } = Cesium\n this._scene.globe.shadows !== ShadowMode.ENABLED && (this._scene.globe.shadows = ShadowMode.ENABLED)\n frameState.shadowMaps.unshift(this._viewshedShadowMap)\n if (!this._frustum.equals(this._spotLightCamera.frustum as Cesium.PerspectiveFrustum)) {\n this._frustum.clone(this._spotLightCamera.frustum as Cesium.PerspectiveFrustum)\n this._viewshedShadowMap._pointLightRadius = this._frustum.far\n ;(this.shadowMap as any)._boundingSphere.radius = Math.random()\n }\n\n if (this._debugCameraPrimitive.show) {\n const modelMatrix = this._debugCameraPrimitive.modelMatrix\n Matrix4.clone(this._spotLightCamera.inverseViewMatrix, modelMatrix)\n const r0 = Matrix3.fromRotationZ(0.5 * CesiumMath.PI)\n const r1 = Matrix3.fromRotationY(0.5 * CesiumMath.PI)\n const rotation = new Matrix3()\n Matrix3.multiply(r0, r1, rotation)\n Matrix4.multiplyByMatrix3(modelMatrix, rotation, modelMatrix)\n Matrix4.multiplyByUniformScale(modelMatrix, this._spotLightCamera.frustum.far, modelMatrix)\n const frustum = this._spotLightCamera.frustum as Cesium.PerspectiveFrustum\n this._debugCameraPrimitive.fovV = frustum.aspectRatio <= 1 ? frustum.fov : 2 * Math.atan(Math.tan(0.5 * frustum.fov) / frustum.aspectRatio)\n this._debugCameraPrimitive.fovH = 1 < frustum.aspectRatio ? frustum.fov : 2 * Math.atan(Math.tan(0.5 * frustum.fov) * frustum.aspectRatio)\n this._debugCameraPrimitive.segmentH = parseInt(String(this._debugCameraPrimitive.fovH / (Math.PI / 30))) || 1\n this._debugCameraPrimitive.segmentV = parseInt(String(this._debugCameraPrimitive.fovV / (Math.PI / 30))) || 1\n this._debugCameraPrimitive.update(frameState)\n }\n }\n }\n\n setView(options) {\n options = options || {}\n const destination = options.destination\n if (destination instanceof Cesium.Cartesian3) {\n this._position = destination.clone()\n const offsetHeight = this._offsetHeight\n const cartographic = Cesium.Cartographic.fromCartesian(destination, this._scene.globe.ellipsoid)\n if (cartographic) {\n cartographic.height = cartographic.height + offsetHeight\n const cartesian = Cesium.Cartesian3.fromRadians(\n cartographic.longitude,\n cartographic.latitude,\n cartographic.height,\n this._scene.globe.ellipsoid\n )\n options.destination = cartesian\n }\n }\n\n this._spotLightCamera.setView(options)\n }\n\n isDestroyed() {\n return false\n }\n\n destroy() {\n this._debugCameraPrimitive && this._debugCameraPrimitive.destroy()\n this._viewshedShadowMap && this._viewshedShadowMap.destroy()\n Cesium.destroyObject(this)\n }\n}\n\nexport default Viewshed\n"],"names":[],"mappings":";;;;AAYA,MAAM,QAAS,CAAA;AAAA,EAcb,WAAA,CAAY,OAAqB,OAA0B,EAAA;AACzD,IAAM,MAAA;AAAA,MACJ,OAAA;AAAA,MACA,cAAA;AAAA,MACA,kBAAA;AAAA,MACA,IAAM,EAAA,UAAA;AAAA,MACN,MAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA;AAAA,MACA,KAAA;AAAA,KACE,GAAA,MAAA,CAAA;AACJ,IAAI,IAAA,CAAC,OAAQ,CAAA,KAAK,CAAG,EAAA;AACnB,MAAM,MAAA,IAAI,eAAe,oBAAoB,CAAA,CAAA;AAAA,KAC/C;AACA,IAAA,IAAA,CAAK,MAAS,GAAA,KAAA,CAAA;AACd,IAAK,IAAA,CAAA,QAAA,GAAW,IAAI,kBAAmB,EAAA,CAAA;AACvC,IAAK,IAAA,CAAA,QAAA,CAAS,GAAM,GAAA,UAAA,CAAW,EAAK,GAAA,CAAA,CAAA;AACpC,IAAA,IAAA,CAAK,SAAS,WAAc,GAAA,CAAA,CAAA;AAC5B,IAAA,IAAA,CAAK,SAAS,IAAO,GAAA,CAAA,CAAA;AACrB,IAAA,IAAA,CAAK,SAAS,GAAM,GAAA,GAAA,CAAA;AACpB,IAAA,IAAA,CAAK,gBAAmB,GAAA,IAAI,MAAO,CAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAC9C,IAAA,IAAA,CAAK,QAAS,CAAA,KAAA,CAAM,IAAK,CAAA,gBAAA,CAAiB,OAAoC,CAAA,CAAA;AAC9E,IAAK,IAAA,CAAA,kBAAA,GAAqB,IAAI,SAAU,CAAA;AAAA,MACtC,OAAA,EAAU,KAAK,MAAe,CAAA,OAAA;AAAA,MAC9B,aAAa,IAAK,CAAA,gBAAA;AAAA,MAClB,eAAiB,EAAA,KAAA;AAAA,KAClB,CAAA,CAAA;AACD,IAAA,OAAA,GAAU,WAAW,EAAC,CAAA;AACtB,IAAK,IAAA,CAAA,MAAA,CAAO,KAAM,CAAA,OAAA,GAAU,UAAW,CAAA,OAAA,CAAA;AACtC,IAAC,IAAA,CAAK,kBAA2B,CAAA,YAAA,CAAa,SAAY,GAAA,CAAA,CAAA;AAC3D,IAAA,IAAA,CAAK,qBAAwB,GAAA,IAAI,oBAAqB,CAAA,EAAE,CAAA,CAAA;AACxD,IAAK,IAAA,CAAA,oBAAA,GAAuB,IAAI,KAAM,EAAA,CAAA;AACtC,IAAK,IAAA,CAAA,SAAA,GAAY,IAAI,UAAW,EAAA,CAAA;AAChC,IAAA,IAAA,CAAK,aAAgB,GAAA,YAAA,CAAa,OAAQ,CAAA,YAAA,EAAc,GAAG,CAAA,CAAA;AAC3D,IAAK,IAAA,CAAA,aAAA,GAAgB,YAAa,CAAA,OAAA,CAAQ,YAAc,EAAA,IAAI,MAAM,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAC,CAAC,CAAA,CAAA;AAC7E,IAAK,IAAA,CAAA,eAAA,GAAkB,YAAa,CAAA,OAAA,CAAQ,cAAgB,EAAA,IAAI,MAAM,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAC,CAAC,CAAA,CAAA;AAChF,IAAC,IAAA,CAAK,mBAA2B,eAAkB,GAAA;AAAA,MAClD,SAAS,IAAK,CAAA,aAAA;AAAA,MACd,WAAW,IAAK,CAAA,eAAA;AAAA,KAClB,CAAA;AACA,IAAA,IAAA,CAAK,gBAAgB,OAAQ,CAAA,YAAA,CAAA;AAC7B,IAAK,IAAA,CAAA,qBAAA,CAAsB,OAAO,IAAK,CAAA,aAAA,CAAA;AACvC,IAAK,IAAA,CAAA,qBAAA,CAAsB,SAAY,GAAA,YAAA,CAAa,OAAQ,CAAA,SAAA,EAAW,IAAI,KAAA,CAAM,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,GAAG,CAAC,CAAA,CAAA;AAC9F,IAAK,IAAA,CAAA,qBAAA,CAAsB,SAAY,GAAA,YAAA,CAAa,OAAQ,CAAA,SAAA,EAAW,IAAI,KAAA,CAAM,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,GAAG,CAAC,CAAA,CAAA;AAAA,GAChG;AAAA,EAEA,IAAI,OAAU,GAAA;AACZ,IAAA,OAAO,IAAK,CAAA,QAAA,CAAA;AAAA,GACd;AAAA,EAEA,IAAI,IAAO,GAAA;AACT,IAAA,OAAO,IAAK,CAAA,KAAA,CAAA;AAAA,GACd;AAAA,EACA,IAAI,KAAK,CAAG,EAAA;AACV,IAAI,IAAA,KAAA,CAAM,CAAC,CAAA,IAAK,KAAW,CAAA,KAAA,CAAA,IAAK,IAAQ,IAAA,CAAA,IAAK,CAAI,GAAA,CAAA,IAAK,CAAK,IAAA,IAAA,CAAK,EAAI,EAAA;AAClE,MAAM,MAAA,IAAI,MAAM,oCAAoC,CAAA,CAAA;AAAA,KACtD;AACA,IAAK,IAAA,CAAA,KAAA,GAAQ,OAAO,CAAC,CAAA,CAAA;AACrB,IAAA,IAAA,CAAK,OAAQ,CAAA,WAAA,GAAc,IAAK,CAAA,GAAA,CAAI,GAAM,GAAA,IAAA,CAAK,KAAK,CAAA,GAAI,IAAK,CAAA,GAAA,CAAI,GAAM,GAAA,IAAA,CAAK,KAAK,CAAA,CAAA;AACjF,IAAK,IAAA,CAAA,OAAA,CAAQ,MAAM,IAAK,CAAA,KAAA,GAAQ,KAAK,KAAQ,GAAA,IAAA,CAAK,QAAQ,IAAK,CAAA,KAAA,CAAA;AAAA,GACjE;AAAA,EAEA,IAAI,IAAO,GAAA;AACT,IAAA,OAAO,IAAK,CAAA,KAAA,CAAA;AAAA,GACd;AAAA,EACA,IAAI,KAAK,CAAG,EAAA;AACV,IAAI,IAAA,KAAA,CAAM,CAAC,CAAA,IAAK,KAAW,CAAA,KAAA,CAAA,IAAK,IAAQ,IAAA,CAAA,IAAK,CAAI,GAAA,CAAA,IAAK,CAAK,IAAA,IAAA,CAAK,EAAI,EAAA;AAClE,MAAM,MAAA,IAAI,MAAM,oCAAoC,CAAA,CAAA;AAAA,KACtD;AAEA,IAAK,IAAA,CAAA,KAAA,GAAQ,OAAO,CAAC,CAAA,CAAA;AACrB,IAAA,IAAA,CAAK,OAAQ,CAAA,WAAA,GAAc,IAAK,CAAA,GAAA,CAAI,GAAM,GAAA,IAAA,CAAK,KAAK,CAAA,GAAI,IAAK,CAAA,GAAA,CAAI,GAAM,GAAA,IAAA,CAAK,KAAK,CAAA,CAAA;AACjF,IAAK,IAAA,CAAA,OAAA,CAAQ,MAAM,IAAK,CAAA,KAAA,GAAQ,KAAK,KAAQ,GAAA,IAAA,CAAK,QAAQ,IAAK,CAAA,KAAA,CAAA;AAAA,GACjE;AAAA,EAEA,IAAI,IAAO,GAAA;AACT,IAAA,OAAO,KAAK,OAAQ,CAAA,IAAA,CAAA;AAAA,GACtB;AAAA,EACA,IAAI,KAAK,CAAG,EAAA;AACV,IAAA,IAAA,CAAK,OAAQ,CAAA,IAAA,KAAS,CAAM,KAAA,IAAA,CAAK,QAAQ,IAAO,GAAA,CAAA,CAAA,CAAA;AAAA,GAClD;AAAA,EAEA,IAAI,GAAM,GAAA;AACR,IAAA,OAAO,KAAK,GAAI,CAAA,IAAA,CAAA;AAAA,GAClB;AAAA,EACA,IAAI,IAAI,CAAG,EAAA;AACT,IAAA,IAAA,CAAK,OAAQ,CAAA,GAAA,KAAQ,CAAM,KAAA,IAAA,CAAK,QAAQ,GAAM,GAAA,CAAA,CAAA,CAAA;AAAA,GAChD;AAAA,EAEA,IAAI,QAAW,GAAA;AACb,IAAA,OAAO,IAAK,CAAA,SAAA,CAAA;AAAA,GACd;AAAA,EACA,IAAI,SAAS,CAAG,EAAA;AACd,IAAI,IAAA,CAAA,YAAa,OAAO,UAAY,EAAA;AAClC,MAAA,IAAA,CAAK,OAAQ,CAAA;AAAA,QACX,WAAA,EAAa,EAAE,KAAM,EAAA;AAAA,QACrB,WAAa,EAAA;AAAA,UACX,OAAA,EAAS,KAAK,gBAAiB,CAAA,OAAA;AAAA,UAC/B,KAAA,EAAO,KAAK,gBAAiB,CAAA,KAAA;AAAA,UAC7B,IAAA,EAAM,KAAK,gBAAiB,CAAA,IAAA;AAAA,SAC9B;AAAA,OACD,CAAA,CAAA;AAAA,KACH;AAAA,GACF;AAAA,EAEA,IAAI,YAAe,GAAA;AACjB,IAAA,OAAO,IAAK,CAAA,aAAA,CAAA;AAAA,GACd;AAAA,EACA,IAAI,aAAa,CAAG,EAAA;AAClB,IAAA,IAAI,MAAM,CAAC,CAAA,IAAK,IAAQ,IAAA,CAAA,IAAK,QAAQ,CAAG,EAAA;AACtC,MAAM,MAAA,IAAI,MAAM,sBAAsB,CAAA,CAAA;AAAA,KACxC;AAEA,IAAK,IAAA,CAAA,aAAA,GAAgB,OAAO,CAAC,CAAA,CAAA;AAC7B,IAAA,IAAA,CAAK,OAAQ,CAAA;AAAA,MACX,WAAA,EAAa,IAAK,CAAA,SAAA,CAAU,KAAM,EAAA;AAAA,MAClC,WAAa,EAAA;AAAA,QACX,OAAA,EAAS,KAAK,gBAAiB,CAAA,OAAA;AAAA,QAC/B,KAAA,EAAO,KAAK,gBAAiB,CAAA,KAAA;AAAA,QAC7B,IAAA,EAAM,KAAK,gBAAiB,CAAA,IAAA;AAAA,OAC9B;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAAA,EAEA,IAAI,OAAU,GAAA;AACZ,IAAA,OAAO,KAAK,gBAAiB,CAAA,OAAA,CAAA;AAAA,GAC/B;AAAA,EACA,IAAI,QAAQ,CAAG,EAAA;AACb,IAAA,IAAA,CAAK,gBAAiB,CAAA,OAAA,KAAY,CAChC,IAAA,IAAA,CAAK,iBAAiB,OAAQ,CAAA;AAAA,MAC5B,WAAA,EAAa,KAAK,gBAAiB,CAAA,UAAA;AAAA,MACnC,WAAa,EAAA;AAAA,QACX,OAAS,EAAA,CAAA;AAAA,QACT,KAAA,EAAO,KAAK,gBAAiB,CAAA,KAAA;AAAA,QAC7B,IAAA,EAAM,KAAK,gBAAiB,CAAA,IAAA;AAAA,OAC9B;AAAA,KACD,CAAA,CAAA;AAAA,GACL;AAAA,EAEA,IAAI,KAAQ,GAAA;AACV,IAAA,OAAO,KAAK,gBAAiB,CAAA,KAAA,CAAA;AAAA,GAC/B;AAAA,EACA,IAAI,MAAM,CAAG,EAAA;AACX,IAAA,IAAA,CAAK,gBAAiB,CAAA,KAAA,KAAU,CAC9B,IAAA,IAAA,CAAK,iBAAiB,OAAQ,CAAA;AAAA,MAC5B,WAAA,EAAa,KAAK,gBAAiB,CAAA,UAAA;AAAA,MACnC,WAAa,EAAA;AAAA,QACX,OAAA,EAAS,KAAK,gBAAiB,CAAA,OAAA;AAAA,QAC/B,KAAO,EAAA,CAAA;AAAA,QACP,IAAA,EAAM,KAAK,gBAAiB,CAAA,IAAA;AAAA,OAC9B;AAAA,KACD,CAAA,CAAA;AAAA,GACL;AAAA,EAEA,IAAI,IAAO,GAAA;AACT,IAAA,OAAO,KAAK,gBAAiB,CAAA,IAAA,CAAA;AAAA,GAC/B;AAAA,EACA,IAAI,KAAK,CAAG,EAAA;AACV,IAAA,IAAA,CAAK,gBAAiB,CAAA,IAAA,KAAS,CAC7B,IAAA,IAAA,CAAK,iBAAiB,OAAQ,CAAA;AAAA,MAC5B,WAAA,EAAa,KAAK,gBAAiB,CAAA,UAAA;AAAA,MACnC,WAAa,EAAA;AAAA,QACX,OAAA,EAAS,KAAK,gBAAiB,CAAA,OAAA;AAAA,QAC/B,KAAA,EAAO,KAAK,gBAAiB,CAAA,KAAA;AAAA,QAC7B,IAAM,EAAA,CAAA;AAAA,OACR;AAAA,KACD,CAAA,CAAA;AAAA,GACL;AAAA,EAEA,IAAI,SAAY,GAAA;AACd,IAAA,OAAO,IAAK,CAAA,kBAAA,CAAA;AAAA,GACd;AAAA,EAEA,IAAI,WAAc,GAAA;AAChB,IAAA,OAAO,IAAK,CAAA,gBAAA,CAAA;AAAA,GACd;AAAA,EAEA,IAAI,OAAU,GAAA;AACZ,IAAA,OAAO,KAAK,kBAAmB,CAAA,OAAA,CAAA;AAAA,GACjC;AAAA,EACA,IAAI,QAAQ,CAAG,EAAA;AACb,IAAI,IAAA,IAAA,CAAK,kBAAmB,CAAA,OAAA,KAAY,CAAG,EAAA;AACzC,MAAA,IAAI,CAAG,EAAA;AAEL,QAAA,IAAA,CAAK,mBAAmB,OAAU,GAAA,IAAA,CAAA;AAClC,QAAA,IAAA,CAAK,kBAAmB,CAAA,iBAAA,GAAoB,IAAK,CAAA,gBAAA,CAAiB,OAAQ,CAAA,GAAA,CAAA;AAAA,OACrE,MAAA;AAEL,QAAA,IAAA,CAAK,mBAAmB,OAAU,GAAA,KAAA,CAAA;AAAA,OACpC;AACA,MAAK,IAAA,CAAA,oBAAA,CAAqB,WAAW,CAAC,CAAA,CAAA;AAAA,KACxC;AAAA,GACF;AAAA,EAEA,IAAI,mBAAsB,GAAA;AACxB,IAAA,OAAO,IAAK,CAAA,oBAAA,CAAA;AAAA,GACd;AAAA,EAEA,IAAI,YAAe,GAAA;AACjB,IAAA,OAAO,IAAK,CAAA,aAAA,CAAA;AAAA,GACd;AAAA,EACA,IAAI,aAAa,CAAiB,EAAA;AAChC,IAAA,IAAA,CAAK,aAAgB,GAAA,CAAA,CAAA;AACpB,IAAC,IAAA,CAAK,kBAA2B,CAAA,eAAA,CAAgB,OAAU,GAAA,CAAA,CAAA;AAAA,GAC9D;AAAA,EAEA,IAAI,cAAiB,GAAA;AACnB,IAAA,OAAO,IAAK,CAAA,eAAA,CAAA;AAAA,GACd;AAAA,EACA,IAAI,eAAe,CAAiB,EAAA;AAClC,IAAA,IAAA,CAAK,eAAkB,GAAA,CAAA,CAAA;AACtB,IAAC,IAAA,CAAK,kBAA2B,CAAA,eAAA,CAAgB,SAAY,GAAA,CAAA,CAAA;AAAA,GAChE;AAAA,EAEA,IAAI,YAAe,GAAA;AACjB,IAAA,OAAO,IAAK,CAAA,aAAA,CAAA;AAAA,GACd;AAAA,EACA,IAAI,aAAa,CAAG,EAAA;AAClB,IAAA,IAAA,CAAK,aAAgB,GAAA,CAAA,CAAA;AACrB,IAAA,IAAA,CAAK,sBAAsB,IAAO,GAAA,CAAA,CAAA;AAAA,GACpC;AAAA,EAEA,IAAI,SAAY,GAAA;AACd,IAAA,OAAO,KAAK,qBAAsB,CAAA,SAAA,CAAA;AAAA,GACpC;AAAA,EACA,IAAI,UAAU,CAAG,EAAA;AACf,IAAA,IAAA,CAAK,sBAAsB,SAAY,GAAA,CAAA,CAAA;AAAA,GACzC;AAAA,EAEA,IAAI,SAAY,GAAA;AACd,IAAA,OAAO,KAAK,qBAAsB,CAAA,SAAA,CAAA;AAAA,GACpC;AAAA,EACA,IAAI,UAAU,CAAG,EAAA;AACf,IAAA,IAAA,CAAK,sBAAsB,SAAY,GAAA,CAAA,CAAA;AAAA,GACzC;AAAA,EAEA,OAAO,UAAY,EAAA;AACjB,IAAI,IAAA,IAAA,CAAK,mBAAmB,OAAS,EAAA;AACnC,MAAA,MAAM,EAAE,UAAY,EAAA,OAAA,EAAS,OAAS,EAAA,IAAA,EAAM,YAAe,GAAA,MAAA,CAAA;AAC3D,MAAK,IAAA,CAAA,MAAA,CAAO,MAAM,OAAY,KAAA,UAAA,CAAW,YAAY,IAAK,CAAA,MAAA,CAAO,KAAM,CAAA,OAAA,GAAU,UAAW,CAAA,OAAA,CAAA,CAAA;AAC5F,MAAW,UAAA,CAAA,UAAA,CAAW,OAAQ,CAAA,IAAA,CAAK,kBAAkB,CAAA,CAAA;AACrD,MAAA,IAAI,CAAC,IAAK,CAAA,QAAA,CAAS,OAAO,IAAK,CAAA,gBAAA,CAAiB,OAAoC,CAAG,EAAA;AACrF,QAAA,IAAA,CAAK,QAAS,CAAA,KAAA,CAAM,IAAK,CAAA,gBAAA,CAAiB,OAAoC,CAAA,CAAA;AAC9E,QAAK,IAAA,CAAA,kBAAA,CAAmB,iBAAoB,GAAA,IAAA,CAAK,QAAS,CAAA,GAAA,CAAA;AACzD,QAAC,IAAK,CAAA,SAAA,CAAkB,eAAgB,CAAA,MAAA,GAAS,KAAK,MAAO,EAAA,CAAA;AAAA,OAChE;AAEA,MAAI,IAAA,IAAA,CAAK,sBAAsB,IAAM,EAAA;AACnC,QAAM,MAAA,WAAA,GAAc,KAAK,qBAAsB,CAAA,WAAA,CAAA;AAC/C,QAAA,OAAA,CAAQ,KAAM,CAAA,IAAA,CAAK,gBAAiB,CAAA,iBAAA,EAAmB,WAAW,CAAA,CAAA;AAClE,QAAA,MAAM,EAAK,GAAA,OAAA,CAAQ,aAAc,CAAA,GAAA,GAAM,WAAW,EAAE,CAAA,CAAA;AACpD,QAAA,MAAM,EAAK,GAAA,OAAA,CAAQ,aAAc,CAAA,GAAA,GAAM,WAAW,EAAE,CAAA,CAAA;AACpD,QAAM,MAAA,QAAA,GAAW,IAAI,OAAQ,EAAA,CAAA;AAC7B,QAAQ,OAAA,CAAA,QAAA,CAAS,EAAI,EAAA,EAAA,EAAI,QAAQ,CAAA,CAAA;AACjC,QAAQ,OAAA,CAAA,iBAAA,CAAkB,WAAa,EAAA,QAAA,EAAU,WAAW,CAAA,CAAA;AAC5D,QAAA,OAAA,CAAQ,uBAAuB,WAAa,EAAA,IAAA,CAAK,gBAAiB,CAAA,OAAA,CAAQ,KAAK,WAAW,CAAA,CAAA;AAC1F,QAAM,MAAA,OAAA,GAAU,KAAK,gBAAiB,CAAA,OAAA,CAAA;AACtC,QAAA,IAAA,CAAK,sBAAsB,IAAO,GAAA,OAAA,CAAQ,WAAe,IAAA,CAAA,GAAI,QAAQ,GAAM,GAAA,CAAA,GAAI,IAAK,CAAA,IAAA,CAAK,KAAK,GAAI,CAAA,GAAA,GAAM,QAAQ,GAAG,CAAA,GAAI,QAAQ,WAAW,CAAA,CAAA;AAC1I,QAAA,IAAA,CAAK,sBAAsB,IAAO,GAAA,CAAA,GAAI,OAAQ,CAAA,WAAA,GAAc,QAAQ,GAAM,GAAA,CAAA,GAAI,IAAK,CAAA,IAAA,CAAK,KAAK,GAAI,CAAA,GAAA,GAAM,QAAQ,GAAG,CAAA,GAAI,QAAQ,WAAW,CAAA,CAAA;AACzI,QAAK,IAAA,CAAA,qBAAA,CAAsB,QAAW,GAAA,QAAA,CAAS,MAAO,CAAA,IAAA,CAAK,qBAAsB,CAAA,IAAA,IAAQ,IAAK,CAAA,EAAA,GAAK,EAAG,CAAA,CAAC,CAAK,IAAA,CAAA,CAAA;AAC5G,QAAK,IAAA,CAAA,qBAAA,CAAsB,QAAW,GAAA,QAAA,CAAS,MAAO,CAAA,IAAA,CAAK,qBAAsB,CAAA,IAAA,IAAQ,IAAK,CAAA,EAAA,GAAK,EAAG,CAAA,CAAC,CAAK,IAAA,CAAA,CAAA;AAC5G,QAAK,IAAA,CAAA,qBAAA,CAAsB,OAAO,UAAU,CAAA,CAAA;AAAA,OAC9C;AAAA,KACF;AAAA,GACF;AAAA,EAEA,QAAQ,OAAS,EAAA;AACf,IAAA,OAAA,GAAU,WAAW,EAAC,CAAA;AACtB,IAAA,MAAM,cAAc,OAAQ,CAAA,WAAA,CAAA;AAC5B,IAAI,IAAA,WAAA,YAAuB,OAAO,UAAY,EAAA;AAC5C,MAAK,IAAA,CAAA,SAAA,GAAY,YAAY,KAAM,EAAA,CAAA;AACnC,MAAA,MAAM,eAAe,IAAK,CAAA,aAAA,CAAA;AAC1B,MAAM,MAAA,YAAA,GAAe,OAAO,YAAa,CAAA,aAAA,CAAc,aAAa,IAAK,CAAA,MAAA,CAAO,MAAM,SAAS,CAAA,CAAA;AAC/F,MAAA,IAAI,YAAc,EAAA;AAChB,QAAa,YAAA,CAAA,MAAA,GAAS,aAAa,MAAS,GAAA,YAAA,CAAA;AAC5C,QAAM,MAAA,SAAA,GAAY,OAAO,UAAW,CAAA,WAAA;AAAA,UAClC,YAAa,CAAA,SAAA;AAAA,UACb,YAAa,CAAA,QAAA;AAAA,UACb,YAAa,CAAA,MAAA;AAAA,UACb,IAAA,CAAK,OAAO,KAAM,CAAA,SAAA;AAAA,SACpB,CAAA;AACA,QAAA,OAAA,CAAQ,WAAc,GAAA,SAAA,CAAA;AAAA,OACxB;AAAA,KACF;AAEA,IAAK,IAAA,CAAA,gBAAA,CAAiB,QAAQ,OAAO,CAAA,CAAA;AAAA,GACvC;AAAA,EAEA,WAAc,GAAA;AACZ,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAAA,EAEA,OAAU,GAAA;AACR,IAAK,IAAA,CAAA,qBAAA,IAAyB,IAAK,CAAA,qBAAA,CAAsB,OAAQ,EAAA,CAAA;AACjE,IAAK,IAAA,CAAA,kBAAA,IAAsB,IAAK,CAAA,kBAAA,CAAmB,OAAQ,EAAA,CAAA;AAC3D,IAAA,MAAA,CAAO,cAAc,IAAI,CAAA,CAAA;AAAA,GAC3B;AACF;;;;"}