@itwin/core-geometry 3.0.0-dev.76 → 3.0.0-dev.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1049 -0
- package/lib/{Constant.d.ts → cjs/Constant.d.ts} +0 -0
- package/lib/cjs/Constant.d.ts.map +1 -0
- package/lib/{Constant.js → cjs/Constant.js} +0 -0
- package/lib/cjs/Constant.js.map +1 -0
- package/lib/{Geometry.d.ts → cjs/Geometry.d.ts} +0 -0
- package/lib/cjs/Geometry.d.ts.map +1 -0
- package/lib/{Geometry.js → cjs/Geometry.js} +0 -0
- package/lib/cjs/Geometry.js.map +1 -0
- package/lib/{bspline → cjs/bspline}/AkimaCurve3d.d.ts +0 -0
- package/lib/cjs/bspline/AkimaCurve3d.d.ts.map +1 -0
- package/lib/{bspline → cjs/bspline}/AkimaCurve3d.js +0 -0
- package/lib/cjs/bspline/AkimaCurve3d.js.map +1 -0
- package/lib/{bspline → cjs/bspline}/BSpline1dNd.d.ts +0 -0
- package/lib/cjs/bspline/BSpline1dNd.d.ts.map +1 -0
- package/lib/{bspline → cjs/bspline}/BSpline1dNd.js +0 -0
- package/lib/cjs/bspline/BSpline1dNd.js.map +1 -0
- package/lib/{bspline → cjs/bspline}/BSplineCurve.d.ts +0 -0
- package/lib/cjs/bspline/BSplineCurve.d.ts.map +1 -0
- package/lib/{bspline → cjs/bspline}/BSplineCurve.js +0 -0
- package/lib/cjs/bspline/BSplineCurve.js.map +1 -0
- package/lib/{bspline → cjs/bspline}/BSplineCurve3dH.d.ts +0 -0
- package/lib/cjs/bspline/BSplineCurve3dH.d.ts.map +1 -0
- package/lib/{bspline → cjs/bspline}/BSplineCurve3dH.js +0 -0
- package/lib/cjs/bspline/BSplineCurve3dH.js.map +1 -0
- package/lib/{bspline → cjs/bspline}/BSplineCurveOps.d.ts +0 -0
- package/lib/cjs/bspline/BSplineCurveOps.d.ts.map +1 -0
- package/lib/{bspline → cjs/bspline}/BSplineCurveOps.js +0 -0
- package/lib/cjs/bspline/BSplineCurveOps.js.map +1 -0
- package/lib/cjs/bspline/BSplineSurface.d.ts +491 -0
- package/lib/cjs/bspline/BSplineSurface.d.ts.map +1 -0
- package/lib/{bspline → cjs/bspline}/BSplineSurface.js +0 -0
- package/lib/cjs/bspline/BSplineSurface.js.map +1 -0
- package/lib/{bspline → cjs/bspline}/Bezier1dNd.d.ts +0 -0
- package/lib/cjs/bspline/Bezier1dNd.d.ts.map +1 -0
- package/lib/{bspline → cjs/bspline}/Bezier1dNd.js +0 -0
- package/lib/cjs/bspline/Bezier1dNd.js.map +1 -0
- package/lib/{bspline → cjs/bspline}/BezierCurve3d.d.ts +0 -0
- package/lib/cjs/bspline/BezierCurve3d.d.ts.map +1 -0
- package/lib/{bspline → cjs/bspline}/BezierCurve3d.js +0 -0
- package/lib/cjs/bspline/BezierCurve3d.js.map +1 -0
- package/lib/{bspline → cjs/bspline}/BezierCurve3dH.d.ts +0 -0
- package/lib/cjs/bspline/BezierCurve3dH.d.ts.map +1 -0
- package/lib/{bspline → cjs/bspline}/BezierCurve3dH.js +0 -0
- package/lib/cjs/bspline/BezierCurve3dH.js.map +1 -0
- package/lib/{bspline → cjs/bspline}/BezierCurveBase.d.ts +0 -0
- package/lib/cjs/bspline/BezierCurveBase.d.ts.map +1 -0
- package/lib/{bspline → cjs/bspline}/BezierCurveBase.js +0 -0
- package/lib/cjs/bspline/BezierCurveBase.js.map +1 -0
- package/lib/{bspline → cjs/bspline}/InterpolationCurve3d.d.ts +0 -0
- package/lib/cjs/bspline/InterpolationCurve3d.d.ts.map +1 -0
- package/lib/{bspline → cjs/bspline}/InterpolationCurve3d.js +0 -0
- package/lib/cjs/bspline/InterpolationCurve3d.js.map +1 -0
- package/lib/{bspline → cjs/bspline}/KnotVector.d.ts +0 -0
- package/lib/cjs/bspline/KnotVector.d.ts.map +1 -0
- package/lib/{bspline → cjs/bspline}/KnotVector.js +0 -0
- package/lib/cjs/bspline/KnotVector.js.map +1 -0
- package/lib/{bspline → cjs/bspline}/SurfaceLocationDetail.d.ts +0 -0
- package/lib/cjs/bspline/SurfaceLocationDetail.d.ts.map +1 -0
- package/lib/{bspline → cjs/bspline}/SurfaceLocationDetail.js +0 -0
- package/lib/cjs/bspline/SurfaceLocationDetail.js.map +1 -0
- package/lib/{clipping → cjs/clipping}/AlternatingConvexClipTree.d.ts +0 -0
- package/lib/cjs/clipping/AlternatingConvexClipTree.d.ts.map +1 -0
- package/lib/{clipping → cjs/clipping}/AlternatingConvexClipTree.js +0 -0
- package/lib/cjs/clipping/AlternatingConvexClipTree.js.map +1 -0
- package/lib/{clipping → cjs/clipping}/BooleanClipFactory.d.ts +0 -0
- package/lib/cjs/clipping/BooleanClipFactory.d.ts.map +1 -0
- package/lib/{clipping → cjs/clipping}/BooleanClipFactory.js +0 -0
- package/lib/cjs/clipping/BooleanClipFactory.js.map +1 -0
- package/lib/{clipping → cjs/clipping}/BooleanClipNode.d.ts +0 -0
- package/lib/cjs/clipping/BooleanClipNode.d.ts.map +1 -0
- package/lib/{clipping → cjs/clipping}/BooleanClipNode.js +0 -0
- package/lib/cjs/clipping/BooleanClipNode.js.map +1 -0
- package/lib/{clipping → cjs/clipping}/ClipPlane.d.ts +0 -0
- package/lib/cjs/clipping/ClipPlane.d.ts.map +1 -0
- package/lib/{clipping → cjs/clipping}/ClipPlane.js +0 -0
- package/lib/cjs/clipping/ClipPlane.js.map +1 -0
- package/lib/{clipping → cjs/clipping}/ClipPrimitive.d.ts +0 -0
- package/lib/cjs/clipping/ClipPrimitive.d.ts.map +1 -0
- package/lib/{clipping → cjs/clipping}/ClipPrimitive.js +0 -0
- package/lib/cjs/clipping/ClipPrimitive.js.map +1 -0
- package/lib/{clipping → cjs/clipping}/ClipUtils.d.ts +0 -0
- package/lib/cjs/clipping/ClipUtils.d.ts.map +1 -0
- package/lib/{clipping → cjs/clipping}/ClipUtils.js +0 -0
- package/lib/cjs/clipping/ClipUtils.js.map +1 -0
- package/lib/{clipping → cjs/clipping}/ClipVector.d.ts +0 -0
- package/lib/cjs/clipping/ClipVector.d.ts.map +1 -0
- package/lib/{clipping → cjs/clipping}/ClipVector.js +0 -0
- package/lib/cjs/clipping/ClipVector.js.map +1 -0
- package/lib/{clipping → cjs/clipping}/ConvexClipPlaneSet.d.ts +0 -0
- package/lib/cjs/clipping/ConvexClipPlaneSet.d.ts.map +1 -0
- package/lib/{clipping → cjs/clipping}/ConvexClipPlaneSet.js +0 -0
- package/lib/cjs/clipping/ConvexClipPlaneSet.js.map +1 -0
- package/lib/{clipping → cjs/clipping}/UnionOfConvexClipPlaneSets.d.ts +0 -0
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -0
- package/lib/{clipping → cjs/clipping}/UnionOfConvexClipPlaneSets.js +0 -0
- package/lib/cjs/clipping/UnionOfConvexClipPlaneSets.js.map +1 -0
- package/lib/{clipping → cjs/clipping}/internalContexts/LineStringOffsetClipperContext.d.ts +0 -0
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.d.ts.map +1 -0
- package/lib/{clipping → cjs/clipping}/internalContexts/LineStringOffsetClipperContext.js +0 -0
- package/lib/cjs/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -0
- package/lib/{core-geometry.d.ts → cjs/core-geometry.d.ts} +0 -0
- package/lib/cjs/core-geometry.d.ts.map +1 -0
- package/lib/{core-geometry.js → cjs/core-geometry.js} +0 -0
- package/lib/cjs/core-geometry.js.map +1 -0
- package/lib/{curve → cjs/curve}/Arc3d.d.ts +0 -0
- package/lib/cjs/curve/Arc3d.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/Arc3d.js +0 -0
- package/lib/cjs/curve/Arc3d.js.map +1 -0
- package/lib/{curve → cjs/curve}/ChainCollectorContext.d.ts +0 -0
- package/lib/cjs/curve/ChainCollectorContext.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/ChainCollectorContext.js +0 -0
- package/lib/cjs/curve/ChainCollectorContext.js.map +1 -0
- package/lib/{curve → cjs/curve}/ConstructCurveBetweenCurves.d.ts +0 -0
- package/lib/cjs/curve/ConstructCurveBetweenCurves.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/ConstructCurveBetweenCurves.js +0 -0
- package/lib/cjs/curve/ConstructCurveBetweenCurves.js.map +1 -0
- package/lib/{curve → cjs/curve}/CoordinateXYZ.d.ts +0 -0
- package/lib/cjs/curve/CoordinateXYZ.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/CoordinateXYZ.js +0 -0
- package/lib/cjs/curve/CoordinateXYZ.js.map +1 -0
- package/lib/{curve → cjs/curve}/CurveChain.d.ts +0 -0
- package/lib/cjs/curve/CurveChain.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/CurveChain.js +0 -0
- package/lib/cjs/curve/CurveChain.js.map +1 -0
- package/lib/{curve → cjs/curve}/CurveChainWithDistanceIndex.d.ts +0 -0
- package/lib/cjs/curve/CurveChainWithDistanceIndex.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/CurveChainWithDistanceIndex.js +0 -0
- package/lib/cjs/curve/CurveChainWithDistanceIndex.js.map +1 -0
- package/lib/{curve → cjs/curve}/CurveCollection.d.ts +0 -0
- package/lib/cjs/curve/CurveCollection.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/CurveCollection.js +0 -0
- package/lib/cjs/curve/CurveCollection.js.map +1 -0
- package/lib/{curve → cjs/curve}/CurveCurve.d.ts +0 -0
- package/lib/cjs/curve/CurveCurve.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/CurveCurve.js +0 -0
- package/lib/cjs/curve/CurveCurve.js.map +1 -0
- package/lib/{curve → cjs/curve}/CurveCurveCloseApproachXY.d.ts +0 -0
- package/lib/cjs/curve/CurveCurveCloseApproachXY.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/CurveCurveCloseApproachXY.js +0 -0
- package/lib/cjs/curve/CurveCurveCloseApproachXY.js.map +1 -0
- package/lib/{curve → cjs/curve}/CurveCurveIntersectXY.d.ts +0 -0
- package/lib/cjs/curve/CurveCurveIntersectXY.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/CurveCurveIntersectXY.js +0 -0
- package/lib/cjs/curve/CurveCurveIntersectXY.js.map +1 -0
- package/lib/{curve → cjs/curve}/CurveCurveIntersectXYZ.d.ts +0 -0
- package/lib/cjs/curve/CurveCurveIntersectXYZ.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/CurveCurveIntersectXYZ.js +0 -0
- package/lib/cjs/curve/CurveCurveIntersectXYZ.js.map +1 -0
- package/lib/{curve → cjs/curve}/CurveExtendMode.d.ts +0 -0
- package/lib/cjs/curve/CurveExtendMode.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/CurveExtendMode.js +0 -0
- package/lib/cjs/curve/CurveExtendMode.js.map +1 -0
- package/lib/{curve → cjs/curve}/CurveFactory.d.ts +0 -0
- package/lib/cjs/curve/CurveFactory.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/CurveFactory.js +0 -0
- package/lib/cjs/curve/CurveFactory.js.map +1 -0
- package/lib/{curve → cjs/curve}/CurveLocationDetail.d.ts +0 -0
- package/lib/cjs/curve/CurveLocationDetail.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/CurveLocationDetail.js +0 -0
- package/lib/cjs/curve/CurveLocationDetail.js.map +1 -0
- package/lib/{curve → cjs/curve}/CurvePrimitive.d.ts +0 -0
- package/lib/cjs/curve/CurvePrimitive.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/CurvePrimitive.js +0 -0
- package/lib/cjs/curve/CurvePrimitive.js.map +1 -0
- package/lib/{curve → cjs/curve}/CurveProcessor.d.ts +0 -0
- package/lib/cjs/curve/CurveProcessor.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/CurveProcessor.js +0 -0
- package/lib/cjs/curve/CurveProcessor.js.map +1 -0
- package/lib/{curve → cjs/curve}/CurveWireMomentsXYZ.d.ts +0 -0
- package/lib/cjs/curve/CurveWireMomentsXYZ.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/CurveWireMomentsXYZ.js +0 -0
- package/lib/cjs/curve/CurveWireMomentsXYZ.js.map +1 -0
- package/lib/{curve → cjs/curve}/GeometryQuery.d.ts +0 -0
- package/lib/cjs/curve/GeometryQuery.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/GeometryQuery.js +0 -0
- package/lib/cjs/curve/GeometryQuery.js.map +1 -0
- package/lib/{curve → cjs/curve}/LineSegment3d.d.ts +0 -0
- package/lib/cjs/curve/LineSegment3d.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/LineSegment3d.js +0 -0
- package/lib/cjs/curve/LineSegment3d.js.map +1 -0
- package/lib/{curve → cjs/curve}/LineString3d.d.ts +0 -0
- package/lib/cjs/curve/LineString3d.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/LineString3d.js +0 -0
- package/lib/cjs/curve/LineString3d.js.map +1 -0
- package/lib/{curve → cjs/curve}/Loop.d.ts +0 -0
- package/lib/cjs/curve/Loop.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/Loop.js +0 -0
- package/lib/cjs/curve/Loop.js.map +1 -0
- package/lib/{curve → cjs/curve}/ParityRegion.d.ts +0 -0
- package/lib/cjs/curve/ParityRegion.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/ParityRegion.js +0 -0
- package/lib/cjs/curve/ParityRegion.js.map +1 -0
- package/lib/{curve → cjs/curve}/Path.d.ts +0 -0
- package/lib/cjs/curve/Path.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/Path.js +0 -0
- package/lib/cjs/curve/Path.js.map +1 -0
- package/lib/{curve → cjs/curve}/PointString3d.d.ts +0 -0
- package/lib/cjs/curve/PointString3d.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/PointString3d.js +0 -0
- package/lib/cjs/curve/PointString3d.js.map +1 -0
- package/lib/{curve → cjs/curve}/ProxyCurve.d.ts +0 -0
- package/lib/cjs/curve/ProxyCurve.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/ProxyCurve.js +0 -0
- package/lib/cjs/curve/ProxyCurve.js.map +1 -0
- package/lib/{curve → cjs/curve}/Query/ConsolidateAdjacentPrimitivesContext.d.ts +0 -0
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/Query/ConsolidateAdjacentPrimitivesContext.js +0 -0
- package/lib/cjs/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -0
- package/lib/{curve → cjs/curve}/Query/CurveSplitContext.d.ts +0 -0
- package/lib/cjs/curve/Query/CurveSplitContext.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/Query/CurveSplitContext.js +0 -0
- package/lib/cjs/curve/Query/CurveSplitContext.js.map +1 -0
- package/lib/{curve → cjs/curve}/Query/CylindricalRange.d.ts +0 -0
- package/lib/cjs/curve/Query/CylindricalRange.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/Query/CylindricalRange.js +0 -0
- package/lib/cjs/curve/Query/CylindricalRange.js.map +1 -0
- package/lib/{curve → cjs/curve}/Query/InOutTests.d.ts +0 -0
- package/lib/cjs/curve/Query/InOutTests.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/Query/InOutTests.js +0 -0
- package/lib/cjs/curve/Query/InOutTests.js.map +1 -0
- package/lib/{curve → cjs/curve}/Query/PlanarSubdivision.d.ts +0 -0
- package/lib/cjs/curve/Query/PlanarSubdivision.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/Query/PlanarSubdivision.js +0 -0
- package/lib/cjs/curve/Query/PlanarSubdivision.js.map +1 -0
- package/lib/{curve → cjs/curve}/Query/StrokeCountChain.d.ts +0 -0
- package/lib/cjs/curve/Query/StrokeCountChain.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/Query/StrokeCountChain.js +0 -0
- package/lib/cjs/curve/Query/StrokeCountChain.js.map +1 -0
- package/lib/{curve → cjs/curve}/Query/StrokeCountMap.d.ts +0 -0
- package/lib/cjs/curve/Query/StrokeCountMap.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/Query/StrokeCountMap.js +0 -0
- package/lib/cjs/curve/Query/StrokeCountMap.js.map +1 -0
- package/lib/{curve → cjs/curve}/RegionMomentsXY.d.ts +0 -0
- package/lib/cjs/curve/RegionMomentsXY.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/RegionMomentsXY.js +0 -0
- package/lib/cjs/curve/RegionMomentsXY.js.map +1 -0
- package/lib/{curve → cjs/curve}/RegionOps.d.ts +0 -0
- package/lib/cjs/curve/RegionOps.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/RegionOps.js +0 -0
- package/lib/cjs/curve/RegionOps.js.map +1 -0
- package/lib/{curve → cjs/curve}/RegionOpsClassificationSweeps.d.ts +0 -0
- package/lib/cjs/curve/RegionOpsClassificationSweeps.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/RegionOpsClassificationSweeps.js +0 -0
- package/lib/cjs/curve/RegionOpsClassificationSweeps.js.map +1 -0
- package/lib/{curve → cjs/curve}/StrokeOptions.d.ts +0 -0
- package/lib/cjs/curve/StrokeOptions.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/StrokeOptions.js +0 -0
- package/lib/cjs/curve/StrokeOptions.js.map +1 -0
- package/lib/{curve → cjs/curve}/UnionRegion.d.ts +0 -0
- package/lib/cjs/curve/UnionRegion.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/UnionRegion.js +0 -0
- package/lib/cjs/curve/UnionRegion.js.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/CloneCurvesContext.d.ts +0 -0
- package/lib/cjs/curve/internalContexts/CloneCurvesContext.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/CloneCurvesContext.js +0 -0
- package/lib/cjs/curve/internalContexts/CloneCurvesContext.js.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/CloneWithExpandedLineStrings.d.ts +0 -0
- package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/CloneWithExpandedLineStrings.js +0 -0
- package/lib/cjs/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/CountLinearPartsSearchContext.d.ts +0 -0
- package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/CountLinearPartsSearchContext.js +0 -0
- package/lib/cjs/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/GapSearchContext.d.ts +0 -0
- package/lib/cjs/curve/internalContexts/GapSearchContext.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/GapSearchContext.js +0 -0
- package/lib/cjs/curve/internalContexts/GapSearchContext.js.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/MultiChainCollector.d.ts +0 -0
- package/lib/cjs/curve/internalContexts/MultiChainCollector.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/MultiChainCollector.js +0 -0
- package/lib/cjs/curve/internalContexts/MultiChainCollector.js.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/PlaneAltitudeRangeContext.d.ts +0 -0
- package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/PlaneAltitudeRangeContext.js +0 -0
- package/lib/cjs/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/PolygonOffsetContext.d.ts +0 -0
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/PolygonOffsetContext.js +0 -0
- package/lib/cjs/curve/internalContexts/PolygonOffsetContext.js.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/SumLengthsContext.d.ts +0 -0
- package/lib/cjs/curve/internalContexts/SumLengthsContext.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/SumLengthsContext.js +0 -0
- package/lib/cjs/curve/internalContexts/SumLengthsContext.js.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/TransformInPlaceContext.d.ts +0 -0
- package/lib/cjs/curve/internalContexts/TransformInPlaceContext.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/internalContexts/TransformInPlaceContext.js +0 -0
- package/lib/cjs/curve/internalContexts/TransformInPlaceContext.js.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/AustralianRailCorpXYEvaluator.d.ts +0 -0
- package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/AustralianRailCorpXYEvaluator.js +0 -0
- package/lib/cjs/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/ClothoidSeries.d.ts +0 -0
- package/lib/cjs/curve/spiral/ClothoidSeries.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/ClothoidSeries.js +0 -0
- package/lib/cjs/curve/spiral/ClothoidSeries.js.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/CubicEvaluator.d.ts +0 -0
- package/lib/cjs/curve/spiral/CubicEvaluator.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/CubicEvaluator.js +0 -0
- package/lib/cjs/curve/spiral/CubicEvaluator.js.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/CzechSpiralEvaluator.d.ts +0 -0
- package/lib/cjs/curve/spiral/CzechSpiralEvaluator.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/CzechSpiralEvaluator.js +0 -0
- package/lib/cjs/curve/spiral/CzechSpiralEvaluator.js.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/DirectHalfCosineSpiralEvaluator.d.ts +0 -0
- package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/DirectHalfCosineSpiralEvaluator.js +0 -0
- package/lib/cjs/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -0
- package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts +265 -0
- package/lib/cjs/curve/spiral/DirectSpiral3d.d.ts.map +1 -0
- package/lib/cjs/curve/spiral/DirectSpiral3d.js +473 -0
- package/lib/cjs/curve/spiral/DirectSpiral3d.js.map +1 -0
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts +158 -0
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -0
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js +364 -0
- package/lib/cjs/curve/spiral/IntegratedSpiral3d.js.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/MXCubicAlongArcSpiralEvaluator.d.ts +0 -0
- package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/MXCubicAlongArcSpiralEvaluator.js +0 -0
- package/lib/cjs/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/NormalizedTransition.d.ts +0 -0
- package/lib/cjs/curve/spiral/NormalizedTransition.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/NormalizedTransition.js +0 -0
- package/lib/cjs/curve/spiral/NormalizedTransition.js.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/PolishCubicSpiralEvaluator.d.ts +0 -0
- package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/PolishCubicSpiralEvaluator.js +0 -0
- package/lib/cjs/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/TransitionConditionalProperties.d.ts +0 -0
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/TransitionConditionalProperties.js +0 -0
- package/lib/cjs/curve/spiral/TransitionConditionalProperties.js.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/TransitionSpiral3d.d.ts +0 -0
- package/lib/cjs/curve/spiral/TransitionSpiral3d.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/TransitionSpiral3d.js +0 -0
- package/lib/cjs/curve/spiral/TransitionSpiral3d.js.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/XYCurveEvaluator.d.ts +0 -0
- package/lib/cjs/curve/spiral/XYCurveEvaluator.d.ts.map +1 -0
- package/lib/{curve → cjs/curve}/spiral/XYCurveEvaluator.js +0 -0
- package/lib/cjs/curve/spiral/XYCurveEvaluator.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Angle.d.ts +0 -0
- package/lib/cjs/geometry3d/Angle.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Angle.js +0 -0
- package/lib/cjs/geometry3d/Angle.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/AngleSweep.d.ts +0 -0
- package/lib/cjs/geometry3d/AngleSweep.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/AngleSweep.js +0 -0
- package/lib/cjs/geometry3d/AngleSweep.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/BarycentricTriangle.d.ts +0 -0
- package/lib/cjs/geometry3d/BarycentricTriangle.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/BarycentricTriangle.js +0 -0
- package/lib/cjs/geometry3d/BarycentricTriangle.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/BilinearPatch.d.ts +0 -0
- package/lib/cjs/geometry3d/BilinearPatch.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/BilinearPatch.js +0 -0
- package/lib/cjs/geometry3d/BilinearPatch.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/CoincidentGeometryOps.d.ts +0 -0
- package/lib/cjs/geometry3d/CoincidentGeometryOps.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/CoincidentGeometryOps.js +0 -0
- package/lib/cjs/geometry3d/CoincidentGeometryOps.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Ellipsoid.d.ts +0 -0
- package/lib/cjs/geometry3d/Ellipsoid.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Ellipsoid.js +0 -0
- package/lib/cjs/geometry3d/Ellipsoid.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/FrameBuilder.d.ts +0 -0
- package/lib/cjs/geometry3d/FrameBuilder.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/FrameBuilder.js +0 -0
- package/lib/cjs/geometry3d/FrameBuilder.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/FrustumAnimation.d.ts +0 -0
- package/lib/cjs/geometry3d/FrustumAnimation.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/FrustumAnimation.js +0 -0
- package/lib/cjs/geometry3d/FrustumAnimation.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/GeometryHandler.d.ts +0 -0
- package/lib/cjs/geometry3d/GeometryHandler.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/GeometryHandler.js +0 -0
- package/lib/cjs/geometry3d/GeometryHandler.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/GrowableBlockedArray.d.ts +0 -0
- package/lib/cjs/geometry3d/GrowableBlockedArray.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/GrowableBlockedArray.js +0 -0
- package/lib/cjs/geometry3d/GrowableBlockedArray.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/GrowableFloat64Array.d.ts +0 -0
- package/lib/cjs/geometry3d/GrowableFloat64Array.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/GrowableFloat64Array.js +0 -0
- package/lib/cjs/geometry3d/GrowableFloat64Array.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/GrowableXYArray.d.ts +0 -0
- package/lib/cjs/geometry3d/GrowableXYArray.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/GrowableXYArray.js +0 -0
- package/lib/cjs/geometry3d/GrowableXYArray.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/GrowableXYZArray.d.ts +0 -0
- package/lib/cjs/geometry3d/GrowableXYZArray.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/GrowableXYZArray.js +0 -0
- package/lib/cjs/geometry3d/GrowableXYZArray.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/IndexedCollectionInterval.d.ts +0 -0
- package/lib/cjs/geometry3d/IndexedCollectionInterval.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/IndexedCollectionInterval.js +0 -0
- package/lib/cjs/geometry3d/IndexedCollectionInterval.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/IndexedXYCollection.d.ts +0 -0
- package/lib/cjs/geometry3d/IndexedXYCollection.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/IndexedXYCollection.js +0 -0
- package/lib/cjs/geometry3d/IndexedXYCollection.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/IndexedXYZCollection.d.ts +0 -0
- package/lib/cjs/geometry3d/IndexedXYZCollection.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/IndexedXYZCollection.js +0 -0
- package/lib/cjs/geometry3d/IndexedXYZCollection.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/LongitudeLatitudeAltitude.d.ts +0 -0
- package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/LongitudeLatitudeAltitude.js +0 -0
- package/lib/cjs/geometry3d/LongitudeLatitudeAltitude.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Matrix3d.d.ts +0 -0
- package/lib/cjs/geometry3d/Matrix3d.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Matrix3d.js +0 -0
- package/lib/cjs/geometry3d/Matrix3d.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/OrderedRotationAngles.d.ts +0 -0
- package/lib/cjs/geometry3d/OrderedRotationAngles.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/OrderedRotationAngles.js +0 -0
- package/lib/cjs/geometry3d/OrderedRotationAngles.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Plane3dByOriginAndUnitNormal.d.ts +0 -0
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Plane3dByOriginAndUnitNormal.js +0 -0
- package/lib/cjs/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Plane3dByOriginAndVectors.d.ts +0 -0
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Plane3dByOriginAndVectors.js +0 -0
- package/lib/cjs/geometry3d/Plane3dByOriginAndVectors.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Point2dArrayCarrier.d.ts +0 -0
- package/lib/cjs/geometry3d/Point2dArrayCarrier.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Point2dArrayCarrier.js +0 -0
- package/lib/cjs/geometry3d/Point2dArrayCarrier.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Point2dVector2d.d.ts +0 -0
- package/lib/cjs/geometry3d/Point2dVector2d.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Point2dVector2d.js +0 -0
- package/lib/cjs/geometry3d/Point2dVector2d.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Point3dArrayCarrier.d.ts +0 -0
- package/lib/cjs/geometry3d/Point3dArrayCarrier.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Point3dArrayCarrier.js +0 -0
- package/lib/cjs/geometry3d/Point3dArrayCarrier.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Point3dVector3d.d.ts +0 -0
- package/lib/cjs/geometry3d/Point3dVector3d.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Point3dVector3d.js +0 -0
- package/lib/cjs/geometry3d/Point3dVector3d.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/PointHelpers.d.ts +0 -0
- package/lib/cjs/geometry3d/PointHelpers.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/PointHelpers.js +0 -0
- package/lib/cjs/geometry3d/PointHelpers.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/PointStreaming.d.ts +0 -0
- package/lib/cjs/geometry3d/PointStreaming.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/PointStreaming.js +0 -0
- package/lib/cjs/geometry3d/PointStreaming.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/PolygonOps.d.ts +0 -0
- package/lib/cjs/geometry3d/PolygonOps.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/PolygonOps.js +0 -0
- package/lib/cjs/geometry3d/PolygonOps.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/PolylineCompressionByEdgeOffset.d.ts +0 -0
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/PolylineCompressionByEdgeOffset.js +0 -0
- package/lib/cjs/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/PolylineOps.d.ts +0 -0
- package/lib/cjs/geometry3d/PolylineOps.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/PolylineOps.js +0 -0
- package/lib/cjs/geometry3d/PolylineOps.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Range.d.ts +0 -0
- package/lib/cjs/geometry3d/Range.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Range.js +0 -0
- package/lib/cjs/geometry3d/Range.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Ray3d.d.ts +0 -0
- package/lib/cjs/geometry3d/Ray3d.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Ray3d.js +0 -0
- package/lib/cjs/geometry3d/Ray3d.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/ReusableObjectCache.d.ts +0 -0
- package/lib/cjs/geometry3d/ReusableObjectCache.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/ReusableObjectCache.js +0 -0
- package/lib/cjs/geometry3d/ReusableObjectCache.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Segment1d.d.ts +0 -0
- package/lib/cjs/geometry3d/Segment1d.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Segment1d.js +0 -0
- package/lib/cjs/geometry3d/Segment1d.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/SortablePolygon.d.ts +0 -0
- package/lib/cjs/geometry3d/SortablePolygon.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/SortablePolygon.js +0 -0
- package/lib/cjs/geometry3d/SortablePolygon.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Transform.d.ts +0 -0
- package/lib/cjs/geometry3d/Transform.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/Transform.js +0 -0
- package/lib/cjs/geometry3d/Transform.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/UVSurfaceOps.d.ts +0 -0
- package/lib/cjs/geometry3d/UVSurfaceOps.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/UVSurfaceOps.js +0 -0
- package/lib/cjs/geometry3d/UVSurfaceOps.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/XYZProps.d.ts +0 -0
- package/lib/cjs/geometry3d/XYZProps.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/XYZProps.js +0 -0
- package/lib/cjs/geometry3d/XYZProps.js.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/YawPitchRollAngles.d.ts +0 -0
- package/lib/cjs/geometry3d/YawPitchRollAngles.d.ts.map +1 -0
- package/lib/{geometry3d → cjs/geometry3d}/YawPitchRollAngles.js +0 -0
- package/lib/cjs/geometry3d/YawPitchRollAngles.js.map +1 -0
- package/lib/{geometry4d → cjs/geometry4d}/Map4d.d.ts +0 -0
- package/lib/cjs/geometry4d/Map4d.d.ts.map +1 -0
- package/lib/{geometry4d → cjs/geometry4d}/Map4d.js +0 -0
- package/lib/cjs/geometry4d/Map4d.js.map +1 -0
- package/lib/{geometry4d → cjs/geometry4d}/Matrix4d.d.ts +0 -0
- package/lib/cjs/geometry4d/Matrix4d.d.ts.map +1 -0
- package/lib/{geometry4d → cjs/geometry4d}/Matrix4d.js +0 -0
- package/lib/cjs/geometry4d/Matrix4d.js.map +1 -0
- package/lib/{geometry4d → cjs/geometry4d}/MomentData.d.ts +0 -0
- package/lib/cjs/geometry4d/MomentData.d.ts.map +1 -0
- package/lib/{geometry4d → cjs/geometry4d}/MomentData.js +0 -0
- package/lib/cjs/geometry4d/MomentData.js.map +1 -0
- package/lib/{geometry4d → cjs/geometry4d}/PlaneByOriginAndVectors4d.d.ts +0 -0
- package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.d.ts.map +1 -0
- package/lib/{geometry4d → cjs/geometry4d}/PlaneByOriginAndVectors4d.js +0 -0
- package/lib/cjs/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -0
- package/lib/{geometry4d → cjs/geometry4d}/Point4d.d.ts +0 -0
- package/lib/cjs/geometry4d/Point4d.d.ts.map +1 -0
- package/lib/{geometry4d → cjs/geometry4d}/Point4d.js +0 -0
- package/lib/cjs/geometry4d/Point4d.js.map +1 -0
- package/lib/{numerics → cjs/numerics}/BandedSystem.d.ts +0 -0
- package/lib/cjs/numerics/BandedSystem.d.ts.map +1 -0
- package/lib/{numerics → cjs/numerics}/BandedSystem.js +0 -0
- package/lib/cjs/numerics/BandedSystem.js.map +1 -0
- package/lib/{numerics → cjs/numerics}/BezierPolynomials.d.ts +0 -0
- package/lib/cjs/numerics/BezierPolynomials.d.ts.map +1 -0
- package/lib/{numerics → cjs/numerics}/BezierPolynomials.js +0 -0
- package/lib/cjs/numerics/BezierPolynomials.js.map +1 -0
- package/lib/{numerics → cjs/numerics}/ClusterableArray.d.ts +0 -0
- package/lib/cjs/numerics/ClusterableArray.d.ts.map +1 -0
- package/lib/{numerics → cjs/numerics}/ClusterableArray.js +0 -0
- package/lib/cjs/numerics/ClusterableArray.js.map +1 -0
- package/lib/{numerics → cjs/numerics}/Complex.d.ts +0 -0
- package/lib/cjs/numerics/Complex.d.ts.map +1 -0
- package/lib/{numerics → cjs/numerics}/Complex.js +0 -0
- package/lib/cjs/numerics/Complex.js.map +1 -0
- package/lib/{numerics → cjs/numerics}/ConvexPolygon2d.d.ts +0 -0
- package/lib/cjs/numerics/ConvexPolygon2d.d.ts.map +1 -0
- package/lib/{numerics → cjs/numerics}/ConvexPolygon2d.js +0 -0
- package/lib/cjs/numerics/ConvexPolygon2d.js.map +1 -0
- package/lib/{numerics → cjs/numerics}/Newton.d.ts +0 -0
- package/lib/cjs/numerics/Newton.d.ts.map +1 -0
- package/lib/{numerics → cjs/numerics}/Newton.js +0 -0
- package/lib/cjs/numerics/Newton.js.map +1 -0
- package/lib/{numerics → cjs/numerics}/PascalCoefficients.d.ts +0 -0
- package/lib/cjs/numerics/PascalCoefficients.d.ts.map +1 -0
- package/lib/{numerics → cjs/numerics}/PascalCoefficients.js +0 -0
- package/lib/cjs/numerics/PascalCoefficients.js.map +1 -0
- package/lib/{numerics → cjs/numerics}/PolarData.d.ts +0 -0
- package/lib/cjs/numerics/PolarData.d.ts.map +1 -0
- package/lib/{numerics → cjs/numerics}/PolarData.js +0 -0
- package/lib/cjs/numerics/PolarData.js.map +1 -0
- package/lib/{numerics → cjs/numerics}/Polynomials.d.ts +0 -0
- package/lib/cjs/numerics/Polynomials.d.ts.map +1 -0
- package/lib/{numerics → cjs/numerics}/Polynomials.js +0 -0
- package/lib/cjs/numerics/Polynomials.js.map +1 -0
- package/lib/{numerics → cjs/numerics}/Quadrature.d.ts +0 -0
- package/lib/cjs/numerics/Quadrature.d.ts.map +1 -0
- package/lib/{numerics → cjs/numerics}/Quadrature.js +0 -0
- package/lib/cjs/numerics/Quadrature.js.map +1 -0
- package/lib/{numerics → cjs/numerics}/Range1dArray.d.ts +0 -0
- package/lib/cjs/numerics/Range1dArray.d.ts.map +1 -0
- package/lib/{numerics → cjs/numerics}/Range1dArray.js +0 -0
- package/lib/cjs/numerics/Range1dArray.js.map +1 -0
- package/lib/{numerics → cjs/numerics}/TriDiagonalSystem.d.ts +0 -0
- package/lib/cjs/numerics/TriDiagonalSystem.d.ts.map +1 -0
- package/lib/{numerics → cjs/numerics}/TriDiagonalSystem.js +0 -0
- package/lib/cjs/numerics/TriDiagonalSystem.js.map +1 -0
- package/lib/{numerics → cjs/numerics}/UnionFind.d.ts +0 -0
- package/lib/cjs/numerics/UnionFind.d.ts.map +1 -0
- package/lib/{numerics → cjs/numerics}/UnionFind.js +0 -0
- package/lib/cjs/numerics/UnionFind.js.map +1 -0
- package/lib/{numerics → cjs/numerics}/UsageSums.d.ts +0 -0
- package/lib/cjs/numerics/UsageSums.d.ts.map +1 -0
- package/lib/{numerics → cjs/numerics}/UsageSums.js +0 -0
- package/lib/cjs/numerics/UsageSums.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/AuxData.d.ts +0 -0
- package/lib/cjs/polyface/AuxData.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/AuxData.js +0 -0
- package/lib/cjs/polyface/AuxData.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/BoxTopology.d.ts +0 -0
- package/lib/cjs/polyface/BoxTopology.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/BoxTopology.js +0 -0
- package/lib/cjs/polyface/BoxTopology.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/FacetFaceData.d.ts +0 -0
- package/lib/cjs/polyface/FacetFaceData.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/FacetFaceData.js +0 -0
- package/lib/cjs/polyface/FacetFaceData.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/FacetOrientation.d.ts +0 -0
- package/lib/cjs/polyface/FacetOrientation.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/FacetOrientation.js +0 -0
- package/lib/cjs/polyface/FacetOrientation.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/GreedyTriangulationBetweenLineStrings.d.ts +0 -0
- package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/GreedyTriangulationBetweenLineStrings.js +0 -0
- package/lib/cjs/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/IndexedEdgeMatcher.d.ts +0 -0
- package/lib/cjs/polyface/IndexedEdgeMatcher.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/IndexedEdgeMatcher.js +0 -0
- package/lib/cjs/polyface/IndexedEdgeMatcher.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/IndexedPolyfaceVisitor.d.ts +0 -0
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/IndexedPolyfaceVisitor.js +0 -0
- package/lib/cjs/polyface/IndexedPolyfaceVisitor.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/Polyface.d.ts +0 -0
- package/lib/cjs/polyface/Polyface.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/Polyface.js +0 -0
- package/lib/cjs/polyface/Polyface.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/PolyfaceBuilder.d.ts +0 -0
- package/lib/cjs/polyface/PolyfaceBuilder.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/PolyfaceBuilder.js +0 -0
- package/lib/cjs/polyface/PolyfaceBuilder.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/PolyfaceClip.d.ts +0 -0
- package/lib/cjs/polyface/PolyfaceClip.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/PolyfaceClip.js +0 -0
- package/lib/cjs/polyface/PolyfaceClip.js.map +1 -0
- package/lib/cjs/polyface/PolyfaceData.d.ts +206 -0
- package/lib/cjs/polyface/PolyfaceData.d.ts.map +1 -0
- package/lib/cjs/polyface/PolyfaceData.js +531 -0
- package/lib/cjs/polyface/PolyfaceData.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/PolyfaceQuery.d.ts +0 -0
- package/lib/cjs/polyface/PolyfaceQuery.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/PolyfaceQuery.js +0 -0
- package/lib/cjs/polyface/PolyfaceQuery.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/RangeLengthData.d.ts +0 -0
- package/lib/cjs/polyface/RangeLengthData.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/RangeLengthData.js +0 -0
- package/lib/cjs/polyface/RangeLengthData.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/TaggedNumericData.d.ts +0 -0
- package/lib/cjs/polyface/TaggedNumericData.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/TaggedNumericData.js +0 -0
- package/lib/cjs/polyface/TaggedNumericData.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/TriangleCandidate.d.ts +0 -0
- package/lib/cjs/polyface/TriangleCandidate.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/TriangleCandidate.js +0 -0
- package/lib/cjs/polyface/TriangleCandidate.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/multiclip/BuildAverageNormalsContext.d.ts +0 -0
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/multiclip/BuildAverageNormalsContext.js +0 -0
- package/lib/cjs/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/multiclip/GriddedRaggedRange2dSet.d.ts +0 -0
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/multiclip/GriddedRaggedRange2dSet.js +0 -0
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts +0 -0
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/multiclip/GriddedRaggedRange2dSetWithOverflow.js +0 -0
- package/lib/cjs/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/multiclip/LinearSearchRange2dArray.d.ts +0 -0
- package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/multiclip/LinearSearchRange2dArray.js +0 -0
- package/lib/cjs/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/multiclip/Range2dSearchInterface.d.ts +0 -0
- package/lib/cjs/polyface/multiclip/Range2dSearchInterface.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/multiclip/Range2dSearchInterface.js +0 -0
- package/lib/cjs/polyface/multiclip/Range2dSearchInterface.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/multiclip/RangeSearch.d.ts +0 -0
- package/lib/cjs/polyface/multiclip/RangeSearch.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/multiclip/RangeSearch.js +0 -0
- package/lib/cjs/polyface/multiclip/RangeSearch.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/multiclip/SweepLineStringToFacetContext.d.ts +0 -0
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/multiclip/SweepLineStringToFacetContext.js +0 -0
- package/lib/cjs/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -0
- package/lib/{polyface → cjs/polyface}/multiclip/XYPointBuckets.d.ts +0 -0
- package/lib/cjs/polyface/multiclip/XYPointBuckets.d.ts.map +1 -0
- package/lib/{polyface → cjs/polyface}/multiclip/XYPointBuckets.js +0 -0
- package/lib/cjs/polyface/multiclip/XYPointBuckets.js.map +1 -0
- package/lib/{serialization → cjs/serialization}/BGFBAccessors.d.ts +0 -0
- package/lib/cjs/serialization/BGFBAccessors.d.ts.map +1 -0
- package/lib/{serialization → cjs/serialization}/BGFBAccessors.js +0 -0
- package/lib/cjs/serialization/BGFBAccessors.js.map +1 -0
- package/lib/{serialization → cjs/serialization}/BGFBReader.d.ts +0 -0
- package/lib/cjs/serialization/BGFBReader.d.ts.map +1 -0
- package/lib/{serialization → cjs/serialization}/BGFBReader.js +0 -0
- package/lib/cjs/serialization/BGFBReader.js.map +1 -0
- package/lib/{serialization → cjs/serialization}/BGFBWriter.d.ts +0 -0
- package/lib/cjs/serialization/BGFBWriter.d.ts.map +1 -0
- package/lib/{serialization → cjs/serialization}/BGFBWriter.js +0 -0
- package/lib/cjs/serialization/BGFBWriter.js.map +1 -0
- package/lib/{serialization → cjs/serialization}/BentleyGeometryFlatBuffer.d.ts +0 -0
- package/lib/cjs/serialization/BentleyGeometryFlatBuffer.d.ts.map +1 -0
- package/lib/{serialization → cjs/serialization}/BentleyGeometryFlatBuffer.js +0 -0
- package/lib/cjs/serialization/BentleyGeometryFlatBuffer.js.map +1 -0
- package/lib/{serialization → cjs/serialization}/DeepCompare.d.ts +0 -0
- package/lib/cjs/serialization/DeepCompare.d.ts.map +1 -0
- package/lib/{serialization → cjs/serialization}/DeepCompare.js +0 -0
- package/lib/cjs/serialization/DeepCompare.js.map +1 -0
- package/lib/{serialization → cjs/serialization}/GeometrySamples.d.ts +0 -0
- package/lib/cjs/serialization/GeometrySamples.d.ts.map +1 -0
- package/lib/{serialization → cjs/serialization}/GeometrySamples.js +0 -0
- package/lib/cjs/serialization/GeometrySamples.js.map +1 -0
- package/lib/{serialization → cjs/serialization}/IModelJsonSchema.d.ts +0 -0
- package/lib/cjs/serialization/IModelJsonSchema.d.ts.map +1 -0
- package/lib/{serialization → cjs/serialization}/IModelJsonSchema.js +0 -0
- package/lib/cjs/serialization/IModelJsonSchema.js.map +1 -0
- package/lib/{solid → cjs/solid}/Box.d.ts +0 -0
- package/lib/cjs/solid/Box.d.ts.map +1 -0
- package/lib/{solid → cjs/solid}/Box.js +0 -0
- package/lib/cjs/solid/Box.js.map +1 -0
- package/lib/{solid → cjs/solid}/Cone.d.ts +0 -0
- package/lib/cjs/solid/Cone.d.ts.map +1 -0
- package/lib/{solid → cjs/solid}/Cone.js +0 -0
- package/lib/cjs/solid/Cone.js.map +1 -0
- package/lib/{solid → cjs/solid}/LinearSweep.d.ts +0 -0
- package/lib/cjs/solid/LinearSweep.d.ts.map +1 -0
- package/lib/{solid → cjs/solid}/LinearSweep.js +0 -0
- package/lib/cjs/solid/LinearSweep.js.map +1 -0
- package/lib/{solid → cjs/solid}/RotationalSweep.d.ts +0 -0
- package/lib/cjs/solid/RotationalSweep.d.ts.map +1 -0
- package/lib/{solid → cjs/solid}/RotationalSweep.js +0 -0
- package/lib/cjs/solid/RotationalSweep.js.map +1 -0
- package/lib/{solid → cjs/solid}/RuledSweep.d.ts +0 -0
- package/lib/cjs/solid/RuledSweep.d.ts.map +1 -0
- package/lib/{solid → cjs/solid}/RuledSweep.js +0 -0
- package/lib/cjs/solid/RuledSweep.js.map +1 -0
- package/lib/{solid → cjs/solid}/SolidPrimitive.d.ts +0 -0
- package/lib/cjs/solid/SolidPrimitive.d.ts.map +1 -0
- package/lib/{solid → cjs/solid}/SolidPrimitive.js +0 -0
- package/lib/cjs/solid/SolidPrimitive.js.map +1 -0
- package/lib/{solid → cjs/solid}/Sphere.d.ts +0 -0
- package/lib/cjs/solid/Sphere.d.ts.map +1 -0
- package/lib/{solid → cjs/solid}/Sphere.js +0 -0
- package/lib/cjs/solid/Sphere.js.map +1 -0
- package/lib/{solid → cjs/solid}/SweepContour.d.ts +0 -0
- package/lib/cjs/solid/SweepContour.d.ts.map +1 -0
- package/lib/{solid → cjs/solid}/SweepContour.js +0 -0
- package/lib/cjs/solid/SweepContour.js.map +1 -0
- package/lib/{solid → cjs/solid}/TorusPipe.d.ts +0 -0
- package/lib/cjs/solid/TorusPipe.d.ts.map +1 -0
- package/lib/{solid → cjs/solid}/TorusPipe.js +0 -0
- package/lib/cjs/solid/TorusPipe.js.map +1 -0
- package/lib/{topology → cjs/topology}/ChainMerge.d.ts +0 -0
- package/lib/cjs/topology/ChainMerge.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/ChainMerge.js +0 -0
- package/lib/cjs/topology/ChainMerge.js.map +1 -0
- package/lib/{topology → cjs/topology}/Graph.d.ts +0 -0
- package/lib/cjs/topology/Graph.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/Graph.js +0 -0
- package/lib/cjs/topology/Graph.js.map +1 -0
- package/lib/{topology → cjs/topology}/HalfEdgeGraphSearch.d.ts +0 -0
- package/lib/cjs/topology/HalfEdgeGraphSearch.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/HalfEdgeGraphSearch.js +0 -0
- package/lib/cjs/topology/HalfEdgeGraphSearch.js.map +1 -0
- package/lib/{topology → cjs/topology}/HalfEdgeGraphSpineContext.d.ts +0 -0
- package/lib/cjs/topology/HalfEdgeGraphSpineContext.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/HalfEdgeGraphSpineContext.js +0 -0
- package/lib/cjs/topology/HalfEdgeGraphSpineContext.js.map +1 -0
- package/lib/{topology → cjs/topology}/HalfEdgeGraphValidation.d.ts +0 -0
- package/lib/cjs/topology/HalfEdgeGraphValidation.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/HalfEdgeGraphValidation.js +0 -0
- package/lib/cjs/topology/HalfEdgeGraphValidation.js.map +1 -0
- package/lib/{topology → cjs/topology}/HalfEdgeMarkSet.d.ts +0 -0
- package/lib/cjs/topology/HalfEdgeMarkSet.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/HalfEdgeMarkSet.js +0 -0
- package/lib/cjs/topology/HalfEdgeMarkSet.js.map +1 -0
- package/lib/{topology → cjs/topology}/HalfEdgeNodeXYZUV.d.ts +0 -0
- package/lib/cjs/topology/HalfEdgeNodeXYZUV.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/HalfEdgeNodeXYZUV.js +0 -0
- package/lib/cjs/topology/HalfEdgeNodeXYZUV.js.map +1 -0
- package/lib/{topology → cjs/topology}/HalfEdgePointInGraphSearch.d.ts +0 -0
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/HalfEdgePointInGraphSearch.js +0 -0
- package/lib/cjs/topology/HalfEdgePointInGraphSearch.js.map +1 -0
- package/lib/{topology → cjs/topology}/HalfEdgePositionDetail.d.ts +0 -0
- package/lib/cjs/topology/HalfEdgePositionDetail.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/HalfEdgePositionDetail.js +0 -0
- package/lib/cjs/topology/HalfEdgePositionDetail.js.map +1 -0
- package/lib/{topology → cjs/topology}/HalfEdgePriorityQueue.d.ts +0 -0
- package/lib/cjs/topology/HalfEdgePriorityQueue.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/HalfEdgePriorityQueue.js +0 -0
- package/lib/cjs/topology/HalfEdgePriorityQueue.js.map +1 -0
- package/lib/{topology → cjs/topology}/InsertAndRetriangulateContext.d.ts +0 -0
- package/lib/cjs/topology/InsertAndRetriangulateContext.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/InsertAndRetriangulateContext.js +0 -0
- package/lib/cjs/topology/InsertAndRetriangulateContext.js.map +1 -0
- package/lib/{topology → cjs/topology}/MaskManager.d.ts +0 -0
- package/lib/cjs/topology/MaskManager.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/MaskManager.js +0 -0
- package/lib/cjs/topology/MaskManager.js.map +1 -0
- package/lib/{topology → cjs/topology}/Merging.d.ts +0 -0
- package/lib/cjs/topology/Merging.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/Merging.js +0 -0
- package/lib/cjs/topology/Merging.js.map +1 -0
- package/lib/{topology → cjs/topology}/RegularizeFace.d.ts +0 -0
- package/lib/cjs/topology/RegularizeFace.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/RegularizeFace.js +0 -0
- package/lib/cjs/topology/RegularizeFace.js.map +1 -0
- package/lib/{topology → cjs/topology}/SignedDataSummary.d.ts +0 -0
- package/lib/cjs/topology/SignedDataSummary.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/SignedDataSummary.js +0 -0
- package/lib/cjs/topology/SignedDataSummary.js.map +1 -0
- package/lib/{topology → cjs/topology}/Triangulation.d.ts +0 -0
- package/lib/cjs/topology/Triangulation.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/Triangulation.js +0 -0
- package/lib/cjs/topology/Triangulation.js.map +1 -0
- package/lib/{topology → cjs/topology}/XYParitySearchContext.d.ts +0 -0
- package/lib/cjs/topology/XYParitySearchContext.d.ts.map +1 -0
- package/lib/{topology → cjs/topology}/XYParitySearchContext.js +0 -0
- package/lib/cjs/topology/XYParitySearchContext.js.map +1 -0
- package/lib/esm/Constant.d.ts +26 -0
- package/lib/esm/Constant.d.ts.map +1 -0
- package/lib/esm/Constant.js +30 -0
- package/lib/esm/Constant.js.map +1 -0
- package/lib/esm/Geometry.d.ts +498 -0
- package/lib/esm/Geometry.d.ts.map +1 -0
- package/lib/esm/Geometry.js +776 -0
- package/lib/esm/Geometry.js.map +1 -0
- package/lib/esm/bspline/AkimaCurve3d.d.ts +97 -0
- package/lib/esm/bspline/AkimaCurve3d.d.ts.map +1 -0
- package/lib/esm/bspline/AkimaCurve3d.js +158 -0
- package/lib/esm/bspline/AkimaCurve3d.js.map +1 -0
- package/lib/esm/bspline/BSpline1dNd.d.ts +96 -0
- package/lib/esm/bspline/BSpline1dNd.d.ts.map +1 -0
- package/lib/esm/bspline/BSpline1dNd.js +191 -0
- package/lib/esm/bspline/BSpline1dNd.js.map +1 -0
- package/lib/esm/bspline/BSplineCurve.d.ts +310 -0
- package/lib/esm/bspline/BSplineCurve.d.ts.map +1 -0
- package/lib/esm/bspline/BSplineCurve.js +608 -0
- package/lib/esm/bspline/BSplineCurve.js.map +1 -0
- package/lib/esm/bspline/BSplineCurve3dH.d.ts +140 -0
- package/lib/esm/bspline/BSplineCurve3dH.d.ts.map +1 -0
- package/lib/esm/bspline/BSplineCurve3dH.js +421 -0
- package/lib/esm/bspline/BSplineCurve3dH.js.map +1 -0
- package/lib/esm/bspline/BSplineCurveOps.d.ts +159 -0
- package/lib/esm/bspline/BSplineCurveOps.d.ts.map +1 -0
- package/lib/esm/bspline/BSplineCurveOps.js +805 -0
- package/lib/esm/bspline/BSplineCurveOps.js.map +1 -0
- package/lib/esm/bspline/BSplineSurface.d.ts +491 -0
- package/lib/esm/bspline/BSplineSurface.d.ts.map +1 -0
- package/lib/esm/bspline/BSplineSurface.js +837 -0
- package/lib/esm/bspline/BSplineSurface.js.map +1 -0
- package/lib/esm/bspline/Bezier1dNd.d.ts +113 -0
- package/lib/esm/bspline/Bezier1dNd.d.ts.map +1 -0
- package/lib/esm/bspline/Bezier1dNd.js +341 -0
- package/lib/esm/bspline/Bezier1dNd.js.map +1 -0
- package/lib/esm/bspline/BezierCurve3d.d.ts +76 -0
- package/lib/esm/bspline/BezierCurve3d.d.ts.map +1 -0
- package/lib/esm/bspline/BezierCurve3d.js +214 -0
- package/lib/esm/bspline/BezierCurve3d.js.map +1 -0
- package/lib/esm/bspline/BezierCurve3dH.d.ts +107 -0
- package/lib/esm/bspline/BezierCurve3dH.d.ts.map +1 -0
- package/lib/esm/bspline/BezierCurve3dH.js +348 -0
- package/lib/esm/bspline/BezierCurve3dH.js.map +1 -0
- package/lib/esm/bspline/BezierCurveBase.d.ts +111 -0
- package/lib/esm/bspline/BezierCurveBase.d.ts.map +1 -0
- package/lib/esm/bspline/BezierCurveBase.js +196 -0
- package/lib/esm/bspline/BezierCurveBase.js.map +1 -0
- package/lib/esm/bspline/InterpolationCurve3d.d.ts +163 -0
- package/lib/esm/bspline/InterpolationCurve3d.d.ts.map +1 -0
- package/lib/esm/bspline/InterpolationCurve3d.js +281 -0
- package/lib/esm/bspline/InterpolationCurve3d.js.map +1 -0
- package/lib/esm/bspline/KnotVector.d.ts +160 -0
- package/lib/esm/bspline/KnotVector.d.ts.map +1 -0
- package/lib/esm/bspline/KnotVector.js +427 -0
- package/lib/esm/bspline/KnotVector.js.map +1 -0
- package/lib/esm/bspline/SurfaceLocationDetail.d.ts +52 -0
- package/lib/esm/bspline/SurfaceLocationDetail.d.ts.map +1 -0
- package/lib/esm/bspline/SurfaceLocationDetail.js +55 -0
- package/lib/esm/bspline/SurfaceLocationDetail.js.map +1 -0
- package/lib/esm/clipping/AlternatingConvexClipTree.d.ts +165 -0
- package/lib/esm/clipping/AlternatingConvexClipTree.d.ts.map +1 -0
- package/lib/esm/clipping/AlternatingConvexClipTree.js +519 -0
- package/lib/esm/clipping/AlternatingConvexClipTree.js.map +1 -0
- package/lib/esm/clipping/BooleanClipFactory.d.ts +80 -0
- package/lib/esm/clipping/BooleanClipFactory.d.ts.map +1 -0
- package/lib/esm/clipping/BooleanClipFactory.js +198 -0
- package/lib/esm/clipping/BooleanClipFactory.js.map +1 -0
- package/lib/esm/clipping/BooleanClipNode.d.ts +103 -0
- package/lib/esm/clipping/BooleanClipNode.d.ts.map +1 -0
- package/lib/esm/clipping/BooleanClipNode.js +255 -0
- package/lib/esm/clipping/BooleanClipNode.js.map +1 -0
- package/lib/esm/clipping/ClipPlane.d.ts +258 -0
- package/lib/esm/clipping/ClipPlane.d.ts.map +1 -0
- package/lib/esm/clipping/ClipPlane.js +505 -0
- package/lib/esm/clipping/ClipPlane.js.map +1 -0
- package/lib/esm/clipping/ClipPrimitive.d.ts +270 -0
- package/lib/esm/clipping/ClipPrimitive.d.ts.map +1 -0
- package/lib/esm/clipping/ClipPrimitive.js +620 -0
- package/lib/esm/clipping/ClipPrimitive.js.map +1 -0
- package/lib/esm/clipping/ClipUtils.d.ts +278 -0
- package/lib/esm/clipping/ClipUtils.d.ts.map +1 -0
- package/lib/esm/clipping/ClipUtils.js +593 -0
- package/lib/esm/clipping/ClipUtils.js.map +1 -0
- package/lib/esm/clipping/ClipVector.d.ts +154 -0
- package/lib/esm/clipping/ClipVector.d.ts.map +1 -0
- package/lib/esm/clipping/ClipVector.js +388 -0
- package/lib/esm/clipping/ClipVector.js.map +1 -0
- package/lib/esm/clipping/ConvexClipPlaneSet.d.ts +250 -0
- package/lib/esm/clipping/ConvexClipPlaneSet.d.ts.map +1 -0
- package/lib/esm/clipping/ConvexClipPlaneSet.js +685 -0
- package/lib/esm/clipping/ConvexClipPlaneSet.js.map +1 -0
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts +126 -0
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.d.ts.map +1 -0
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js +325 -0
- package/lib/esm/clipping/UnionOfConvexClipPlaneSets.js.map +1 -0
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.d.ts +42 -0
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.d.ts.map +1 -0
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js +160 -0
- package/lib/esm/clipping/internalContexts/LineStringOffsetClipperContext.js.map +1 -0
- package/lib/esm/core-geometry.d.ts +228 -0
- package/lib/esm/core-geometry.d.ts.map +1 -0
- package/lib/esm/core-geometry.js +247 -0
- package/lib/esm/core-geometry.js.map +1 -0
- package/lib/esm/curve/Arc3d.d.ts +477 -0
- package/lib/esm/curve/Arc3d.d.ts.map +1 -0
- package/lib/esm/curve/Arc3d.js +905 -0
- package/lib/esm/curve/Arc3d.js.map +1 -0
- package/lib/esm/curve/ChainCollectorContext.d.ts +65 -0
- package/lib/esm/curve/ChainCollectorContext.d.ts.map +1 -0
- package/lib/esm/curve/ChainCollectorContext.js +175 -0
- package/lib/esm/curve/ChainCollectorContext.js.map +1 -0
- package/lib/esm/curve/ConstructCurveBetweenCurves.d.ts +46 -0
- package/lib/esm/curve/ConstructCurveBetweenCurves.d.ts.map +1 -0
- package/lib/esm/curve/ConstructCurveBetweenCurves.js +112 -0
- package/lib/esm/curve/ConstructCurveBetweenCurves.js.map +1 -0
- package/lib/esm/curve/CoordinateXYZ.d.ts +54 -0
- package/lib/esm/curve/CoordinateXYZ.d.ts.map +1 -0
- package/lib/esm/curve/CoordinateXYZ.js +75 -0
- package/lib/esm/curve/CoordinateXYZ.js.map +1 -0
- package/lib/esm/curve/CurveChain.d.ts +17 -0
- package/lib/esm/curve/CurveChain.d.ts.map +1 -0
- package/lib/esm/curve/CurveChain.js +6 -0
- package/lib/esm/curve/CurveChain.js.map +1 -0
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts +234 -0
- package/lib/esm/curve/CurveChainWithDistanceIndex.d.ts.map +1 -0
- package/lib/esm/curve/CurveChainWithDistanceIndex.js +513 -0
- package/lib/esm/curve/CurveChainWithDistanceIndex.js.map +1 -0
- package/lib/esm/curve/CurveCollection.d.ts +204 -0
- package/lib/esm/curve/CurveCollection.d.ts.map +1 -0
- package/lib/esm/curve/CurveCollection.js +338 -0
- package/lib/esm/curve/CurveCollection.js.map +1 -0
- package/lib/esm/curve/CurveCurve.d.ts +56 -0
- package/lib/esm/curve/CurveCurve.d.ts.map +1 -0
- package/lib/esm/curve/CurveCurve.js +96 -0
- package/lib/esm/curve/CurveCurve.js.map +1 -0
- package/lib/esm/curve/CurveCurveCloseApproachXY.d.ts +158 -0
- package/lib/esm/curve/CurveCurveCloseApproachXY.d.ts.map +1 -0
- package/lib/esm/curve/CurveCurveCloseApproachXY.js +720 -0
- package/lib/esm/curve/CurveCurveCloseApproachXY.js.map +1 -0
- package/lib/esm/curve/CurveCurveIntersectXY.d.ts +148 -0
- package/lib/esm/curve/CurveCurveIntersectXY.d.ts.map +1 -0
- package/lib/esm/curve/CurveCurveIntersectXY.js +814 -0
- package/lib/esm/curve/CurveCurveIntersectXY.js.map +1 -0
- package/lib/esm/curve/CurveCurveIntersectXYZ.d.ts +101 -0
- package/lib/esm/curve/CurveCurveIntersectXYZ.d.ts.map +1 -0
- package/lib/esm/curve/CurveCurveIntersectXYZ.js +669 -0
- package/lib/esm/curve/CurveCurveIntersectXYZ.js.map +1 -0
- package/lib/esm/curve/CurveExtendMode.d.ts +50 -0
- package/lib/esm/curve/CurveExtendMode.d.ts.map +1 -0
- package/lib/esm/curve/CurveExtendMode.js +96 -0
- package/lib/esm/curve/CurveExtendMode.js.map +1 -0
- package/lib/esm/curve/CurveFactory.d.ts +122 -0
- package/lib/esm/curve/CurveFactory.d.ts.map +1 -0
- package/lib/esm/curve/CurveFactory.js +491 -0
- package/lib/esm/curve/CurveFactory.js.map +1 -0
- package/lib/esm/curve/CurveLocationDetail.d.ts +207 -0
- package/lib/esm/curve/CurveLocationDetail.d.ts.map +1 -0
- package/lib/esm/curve/CurveLocationDetail.js +392 -0
- package/lib/esm/curve/CurveLocationDetail.js.map +1 -0
- package/lib/esm/curve/CurvePrimitive.d.ts +363 -0
- package/lib/esm/curve/CurvePrimitive.d.ts.map +1 -0
- package/lib/esm/curve/CurvePrimitive.js +774 -0
- package/lib/esm/curve/CurvePrimitive.js.map +1 -0
- package/lib/esm/curve/CurveProcessor.d.ts +76 -0
- package/lib/esm/curve/CurveProcessor.d.ts.map +1 -0
- package/lib/esm/curve/CurveProcessor.js +122 -0
- package/lib/esm/curve/CurveProcessor.js.map +1 -0
- package/lib/esm/curve/CurveWireMomentsXYZ.d.ts +25 -0
- package/lib/esm/curve/CurveWireMomentsXYZ.d.ts.map +1 -0
- package/lib/esm/curve/CurveWireMomentsXYZ.js +65 -0
- package/lib/esm/curve/CurveWireMomentsXYZ.js.map +1 -0
- package/lib/esm/curve/GeometryQuery.d.ts +93 -0
- package/lib/esm/curve/GeometryQuery.d.ts.map +1 -0
- package/lib/esm/curve/GeometryQuery.js +68 -0
- package/lib/esm/curve/GeometryQuery.js.map +1 -0
- package/lib/esm/curve/LineSegment3d.d.ts +176 -0
- package/lib/esm/curve/LineSegment3d.d.ts.map +1 -0
- package/lib/esm/curve/LineSegment3d.js +315 -0
- package/lib/esm/curve/LineSegment3d.js.map +1 -0
- package/lib/esm/curve/LineString3d.d.ts +419 -0
- package/lib/esm/curve/LineString3d.d.ts.map +1 -0
- package/lib/esm/curve/LineString3d.js +1280 -0
- package/lib/esm/curve/LineString3d.js.map +1 -0
- package/lib/esm/curve/Loop.d.ts +82 -0
- package/lib/esm/curve/Loop.d.ts.map +1 -0
- package/lib/esm/curve/Loop.js +93 -0
- package/lib/esm/curve/Loop.js.map +1 -0
- package/lib/esm/curve/ParityRegion.d.ts +59 -0
- package/lib/esm/curve/ParityRegion.d.ts.map +1 -0
- package/lib/esm/curve/ParityRegion.js +113 -0
- package/lib/esm/curve/ParityRegion.js.map +1 -0
- package/lib/esm/curve/Path.d.ts +47 -0
- package/lib/esm/curve/Path.d.ts.map +1 -0
- package/lib/esm/curve/Path.js +71 -0
- package/lib/esm/curve/Path.js.map +1 -0
- package/lib/esm/curve/PointString3d.d.ts +78 -0
- package/lib/esm/curve/PointString3d.d.ts.map +1 -0
- package/lib/esm/curve/PointString3d.js +174 -0
- package/lib/esm/curve/PointString3d.js.map +1 -0
- package/lib/esm/curve/ProxyCurve.d.ts +59 -0
- package/lib/esm/curve/ProxyCurve.d.ts.map +1 -0
- package/lib/esm/curve/ProxyCurve.js +78 -0
- package/lib/esm/curve/ProxyCurve.js.map +1 -0
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts +25 -0
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +1 -0
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js +111 -0
- package/lib/esm/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +1 -0
- package/lib/esm/curve/Query/CurveSplitContext.d.ts +16 -0
- package/lib/esm/curve/Query/CurveSplitContext.d.ts.map +1 -0
- package/lib/esm/curve/Query/CurveSplitContext.js +107 -0
- package/lib/esm/curve/Query/CurveSplitContext.js.map +1 -0
- package/lib/esm/curve/Query/CylindricalRange.d.ts +46 -0
- package/lib/esm/curve/Query/CylindricalRange.d.ts.map +1 -0
- package/lib/esm/curve/Query/CylindricalRange.js +111 -0
- package/lib/esm/curve/Query/CylindricalRange.js.map +1 -0
- package/lib/esm/curve/Query/InOutTests.d.ts +32 -0
- package/lib/esm/curve/Query/InOutTests.d.ts.map +1 -0
- package/lib/esm/curve/Query/InOutTests.js +116 -0
- package/lib/esm/curve/Query/InOutTests.js.map +1 -0
- package/lib/esm/curve/Query/PlanarSubdivision.d.ts +16 -0
- package/lib/esm/curve/Query/PlanarSubdivision.d.ts.map +1 -0
- package/lib/esm/curve/Query/PlanarSubdivision.js +220 -0
- package/lib/esm/curve/Query/PlanarSubdivision.js.map +1 -0
- package/lib/esm/curve/Query/StrokeCountChain.d.ts +186 -0
- package/lib/esm/curve/Query/StrokeCountChain.d.ts.map +1 -0
- package/lib/esm/curve/Query/StrokeCountChain.js +429 -0
- package/lib/esm/curve/Query/StrokeCountChain.js.map +1 -0
- package/lib/esm/curve/Query/StrokeCountMap.d.ts +94 -0
- package/lib/esm/curve/Query/StrokeCountMap.d.ts.map +1 -0
- package/lib/esm/curve/Query/StrokeCountMap.js +138 -0
- package/lib/esm/curve/Query/StrokeCountMap.js.map +1 -0
- package/lib/esm/curve/RegionMomentsXY.d.ts +61 -0
- package/lib/esm/curve/RegionMomentsXY.d.ts.map +1 -0
- package/lib/esm/curve/RegionMomentsXY.js +156 -0
- package/lib/esm/curve/RegionMomentsXY.js.map +1 -0
- package/lib/esm/curve/RegionOps.d.ts +320 -0
- package/lib/esm/curve/RegionOps.d.ts.map +1 -0
- package/lib/esm/curve/RegionOps.js +642 -0
- package/lib/esm/curve/RegionOps.js.map +1 -0
- package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts +263 -0
- package/lib/esm/curve/RegionOpsClassificationSweeps.d.ts.map +1 -0
- package/lib/esm/curve/RegionOpsClassificationSweeps.js +703 -0
- package/lib/esm/curve/RegionOpsClassificationSweeps.js.map +1 -0
- package/lib/esm/curve/StrokeOptions.d.ts +94 -0
- package/lib/esm/curve/StrokeOptions.d.ts.map +1 -0
- package/lib/esm/curve/StrokeOptions.js +149 -0
- package/lib/esm/curve/StrokeOptions.js.map +1 -0
- package/lib/esm/curve/UnionRegion.d.ts +49 -0
- package/lib/esm/curve/UnionRegion.d.ts.map +1 -0
- package/lib/esm/curve/UnionRegion.js +75 -0
- package/lib/esm/curve/UnionRegion.js.map +1 -0
- package/lib/esm/curve/internalContexts/CloneCurvesContext.d.ts +23 -0
- package/lib/esm/curve/internalContexts/CloneCurvesContext.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/CloneCurvesContext.js +62 -0
- package/lib/esm/curve/internalContexts/CloneCurvesContext.js.map +1 -0
- package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.d.ts +16 -0
- package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js +36 -0
- package/lib/esm/curve/internalContexts/CloneWithExpandedLineStrings.js.map +1 -0
- package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.d.ts +18 -0
- package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js +32 -0
- package/lib/esm/curve/internalContexts/CountLinearPartsSearchContext.js.map +1 -0
- package/lib/esm/curve/internalContexts/GapSearchContext.d.ts +16 -0
- package/lib/esm/curve/internalContexts/GapSearchContext.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/GapSearchContext.js +34 -0
- package/lib/esm/curve/internalContexts/GapSearchContext.js.map +1 -0
- package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts +114 -0
- package/lib/esm/curve/internalContexts/MultiChainCollector.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/MultiChainCollector.js +403 -0
- package/lib/esm/curve/internalContexts/MultiChainCollector.js.map +1 -0
- package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.d.ts +38 -0
- package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js +88 -0
- package/lib/esm/curve/internalContexts/PlaneAltitudeRangeContext.js.map +1 -0
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts +117 -0
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js +686 -0
- package/lib/esm/curve/internalContexts/PolygonOffsetContext.js.map +1 -0
- package/lib/esm/curve/internalContexts/SumLengthsContext.d.ts +17 -0
- package/lib/esm/curve/internalContexts/SumLengthsContext.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/SumLengthsContext.js +21 -0
- package/lib/esm/curve/internalContexts/SumLengthsContext.js.map +1 -0
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.d.ts +19 -0
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.d.ts.map +1 -0
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.js +19 -0
- package/lib/esm/curve/internalContexts/TransformInPlaceContext.js.map +1 -0
- package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.d.ts +41 -0
- package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.d.ts.map +1 -0
- package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js +124 -0
- package/lib/esm/curve/spiral/AustralianRailCorpXYEvaluator.js.map +1 -0
- package/lib/esm/curve/spiral/ClothoidSeries.d.ts +66 -0
- package/lib/esm/curve/spiral/ClothoidSeries.d.ts.map +1 -0
- package/lib/esm/curve/spiral/ClothoidSeries.js +220 -0
- package/lib/esm/curve/spiral/ClothoidSeries.js.map +1 -0
- package/lib/esm/curve/spiral/CubicEvaluator.d.ts +43 -0
- package/lib/esm/curve/spiral/CubicEvaluator.d.ts.map +1 -0
- package/lib/esm/curve/spiral/CubicEvaluator.js +67 -0
- package/lib/esm/curve/spiral/CubicEvaluator.js.map +1 -0
- package/lib/esm/curve/spiral/CzechSpiralEvaluator.d.ts +108 -0
- package/lib/esm/curve/spiral/CzechSpiralEvaluator.d.ts.map +1 -0
- package/lib/esm/curve/spiral/CzechSpiralEvaluator.js +198 -0
- package/lib/esm/curve/spiral/CzechSpiralEvaluator.js.map +1 -0
- package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.d.ts +39 -0
- package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.d.ts.map +1 -0
- package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js +88 -0
- package/lib/esm/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +1 -0
- package/lib/esm/curve/spiral/DirectSpiral3d.d.ts +265 -0
- package/lib/esm/curve/spiral/DirectSpiral3d.d.ts.map +1 -0
- package/lib/esm/curve/spiral/DirectSpiral3d.js +469 -0
- package/lib/esm/curve/spiral/DirectSpiral3d.js.map +1 -0
- package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts +158 -0
- package/lib/esm/curve/spiral/IntegratedSpiral3d.d.ts.map +1 -0
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js +360 -0
- package/lib/esm/curve/spiral/IntegratedSpiral3d.js.map +1 -0
- package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.d.ts +38 -0
- package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.d.ts.map +1 -0
- package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js +72 -0
- package/lib/esm/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +1 -0
- package/lib/esm/curve/spiral/NormalizedTransition.d.ts +140 -0
- package/lib/esm/curve/spiral/NormalizedTransition.d.ts.map +1 -0
- package/lib/esm/curve/spiral/NormalizedTransition.js +182 -0
- package/lib/esm/curve/spiral/NormalizedTransition.js.map +1 -0
- package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.d.ts +50 -0
- package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.d.ts.map +1 -0
- package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js +109 -0
- package/lib/esm/curve/spiral/PolishCubicSpiralEvaluator.js.map +1 -0
- package/lib/esm/curve/spiral/TransitionConditionalProperties.d.ts +53 -0
- package/lib/esm/curve/spiral/TransitionConditionalProperties.d.ts.map +1 -0
- package/lib/esm/curve/spiral/TransitionConditionalProperties.js +142 -0
- package/lib/esm/curve/spiral/TransitionConditionalProperties.js.map +1 -0
- package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts +101 -0
- package/lib/esm/curve/spiral/TransitionSpiral3d.d.ts.map +1 -0
- package/lib/esm/curve/spiral/TransitionSpiral3d.js +106 -0
- package/lib/esm/curve/spiral/TransitionSpiral3d.js.map +1 -0
- package/lib/esm/curve/spiral/XYCurveEvaluator.d.ts +80 -0
- package/lib/esm/curve/spiral/XYCurveEvaluator.d.ts.map +1 -0
- package/lib/esm/curve/spiral/XYCurveEvaluator.js +103 -0
- package/lib/esm/curve/spiral/XYCurveEvaluator.js.map +1 -0
- package/lib/esm/geometry3d/Angle.d.ts +214 -0
- package/lib/esm/geometry3d/Angle.d.ts.map +1 -0
- package/lib/esm/geometry3d/Angle.js +399 -0
- package/lib/esm/geometry3d/Angle.js.map +1 -0
- package/lib/esm/geometry3d/AngleSweep.d.ts +187 -0
- package/lib/esm/geometry3d/AngleSweep.d.ts.map +1 -0
- package/lib/esm/geometry3d/AngleSweep.js +325 -0
- package/lib/esm/geometry3d/AngleSweep.js.map +1 -0
- package/lib/esm/geometry3d/BarycentricTriangle.d.ts +51 -0
- package/lib/esm/geometry3d/BarycentricTriangle.d.ts.map +1 -0
- package/lib/esm/geometry3d/BarycentricTriangle.js +97 -0
- package/lib/esm/geometry3d/BarycentricTriangle.js.map +1 -0
- package/lib/esm/geometry3d/BilinearPatch.d.ts +107 -0
- package/lib/esm/geometry3d/BilinearPatch.d.ts.map +1 -0
- package/lib/esm/geometry3d/BilinearPatch.js +200 -0
- package/lib/esm/geometry3d/BilinearPatch.js.map +1 -0
- package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts +56 -0
- package/lib/esm/geometry3d/CoincidentGeometryOps.d.ts.map +1 -0
- package/lib/esm/geometry3d/CoincidentGeometryOps.js +196 -0
- package/lib/esm/geometry3d/CoincidentGeometryOps.js.map +1 -0
- package/lib/esm/geometry3d/Ellipsoid.d.ts +388 -0
- package/lib/esm/geometry3d/Ellipsoid.d.ts.map +1 -0
- package/lib/esm/geometry3d/Ellipsoid.js +1069 -0
- package/lib/esm/geometry3d/Ellipsoid.js.map +1 -0
- package/lib/esm/geometry3d/FrameBuilder.d.ts +91 -0
- package/lib/esm/geometry3d/FrameBuilder.d.ts.map +1 -0
- package/lib/esm/geometry3d/FrameBuilder.js +315 -0
- package/lib/esm/geometry3d/FrameBuilder.js.map +1 -0
- package/lib/esm/geometry3d/FrustumAnimation.d.ts +59 -0
- package/lib/esm/geometry3d/FrustumAnimation.d.ts.map +1 -0
- package/lib/esm/geometry3d/FrustumAnimation.js +119 -0
- package/lib/esm/geometry3d/FrustumAnimation.js.map +1 -0
- package/lib/esm/geometry3d/GeometryHandler.d.ts +329 -0
- package/lib/esm/geometry3d/GeometryHandler.d.ts.map +1 -0
- package/lib/esm/geometry3d/GeometryHandler.js +169 -0
- package/lib/esm/geometry3d/GeometryHandler.js.map +1 -0
- package/lib/esm/geometry3d/GrowableBlockedArray.d.ts +71 -0
- package/lib/esm/geometry3d/GrowableBlockedArray.d.ts.map +1 -0
- package/lib/esm/geometry3d/GrowableBlockedArray.js +158 -0
- package/lib/esm/geometry3d/GrowableBlockedArray.js.map +1 -0
- package/lib/esm/geometry3d/GrowableFloat64Array.d.ts +132 -0
- package/lib/esm/geometry3d/GrowableFloat64Array.d.ts.map +1 -0
- package/lib/esm/geometry3d/GrowableFloat64Array.js +249 -0
- package/lib/esm/geometry3d/GrowableFloat64Array.js.map +1 -0
- package/lib/esm/geometry3d/GrowableXYArray.d.ts +204 -0
- package/lib/esm/geometry3d/GrowableXYArray.d.ts.map +1 -0
- package/lib/esm/geometry3d/GrowableXYArray.js +621 -0
- package/lib/esm/geometry3d/GrowableXYArray.js.map +1 -0
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts +324 -0
- package/lib/esm/geometry3d/GrowableXYZArray.d.ts.map +1 -0
- package/lib/esm/geometry3d/GrowableXYZArray.js +975 -0
- package/lib/esm/geometry3d/GrowableXYZArray.js.map +1 -0
- package/lib/esm/geometry3d/IndexedCollectionInterval.d.ts +63 -0
- package/lib/esm/geometry3d/IndexedCollectionInterval.d.ts.map +1 -0
- package/lib/esm/geometry3d/IndexedCollectionInterval.js +105 -0
- package/lib/esm/geometry3d/IndexedCollectionInterval.js.map +1 -0
- package/lib/esm/geometry3d/IndexedXYCollection.d.ts +69 -0
- package/lib/esm/geometry3d/IndexedXYCollection.d.ts.map +1 -0
- package/lib/esm/geometry3d/IndexedXYCollection.js +16 -0
- package/lib/esm/geometry3d/IndexedXYCollection.js.map +1 -0
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts +149 -0
- package/lib/esm/geometry3d/IndexedXYZCollection.d.ts.map +1 -0
- package/lib/esm/geometry3d/IndexedXYZCollection.js +98 -0
- package/lib/esm/geometry3d/IndexedXYZCollection.js.map +1 -0
- package/lib/esm/geometry3d/LongitudeLatitudeAltitude.d.ts +63 -0
- package/lib/esm/geometry3d/LongitudeLatitudeAltitude.d.ts.map +1 -0
- package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js +119 -0
- package/lib/esm/geometry3d/LongitudeLatitudeAltitude.js.map +1 -0
- package/lib/esm/geometry3d/Matrix3d.d.ts +885 -0
- package/lib/esm/geometry3d/Matrix3d.d.ts.map +1 -0
- package/lib/esm/geometry3d/Matrix3d.js +2269 -0
- package/lib/esm/geometry3d/Matrix3d.js.map +1 -0
- package/lib/esm/geometry3d/OrderedRotationAngles.d.ts +61 -0
- package/lib/esm/geometry3d/OrderedRotationAngles.d.ts.map +1 -0
- package/lib/esm/geometry3d/OrderedRotationAngles.js +228 -0
- package/lib/esm/geometry3d/OrderedRotationAngles.js.map +1 -0
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts +122 -0
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +1 -0
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js +237 -0
- package/lib/esm/geometry3d/Plane3dByOriginAndUnitNormal.js.map +1 -0
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts +119 -0
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.d.ts.map +1 -0
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js +238 -0
- package/lib/esm/geometry3d/Plane3dByOriginAndVectors.js.map +1 -0
- package/lib/esm/geometry3d/Point2dArrayCarrier.d.ts +74 -0
- package/lib/esm/geometry3d/Point2dArrayCarrier.d.ts.map +1 -0
- package/lib/esm/geometry3d/Point2dArrayCarrier.js +111 -0
- package/lib/esm/geometry3d/Point2dArrayCarrier.js.map +1 -0
- package/lib/esm/geometry3d/Point2dVector2d.d.ts +209 -0
- package/lib/esm/geometry3d/Point2dVector2d.d.ts.map +1 -0
- package/lib/esm/geometry3d/Point2dVector2d.js +461 -0
- package/lib/esm/geometry3d/Point2dVector2d.js.map +1 -0
- package/lib/esm/geometry3d/Point3dArrayCarrier.d.ts +142 -0
- package/lib/esm/geometry3d/Point3dArrayCarrier.d.ts.map +1 -0
- package/lib/esm/geometry3d/Point3dArrayCarrier.js +233 -0
- package/lib/esm/geometry3d/Point3dArrayCarrier.js.map +1 -0
- package/lib/esm/geometry3d/Point3dVector3d.d.ts +699 -0
- package/lib/esm/geometry3d/Point3dVector3d.d.ts.map +1 -0
- package/lib/esm/geometry3d/Point3dVector3d.js +1294 -0
- package/lib/esm/geometry3d/Point3dVector3d.js.map +1 -0
- package/lib/esm/geometry3d/PointHelpers.d.ts +263 -0
- package/lib/esm/geometry3d/PointHelpers.d.ts.map +1 -0
- package/lib/esm/geometry3d/PointHelpers.js +898 -0
- package/lib/esm/geometry3d/PointHelpers.js.map +1 -0
- package/lib/esm/geometry3d/PointStreaming.d.ts +87 -0
- package/lib/esm/geometry3d/PointStreaming.d.ts.map +1 -0
- package/lib/esm/geometry3d/PointStreaming.js +181 -0
- package/lib/esm/geometry3d/PointStreaming.js.map +1 -0
- package/lib/esm/geometry3d/PolygonOps.d.ts +306 -0
- package/lib/esm/geometry3d/PolygonOps.d.ts.map +1 -0
- package/lib/esm/geometry3d/PolygonOps.js +986 -0
- package/lib/esm/geometry3d/PolygonOps.js.map +1 -0
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.d.ts +81 -0
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +1 -0
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js +274 -0
- package/lib/esm/geometry3d/PolylineCompressionByEdgeOffset.js.map +1 -0
- package/lib/esm/geometry3d/PolylineOps.d.ts +63 -0
- package/lib/esm/geometry3d/PolylineOps.d.ts.map +1 -0
- package/lib/esm/geometry3d/PolylineOps.js +172 -0
- package/lib/esm/geometry3d/PolylineOps.js.map +1 -0
- package/lib/esm/geometry3d/Range.d.ts +599 -0
- package/lib/esm/geometry3d/Range.d.ts.map +1 -0
- package/lib/esm/geometry3d/Range.js +1424 -0
- package/lib/esm/geometry3d/Range.js.map +1 -0
- package/lib/esm/geometry3d/Ray3d.d.ts +146 -0
- package/lib/esm/geometry3d/Ray3d.d.ts.map +1 -0
- package/lib/esm/geometry3d/Ray3d.js +325 -0
- package/lib/esm/geometry3d/Ray3d.js.map +1 -0
- package/lib/esm/geometry3d/ReusableObjectCache.d.ts +55 -0
- package/lib/esm/geometry3d/ReusableObjectCache.d.ts.map +1 -0
- package/lib/esm/geometry3d/ReusableObjectCache.js +82 -0
- package/lib/esm/geometry3d/ReusableObjectCache.js.map +1 -0
- package/lib/esm/geometry3d/Segment1d.d.ts +106 -0
- package/lib/esm/geometry3d/Segment1d.d.ts.map +1 -0
- package/lib/esm/geometry3d/Segment1d.js +169 -0
- package/lib/esm/geometry3d/Segment1d.js.map +1 -0
- package/lib/esm/geometry3d/SortablePolygon.d.ts +50 -0
- package/lib/esm/geometry3d/SortablePolygon.d.ts.map +1 -0
- package/lib/esm/geometry3d/SortablePolygon.js +312 -0
- package/lib/esm/geometry3d/SortablePolygon.js.map +1 -0
- package/lib/esm/geometry3d/Transform.d.ts +275 -0
- package/lib/esm/geometry3d/Transform.d.ts.map +1 -0
- package/lib/esm/geometry3d/Transform.js +570 -0
- package/lib/esm/geometry3d/Transform.js.map +1 -0
- package/lib/esm/geometry3d/UVSurfaceOps.d.ts +43 -0
- package/lib/esm/geometry3d/UVSurfaceOps.d.ts.map +1 -0
- package/lib/esm/geometry3d/UVSurfaceOps.js +98 -0
- package/lib/esm/geometry3d/UVSurfaceOps.js.map +1 -0
- package/lib/esm/geometry3d/XYZProps.d.ts +143 -0
- package/lib/esm/geometry3d/XYZProps.d.ts.map +1 -0
- package/lib/esm/geometry3d/XYZProps.js +6 -0
- package/lib/esm/geometry3d/XYZProps.js.map +1 -0
- package/lib/esm/geometry3d/YawPitchRollAngles.d.ts +111 -0
- package/lib/esm/geometry3d/YawPitchRollAngles.d.ts.map +1 -0
- package/lib/esm/geometry3d/YawPitchRollAngles.js +195 -0
- package/lib/esm/geometry3d/YawPitchRollAngles.js.map +1 -0
- package/lib/esm/geometry4d/Map4d.d.ts +73 -0
- package/lib/esm/geometry4d/Map4d.d.ts.map +1 -0
- package/lib/esm/geometry4d/Map4d.js +147 -0
- package/lib/esm/geometry4d/Map4d.js.map +1 -0
- package/lib/esm/geometry4d/Matrix4d.d.ts +284 -0
- package/lib/esm/geometry4d/Matrix4d.d.ts.map +1 -0
- package/lib/esm/geometry4d/Matrix4d.js +739 -0
- package/lib/esm/geometry4d/Matrix4d.js.map +1 -0
- package/lib/esm/geometry4d/MomentData.d.ts +180 -0
- package/lib/esm/geometry4d/MomentData.d.ts.map +1 -0
- package/lib/esm/geometry4d/MomentData.js +384 -0
- package/lib/esm/geometry4d/MomentData.js.map +1 -0
- package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.d.ts +43 -0
- package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.d.ts.map +1 -0
- package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js +81 -0
- package/lib/esm/geometry4d/PlaneByOriginAndVectors4d.js.map +1 -0
- package/lib/esm/geometry4d/Point4d.d.ts +257 -0
- package/lib/esm/geometry4d/Point4d.d.ts.map +1 -0
- package/lib/esm/geometry4d/Point4d.js +552 -0
- package/lib/esm/geometry4d/Point4d.js.map +1 -0
- package/lib/esm/numerics/BandedSystem.d.ts +39 -0
- package/lib/esm/numerics/BandedSystem.d.ts.map +1 -0
- package/lib/esm/numerics/BandedSystem.js +156 -0
- package/lib/esm/numerics/BandedSystem.js.map +1 -0
- package/lib/esm/numerics/BezierPolynomials.d.ts +462 -0
- package/lib/esm/numerics/BezierPolynomials.d.ts.map +1 -0
- package/lib/esm/numerics/BezierPolynomials.js +1189 -0
- package/lib/esm/numerics/BezierPolynomials.js.map +1 -0
- package/lib/esm/numerics/ClusterableArray.d.ts +162 -0
- package/lib/esm/numerics/ClusterableArray.d.ts.map +1 -0
- package/lib/esm/numerics/ClusterableArray.js +477 -0
- package/lib/esm/numerics/ClusterableArray.js.map +1 -0
- package/lib/esm/numerics/Complex.d.ts +63 -0
- package/lib/esm/numerics/Complex.d.ts.map +1 -0
- package/lib/esm/numerics/Complex.js +116 -0
- package/lib/esm/numerics/Complex.js.map +1 -0
- package/lib/esm/numerics/ConvexPolygon2d.d.ts +86 -0
- package/lib/esm/numerics/ConvexPolygon2d.d.ts.map +1 -0
- package/lib/esm/numerics/ConvexPolygon2d.js +313 -0
- package/lib/esm/numerics/ConvexPolygon2d.js.map +1 -0
- package/lib/esm/numerics/Newton.d.ts +188 -0
- package/lib/esm/numerics/Newton.d.ts.map +1 -0
- package/lib/esm/numerics/Newton.js +247 -0
- package/lib/esm/numerics/Newton.js.map +1 -0
- package/lib/esm/numerics/PascalCoefficients.d.ts +33 -0
- package/lib/esm/numerics/PascalCoefficients.d.ts.map +1 -0
- package/lib/esm/numerics/PascalCoefficients.js +91 -0
- package/lib/esm/numerics/PascalCoefficients.js.map +1 -0
- package/lib/esm/numerics/PolarData.d.ts +42 -0
- package/lib/esm/numerics/PolarData.d.ts.map +1 -0
- package/lib/esm/numerics/PolarData.js +162 -0
- package/lib/esm/numerics/PolarData.js.map +1 -0
- package/lib/esm/numerics/Polynomials.d.ts +653 -0
- package/lib/esm/numerics/Polynomials.d.ts.map +1 -0
- package/lib/esm/numerics/Polynomials.js +1697 -0
- package/lib/esm/numerics/Polynomials.js.map +1 -0
- package/lib/esm/numerics/Quadrature.d.ts +91 -0
- package/lib/esm/numerics/Quadrature.d.ts.map +1 -0
- package/lib/esm/numerics/Quadrature.js +199 -0
- package/lib/esm/numerics/Quadrature.js.map +1 -0
- package/lib/esm/numerics/Range1dArray.d.ts +80 -0
- package/lib/esm/numerics/Range1dArray.d.ts.map +1 -0
- package/lib/esm/numerics/Range1dArray.js +358 -0
- package/lib/esm/numerics/Range1dArray.js.map +1 -0
- package/lib/esm/numerics/TriDiagonalSystem.d.ts +51 -0
- package/lib/esm/numerics/TriDiagonalSystem.d.ts.map +1 -0
- package/lib/esm/numerics/TriDiagonalSystem.js +270 -0
- package/lib/esm/numerics/TriDiagonalSystem.js.map +1 -0
- package/lib/esm/numerics/UnionFind.d.ts +49 -0
- package/lib/esm/numerics/UnionFind.d.ts.map +1 -0
- package/lib/esm/numerics/UnionFind.js +117 -0
- package/lib/esm/numerics/UnionFind.js.map +1 -0
- package/lib/esm/numerics/UsageSums.d.ts +86 -0
- package/lib/esm/numerics/UsageSums.d.ts.map +1 -0
- package/lib/esm/numerics/UsageSums.js +128 -0
- package/lib/esm/numerics/UsageSums.js.map +1 -0
- package/lib/esm/polyface/AuxData.d.ts +112 -0
- package/lib/esm/polyface/AuxData.d.ts.map +1 -0
- package/lib/esm/polyface/AuxData.js +228 -0
- package/lib/esm/polyface/AuxData.js.map +1 -0
- package/lib/esm/polyface/BoxTopology.d.ts +38 -0
- package/lib/esm/polyface/BoxTopology.d.ts.map +1 -0
- package/lib/esm/polyface/BoxTopology.js +99 -0
- package/lib/esm/polyface/BoxTopology.js.map +1 -0
- package/lib/esm/polyface/FacetFaceData.d.ts +44 -0
- package/lib/esm/polyface/FacetFaceData.d.ts.map +1 -0
- package/lib/esm/polyface/FacetFaceData.js +142 -0
- package/lib/esm/polyface/FacetFaceData.js.map +1 -0
- package/lib/esm/polyface/FacetOrientation.d.ts +39 -0
- package/lib/esm/polyface/FacetOrientation.d.ts.map +1 -0
- package/lib/esm/polyface/FacetOrientation.js +192 -0
- package/lib/esm/polyface/FacetOrientation.js.map +1 -0
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.d.ts +61 -0
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.d.ts.map +1 -0
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js +245 -0
- package/lib/esm/polyface/GreedyTriangulationBetweenLineStrings.js.map +1 -0
- package/lib/esm/polyface/IndexedEdgeMatcher.d.ts +87 -0
- package/lib/esm/polyface/IndexedEdgeMatcher.d.ts.map +1 -0
- package/lib/esm/polyface/IndexedEdgeMatcher.js +192 -0
- package/lib/esm/polyface/IndexedEdgeMatcher.js.map +1 -0
- package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts +109 -0
- package/lib/esm/polyface/IndexedPolyfaceVisitor.d.ts.map +1 -0
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js +237 -0
- package/lib/esm/polyface/IndexedPolyfaceVisitor.js.map +1 -0
- package/lib/esm/polyface/Polyface.d.ts +254 -0
- package/lib/esm/polyface/Polyface.d.ts.map +1 -0
- package/lib/esm/polyface/Polyface.js +501 -0
- package/lib/esm/polyface/Polyface.js.map +1 -0
- package/lib/esm/polyface/PolyfaceBuilder.d.ts +395 -0
- package/lib/esm/polyface/PolyfaceBuilder.d.ts.map +1 -0
- package/lib/esm/polyface/PolyfaceBuilder.js +1634 -0
- package/lib/esm/polyface/PolyfaceBuilder.js.map +1 -0
- package/lib/esm/polyface/PolyfaceClip.d.ts +172 -0
- package/lib/esm/polyface/PolyfaceClip.d.ts.map +1 -0
- package/lib/esm/polyface/PolyfaceClip.js +565 -0
- package/lib/esm/polyface/PolyfaceClip.js.map +1 -0
- package/lib/esm/polyface/PolyfaceData.d.ts +206 -0
- package/lib/esm/polyface/PolyfaceData.d.ts.map +1 -0
- package/lib/esm/polyface/PolyfaceData.js +527 -0
- package/lib/esm/polyface/PolyfaceData.js.map +1 -0
- package/lib/esm/polyface/PolyfaceQuery.d.ts +302 -0
- package/lib/esm/polyface/PolyfaceQuery.d.ts.map +1 -0
- package/lib/esm/polyface/PolyfaceQuery.js +947 -0
- package/lib/esm/polyface/PolyfaceQuery.js.map +1 -0
- package/lib/esm/polyface/RangeLengthData.d.ts +31 -0
- package/lib/esm/polyface/RangeLengthData.d.ts.map +1 -0
- package/lib/esm/polyface/RangeLengthData.js +39 -0
- package/lib/esm/polyface/RangeLengthData.js.map +1 -0
- package/lib/esm/polyface/TaggedNumericData.d.ts +95 -0
- package/lib/esm/polyface/TaggedNumericData.d.ts.map +1 -0
- package/lib/esm/polyface/TaggedNumericData.js +160 -0
- package/lib/esm/polyface/TaggedNumericData.js.map +1 -0
- package/lib/esm/polyface/TriangleCandidate.d.ts +64 -0
- package/lib/esm/polyface/TriangleCandidate.d.ts.map +1 -0
- package/lib/esm/polyface/TriangleCandidate.js +116 -0
- package/lib/esm/polyface/TriangleCandidate.js.map +1 -0
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.d.ts +29 -0
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.d.ts.map +1 -0
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js +160 -0
- package/lib/esm/polyface/multiclip/BuildAverageNormalsContext.js.map +1 -0
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.d.ts +81 -0
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.d.ts.map +1 -0
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js +159 -0
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSet.js.map +1 -0
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts +53 -0
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts.map +1 -0
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js +74 -0
- package/lib/esm/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +1 -0
- package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.d.ts +44 -0
- package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.d.ts.map +1 -0
- package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js +80 -0
- package/lib/esm/polyface/multiclip/LinearSearchRange2dArray.js.map +1 -0
- package/lib/esm/polyface/multiclip/Range2dSearchInterface.d.ts +32 -0
- package/lib/esm/polyface/multiclip/Range2dSearchInterface.d.ts.map +1 -0
- package/lib/esm/polyface/multiclip/Range2dSearchInterface.js +9 -0
- package/lib/esm/polyface/multiclip/Range2dSearchInterface.js.map +1 -0
- package/lib/esm/polyface/multiclip/RangeSearch.d.ts +27 -0
- package/lib/esm/polyface/multiclip/RangeSearch.d.ts.map +1 -0
- package/lib/esm/polyface/multiclip/RangeSearch.js +49 -0
- package/lib/esm/polyface/multiclip/RangeSearch.js.map +1 -0
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts +25 -0
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +1 -0
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js +90 -0
- package/lib/esm/polyface/multiclip/SweepLineStringToFacetContext.js.map +1 -0
- package/lib/esm/polyface/multiclip/XYPointBuckets.d.ts +73 -0
- package/lib/esm/polyface/multiclip/XYPointBuckets.d.ts.map +1 -0
- package/lib/esm/polyface/multiclip/XYPointBuckets.js +192 -0
- package/lib/esm/polyface/multiclip/XYPointBuckets.js.map +1 -0
- package/lib/esm/serialization/BGFBAccessors.d.ts +3426 -0
- package/lib/esm/serialization/BGFBAccessors.d.ts.map +1 -0
- package/lib/esm/serialization/BGFBAccessors.js +5543 -0
- package/lib/esm/serialization/BGFBAccessors.js.map +1 -0
- package/lib/esm/serialization/BGFBReader.d.ts +118 -0
- package/lib/esm/serialization/BGFBReader.d.ts.map +1 -0
- package/lib/esm/serialization/BGFBReader.js +661 -0
- package/lib/esm/serialization/BGFBReader.js.map +1 -0
- package/lib/esm/serialization/BGFBWriter.d.ts +69 -0
- package/lib/esm/serialization/BGFBWriter.d.ts.map +1 -0
- package/lib/esm/serialization/BGFBWriter.js +587 -0
- package/lib/esm/serialization/BGFBWriter.js.map +1 -0
- package/lib/esm/serialization/BentleyGeometryFlatBuffer.d.ts +23 -0
- package/lib/esm/serialization/BentleyGeometryFlatBuffer.d.ts.map +1 -0
- package/lib/esm/serialization/BentleyGeometryFlatBuffer.js +26 -0
- package/lib/esm/serialization/BentleyGeometryFlatBuffer.js.map +1 -0
- package/lib/esm/serialization/DeepCompare.d.ts +41 -0
- package/lib/esm/serialization/DeepCompare.d.ts.map +1 -0
- package/lib/esm/serialization/DeepCompare.js +185 -0
- package/lib/esm/serialization/DeepCompare.js.map +1 -0
- package/lib/esm/serialization/GeometrySamples.d.ts +616 -0
- package/lib/esm/serialization/GeometrySamples.d.ts.map +1 -0
- package/lib/esm/serialization/GeometrySamples.js +2124 -0
- package/lib/esm/serialization/GeometrySamples.js.map +1 -0
- package/lib/esm/serialization/IModelJsonSchema.d.ts +671 -0
- package/lib/esm/serialization/IModelJsonSchema.d.ts.map +1 -0
- package/lib/esm/serialization/IModelJsonSchema.js +1523 -0
- package/lib/esm/serialization/IModelJsonSchema.js.map +1 -0
- package/lib/esm/solid/Box.d.ts +122 -0
- package/lib/esm/solid/Box.d.ts.map +1 -0
- package/lib/esm/solid/Box.js +229 -0
- package/lib/esm/solid/Box.js.map +1 -0
- package/lib/esm/solid/Cone.d.ts +119 -0
- package/lib/esm/solid/Cone.d.ts.map +1 -0
- package/lib/esm/solid/Cone.js +267 -0
- package/lib/esm/solid/Cone.js.map +1 -0
- package/lib/esm/solid/LinearSweep.d.ts +81 -0
- package/lib/esm/solid/LinearSweep.d.ts.map +1 -0
- package/lib/esm/solid/LinearSweep.js +143 -0
- package/lib/esm/solid/LinearSweep.js.map +1 -0
- package/lib/esm/solid/RotationalSweep.d.ts +71 -0
- package/lib/esm/solid/RotationalSweep.d.ts.map +1 -0
- package/lib/esm/solid/RotationalSweep.js +139 -0
- package/lib/esm/solid/RotationalSweep.js.map +1 -0
- package/lib/esm/solid/RuledSweep.d.ts +76 -0
- package/lib/esm/solid/RuledSweep.d.ts.map +1 -0
- package/lib/esm/solid/RuledSweep.js +202 -0
- package/lib/esm/solid/RuledSweep.js.map +1 -0
- package/lib/esm/solid/SolidPrimitive.d.ts +63 -0
- package/lib/esm/solid/SolidPrimitive.d.ts.map +1 -0
- package/lib/esm/solid/SolidPrimitive.js +23 -0
- package/lib/esm/solid/SolidPrimitive.js.map +1 -0
- package/lib/esm/solid/Sphere.d.ts +120 -0
- package/lib/esm/solid/Sphere.d.ts.map +1 -0
- package/lib/esm/solid/Sphere.js +294 -0
- package/lib/esm/solid/Sphere.js.map +1 -0
- package/lib/esm/solid/SweepContour.d.ts +82 -0
- package/lib/esm/solid/SweepContour.d.ts.map +1 -0
- package/lib/esm/solid/SweepContour.js +250 -0
- package/lib/esm/solid/SweepContour.js.map +1 -0
- package/lib/esm/solid/TorusPipe.d.ts +123 -0
- package/lib/esm/solid/TorusPipe.d.ts.map +1 -0
- package/lib/esm/solid/TorusPipe.js +296 -0
- package/lib/esm/solid/TorusPipe.js.map +1 -0
- package/lib/esm/topology/ChainMerge.d.ts +119 -0
- package/lib/esm/topology/ChainMerge.d.ts.map +1 -0
- package/lib/esm/topology/ChainMerge.js +280 -0
- package/lib/esm/topology/ChainMerge.js.map +1 -0
- package/lib/esm/topology/Graph.d.ts +591 -0
- package/lib/esm/topology/Graph.d.ts.map +1 -0
- package/lib/esm/topology/Graph.js +1156 -0
- package/lib/esm/topology/Graph.js.map +1 -0
- package/lib/esm/topology/HalfEdgeGraphSearch.d.ts +125 -0
- package/lib/esm/topology/HalfEdgeGraphSearch.d.ts.map +1 -0
- package/lib/esm/topology/HalfEdgeGraphSearch.js +296 -0
- package/lib/esm/topology/HalfEdgeGraphSearch.js.map +1 -0
- package/lib/esm/topology/HalfEdgeGraphSpineContext.d.ts +98 -0
- package/lib/esm/topology/HalfEdgeGraphSpineContext.d.ts.map +1 -0
- package/lib/esm/topology/HalfEdgeGraphSpineContext.js +519 -0
- package/lib/esm/topology/HalfEdgeGraphSpineContext.js.map +1 -0
- package/lib/esm/topology/HalfEdgeGraphValidation.d.ts +52 -0
- package/lib/esm/topology/HalfEdgeGraphValidation.d.ts.map +1 -0
- package/lib/esm/topology/HalfEdgeGraphValidation.js +107 -0
- package/lib/esm/topology/HalfEdgeGraphValidation.js.map +1 -0
- package/lib/esm/topology/HalfEdgeMarkSet.d.ts +232 -0
- package/lib/esm/topology/HalfEdgeMarkSet.d.ts.map +1 -0
- package/lib/esm/topology/HalfEdgeMarkSet.js +369 -0
- package/lib/esm/topology/HalfEdgeMarkSet.js.map +1 -0
- package/lib/esm/topology/HalfEdgeNodeXYZUV.d.ts +51 -0
- package/lib/esm/topology/HalfEdgeNodeXYZUV.d.ts.map +1 -0
- package/lib/esm/topology/HalfEdgeNodeXYZUV.js +93 -0
- package/lib/esm/topology/HalfEdgeNodeXYZUV.js.map +1 -0
- package/lib/esm/topology/HalfEdgePointInGraphSearch.d.ts +34 -0
- package/lib/esm/topology/HalfEdgePointInGraphSearch.d.ts.map +1 -0
- package/lib/esm/topology/HalfEdgePointInGraphSearch.js +252 -0
- package/lib/esm/topology/HalfEdgePointInGraphSearch.js.map +1 -0
- package/lib/esm/topology/HalfEdgePositionDetail.d.ts +97 -0
- package/lib/esm/topology/HalfEdgePositionDetail.d.ts.map +1 -0
- package/lib/esm/topology/HalfEdgePositionDetail.js +173 -0
- package/lib/esm/topology/HalfEdgePositionDetail.js.map +1 -0
- package/lib/esm/topology/HalfEdgePriorityQueue.d.ts +34 -0
- package/lib/esm/topology/HalfEdgePriorityQueue.d.ts.map +1 -0
- package/lib/esm/topology/HalfEdgePriorityQueue.js +68 -0
- package/lib/esm/topology/HalfEdgePriorityQueue.js.map +1 -0
- package/lib/esm/topology/InsertAndRetriangulateContext.d.ts +38 -0
- package/lib/esm/topology/InsertAndRetriangulateContext.d.ts.map +1 -0
- package/lib/esm/topology/InsertAndRetriangulateContext.js +239 -0
- package/lib/esm/topology/InsertAndRetriangulateContext.js.map +1 -0
- package/lib/esm/topology/MaskManager.d.ts +33 -0
- package/lib/esm/topology/MaskManager.d.ts.map +1 -0
- package/lib/esm/topology/MaskManager.js +63 -0
- package/lib/esm/topology/MaskManager.js.map +1 -0
- package/lib/esm/topology/Merging.d.ts +90 -0
- package/lib/esm/topology/Merging.d.ts.map +1 -0
- package/lib/esm/topology/Merging.js +362 -0
- package/lib/esm/topology/Merging.js.map +1 -0
- package/lib/esm/topology/RegularizeFace.d.ts +106 -0
- package/lib/esm/topology/RegularizeFace.d.ts.map +1 -0
- package/lib/esm/topology/RegularizeFace.js +367 -0
- package/lib/esm/topology/RegularizeFace.js.map +1 -0
- package/lib/esm/topology/SignedDataSummary.d.ts +37 -0
- package/lib/esm/topology/SignedDataSummary.d.ts.map +1 -0
- package/lib/esm/topology/SignedDataSummary.js +54 -0
- package/lib/esm/topology/SignedDataSummary.js.map +1 -0
- package/lib/esm/topology/Triangulation.d.ts +230 -0
- package/lib/esm/topology/Triangulation.d.ts.map +1 -0
- package/lib/esm/topology/Triangulation.js +945 -0
- package/lib/esm/topology/Triangulation.js.map +1 -0
- package/lib/esm/topology/XYParitySearchContext.d.ts +54 -0
- package/lib/esm/topology/XYParitySearchContext.d.ts.map +1 -0
- package/lib/esm/topology/XYParitySearchContext.js +138 -0
- package/lib/esm/topology/XYParitySearchContext.js.map +1 -0
- package/package.json +11 -8
- package/lib/Constant.d.ts.map +0 -1
- package/lib/Constant.js.map +0 -1
- package/lib/Geometry.d.ts.map +0 -1
- package/lib/Geometry.js.map +0 -1
- package/lib/bspline/AkimaCurve3d.d.ts.map +0 -1
- package/lib/bspline/AkimaCurve3d.js.map +0 -1
- package/lib/bspline/BSpline1dNd.d.ts.map +0 -1
- package/lib/bspline/BSpline1dNd.js.map +0 -1
- package/lib/bspline/BSplineCurve.d.ts.map +0 -1
- package/lib/bspline/BSplineCurve.js.map +0 -1
- package/lib/bspline/BSplineCurve3dH.d.ts.map +0 -1
- package/lib/bspline/BSplineCurve3dH.js.map +0 -1
- package/lib/bspline/BSplineCurveOps.d.ts.map +0 -1
- package/lib/bspline/BSplineCurveOps.js.map +0 -1
- package/lib/bspline/BSplineSurface.d.ts +0 -485
- package/lib/bspline/BSplineSurface.d.ts.map +0 -1
- package/lib/bspline/BSplineSurface.js.map +0 -1
- package/lib/bspline/Bezier1dNd.d.ts.map +0 -1
- package/lib/bspline/Bezier1dNd.js.map +0 -1
- package/lib/bspline/BezierCurve3d.d.ts.map +0 -1
- package/lib/bspline/BezierCurve3d.js.map +0 -1
- package/lib/bspline/BezierCurve3dH.d.ts.map +0 -1
- package/lib/bspline/BezierCurve3dH.js.map +0 -1
- package/lib/bspline/BezierCurveBase.d.ts.map +0 -1
- package/lib/bspline/BezierCurveBase.js.map +0 -1
- package/lib/bspline/InterpolationCurve3d.d.ts.map +0 -1
- package/lib/bspline/InterpolationCurve3d.js.map +0 -1
- package/lib/bspline/KnotVector.d.ts.map +0 -1
- package/lib/bspline/KnotVector.js.map +0 -1
- package/lib/bspline/SurfaceLocationDetail.d.ts.map +0 -1
- package/lib/bspline/SurfaceLocationDetail.js.map +0 -1
- package/lib/clipping/AlternatingConvexClipTree.d.ts.map +0 -1
- package/lib/clipping/AlternatingConvexClipTree.js.map +0 -1
- package/lib/clipping/BooleanClipFactory.d.ts.map +0 -1
- package/lib/clipping/BooleanClipFactory.js.map +0 -1
- package/lib/clipping/BooleanClipNode.d.ts.map +0 -1
- package/lib/clipping/BooleanClipNode.js.map +0 -1
- package/lib/clipping/ClipPlane.d.ts.map +0 -1
- package/lib/clipping/ClipPlane.js.map +0 -1
- package/lib/clipping/ClipPrimitive.d.ts.map +0 -1
- package/lib/clipping/ClipPrimitive.js.map +0 -1
- package/lib/clipping/ClipUtils.d.ts.map +0 -1
- package/lib/clipping/ClipUtils.js.map +0 -1
- package/lib/clipping/ClipVector.d.ts.map +0 -1
- package/lib/clipping/ClipVector.js.map +0 -1
- package/lib/clipping/ConvexClipPlaneSet.d.ts.map +0 -1
- package/lib/clipping/ConvexClipPlaneSet.js.map +0 -1
- package/lib/clipping/UnionOfConvexClipPlaneSets.d.ts.map +0 -1
- package/lib/clipping/UnionOfConvexClipPlaneSets.js.map +0 -1
- package/lib/clipping/internalContexts/LineStringOffsetClipperContext.d.ts.map +0 -1
- package/lib/clipping/internalContexts/LineStringOffsetClipperContext.js.map +0 -1
- package/lib/core-geometry.d.ts.map +0 -1
- package/lib/core-geometry.js.map +0 -1
- package/lib/curve/Arc3d.d.ts.map +0 -1
- package/lib/curve/Arc3d.js.map +0 -1
- package/lib/curve/ChainCollectorContext.d.ts.map +0 -1
- package/lib/curve/ChainCollectorContext.js.map +0 -1
- package/lib/curve/ConstructCurveBetweenCurves.d.ts.map +0 -1
- package/lib/curve/ConstructCurveBetweenCurves.js.map +0 -1
- package/lib/curve/CoordinateXYZ.d.ts.map +0 -1
- package/lib/curve/CoordinateXYZ.js.map +0 -1
- package/lib/curve/CurveChain.d.ts.map +0 -1
- package/lib/curve/CurveChain.js.map +0 -1
- package/lib/curve/CurveChainWithDistanceIndex.d.ts.map +0 -1
- package/lib/curve/CurveChainWithDistanceIndex.js.map +0 -1
- package/lib/curve/CurveCollection.d.ts.map +0 -1
- package/lib/curve/CurveCollection.js.map +0 -1
- package/lib/curve/CurveCurve.d.ts.map +0 -1
- package/lib/curve/CurveCurve.js.map +0 -1
- package/lib/curve/CurveCurveCloseApproachXY.d.ts.map +0 -1
- package/lib/curve/CurveCurveCloseApproachXY.js.map +0 -1
- package/lib/curve/CurveCurveIntersectXY.d.ts.map +0 -1
- package/lib/curve/CurveCurveIntersectXY.js.map +0 -1
- package/lib/curve/CurveCurveIntersectXYZ.d.ts.map +0 -1
- package/lib/curve/CurveCurveIntersectXYZ.js.map +0 -1
- package/lib/curve/CurveExtendMode.d.ts.map +0 -1
- package/lib/curve/CurveExtendMode.js.map +0 -1
- package/lib/curve/CurveFactory.d.ts.map +0 -1
- package/lib/curve/CurveFactory.js.map +0 -1
- package/lib/curve/CurveLocationDetail.d.ts.map +0 -1
- package/lib/curve/CurveLocationDetail.js.map +0 -1
- package/lib/curve/CurvePrimitive.d.ts.map +0 -1
- package/lib/curve/CurvePrimitive.js.map +0 -1
- package/lib/curve/CurveProcessor.d.ts.map +0 -1
- package/lib/curve/CurveProcessor.js.map +0 -1
- package/lib/curve/CurveWireMomentsXYZ.d.ts.map +0 -1
- package/lib/curve/CurveWireMomentsXYZ.js.map +0 -1
- package/lib/curve/GeometryQuery.d.ts.map +0 -1
- package/lib/curve/GeometryQuery.js.map +0 -1
- package/lib/curve/LineSegment3d.d.ts.map +0 -1
- package/lib/curve/LineSegment3d.js.map +0 -1
- package/lib/curve/LineString3d.d.ts.map +0 -1
- package/lib/curve/LineString3d.js.map +0 -1
- package/lib/curve/Loop.d.ts.map +0 -1
- package/lib/curve/Loop.js.map +0 -1
- package/lib/curve/ParityRegion.d.ts.map +0 -1
- package/lib/curve/ParityRegion.js.map +0 -1
- package/lib/curve/Path.d.ts.map +0 -1
- package/lib/curve/Path.js.map +0 -1
- package/lib/curve/PointString3d.d.ts.map +0 -1
- package/lib/curve/PointString3d.js.map +0 -1
- package/lib/curve/ProxyCurve.d.ts.map +0 -1
- package/lib/curve/ProxyCurve.js.map +0 -1
- package/lib/curve/Query/ConsolidateAdjacentPrimitivesContext.d.ts.map +0 -1
- package/lib/curve/Query/ConsolidateAdjacentPrimitivesContext.js.map +0 -1
- package/lib/curve/Query/CurveSplitContext.d.ts.map +0 -1
- package/lib/curve/Query/CurveSplitContext.js.map +0 -1
- package/lib/curve/Query/CylindricalRange.d.ts.map +0 -1
- package/lib/curve/Query/CylindricalRange.js.map +0 -1
- package/lib/curve/Query/InOutTests.d.ts.map +0 -1
- package/lib/curve/Query/InOutTests.js.map +0 -1
- package/lib/curve/Query/PlanarSubdivision.d.ts.map +0 -1
- package/lib/curve/Query/PlanarSubdivision.js.map +0 -1
- package/lib/curve/Query/StrokeCountChain.d.ts.map +0 -1
- package/lib/curve/Query/StrokeCountChain.js.map +0 -1
- package/lib/curve/Query/StrokeCountMap.d.ts.map +0 -1
- package/lib/curve/Query/StrokeCountMap.js.map +0 -1
- package/lib/curve/RegionMomentsXY.d.ts.map +0 -1
- package/lib/curve/RegionMomentsXY.js.map +0 -1
- package/lib/curve/RegionOps.d.ts.map +0 -1
- package/lib/curve/RegionOps.js.map +0 -1
- package/lib/curve/RegionOpsClassificationSweeps.d.ts.map +0 -1
- package/lib/curve/RegionOpsClassificationSweeps.js.map +0 -1
- package/lib/curve/StrokeOptions.d.ts.map +0 -1
- package/lib/curve/StrokeOptions.js.map +0 -1
- package/lib/curve/UnionRegion.d.ts.map +0 -1
- package/lib/curve/UnionRegion.js.map +0 -1
- package/lib/curve/internalContexts/CloneCurvesContext.d.ts.map +0 -1
- package/lib/curve/internalContexts/CloneCurvesContext.js.map +0 -1
- package/lib/curve/internalContexts/CloneWithExpandedLineStrings.d.ts.map +0 -1
- package/lib/curve/internalContexts/CloneWithExpandedLineStrings.js.map +0 -1
- package/lib/curve/internalContexts/CountLinearPartsSearchContext.d.ts.map +0 -1
- package/lib/curve/internalContexts/CountLinearPartsSearchContext.js.map +0 -1
- package/lib/curve/internalContexts/GapSearchContext.d.ts.map +0 -1
- package/lib/curve/internalContexts/GapSearchContext.js.map +0 -1
- package/lib/curve/internalContexts/MultiChainCollector.d.ts.map +0 -1
- package/lib/curve/internalContexts/MultiChainCollector.js.map +0 -1
- package/lib/curve/internalContexts/PlaneAltitudeRangeContext.d.ts.map +0 -1
- package/lib/curve/internalContexts/PlaneAltitudeRangeContext.js.map +0 -1
- package/lib/curve/internalContexts/PolygonOffsetContext.d.ts.map +0 -1
- package/lib/curve/internalContexts/PolygonOffsetContext.js.map +0 -1
- package/lib/curve/internalContexts/SumLengthsContext.d.ts.map +0 -1
- package/lib/curve/internalContexts/SumLengthsContext.js.map +0 -1
- package/lib/curve/internalContexts/TransformInPlaceContext.d.ts.map +0 -1
- package/lib/curve/internalContexts/TransformInPlaceContext.js.map +0 -1
- package/lib/curve/spiral/AustralianRailCorpXYEvaluator.d.ts.map +0 -1
- package/lib/curve/spiral/AustralianRailCorpXYEvaluator.js.map +0 -1
- package/lib/curve/spiral/ClothoidSeries.d.ts.map +0 -1
- package/lib/curve/spiral/ClothoidSeries.js.map +0 -1
- package/lib/curve/spiral/CubicEvaluator.d.ts.map +0 -1
- package/lib/curve/spiral/CubicEvaluator.js.map +0 -1
- package/lib/curve/spiral/CzechSpiralEvaluator.d.ts.map +0 -1
- package/lib/curve/spiral/CzechSpiralEvaluator.js.map +0 -1
- package/lib/curve/spiral/DirectHalfCosineSpiralEvaluator.d.ts.map +0 -1
- package/lib/curve/spiral/DirectHalfCosineSpiralEvaluator.js.map +0 -1
- package/lib/curve/spiral/DirectSpiral3d.d.ts +0 -264
- package/lib/curve/spiral/DirectSpiral3d.d.ts.map +0 -1
- package/lib/curve/spiral/DirectSpiral3d.js +0 -464
- package/lib/curve/spiral/DirectSpiral3d.js.map +0 -1
- package/lib/curve/spiral/IntegratedSpiral3d.d.ts +0 -154
- package/lib/curve/spiral/IntegratedSpiral3d.d.ts.map +0 -1
- package/lib/curve/spiral/IntegratedSpiral3d.js +0 -351
- package/lib/curve/spiral/IntegratedSpiral3d.js.map +0 -1
- package/lib/curve/spiral/MXCubicAlongArcSpiralEvaluator.d.ts.map +0 -1
- package/lib/curve/spiral/MXCubicAlongArcSpiralEvaluator.js.map +0 -1
- package/lib/curve/spiral/NormalizedTransition.d.ts.map +0 -1
- package/lib/curve/spiral/NormalizedTransition.js.map +0 -1
- package/lib/curve/spiral/PolishCubicSpiralEvaluator.d.ts.map +0 -1
- package/lib/curve/spiral/PolishCubicSpiralEvaluator.js.map +0 -1
- package/lib/curve/spiral/TransitionConditionalProperties.d.ts.map +0 -1
- package/lib/curve/spiral/TransitionConditionalProperties.js.map +0 -1
- package/lib/curve/spiral/TransitionSpiral3d.d.ts.map +0 -1
- package/lib/curve/spiral/TransitionSpiral3d.js.map +0 -1
- package/lib/curve/spiral/XYCurveEvaluator.d.ts.map +0 -1
- package/lib/curve/spiral/XYCurveEvaluator.js.map +0 -1
- package/lib/geometry3d/Angle.d.ts.map +0 -1
- package/lib/geometry3d/Angle.js.map +0 -1
- package/lib/geometry3d/AngleSweep.d.ts.map +0 -1
- package/lib/geometry3d/AngleSweep.js.map +0 -1
- package/lib/geometry3d/BarycentricTriangle.d.ts.map +0 -1
- package/lib/geometry3d/BarycentricTriangle.js.map +0 -1
- package/lib/geometry3d/BilinearPatch.d.ts.map +0 -1
- package/lib/geometry3d/BilinearPatch.js.map +0 -1
- package/lib/geometry3d/CoincidentGeometryOps.d.ts.map +0 -1
- package/lib/geometry3d/CoincidentGeometryOps.js.map +0 -1
- package/lib/geometry3d/Ellipsoid.d.ts.map +0 -1
- package/lib/geometry3d/Ellipsoid.js.map +0 -1
- package/lib/geometry3d/FrameBuilder.d.ts.map +0 -1
- package/lib/geometry3d/FrameBuilder.js.map +0 -1
- package/lib/geometry3d/FrustumAnimation.d.ts.map +0 -1
- package/lib/geometry3d/FrustumAnimation.js.map +0 -1
- package/lib/geometry3d/GeometryHandler.d.ts.map +0 -1
- package/lib/geometry3d/GeometryHandler.js.map +0 -1
- package/lib/geometry3d/GrowableBlockedArray.d.ts.map +0 -1
- package/lib/geometry3d/GrowableBlockedArray.js.map +0 -1
- package/lib/geometry3d/GrowableFloat64Array.d.ts.map +0 -1
- package/lib/geometry3d/GrowableFloat64Array.js.map +0 -1
- package/lib/geometry3d/GrowableXYArray.d.ts.map +0 -1
- package/lib/geometry3d/GrowableXYArray.js.map +0 -1
- package/lib/geometry3d/GrowableXYZArray.d.ts.map +0 -1
- package/lib/geometry3d/GrowableXYZArray.js.map +0 -1
- package/lib/geometry3d/IndexedCollectionInterval.d.ts.map +0 -1
- package/lib/geometry3d/IndexedCollectionInterval.js.map +0 -1
- package/lib/geometry3d/IndexedXYCollection.d.ts.map +0 -1
- package/lib/geometry3d/IndexedXYCollection.js.map +0 -1
- package/lib/geometry3d/IndexedXYZCollection.d.ts.map +0 -1
- package/lib/geometry3d/IndexedXYZCollection.js.map +0 -1
- package/lib/geometry3d/LongitudeLatitudeAltitude.d.ts.map +0 -1
- package/lib/geometry3d/LongitudeLatitudeAltitude.js.map +0 -1
- package/lib/geometry3d/Matrix3d.d.ts.map +0 -1
- package/lib/geometry3d/Matrix3d.js.map +0 -1
- package/lib/geometry3d/OrderedRotationAngles.d.ts.map +0 -1
- package/lib/geometry3d/OrderedRotationAngles.js.map +0 -1
- package/lib/geometry3d/Plane3dByOriginAndUnitNormal.d.ts.map +0 -1
- package/lib/geometry3d/Plane3dByOriginAndUnitNormal.js.map +0 -1
- package/lib/geometry3d/Plane3dByOriginAndVectors.d.ts.map +0 -1
- package/lib/geometry3d/Plane3dByOriginAndVectors.js.map +0 -1
- package/lib/geometry3d/Point2dArrayCarrier.d.ts.map +0 -1
- package/lib/geometry3d/Point2dArrayCarrier.js.map +0 -1
- package/lib/geometry3d/Point2dVector2d.d.ts.map +0 -1
- package/lib/geometry3d/Point2dVector2d.js.map +0 -1
- package/lib/geometry3d/Point3dArrayCarrier.d.ts.map +0 -1
- package/lib/geometry3d/Point3dArrayCarrier.js.map +0 -1
- package/lib/geometry3d/Point3dVector3d.d.ts.map +0 -1
- package/lib/geometry3d/Point3dVector3d.js.map +0 -1
- package/lib/geometry3d/PointHelpers.d.ts.map +0 -1
- package/lib/geometry3d/PointHelpers.js.map +0 -1
- package/lib/geometry3d/PointStreaming.d.ts.map +0 -1
- package/lib/geometry3d/PointStreaming.js.map +0 -1
- package/lib/geometry3d/PolygonOps.d.ts.map +0 -1
- package/lib/geometry3d/PolygonOps.js.map +0 -1
- package/lib/geometry3d/PolylineCompressionByEdgeOffset.d.ts.map +0 -1
- package/lib/geometry3d/PolylineCompressionByEdgeOffset.js.map +0 -1
- package/lib/geometry3d/PolylineOps.d.ts.map +0 -1
- package/lib/geometry3d/PolylineOps.js.map +0 -1
- package/lib/geometry3d/Range.d.ts.map +0 -1
- package/lib/geometry3d/Range.js.map +0 -1
- package/lib/geometry3d/Ray3d.d.ts.map +0 -1
- package/lib/geometry3d/Ray3d.js.map +0 -1
- package/lib/geometry3d/ReusableObjectCache.d.ts.map +0 -1
- package/lib/geometry3d/ReusableObjectCache.js.map +0 -1
- package/lib/geometry3d/Segment1d.d.ts.map +0 -1
- package/lib/geometry3d/Segment1d.js.map +0 -1
- package/lib/geometry3d/SortablePolygon.d.ts.map +0 -1
- package/lib/geometry3d/SortablePolygon.js.map +0 -1
- package/lib/geometry3d/Transform.d.ts.map +0 -1
- package/lib/geometry3d/Transform.js.map +0 -1
- package/lib/geometry3d/UVSurfaceOps.d.ts.map +0 -1
- package/lib/geometry3d/UVSurfaceOps.js.map +0 -1
- package/lib/geometry3d/XYZProps.d.ts.map +0 -1
- package/lib/geometry3d/XYZProps.js.map +0 -1
- package/lib/geometry3d/YawPitchRollAngles.d.ts.map +0 -1
- package/lib/geometry3d/YawPitchRollAngles.js.map +0 -1
- package/lib/geometry4d/Map4d.d.ts.map +0 -1
- package/lib/geometry4d/Map4d.js.map +0 -1
- package/lib/geometry4d/Matrix4d.d.ts.map +0 -1
- package/lib/geometry4d/Matrix4d.js.map +0 -1
- package/lib/geometry4d/MomentData.d.ts.map +0 -1
- package/lib/geometry4d/MomentData.js.map +0 -1
- package/lib/geometry4d/PlaneByOriginAndVectors4d.d.ts.map +0 -1
- package/lib/geometry4d/PlaneByOriginAndVectors4d.js.map +0 -1
- package/lib/geometry4d/Point4d.d.ts.map +0 -1
- package/lib/geometry4d/Point4d.js.map +0 -1
- package/lib/numerics/BandedSystem.d.ts.map +0 -1
- package/lib/numerics/BandedSystem.js.map +0 -1
- package/lib/numerics/BezierPolynomials.d.ts.map +0 -1
- package/lib/numerics/BezierPolynomials.js.map +0 -1
- package/lib/numerics/ClusterableArray.d.ts.map +0 -1
- package/lib/numerics/ClusterableArray.js.map +0 -1
- package/lib/numerics/Complex.d.ts.map +0 -1
- package/lib/numerics/Complex.js.map +0 -1
- package/lib/numerics/ConvexPolygon2d.d.ts.map +0 -1
- package/lib/numerics/ConvexPolygon2d.js.map +0 -1
- package/lib/numerics/Newton.d.ts.map +0 -1
- package/lib/numerics/Newton.js.map +0 -1
- package/lib/numerics/PascalCoefficients.d.ts.map +0 -1
- package/lib/numerics/PascalCoefficients.js.map +0 -1
- package/lib/numerics/PolarData.d.ts.map +0 -1
- package/lib/numerics/PolarData.js.map +0 -1
- package/lib/numerics/Polynomials.d.ts.map +0 -1
- package/lib/numerics/Polynomials.js.map +0 -1
- package/lib/numerics/Quadrature.d.ts.map +0 -1
- package/lib/numerics/Quadrature.js.map +0 -1
- package/lib/numerics/Range1dArray.d.ts.map +0 -1
- package/lib/numerics/Range1dArray.js.map +0 -1
- package/lib/numerics/TriDiagonalSystem.d.ts.map +0 -1
- package/lib/numerics/TriDiagonalSystem.js.map +0 -1
- package/lib/numerics/UnionFind.d.ts.map +0 -1
- package/lib/numerics/UnionFind.js.map +0 -1
- package/lib/numerics/UsageSums.d.ts.map +0 -1
- package/lib/numerics/UsageSums.js.map +0 -1
- package/lib/polyface/AuxData.d.ts.map +0 -1
- package/lib/polyface/AuxData.js.map +0 -1
- package/lib/polyface/BoxTopology.d.ts.map +0 -1
- package/lib/polyface/BoxTopology.js.map +0 -1
- package/lib/polyface/FacetFaceData.d.ts.map +0 -1
- package/lib/polyface/FacetFaceData.js.map +0 -1
- package/lib/polyface/FacetOrientation.d.ts.map +0 -1
- package/lib/polyface/FacetOrientation.js.map +0 -1
- package/lib/polyface/GreedyTriangulationBetweenLineStrings.d.ts.map +0 -1
- package/lib/polyface/GreedyTriangulationBetweenLineStrings.js.map +0 -1
- package/lib/polyface/IndexedEdgeMatcher.d.ts.map +0 -1
- package/lib/polyface/IndexedEdgeMatcher.js.map +0 -1
- package/lib/polyface/IndexedPolyfaceVisitor.d.ts.map +0 -1
- package/lib/polyface/IndexedPolyfaceVisitor.js.map +0 -1
- package/lib/polyface/Polyface.d.ts.map +0 -1
- package/lib/polyface/Polyface.js.map +0 -1
- package/lib/polyface/PolyfaceBuilder.d.ts.map +0 -1
- package/lib/polyface/PolyfaceBuilder.js.map +0 -1
- package/lib/polyface/PolyfaceClip.d.ts.map +0 -1
- package/lib/polyface/PolyfaceClip.js.map +0 -1
- package/lib/polyface/PolyfaceData.d.ts +0 -170
- package/lib/polyface/PolyfaceData.d.ts.map +0 -1
- package/lib/polyface/PolyfaceData.js +0 -531
- package/lib/polyface/PolyfaceData.js.map +0 -1
- package/lib/polyface/PolyfaceQuery.d.ts.map +0 -1
- package/lib/polyface/PolyfaceQuery.js.map +0 -1
- package/lib/polyface/RangeLengthData.d.ts.map +0 -1
- package/lib/polyface/RangeLengthData.js.map +0 -1
- package/lib/polyface/TaggedNumericData.d.ts.map +0 -1
- package/lib/polyface/TaggedNumericData.js.map +0 -1
- package/lib/polyface/TriangleCandidate.d.ts.map +0 -1
- package/lib/polyface/TriangleCandidate.js.map +0 -1
- package/lib/polyface/multiclip/BuildAverageNormalsContext.d.ts.map +0 -1
- package/lib/polyface/multiclip/BuildAverageNormalsContext.js.map +0 -1
- package/lib/polyface/multiclip/GriddedRaggedRange2dSet.d.ts.map +0 -1
- package/lib/polyface/multiclip/GriddedRaggedRange2dSet.js.map +0 -1
- package/lib/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.d.ts.map +0 -1
- package/lib/polyface/multiclip/GriddedRaggedRange2dSetWithOverflow.js.map +0 -1
- package/lib/polyface/multiclip/LinearSearchRange2dArray.d.ts.map +0 -1
- package/lib/polyface/multiclip/LinearSearchRange2dArray.js.map +0 -1
- package/lib/polyface/multiclip/Range2dSearchInterface.d.ts.map +0 -1
- package/lib/polyface/multiclip/Range2dSearchInterface.js.map +0 -1
- package/lib/polyface/multiclip/RangeSearch.d.ts.map +0 -1
- package/lib/polyface/multiclip/RangeSearch.js.map +0 -1
- package/lib/polyface/multiclip/SweepLineStringToFacetContext.d.ts.map +0 -1
- package/lib/polyface/multiclip/SweepLineStringToFacetContext.js.map +0 -1
- package/lib/polyface/multiclip/XYPointBuckets.d.ts.map +0 -1
- package/lib/polyface/multiclip/XYPointBuckets.js.map +0 -1
- package/lib/serialization/BGFBAccessors.d.ts.map +0 -1
- package/lib/serialization/BGFBAccessors.js.map +0 -1
- package/lib/serialization/BGFBReader.d.ts.map +0 -1
- package/lib/serialization/BGFBReader.js.map +0 -1
- package/lib/serialization/BGFBWriter.d.ts.map +0 -1
- package/lib/serialization/BGFBWriter.js.map +0 -1
- package/lib/serialization/BentleyGeometryFlatBuffer.d.ts.map +0 -1
- package/lib/serialization/BentleyGeometryFlatBuffer.js.map +0 -1
- package/lib/serialization/DeepCompare.d.ts.map +0 -1
- package/lib/serialization/DeepCompare.js.map +0 -1
- package/lib/serialization/GeometrySamples.d.ts.map +0 -1
- package/lib/serialization/GeometrySamples.js.map +0 -1
- package/lib/serialization/IModelJsonSchema.d.ts.map +0 -1
- package/lib/serialization/IModelJsonSchema.js.map +0 -1
- package/lib/solid/Box.d.ts.map +0 -1
- package/lib/solid/Box.js.map +0 -1
- package/lib/solid/Cone.d.ts.map +0 -1
- package/lib/solid/Cone.js.map +0 -1
- package/lib/solid/LinearSweep.d.ts.map +0 -1
- package/lib/solid/LinearSweep.js.map +0 -1
- package/lib/solid/RotationalSweep.d.ts.map +0 -1
- package/lib/solid/RotationalSweep.js.map +0 -1
- package/lib/solid/RuledSweep.d.ts.map +0 -1
- package/lib/solid/RuledSweep.js.map +0 -1
- package/lib/solid/SolidPrimitive.d.ts.map +0 -1
- package/lib/solid/SolidPrimitive.js.map +0 -1
- package/lib/solid/Sphere.d.ts.map +0 -1
- package/lib/solid/Sphere.js.map +0 -1
- package/lib/solid/SweepContour.d.ts.map +0 -1
- package/lib/solid/SweepContour.js.map +0 -1
- package/lib/solid/TorusPipe.d.ts.map +0 -1
- package/lib/solid/TorusPipe.js.map +0 -1
- package/lib/topology/ChainMerge.d.ts.map +0 -1
- package/lib/topology/ChainMerge.js.map +0 -1
- package/lib/topology/Graph.d.ts.map +0 -1
- package/lib/topology/Graph.js.map +0 -1
- package/lib/topology/HalfEdgeGraphSearch.d.ts.map +0 -1
- package/lib/topology/HalfEdgeGraphSearch.js.map +0 -1
- package/lib/topology/HalfEdgeGraphSpineContext.d.ts.map +0 -1
- package/lib/topology/HalfEdgeGraphSpineContext.js.map +0 -1
- package/lib/topology/HalfEdgeGraphValidation.d.ts.map +0 -1
- package/lib/topology/HalfEdgeGraphValidation.js.map +0 -1
- package/lib/topology/HalfEdgeMarkSet.d.ts.map +0 -1
- package/lib/topology/HalfEdgeMarkSet.js.map +0 -1
- package/lib/topology/HalfEdgeNodeXYZUV.d.ts.map +0 -1
- package/lib/topology/HalfEdgeNodeXYZUV.js.map +0 -1
- package/lib/topology/HalfEdgePointInGraphSearch.d.ts.map +0 -1
- package/lib/topology/HalfEdgePointInGraphSearch.js.map +0 -1
- package/lib/topology/HalfEdgePositionDetail.d.ts.map +0 -1
- package/lib/topology/HalfEdgePositionDetail.js.map +0 -1
- package/lib/topology/HalfEdgePriorityQueue.d.ts.map +0 -1
- package/lib/topology/HalfEdgePriorityQueue.js.map +0 -1
- package/lib/topology/InsertAndRetriangulateContext.d.ts.map +0 -1
- package/lib/topology/InsertAndRetriangulateContext.js.map +0 -1
- package/lib/topology/MaskManager.d.ts.map +0 -1
- package/lib/topology/MaskManager.js.map +0 -1
- package/lib/topology/Merging.d.ts.map +0 -1
- package/lib/topology/Merging.js.map +0 -1
- package/lib/topology/RegularizeFace.d.ts.map +0 -1
- package/lib/topology/RegularizeFace.js.map +0 -1
- package/lib/topology/SignedDataSummary.d.ts.map +0 -1
- package/lib/topology/SignedDataSummary.js.map +0 -1
- package/lib/topology/Triangulation.d.ts.map +0 -1
- package/lib/topology/Triangulation.js.map +0 -1
- package/lib/topology/XYParitySearchContext.d.ts.map +0 -1
- package/lib/topology/XYParitySearchContext.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Polyface.js","sourceRoot":"","sources":["../../src/polyface/Polyface.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Polyface\r\n */\r\n\r\n// import { Point2d } from \"./Geometry2d\";\r\n/* eslint-disable @typescript-eslint/naming-convention, no-empty */\r\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\r\nimport { Geometry } from \"../Geometry\";\r\nimport { GeometryHandler } from \"../geometry3d/GeometryHandler\";\r\nimport { GrowableFloat64Array } from \"../geometry3d/GrowableFloat64Array\";\r\nimport { GrowableXYArray } from \"../geometry3d/GrowableXYArray\";\r\nimport { GrowableXYZArray } from \"../geometry3d/GrowableXYZArray\";\r\n// import { Geometry } from \"./Geometry\";\r\nimport { Point2d } from \"../geometry3d/Point2dVector2d\";\r\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { NumberArray } from \"../geometry3d/PointHelpers\";\r\nimport { Range3d } from \"../geometry3d/Range\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { FacetFaceData } from \"./FacetFaceData\";\r\nimport { IndexedPolyfaceVisitor } from \"./IndexedPolyfaceVisitor\";\r\nimport { PolyfaceData } from \"./PolyfaceData\";\r\n\r\nfunction allDefined(valueA: any, valueB: any, valueC: any): boolean {\r\n return valueA !== undefined && valueB !== undefined && valueC !== undefined;\r\n}\r\n\r\n/**\r\n * A Polyface is n abstract mesh structure (of unspecified implementation) that provides a PolyfaceVisitor\r\n * to iterate over its facets.\r\n * @public\r\n */\r\nexport abstract class Polyface extends GeometryQuery {\r\n /** String name for schema properties */\r\n public readonly geometryCategory = \"polyface\";\r\n\r\n /** Underlying polyface data. */\r\n public data: PolyfaceData;\r\n protected constructor(data: PolyfaceData) {\r\n super();\r\n this.data = data;\r\n }\r\n /** create and return a visitor for this concrete polyface. */\r\n public abstract createVisitor(_numWrap: number): PolyfaceVisitor;\r\n /** Flag indicating if the mesh display must assume both sides are visible. */\r\n public get twoSided() { return this.data.twoSided; }\r\n public set twoSided(value: boolean) { this.data.twoSided = value; }\r\n /** Flag indicating if the mesh closure is unknown (0), open sheet (1), closed (2) */\r\n public get expectedClosure(): number { return this.data.expectedClosure; }\r\n public set expectedClosure(value: number) { this.data.expectedClosure = value; }\r\n /**\r\n * Check validity of indices into a data array.\r\n * * It is valid to have both indices and data undefined.\r\n * * It is NOT valid for just one to be defined.\r\n * * Index values at indices[indexPositionA <= i < indexPositionB] must be valid indices to the data array.\r\n * @param indices array of indices.\r\n * @param indexPositionA first index to test\r\n * @param indexPositionB one past final index to test\r\n * @param data data array. Only its length is referenced.\r\n */\r\n public static areIndicesValid(indices: number[] | undefined, indexPositionA: number, indexPositionB: number, data: any | undefined, dataLength: number): boolean {\r\n if (indices === undefined && data === undefined)\r\n return true;\r\n if (!indices || !data)\r\n return false;\r\n if (indexPositionA < 0 || indexPositionA >= indices.length)\r\n return false;\r\n if (indexPositionB < indexPositionA || indexPositionB > indices.length)\r\n return false;\r\n for (let i = indexPositionA; i < indexPositionB; i++)\r\n if (indices[i] < 0 || indices[i] >= dataLength)\r\n return false;\r\n return true;\r\n }\r\n /**\r\n * Returns true if this polyface has no facets.\r\n */\r\n public abstract get isEmpty(): boolean;\r\n}\r\n/**\r\n * An `IndexedPolyface` is a set of facets which can have normal, param, and color arrays with independent point, normal, param, and color indices.\r\n * @public\r\n */\r\nexport class IndexedPolyface extends Polyface {\r\n /** Test if other is an instance of `IndexedPolyface` */\r\n public isSameGeometryClass(other: any): boolean { return other instanceof IndexedPolyface; }\r\n /** Tests for equivalence between two IndexedPolyfaces. */\r\n public override isAlmostEqual(other: any): boolean {\r\n if (other instanceof IndexedPolyface) {\r\n return this.data.isAlmostEqual(other.data) && NumberArray.isExactEqual(this._facetStart, other._facetStart) &&\r\n NumberArray.isExactEqual(this._facetToFaceData, other._facetToFaceData);\r\n }\r\n return false;\r\n }\r\n /**\r\n * Returns true if either the point array or the point index array is empty.\r\n */\r\n public get isEmpty(): boolean { return this.data.pointCount === 0 || this.data.pointIndex.length === 0; }\r\n /**\r\n * * apply the transform to points\r\n * * apply the (inverse transpose of) the matrix part to normals\r\n * * If determinant is negative, also\r\n * * negate normals\r\n * * reverse index order around each facet.\r\n * @param transform\r\n */\r\n public tryTransformInPlace(transform: Transform) {\r\n if (!this.data.tryTransformInPlace(transform))\r\n return false;\r\n\r\n const determinant = transform.matrix.determinant();\r\n if (determinant < 0) {\r\n this.reverseIndices();\r\n this.reverseNormals();\r\n }\r\n\r\n return true;\r\n }\r\n /** Reverse indices for a single facet. */\r\n public reverseSingleFacet(facetId: number) {\r\n this.data.reverseIndicesSingleFacet(facetId, this._facetStart);\r\n }\r\n /** Return a deep clone. */\r\n public clone(): IndexedPolyface {\r\n const result = new IndexedPolyface(this.data.clone(), this._facetStart.slice(), this._facetToFaceData.slice());\r\n return result;\r\n }\r\n /** Return a deep clone with transformed points and normals */\r\n public cloneTransformed(transform: Transform): IndexedPolyface {\r\n const result = this.clone();\r\n result.tryTransformInPlace(transform);\r\n return result;\r\n }\r\n /** Reverse the order of indices around all facets. */\r\n public reverseIndices() { this.data.reverseIndices(this._facetStart); }\r\n /** Reverse the direction of all normal vectors. */\r\n public reverseNormals() { this.data.reverseNormals(); }\r\n /**\r\n * * index to the index array entries for a specific facet.\r\n * * the facet count is facetStart.length - 1\r\n * * facet [f] indices run from facetStart[f] to upper limit facetStart[f+1].\r\n * * Note the array is initialized with one entry.\r\n */\r\n protected _facetStart: number[];\r\n\r\n /**\r\n * * For facet i, _facetToFaceData[i] is the index of the faceData entry for the facet.\r\n * * _facetToFaceData has one entry per facet.\r\n */\r\n protected _facetToFaceData: number[];\r\n\r\n /** return face data using a facet index. This is the REFERENCE to the FacetFaceData, not a copy. Returns undefined if none found. */\r\n public tryGetFaceData(i: number): FacetFaceData | undefined {\r\n const faceIndex = this._facetToFaceData[i];\r\n if (faceIndex >= this.data.face.length)\r\n return undefined;\r\n return this.data.face[faceIndex];\r\n }\r\n /**\r\n * Constructor for a new polyface.\r\n * @param data PolyfaceData arrays to capture.\r\n * @param facetStart optional array of facet start indices (e.g. known during clone)\r\n * @param facetToFacetData optional array of face identifiers (e.g. known during clone)\r\n */\r\n protected constructor(data: PolyfaceData, facetStart?: number[], facetToFaceData?: number[]) {\r\n super(data);\r\n if (facetStart)\r\n this._facetStart = facetStart.slice();\r\n else {\r\n this._facetStart = [];\r\n this._facetStart.push(0);\r\n }\r\n if (facetToFaceData)\r\n this._facetToFaceData = facetToFaceData.slice();\r\n else\r\n this._facetToFaceData = [];\r\n }\r\n /**\r\n * * Add facets from source to this polyface.\r\n * * optionally reverse the facets.\r\n * * optionally apply a transform to points.\r\n * * will only copy param, normal, color, and face data if we are already tracking them AND/OR the source contains them\r\n */\r\n public addIndexedPolyface(source: IndexedPolyface, reversed: boolean, transform: Transform | undefined) {\r\n const copyParams = allDefined(this.data.param, source.data.param, source.data.paramIndex);\r\n const copyNormals = allDefined(this.data.normal, source.data.normal, source.data.normalIndex);\r\n // Add point data\r\n const sourceToDestPointIndex = new GrowableFloat64Array();\r\n sourceToDestPointIndex.ensureCapacity(source.data.pointCount);\r\n const sourcePoints = source.data.point;\r\n const xyz = Point3d.create();\r\n for (let i = 0, n = source.data.point.length; i < n; i++) {\r\n sourcePoints.getPoint3dAtUncheckedPointIndex(i, xyz);\r\n if (transform) {\r\n transform.multiplyPoint3d(xyz, xyz);\r\n sourceToDestPointIndex.push(this.addPoint(xyz));\r\n } else\r\n sourceToDestPointIndex.push(this.addPoint(xyz));\r\n }\r\n\r\n // Add point index and facet data\r\n const numSourceFacets = source._facetStart.length - 1;\r\n for (let i = 0; i < numSourceFacets; i++) {\r\n const i0 = source._facetStart[i];\r\n const i1 = source._facetStart[i + 1];\r\n if (reversed) {\r\n for (let j = i1; j-- > i0;) {\r\n this.addPointIndex(sourceToDestPointIndex.atUncheckedIndex(source.data.pointIndex[j]), source.data.edgeVisible[j]);\r\n }\r\n } else {\r\n for (let j = i0; j < i1; j++) {\r\n this.addPointIndex(sourceToDestPointIndex.atUncheckedIndex(source.data.pointIndex[j]), source.data.edgeVisible[j]);\r\n }\r\n }\r\n this.terminateFacet(false);\r\n }\r\n\r\n // Add param and param index data\r\n if (copyParams) {\r\n const myParams = this.data.param!;\r\n\r\n const startOfNewParams = myParams.length;\r\n myParams.pushFromGrowableXYArray(source.data.param!);\r\n for (let i = 0; i < source._facetStart.length; i++) { // Expect facet start and ends for points to match normals\r\n const i0 = source._facetStart[i];\r\n const i1 = source._facetStart[i + 1];\r\n if (reversed) {\r\n for (let j = i1; j-- > i0;)\r\n this.addParamIndex(startOfNewParams + source.data.paramIndex![j]);\r\n } else {\r\n for (let j = i0; j < i1; j++)\r\n this.addParamIndex(startOfNewParams + source.data.paramIndex![j]);\r\n }\r\n }\r\n }\r\n\r\n // Add normal and normal index data\r\n if (copyNormals && source.data.normal) {\r\n const startOfNewNormals = this.data.normal!.length;\r\n const numNewNormals = source.data.normal.length;\r\n for (let i = 0; i < numNewNormals; i++) {\r\n const sourceNormal = source.data.normal.getVector3dAtCheckedVectorIndex(i)!;\r\n if (transform) {\r\n transform.multiplyVector(sourceNormal, sourceNormal);\r\n this.addNormal(sourceNormal);\r\n } else {\r\n this.addNormal(sourceNormal);\r\n }\r\n }\r\n for (let i = 0; i < source._facetStart.length; i++) { // Expect facet start and ends for points to match normals\r\n const i0 = source._facetStart[i];\r\n const i1 = source._facetStart[i + 1];\r\n if (reversed) {\r\n for (let j = i1; j-- > i0;)\r\n this.addNormalIndex(startOfNewNormals + source.data.normalIndex![j]);\r\n } else {\r\n for (let j = i0; j < i1; j++)\r\n this.addNormalIndex(startOfNewNormals + source.data.normalIndex![j]);\r\n }\r\n }\r\n }\r\n\r\n // Add color and color index data\r\n if (this.data.color && source.data.color && source.data.colorIndex) {\r\n const startOfNewColors = this.data.color.length;\r\n for (const sourceColor of source.data.color) {\r\n this.addColor(sourceColor);\r\n }\r\n for (let i = 0; i < source._facetStart.length; i++) { // Expect facet start and ends for points to match colors\r\n const i0 = source._facetStart[i];\r\n const i1 = source._facetStart[i + 1];\r\n if (reversed) {\r\n for (let j = i1; j-- > i0;)\r\n this.addColorIndex(startOfNewColors + source.data.colorIndex[j - 1]);\r\n } else {\r\n for (let j = i0; j < i1; j++)\r\n this.addColorIndex(startOfNewColors + source.data.colorIndex[j]);\r\n }\r\n }\r\n }\r\n\r\n // Add face and facetToFace index data\r\n if (source.data.face.length !== 0) {\r\n const startOfNewFaceData = this.data.face.length;\r\n for (const face of source.data.face) {\r\n const sourceFaceData = face.clone();\r\n this.data.face.push(sourceFaceData);\r\n }\r\n for (const facetToFaceIdx of source._facetToFaceData) {\r\n this._facetToFaceData.push(startOfNewFaceData + facetToFaceIdx);\r\n }\r\n }\r\n }\r\n\r\n /** Return the total number of param indices in zero-terminated style, which includes\r\n * * all the indices in the packed zero-based table\r\n * * one additional index for the zero-terminator of each facet.\r\n * @note Note that all index arrays (point, normal, param, color) have the same counts, so there\r\n * is not a separate query for each of them.\r\n */\r\n public get zeroTerminatedIndexCount(): number { return this.data.pointIndex.length + this._facetStart.length - 1; }\r\n /** Create an empty facet set, with coordinate and index data to be supplied later.\r\n * @param needNormals true if normals will be constructed\r\n * @param needParams true if uv parameters will be constructed\r\n * @param needColors true if colors will e constructed.\r\n */\r\n public static create(needNormals: boolean = false, needParams: boolean = false, needColors: boolean = false, twoSided: boolean = false): IndexedPolyface {\r\n return new IndexedPolyface(new PolyfaceData(needNormals, needParams, needColors, twoSided));\r\n }\r\n /** add (a clone of ) a point. return its 0 based index.\r\n * @param point point coordinates\r\n * @param priorIndex optional index of prior point to check for repeated coordinates\r\n * @returns Returns the zero-based index of the added or reused point.\r\n */\r\n public addPoint(point: Point3d, priorIndex?: number): number {\r\n if (priorIndex !== undefined) {\r\n const distance = this.data.point.distanceIndexToPoint(priorIndex, point);\r\n if (distance !== undefined && Geometry.isSmallMetricDistance(distance))\r\n return priorIndex;\r\n }\r\n this.data.point.pushXYZ(point.x, point.y, point.z);\r\n return this.data.point.length - 1;\r\n }\r\n\r\n /** add a point.\r\n * @returns Returns the zero-based index of the added point.\r\n */\r\n public addPointXYZ(x: number, y: number, z: number): number { this.data.point.pushXYZ(x, y, z); return this.data.point.length - 1; }\r\n /** Add a uv param.\r\n * @returns 0-based index of the added param.\r\n */\r\n public addParam(param: Point2d): number {\r\n if (!this.data.param) this.data.param = new GrowableXYArray();\r\n this.data.param.push(param);\r\n return this.data.param.length - 1;\r\n }\r\n /** Add a uv parameter to the parameter array.\r\n * @param priorIndexA first index to check for possible duplicate value.\r\n * @param priorIndexB second index to check for possible duplicate value.\r\n * @returns 0-based index of the added or reused param.\r\n */\r\n public addParamUV(u: number, v: number, priorIndexA?: number, priorIndexB?: number): number {\r\n if (!this.data.param) this.data.param = new GrowableXYArray();\r\n if (priorIndexA !== undefined && this.data.isAlmostEqualParamIndexUV(priorIndexA, u, v))\r\n return priorIndexA;\r\n if (priorIndexB !== undefined && this.data.isAlmostEqualParamIndexUV(priorIndexB, u, v))\r\n return priorIndexB;\r\n this.data.param.pushXY(u, v);\r\n return this.data.param.length - 1;\r\n }\r\n\r\n /** Add a normal vector\r\n * @param priorIndexA first index to check for possible duplicate value.\r\n * @param priorIndexB second index to check for possible duplicate value.\r\n * @returns 0-based index of the added or reused normal.\r\n */\r\n public addNormal(normal: Vector3d, priorIndexA?: number, priorIndexB?: number): number {\r\n if (this.data.normal !== undefined) {\r\n let distance;\r\n\r\n if (priorIndexA !== undefined) {\r\n distance = this.data.normal.distanceIndexToPoint(priorIndexA, normal);\r\n if (distance !== undefined && Geometry.isSmallMetricDistance(distance))\r\n return priorIndexA;\r\n }\r\n if (priorIndexB !== undefined) {\r\n distance = this.data.normal.distanceIndexToPoint(priorIndexB, normal);\r\n if (distance !== undefined && Geometry.isSmallMetricDistance(distance))\r\n return priorIndexB;\r\n }\r\n // Note: Do NOT attempt to chain to tail if no prior indices given.\r\n // But if they are, look also to the tail.\r\n if (priorIndexA !== undefined || priorIndexB !== undefined) {\r\n const tailIndex = this.data.normal.length - 1;\r\n distance = this.data.normal.distanceIndexToPoint(tailIndex, normal);\r\n if (distance !== undefined && Geometry.isSmallMetricDistance(distance))\r\n return tailIndex;\r\n }\r\n }\r\n\r\n return this.addNormalXYZ(normal.x, normal.y, normal.z);\r\n }\r\n\r\n /** Add a normal vector given by direct coordinates\r\n * @returns 0-based index of the added or reused param.\r\n */\r\n public addNormalXYZ(x: number, y: number, z: number): number {\r\n if (!this.data.normal) this.data.normal = new GrowableXYZArray();\r\n this.data.normal.pushXYZ(x, y, z);\r\n return this.data.normal.length - 1;\r\n }\r\n\r\n /** Add a color\r\n * @returns 0-based index of the added or reused color.\r\n */\r\n public addColor(color: number): number {\r\n if (!this.data.color) this.data.color = [];\r\n this.data.color.push(color);\r\n return this.data.color.length - 1;\r\n }\r\n /** Add a point index with edge visibility flag. */\r\n public addPointIndex(index: number, visible: boolean = true): void { this.data.pointIndex.push(index); this.data.edgeVisible.push(visible); }\r\n /** Add a normal index */\r\n public addNormalIndex(index: number): void {\r\n if (!this.data.normalIndex)\r\n this.data.normalIndex = [];\r\n this.data.normalIndex.push(index);\r\n }\r\n /** Add a param index */\r\n public addParamIndex(index: number): void {\r\n if (!this.data.paramIndex)\r\n this.data.paramIndex = [];\r\n this.data.paramIndex.push(index);\r\n }\r\n /** Add a color index */\r\n public addColorIndex(index: number): void {\r\n if (!this.data.colorIndex)\r\n this.data.colorIndex = [];\r\n this.data.colorIndex.push(index);\r\n }\r\n\r\n /** clean up the open facet. return the returnValue (so caller can easily return cleanupOpenFacet(\"message\")) */\r\n public cleanupOpenFacet(): void {\r\n this.data.trimAllIndexArrays(this.data.pointIndex.length);\r\n }\r\n /** announce the end of construction of a facet.\r\n *\r\n * * The \"open\" facet is checked for:\r\n *\r\n * ** Same number of indices among all active index arrays -- point, normal, param, color\r\n * ** All indices are within bounds of the respective data arrays.\r\n * * in error cases, all index arrays are trimmed back to the size when previous facet was terminated.\r\n * * \"undefined\" return is normal. Any other return is a description of an error.\r\n */\r\n public terminateFacet(validateAllIndices: boolean = true): any {\r\n const numFacets = this._facetStart.length - 1;\r\n const lengthA = this._facetStart[numFacets]; // number of indices in accepted facets\r\n const lengthB = this.data.pointIndex.length; // number of indices including the open facet\r\n if (validateAllIndices) {\r\n const messages: any[] = [];\r\n\r\n if (lengthB < lengthA + 2)\r\n messages.push(\"Less than 3 indices in open facet\");\r\n if (this.data.normalIndex && this.data.normalIndex.length !== lengthB)\r\n messages.push(\"normalIndex count must match pointIndex count\");\r\n if (this.data.paramIndex && this.data.paramIndex.length !== lengthB)\r\n messages.push(\"paramIndex count must equal pointIndex count\");\r\n if (this.data.colorIndex && this.data.colorIndex.length !== lengthB)\r\n messages.push(\"colorIndex count must equal pointIndex count\");\r\n if (this.data.edgeVisible.length !== lengthB)\r\n messages.push(\"visibleIndex count must equal pointIndex count\");\r\n\r\n if (!Polyface.areIndicesValid(this.data.normalIndex, lengthA, lengthB, this.data.normal, this.data.normal ? this.data.normal.length : 0))\r\n messages.push(\"invalid normal indices in open facet\");\r\n if (messages.length > 0) {\r\n this.cleanupOpenFacet();\r\n return messages;\r\n }\r\n }\r\n // appending to facetStart accepts the facet !!!\r\n this._facetStart.push(lengthB);\r\n return undefined;\r\n }\r\n /**\r\n * All terminated facets added since the declaration of the previous face\r\n * will be grouped into a new face with their own 2D range.\r\n */\r\n /** (read-only property) number of facets */\r\n public get facetCount(): number { return this._facetStart.length - 1; }\r\n /** (read-only property) number of faces */\r\n public get faceCount(): number { return this.data.faceCount; }\r\n /** (read-only property) number of points */\r\n public get pointCount(): number { return this.data.pointCount; }\r\n /** (read-only property) number of colors */\r\n public get colorCount(): number { return this.data.colorCount; }\r\n /** (read-only property) number of parameters */\r\n public get paramCount(): number { return this.data.paramCount; }\r\n /** (read-only property) number of normals */\r\n public get normalCount(): number { return this.data.normalCount; }\r\n /** Return the number of edges in a particular facet. */\r\n public numEdgeInFacet(facetIndex: number): number {\r\n if (this.isValidFacetIndex(facetIndex))\r\n return this._facetStart[facetIndex + 1] - this._facetStart[facetIndex];\r\n return 0;\r\n }\r\n /** test if `index` is a valid facet index. */\r\n public isValidFacetIndex(index: number): boolean { return index >= 0 && index + 1 < this._facetStart.length; }\r\n /** ASSUME valid facet index . .. return its start index in index arrays. */\r\n public facetIndex0(index: number): number { return this._facetStart[index]; }\r\n /** ASSUME valid facet index . .. return its end index in index arrays. */\r\n public facetIndex1(index: number): number { return this._facetStart[index + 1]; }\r\n /** create a visitor for this polyface */\r\n public createVisitor(numWrap: number = 0): PolyfaceVisitor { return IndexedPolyfaceVisitor.create(this, numWrap); }\r\n /** Return the range of (optionally transformed) points in this mesh. */\r\n public override range(transform?: Transform, result?: Range3d): Range3d { return this.data.range(result, transform); }\r\n /** Extend `range` with coordinates from this mesh */\r\n public extendRange(range: Range3d, transform?: Transform): void { this.data.range(range, transform); }\r\n\r\n /** Given the index of a facet, return the data pertaining to the face it is a part of. */\r\n public getFaceDataByFacetIndex(facetIndex: number): FacetFaceData {\r\n return this.data.face[this._facetToFaceData[facetIndex]];\r\n }\r\n\r\n /**\r\n * All terminated facets since the last face declaration will be mapped to a single new FacetFaceData object\r\n * using facetToFaceData[]. FacetFaceData holds the 2D range of the face. Returns true if successful, false otherwise.\r\n */\r\n public setNewFaceData(endFacetIndex: number = 0): boolean {\r\n const facetStart = this._facetToFaceData.length;\r\n if (facetStart >= this._facetStart.length)\r\n return false;\r\n\r\n if (0 === endFacetIndex) // The default for endFacetIndex is really the last facet\r\n endFacetIndex = this._facetStart.length; // Last facetStart index corresponds to the next facet if we were to create one\r\n\r\n const faceData = FacetFaceData.createNull();\r\n const visitor = IndexedPolyfaceVisitor.create(this, 0);\r\n\r\n if (!visitor.moveToReadIndex(facetStart)) { // Move visitor to first facet of new face\r\n return false;\r\n }\r\n\r\n // If parameter range is provided (by the polyface planeSet clipper) then use it\r\n const paramDefined = this.data.param !== undefined;\r\n const setParamRange: boolean = faceData.paramRange.isNull && paramDefined;\r\n\r\n do {\r\n if (setParamRange && visitor.param !== undefined)\r\n visitor.param.extendRange(faceData.paramRange);\r\n } while (visitor.moveToNextFacet() && visitor.currentReadIndex() < endFacetIndex);\r\n\r\n if (paramDefined && !(this.data.param!.length === 0) && faceData.paramDistanceRange.isNull)\r\n faceData.setParamDistanceRangeFromNewFaceData(this, facetStart, endFacetIndex);\r\n\r\n this.data.face.push(faceData);\r\n const faceDataIndex = this.data.face.length - 1;\r\n for (let i = this._facetToFaceData.length; i < endFacetIndex; i++)\r\n this._facetToFaceData.push(0 === this._facetStart[i] ? 0 : faceDataIndex);\r\n\r\n return true;\r\n }\r\n /** Second step of double dispatch: call `handler.handleIndexedPolyface(this)` */\r\n public dispatchToGeometryHandler(handler: GeometryHandler): any {\r\n return handler.handleIndexedPolyface(this);\r\n }\r\n}\r\n\r\n/**\r\n * A PolyfaceVisitor manages data while walking through facets.\r\n *\r\n * * The polyface visitor holds data for one facet at a time.\r\n * * The caller can request the position in the addressed facets as a \"readIndex.\"\r\n * * The readIndex value (as a number) is not promised to be sequential. (I.e. it might be a simple facet count or might be\r\n * @public\r\n */\r\nexport interface PolyfaceVisitor extends PolyfaceData {\r\n /** Load data for the facet with given index. */\r\n moveToReadIndex(index: number): boolean;\r\n /** Return the readIndex of the currently loaded facet */\r\n currentReadIndex(): number;\r\n /** Load data for the next facet. */\r\n moveToNextFacet(): boolean;\r\n /** Reset to initial state for reading all facets sequentially with moveToNextFacet */\r\n reset(): void;\r\n /** Return the point index of vertex i within the currently loaded facet */\r\n clientPointIndex(i: number): number;\r\n /** Return the param index of vertex i within the currently loaded facet */\r\n clientParamIndex(i: number): number;\r\n /** Return the normal index of vertex i within the currently loaded facet */\r\n clientNormalIndex(i: number): number;\r\n /** Return the color index of vertex i within the currently loaded facet */\r\n clientColorIndex(i: number): number;\r\n /** Return the aux data index of vertex i within the currently loaded facet */\r\n clientAuxIndex(i: number): number;\r\n /** return the client polyface */\r\n clientPolyface(): Polyface | undefined;\r\n /** Set the number of vertices to replicate in visitor arrays. */\r\n setNumWrap(numWrap: number): void;\r\n\r\n /** clear the contents of all arrays. Use this along with transferDataFrom methods to build up new facets */\r\n clearArrays(): void;\r\n /** transfer data from a specified index of the other visitor as new data in this visitor. */\r\n pushDataFrom(other: PolyfaceVisitor, index: number): void;\r\n /** transfer interpolated data from the other visitor.\r\n * * all data values are interpolated at `fraction` between `other` values at index0 and index1.\r\n */\r\n pushInterpolatedDataFrom(other: PolyfaceVisitor, index0: number, fraction: number, index1: number): void;\r\n\r\n}\r\n\r\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PolyfaceBuilder.d.ts","sourceRoot":"","sources":["../../src/polyface/PolyfaceBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PolyfaceBuilder.js","sourceRoot":"","sources":["../../src/polyface/PolyfaceBuilder.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;;AAE/F;;GAEG;AAEH,sFAAmF;AAEnF,8DAAuE;AACvE,wDAAqD;AACrD,4DAAyD;AACzD,0DAAuD;AACvD,wDAAqD;AACrD,wDAAqD;AACrD,sEAAwE;AACxE,sEAAqE;AACrE,0DAAuD;AACvD,0CAAkD;AAElD,+DAA4D;AAC5D,6DAA0D;AAC1D,mEAA+E;AAC/E,6EAA0E;AAE1E,qEAAkE;AAClE,6EAA0E;AAC1E,qDAAkD;AAClD,uFAAoF;AACpF,mEAAwD;AACxD,2EAAwE;AACxE,mEAAuE;AACvE,yDAAsD;AACtD,+CAAuD;AACvD,uDAAoD;AACpD,uDAAoD;AACpD,6DAA0D;AAO1D,wDAAqD;AAErD,6CAAuF;AACvF,6DAAyD;AACzD,+CAA4C;AAC5C,mGAAgG;AAChG,yCAA8D;AAE9D,2FAA2F;AAC3F;;;;;GAKG;AACH,MAAM,WAAW;IAQf,YAAmB,aAAsB,KAAK,EAAE,SAAkB,KAAK,EAAE,wBAAiC,KAAK;QAC7G,IAAI,CAAC,GAAG,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;QAElB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACnB,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,MAAM,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;SACjC;QACD,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,EAAE,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;SACnB;QACD,IAAI,qBAAqB,EAAE;YACzB,IAAI,CAAC,iBAAiB,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;SAC5C;IACH,CAAC;IACD;;OAEG;IACI,gBAAgB,CAAC,KAAkB;QACxC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM;YACb,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,MAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,IAAI,CAAC,EAAE;YACT,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,IAAI,CAAC,iBAAiB;YACxB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IACD;;;;OAIG;IACI,wDAAwD,CAAC,CAAS,EAAE,SAA2B,EAAE,iBAAoC,EAAE,SAAgC,EAAE,CAAU;QACxL,SAAS,CAAC,6BAA6B,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,SAAS,IAAI,CAAC,KAAK,SAAS;YAC9B,IAAI,CAAC,EAAE,GAAG,yBAAO,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,SAAS;YACzE,iBAAiB,CAAC,+BAA+B,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACjF,CAAC;IACO,MAAM,CAAC,iCAAiC,CAAC,GAAQ;QACvD,MAAM,GAAG,GAAG,OAAO,CAAC;QACpB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;YAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACvC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;YAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACvC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;YAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACzC,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,2BAA2B,CAAC,OAAoB,EAAE,OAAoB;QAClF,+DAA+D;QAC/D,6HAA6H;QAC7H,IAAI,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,EAAE;YAC1D,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC;YACzC,0BAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5D,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACjE,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACjE,OAAO,CAAC,MAAO,CAAC,gBAAgB,EAAE,CAAC;YACnC,OAAO,CAAC,MAAO,CAAC,gBAAgB,EAAE,CAAC;YACnC,WAAW,CAAC,iCAAiC,CAAC,OAAO,CAAC,MAAO,CAAC,CAAC;YAC/D,WAAW,CAAC,iCAAiC,CAAC,OAAO,CAAC,MAAO,CAAC,CAAC;SAChE;IACH,CAAC;;AAtBc,uBAAW,GAAa,0BAAQ,CAAC,MAAM,EAAE,CAAC;AAyB3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAa,eAAgB,SAAQ,qCAAmB;IAkBtD,YAAoB,OAAuB;QACzC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,6BAAa,CAAC,eAAe,EAAE,CAAC;QACpE,IAAI,CAAC,SAAS,GAAG,0BAAe,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAC/D,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAClF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IArBD,qEAAqE;IACrE,IAAW,OAAO,KAAoB,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAG7D,2EAA2E;IAC3E,IAAW,YAAY,KAAc,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7D,4BAA4B;IACrB,aAAa,CAAC,WAAoB,IAAI;QAC3C,IAAI,QAAQ;YACV,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,sFAAsF;IAC/E,uBAAuB,KAAK,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAStE;;;OAGG;IACI,MAAM,CAAC,MAAM,CAAC,OAAuB;QAC1C,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IACD,6CAA6C;IACtC,qBAAqB,CAAC,SAAoB;QAC/C,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,eAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;IAED;;MAEE;IACK,uBAAuB,CAAC,SAAoB,EAAE,KAAc,EAAE,YAAwB;QAC3F,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;QACnD,mEAAmE;QACnE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,MAAM;YACpB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,KAAK,MAAM,KAAK,IAAI,yBAAW,CAAC,cAAc,EAAE;YAC9C,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE;gBACrF,KAAK,MAAM,UAAU,IAAI,KAAK;oBAC5B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC;gBACzD,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;aACjC;YACD,WAAW,EAAE,CAAC;SACf;IACH,CAAC;IACD;;;OAGG;IACI,cAAc,CAAC,SAAkB,EAAE,EAAgB,EAAE,MAAe;QACzE,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,IAAI,MAAM;gBACR,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC;YACrD,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC;gBACjD,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC5D,MAAM,GAAG,MAAM,CAAC;aACjB;YACD,IAAI,MAAM;gBACR,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;IACH,CAAC;IAED;;;;;;OAMG;IACI,oCAAoC,CAAC,EAAgB,EAAE,MAAe;QAC3E,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,IAAI,MAAM;gBACR,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC;YACX,IAAI,WAAW,CAAC;YAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;gBAC7B,MAAM,GAAG,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC,oBAAoB,CAAE,CAAC;gBACnE,IAAI,MAAM;oBACR,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC5B,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aAChD;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YAE5C,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;YACrB,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;YACrB,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;YACrB,IAAI,QAAQ,EAAE;gBACZ,WAAW,GAAG,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,CAAC,CAAE,CAAC;gBACjE,WAAW,GAAG,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,CAAC,CAAE,CAAC;aAClE;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC;YAC5D,IAAI,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC;YAC1D,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,IAAI,EAAE,CAAC,kBAAkB;gBACvB,OAAO,EAAE,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,GAAG,WAAW,EAAE,WAAW,GAAG,WAAW,EAAE;gBACtF,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC;gBACtD,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;gBAClF,IAAI,WAAW,KAAK,SAAS;oBAC3B,IAAI,CAAC,+BAA+B,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;gBAC9E,IAAI,QAAQ,EAAE;oBACZ,WAAW,GAAG,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,CAAC,CAAE,CAAC;oBACjE,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;iBAC5E;gBACD,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;aACjC;YACD,IAAI,MAAM;gBACR,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;IACH,CAAC;IAED;;OAEG;IACI,cAAc,CAAC,GAAY;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,CAAS,EAAE,CAAS;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAID;;;;OAIG;IACI,0BAA0B,CAAC,EAAgB,EAAE,KAAa,EAAE,SAAqB,EAAE,UAAmB;QAC3G,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;QAClE,IAAI,CAAC,EAAE;YACL,IAAI,SAAS;gBACX,SAAS,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;SAC/C;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACI,gCAAgC,CAAC,GAAqB,EAAE,KAAa,EAAE,SAAqB,EAAE,UAAmB;QACtH,MAAM,CAAC,GAAG,GAAG,CAAC,6BAA6B,CAAC,KAAK,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;QACzF,IAAI,CAAC,EAAE;YACL,IAAI,SAAS;gBACX,SAAS,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;SAC/C;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACI,iCAAiC,CAAC,GAAqB,EAAE,KAAa,EAAE,SAAqB,EAAE,UAAmB;QACvH,MAAM,CAAC,GAAG,GAAG,CAAC,+BAA+B,CAAC,KAAK,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;QAC3F,IAAI,CAAC,EAAE;YACL,IAAI,SAAS;gBACX,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;SAChD;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACI,+BAA+B,CAAC,IAAqB,EAAE,KAAa;QACzE,IAAI,CAAC,IAAI;YACP,OAAO,SAAS,CAAC;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,+BAA+B,CAAC,KAAK,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;QACxF,IAAI,CAAC,EAAE;YACL,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SACnC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD;;;;OAIG;IACI,0BAA0B,CAAC,EAAgB,EAAE,KAAa,EAAE,CAAS,EAAE,WAAoB,EAAE,WAAoB;QACtH,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,IAAI,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1H,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACnE,CAAC;IAED;;;;;OAKG;IACI,2BAA2B,CAAC,EAAgB,EAAE,KAAa,EAAE,SAAqB,EAAE,WAAoB,EAAE,WAAoB;QACnI,MAAM,iBAAiB,GAAG,EAAE,CAAC,oBAAoB,CAAC;QAClD,IAAI,iBAAiB,EAAE;YACrB,MAAM,CAAC,GAAG,iBAAiB,CAAC,+BAA+B,CAAC,KAAK,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;YACzG,IAAI,CAAC,EAAE;gBACL,IAAI,SAAS;oBACX,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;aAC9D;SACF;QACD,OAAO,SAAS,CAAC;IAEnB,CAAC;IAED;;OAEG;IACI,iBAAiB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QACtD,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,+GAA+G;IACvG,8BAA8B,CAAC,MAAe,EAAE,MAAe,EAAE,MAAe;QACtF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,mBAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,oBAAS,CAAC,GAAG,CAAC,CAAC;QACpF,MAAM,YAAY,GAAG,qBAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACvE,OAAO,YAAY,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IAED,gDAAgD;IACxC,2BAA2B,CAAC,MAAe,EAAE,MAAe,EAAE,MAAe;QACnF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;QACzD,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,0BAAQ,CAAC,MAAM,EAAE,CAAC;QAC7C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,iGAAiG;IACjG;;;;OAIG;IACI,YAAY,CAAC,MAAoC,EAAE,MAAkB,EAAE,OAAoB;QAChG,IAAI,MAAM,YAAY,mCAAgB;YACpC,MAAM,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QACpC,4DAA4D;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAC7C,IAAI,MAAe,EAAE,MAAe,EAAE,MAAe,EAAE,MAAe,CAAC;QACvE,IAAI,OAAiB,EAAE,OAAiB,EAAE,OAAiB,EAAE,OAAiB,CAAC;QAC/E,IAAI,UAAU,EAAE;YACd,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7C,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACnB,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACnB,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACnB,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;aACpB;iBAAM;gBACL,MAAM,cAAc,GAAG,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5F,IAAI,cAAc,KAAK,SAAS,EAAE;oBAChC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,yBAAO,CAAC,UAAU,EAAE,CAAC;iBAC1D;qBAAM;oBACL,MAAM,GAAG,yBAAO,CAAC,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvE,MAAM,GAAG,yBAAO,CAAC,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvE,MAAM,GAAG,yBAAO,CAAC,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvE,MAAM,GAAG,yBAAO,CAAC,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACxE;aACF;SACF;QACD,IAAI,WAAW,EAAE;YACf,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/C,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACrB,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACrB,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACrB,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;aACtB;iBAAM;gBACL,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5E,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5E,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5E,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7E;SACF;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;YACnC,oEAAoE;YACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAE/C,0EAA0E;YAC1E,IAAI,QAAQ,CAAC,SAAS,EAAE,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE;gBAChD,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,MAAO,EAAE,MAAO,EAAE,MAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAQ,EAAE,OAAQ,EAAE,OAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACzK,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,MAAO,EAAE,MAAO,EAAE,MAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAQ,EAAE,OAAQ,EAAE,OAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aAC1K;iBAAM;gBACL,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,MAAO,EAAE,MAAO,EAAE,MAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAQ,EAAE,OAAQ,EAAE,OAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACzK,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,MAAO,EAAE,MAAO,EAAE,MAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAQ,EAAE,OAAQ,EAAE,OAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aAC1K;YACD,OAAO;SACR;QAED,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QAE3B,uBAAuB;QACvB,IAAI,UAAU,EAAE;YACd,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAO,CAAC,CAAC;YACxC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAO,CAAC,CAAC;YACxC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAO,CAAC,CAAC;YACxC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAO,CAAC,CAAC;YACxC,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SACzD;QAED,wBAAwB;QACxB,IAAI,WAAW,EAAE;YACf,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAQ,CAAC,CAAC;YAC1C,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAQ,CAAC,CAAC;YAC1C,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAQ,CAAC,CAAC;YAC1C,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAQ,CAAC,CAAC;YAC1C,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SAC1D;QAED,0DAA0D;QAC1D,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;OAKG;IACK,0BAA0B,CAAC,OAAe,EAAE,OAAe,EAAE,OAAe,EAAE,OAAe,EAAE,YAAqB,IAAI;QAC9H,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SACvC;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SACvC;QACD,IAAI,SAAS;YACX,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;IACpC,CAAC;IAED,kFAAkF;IAC1E,0BAA0B,CAAC,OAAe,EAAE,OAAe,EAAE,OAAe,EAAE,OAAe;QACnG,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SACvC;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SACvC;IACH,CAAC;IAED,oFAAoF;IAC5E,2BAA2B,CAAC,OAAe,EAAE,OAAe,EAAE,OAAe,EAAE,OAAe;QACpG,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;SACxC;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;SACxC;IACH,CAAC;IAED,sGAAsG;IACtG;;;OAGG;IACI,gBAAgB,CAAC,MAAoC,EAAE,MAAkB,EAAE,OAAoB;QACpG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YACnB,OAAO;QACT,IAAI,IAAY,CAAC;QACjB,IAAI,IAAY,CAAC;QACjB,IAAI,IAAY,CAAC;QACjB,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC3B,IAAI,MAAM,YAAY,mCAAgB,EAAE;YACtC,MAAM,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAE,CAAC;YAClD,MAAM,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAE,CAAC;YAClD,MAAM,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAE,CAAC;SACnD;aAAM;YACL,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;SACpB;QAED,uBAAuB;QACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;YAC5B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,oBAAoB;gBACtD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1C,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1C,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3C;iBAAM,EAAG,iBAAiB;gBACzB,MAAM,cAAc,GAAG,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBACnF,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,yBAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxH,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,yBAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxH,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,yBAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;aACzH;YACD,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SACvD;QAED,wBAAwB;QACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;YAC7B,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,qBAAqB;gBACtE,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7C;iBAAM,EAAG,kBAAkB;gBAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBACxE,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;aACzC;YACD,IAAI,CAAC,+BAA+B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SACxD;QAED,0DAA0D;QAC1D,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED;;;OAGG;IACK,8BAA8B,CAAC,MAAc,EAAE,MAAc,EAAE,MAAc,EAAE,iBAA0B,IAAI;QACnH,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;SACtC;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;SACtC;QACD,IAAI,cAAc;YAChB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;IACpC,CAAC;IAED,gFAAgF;IACxE,8BAA8B,CAAC,MAAc,EAAE,MAAc,EAAE,MAAc;QACnF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;SACtC;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;SACtC;IACH,CAAC;IAED,gFAAgF;IACxE,+BAA+B,CAAC,MAAc,EAAE,MAAc,EAAE,MAAc;QACpF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;SACvC;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;SACvC;IACH,CAAC;IACD,0EAA0E;IAClE,gBAAgB,CAAC,MAAmB;QAC1C,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,MAAM,CAAC,MAAM;YACf,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,MAAM,CAAC,EAAE;YACX,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IACO,mBAAmB,CAAC,QAAqB,EAAE,QAAqB,EAAE,QAAqB,EAAE,QAAqB;QACpH,IAAI,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACxF,sBAAsB;SACvB;aAAM;YACL,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW;gBAC3B,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC3H,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAC1B,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC1G,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC5G,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;SAEjC;IAEH,CAAC;IACD;;;;OAIG;IACI,wCAAwC,CAAC,WAAyB,EAAE,EAAU,EAAE,WAAyB,EAAE,EAAU,EAAE,aAAsB,KAAK;QACvJ,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC;QACxC,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,CAAC;QACxC,MAAM,WAAW,GAAG,WAAW,CAAC,iBAAiB,CAAC;QAClD,MAAM,WAAW,GAAG,WAAW,CAAC,iBAAiB,CAAC;QAClD,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;QACxC,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAExE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,KAAK,MAAM,CAAC,MAAM;YAAE,OAAO;QACzD,QAAQ,CAAC,wDAAwD,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QACzG,QAAQ,CAAC,wDAAwD,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QACzG,IAAI,WAAW;YACb,WAAW,CAAC,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEhC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACrC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAClC,QAAQ,CAAC,wDAAwD,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;YACzG,QAAQ,CAAC,wDAAwD,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;YACzG,WAAW,CAAC,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC5D,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAChC,uBAAuB;YACvB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjE,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACpC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;SACrC;QACD,IAAI,UAAU;YACZ,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACvE,CAAC;IAED;;;;OAIG;IACI,sCAAsC,CAAC,WAAyB,EAAE,WAAyB;QAChG,MAAM,MAAM,GAAG,WAAW,CAAC,YAAa,CAAC;QACzC,MAAM,MAAM,GAAG,WAAW,CAAC,YAAa,CAAC;QACzC,IAAI,OAAO,GAAqC,WAAW,CAAC,aAAa,CAAC;QAC1E,IAAI,OAAO,GAAqC,WAAW,CAAC,aAAa,CAAC;QAC1E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;YAC9B,OAAO,GAAG,SAAS,CAAC;YACpB,OAAO,GAAG,SAAS,CAAC;SACrB;QACD,IAAI,MAAM,GAAqC,WAAW,CAAC,YAAY,CAAC;QACxE,IAAI,MAAM,GAAqC,WAAW,CAAC,YAAY,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;YAC7B,MAAM,GAAG,SAAS,CAAC;YACnB,MAAM,GAAG,SAAS,CAAC;SACpB;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;gBAClI,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxJ,IAAI,OAAO,IAAI,OAAO;oBACpB,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/J,IAAI,MAAM,IAAI,MAAM;oBAClB,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1J,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;aACjC;SACF;IACH,CAAC;IAED;;;;OAIG;IACI,gCAAgC,CAAC,MAAgB,EAAE,UAAqB,EAAE,UAAqB,EAAE,aAAsB,KAAK;QACjI,IAAI,MAAM,YAAY,2BAAY,EAAE;YAClC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;YAChC,IAAI,OAAO,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,UAAU,CAAE,CAAC;YACtE,IAAI,OAAO,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,UAAU,CAAE,CAAC;YACtE,MAAM,QAAQ,GAAG,OAAO,CAAC;YACzB,MAAM,QAAQ,GAAG,OAAO,CAAC;YACzB,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;gBAClC,OAAO,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,UAAU,CAAE,CAAC;gBAClE,OAAO,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,EAAE,UAAU,CAAE,CAAC;gBAClE,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBACpE,OAAO,GAAG,OAAO,CAAC;gBAClB,OAAO,GAAG,OAAO,CAAC;aACnB;YACD,IAAI,UAAU;gBACZ,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;SACzE;aAAM;YACL,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YACjC,mEAAmE;YACnE,IAAI,QAAQ;gBACV,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;oBACxB,IAAI,CAAC,gCAAgC,CAAC,CAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;iBAC9E;SACJ;IACH,CAAC;IAEO,uBAAuB,CAAC,KAAe,EAAE,EAAU,EAAE,KAAe,EAAE,EAAU;QACtF,IAAI,KAAK,YAAY,2BAAY,IAAI,KAAK,YAAY,2BAAY,EAAE;YAClE,IAAI,CAAC,wCAAwC,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;SAC5E;aAAM,IAAI,KAAK,YAAY,2BAAY,IAAI,KAAK,YAAY,2BAAY,EAAE;YACzE,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;gBACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC9C,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;iBAC5E;aACF;SACF;aAAM,IAAI,KAAK,YAAY,4BAAU,IAAI,KAAK,YAAY,4BAAU,EAAE;YACrE,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;gBACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACtC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBACtB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBACtB,IAAI,GAAG,YAAY,2BAAY,IAAI,GAAG,YAAY,2BAAY,EAAE;wBAC9D,IAAI,CAAC,wCAAwC,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;qBACjE;iBACF;aACF;SACF;IACH,CAAC;IACD;;OAEG;IACI,OAAO,CAAC,IAAU;QACvB,mDAAmD;QACnD,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,QAAQ;YACf,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACxE,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjF,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjF,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,cAAc,GAAG,mCAAgB,CAAC,uCAAuC,CAAC,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;YACpI,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;SAC3E;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9C,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,qBAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,qBAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnH,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,mBAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE;gBACtD,IAAI,CAAC,oCAAoC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAE,uBAAuB;gBACtF,IAAI,CAAC,OAAO,EAAE,CAAC;aAChB;YACD,IAAI,CAAC,mBAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE;gBACtD,IAAI,CAAC,oCAAoC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,+BAA+B;gBAC9F,IAAI,CAAC,OAAO,EAAE,CAAC;aAChB;SACF;IACH,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,OAAkB,EAAE,cAAuB,EAAE,gBAAyB;QACxF,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,mBAAQ,CAAC,KAAK,CAAC,mBAAQ,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAG,mBAAQ,CAAC,KAAK,CACzB,mBAAQ,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,EACvE,CAAC,EAAE,EAAE,CAAC,CAAC;QAET,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,qBAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,IAAI,OAAO,CAAC,MAAM,IAAI,aAAa,GAAG,GAAG,EAAE;YACzC,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,EAAG,CAAC;YACpD,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE,GAAG,WAAW,GAAG,WAAW,CAAC;YACrC,MAAM,EAAE,GAAG,WAAW,GAAG,WAAW,CAAC;YACrC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC;YACxB,MAAM,WAAW,GAAG,qBAAS,CAAC,eAAe,CAC3C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EACX,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EACX,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACf,MAAM,WAAW,GAAG,WAAW,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;YACxE,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;YAC1C,IAAI,WAAW,EAAE;gBACf,MAAM,GAAG,GAAG,2BAAY,CAAC,wBAAwB,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC1F,GAAG,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;gBAC3C,IAAI,CAAC,oCAAoC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACvD;YACD,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC;YACrD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAClC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAElC,MAAM,WAAW,GAAG,qBAAS,CAAC,eAAe,CAC3C,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EACxB,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EACvB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAEf,MAAM,WAAW,GAAG,WAAW,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;YACxE,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;YAC1C,IAAI,WAAW,EAAE;gBACf,MAAM,GAAG,GAAG,2BAAY,CAAC,wBAAwB,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC1F,GAAG,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;gBAC3C,IAAI,CAAC,oCAAoC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACvD;SAEF;IACH,CAAC;IAED;;;;;;;OAOG;IACI,gCAAgC,CAAC,OAAiB,EAAE,MAAgB;QACzE,IAAI,OAAO,YAAY,2BAAY,EAAE;YACnC,IAAI,MAAM,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,MAAM,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAE,CAAC;gBACrC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACrC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACtC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACtC,IAAI,CAAC,GAAG,CAAC,EAAE;oBACT,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;iBACrE;gBACD,OAAO,GAAG,OAAO,CAAC;gBAClB,OAAO,GAAG,OAAO,CAAC;aACnB;SACF;aAAM,IAAI,OAAO,YAAY,4BAAU,EAAE;YACxC,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACjC,IAAI,CAAC,gCAAgC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;aACnD;SACF;IACH,CAAC;IACD;;OAEG;IACI,kBAAkB,CAAC,OAAwB;QAChD,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,qCAAkB,CAAC,4BAA4B,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzF,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE1C,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QACpC,MAAM,mBAAmB,GAAG,wCAAqB,CAAC,uBAAuB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC7F,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW;YAC3B,wCAAqB,CAAC,mCAAmC,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAC5F,MAAM,WAAW,GAAG,mBAAmB,CAAC,SAAS,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,OAAO,GAAG,6BAAa,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACnG,OAAO,GAAG,6BAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,UAAU,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;YAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;YACvE,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;SACjF;QACD,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,MAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAChD,UAAU,CAAC,WAAW,EAAE,CAAC;YACzB,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC7C,4CAA4C;YAC5C,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC,CAAC;SACjF;IACH,CAAC;IACD;;OAEG;IACI,qBAAqB,CAAC,MAAiB;QAC5C,MAAM,OAAO,GAAG,2BAAY,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,OAAO;YACT,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACI,kCAAkC,CAAC,IAA8B;QACtE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,IAAI,YAAY,+BAAc,EAAE;YAClC,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;SAC5C;aAAM,IAAI,IAAI,YAAY,iCAAe,EAAE;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/B,IAAI,QAAQ;gBACV,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;oBAC5B,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC,CAAC;iBAChD;SACJ;IACH,CAAC;IAEO,oCAAoC,CAAC,OAAiB,EAAE,OAAiB,EAAE,QAAgB;QACjG,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE,MAAM,EAAE,EAAE;YAChD,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;YACpC,MAAM,OAAO,GAAG,yDAA2B,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,OAAO,CAAa,CAAC;YAChH,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC3B;QACD,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE,MAAM,EAAE,EAAE;YAChD,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;SACpH;IACH,CAAC;IACO,yBAAyB,CAAC,EAAgB,EAAE,MAAc,EAAE,SAAqB;QAEvF,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;QACzB;YACE,MAAM,YAAY,GAAG,EAAE,CAAC,uBAAuB,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;YACjE,YAAY,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,EAAE;gBACT,IAAI,MAAM,GAAG,MAAM,CAAC;gBACpB,IAAI,MAAM,CAAC;gBACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC9B,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;oBACnE,YAAY,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC;oBAC3B,MAAM,GAAG,MAAM,CAAC;iBACjB;gBACD,qDAAqD;gBACrD,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBACvE,YAAY,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC;aAC5B;SACF;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC,oBAAoB,KAAK,SAAS,EAAE;YACtE,MAAM,aAAa,GAAG,EAAE,CAAC,wBAAwB,EAAE,CAAC;YACpD,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;YACxE,aAAa,CAAC,IAAI,CAAC,YAAa,CAAC,CAAC;YAClC,IAAI,YAAY,GAAG,YAAY,CAAC;YAChC,IAAI,YAAY,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,EAAE;gBACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC9B,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;oBAChF,aAAa,CAAC,IAAI,CAAC,YAAa,CAAC,CAAC;oBAClC,YAAY,GAAG,YAAY,CAAC;iBAC7B;gBACD,qDAAqD;gBACrD,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;gBAClG,aAAa,CAAC,IAAI,CAAC,YAAa,CAAC,CAAC;aACnC;SACF;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,cAAc,KAAK,SAAS,EAAE;YAC/D,MAAM,SAAS,GAAG,EAAE,CAAC,oBAAoB,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAChE,SAAS,CAAC,IAAI,CAAC,QAAS,CAAC,CAAC;YAC1B,IAAI,QAAQ,GAAG,QAAQ,CAAC;YACxB,IAAI,QAAQ,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,EAAE;gBACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC9B,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;oBACpE,SAAS,CAAC,IAAI,CAAC,QAAS,CAAC,CAAC;oBAC1B,QAAQ,GAAG,QAAQ,CAAC;iBACrB;gBACD,qDAAqD;gBACrD,QAAQ,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAClF,SAAS,CAAC,IAAI,CAAC,QAAS,CAAC,CAAC;aAC3B;SACF;IAEH,CAAC;IAEO,2BAA2B,CAAC,OAAiB,EAAE,UAAqB,EAAE,EAAU,EAAE,UAAqB,EAAE,EAAU;QACzH,IAAI,OAAO,YAAY,2BAAY,EAAE;YACnC,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAiB,CAAC;YACrE,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAiB,CAAC;YACrE,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,sCAAsC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SAC/D;aAAM,IAAI,OAAO,YAAY,2BAAY,EAAE;YAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAG,uDAAuD;gBAC1G,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;aACvF;SACF;aAAM,IAAI,OAAO,YAAY,4BAAU,EAAE;YACxC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,uDAAuD;gBAC/F,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,GAAG,YAAY,2BAAY,EAAE;oBAC/B,IAAI,CAAC,2BAA2B,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;iBACvE;aACF;SACF;IACH,CAAC;IACD;;;;;OAKG;IACI,cAAc,CAAC,OAAoB;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,qCAAkB,CAAC,4BAA4B,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzF,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC/C,MAAM,cAAc,GAAG,qBAAS,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAa,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,oCAAoC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEtE,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,eAAe,EAAE;YAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC9C,QAAQ,CAAC,WAAW,EAAE,CAAC;YAEvB,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC3C,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;SAClD;IACH,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,OAAmB;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC5C,IAAI,OAA6B,CAAC;QAClC,IAAI,OAAiB,CAAC;QACtB,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,uDAAuD;YACjG,WAAW,CAAC,IAAI,CAAC,qCAAkB,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;SACtG;QACD,IAAI,qCAAkB,CAAC,+BAA+B,CAAC,WAAW,CAAC,EAAE;YACnE,qCAAkB,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;YAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;gBACtC,IAAI,CAAC,OAAO;oBACV,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC9C,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,OAAO,EAAE;oBAC/B,MAAM,aAAa,GAAG,eAAO,CAAC,UAAU,EAAE,CAAC;oBAC3C,IAAI,qCAAkB,CAAC,iCAAiC,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC;2BACpF,CAAC,aAAa,CAAC,MAAM,EAAE;wBAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;wBACzE,IAAI,CAAC,oCAAoC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;qBACvE;iBACF;gBACD,OAAO,GAAG,OAAO,CAAC;aACnB;SACF;QAED,IAAI,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE;YACxD,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAE1B,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC9C,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5C,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;SAClE;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD;;OAEG;IACI,SAAS,CAAC,MAAc,EAAE,WAAoB;QACnD,IAAI,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QAC3G,IAAI,mBAAQ,CAAC,KAAK,CAAC,cAAc,CAAC;YAChC,cAAc,IAAI,CAAC,CAAC;QACtB,MAAM,YAAY,GAAG,mBAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,CAAC;QAE3I,MAAM,WAAW,GAAG,MAAM,CAAC,sBAAsB,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtF,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,mBAAQ,CAAC,qBAAqB,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE;YAC/E,IAAI,CAAC,oCAAoC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAE,uBAAuB;YACtF,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,wBAAwB,EAAE,CAAC;QAEhD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,qBAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,qBAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrH,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,MAAM,WAAW,GAAG,MAAM,CAAC,sBAAsB,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtF,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,mBAAQ,CAAC,qBAAqB,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE;YAC/E,IAAI,CAAC,oCAAoC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAE,8BAA8B;YAC9F,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;IACD;;OAEG;IACI,MAAM,CAAC,GAAQ;QACpB,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,mBAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,mBAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,OAAO,GAAG,mBAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAExE;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1D,uIAAuI;QACvI,MAAM,WAAW,GAAG,qBAAS,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,qBAAS,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,6BAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC/H,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,6BAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC/H,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,6BAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC/H,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,6BAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC/H,sCAAsC;QACtC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,GAAG,CAAC,MAAM,EAAE;YACd,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC9B,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,6BAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YAC/H,IAAI,CAAC,OAAO,EAAE,CAAC;YAEf,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC9B,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,6BAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YAC/H,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;IAED;;;;;;OAMG;IACI,UAAU,CAAC,MAAiB,EAAE,cAAuB;QAC1D,oDAAoD;QACpD,IAAI,cAAc,KAAK,SAAS;YAC9B,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;QACjC,OAAO,cAAc,GAAG,CAAC,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9E,cAAc,EAAE,CAAC;QACnB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;gBACvC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACrC;SACF;aAAM;YACL,KAAK,IAAI,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG;gBACtC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACrC;SACF;QACD,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;IAClC,CAAC;IAED;;;;;;OAMG;IACI,0BAA0B,CAAC,MAAwB;QACxD,oDAAoD;QACpD,IAAI,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;QACnC,OAAO,cAAc,GAAG,CAAC,IAAI,mBAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAE,CAAC;YAC5G,cAAc,EAAE,CAAC;QACnB,4BAA4B;QAC5B,OAAO,cAAc,GAAG,CAAC,IAAI,mBAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,kBAAkB,CAAC,cAAc,GAAG,CAAC,EAAE,cAAc,GAAG,CAAC,CAAE,CAAC;YAC7H,cAAc,EAAE,CAAC;QACnB,sFAAsF;QACtF,uGAAuG;QACvG,6CAA6C;QAC7C,IAAI,cAAc,KAAK,CAAC,EAAE;YACxB,MAAM,KAAK,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;YAC3D,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAE,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAE,CAAC;YACjH,IAAI,CAAC,GAAG,mBAAQ,CAAC,mBAAmB,GAAG,CAAC;gBACtC,cAAc,GAAG,CAAC,CAAC;SACtB;QACD,IAAI,cAAc,GAAG,CAAC,EAAE;YACtB,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;oBACvC,KAAK,GAAG,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,CAAC,CAAE,CAAC;oBAC1D,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBACrC;aACF;iBAAM;gBACL,KAAK,IAAI,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG;oBACtC,KAAK,GAAG,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,CAAC,CAAE,CAAC;oBAC1D,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBACrC;aACF;YACD,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;SACjC;IACH,CAAC;IACD;;;;;;OAMG;IACI,0BAA0B,CAAC,MAAwB,EAAE,OAAqC,EAAE,MAAmC,EAAE,MAA4B;QAClK,oDAAoD;QACpD,IAAI,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;QACnC,OAAO,cAAc,GAAG,CAAC,IAAI,mBAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAE,CAAC;YAC5G,cAAc,EAAE,CAAC;QACnB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,cAAc;YAC5C,OAAO,GAAG,SAAS,CAAC;QACtB,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,cAAc;YAC1C,MAAM,GAAG,SAAS,CAAC;QACrB,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,cAAc;YAC1C,MAAM,GAAG,SAAS,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;gBACvC,KAAK,GAAG,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,CAAC,CAAE,CAAC;gBAC1D,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAEpC,IAAI,OAAO,EAAE;oBACX,KAAK,GAAG,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,CAAC,CAAE,CAAC;oBAC5D,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;iBACtC;gBAED,IAAI,MAAM,EAAE;oBACV,KAAK,GAAG,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,CAAC,CAAE,CAAC;oBACzD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBACrC;gBACD,IAAI,MAAM,EAAE;oBACV,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3C,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBACrC;aACF;SACF;aAAM;YACL,KAAK,IAAI,CAAC,GAAG,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG;gBACtC,KAAK,GAAG,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,CAAC,CAAE,CAAC;gBAC1D,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAEpC,IAAI,OAAO,EAAE;oBACX,KAAK,GAAG,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,CAAC,CAAE,CAAC;oBAC5D,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;iBACtC;gBAED,IAAI,MAAM,EAAE;oBACV,KAAK,GAAG,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,CAAC,CAAE,CAAC;oBACzD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBACrC;gBACD,IAAI,MAAM,EAAE;oBACV,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3C,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBACrC;aACF;SACF;QACD,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,mBAAmB,CAAC,OAAwB;QACjD,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/F,CAAC;IAED,2DAA2D;IACpD,kBAAkB,CAAC,MAAuB,EAAE,QAAiB,EAAE,SAAqB;QACzF,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACI,OAAO;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;IACzC,CAAC;IAED,uCAAuC;IACvB,UAAU,CAAC,CAAO,IAAS,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,4CAA4C;IAC5B,eAAe,CAAC,CAAY,IAAS,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,yCAAyC;IACzB,YAAY,CAAC,CAAS,IAAS,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,sCAAsC;IACtB,SAAS,CAAC,CAAM,IAAS,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,8CAA8C;IAC9B,iBAAiB,CAAC,CAAc,IAAS,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,kDAAkD;IAClC,qBAAqB,CAAC,CAAkB,IAAS,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,6CAA6C;IAC7B,gBAAgB,CAAC,CAAa,IAAS,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,iHAAiH;IAC1G,gBAAgB,CAAC,CAAgB,IAAI,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEhF;;;;;;;OAOG;IACI,QAAQ,CAAC,KAAoB,EAAE,UAAmB,EAAE,qBAAgD,gBAAQ,CAAC,uBAAuB,EACzI,wBAA+D,gBAAQ,CAAC,oBAAoB;QAC5F,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC9C,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,WAAW;YACb,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAG,+EAA+E;QAEvI,KAAK,CAAC,iBAAiB,CACrB,CAAC,MAAqB,EAAE,IAAc,EAAE,EAAE;YACxC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,oBAAoB,EAAE,GAAG,CAAC,EAAE;gBAC/D,IAAI,IAAI,GAAG,IAAI,CAAC;gBAChB,GAAG;oBACD,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;oBACvD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,qBAAqB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC9G,IAAI,UAAU,EAAE;wBACd,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;wBAC9C,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;qBACrC;oBACD,IAAI,WAAW,EAAE;wBACf,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;qBAC5C;oBACD,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;iBAC3B,QAAQ,IAAI,KAAK,IAAI,EAAE;gBACxB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;aACjC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC;IACD;;;;;;;;OAQG;IACI,aAAa,CAAC,MAAqB,EAAE,KAAiB;QAC3D,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI,IAAI,GAAG,IAAI,CAAC;YAChB,GAAG;gBACD,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACpC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;aAC3B,QAAQ,IAAI,KAAK,IAAI,EAAE;YACxB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;SACjC;IACH,CAAC;IACD;;OAEG;IACI,MAAM,CAAC,eAAe,CAAC,KAAoB,EAAE,OAAuB,EAAE,qBAAgD,gBAAQ,CAAC,uBAAuB;QAC3J,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;QACxE,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC,aAAa,EAAE,CAAC;IACjC,CAAC;IACD;;OAEG;IACI,MAAM,CAAC,oBAAoB,CAAC,KAAoB,EAAE,KAAiB;QACxE,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;QACzC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpC,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC,aAAa,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,6BAA6B,CAAC,MAAiB,EAAE,YAAwB;QACrF,IAAI,CAAC,YAAY;YACf,YAAY,GAAG,2BAAY,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,YAAY,EAAE;YAChB,MAAM,WAAW,GAAG,YAAY,CAAC,2BAA2B,CAAC,MAAM,CAAE,CAAC;YACtE,MAAM,MAAM,GAAG,uBAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,MAAM,GAAG,GAAG;gBACd,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,4BAAY,CAAC,qCAAqC,CAAC,WAAW,CAAC,CAAC;YAC9E,IAAI,KAAK,EAAE;gBACT,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC7C,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBAC3C,OAAO,QAAQ,CAAC;aACjB;SACF;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;;;;OASG;IACI,mBAAmB,CAAC,UAAuB,EAAE,UAAwB,EAAE,WAA0B,EAAE,UAAmB,KAAK;QAChI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACtD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEzD,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;gBAC5B,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;iBACnD,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;SACrD;QAED,IAAI,OAAO;YACT,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IACD;;;;;;;;;;OAUG;IACI,aAAa,CAAC,OAAkB,EAAE,IAAY,EAAE,IAAY,EAAE,IAAgB,EAAE,IAAgB;QACrG,IAAI,SAAS,GAAG,IAAI,2CAAoB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,SAAS,GAAG,IAAI,2CAAoB,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,WAA6C,CAAC;QAClD,IAAI,WAA6C,CAAC;QAClD,IAAI,YAA8C,CAAC;QACnD,IAAI,YAA8C,CAAC;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAC7C,IAAI,WAAW,EAAE;YACf,YAAY,GAAG,IAAI,2CAAoB,CAAC,IAAI,CAAC,CAAC;YAC9C,YAAY,GAAG,IAAI,2CAAoB,CAAC,IAAI,CAAC,CAAC;SAC/C;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3C,IAAI,UAAU,EAAE;YACd,WAAW,GAAG,IAAI,2CAAoB,CAAC,IAAI,CAAC,CAAC;YAC7C,WAAW,GAAG,IAAI,2CAAoB,CAAC,IAAI,CAAC,CAAC;SAC9C;QAED,IAAI,SAAS,CAAC;QACd,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/B,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC;QACtB,MAAM,KAAK,GAAG,qDAAyB,CAAC,aAAa,EAAE,CAAC;QACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,2BAA2B;YAC3B,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,WAAW;gBACb,YAAa,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,UAAU;gBACZ,WAAY,CAAC,KAAK,EAAE,CAAC;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC9B,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;gBACrB,OAAO,CAAC,4BAA4B,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC1D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtD,IAAI,WAAW,EAAE;oBACf,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAClD,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBAC1B,IAAI,OAAO;wBACT,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC5B,YAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;iBACtD;gBACD,IAAI,UAAU;oBACZ,WAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,yBAAO,CAAC,MAAM,CACtD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAC1C,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAC1C,EAAE,CAAC,CAAC,CAAC,CAAC;aACX;YAED,IAAI,CAAC,GAAG,CAAC,EAAE;gBACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;oBAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;wBACpC,IAAI,CAAC,0BAA0B,CAC7B,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAChE,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;wBAC3E,IAAI,WAAW;4BACb,IAAI,CAAC,2BAA2B,CAC9B,YAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,YAAa,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EACxE,YAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,YAAa,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC9E,IAAI,UAAU;4BACZ,IAAI,CAAC,0BAA0B,CAC7B,WAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,WAAY,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EACtE,WAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,WAAY,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC5E,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;qBAEjC;yBAAM;wBACL,IAAI,CAAC,8BAA8B,CACjC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAChE,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;wBACxC,IAAI,WAAW;4BACb,IAAI,CAAC,+BAA+B,CAClC,YAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,YAAa,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EACxE,YAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;wBACvC,IAAI,UAAU;4BACZ,IAAI,CAAC,8BAA8B,CACjC,WAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,WAAY,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EACtE,WAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;wBACtC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;wBAEhC,IAAI,CAAC,8BAA8B,CACjC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAC7B,SAAS,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EACjC,SAAS,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;wBAC5C,IAAI,WAAW;4BACb,IAAI,CAAC,+BAA+B,CAClC,YAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,EACjC,YAAa,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EACrC,YAAa,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC3C,IAAI,UAAU;4BACZ,IAAI,CAAC,8BAA8B,CACjC,WAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAChC,WAAY,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EACpC,WAAY,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC1C,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;qBACjC;iBACF;aACF;YACD,SAAS,GAAG,SAAS,CAAC;YAAC,SAAS,GAAG,SAAS,CAAC;YAAC,SAAS,GAAG,SAAS,CAAC;YACpE,IAAI,UAAU,EAAE;gBACd,SAAS,GAAG,WAAW,CAAC;gBAAC,WAAW,GAAG,WAAW,CAAC;gBAAC,WAAW,GAAG,SAAS,CAAC;aAC7E;YACD,IAAI,WAAW,EAAE;gBACf,SAAS,GAAG,YAAY,CAAC;gBAAC,YAAY,GAAG,YAAY,CAAC;gBAAC,YAAY,GAAG,SAAS,CAAC;aACjF;SAEF;QACD,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,SAAS,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IACD;;;OAGG;IACI,MAAM,CAAC,4BAA4B,CAAC,MAAiB;QAC1D,MAAM,KAAK,GAAG,4BAAY,CAAC,iCAAiC,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,KAAK;YACP,OAAO,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD;;;;;;;;;OASG;IACI,wCAAwC,CAAC,OAAwD,EAAE,OAAwD;QAChK,MAAM,OAAO,GAAG,6EAAqC,CAAC,aAAa,EAAE,CAAC;QACtE,OAAO,CAAC,aAAa,CACnB,sCAAsC,CAAC,OAAO,CAAC,EAC/C,sCAAsC,CAAC,OAAO,CAAC,EAC/C,CAAC,QAA6B,EAAE,EAAE;YAChC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,yBAAyB,CAAC,UAAgC,EAAE,MAAc,EAAE,iBAAyB,EAAE;QAC7G,MAAM,QAAQ,GAAG,2BAAY,CAAC,yBAAyB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,cAAc,GAAG,CAAC;YACpB,cAAc,GAAG,CAAC,CAAC;QACrB,MAAM,EAAE,GAAG,GAAG,GAAG,cAAc,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;gBAC1G,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBACjB,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACjC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;aACzD;SACF;IACH,CAAC;IACM,eAAe,CAAC,UAA6D,EAAE,MAAc,EAAE,iBAAyB,EAAE;QAC/H,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC7B,IAAI,CAAC,yBAAyB,CAAC,IAAI,yCAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;SAC7F;aAAM,IAAI,UAAU,YAAY,mCAAgB,EAAE;YACjD,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;SACpE;aAAM,IAAI,UAAU,YAAY,2CAAoB,EAAE;YACrD,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;SACpE;aAAM,IAAI,UAAU,YAAY,2BAAY,EAAE;YAC7C,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;SACjF;aAAM,IAAI,UAAU,YAAY,6BAAa,EAAE;YAC9C,MAAM,UAAU,GAAG,2BAAY,CAAC,MAAM,EAAE,CAAC;YACzC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACnC,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;SACjF;IACH,CAAC;;AAxgDH,0CAygDC;AA13CgB,oCAAoB,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;AACxC,oCAAoB,GAAG,0BAAQ,CAAC,MAAM,EAAE,CAAC;AACzC,gCAAgB,GAAG,yBAAO,CAAC,MAAM,EAAE,CAAC;AA03CrD,SAAS,sCAAsC,CAAC,MAAuD;IACrG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,OAAO,IAAI,yCAAmB,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,MAAM,YAAY,2BAAY;QAChC,OAAO,MAAM,CAAC,YAAY,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Polyface\r\n */\r\n\r\nimport { ConstructCurveBetweenCurves } from \"../curve/ConstructCurveBetweenCurves\";\r\nimport { AnyCurve, AnyRegion } from \"../curve/CurveChain\";\r\nimport { CurveChain, CurveCollection } from \"../curve/CurveCollection\";\r\nimport { CurveFactory } from \"../curve/CurveFactory\";\r\nimport { CurvePrimitive } from \"../curve/CurvePrimitive\";\r\nimport { GeometryQuery } from \"../curve/GeometryQuery\";\r\nimport { LineString3d } from \"../curve/LineString3d\";\r\nimport { ParityRegion } from \"../curve/ParityRegion\";\r\nimport { CylindricalRangeQuery } from \"../curve/Query/CylindricalRange\";\r\nimport { StrokeCountSection } from \"../curve/Query/StrokeCountChain\";\r\nimport { StrokeOptions } from \"../curve/StrokeOptions\";\r\nimport { AxisOrder, Geometry } from \"../Geometry\";\r\nimport { BarycentricTriangle } from \"../geometry3d/BarycentricTriangle\";\r\nimport { BilinearPatch } from \"../geometry3d/BilinearPatch\";\r\nimport { FrameBuilder } from \"../geometry3d/FrameBuilder\";\r\nimport { NullGeometryHandler, UVSurface } from \"../geometry3d/GeometryHandler\";\r\nimport { GrowableFloat64Array } from \"../geometry3d/GrowableFloat64Array\";\r\nimport { GrowableXYArray } from \"../geometry3d/GrowableXYArray\";\r\nimport { GrowableXYZArray } from \"../geometry3d/GrowableXYZArray\";\r\nimport { IndexedXYZCollection } from \"../geometry3d/IndexedXYZCollection\";\r\nimport { Matrix3d } from \"../geometry3d/Matrix3d\";\r\nimport { Plane3dByOriginAndVectors } from \"../geometry3d/Plane3dByOriginAndVectors\";\r\nimport { Point2d } from \"../geometry3d/Point2dVector2d\";\r\nimport { Point3dArrayCarrier } from \"../geometry3d/Point3dArrayCarrier\";\r\nimport { Point3d, Vector3d, XYZ } from \"../geometry3d/Point3dVector3d\";\r\nimport { PolygonOps } from \"../geometry3d/PolygonOps\";\r\nimport { Range1d, Range3d } from \"../geometry3d/Range\";\r\nimport { Segment1d } from \"../geometry3d/Segment1d\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { UVSurfaceOps } from \"../geometry3d/UVSurfaceOps\";\r\nimport { Box } from \"../solid/Box\";\r\nimport { Cone } from \"../solid/Cone\";\r\nimport { LinearSweep } from \"../solid/LinearSweep\";\r\nimport { RotationalSweep } from \"../solid/RotationalSweep\";\r\nimport { RuledSweep } from \"../solid/RuledSweep\";\r\nimport { Sphere } from \"../solid/Sphere\";\r\nimport { SweepContour } from \"../solid/SweepContour\";\r\nimport { TorusPipe } from \"../solid/TorusPipe\";\r\nimport { HalfEdge, HalfEdgeGraph, HalfEdgeToBooleanFunction } from \"../topology/Graph\";\r\nimport { Triangulator } from \"../topology/Triangulation\";\r\nimport { BoxTopology } from \"./BoxTopology\";\r\nimport { GreedyTriangulationBetweenLineStrings } from \"./GreedyTriangulationBetweenLineStrings\";\r\nimport { IndexedPolyface, PolyfaceVisitor } from \"./Polyface\";\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention, @typescript-eslint/prefer-for-of */\r\n/**\r\n * A FacetSector\r\n * * initially holds coordinate data for a place where xyz and sectionDerivative are known\r\n * * normal is computed as a deferred step using an edge to adjacent place on ruled surface\r\n * * indices are set up even later.\r\n */\r\nclass FacetSector {\r\n public xyz: Point3d;\r\n public xyzIndex: number;\r\n public normal?: Vector3d;\r\n public normalIndex: number;\r\n public uv?: Point2d;\r\n public uvIndex: number;\r\n public sectionDerivative?: Vector3d;\r\n public constructor(needNormal: boolean = false, needUV: boolean = false, needSectionDerivative: boolean = false) {\r\n this.xyz = Point3d.create();\r\n this.normalIndex = -1;\r\n this.uvIndex = -1;\r\n\r\n this.xyzIndex = -1;\r\n if (needNormal) {\r\n this.normal = Vector3d.create();\r\n }\r\n if (needUV) {\r\n this.uv = Point2d.create();\r\n this.uvIndex = -1;\r\n }\r\n if (needSectionDerivative) {\r\n this.sectionDerivative = Vector3d.create();\r\n }\r\n }\r\n /** copy contents (not pointers) from source\r\n * * ASSUME all fields defined in this are defined int the source (undefined check only needed on this)\r\n */\r\n public copyContentsFrom(other: FacetSector) {\r\n this.xyz.setFromPoint3d(other.xyz);\r\n this.xyzIndex = other.xyzIndex;\r\n if (this.normal)\r\n this.normal.setFromVector3d(other.normal!);\r\n this.normalIndex = other.normalIndex;\r\n if (this.uv)\r\n this.uv.setFrom(other.uv);\r\n this.uvIndex = other.uvIndex;\r\n if (this.sectionDerivative)\r\n this.sectionDerivative.setFrom(other.sectionDerivative);\r\n }\r\n /** access xyz, derivative from given arrays.\r\n * * ASSUME corresponding defined conditions\r\n * * xyz and derivative are set.\r\n * * index fields for updated data are cleared to -1.\r\n */\r\n public loadIndexedPointAndDerivativeCoordinatesFromPackedArrays(i: number, packedXYZ: GrowableXYZArray, packedDerivatives?: GrowableXYZArray, fractions?: GrowableFloat64Array, v?: number) {\r\n packedXYZ.getPoint3dAtCheckedPointIndex(i, this.xyz);\r\n if (fractions && v !== undefined)\r\n this.uv = Point2d.create(fractions.atUncheckedIndex(i), v);\r\n this.xyzIndex = -1;\r\n this.normalIndex = -1;\r\n this.uvIndex = -1;\r\n if (this.sectionDerivative !== undefined && packedDerivatives !== undefined)\r\n packedDerivatives.getVector3dAtCheckedVectorIndex(i, this.sectionDerivative);\r\n }\r\n private static suppressSmallUnitVectorComponents(uvw: XYZ) {\r\n const tol = 1.0e-15;\r\n if (Math.abs(uvw.x) < tol) uvw.x = 0.0;\r\n if (Math.abs(uvw.y) < tol) uvw.y = 0.0;\r\n if (Math.abs(uvw.z) < tol) uvw.z = 0.0;\r\n }\r\n private static _edgeVector: Vector3d = Vector3d.create();\r\n /**\r\n * given two sectors with xyz and sectionDerivative (u derivative)\r\n * use the edge from A to B as v direction in-surface derivative.\r\n * compute cross products (and normalize)\r\n * @param sectorA \"lower\" sector\r\n * @param sectorB \"upper\" sector\r\n *\r\n */\r\n public static computeNormalsAlongRuleLine(sectorA: FacetSector, sectorB: FacetSector) {\r\n // We expect that if sectionDerivative is defined so is normal.\r\n // (If not, the cross product calls will generate normals that are never used .. not good, garbage collector will clean up.)\r\n if (sectorA.sectionDerivative && sectorB.sectionDerivative) {\r\n const vectorAB = FacetSector._edgeVector;\r\n Vector3d.createStartEnd(sectorA.xyz, sectorB.xyz, vectorAB);\r\n sectorA.sectionDerivative.crossProduct(vectorAB, sectorA.normal);\r\n sectorB.sectionDerivative.crossProduct(vectorAB, sectorB.normal);\r\n sectorA.normal!.normalizeInPlace();\r\n sectorB.normal!.normalizeInPlace();\r\n FacetSector.suppressSmallUnitVectorComponents(sectorA.normal!);\r\n FacetSector.suppressSmallUnitVectorComponents(sectorB.normal!);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n *\r\n * * Simple construction for strongly typed GeometryQuery objects:\r\n *\r\n * * Create a builder with `builder = PolyfaceBuilder.create()`\r\n * * Add GeometryQuery objects:\r\n *\r\n * * `builder.addGeometryQuery(g: GeometryQuery)`\r\n * * `builder.addCone(cone: Cone)`\r\n * * `builder.addTorusPipe(surface: TorusPipe)`\r\n * * `builder.addLinearSweepLineStrings(surface: LinearSweep)`\r\n * * `builder.addRotationalSweep(surface: RotationalSweep)`\r\n * * `builder.addLinearSweep(surface: LinearSweep)`\r\n * * `builder.addRuledSweep(surface: RuledSweep)`\r\n * * `builder.addSphere(sphere: Sphere)`\r\n * * `builder.addBox(box: Box)`\r\n * * `builder.addIndexedPolyface(polyface)`\r\n * * Extract with `builder.claimPolyface (true)`\r\n *\r\n * * Simple construction for ephemeral constructive data:\r\n *\r\n * * Create a builder with `builder = PolyfaceBuilder.create()`\r\n * * Add from fragmentary data:\r\n * * `builder.addBetweenLineStrings (linestringA, linestringB, addClosure)`\r\n * * `builder.addBetweenTransformedLineStrings (curves, transformA, transformB, addClosure)`\r\n * * `builder.addBetweenStroked (curveA, curveB)`\r\n * * `builder.addLinearSweepLineStrings (contour, vector)`\r\n * * `builder.addPolygon (points, numPointsToUse)`\r\n * * `builder.addTransformedUnitBox (transform)`\r\n * * `builder.addTriangleFan (conePoint, linestring, toggleOrientation)`\r\n * * `builder.addTrianglesInUncheckedPolygon (linestring, toggle)`\r\n * * `builder.addUVGridBody(surface,numU, numV, createFanInCaps)`\r\n * * `builder.addGraph(Graph, acceptFaceFunction)`\r\n * * Extract with `builder.claimPolyface(true)`\r\n *\r\n * * Low-level detail construction -- direct use of indices\r\n * * Create a builder with `builder = PolyfaceBuilder.create()`\r\n * * Add GeometryQuery objects\r\n * * `builder.findOrAddPoint(point)`\r\n * * `builder.findOrAddPointInLineString (linestring, index)`\r\n * * `builder.findOrAddTransformedPointInLineString(linestring, index, transform)`\r\n * * `builder.findOrAddPointXYZ(x,y,z)`\r\n * * `builder.addTriangle (point0, point1, point2)`\r\n * * `builder.addQuad (point0, point1, point2, point3)`\r\n * * `builder.addOneBasedPointIndex (index)`\r\n * @public\r\n */\r\nexport class PolyfaceBuilder extends NullGeometryHandler {\r\n private _polyface: IndexedPolyface;\r\n private _options: StrokeOptions;\r\n /** return (pointer to) the `StrokeOptions` in use by the builder. */\r\n public get options(): StrokeOptions { return this._options; }\r\n // State data that affects the current construction.\r\n private _reversed: boolean;\r\n /** Ask if this builder is reversing vertex order as loops are received. */\r\n public get reversedFlag(): boolean { return this._reversed; }\r\n /** extract the polyface. */\r\n public claimPolyface(compress: boolean = true): IndexedPolyface {\r\n if (compress)\r\n this._polyface.data.compress();\r\n return this._polyface;\r\n }\r\n /** Toggle (reverse) the flag controlling orientation flips for newly added facets. */\r\n public toggleReversedFacetFlag() { this._reversed = !this._reversed; }\r\n\r\n private constructor(options?: StrokeOptions) {\r\n super();\r\n this._options = options ? options : StrokeOptions.createForFacets();\r\n this._polyface = IndexedPolyface.create(this._options.needNormals,\r\n this._options.needParams, this._options.needColors, this._options.needTwoSided);\r\n this._reversed = false;\r\n }\r\n /**\r\n * Create a builder with given StrokeOptions\r\n * @param options StrokeOptions (captured)\r\n */\r\n public static create(options?: StrokeOptions): PolyfaceBuilder {\r\n return new PolyfaceBuilder(options);\r\n }\r\n /** add facets for a transformed unit box. */\r\n public addTransformedUnitBox(transform: Transform) {\r\n this.addTransformedRangeMesh(transform, Range3d.createXYZXYZ(0, 0, 0, 1, 1, 1));\r\n }\r\n\r\n /** add facets for a transformed unit box.\r\n * * for each face in the order of BoxTopology.cornerIndexCCW, faceSelector[i]===false skips that facet.\r\n */\r\n public addTransformedRangeMesh(transform: Transform, range: Range3d, faceSelector?: boolean[]) {\r\n const pointIndex0 = this._polyface.data.pointCount;\r\n // these will have sequential indices starting at pointIndex0 . . .\r\n const points = range.corners();\r\n for (const p of points)\r\n this._polyface.addPoint(transform.multiplyPoint3d(p));\r\n let faceCounter = 0;\r\n for (const facet of BoxTopology.cornerIndexCCW) {\r\n if (!faceSelector || (faceCounter < faceSelector.length && faceSelector[faceCounter])) {\r\n for (const pointIndex of facet)\r\n this._polyface.addPointIndex(pointIndex0 + pointIndex);\r\n this._polyface.terminateFacet();\r\n }\r\n faceCounter++;\r\n }\r\n }\r\n /** Add triangles from points[0] to each far edge.\r\n * @param ls linestring with point coordinates\r\n * @param toggle if true, wrap the triangle creation in toggleReversedFacetFlag.\r\n */\r\n public addTriangleFan(conePoint: Point3d, ls: LineString3d, toggle: boolean): void {\r\n const n = ls.numPoints();\r\n if (n > 2) {\r\n if (toggle)\r\n this.toggleReversedFacetFlag();\r\n const index0 = this.findOrAddPoint(conePoint);\r\n let index1 = this.findOrAddPointInLineString(ls, 0)!;\r\n let index2 = 0;\r\n for (let i = 1; i < n; i++) {\r\n index2 = this.findOrAddPointInLineString(ls, i)!;\r\n this.addIndexedTrianglePointIndexes(index0, index1, index2);\r\n index1 = index2;\r\n }\r\n if (toggle)\r\n this.toggleReversedFacetFlag();\r\n }\r\n }\r\n\r\n /** Add triangles from points[0] to each far edge\r\n * * Assume the polygon is convex.\r\n * * i.e. simple triangulation from point0\r\n * * i.e. simple cross products give a good normal.\r\n * @param ls linestring with point coordinates\r\n * @param reverse if true, wrap the triangle creation in toggleReversedFacetFlag.\r\n */\r\n public addTrianglesInUncheckedConvexPolygon(ls: LineString3d, toggle: boolean): void {\r\n const n = ls.numPoints();\r\n if (n > 2) {\r\n if (toggle)\r\n this.toggleReversedFacetFlag();\r\n let normal;\r\n let normalIndex;\r\n if (this._options.needNormals) {\r\n normal = ls.quickUnitNormal(PolyfaceBuilder._workVectorFindOrAdd)!;\r\n if (toggle)\r\n normal.scaleInPlace(-1.0);\r\n normalIndex = this._polyface.addNormal(normal);\r\n }\r\n const needParams = this._options.needParams;\r\n\r\n const packedUV = needParams ? ls.packedUVParams : undefined;\r\n let paramIndex0 = -1;\r\n let paramIndex1 = -1;\r\n let paramIndex2 = -1;\r\n if (packedUV) {\r\n paramIndex0 = this.findOrAddParamInGrowableXYArray(packedUV, 0)!;\r\n paramIndex1 = this.findOrAddParamInGrowableXYArray(packedUV, 1)!;\r\n }\r\n const pointIndex0 = this.findOrAddPointInLineString(ls, 0)!;\r\n let pointIndex1 = this.findOrAddPointInLineString(ls, 1)!;\r\n let pointIndex2 = 0;\r\n let numEdge = n;\r\n if (ls.isPhysicallyClosed)\r\n numEdge--;\r\n for (let i = 2; i < numEdge; i++, pointIndex1 = pointIndex2, paramIndex1 = paramIndex2) {\r\n pointIndex2 = this.findOrAddPointInLineString(ls, i)!;\r\n this.addIndexedTrianglePointIndexes(pointIndex0, pointIndex1, pointIndex2, false);\r\n if (normalIndex !== undefined)\r\n this.addIndexedTriangleNormalIndexes(normalIndex, normalIndex, normalIndex);\r\n if (packedUV) {\r\n paramIndex2 = this.findOrAddParamInGrowableXYArray(packedUV, i)!;\r\n this.addIndexedTriangleParamIndexes(paramIndex0, paramIndex1, paramIndex2);\r\n }\r\n this._polyface.terminateFacet();\r\n }\r\n if (toggle)\r\n this.toggleReversedFacetFlag();\r\n }\r\n }\r\n\r\n /**\r\n * Announce point coordinates. The implementation is free to either create a new point or (if known) return index of a prior point with the same coordinates.\r\n */\r\n public findOrAddPoint(xyz: Point3d): number {\r\n return this._polyface.addPoint(xyz);\r\n }\r\n\r\n /**\r\n * Announce point coordinates. The implementation is free to either create a new param or (if known) return index of a prior param with the same coordinates.\r\n */\r\n public findOrAddParamXY(x: number, y: number): number {\r\n return this._polyface.addParamUV(x, y);\r\n }\r\n private static _workPointFindOrAddA = Point3d.create();\r\n private static _workVectorFindOrAdd = Vector3d.create();\r\n private static _workUVFindOrAdd = Point2d.create();\r\n /**\r\n * Announce point coordinates. The implementation is free to either create a new point or (if known) return index of a prior point with the same coordinates.\r\n * @returns Returns the point index in the Polyface.\r\n * @param index Index of the point in the linestring.\r\n */\r\n public findOrAddPointInLineString(ls: LineString3d, index: number, transform?: Transform, priorIndex?: number): number | undefined {\r\n const q = ls.pointAt(index, PolyfaceBuilder._workPointFindOrAddA);\r\n if (q) {\r\n if (transform)\r\n transform.multiplyPoint3d(q, q);\r\n return this._polyface.addPoint(q, priorIndex);\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Announce point coordinates. The implementation is free to either create a new point or (if known) return index of a prior point with the same coordinates.\r\n * @returns Returns the point index in the Polyface.\r\n * @param index Index of the point in the linestring.\r\n */\r\n public findOrAddPointInGrowableXYZArray(xyz: GrowableXYZArray, index: number, transform?: Transform, priorIndex?: number): number | undefined {\r\n const q = xyz.getPoint3dAtCheckedPointIndex(index, PolyfaceBuilder._workPointFindOrAddA);\r\n if (q) {\r\n if (transform)\r\n transform.multiplyPoint3d(q, q);\r\n return this._polyface.addPoint(q, priorIndex);\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Announce point coordinates. The implementation is free to either create a new point or (if known) return index of a prior point with the same coordinates.\r\n * @returns Returns the point index in the Polyface.\r\n * @param index Index of the point in the linestring.\r\n */\r\n public findOrAddNormalInGrowableXYZArray(xyz: GrowableXYZArray, index: number, transform?: Transform, priorIndex?: number): number | undefined {\r\n const q = xyz.getVector3dAtCheckedVectorIndex(index, PolyfaceBuilder._workVectorFindOrAdd);\r\n if (q) {\r\n if (transform)\r\n transform.multiplyVector(q, q);\r\n return this._polyface.addNormal(q, priorIndex);\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Announce param coordinates. The implementation is free to either create a new param or (if known) return index of a prior point with the same coordinates.\r\n * @returns Returns the point index in the Polyface.\r\n * @param index Index of the param in the linestring.\r\n */\r\n public findOrAddParamInGrowableXYArray(data: GrowableXYArray, index: number): number | undefined {\r\n if (!data)\r\n return undefined;\r\n const q = data.getPoint2dAtUncheckedPointIndex(index, PolyfaceBuilder._workUVFindOrAdd);\r\n if (q) {\r\n return this._polyface.addParam(q);\r\n }\r\n return undefined;\r\n }\r\n /**\r\n * Announce param coordinates, taking u from ls.fractions and v from parameter. The implementation is free to either create a new param or (if known) return index of a prior point with the same coordinates.\r\n * @returns Returns the point index in the Polyface.\r\n * @param index Index of the point in the linestring.\r\n */\r\n public findOrAddParamInLineString(ls: LineString3d, index: number, v: number, priorIndexA?: number, priorIndexB?: number): number | undefined {\r\n const u = (ls.fractions && index < ls.fractions.length) ? ls.fractions.atUncheckedIndex(index) : index / ls.points.length;\r\n return this._polyface.addParamUV(u, v, priorIndexA, priorIndexB);\r\n }\r\n\r\n /**\r\n * Announce normal coordinates found at index in the surfaceNormal array stored on the linestring\r\n * @returns Returns the point index in the Polyface.\r\n * @param index Index of the point in the linestring.\r\n * @param priorIndex possible prior normal index to reuse\r\n */\r\n public findOrAddNormalInLineString(ls: LineString3d, index: number, transform?: Transform, priorIndexA?: number, priorIndexB?: number): number | undefined {\r\n const linestringNormals = ls.packedSurfaceNormals;\r\n if (linestringNormals) {\r\n const q = linestringNormals.getVector3dAtCheckedVectorIndex(index, PolyfaceBuilder._workVectorFindOrAdd);\r\n if (q) {\r\n if (transform)\r\n transform.multiplyVector(q, q);\r\n return this._polyface.addNormal(q, priorIndexA, priorIndexB);\r\n }\r\n }\r\n return undefined;\r\n\r\n }\r\n\r\n /**\r\n * Announce point coordinates. The implementation is free to either create a new point or (if known) return index of a prior point with the same coordinates.\r\n */\r\n public findOrAddPointXYZ(x: number, y: number, z: number): number {\r\n return this._polyface.addPointXYZ(x, y, z);\r\n }\r\n\r\n /** Returns a transform who can be applied to points on a triangular facet in order to obtain UV parameters. */\r\n private getUVTransformForTriangleFacet(pointA: Point3d, pointB: Point3d, pointC: Point3d): Transform | undefined {\r\n const vectorAB = pointA.vectorTo(pointB);\r\n const vectorAC = pointA.vectorTo(pointC);\r\n const unitAxes = Matrix3d.createRigidFromColumns(vectorAB, vectorAC, AxisOrder.XYZ);\r\n const localToWorld = Transform.createOriginAndMatrix(pointA, unitAxes);\r\n return localToWorld.inverse();\r\n }\r\n\r\n /** Returns the normal to a triangular facet. */\r\n private getNormalForTriangularFacet(pointA: Point3d, pointB: Point3d, pointC: Point3d): Vector3d {\r\n const vectorAB = pointA.vectorTo(pointB);\r\n const vectorAC = pointA.vectorTo(pointC);\r\n let normal = vectorAB.crossProduct(vectorAC).normalize();\r\n normal = normal ? normal : Vector3d.create();\r\n return normal;\r\n }\r\n\r\n // ###: Consider case where normals will be reversed and point through the other end of the facet\r\n /**\r\n * Add a quad to the polyface given its points in order around the edges.\r\n * Optionally provide params and the plane normal, otherwise they will be calculated without reference data.\r\n * Optionally mark this quad as the last piece of a face in this polyface.\r\n */\r\n public addQuadFacet(points: Point3d[] | GrowableXYZArray, params?: Point2d[], normals?: Vector3d[]) {\r\n if (points instanceof GrowableXYZArray)\r\n points = points.getPoint3dArray();\r\n // If params and/or normals are needed, calculate them first\r\n const needParams = this.options.needParams;\r\n const needNormals = this.options.needNormals;\r\n let param0: Point2d, param1: Point2d, param2: Point2d, param3: Point2d;\r\n let normal0: Vector3d, normal1: Vector3d, normal2: Vector3d, normal3: Vector3d;\r\n if (needParams) {\r\n if (params !== undefined && params.length > 3) {\r\n param0 = params[0];\r\n param1 = params[1];\r\n param2 = params[2];\r\n param3 = params[3];\r\n } else {\r\n const paramTransform = this.getUVTransformForTriangleFacet(points[0], points[1], points[2]);\r\n if (paramTransform === undefined) {\r\n param0 = param1 = param2 = param3 = Point2d.createZero();\r\n } else {\r\n param0 = Point2d.createFrom(paramTransform.multiplyPoint3d(points[0]));\r\n param1 = Point2d.createFrom(paramTransform.multiplyPoint3d(points[1]));\r\n param2 = Point2d.createFrom(paramTransform.multiplyPoint3d(points[2]));\r\n param3 = Point2d.createFrom(paramTransform.multiplyPoint3d(points[3]));\r\n }\r\n }\r\n }\r\n if (needNormals) {\r\n if (normals !== undefined && normals.length > 3) {\r\n normal0 = normals[0];\r\n normal1 = normals[1];\r\n normal2 = normals[2];\r\n normal3 = normals[3];\r\n } else {\r\n normal0 = this.getNormalForTriangularFacet(points[0], points[1], points[2]);\r\n normal1 = this.getNormalForTriangularFacet(points[0], points[1], points[2]);\r\n normal2 = this.getNormalForTriangularFacet(points[0], points[1], points[2]);\r\n normal3 = this.getNormalForTriangularFacet(points[0], points[1], points[2]);\r\n }\r\n }\r\n\r\n if (this._options.shouldTriangulate) {\r\n // Add as two triangles, with a diagonal along the shortest distance\r\n const vectorAC = points[0].vectorTo(points[2]);\r\n const vectorBD = points[1].vectorTo(points[3]);\r\n\r\n // Note: We pass along any values for normals or params that we calculated\r\n if (vectorAC.magnitude() >= vectorBD.magnitude()) {\r\n this.addTriangleFacet([points[0], points[1], points[2]], needParams ? [param0!, param1!, param2!] : undefined, needNormals ? [normal0!, normal1!, normal2!] : undefined);\r\n this.addTriangleFacet([points[0], points[2], points[3]], needParams ? [param0!, param2!, param3!] : undefined, needNormals ? [normal0!, normal2!, normal3!] : undefined);\r\n } else {\r\n this.addTriangleFacet([points[0], points[1], points[3]], needParams ? [param0!, param1!, param3!] : undefined, needNormals ? [normal0!, normal1!, normal3!] : undefined);\r\n this.addTriangleFacet([points[1], points[2], points[3]], needParams ? [param1!, param2!, param3!] : undefined, needNormals ? [normal1!, normal2!, normal3!] : undefined);\r\n }\r\n return;\r\n }\r\n\r\n let idx0, idx1, idx2, idx3;\r\n\r\n // Add params if needed\r\n if (needParams) {\r\n idx0 = this._polyface.addParam(param0!);\r\n idx1 = this._polyface.addParam(param1!);\r\n idx2 = this._polyface.addParam(param2!);\r\n idx3 = this._polyface.addParam(param3!);\r\n this.addIndexedQuadParamIndexes(idx0, idx1, idx3, idx2);\r\n }\r\n\r\n // Add normals if needed\r\n if (needNormals) {\r\n idx0 = this._polyface.addNormal(normal0!);\r\n idx1 = this._polyface.addNormal(normal1!);\r\n idx2 = this._polyface.addNormal(normal2!);\r\n idx3 = this._polyface.addNormal(normal3!);\r\n this.addIndexedQuadNormalIndexes(idx0, idx1, idx3, idx2);\r\n }\r\n\r\n // Add point and point indexes last (terminates the facet)\r\n idx0 = this.findOrAddPoint(points[0]);\r\n idx1 = this.findOrAddPoint(points[1]);\r\n idx2 = this.findOrAddPoint(points[2]);\r\n idx3 = this.findOrAddPoint(points[3]);\r\n this.addIndexedQuadPointIndexes(idx0, idx1, idx3, idx2);\r\n }\r\n\r\n /** Announce a single quad facet's point indexes.\r\n *\r\n * * The actual quad may be reversed or triangulated based on builder setup.\r\n * * indexA0 and indexA1 are in the forward order at the \"A\" end of the quad\r\n * * indexB0 and indexB1 are in the forward order at the \"B\" end of the quad.\r\n */\r\n private addIndexedQuadPointIndexes(indexA0: number, indexA1: number, indexB0: number, indexB1: number, terminate: boolean = true) {\r\n if (this._reversed) {\r\n this._polyface.addPointIndex(indexA0);\r\n this._polyface.addPointIndex(indexB0);\r\n this._polyface.addPointIndex(indexB1);\r\n this._polyface.addPointIndex(indexA1);\r\n } else {\r\n this._polyface.addPointIndex(indexA0);\r\n this._polyface.addPointIndex(indexA1);\r\n this._polyface.addPointIndex(indexB1);\r\n this._polyface.addPointIndex(indexB0);\r\n }\r\n if (terminate)\r\n this._polyface.terminateFacet();\r\n }\r\n\r\n /** For a single quad facet, add the indexes of the corresponding param points. */\r\n private addIndexedQuadParamIndexes(indexA0: number, indexA1: number, indexB0: number, indexB1: number) {\r\n if (this._reversed) {\r\n this._polyface.addParamIndex(indexA0);\r\n this._polyface.addParamIndex(indexB0);\r\n this._polyface.addParamIndex(indexB1);\r\n this._polyface.addParamIndex(indexA1);\r\n } else {\r\n this._polyface.addParamIndex(indexA0);\r\n this._polyface.addParamIndex(indexA1);\r\n this._polyface.addParamIndex(indexB1);\r\n this._polyface.addParamIndex(indexB0);\r\n }\r\n }\r\n\r\n /** For a single quad facet, add the indexes of the corresponding normal vectors. */\r\n private addIndexedQuadNormalIndexes(indexA0: number, indexA1: number, indexB0: number, indexB1: number) {\r\n if (this._reversed) {\r\n this._polyface.addNormalIndex(indexA0);\r\n this._polyface.addNormalIndex(indexB0);\r\n this._polyface.addNormalIndex(indexB1);\r\n this._polyface.addNormalIndex(indexA1);\r\n } else {\r\n this._polyface.addNormalIndex(indexA0);\r\n this._polyface.addNormalIndex(indexA1);\r\n this._polyface.addNormalIndex(indexB1);\r\n this._polyface.addNormalIndex(indexB0);\r\n }\r\n }\r\n\r\n // ### TODO: Consider case where normals will be reversed and point through the other end of the facet\r\n /**\r\n * Add a triangle to the polyface given its points in order around the edges.\r\n * * Optionally provide params and triangle normals, otherwise they will be calculated without reference data.\r\n */\r\n public addTriangleFacet(points: Point3d[] | GrowableXYZArray, params?: Point2d[], normals?: Vector3d[]) {\r\n if (points.length < 3)\r\n return;\r\n let idx0: number;\r\n let idx1: number;\r\n let idx2: number;\r\n let point0, point1, point2;\r\n if (points instanceof GrowableXYZArray) {\r\n point0 = points.getPoint3dAtCheckedPointIndex(0)!;\r\n point1 = points.getPoint3dAtCheckedPointIndex(1)!;\r\n point2 = points.getPoint3dAtCheckedPointIndex(2)!;\r\n } else {\r\n point0 = points[0];\r\n point1 = points[1];\r\n point2 = points[2];\r\n }\r\n\r\n // Add params if needed\r\n if (this._options.needParams) {\r\n if (params && params.length >= 3) { // Params were given\r\n idx0 = this._polyface.addParam(params[0]);\r\n idx1 = this._polyface.addParam(params[1]);\r\n idx2 = this._polyface.addParam(params[2]);\r\n } else { // Compute params\r\n const paramTransform = this.getUVTransformForTriangleFacet(point0, point1, point2);\r\n idx0 = this._polyface.addParam(Point2d.createFrom(paramTransform ? paramTransform.multiplyPoint3d(point0) : undefined));\r\n idx1 = this._polyface.addParam(Point2d.createFrom(paramTransform ? paramTransform.multiplyPoint3d(point1) : undefined));\r\n idx2 = this._polyface.addParam(Point2d.createFrom(paramTransform ? paramTransform.multiplyPoint3d(point1) : undefined));\r\n }\r\n this.addIndexedTriangleParamIndexes(idx0, idx1, idx2);\r\n }\r\n\r\n // Add normals if needed\r\n if (this._options.needNormals) {\r\n if (normals !== undefined && normals.length > 2) { // Normals were given\r\n idx0 = this._polyface.addNormal(normals[0]);\r\n idx1 = this._polyface.addNormal(normals[1]);\r\n idx2 = this._polyface.addNormal(normals[2]);\r\n } else { // Compute normals\r\n const normal = this.getNormalForTriangularFacet(point0, point1, point2);\r\n idx0 = this._polyface.addNormal(normal);\r\n idx1 = this._polyface.addNormal(normal);\r\n idx2 = this._polyface.addNormal(normal);\r\n }\r\n this.addIndexedTriangleNormalIndexes(idx0, idx1, idx2);\r\n }\r\n\r\n // Add point and point indexes last (terminates the facet)\r\n idx0 = this.findOrAddPoint(point0);\r\n idx1 = this.findOrAddPoint(point1);\r\n idx2 = this.findOrAddPoint(point2);\r\n this.addIndexedTrianglePointIndexes(idx0, idx1, idx2);\r\n }\r\n\r\n /** Announce a single triangle facet's point indexes.\r\n *\r\n * * The actual quad may be reversed or triangulated based on builder setup.\r\n */\r\n private addIndexedTrianglePointIndexes(indexA: number, indexB: number, indexC: number, terminateFacet: boolean = true) {\r\n if (!this._reversed) {\r\n this._polyface.addPointIndex(indexA);\r\n this._polyface.addPointIndex(indexB);\r\n this._polyface.addPointIndex(indexC);\r\n } else {\r\n this._polyface.addPointIndex(indexA);\r\n this._polyface.addPointIndex(indexC);\r\n this._polyface.addPointIndex(indexB);\r\n }\r\n if (terminateFacet)\r\n this._polyface.terminateFacet();\r\n }\r\n\r\n /** For a single triangle facet, add the indexes of the corresponding params. */\r\n private addIndexedTriangleParamIndexes(indexA: number, indexB: number, indexC: number) {\r\n if (!this._reversed) {\r\n this._polyface.addParamIndex(indexA);\r\n this._polyface.addParamIndex(indexB);\r\n this._polyface.addParamIndex(indexC);\r\n } else {\r\n this._polyface.addParamIndex(indexA);\r\n this._polyface.addParamIndex(indexC);\r\n this._polyface.addParamIndex(indexB);\r\n }\r\n }\r\n\r\n /** For a single triangle facet, add the indexes of the corresponding params. */\r\n private addIndexedTriangleNormalIndexes(indexA: number, indexB: number, indexC: number) {\r\n if (!this._reversed) {\r\n this._polyface.addNormalIndex(indexA);\r\n this._polyface.addNormalIndex(indexB);\r\n this._polyface.addNormalIndex(indexC);\r\n } else {\r\n this._polyface.addNormalIndex(indexA);\r\n this._polyface.addNormalIndex(indexC);\r\n this._polyface.addNormalIndex(indexB);\r\n }\r\n }\r\n /** Find or add xyzIndex and normalIndex for coordinates in the sector. */\r\n private setSectorIndices(sector: FacetSector) {\r\n sector.xyzIndex = this.findOrAddPoint(sector.xyz);\r\n if (sector.normal)\r\n sector.normalIndex = this._polyface.addNormal(sector.normal);\r\n if (sector.uv)\r\n sector.uvIndex = this._polyface.addParam(sector.uv);\r\n }\r\n private addSectorQuadA01B01(sectorA0: FacetSector, sectorA1: FacetSector, sectorB0: FacetSector, sectorB1: FacetSector) {\r\n if (sectorA0.xyz.isAlmostEqual(sectorA1.xyz) && sectorB0.xyz.isAlmostEqual(sectorB1.xyz)) {\r\n // ignore null quad !!\r\n } else {\r\n if (this._options.needNormals)\r\n this.addIndexedQuadNormalIndexes(sectorA0.normalIndex, sectorA1.normalIndex, sectorB0.normalIndex, sectorB1.normalIndex);\r\n if (this._options.needParams)\r\n this.addIndexedQuadParamIndexes(sectorA0.uvIndex, sectorA1.uvIndex, sectorB0.uvIndex, sectorB1.uvIndex);\r\n this.addIndexedQuadPointIndexes(sectorA0.xyzIndex, sectorA1.xyzIndex, sectorB0.xyzIndex, sectorB1.xyzIndex);\r\n this._polyface.terminateFacet();\r\n\r\n }\r\n\r\n }\r\n /** Add facets between lineStrings with matched point counts.\r\n * * surface normals are computed from (a) curve tangents in the linestrings and (b)rule line between linestrings.\r\n * * Facets are announced to addIndexedQuad.\r\n * * addIndexedQuad is free to apply reversal or triangulation options.\r\n */\r\n public addBetweenLineStringsWithRuleEdgeNormals(lineStringA: LineString3d, vA: number, lineStringB: LineString3d, vB: number, addClosure: boolean = false) {\r\n const pointA = lineStringA.packedPoints;\r\n const pointB = lineStringB.packedPoints;\r\n const derivativeA = lineStringA.packedDerivatives;\r\n const derivativeB = lineStringB.packedDerivatives;\r\n const fractionA = lineStringA.fractions;\r\n const fractionB = lineStringB.fractions;\r\n const needNormals = this._options.needNormals;\r\n const needParams = this._options.needParams;\r\n const sectorA0 = new FacetSector(needNormals, needParams, needNormals);\r\n const sectorA1 = new FacetSector(needNormals, needParams, needNormals);\r\n const sectorB0 = new FacetSector(needNormals, needParams, needNormals);\r\n const sectorB1 = new FacetSector(needNormals, needParams, needNormals);\r\n const sectorA00 = new FacetSector(needNormals, needParams, needNormals);\r\n const sectorB00 = new FacetSector(needNormals, needParams, needNormals);\r\n\r\n const numPoints = pointA.length;\r\n if (numPoints < 2 || numPoints !== pointB.length) return;\r\n sectorA0.loadIndexedPointAndDerivativeCoordinatesFromPackedArrays(0, pointA, derivativeA, fractionA, vA);\r\n sectorB0.loadIndexedPointAndDerivativeCoordinatesFromPackedArrays(0, pointB, derivativeB, fractionB, vB);\r\n if (needNormals)\r\n FacetSector.computeNormalsAlongRuleLine(sectorA0, sectorB0);\r\n this.setSectorIndices(sectorA0);\r\n this.setSectorIndices(sectorB0);\r\n\r\n sectorA00.copyContentsFrom(sectorA0);\r\n sectorB00.copyContentsFrom(sectorB0);\r\n for (let i = 1; i < numPoints; i++) {\r\n sectorA1.loadIndexedPointAndDerivativeCoordinatesFromPackedArrays(i, pointA, derivativeA, fractionA, vA);\r\n sectorB1.loadIndexedPointAndDerivativeCoordinatesFromPackedArrays(i, pointB, derivativeA, fractionB, vB);\r\n FacetSector.computeNormalsAlongRuleLine(sectorA1, sectorB1);\r\n this.setSectorIndices(sectorA1);\r\n this.setSectorIndices(sectorB1);\r\n // create the facet ...\r\n this.addSectorQuadA01B01(sectorA0, sectorA1, sectorB0, sectorB1);\r\n sectorA0.copyContentsFrom(sectorA1);\r\n sectorB0.copyContentsFrom(sectorB1);\r\n }\r\n if (addClosure)\r\n this.addSectorQuadA01B01(sectorA0, sectorA00, sectorB0, sectorB00);\r\n }\r\n\r\n /** Add facets between lineStrings with matched point counts.\r\n * * point indices pre-stored\r\n * * normal indices pre-stored\r\n * * uv indices pre-stored\r\n */\r\n public addBetweenLineStringsWithStoredIndices(lineStringA: LineString3d, lineStringB: LineString3d) {\r\n const pointA = lineStringA.pointIndices!;\r\n const pointB = lineStringB.pointIndices!;\r\n let normalA: GrowableFloat64Array | undefined = lineStringA.normalIndices;\r\n let normalB: GrowableFloat64Array | undefined = lineStringB.normalIndices;\r\n if (!this._options.needNormals) {\r\n normalA = undefined;\r\n normalB = undefined;\r\n }\r\n let paramA: GrowableFloat64Array | undefined = lineStringA.paramIndices;\r\n let paramB: GrowableFloat64Array | undefined = lineStringB.paramIndices;\r\n if (!this._options.needParams) {\r\n paramA = undefined;\r\n paramB = undefined;\r\n }\r\n\r\n const numPoints = pointA.length;\r\n for (let i = 1; i < numPoints; i++) {\r\n if (pointA.atUncheckedIndex(i - 1) !== pointA.atUncheckedIndex(i) || pointB.atUncheckedIndex(i - 1) !== pointB.atUncheckedIndex(i)) {\r\n this.addIndexedQuadPointIndexes(pointA.atUncheckedIndex(i - 1), pointA.atUncheckedIndex(i), pointB.atUncheckedIndex(i - 1), pointB.atUncheckedIndex(i));\r\n if (normalA && normalB)\r\n this.addIndexedQuadNormalIndexes(normalA.atUncheckedIndex(i - 1), normalA.atUncheckedIndex(i), normalB.atUncheckedIndex(i - 1), normalB.atUncheckedIndex(i));\r\n if (paramA && paramB)\r\n this.addIndexedQuadParamIndexes(paramA.atUncheckedIndex(i - 1), paramA.atUncheckedIndex(i), paramB.atUncheckedIndex(i - 1), paramB.atUncheckedIndex(i));\r\n this._polyface.terminateFacet();\r\n }\r\n }\r\n }\r\n\r\n /** Add facets between lineStrings with matched point counts.\r\n *\r\n * * Facets are announced to addIndexedQuad.\r\n * * addIndexedQuad is free to apply reversal or triangulation options.\r\n */\r\n public addBetweenTransformedLineStrings(curves: AnyCurve, transformA: Transform, transformB: Transform, addClosure: boolean = false) {\r\n if (curves instanceof LineString3d) {\r\n const pointA = curves.points;\r\n const numPoints = pointA.length;\r\n let indexA0 = this.findOrAddPointInLineString(curves, 0, transformA)!;\r\n let indexB0 = this.findOrAddPointInLineString(curves, 0, transformB)!;\r\n const indexA00 = indexA0;\r\n const indexB00 = indexB0;\r\n let indexA1 = 0;\r\n let indexB1 = 0;\r\n for (let i = 1; i < numPoints; i++) {\r\n indexA1 = this.findOrAddPointInLineString(curves, i, transformA)!;\r\n indexB1 = this.findOrAddPointInLineString(curves, i, transformB)!;\r\n this.addIndexedQuadPointIndexes(indexA0, indexA1, indexB0, indexB1);\r\n indexA0 = indexA1;\r\n indexB0 = indexB1;\r\n }\r\n if (addClosure)\r\n this.addIndexedQuadPointIndexes(indexA0, indexA00, indexB0, indexB00);\r\n } else {\r\n const children = curves.children;\r\n // just send the children individually -- final s will fix things??\r\n if (children)\r\n for (const c of children) {\r\n this.addBetweenTransformedLineStrings(c as AnyCurve, transformA, transformB);\r\n }\r\n }\r\n }\r\n\r\n private addBetweenStrokeSetPair(dataA: AnyCurve, vA: number, dataB: AnyCurve, vB: number) {\r\n if (dataA instanceof LineString3d && dataB instanceof LineString3d) {\r\n this.addBetweenLineStringsWithRuleEdgeNormals(dataA, vA, dataB, vB, false);\r\n } else if (dataA instanceof ParityRegion && dataB instanceof ParityRegion) {\r\n if (dataA.children.length === dataB.children.length) {\r\n for (let i = 0; i < dataA.children.length; i++) {\r\n this.addBetweenStrokeSetPair(dataA.children[i], vA, dataB.children[i], vB);\r\n }\r\n }\r\n } else if (dataA instanceof CurveChain && dataB instanceof CurveChain) {\r\n const chainA = dataA.children;\r\n const chainB = dataB.children;\r\n if (chainA.length === chainB.length) {\r\n for (let i = 0; i < chainA.length; i++) {\r\n const cpA = chainA[i];\r\n const cpB = chainB[i];\r\n if (cpA instanceof LineString3d && cpB instanceof LineString3d) {\r\n this.addBetweenLineStringsWithRuleEdgeNormals(cpA, vA, cpB, vB);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Add facets from a Cone\r\n */\r\n public addCone(cone: Cone) {\r\n // ensure identical stroke counts at each end . . .\r\n let strokeCount = 16;\r\n if (this._options)\r\n strokeCount = this._options.applyTolerancesToArc(cone.getMaxRadius());\r\n let axisStrokeCount = 1;\r\n const lineStringA = cone.strokeConstantVSection(0.0, strokeCount, this._options);\r\n const lineStringB = cone.strokeConstantVSection(1.0, strokeCount, this._options);\r\n\r\n if (this._options) {\r\n const vDistanceRange = GrowableXYZArray.distanceRangeBetweenCorrespondingPoints(lineStringA.packedPoints, lineStringB.packedPoints);\r\n axisStrokeCount = this._options.applyMaxEdgeLength(1, vDistanceRange.low);\r\n }\r\n const sizes = cone.maxIsoParametricDistance();\r\n this.addUVGridBody(cone, strokeCount, axisStrokeCount, Segment1d.create(0, sizes.x), Segment1d.create(0, sizes.y));\r\n this.endFace();\r\n\r\n if (cone.capped) {\r\n if (!Geometry.isSmallMetricDistance(cone.getRadiusA())) {\r\n this.addTrianglesInUncheckedConvexPolygon(lineStringA, true); // lower triangles flip\r\n this.endFace();\r\n }\r\n if (!Geometry.isSmallMetricDistance(cone.getRadiusB())) {\r\n this.addTrianglesInUncheckedConvexPolygon(lineStringB, false); // upper triangles to not flip.\r\n this.endFace();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Add facets for a TorusPipe.\r\n */\r\n public addTorusPipe(surface: TorusPipe, phiStrokeCount?: number, thetaStrokeCount?: number) {\r\n const thetaFraction = surface.getThetaFraction();\r\n const numU = Geometry.clamp(Geometry.resolveNumber(phiStrokeCount, 8), 4, 64);\r\n const numV = Geometry.clamp(\r\n Geometry.resolveNumber(thetaStrokeCount, Math.ceil(16 * thetaFraction)),\r\n 2, 64);\r\n\r\n this.toggleReversedFacetFlag();\r\n const sizes = surface.maxIsoParametricDistance();\r\n this.addUVGridBody(surface, numU, numV, Segment1d.create(0, sizes.x), Segment1d.create(0, sizes.y));\r\n this.toggleReversedFacetFlag();\r\n\r\n if (surface.capped && thetaFraction < 1.0) {\r\n const centerFrame = surface.getConstructiveFrame()!;\r\n const minorRadius = surface.getMinorRadius();\r\n const majorRadius = surface.getMajorRadius();\r\n const a = 2 * minorRadius;\r\n const r0 = majorRadius - minorRadius;\r\n const r1 = majorRadius + minorRadius;\r\n const z0 = -minorRadius;\r\n const cap0ToLocal = Transform.createRowValues(\r\n a, 0, 0, r0,\r\n 0, 0, -1, 0,\r\n 0, a, 0, z0);\r\n const cap0ToWorld = centerFrame.multiplyTransformTransform(cap0ToLocal);\r\n const worldToCap0 = cap0ToWorld.inverse();\r\n if (worldToCap0) {\r\n const ls0 = UVSurfaceOps.createLinestringOnUVLine(surface, 0, 0, 1, 0, numU, false, true);\r\n ls0.computeUVFromXYZTransform(worldToCap0);\r\n this.addTrianglesInUncheckedConvexPolygon(ls0, false);\r\n }\r\n const thetaRadians = surface.getSweepAngle().radians;\r\n const cc = Math.cos(thetaRadians);\r\n const ss = Math.sin(thetaRadians);\r\n\r\n const cap1ToLocal = Transform.createRowValues(\r\n -cc * a, 0, -ss, r1 * cc,\r\n -ss * a, 0, cc, r1 * ss,\r\n 0, a, 0, z0);\r\n\r\n const cap1ToWorld = centerFrame.multiplyTransformTransform(cap1ToLocal);\r\n const worldToCap1 = cap1ToWorld.inverse();\r\n if (worldToCap1) {\r\n const ls1 = UVSurfaceOps.createLinestringOnUVLine(surface, 1, 1, 0, 1, numU, false, true);\r\n ls1.computeUVFromXYZTransform(worldToCap1);\r\n this.addTrianglesInUncheckedConvexPolygon(ls1, false);\r\n }\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Add point data (no params, normals) for linestrings.\r\n * * This recurses through curve chains (loops and paths)\r\n * * linestrings are swept\r\n * * All other curve types are ignored.\r\n * @param vector sweep vector\r\n * @param contour contour which contains only linestrings\r\n */\r\n public addLinearSweepLineStringsXYZOnly(contour: AnyCurve, vector: Vector3d) {\r\n if (contour instanceof LineString3d) {\r\n let pointA = Point3d.create();\r\n let pointB = Point3d.create();\r\n let indexA0 = 0;\r\n let indexA1 = 0;\r\n let indexB0 = 0;\r\n let indexB1 = 0;\r\n const n = contour.numPoints();\r\n for (let i = 0; i < n; i++) {\r\n pointA = contour.pointAt(i, pointA)!;\r\n pointB = pointA.plus(vector, pointB);\r\n indexA1 = this.findOrAddPoint(pointA);\r\n indexB1 = this.findOrAddPoint(pointB);\r\n if (i > 0) {\r\n this.addIndexedQuadPointIndexes(indexA0, indexA1, indexB0, indexB1);\r\n }\r\n indexA0 = indexA1;\r\n indexB0 = indexB1;\r\n }\r\n } else if (contour instanceof CurveChain) {\r\n for (const ls of contour.children) {\r\n this.addLinearSweepLineStringsXYZOnly(ls, vector);\r\n }\r\n }\r\n }\r\n /**\r\n * Construct facets for a rotational sweep.\r\n */\r\n public addRotationalSweep(surface: RotationalSweep) {\r\n const contour = surface.getCurves();\r\n const section0 = StrokeCountSection.createForParityRegionOrChain(contour, this._options);\r\n const baseStrokes = section0.getStrokes();\r\n\r\n const axis = surface.cloneAxisRay();\r\n const perpendicularVector = CylindricalRangeQuery.computeMaxVectorFromRay(axis, baseStrokes);\r\n const swingVector = axis.direction.crossProduct(perpendicularVector);\r\n if (this._options.needNormals)\r\n CylindricalRangeQuery.buildRotationalNormalsInLineStrings(baseStrokes, axis, swingVector);\r\n const maxDistance = perpendicularVector.magnitude();\r\n const maxPath = Math.abs(maxDistance * surface.getSweep().radians);\r\n let numStep = StrokeOptions.applyAngleTol(this._options, 1, surface.getSweep().radians, undefined);\r\n numStep = StrokeOptions.applyMaxEdgeLength(this._options, numStep, maxPath);\r\n for (let i = 1; i <= numStep; i++) {\r\n const transformA = surface.getFractionalRotationTransform((i - 1) / numStep);\r\n const transformB = surface.getFractionalRotationTransform(i / numStep);\r\n this.addBetweenRotatedStrokeSets(baseStrokes, transformA, i - 1, transformB, i);\r\n }\r\n if (surface.capped) {\r\n const capContour = surface.getSweepContourRef();\r\n capContour.purgeFacets();\r\n capContour.emitFacets(this, true, undefined);\r\n // final loop pass left transformA at end ..\r\n capContour.emitFacets(this, false, surface.getFractionalRotationTransform(1.0));\r\n }\r\n }\r\n /**\r\n * Construct facets for any planar region\r\n */\r\n public addTriangulatedRegion(region: AnyRegion) {\r\n const contour = SweepContour.createForLinearSweep(region);\r\n if (contour)\r\n contour.emitFacets(this, true, undefined);\r\n }\r\n\r\n /**\r\n * * Recursively visit all children of data.\r\n * * At each primitive, invoke the computeStrokeCountForOptions method, with options from the builder.\r\n * @param data\r\n */\r\n public applyStrokeCountsToCurvePrimitives(data: AnyCurve | GeometryQuery) {\r\n const options = this._options;\r\n if (data instanceof CurvePrimitive) {\r\n data.computeStrokeCountForOptions(options);\r\n } else if (data instanceof CurveCollection) {\r\n const children = data.children;\r\n if (children)\r\n for (const child of children) {\r\n this.applyStrokeCountsToCurvePrimitives(child);\r\n }\r\n }\r\n }\r\n\r\n private addBetweenStrokeSetsWithRuledNormals(stroke0: AnyCurve, stroke1: AnyCurve, numVEdge: number) {\r\n const strokeSets = [stroke0];\r\n const fractions = [0.0];\r\n for (let vIndex = 1; vIndex < numVEdge; vIndex++) {\r\n const vFraction = vIndex / numVEdge;\r\n const strokeA = ConstructCurveBetweenCurves.interpolateBetween(stroke0, vIndex / numVEdge, stroke1) as AnyCurve;\r\n strokeSets.push(strokeA);\r\n fractions.push(vFraction);\r\n }\r\n strokeSets.push(stroke1);\r\n fractions.push(1.0);\r\n for (let vIndex = 0; vIndex < numVEdge; vIndex++) {\r\n this.addBetweenStrokeSetPair(strokeSets[vIndex], fractions[vIndex], strokeSets[vIndex + 1], fractions[vIndex + 1]);\r\n }\r\n }\r\n private createIndicesInLineString(ls: LineString3d, vParam: number, transform?: Transform) {\r\n\r\n const n = ls.numPoints();\r\n {\r\n const pointIndices = ls.ensureEmptyPointIndices();\r\n const index0 = this.findOrAddPointInLineString(ls, 0, transform);\r\n pointIndices.push(index0!);\r\n if (n > 1) {\r\n let indexA = index0;\r\n let indexB;\r\n for (let i = 1; i + 1 < n; i++) {\r\n indexB = this.findOrAddPointInLineString(ls, i, transform, indexA);\r\n pointIndices.push(indexB!);\r\n indexA = indexB;\r\n }\r\n // assume last point can only repeat back to zero ...\r\n indexB = this.findOrAddPointInLineString(ls, n - 1, transform, index0);\r\n pointIndices.push(indexB!);\r\n }\r\n }\r\n if (this._options.needNormals && ls.packedSurfaceNormals !== undefined) {\r\n const normalIndices = ls.ensureEmptyNormalIndices();\r\n const normalIndex0 = this.findOrAddNormalInLineString(ls, 0, transform);\r\n normalIndices.push(normalIndex0!);\r\n let normalIndexA = normalIndex0;\r\n let normalIndexB;\r\n if (n > 1) {\r\n for (let i = 1; i + 1 < n; i++) {\r\n normalIndexB = this.findOrAddNormalInLineString(ls, i, transform, normalIndexA);\r\n normalIndices.push(normalIndexB!);\r\n normalIndexA = normalIndexB;\r\n }\r\n // assume last point can only repeat back to zero ...\r\n normalIndexB = this.findOrAddNormalInLineString(ls, n - 1, transform, normalIndex0, normalIndexA);\r\n normalIndices.push(normalIndexB!);\r\n }\r\n }\r\n if (this._options.needParams && ls.packedUVParams !== undefined) {\r\n const uvIndices = ls.ensureEmptyUVIndices();\r\n const uvIndex0 = this.findOrAddParamInLineString(ls, 0, vParam);\r\n uvIndices.push(uvIndex0!);\r\n let uvIndexA = uvIndex0;\r\n let uvIndexB;\r\n if (n > 1) {\r\n for (let i = 1; i + 1 < n; i++) {\r\n uvIndexB = this.findOrAddParamInLineString(ls, i, vParam, uvIndexA);\r\n uvIndices.push(uvIndexB!);\r\n uvIndexA = uvIndexB;\r\n }\r\n // assume last point can only repeat back to zero ...\r\n uvIndexB = this.findOrAddParamInLineString(ls, n - 1, vParam, uvIndexA, uvIndex0);\r\n uvIndices.push(uvIndexB!);\r\n }\r\n }\r\n\r\n }\r\n\r\n private addBetweenRotatedStrokeSets(stroke0: AnyCurve, transformA: Transform, vA: number, transformB: Transform, vB: number) {\r\n if (stroke0 instanceof LineString3d) {\r\n const strokeA = stroke0.cloneTransformed(transformA) as LineString3d;\r\n this.createIndicesInLineString(strokeA, vA);\r\n const strokeB = stroke0.cloneTransformed(transformB) as LineString3d;\r\n this.createIndicesInLineString(strokeB, vB);\r\n this.addBetweenLineStringsWithStoredIndices(strokeA, strokeB);\r\n } else if (stroke0 instanceof ParityRegion) {\r\n for (let i = 0; i < stroke0.children.length; i++) { // eslint-disable-line @typescript-eslint/prefer-for-of\r\n this.addBetweenRotatedStrokeSets(stroke0.children[i], transformA, vA, transformB, vB);\r\n }\r\n } else if (stroke0 instanceof CurveChain) {\r\n const chainA = stroke0.children;\r\n for (let i = 0; i < chainA.length; i++) { // eslint-disable-line @typescript-eslint/prefer-for-of\r\n const cpA = chainA[i];\r\n if (cpA instanceof LineString3d) {\r\n this.addBetweenRotatedStrokeSets(cpA, transformA, vA, transformB, vB);\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n *\r\n * Add facets from\r\n * * The swept contour\r\n * * each cap.\r\n */\r\n public addLinearSweep(surface: LinearSweep) {\r\n const contour = surface.getCurvesRef();\r\n const section0 = StrokeCountSection.createForParityRegionOrChain(contour, this._options);\r\n const stroke0 = section0.getStrokes();\r\n const sweepVector = surface.cloneSweepVector();\r\n const sweepTransform = Transform.createTranslation(sweepVector);\r\n const stroke1 = stroke0.cloneTransformed(sweepTransform) as AnyCurve;\r\n const numVEdge = this._options.applyMaxEdgeLength(1, sweepVector.magnitude());\r\n this.addBetweenStrokeSetsWithRuledNormals(stroke0, stroke1, numVEdge);\r\n\r\n if (surface.capped && contour.isAnyRegionType) {\r\n const contourA = surface.getSweepContourRef();\r\n contourA.purgeFacets();\r\n\r\n contourA.emitFacets(this, true, undefined);\r\n contourA.emitFacets(this, false, sweepTransform);\r\n }\r\n }\r\n\r\n /**\r\n * Add facets from a ruled sweep.\r\n */\r\n public addRuledSweep(surface: RuledSweep): boolean {\r\n const contours = surface.sweepContoursRef();\r\n let stroke0: AnyCurve | undefined;\r\n let stroke1: AnyCurve;\r\n const sectionMaps = [];\r\n for (let i = 0; i < contours.length; i++) { // eslint-disable-line @typescript-eslint/prefer-for-of\r\n sectionMaps.push(StrokeCountSection.createForParityRegionOrChain(contours[i].curves, this._options));\r\n }\r\n if (StrokeCountSection.enforceStrokeCountCompatibility(sectionMaps)) {\r\n StrokeCountSection.enforceCompatibleDistanceSums(sectionMaps);\r\n for (let i = 0; i < contours.length; i++) {\r\n stroke1 = sectionMaps[i].getStrokes();\r\n if (!stroke1)\r\n stroke1 = contours[i].curves.cloneStroked();\r\n if (i > 0 && stroke0 && stroke1) {\r\n const distanceRange = Range1d.createNull();\r\n if (StrokeCountSection.extendDistanceRangeBetweenStrokes(stroke0, stroke1, distanceRange)\r\n && !distanceRange.isNull) {\r\n const numVEdge = this._options.applyMaxEdgeLength(1, distanceRange.high);\r\n this.addBetweenStrokeSetsWithRuledNormals(stroke0, stroke1, numVEdge);\r\n }\r\n }\r\n stroke0 = stroke1;\r\n }\r\n }\r\n\r\n if (surface.capped && contours[0].curves.isAnyRegionType) {\r\n contours[0].purgeFacets();\r\n\r\n contours[0].emitFacets(this, true, undefined);\r\n contours[contours.length - 1].purgeFacets();\r\n contours[contours.length - 1].emitFacets(this, false, undefined);\r\n }\r\n return true;\r\n }\r\n /**\r\n * Add facets from a Sphere\r\n */\r\n public addSphere(sphere: Sphere, strokeCount?: number) {\r\n let numStrokeTheta = strokeCount ? strokeCount : this.options.applyTolerancesToArc(sphere.maxAxisRadius());\r\n if (Geometry.isOdd(numStrokeTheta))\r\n numStrokeTheta += 1;\r\n const numStrokePhi = Geometry.clampToStartEnd(Math.abs(numStrokeTheta * sphere.latitudeSweepFraction), 1, Math.ceil(numStrokeTheta * 0.5));\r\n\r\n const lineStringA = sphere.strokeConstantVSection(0.0, numStrokeTheta, this._options);\r\n if (sphere.capped && !Geometry.isSmallMetricDistance(lineStringA.quickLength())) {\r\n this.addTrianglesInUncheckedConvexPolygon(lineStringA, true); // lower triangles flip\r\n this.endFace();\r\n }\r\n\r\n const sizes = sphere.maxIsoParametricDistance();\r\n\r\n this.addUVGridBody(sphere, numStrokeTheta, numStrokePhi, Segment1d.create(0, sizes.x), Segment1d.create(0, sizes.y));\r\n this.endFace();\r\n\r\n const lineStringB = sphere.strokeConstantVSection(1.0, numStrokeTheta, this._options);\r\n if (sphere.capped && !Geometry.isSmallMetricDistance(lineStringB.quickLength())) {\r\n this.addTrianglesInUncheckedConvexPolygon(lineStringB, false); // upper triangles do not flip\r\n this.endFace();\r\n }\r\n }\r\n /**\r\n * Add facets from a Box\r\n */\r\n public addBox(box: Box) {\r\n const corners = box.getCorners();\r\n const xLength = Geometry.maxXY(box.getBaseX(), box.getBaseX());\r\n const yLength = Geometry.maxXY(box.getBaseY(), box.getTopY());\r\n let zLength = 0.0;\r\n for (let i = 0; i < 4; i++) {\r\n zLength = Geometry.maxXY(zLength, corners[i].distance(corners[i + 4]));\r\n\r\n }\r\n\r\n const numX = this._options.applyMaxEdgeLength(1, xLength);\r\n const numY = this._options.applyMaxEdgeLength(1, yLength);\r\n const numZ = this._options.applyMaxEdgeLength(1, zLength);\r\n // Wrap the 4 out-of-plane faces as a single parameters space with \"distance\" advancing in x then y then negative x then negative y ...\r\n const uParamRange = Segment1d.create(0, xLength);\r\n const vParamRange = Segment1d.create(0, zLength);\r\n this.addUVGridBody(BilinearPatch.create(corners[0], corners[1], corners[4], corners[5]), numX, numZ, uParamRange, vParamRange);\r\n uParamRange.shift(xLength);\r\n this.addUVGridBody(BilinearPatch.create(corners[1], corners[3], corners[5], corners[7]), numY, numZ, uParamRange, vParamRange);\r\n uParamRange.shift(yLength);\r\n this.addUVGridBody(BilinearPatch.create(corners[3], corners[2], corners[7], corners[6]), numX, numZ, uParamRange, vParamRange);\r\n uParamRange.shift(xLength);\r\n this.addUVGridBody(BilinearPatch.create(corners[2], corners[0], corners[6], corners[4]), numY, numZ, uParamRange, vParamRange);\r\n // finally end that wraparound face !!\r\n this.endFace();\r\n if (box.capped) {\r\n uParamRange.set(0.0, xLength);\r\n vParamRange.set(0.0, yLength);\r\n this.addUVGridBody(BilinearPatch.create(corners[4], corners[5], corners[6], corners[7]), numX, numY, uParamRange, vParamRange);\r\n this.endFace();\r\n\r\n uParamRange.set(0.0, xLength);\r\n vParamRange.set(0.0, yLength);\r\n this.addUVGridBody(BilinearPatch.create(corners[2], corners[3], corners[0], corners[1]), numX, numY, uParamRange, vParamRange);\r\n this.endFace();\r\n }\r\n }\r\n\r\n /** Add a polygon to the evolving facets.\r\n *\r\n * * Add points to the polyface\r\n * * indices are added (in reverse order if indicated by the builder state)\r\n * @param points array of points. This may contain extra points not to be used in the polygon\r\n * @param numPointsToUse number of points to use.\r\n */\r\n public addPolygon(points: Point3d[], numPointsToUse?: number) {\r\n // don't use trailing points that match start point.\r\n if (numPointsToUse === undefined)\r\n numPointsToUse = points.length;\r\n while (numPointsToUse > 1 && points[numPointsToUse - 1].isAlmostEqual(points[0]))\r\n numPointsToUse--;\r\n let index = 0;\r\n if (!this._reversed) {\r\n for (let i = 0; i < numPointsToUse; i++) {\r\n index = this.findOrAddPoint(points[i]);\r\n this._polyface.addPointIndex(index);\r\n }\r\n } else {\r\n for (let i = numPointsToUse; --i >= 0;) {\r\n index = this.findOrAddPoint(points[i]);\r\n this._polyface.addPointIndex(index);\r\n }\r\n }\r\n this._polyface.terminateFacet();\r\n }\r\n\r\n /** Add a polygon to the evolving facets.\r\n *\r\n * * Add points to the polyface\r\n * * indices are added (in reverse order if indicated by the builder state)\r\n * * Arrays with 2 or fewer points are ignored.\r\n * @param points array of points. Trailing closure points are ignored.\r\n */\r\n public addPolygonGrowableXYZArray(points: GrowableXYZArray) {\r\n // don't use trailing points that match start point.\r\n let numPointsToUse = points.length;\r\n while (numPointsToUse > 2 && Geometry.isSmallMetricDistance(points.distanceIndexIndex(0, numPointsToUse - 1)!))\r\n numPointsToUse--;\r\n // strip trailing duplicates\r\n while (numPointsToUse > 2 && Geometry.isSmallMetricDistance(points.distanceIndexIndex(numPointsToUse - 2, numPointsToUse - 1)!))\r\n numPointsToUse--;\r\n // ignore triangles for which the height is less than smallMetricDistance times length\r\n // sum of edge lengths is twice the perimeter. If it is flat that's twice the largest base dimension.\r\n // cross product magnitude is twice the area.\r\n if (numPointsToUse === 3) {\r\n const cross = points.crossProductIndexIndexIndex(0, 1, 2)!;\r\n const q = cross.magnitude();\r\n const p = points.distanceIndexIndex(0, 1)! + points.distanceIndexIndex(0, 2)! + points.distanceIndexIndex(1, 2)!;\r\n if (q < Geometry.smallMetricDistance * p)\r\n numPointsToUse = 0;\r\n }\r\n if (numPointsToUse > 2) {\r\n let index = 0;\r\n if (!this._reversed) {\r\n for (let i = 0; i < numPointsToUse; i++) {\r\n index = this.findOrAddPointInGrowableXYZArray(points, i)!;\r\n this._polyface.addPointIndex(index);\r\n }\r\n } else {\r\n for (let i = numPointsToUse; --i >= 0;) {\r\n index = this.findOrAddPointInGrowableXYZArray(points, i)!;\r\n this._polyface.addPointIndex(index);\r\n }\r\n }\r\n this._polyface.terminateFacet();\r\n }\r\n }\r\n /** Add a polygon to the evolving facets.\r\n *\r\n * * Add points to the polyface\r\n * * indices are added (in reverse order if indicated by the builder state)\r\n * @param normals array of points. This may contain extra points not to be used in the polygon\r\n * @param numPointsToUse number of points to use.\r\n */\r\n public addFacetFromGrowableArrays(points: GrowableXYZArray, normals: GrowableXYZArray | undefined, params: GrowableXYArray | undefined, colors: number[] | undefined) {\r\n // don't use trailing points that match start point.\r\n let numPointsToUse = points.length;\r\n while (numPointsToUse > 1 && Geometry.isSmallMetricDistance(points.distanceIndexIndex(0, numPointsToUse - 1)!))\r\n numPointsToUse--;\r\n let index = 0;\r\n if (normals && normals.length < numPointsToUse)\r\n normals = undefined;\r\n if (params && params.length < numPointsToUse)\r\n params = undefined;\r\n if (colors && colors.length < numPointsToUse)\r\n colors = undefined;\r\n if (!this._reversed) {\r\n for (let i = 0; i < numPointsToUse; i++) {\r\n index = this.findOrAddPointInGrowableXYZArray(points, i)!;\r\n this._polyface.addPointIndex(index);\r\n\r\n if (normals) {\r\n index = this.findOrAddNormalInGrowableXYZArray(normals, i)!;\r\n this._polyface.addNormalIndex(index);\r\n }\r\n\r\n if (params) {\r\n index = this.findOrAddParamInGrowableXYArray(params, i)!;\r\n this._polyface.addParamIndex(index);\r\n }\r\n if (colors) {\r\n index = this._polyface.addColor(colors[i]);\r\n this._polyface.addColorIndex(index);\r\n }\r\n }\r\n } else {\r\n for (let i = numPointsToUse; --i >= 0;) {\r\n index = this.findOrAddPointInGrowableXYZArray(points, i)!;\r\n this._polyface.addPointIndex(index);\r\n\r\n if (normals) {\r\n index = this.findOrAddNormalInGrowableXYZArray(normals, i)!;\r\n this._polyface.addNormalIndex(index);\r\n }\r\n\r\n if (params) {\r\n index = this.findOrAddParamInGrowableXYArray(params, i)!;\r\n this._polyface.addParamIndex(index);\r\n }\r\n if (colors) {\r\n index = this._polyface.addColor(colors[i]);\r\n this._polyface.addColorIndex(index);\r\n }\r\n }\r\n }\r\n this._polyface.terminateFacet();\r\n }\r\n\r\n /** Add the current visitor facet to the evolving polyface.\r\n * * indices are added (in reverse order if indicated by the builder state)\r\n */\r\n public addFacetFromVisitor(visitor: PolyfaceVisitor) {\r\n this.addFacetFromGrowableArrays(visitor.point, visitor.normal, visitor.param, visitor.color);\r\n }\r\n\r\n /** Add a polyface, with optional reverse and transform. */\r\n public addIndexedPolyface(source: IndexedPolyface, reversed: boolean, transform?: Transform) {\r\n this._polyface.addIndexedPolyface(source, reversed, transform);\r\n }\r\n\r\n /**\r\n * Produce a new FacetFaceData for all terminated facets since construction of the previous face.\r\n * Each facet number/index is mapped to the FacetFaceData through the faceToFaceData array.\r\n * Returns true if successful, and false otherwise.\r\n */\r\n public endFace(): boolean {\r\n return this._polyface.setNewFaceData();\r\n }\r\n\r\n /** Double dispatch handler for Cone */\r\n public override handleCone(g: Cone): any { return this.addCone(g); }\r\n /** Double dispatch handler for TorusPipe */\r\n public override handleTorusPipe(g: TorusPipe): any { return this.addTorusPipe(g); }\r\n /** Double dispatch handler for Sphere */\r\n public override handleSphere(g: Sphere): any { return this.addSphere(g); }\r\n /** Double dispatch handler for Box */\r\n public override handleBox(g: Box): any { return this.addBox(g); }\r\n /** Double dispatch handler for LinearSweep */\r\n public override handleLinearSweep(g: LinearSweep): any { return this.addLinearSweep(g); }\r\n /** Double dispatch handler for RotationalSweep */\r\n public override handleRotationalSweep(g: RotationalSweep): any { return this.addRotationalSweep(g); }\r\n /** Double dispatch handler for RuledSweep */\r\n public override handleRuledSweep(g: RuledSweep): any { return this.addRuledSweep(g); }\r\n /** add facets for a GeometryQuery object. This is double dispatch through `dispatchToGeometryHandler(this)` */\r\n public addGeometryQuery(g: GeometryQuery) { g.dispatchToGeometryHandler(this); }\r\n\r\n /**\r\n *\r\n * * Visit all faces\r\n * * Test each face with f(node) for any node on the face.\r\n * * For each face that passes, pass its coordinates to the builder.\r\n * * Rely on the builder's compress step to find common vertex coordinates\r\n * @internal\r\n */\r\n public addGraph(graph: HalfEdgeGraph, needParams: boolean, acceptFaceFunction: HalfEdgeToBooleanFunction = HalfEdge.testNodeMaskNotExterior,\r\n isEdgeVisibleFunction: HalfEdgeToBooleanFunction | undefined = HalfEdge.testMateMaskExterior) {\r\n let index = 0;\r\n const needNormals = this._options.needNormals;\r\n let normalIndex = 0;\r\n if (needNormals)\r\n normalIndex = this._polyface.addNormalXYZ(0, 0, 1); // big assumption !!!! someday check if that's where the facets actually are!!\r\n\r\n graph.announceFaceLoops(\r\n (_graph: HalfEdgeGraph, seed: HalfEdge) => {\r\n if (acceptFaceFunction(seed) && seed.countEdgesAroundFace() > 2) {\r\n let node = seed;\r\n do {\r\n index = this.findOrAddPointXYZ(node.x, node.y, node.z);\r\n this._polyface.addPointIndex(index, isEdgeVisibleFunction === undefined ? true : isEdgeVisibleFunction(node));\r\n if (needParams) {\r\n index = this.findOrAddParamXY(node.x, node.y);\r\n this._polyface.addParamIndex(index);\r\n }\r\n if (needNormals) {\r\n this._polyface.addNormalIndex(normalIndex);\r\n }\r\n node = node.faceSuccessor;\r\n } while (node !== seed);\r\n this._polyface.terminateFacet();\r\n }\r\n return true;\r\n });\r\n }\r\n /**\r\n *\r\n * * For each node in `faces`\r\n * * add all of its vertices to the polyface\r\n * * add point indices to form a new facet.\r\n * * (Note: no normal or param indices are added)\r\n * * terminate the facet\r\n * @internal\r\n */\r\n public addGraphFaces(_graph: HalfEdgeGraph, faces: HalfEdge[]) {\r\n let index = 0;\r\n for (const seed of faces) {\r\n let node = seed;\r\n do {\r\n index = this.findOrAddPointXYZ(node.x, node.y, node.z);\r\n this._polyface.addPointIndex(index);\r\n node = node.faceSuccessor;\r\n } while (node !== seed);\r\n this._polyface.terminateFacet();\r\n }\r\n }\r\n /** Create a polyface containing the faces of a HalfEdgeGraph, with test function to filter faces.\r\n * @internal\r\n */\r\n public static graphToPolyface(graph: HalfEdgeGraph, options?: StrokeOptions, acceptFaceFunction: HalfEdgeToBooleanFunction = HalfEdge.testNodeMaskNotExterior): IndexedPolyface {\r\n const builder = PolyfaceBuilder.create(options);\r\n builder.addGraph(graph, builder.options.needParams, acceptFaceFunction);\r\n builder.endFace();\r\n return builder.claimPolyface();\r\n }\r\n /** Create a polyface containing an array of faces of a HalfEdgeGraph, with test function to filter faces.\r\n * @internal\r\n */\r\n public static graphFacesToPolyface(graph: HalfEdgeGraph, faces: HalfEdge[]): IndexedPolyface {\r\n const builder = PolyfaceBuilder.create();\r\n builder.addGraphFaces(graph, faces);\r\n builder.endFace();\r\n return builder.claimPolyface();\r\n }\r\n\r\n /** Create a polyface containing triangles in a (space) polygon.\r\n * * The polyface contains only coordinate data (no params or normals).\r\n */\r\n public static polygonToTriangulatedPolyface(points: Point3d[], localToWorld?: Transform): IndexedPolyface | undefined {\r\n if (!localToWorld)\r\n localToWorld = FrameBuilder.createFrameWithCCWPolygon(points);\r\n if (localToWorld) {\r\n const localPoints = localToWorld.multiplyInversePoint3dArray(points)!;\r\n const areaXY = PolygonOps.areaXY(localPoints);\r\n if (areaXY < 0.0)\r\n localPoints.reverse();\r\n const graph = Triangulator.createTriangulatedGraphFromSingleLoop(localPoints);\r\n if (graph) {\r\n const polyface = this.graphToPolyface(graph);\r\n polyface.tryTransformInPlace(localToWorld);\r\n return polyface;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Given arrays of coordinates for multiple facets.\r\n * * pointArray[i] is an array of 3 or 4 points\r\n * * paramArray[i] is an array of matching number of params\r\n * * normalArray[i] is an array of matching number of normals.\r\n * @param pointArray array of arrays of point coordinates\r\n * @param paramArray array of arrays of uv parameters\r\n * @param normalArray array of arrays of normals\r\n * @param endFace if true, call this.endFace after adding all the facets.\r\n */\r\n public addCoordinateFacets(pointArray: Point3d[][], paramArray?: Point2d[][], normalArray?: Vector3d[][], endFace: boolean = false) {\r\n for (let i = 0; i < pointArray.length; i++) {\r\n const params = paramArray ? paramArray[i] : undefined;\r\n const normals = normalArray ? normalArray[i] : undefined;\r\n\r\n if (pointArray[i].length === 3)\r\n this.addTriangleFacet(pointArray[i], params, normals);\r\n else if (pointArray[i].length === 4)\r\n this.addQuadFacet(pointArray[i], params, normals);\r\n }\r\n\r\n if (endFace)\r\n this.endFace();\r\n }\r\n /**\r\n * * Evaluate `(numU + 1) * (numV + 1)` grid points (in 0..1 in both u and v) on a surface.\r\n * * Add the facets for `numU * numV` quads.\r\n * * uv params are the 0..1 fractions.\r\n * * normals are cross products of u and v direction partial derivatives.\r\n * @param surface\r\n * @param numU number of intervals (edges) in the u direction. (Number of points is `numU + 1`)\r\n * @param numV number of intervals (edges) in the v direction. (Number of points is `numV + 1`)\r\n * @param uMap optional mapping from u fraction to parameter space (such as texture)\r\n * @param vMap optional mapping from v fraction to parameter space (such as texture)\r\n */\r\n public addUVGridBody(surface: UVSurface, numU: number, numV: number, uMap?: Segment1d, vMap?: Segment1d) {\r\n let xyzIndex0 = new GrowableFloat64Array(numU);\r\n let xyzIndex1 = new GrowableFloat64Array(numU);\r\n let paramIndex0: GrowableFloat64Array | undefined;\r\n let paramIndex1: GrowableFloat64Array | undefined;\r\n let normalIndex0: GrowableFloat64Array | undefined;\r\n let normalIndex1: GrowableFloat64Array | undefined;\r\n const reverse = this._reversed;\r\n const needNormals = this.options.needNormals;\r\n if (needNormals) {\r\n normalIndex0 = new GrowableFloat64Array(numU);\r\n normalIndex1 = new GrowableFloat64Array(numU);\r\n }\r\n const needParams = this.options.needParams;\r\n if (needParams) {\r\n paramIndex0 = new GrowableFloat64Array(numU);\r\n paramIndex1 = new GrowableFloat64Array(numU);\r\n }\r\n\r\n let indexSwap;\r\n xyzIndex0.ensureCapacity(numU);\r\n xyzIndex1.ensureCapacity(numU);\r\n const uv = Point2d.create();\r\n const normal = Vector3d.create();\r\n const du = 1.0 / numU;\r\n const dv = 1.0 / numV;\r\n const plane = Plane3dByOriginAndVectors.createXYPlane();\r\n for (let v = 0; v <= numV; v++) {\r\n // evaluate new points ....\r\n xyzIndex1.clear();\r\n if (needNormals)\r\n normalIndex1!.clear();\r\n if (needParams)\r\n paramIndex1!.clear();\r\n for (let u = 0; u <= numU; u++) {\r\n const uFrac = u * du;\r\n const vFrac = v * dv;\r\n surface.uvFractionToPointAndTangents(uFrac, vFrac, plane);\r\n xyzIndex1.push(this._polyface.addPoint(plane.origin));\r\n if (needNormals) {\r\n plane.vectorU.crossProduct(plane.vectorV, normal);\r\n normal.normalizeInPlace();\r\n if (reverse)\r\n normal.scaleInPlace(-1.0);\r\n normalIndex1!.push(this._polyface.addNormal(normal));\r\n }\r\n if (needParams)\r\n paramIndex1!.push(this._polyface.addParam(Point2d.create(\r\n uMap ? uMap.fractionToPoint(uFrac) : uFrac,\r\n vMap ? vMap.fractionToPoint(vFrac) : vFrac,\r\n uv)));\r\n }\r\n\r\n if (v > 0) {\r\n for (let u = 0; u < numU; u++) {\r\n if (!this._options.shouldTriangulate) {\r\n this.addIndexedQuadPointIndexes(\r\n xyzIndex0.atUncheckedIndex(u), xyzIndex0.atUncheckedIndex(u + 1),\r\n xyzIndex1.atUncheckedIndex(u), xyzIndex1.atUncheckedIndex(u + 1), false);\r\n if (needNormals)\r\n this.addIndexedQuadNormalIndexes(\r\n normalIndex0!.atUncheckedIndex(u), normalIndex0!.atUncheckedIndex(u + 1),\r\n normalIndex1!.atUncheckedIndex(u), normalIndex1!.atUncheckedIndex(u + 1));\r\n if (needParams)\r\n this.addIndexedQuadParamIndexes(\r\n paramIndex0!.atUncheckedIndex(u), paramIndex0!.atUncheckedIndex(u + 1),\r\n paramIndex1!.atUncheckedIndex(u), paramIndex1!.atUncheckedIndex(u + 1));\r\n this._polyface.terminateFacet();\r\n\r\n } else {\r\n this.addIndexedTrianglePointIndexes(\r\n xyzIndex0.atUncheckedIndex(u), xyzIndex0.atUncheckedIndex(u + 1),\r\n xyzIndex1.atUncheckedIndex(u), false);\r\n if (needNormals)\r\n this.addIndexedTriangleNormalIndexes(\r\n normalIndex0!.atUncheckedIndex(u), normalIndex0!.atUncheckedIndex(u + 1),\r\n normalIndex1!.atUncheckedIndex(u));\r\n if (needParams)\r\n this.addIndexedTriangleParamIndexes(\r\n paramIndex0!.atUncheckedIndex(u), paramIndex0!.atUncheckedIndex(u + 1),\r\n paramIndex1!.atUncheckedIndex(u));\r\n this._polyface.terminateFacet();\r\n\r\n this.addIndexedTrianglePointIndexes(\r\n xyzIndex1.atUncheckedIndex(u),\r\n xyzIndex0.atUncheckedIndex(u + 1),\r\n xyzIndex1.atUncheckedIndex(u + 1), false);\r\n if (needNormals)\r\n this.addIndexedTriangleNormalIndexes(\r\n normalIndex1!.atUncheckedIndex(u),\r\n normalIndex0!.atUncheckedIndex(u + 1),\r\n normalIndex1!.atUncheckedIndex(u + 1));\r\n if (needParams)\r\n this.addIndexedTriangleParamIndexes(\r\n paramIndex1!.atUncheckedIndex(u),\r\n paramIndex0!.atUncheckedIndex(u + 1),\r\n paramIndex1!.atUncheckedIndex(u + 1));\r\n this._polyface.terminateFacet();\r\n }\r\n }\r\n }\r\n indexSwap = xyzIndex1; xyzIndex1 = xyzIndex0; xyzIndex0 = indexSwap;\r\n if (needParams) {\r\n indexSwap = paramIndex1; paramIndex1 = paramIndex0; paramIndex0 = indexSwap;\r\n }\r\n if (needNormals) {\r\n indexSwap = normalIndex1; normalIndex1 = normalIndex0; normalIndex0 = indexSwap;\r\n }\r\n\r\n }\r\n xyzIndex0.clear();\r\n xyzIndex1.clear();\r\n }\r\n /**\r\n * Triangulate the points as viewed in xy.\r\n * @param points\r\n */\r\n public static pointsToTriangulatedPolyface(points: Point3d[]): IndexedPolyface | undefined {\r\n const graph = Triangulator.createTriangulatedGraphFromPoints(points);\r\n if (graph)\r\n return PolyfaceBuilder.graphToPolyface(graph);\r\n return undefined;\r\n }\r\n /** Create (and add to the builder) triangles that bridge the gap between two linestrings.\r\n * * Each triangle will have 1 vertex on one of the linestrings and 2 on the other\r\n * * Choice of triangles is heuristic, hence does not have a unique solution.\r\n * * Logic to choice among the various possible triangle orders prefers\r\n * * Make near-coplanar facets\r\n * * make facets with good aspect ratio.\r\n * * This is exercised with a limited number of lookahead points, i.e. greedy to make first-available decision.\r\n * @param pointsA points of first linestring.\r\n * @param pointsB points of second linestring.\r\n */\r\n public addGreedyTriangulationBetweenLineStrings(pointsA: Point3d[] | LineString3d | IndexedXYZCollection, pointsB: Point3d[] | LineString3d | IndexedXYZCollection) {\r\n const context = GreedyTriangulationBetweenLineStrings.createContext();\r\n context.emitTriangles(\r\n resolveToIndexedXYZCollectionOrCarrier(pointsA),\r\n resolveToIndexedXYZCollectionOrCarrier(pointsB),\r\n (triangle: BarycentricTriangle) => {\r\n this.addTriangleFacet(triangle.points);\r\n });\r\n }\r\n\r\n private addMiteredPipesFromPoints(centerline: IndexedXYZCollection, radius: number, numFacetAround: number = 12) {\r\n const sections = CurveFactory.createMiteredPipeSections(centerline, radius);\r\n const pointA0 = Point3d.create();\r\n const pointA1 = Point3d.create();\r\n const pointB0 = Point3d.create();\r\n const pointB1 = Point3d.create();\r\n if (numFacetAround < 3)\r\n numFacetAround = 3;\r\n const df = 1.0 / numFacetAround;\r\n for (let i = 1; i < sections.length; i++) {\r\n const arcA = sections[i - 1];\r\n const arcB = sections[i];\r\n arcA.fractionToPoint(0.0, pointA0);\r\n arcB.fractionToPoint(0.0, pointB0);\r\n for (let k = 1; k <= numFacetAround; k++, pointA0.setFromPoint3d(pointA1), pointB0.setFromPoint3d(pointB1)) {\r\n const f = k * df;\r\n arcA.fractionToPoint(f, pointA1);\r\n arcB.fractionToPoint(f, pointB1);\r\n this.addQuadFacet([pointA0, pointB0, pointB1, pointA1]);\r\n }\r\n }\r\n }\r\n public addMiteredPipes(centerline: IndexedXYZCollection | Point3d[] | CurvePrimitive, radius: number, numFacetAround: number = 12) {\r\n if (Array.isArray(centerline)) {\r\n this.addMiteredPipesFromPoints(new Point3dArrayCarrier(centerline), radius, numFacetAround);\r\n } else if (centerline instanceof GrowableXYZArray) {\r\n this.addMiteredPipesFromPoints(centerline, radius, numFacetAround);\r\n } else if (centerline instanceof IndexedXYZCollection) {\r\n this.addMiteredPipesFromPoints(centerline, radius, numFacetAround);\r\n } else if (centerline instanceof LineString3d) {\r\n this.addMiteredPipesFromPoints(centerline.packedPoints, radius, numFacetAround);\r\n } else if (centerline instanceof GeometryQuery) {\r\n const linestring = LineString3d.create();\r\n centerline.emitStrokes(linestring);\r\n this.addMiteredPipesFromPoints(linestring.packedPoints, radius, numFacetAround);\r\n }\r\n }\r\n}\r\n\r\nfunction resolveToIndexedXYZCollectionOrCarrier(points: Point3d[] | LineString3d | IndexedXYZCollection): IndexedXYZCollection {\r\n if (Array.isArray(points))\r\n return new Point3dArrayCarrier(points);\r\n if (points instanceof LineString3d)\r\n return points.packedPoints;\r\n return points;\r\n}\r\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PolyfaceClip.d.ts","sourceRoot":"","sources":["../../src/polyface/PolyfaceClip.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PolyfaceClip.js","sourceRoot":"","sources":["../../src/polyface/PolyfaceClip.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module Polyface\r\n */\r\n\r\n// import { Point2d } from \"./Geometry2d\";\r\n/* eslint-disable @typescript-eslint/naming-convention, no-empty */\r\nimport { ClipPlane } from \"../clipping/ClipPlane\";\r\nimport { ConvexClipPlaneSet } from \"../clipping/ConvexClipPlaneSet\";\r\nimport { UnionOfConvexClipPlaneSets } from \"../clipping/UnionOfConvexClipPlaneSets\";\r\nimport { AnyRegion } from \"../curve/CurveChain\";\r\nimport { LineString3d } from \"../curve/LineString3d\";\r\nimport { Loop } from \"../curve/Loop\";\r\nimport { RegionBinaryOpType, RegionOps } from \"../curve/RegionOps\";\r\nimport { UnionRegion } from \"../curve/UnionRegion\";\r\nimport { PlaneAltitudeEvaluator } from \"../Geometry\";\r\nimport { FrameBuilder } from \"../geometry3d/FrameBuilder\";\r\nimport { GrowableXYZArray } from \"../geometry3d/GrowableXYZArray\";\r\nimport { Point3d, Vector3d } from \"../geometry3d/Point3dVector3d\";\r\nimport { IndexedXYZCollectionPolygonOps, PolygonOps } from \"../geometry3d/PolygonOps\";\r\nimport { Range1d, Range2d, Range3d } from \"../geometry3d/Range\";\r\nimport { GrowableXYZArrayCache } from \"../geometry3d/ReusableObjectCache\";\r\nimport { Transform } from \"../geometry3d/Transform\";\r\nimport { SweepContour } from \"../solid/SweepContour\";\r\nimport { ChainMergeContext } from \"../topology/ChainMerge\";\r\nimport { RangeSearch } from \"./multiclip/RangeSearch\";\r\n// import { Point3d, Vector3d, Point2d } from \"./PointVector\";\r\nimport { IndexedPolyface, Polyface, PolyfaceVisitor } from \"./Polyface\";\r\nimport { PolyfaceBuilder } from \"./PolyfaceBuilder\";\r\nimport { PolyfaceQuery } from \"./PolyfaceQuery\";\r\n\r\n /**\r\n * carrier for a point array with an index into UnionOfConvexClipPlaneSets\r\n * @private\r\n */\r\n class ClipCandidate {\r\n public nextConvexSetIndex: number;\r\n public points: GrowableXYZArray;\r\n public constructor(points: GrowableXYZArray, nextConvexSetIndex: number) {\r\n this.nextConvexSetIndex = nextConvexSetIndex;\r\n this.points = points;\r\n }\r\n }\r\n\r\n/**\r\n * A pair of PolyfaceBuilder objects, for use by clippers that emit inside and outside parts.\r\n * * There are nominally 4 builders:\r\n * * builderA collects simple \"inside\" clip.\r\n * * builderB collects simple \"outside\" clip.\r\n * * builderA1 collects \"side\" clip for inside.\r\n * * builderB1 collets \"side\" clip for outside.\r\n * * `static ClippedPolyfaceBuilders.create(keepInside, keepOutside)` initializes `builderA` and `builderB` (each optionally to undefined), with undefined `builderA1` and `builderB1`\r\n * * `builders.enableSideBuilders()` makes `builderA1` and `builderB1` match `builderA` and `builderB`.\r\n * * construction methods aim their facets at appropriate builders if defined.\r\n * * @public\r\n */\r\nexport class ClippedPolyfaceBuilders {\r\n /** An available builder. Typically the \"inside\" parts */\r\n public builderA?: PolyfaceBuilder;\r\n /** An available builder. Typically the \"outside\" parts */\r\n public builderB?: PolyfaceBuilder;\r\n /** request to construct cut faces */\r\n public buildClosureFaces?: boolean;\r\n private constructor(builderA: PolyfaceBuilder | undefined, builderB: PolyfaceBuilder | undefined, buildClosureFaces: boolean = false) {\r\n this.builderA = builderA;\r\n this.builderB = builderB;\r\n this.buildClosureFaces = buildClosureFaces;\r\n }\r\n /** Simple create with default options on builder. */\r\n public static create(keepInside: boolean = true, keepOutside: boolean = false, buildSideFaces: boolean = false) {\r\n return new ClippedPolyfaceBuilders(keepInside ? PolyfaceBuilder.create() : undefined, keepOutside ? PolyfaceBuilder.create() : undefined, buildSideFaces);\r\n }\r\n\r\n public claimPolyface(selector: 0 | 1, fixup: boolean): IndexedPolyface | undefined {\r\n const builder = selector === 0 ? this.builderA : this.builderB;\r\n if (builder) {\r\n let polyface = builder.claimPolyface();\r\n if (fixup) {\r\n polyface = PolyfaceQuery.cloneWithTVertexFixup(polyface);\r\n }\r\n return polyface;\r\n }\r\n return undefined;\r\n }\r\n}\r\n/** PolyfaceClip is a static class gathering operations using Polyfaces and clippers.\r\n * @public\r\n */\r\nexport class PolyfaceClip {\r\n /** Clip each facet of polyface to the ClipPlane.\r\n * * Return all surviving clip as a new mesh.\r\n * * WARNING: The new mesh is \"points only\" -- parameters, normals, etc are not interpolated\r\n */\r\n public static clipPolyfaceClipPlaneWithClosureFace(polyface: Polyface, clipper: ClipPlane, insideClip: boolean = true, buildClosureFaces: boolean = true) {\r\n return this.clipPolyfaceClipPlane(polyface, clipper, insideClip, buildClosureFaces);\r\n }\r\n /** Clip each facet of polyface to the ClipPlane.\r\n * * Return all surviving clip as a new mesh.\r\n * * WARNING: The new mesh is \"points only\" -- parameters, normals, etc are not interpolated\r\n */\r\n public static clipPolyfaceClipPlane(polyface: Polyface, clipper: ClipPlane, insideClip: boolean = true, buildClosureFaces: boolean = false): Polyface {\r\n const builders = ClippedPolyfaceBuilders.create(insideClip, !insideClip, buildClosureFaces);\r\n this.clipPolyfaceInsideOutside(polyface, clipper, builders);\r\n return builders.claimPolyface(insideClip ? 0 : 1, true)!;\r\n }\r\n\r\n /** Clip each facet of polyface to the ClipPlane.\r\n * * Return surviving clip as a new mesh.\r\n * * WARNING: The new mesh is \"points only\".\r\n */\r\n public static clipPolyfaceConvexClipPlaneSet(polyface: Polyface, clipper: ConvexClipPlaneSet): Polyface {\r\n const visitor = polyface.createVisitor(0);\r\n const builder = PolyfaceBuilder.create();\r\n const work = new GrowableXYZArray(10);\r\n for (visitor.reset(); visitor.moveToNextFacet();) {\r\n clipper.clipConvexPolygonInPlace(visitor.point, work);\r\n if (visitor.point.length > 2)\r\n builder.addPolygonGrowableXYZArray(visitor.point);\r\n }\r\n return builder.claimPolyface(true);\r\n }\r\n\r\n /** Clip each facet of polyface to the the clippers.\r\n * * Add inside, outside fragments to builderA, builderB\r\n * * This does not consider params, normals, colors. Just points.\r\n * * outputSelect determines how the clip output is structured\r\n * * 0 outputs all shards -- this may have many interior edges.\r\n * * 1 stitches shards together to get cleaner facets.\r\n * @internal\r\n */\r\n public static clipPolyfaceUnionOfConvexClipPlaneSetsToBuilders(polyface: Polyface, allClippers: UnionOfConvexClipPlaneSets, destination: ClippedPolyfaceBuilders, outputSelector: number = 1) {\r\n const builderA = destination.builderA;\r\n const builderB = destination.builderB;\r\n const visitor = polyface.createVisitor(0);\r\n const cache = new GrowableXYZArrayCache();\r\n const insideShards: GrowableXYZArray[] = [];\r\n const outsideShards: GrowableXYZArray[] = [];\r\n const residualPolygons: ClipCandidate[] = [];\r\n let candidate: ClipCandidate | undefined;\r\n const outsideParts: GrowableXYZArray[] = [];\r\n\r\n const numConvexSet = allClippers.convexSets.length;\r\n for (visitor.reset(); visitor.moveToNextFacet();) {\r\n residualPolygons.push(new ClipCandidate(cache.grabAndFill(visitor.point), 0));\r\n while ((candidate = residualPolygons.pop()) !== undefined) {\r\n const convexSetIndex = candidate.nextConvexSetIndex;\r\n if (convexSetIndex >= numConvexSet) {\r\n // ths remnant polygon is OUT ...\r\n if (candidate.points.length > 2)\r\n outsideShards.push(candidate.points);\r\n } else {\r\n const clipper = allClippers.convexSets[convexSetIndex];\r\n outsideParts.length = 0; // NO NO -- why isn't it empty from prior step cleanup?\r\n const insidePart = clipper.clipInsidePushOutside(candidate.points, outsideParts, cache);\r\n if (insidePart) {\r\n if (insidePart.length > 2)\r\n insideShards.push(insidePart);\r\n // Keep outside parts active for clip by later facets . . .\r\n for (const outsidePolygon of outsideParts) {\r\n residualPolygons.push(new ClipCandidate(outsidePolygon, convexSetIndex + 1));\r\n }\r\n } else {\r\n // Nothing was insidePart. The outside parts might be split by intermediate steps -- but all the pieces are there.\r\n candidate.nextConvexSetIndex++;\r\n residualPolygons.push(candidate);\r\n }\r\n outsideParts.length = 0;\r\n }\r\n }\r\n if (outsideShards.length === 0) {\r\n builderA?.addPolygonGrowableXYZArray(visitor.point);\r\n } else if (insideShards.length === 0) {\r\n // the facet spanned clippers but is intact outside\r\n builderB?.addPolygonGrowableXYZArray(visitor.point);\r\n } else {\r\n const localToWorld = FrameBuilder.createRightHandedFrame(undefined, visitor.point);\r\n let worldToLocal: Transform | undefined;\r\n if (outputSelector === 1 && localToWorld !== undefined\r\n && undefined !== (worldToLocal = localToWorld.inverse())) {\r\n this.cleanupAndAddRegion(builderA, insideShards, worldToLocal, localToWorld);\r\n\r\n this.cleanupAndAddRegion(builderB, outsideShards, worldToLocal, localToWorld);\r\n } else {\r\n for (const shard of insideShards)\r\n this.addPolygonToBuilderAndDropToCache(shard, builderA, cache);\r\n for (const shard of outsideShards)\r\n this.addPolygonToBuilderAndDropToCache(shard, builderB, cache);\r\n }\r\n }\r\n outsideShards.length = 0;\r\n insideShards.length = 0;\r\n }\r\n cache.dropAllToCache(outsideParts);\r\n if (destination.buildClosureFaces) {\r\n for (const clipper of allClippers.convexSets) {\r\n this.buildClosureFacesForConvexSet(visitor, clipper, destination, cache);\r\n }\r\n }\r\n }\r\n private static addRegion(builder: PolyfaceBuilder | undefined, region: AnyRegion | undefined) {\r\n if (builder !== undefined && region !== undefined) {\r\n if (region instanceof Loop && region.children.length === 1 && region.children[0] instanceof LineString3d) {\r\n builder.addPolygonGrowableXYZArray(region.children[0].packedPoints);\r\n } else if (region instanceof UnionRegion) {\r\n for (const child of region.children)\r\n this.addRegion(builder, child);\r\n }\r\n }\r\n }\r\n // WARNING: shards are transformed into local system, not reverted!!!\r\n private static cleanupAndAddRegion(builder: PolyfaceBuilder | undefined, shards: GrowableXYZArray[],\r\n worldToLocal: Transform | undefined, localToWorld: Transform | undefined) {\r\n if (builder !== undefined && shards.length > 0) {\r\n if (worldToLocal)\r\n GrowableXYZArray.multiplyTransformInPlace(worldToLocal, shards);\r\n const outsidePieces = RegionOps.polygonBooleanXYToLoops(shards, RegionBinaryOpType.Union, []);\r\n if (outsidePieces && outsidePieces.children.length > 0){\r\n if (localToWorld)\r\n outsidePieces.tryTransformInPlace(localToWorld);\r\n RegionOps.consolidateAdjacentPrimitives(outsidePieces);\r\n this.addRegion(builder, outsidePieces);\r\n }\r\n }\r\n }\r\n private static addPolygonToBuilderAndDropToCache(polygon: GrowableXYZArray | undefined, builder: PolyfaceBuilder | undefined, cache: GrowableXYZArrayCache) {\r\n if (polygon) {\r\n if (builder)\r\n builder.addPolygonGrowableXYZArray(polygon);\r\n cache.dropToCache(polygon);\r\n }\r\n }\r\n private static addPolygonArrayToBuilderAndDropToCache(polygonArray: GrowableXYZArray[], builder: PolyfaceBuilder | undefined, cache: GrowableXYZArrayCache) {\r\n let polygon;\r\n while ((polygon = polygonArray.pop()) !== undefined) {\r\n this.addPolygonToBuilderAndDropToCache(polygon, builder, cache);\r\n }\r\n }\r\n private static createChainContextsForConvexClipPlaneSet(clipper: ConvexClipPlaneSet): ChainMergeContext[] {\r\n const chainContexts = [];\r\n for (const plane of clipper.planes) {\r\n if (!plane.interior) {\r\n const c = ChainMergeContext.create();\r\n c.plane = plane;\r\n c.convexClipper = clipper;\r\n chainContexts.push(c);\r\n }\r\n }\r\n return chainContexts;\r\n }\r\n\r\n /** Clip each facet of polyface to the the clippers.\r\n * * Add inside, outside fragments to builderA, builderB\r\n * * This does not consider params, normals, colors. Just points.\r\n * @internal\r\n */\r\n public static clipPolyfaceConvexClipPlaneSetToBuilders(polyface: Polyface, clipper: ConvexClipPlaneSet, destination: ClippedPolyfaceBuilders) {\r\n const builderA = destination.builderA;\r\n const builderB = destination.builderB;\r\n const visitor = polyface.createVisitor(0);\r\n const cache = new GrowableXYZArrayCache();\r\n const outsideParts: GrowableXYZArray[] = [];\r\n for (visitor.reset(); visitor.moveToNextFacet();) {\r\n // !!! currentCandidates and next candidates are empty at this point !!!\r\n const insidePart = clipper.clipInsidePushOutside(visitor.point, outsideParts, cache);\r\n if (insidePart === undefined) {\r\n // everything is out ... outsideParts might be fragmented. Save only the original polygon\r\n builderB?.addPolygonGrowableXYZArray(visitor.point);\r\n cache.dropToCache(insidePart);\r\n cache.dropAllToCache(outsideParts);\r\n }\r\n this.addPolygonToBuilderAndDropToCache(insidePart, builderA, cache);\r\n this.addPolygonArrayToBuilderAndDropToCache(outsideParts, builderB, cache);\r\n }\r\n this.buildClosureFacesForConvexSet(visitor, clipper, destination, cache);\r\n }\r\n /**\r\n *\r\n * @param visitor visitor for all facets of interest (entire polyface)\r\n * @param clipper ConvexClipPlaneSet to apply\r\n * @param destination builders to receive inside, outside parts\r\n * @param cache GrowableArray cache.\r\n */\r\n private static buildClosureFacesForConvexSet(visitor: PolyfaceVisitor, clipper: ConvexClipPlaneSet, destination: ClippedPolyfaceBuilders,\r\n cache: GrowableXYZArrayCache) {\r\n if (destination.buildClosureFaces) {\r\n const chainContexts = this.createChainContextsForConvexClipPlaneSet(clipper);\r\n const workPoints = cache.grabFromCache();\r\n const facetPoints = cache.grabFromCache();\r\n for (visitor.reset(); visitor.moveToNextFacet();) {\r\n for (const chainContext of chainContexts) {\r\n const plane = chainContext.plane;\r\n facetPoints.clear();\r\n facetPoints.pushFrom(visitor.point);\r\n IndexedXYZCollectionPolygonOps.clipConvexPolygonInPlace(plane!, facetPoints, workPoints);\r\n chainContext.addSegmentsOnPlane(facetPoints, true);\r\n }\r\n }\r\n cache.dropToCache(facetPoints);\r\n cache.dropToCache(workPoints);\r\n for (const chainContext of chainContexts) {\r\n this.addClosureFacets(chainContext, destination, cache);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param visitor visitor for all facets of interest (entire polyface)\r\n * @param clipper ConvexClipPlaneSet to apply\r\n * @param destination builders to receive inside, outside parts\r\n * @param cache GrowableArray cache.\r\n */\r\n private static buildClosureFacesForPlane(visitor: PolyfaceVisitor, plane: PlaneAltitudeEvaluator, destination: ClippedPolyfaceBuilders,\r\n cache: GrowableXYZArrayCache) {\r\n if (destination.buildClosureFaces) {\r\n const chainContext = ChainMergeContext.create();\r\n chainContext.plane = plane;\r\n const workPoints = cache.grabFromCache();\r\n const facetPoints = cache.grabFromCache();\r\n for (visitor.reset(); visitor.moveToNextFacet();) {\r\n facetPoints.clear();\r\n facetPoints.pushFrom(visitor.point);\r\n IndexedXYZCollectionPolygonOps.clipConvexPolygonInPlace(plane, facetPoints, workPoints);\r\n chainContext.addSegmentsOnPlane(facetPoints, true);\r\n }\r\n cache.dropToCache(facetPoints);\r\n cache.dropToCache(workPoints);\r\n this.addClosureFacets(chainContext, destination, cache);\r\n }\r\n }\r\n private static evaluateInwardPlaneNormal(plane: PlaneAltitudeEvaluator, scale: number): Vector3d {\r\n return Vector3d.create(plane.velocityXYZ(scale, 0, 0), plane.velocityXYZ(0, scale, 0), plane.velocityXYZ(0, 0, scale));\r\n }\r\n /**\r\n * * Triangulate the contour.\r\n * * Add all the triangles to both builders\r\n * * reversed in builderB.\r\n */\r\n private static addClippedContour(contour: SweepContour, clipper: ConvexClipPlaneSet | undefined, destination: ClippedPolyfaceBuilders, cache: GrowableXYZArrayCache) {\r\n const polygonA = cache.grabFromCache();\r\n const polygonB = cache.grabFromCache();\r\n if (destination.builderB)\r\n destination.builderB.toggleReversedFacetFlag();\r\n contour.announceFacets((facets: IndexedPolyface) => {\r\n const visitor = facets.createVisitor();\r\n // The contour facets are convex .. easy clip ..\r\n for (visitor.reset(); visitor.moveToNextFacet();) {\r\n polygonA.clear();\r\n polygonA.pushFromGrowableXYZArray(visitor.point);\r\n clipper?.clipConvexPolygonInPlace(polygonA, polygonB);\r\n if (polygonA.length > 2) {\r\n destination.builderA?.addPolygonGrowableXYZArray(polygonA);\r\n destination.builderB?.addPolygonGrowableXYZArray(polygonA);\r\n }\r\n }\r\n }, undefined);\r\n if (destination.builderB)\r\n destination.builderB.toggleReversedFacetFlag();\r\n cache.dropToCache(polygonA);\r\n cache.dropToCache(polygonB);\r\n }\r\n\r\n /**\r\n * Gather loops out of the ChainMergeContext. Add to destination arrays.\r\n * @param chainContext ASSUMED TO HAVE A PLANE\r\n * @param destination\r\n */\r\n private static addClosureFacets(chainContext: ChainMergeContext, destination: ClippedPolyfaceBuilders, cache: GrowableXYZArrayCache) {\r\n const clipper = chainContext.convexClipper;\r\n const plane = chainContext.plane!;\r\n const outwardNormal = this.evaluateInwardPlaneNormal(plane, -1.0);\r\n chainContext.clusterAndMergeVerticesXYZ();\r\n const loops = chainContext.collectMaximalGrowableXYZArrays();\r\n if (loops.length > 1) {\r\n const loopSets = PolygonOps.sortOuterAndHoleLoopsXY(loops);\r\n for (const loopSet of loopSets) {\r\n PolygonOps.orientLoopsCCWForOutwardNormalInPlace(loopSet, outwardNormal);\r\n const contour = SweepContour.createForPolygon(loopSet, outwardNormal);\r\n if (contour !== undefined) {\r\n if (clipper) {\r\n this.addClippedContour(contour, clipper, destination, cache);\r\n } else {\r\n if (destination.builderA)\r\n contour.emitFacets(destination.builderA, true, clipper);\r\n if (destination.builderB)\r\n contour.emitFacets(destination.builderB, false, clipper);\r\n }\r\n }\r\n }\r\n } else {\r\n PolygonOps.orientLoopsCCWForOutwardNormalInPlace(loops, outwardNormal);\r\n const contour = SweepContour.createForPolygon(loops, outwardNormal);\r\n if (contour !== undefined) {\r\n if (clipper) {\r\n this.addClippedContour(contour, clipper, destination, cache);\r\n } else {\r\n if (destination.builderA)\r\n contour.emitFacets(destination.builderA, true, clipper);\r\n if (destination.builderB)\r\n contour.emitFacets(destination.builderB, false, clipper);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** Clip each facet of polyface to the the clippers.\r\n * * Add inside, outside fragments to builderA, builderB\r\n * * This does not consider params, normals, colors. Just points.\r\n * @internal\r\n */\r\n public static clipPolyfaceClipPlaneToBuilders(polyface: Polyface, clipper: PlaneAltitudeEvaluator, destination: ClippedPolyfaceBuilders) {\r\n const builderA = destination.builderA;\r\n const builderB = destination.builderB;\r\n const visitor = polyface.createVisitor(0);\r\n const cache = new GrowableXYZArrayCache();\r\n const inside = cache.grabFromCache();\r\n const outside = cache.grabFromCache();\r\n const range = Range1d.createNull();\r\n for (visitor.reset(); visitor.moveToNextFacet();) {\r\n // !!! currentCandidates and next candidates are empty at this point !!!\r\n IndexedXYZCollectionPolygonOps.splitConvexPolygonInsideOutsidePlane(clipper, visitor.point, inside, outside, range);\r\n if (builderA)\r\n builderA.addPolygonGrowableXYZArray(inside);\r\n if (builderB)\r\n builderB.addPolygonGrowableXYZArray(outside);\r\n }\r\n this.buildClosureFacesForPlane(visitor, clipper, destination, cache);\r\n cache.dropToCache(inside);\r\n cache.dropToCache(outside);\r\n }\r\n\r\n /** Clip each facet of polyface to the ClipPlane or ConvexClipPlaneSet\r\n * * accumulate inside and outside facets -- to destination.builderA and destination.builderB\r\n * * if `destination.buildClosureFaces` is set, and also build closure facets\r\n * * This method parses the variant input types and calls a more specific method.\r\n * * WARNING: The new mesh is \"points only\".\r\n * * outputSelect applies only for UnionOfConvexClipPlaneSets -- see [[PolyfaceClip.clipPolyfaceUnionOfConvexClipPlaneSetsToBuilders]]\r\n */\r\n public static clipPolyfaceInsideOutside(polyface: Polyface, clipper: ClipPlane | ConvexClipPlaneSet | UnionOfConvexClipPlaneSets, destination: ClippedPolyfaceBuilders,\r\n outputSelect: number = 0) {\r\n if (clipper instanceof ClipPlane) {\r\n this.clipPolyfaceClipPlaneToBuilders(polyface, clipper, destination);\r\n } else if (clipper instanceof ConvexClipPlaneSet) {\r\n this.clipPolyfaceConvexClipPlaneSetToBuilders(polyface, clipper, destination);\r\n } else if (clipper instanceof UnionOfConvexClipPlaneSets) {\r\n this.clipPolyfaceUnionOfConvexClipPlaneSetsToBuilders(polyface, clipper, destination, outputSelect);\r\n }\r\n }\r\n /** Clip each facet of polyface to the ClipPlane or ConvexClipPlaneSet\r\n * * This method parses the variant input types and calls a more specific method.\r\n * * To get both inside and outside parts, use clipPolyfaceInsideOutside\r\n * * WARNING: The new mesh is \"points only\".\r\n */\r\n public static clipPolyface(polyface: Polyface, clipper: ClipPlane | ConvexClipPlaneSet): Polyface | undefined {\r\n if (clipper instanceof ClipPlane)\r\n return this.clipPolyfaceClipPlane(polyface, clipper);\r\n if (clipper instanceof ConvexClipPlaneSet)\r\n return this.clipPolyfaceConvexClipPlaneSet(polyface, clipper);\r\n // (The if tests exhaust the type space -- this line is unreachable.)\r\n return undefined;\r\n }\r\n /** Find consecutive points around a polygon (with implied closure edge) that are ON a plane\r\n * @param points array of points around polygon. Closure edge is implied.\r\n * @param chainContext context receiving edges\r\n * @param point0 work point\r\n * @param point1 work point\r\n */\r\n private static collectEdgesOnPlane(points: GrowableXYZArray, clipper: ClipPlane, chainContext: ChainMergeContext, point0: Point3d, point1: Point3d) {\r\n const n = points.length;\r\n if (n > 1) {\r\n points.getPoint3dAtUncheckedPointIndex(n - 1, point0);\r\n for (let i = 0; i < n; i++) {\r\n points.getPoint3dAtUncheckedPointIndex(i, point1);\r\n if (clipper.isPointOn(point0) && clipper.isPointOn(point1))\r\n chainContext.addSegment(point0, point1);\r\n point0.setFromPoint3d(point1);\r\n }\r\n }\r\n }\r\n /** Intersect each facet with the clip plane. (Producing intersection edges.)\r\n * * Return all edges chained as array of LineString3d.\r\n */\r\n public static sectionPolyfaceClipPlane(polyface: Polyface, clipper: ClipPlane): LineString3d[] {\r\n const chainContext = ChainMergeContext.create();\r\n\r\n const visitor = polyface.createVisitor(0);\r\n const work = new GrowableXYZArray(10);\r\n const point0 = Point3d.create();\r\n const point1 = Point3d.create();\r\n for (visitor.reset(); visitor.moveToNextFacet();) {\r\n clipper.clipConvexPolygonInPlace(visitor.point, work, true);\r\n this.collectEdgesOnPlane(visitor.point, clipper, chainContext, point0, point1);\r\n }\r\n chainContext.clusterAndMergeVerticesXYZ();\r\n return chainContext.collectMaximalChains();\r\n }\r\n\r\n /**\r\n * * Split facets of mesh \"A\" into parts that are\r\n * * under mesh \"B\"\r\n * * over mesh \"B\"\r\n * * both meshes are represented by visitors rather than the meshes themselves\r\n * * If the data in-hand is a mesh, call with `mesh.createVisitor`\r\n * * The respective clip parts are fed to caller-supplied builders.\r\n * * Caller may set either or both builders to toggle facet order (e.g. toggle the lower facets to make them \"point down\" in cut-fill application)\r\n * * This step is commonly one-half of \"cut fill\".\r\n * * A \"cut fill\" wrapper will call this twice with the visitor and builder roles reversed.\r\n * * Both polyfaces are assumed convex with CCW orientation viewed from above.\r\n * @param visitorA iterator over polyface to be split.\r\n * @param visitorB iterator over polyface that acts as a splitter\r\n * @param orientUnderMeshDownward if true, the \"meshAUnderB\" output is oriented with its normals reversed so it can act as the bottom side of a cut-fill pair.\r\n */\r\n public static clipPolyfaceUnderOverConvexPolyfaceIntoBuilders(visitorA: PolyfaceVisitor, visitorB: PolyfaceVisitor,\r\n builderAUnderB: PolyfaceBuilder | undefined,\r\n builderAOverB: PolyfaceBuilder | undefined) {\r\n const rangeDataA = PolyfaceQuery.collectRangeLengthData(visitorA);\r\n const searchA = RangeSearch.create2dSearcherForRangeLengthData<number>(rangeDataA);\r\n if (!searchA)\r\n return;\r\n const range = Range3d.create();\r\n for (visitorA.reset(); visitorA.moveToNextFacet();) {\r\n visitorA.point.setRange(range);\r\n searchA.addRange(range, visitorA.currentReadIndex());\r\n }\r\n const xyClip = new GrowableXYZArray(10);\r\n const workArray = new GrowableXYZArray(10);\r\n const xyFrustum = ConvexClipPlaneSet.createEmpty();\r\n const below = new GrowableXYZArray(10);\r\n const above = new GrowableXYZArray(10);\r\n const planeOfFacet = ClipPlane.createNormalAndPointXYZXYZ(0, 0, 1, 0, 0, 0)!;\r\n const altitudeRange = Range1d.createNull();\r\n\r\n for (visitorB.reset(); visitorB.moveToNextFacet();) {\r\n visitorB.point.setRange(range);\r\n ConvexClipPlaneSet.setPlaneAndXYLoopCCW(visitorB.point, planeOfFacet, xyFrustum);\r\n searchA.searchRange2d(range, (_rangeA: Range2d, readIndexA: number) => {\r\n visitorA.moveToReadIndex(readIndexA);\r\n xyFrustum.polygonClip(visitorA.point, xyClip, workArray);\r\n // builderAOverB.addPolygonGrowableXYZArray(xyClip);\r\n if (xyClip.length > 0) {\r\n // planeOfFacet.convexPolygonSplitInsideOutsideGrowableArrays(xyClip, below, above, altitudeRange);\r\n IndexedXYZCollectionPolygonOps.splitConvexPolygonInsideOutsidePlane(planeOfFacet, xyClip, below, above, altitudeRange);\r\n if (below.length > 0 && builderAUnderB)\r\n builderAUnderB.addPolygonGrowableXYZArray(below);\r\n if (above.length > 0 && builderAOverB)\r\n builderAOverB.addPolygonGrowableXYZArray(above);\r\n }\r\n return true;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * * Split facets into vertically overlapping sections\r\n * * both meshes are represented by visitors rather than the meshes themselves\r\n * * If the data in-hand is a mesh, call with `mesh.createVisitor`\r\n * * The respective clip parts are returned as separate meshes.\r\n * * Caller may set either or both builders to toggle facet order (e.g. toggle the lower facets to make them \"point down\" in cut-fill application)\r\n * * Both polyfaces are assumed convex with CCW orientation viewed from above.\r\n * * Each output contains some facets from meshA and some from meshB:\r\n * * meshAUnderB -- areas where meshA is underneath mesh B.\r\n * * If A is \"design surface\" and B is existing DTM, this is \"cut\" volume\r\n * * meshAOverB -- areas where meshB is over meshB.\r\n * * If A is \"design surface\" and B is existing DTM, this is \"fill\" volume\r\n *\r\n * @param visitorA iterator over polyface to be split.\r\n * @param visitorB iterator over polyface that acts as a splitter\r\n * @param orientUnderMeshDownward if true, the \"meshAUnderB\" output is oriented with its normals reversed so it can act as the bottom side of a cut-fill pair.\r\n */\r\n public static computeCutFill(meshA: IndexedPolyface, meshB: IndexedPolyface): { meshAUnderB: IndexedPolyface, meshAOverB: IndexedPolyface } {\r\n const visitorA = meshA.createVisitor();\r\n const visitorB = meshB.createVisitor();\r\n const builderAUnderB = PolyfaceBuilder.create();\r\n const builderAOverB = PolyfaceBuilder.create();\r\n builderAUnderB.toggleReversedFacetFlag();\r\n this.clipPolyfaceUnderOverConvexPolyfaceIntoBuilders(visitorA, visitorB, builderAUnderB, builderAOverB);\r\n builderAUnderB.toggleReversedFacetFlag();\r\n builderAOverB.toggleReversedFacetFlag();\r\n this.clipPolyfaceUnderOverConvexPolyfaceIntoBuilders(visitorB, visitorA, builderAOverB, builderAUnderB);\r\n return {\r\n meshAUnderB: builderAUnderB.claimPolyface(),\r\n meshAOverB: builderAOverB.claimPolyface(),\r\n };\r\n }\r\n}\r\n"]}
|