@mlightcad/data-model 1.7.18 → 1.7.19

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.
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var fn=(i=>(i[i.Invalid=-9999]="Invalid",i[i.Start=0]="Start",i[i.Text=1]="Text",i[i.AttributeTag=2]="AttributeTag",i[i.BlockName=2]="BlockName",i[i.ShapeName=2]="ShapeName",i[i.SymbolTableName=2]="SymbolTableName",i[i.SymbolTableRecordName=2]="SymbolTableRecordName",i[i.MlineStyleName=2]="MlineStyleName",i[i.AttributePrompt=3]="AttributePrompt",i[i.Description=3]="Description",i[i.DimPostString=3]="DimPostString",i[i.DimStyleName=3]="DimStyleName",i[i.LinetypeProse=3]="LinetypeProse",i[i.TextFontFile=3]="TextFontFile",i[i.CLShapeName=4]="CLShapeName",i[i.DimensionAlternativePrefixSuffix=4]="DimensionAlternativePrefixSuffix",i[i.SymbolTableRecordComments=4]="SymbolTableRecordComments",i[i.TextBigFontFile=4]="TextBigFontFile",i[i.Handle=5]="Handle",i[i.DimensionBlock=5]="DimensionBlock",i[i.LinetypeName=6]="LinetypeName",i[i.DimBlk1=6]="DimBlk1",i[i.TextStyleName=7]="TextStyleName",i[i.DimBlk2=7]="DimBlk2",i[i.LayerName=8]="LayerName",i[i.CLShapeText=9]="CLShapeText",i[i.XCoordinate=10]="XCoordinate",i[i.YCoordinate=20]="YCoordinate",i[i.ZCoordinate=30]="ZCoordinate",i[i.Real=40]="Real",i[i.TxtSize=40]="TxtSize",i[i.ViewportHeight=40]="ViewportHeight",i[i.Angle=50]="Angle",i[i.ViewportSnapAngle=50]="ViewportSnapAngle",i[i.Visibility=60]="Visibility",i[i.Int16=70]="Int16",i[i.Int32=90]="Int32",i[i.Int64=160]="Int64",i[i.Int8=280]="Int8",i[i.Thickness=39]="Thickness",i[i.Elevation=38]="Elevation",i[i.LinetypeScale=48]="LinetypeScale",i[i.DashLength=49]="DashLength",i[i.MlineOffset=49]="MlineOffset",i[i.LinetypeElement=49]="LinetypeElement",i[i.NormalX=210]="NormalX",i[i.NormalY=220]="NormalY",i[i.NormalZ=230]="NormalZ",i[i.UcsOrg=110]="UcsOrg",i[i.UcsOrientationX=111]="UcsOrientationX",i[i.UcsOrientationY=112]="UcsOrientationY",i[i.ViewHeight=45]="ViewHeight",i[i.ViewWidth=41]="ViewWidth",i[i.ViewLensLength=42]="ViewLensLength",i[i.ViewFrontClip=43]="ViewFrontClip",i[i.ViewBackClip=44]="ViewBackClip",i[i.ViewBrightness=141]="ViewBrightness",i[i.ViewContrast=142]="ViewContrast",i[i.ViewMode=71]="ViewMode",i[i.ViewportActive=68]="ViewportActive",i[i.ViewportAspect=41]="ViewportAspect",i[i.ViewportGrid=76]="ViewportGrid",i[i.ViewportIcon=74]="ViewportIcon",i[i.ViewportNumber=69]="ViewportNumber",i[i.ViewportSnap=75]="ViewportSnap",i[i.ViewportSnapPair=78]="ViewportSnapPair",i[i.ViewportSnapStyle=77]="ViewportSnapStyle",i[i.ViewportTwist=51]="ViewportTwist",i[i.ViewportVisibility=67]="ViewportVisibility",i[i.ViewportZoom=73]="ViewportZoom",i[i.Color=62]="Color",i[i.ColorRgb=420]="ColorRgb",i[i.ColorName=430]="ColorName",i[i.LineWeight=370]="LineWeight",i[i.PlotStyleNameType=380]="PlotStyleNameType",i[i.PlotStyleNameId=390]="PlotStyleNameId",i[i.GradientObjType=450]="GradientObjType",i[i.GradientAngle=460]="GradientAngle",i[i.GradientName=470]="GradientName",i[i.GradientColCount=453]="GradientColCount",i[i.GradientPatType=451]="GradientPatType",i[i.GradientTintType=452]="GradientTintType",i[i.GradientShift=461]="GradientShift",i[i.GradientColVal=463]="GradientColVal",i[i.GradientTintVal=462]="GradientTintVal",i[i.SoftPointerId=330]="SoftPointerId",i[i.HardPointerId=340]="HardPointerId",i[i.SoftOwnershipId=350]="SoftOwnershipId",i[i.HardOwnershipId=360]="HardOwnershipId",i[i.ArbitraryHandle=320]="ArbitraryHandle",i[i.ExtendedDataAsciiString=1e3]="ExtendedDataAsciiString",i[i.ExtendedDataRegAppName=1001]="ExtendedDataRegAppName",i[i.ExtendedDataControlString=1002]="ExtendedDataControlString",i[i.ExtendedDataLayerName=1003]="ExtendedDataLayerName",i[i.ExtendedDataBinaryChunk=1004]="ExtendedDataBinaryChunk",i[i.ExtendedDataHandle=1005]="ExtendedDataHandle",i[i.ExtendedDataXCoordinate=1010]="ExtendedDataXCoordinate",i[i.ExtendedDataWorldXCoordinate=1011]="ExtendedDataWorldXCoordinate",i[i.ExtendedDataWorldXDisp=1012]="ExtendedDataWorldXDisp",i[i.ExtendedDataWorldXDir=1013]="ExtendedDataWorldXDir",i[i.ExtendedDataYCoordinate=1020]="ExtendedDataYCoordinate",i[i.ExtendedDataWorldYCoordinate=1021]="ExtendedDataWorldYCoordinate",i[i.ExtendedDataWorldYDisp=1022]="ExtendedDataWorldYDisp",i[i.ExtendedDataWorldYDir=1023]="ExtendedDataWorldYDir",i[i.ExtendedDataZCoordinate=1030]="ExtendedDataZCoordinate",i[i.ExtendedDataWorldZCoordinate=1031]="ExtendedDataWorldZCoordinate",i[i.ExtendedDataWorldZDisp=1032]="ExtendedDataWorldZDisp",i[i.ExtendedDataWorldZDir=1033]="ExtendedDataWorldZDir",i[i.ExtendedDataReal=1040]="ExtendedDataReal",i[i.ExtendedDataDist=1041]="ExtendedDataDist",i[i.ExtendedDataScale=1042]="ExtendedDataScale",i[i.ExtendedDataInteger16=1070]="ExtendedDataInteger16",i[i.ExtendedDataInteger32=1071]="ExtendedDataInteger32",i[i.XTextString=300]="XTextString",i[i.XReal=140]="XReal",i[i.XInt16=170]="XInt16",i[i.XXInt16=270]="XXInt16",i[i.Subclass=100]="Subclass",i[i.ControlString=102]="ControlString",i[i.EmbeddedObjectStart=101]="EmbeddedObjectStart",i[i.End=-1]="End",i[i.FirstEntityId=-2]="FirstEntityId",i[i.HeaderId=-2]="HeaderId",i[i.XDataStart=-3]="XDataStart",i[i.Operator=-4]="Operator",i[i.PReactors=-5]="PReactors",i[i.XDictionary=-6]="XDictionary",i))(fn||{});const Cr=[{name:"AC1.2",value:1},{name:"AC1.40",value:2},{name:"AC1.50",value:3},{name:"AC2.20",value:4},{name:"AC2.10",value:5},{name:"AC2.21",value:6},{name:"AC2.22",value:7},{name:"AC1001",value:8},{name:"AC1002",value:9},{name:"AC1003",value:10},{name:"AC1004",value:11},{name:"AC1005",value:12},{name:"AC1006",value:13},{name:"AC1007",value:14},{name:"AC1008",value:15},{name:"AC1009",value:16},{name:"AC1010",value:17},{name:"AC1011",value:18},{name:"AC1012",value:19},{name:"AC1013",value:20},{name:"AC1014",value:21},{name:"AC1500",value:22},{name:"AC1015",value:23},{name:"AC1800a",value:24},{name:"AC1018",value:25},{name:"AC2100a",value:26},{name:"AC1021",value:27},{name:"AC2400a",value:28},{name:"AC1024",value:29},{name:"AC1027",value:31},{name:"AC3200a",value:32},{name:"AC1032",value:33}];class At{constructor(t){if(typeof t=="string"){const e=Cr.find(s=>s.name===t);if(!e)throw new Error(`Unknown DWG version name: ${t}`);this.name=e.name,this.value=e.value;return}if(typeof t=="number"){const e=Cr.find(s=>s.value===t);if(!e)throw new Error(`Unknown DWG version value: ${t}`);this.name=e.name,this.value=e.value;return}throw new Error("Invalid constructor argument for AcDbDwgVersion")}}class sa{constructor(t={}){this._database=t.database,this._precision=Math.max(0,Math.min(16,t.precision??16)),this._version=t.version instanceof At?t.version:t.version!=null?new At(t.version):void 0,this._lines=[],this._handleMap=new Map,this._nextHandle=1}get database(){return this._database}set database(t){this._database=t}get precision(){return this._precision}setPrecision(t){return this._precision=Math.max(0,Math.min(16,t)),this}get version(){return this._version}get nextHandle(){return this._nextHandle}setVersion(t){return this._version=t instanceof At?t:new At(t),this}toString(){return this._lines.join(`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var En=(i=>(i[i.Invalid=-9999]="Invalid",i[i.Start=0]="Start",i[i.Text=1]="Text",i[i.AttributeTag=2]="AttributeTag",i[i.BlockName=2]="BlockName",i[i.ShapeName=2]="ShapeName",i[i.SymbolTableName=2]="SymbolTableName",i[i.SymbolTableRecordName=2]="SymbolTableRecordName",i[i.MlineStyleName=2]="MlineStyleName",i[i.AttributePrompt=3]="AttributePrompt",i[i.Description=3]="Description",i[i.DimPostString=3]="DimPostString",i[i.DimStyleName=3]="DimStyleName",i[i.LinetypeProse=3]="LinetypeProse",i[i.TextFontFile=3]="TextFontFile",i[i.CLShapeName=4]="CLShapeName",i[i.DimensionAlternativePrefixSuffix=4]="DimensionAlternativePrefixSuffix",i[i.SymbolTableRecordComments=4]="SymbolTableRecordComments",i[i.TextBigFontFile=4]="TextBigFontFile",i[i.Handle=5]="Handle",i[i.DimensionBlock=5]="DimensionBlock",i[i.LinetypeName=6]="LinetypeName",i[i.DimBlk1=6]="DimBlk1",i[i.TextStyleName=7]="TextStyleName",i[i.DimBlk2=7]="DimBlk2",i[i.LayerName=8]="LayerName",i[i.CLShapeText=9]="CLShapeText",i[i.XCoordinate=10]="XCoordinate",i[i.YCoordinate=20]="YCoordinate",i[i.ZCoordinate=30]="ZCoordinate",i[i.Real=40]="Real",i[i.TxtSize=40]="TxtSize",i[i.ViewportHeight=40]="ViewportHeight",i[i.Angle=50]="Angle",i[i.ViewportSnapAngle=50]="ViewportSnapAngle",i[i.Visibility=60]="Visibility",i[i.Int16=70]="Int16",i[i.Int32=90]="Int32",i[i.Int64=160]="Int64",i[i.Int8=280]="Int8",i[i.Thickness=39]="Thickness",i[i.Elevation=38]="Elevation",i[i.LinetypeScale=48]="LinetypeScale",i[i.DashLength=49]="DashLength",i[i.MlineOffset=49]="MlineOffset",i[i.LinetypeElement=49]="LinetypeElement",i[i.NormalX=210]="NormalX",i[i.NormalY=220]="NormalY",i[i.NormalZ=230]="NormalZ",i[i.UcsOrg=110]="UcsOrg",i[i.UcsOrientationX=111]="UcsOrientationX",i[i.UcsOrientationY=112]="UcsOrientationY",i[i.ViewHeight=45]="ViewHeight",i[i.ViewWidth=41]="ViewWidth",i[i.ViewLensLength=42]="ViewLensLength",i[i.ViewFrontClip=43]="ViewFrontClip",i[i.ViewBackClip=44]="ViewBackClip",i[i.ViewBrightness=141]="ViewBrightness",i[i.ViewContrast=142]="ViewContrast",i[i.ViewMode=71]="ViewMode",i[i.ViewportActive=68]="ViewportActive",i[i.ViewportAspect=41]="ViewportAspect",i[i.ViewportGrid=76]="ViewportGrid",i[i.ViewportIcon=74]="ViewportIcon",i[i.ViewportNumber=69]="ViewportNumber",i[i.ViewportSnap=75]="ViewportSnap",i[i.ViewportSnapPair=78]="ViewportSnapPair",i[i.ViewportSnapStyle=77]="ViewportSnapStyle",i[i.ViewportTwist=51]="ViewportTwist",i[i.ViewportVisibility=67]="ViewportVisibility",i[i.ViewportZoom=73]="ViewportZoom",i[i.Color=62]="Color",i[i.ColorRgb=420]="ColorRgb",i[i.ColorName=430]="ColorName",i[i.LineWeight=370]="LineWeight",i[i.PlotStyleNameType=380]="PlotStyleNameType",i[i.PlotStyleNameId=390]="PlotStyleNameId",i[i.GradientObjType=450]="GradientObjType",i[i.GradientAngle=460]="GradientAngle",i[i.GradientName=470]="GradientName",i[i.GradientColCount=453]="GradientColCount",i[i.GradientPatType=451]="GradientPatType",i[i.GradientTintType=452]="GradientTintType",i[i.GradientShift=461]="GradientShift",i[i.GradientColVal=463]="GradientColVal",i[i.GradientTintVal=462]="GradientTintVal",i[i.SoftPointerId=330]="SoftPointerId",i[i.HardPointerId=340]="HardPointerId",i[i.SoftOwnershipId=350]="SoftOwnershipId",i[i.HardOwnershipId=360]="HardOwnershipId",i[i.ArbitraryHandle=320]="ArbitraryHandle",i[i.ExtendedDataAsciiString=1e3]="ExtendedDataAsciiString",i[i.ExtendedDataRegAppName=1001]="ExtendedDataRegAppName",i[i.ExtendedDataControlString=1002]="ExtendedDataControlString",i[i.ExtendedDataLayerName=1003]="ExtendedDataLayerName",i[i.ExtendedDataBinaryChunk=1004]="ExtendedDataBinaryChunk",i[i.ExtendedDataHandle=1005]="ExtendedDataHandle",i[i.ExtendedDataXCoordinate=1010]="ExtendedDataXCoordinate",i[i.ExtendedDataWorldXCoordinate=1011]="ExtendedDataWorldXCoordinate",i[i.ExtendedDataWorldXDisp=1012]="ExtendedDataWorldXDisp",i[i.ExtendedDataWorldXDir=1013]="ExtendedDataWorldXDir",i[i.ExtendedDataYCoordinate=1020]="ExtendedDataYCoordinate",i[i.ExtendedDataWorldYCoordinate=1021]="ExtendedDataWorldYCoordinate",i[i.ExtendedDataWorldYDisp=1022]="ExtendedDataWorldYDisp",i[i.ExtendedDataWorldYDir=1023]="ExtendedDataWorldYDir",i[i.ExtendedDataZCoordinate=1030]="ExtendedDataZCoordinate",i[i.ExtendedDataWorldZCoordinate=1031]="ExtendedDataWorldZCoordinate",i[i.ExtendedDataWorldZDisp=1032]="ExtendedDataWorldZDisp",i[i.ExtendedDataWorldZDir=1033]="ExtendedDataWorldZDir",i[i.ExtendedDataReal=1040]="ExtendedDataReal",i[i.ExtendedDataDist=1041]="ExtendedDataDist",i[i.ExtendedDataScale=1042]="ExtendedDataScale",i[i.ExtendedDataInteger16=1070]="ExtendedDataInteger16",i[i.ExtendedDataInteger32=1071]="ExtendedDataInteger32",i[i.XTextString=300]="XTextString",i[i.XReal=140]="XReal",i[i.XInt16=170]="XInt16",i[i.XXInt16=270]="XXInt16",i[i.Subclass=100]="Subclass",i[i.ControlString=102]="ControlString",i[i.EmbeddedObjectStart=101]="EmbeddedObjectStart",i[i.End=-1]="End",i[i.FirstEntityId=-2]="FirstEntityId",i[i.HeaderId=-2]="HeaderId",i[i.XDataStart=-3]="XDataStart",i[i.Operator=-4]="Operator",i[i.PReactors=-5]="PReactors",i[i.XDictionary=-6]="XDictionary",i))(En||{});const Br=[{name:"AC1.2",value:1},{name:"AC1.40",value:2},{name:"AC1.50",value:3},{name:"AC2.20",value:4},{name:"AC2.10",value:5},{name:"AC2.21",value:6},{name:"AC2.22",value:7},{name:"AC1001",value:8},{name:"AC1002",value:9},{name:"AC1003",value:10},{name:"AC1004",value:11},{name:"AC1005",value:12},{name:"AC1006",value:13},{name:"AC1007",value:14},{name:"AC1008",value:15},{name:"AC1009",value:16},{name:"AC1010",value:17},{name:"AC1011",value:18},{name:"AC1012",value:19},{name:"AC1013",value:20},{name:"AC1014",value:21},{name:"AC1500",value:22},{name:"AC1015",value:23},{name:"AC1800a",value:24},{name:"AC1018",value:25},{name:"AC2100a",value:26},{name:"AC1021",value:27},{name:"AC2400a",value:28},{name:"AC1024",value:29},{name:"AC1027",value:31},{name:"AC3200a",value:32},{name:"AC1032",value:33}];class At{constructor(t){if(typeof t=="string"){const e=Br.find(s=>s.name===t);if(!e)throw new Error(`Unknown DWG version name: ${t}`);this.name=e.name,this.value=e.value;return}if(typeof t=="number"){const e=Br.find(s=>s.value===t);if(!e)throw new Error(`Unknown DWG version value: ${t}`);this.name=e.name,this.value=e.value;return}throw new Error("Invalid constructor argument for AcDbDwgVersion")}}class ia{constructor(t={}){this._database=t.database,this._precision=Math.max(0,Math.min(16,t.precision??16)),this._version=t.version instanceof At?t.version:t.version!=null?new At(t.version):void 0,this._lines=[],this._handleMap=new Map,this._nextHandle=1}get database(){return this._database}set database(t){this._database=t}get precision(){return this._precision}setPrecision(t){return this._precision=Math.max(0,Math.min(16,t)),this}get version(){return this._version}get nextHandle(){return this._nextHandle}setVersion(t){return this._version=t instanceof At?t:new At(t),this}toString(){return this._lines.join(`
2
2
  `)+`
3
- `}registerHandle(t){return this._handleMap.has(t)||(/^[0-9A-F]+$/i.test(t)?this._handleMap.set(t,t.toUpperCase()):(this._handleMap.set(t,this._nextHandle.toString(16).toUpperCase()),this._nextHandle+=1)),this._handleMap.get(t)}resolveHandle(t){if(t)return this.registerHandle(t)}writeGroup(t,e){if(e==null)return this;this._lines.push(String(Math.trunc(t)));const s=this.formatValue(e);return this._lines.push(s===""?"0":s),this}writeStart(t){return this.writeString(0,t)}writeSubclassMarker(t){return this.writeString(100,t)}writeString(t,e){return!e&&e!==""?this:this.writeGroup(t,e)}writeInt8(t,e){return e==null?this:this.writeGroup(t,Math.trunc(e))}writeInt16(t,e){return e==null?this:this.writeGroup(t,Math.trunc(e))}writeInt32(t,e){return e==null?this:this.writeGroup(t,Math.trunc(e))}writeInt64(t,e){return e==null?this:this.writeGroup(t,Math.trunc(e))}writeUInt16(t,e){return e==null?this:this.writeGroup(t,Math.max(0,e))}writeUInt32(t,e){return e==null?this:this.writeGroup(t,Math.max(0,e))}writeBoolean(t,e){return e==null?this:this.writeGroup(t,e?1:0)}writeBool(t,e){return this.writeBoolean(t,e)}writeDouble(t,e){return e==null||!Number.isFinite(e)?this:this.writeGroup(t,e)}writeAngle(t,e){return e==null||!Number.isFinite(e)?this:this.writeDouble(t,e*180/Math.PI)}writeHandle(t,e){const s=this.resolveHandle(e);return s?this.writeString(t,s):this}writeObjectId(t,e){return this.writeHandle(t,e)}writePoint2d(t,e){return e?(this.writeDouble(t,e.x),this.writeDouble(t+10,e.y),this):this}writePoint3d(t,e){return e?(this.writeDouble(t,e.x),this.writeDouble(t+10,e.y),this.writeDouble(t+20,e.z??0),this):this}writeVector3d(t,e){return e?(this.writeDouble(t,e.x),this.writeDouble(t+10,e.y),this.writeDouble(t+20,e.z??0),this):this}writeCmColor(t,e=62,s=420){if(!t)return this;const n=t.colorIndex;n!=null&&this.writeInt16(e,n);const r=t.RGB;return r!=null&&t.colorIndex==null&&this.writeInt32(s,r),this}writeTransparency(t,e=440){return t?this.writeInt32(e,t.serialize()):this}writeResultBuffer(t){if(!t)return this;for(const e of t)this.writeGroup(e.code,e.value);return this}startSection(t){return this.writeStart("SECTION"),this.writeString(2,t),this}endSection(){return this.writeStart("ENDSEC"),this}startTable(t){return this.writeStart("TABLE"),this.writeString(2,t),this}endTable(){return this.writeStart("ENDTAB"),this}formatValue(t){if(typeof t=="string")return this.sanitizeStringForDxfLine(t);if(typeof t=="boolean")return t?"1":"0";if(typeof t=="number"){if(!Number.isFinite(t))return"0";if(Number.isInteger(t))return String(t);const s=t.toFixed(this._precision).replace(/\.?0+$/,"");return s===""||s==="-"?"0":s}return String(t)}sanitizeStringForDxfLine(t){return t.replace(/\r\n|\r|\n/g," ").replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g,"")}}function rl(i,t){for(var e=0;e<t.length;e++){const s=t[e];if(typeof s!="string"&&!Array.isArray(s)){for(const n in s)if(n!=="default"&&!(n in i)){const r=Object.getOwnPropertyDescriptor(s,n);r&&Object.defineProperty(i,n,r.get?r:{enumerable:!0,get:()=>s[n]})}}}return Object.freeze(Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}))}var S=(i=>(i[i.ByColor=1]="ByColor",i[i.ByACI=2]="ByACI",i[i.ByLayer=3]="ByLayer",i[i.ByBlock=4]="ByBlock",i[i.None=0]="None",i))(S||{});const Br={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Yi=[0,16711680,16776960,65280,65535,255,16711935,16777215,8421504,12632256,16711680,16744319,13369344,13395558,10027008,10046540,8323072,8339263,4980736,4990502,16727808,16752511,13382400,13401958,10036736,10051404,8331008,8343359,4985600,4992806,16744192,16760703,13395456,13408614,10046464,10056268,8339200,8347455,4990464,4995366,16760576,16768895,13408512,13415014,10056192,10061132,8347392,8351551,4995328,4997670,16776960,16777087,13421568,13421670,10000384,10000460,8355584,8355647,5000192,5000230,12582656,14679935,10079232,11717734,7510016,8755276,6258432,7307071,3755008,4344870,8388352,12582783,6736896,10079334,5019648,7510092,4161280,6258495,2509824,3755046,4194048,10485631,3394560,8375398,2529280,6264908,2064128,5209919,1264640,3099686,65280,8388479,52224,6736998,38912,5019724,32512,4161343,19456,2509862,65343,8388511,52275,6737023,38950,5019743,32543,4161359,19475,2509871,65407,8388543,52326,6737049,38988,5019762,32575,4161375,19494,2509881,65471,8388575,52377,6737074,39026,5019781,32607,4161391,19513,2509890,65535,8388607,52428,6737100,39064,5019800,32639,4161407,19532,2509900,49151,8380415,39372,6730444,29336,5014936,24447,4157311,14668,2507340,32767,8372223,26316,6724044,19608,5010072,16255,4153215,9804,2505036,16383,8364031,13260,6717388,9880,5005208,8063,4149119,4940,2502476,255,8355839,204,6710988,152,5000344,127,4145023,76,2500172,4129023,10452991,3342540,8349388,2490520,6245528,2031743,5193599,1245260,3089996,8323327,12550143,6684876,10053324,4980888,7490712,4128895,6242175,2490444,3745356,12517631,14647295,10027212,11691724,7471256,8735896,6226047,7290751,3735628,4335180,16711935,16744447,13369548,13395660,9961624,9981080,8323199,8339327,4980812,4990540,16711871,16744415,13369497,13395634,9961586,9981061,8323167,8339311,4980793,4990530,16711807,16744383,13369446,13395609,9961548,9981042,8323135,8339295,4980774,4990521,16711743,16744351,13369395,13395583,9961510,9981023,8323103,8339279,4980755,4990511,3355443,5987163,8684676,11382189,14079702,16777215,0];let le=class{static getColorByIndex(t){return Yi[t]}static getIndexByColor(t){const e=Yi.length-1;for(let s=1;s<e;++s)if(Yi[s]===t)return s}static getColorByName(t){return Br[t.toLowerCase()]}static getNameByColor(t){for(const[e,s]of Object.entries(Br))if(s===t)return e}static getNameByIndex(t){const e=this.getColorByIndex(t);return this.getNameByColor(e)}},tt=class ee{constructor(t=S.ByLayer,e){this._colorMethod=t,this._colorMethod==S.ByColor&&e==null?this._value=16777215:this._colorMethod==S.ByACI?e==null?this._value=8:e===0?this._colorMethod=S.ByBlock:e===256?this._colorMethod=S.ByLayer:this._value=Math.max(0,Math.min(e,256)):this._value=e}get colorMethod(){return this._colorMethod}set colorMethod(t){this._colorMethod=t}get red(){const t=this.RGB;return t!=null?t>>16&255:void 0}get green(){const t=this.RGB;return t!=null?t>>8&255:void 0}get blue(){const t=this.RGB;return t!=null?t&255:void 0}get RGB(){switch(this._colorMethod){case S.ByColor:case S.ByBlock:case S.ByLayer:return this._value;case S.ByACI:return this._value?le.getColorByIndex(this._value):this._value;default:return}}setRGB(t,e,s){const n=Math.max(0,Math.min(255,Math.round(t))),r=Math.max(0,Math.min(255,Math.round(e))),a=Math.max(0,Math.min(255,Math.round(s)));return this._value=n<<16|r<<8|a,this._colorMethod=S.ByColor,this}setRGBValue(t){return t==null||!Number.isFinite(t)?this:(this._value=t&16777215,this._colorMethod=S.ByColor,this)}setRGBFromCss(t){if(!t)return this;const e=t.trim().toLowerCase();if(e.startsWith("#")){let r=0,a=0,o=0;if(e.length===7)r=parseInt(e.substr(1,2),16),a=parseInt(e.substr(3,2),16),o=parseInt(e.substr(5,2),16);else if(e.length===4)r=parseInt(e[1]+e[1],16),a=parseInt(e[2]+e[2],16),o=parseInt(e[3]+e[3],16);else return this;return this.setRGB(r,a,o)}const s=e.match(/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);if(s){const r=parseInt(s[1],10),a=parseInt(s[2],10),o=parseInt(s[3],10);return this.setRGB(r,a,o)}const n=le.getColorByName(t);return n!==void 0?this.setRGBValue(n):this}setScalar(t){return this.setRGB(t,t,t)}get hexColor(){const t=this.RGB;return t==null?void 0:"0x"+t.toString(16).padStart(6,"0").toUpperCase()}get cssColor(){const t=this.RGB;if(t!=null)return`rgb(${t>>16&255},${t>>8&255},${t&255})`}cssColorAlpha(t){const e=this.RGB;if(e!=null)return`rgba(${e>>16&255},${e>>8&255},${e&255},${t})`}get colorIndex(){return this._colorMethod===S.ByACI?this._value:this._colorMethod===S.ByLayer?256:this._colorMethod===S.ByBlock?0:void 0}set colorIndex(t){if(t==null)return;const e=Math.max(0,Math.min(256,Math.round(t)));e===0?(this._colorMethod=S.ByBlock,this._value=void 0):e===256?(this._colorMethod=S.ByLayer,this._value=void 0):(this._colorMethod=S.ByACI,this._value=e)}get isByColor(){return this._colorMethod===S.ByColor}get isByACI(){return this._colorMethod===S.ByACI}get isForeground(){return this._colorMethod===S.ByACI&&this._value===7}setForeground(){return this._colorMethod=S.ByACI,this._value=7,this}get isByLayer(){return this._colorMethod===S.ByLayer}setByLayer(t){return this._colorMethod=S.ByLayer,t==null?this._value=256:this._value=t,this}get isByBlock(){return this._colorMethod===S.ByBlock}setByBlock(t){return this._colorMethod=S.ByBlock,t==null?this._value=0:this._value=t,this}get colorName(){switch(this._colorMethod){case S.ByLayer:return"ByLayer";case S.ByBlock:return"ByBlock";case S.ByColor:return this._value?le.getNameByColor(this._value):"";case S.ByACI:return this._value?le.getNameByIndex(this._value):"";default:return}}set colorName(t){if(!t)return;const e=le.getColorByName(t);e!==void 0&&(this._value=e,this._colorMethod=S.ByColor)}clone(){const t=new ee;return t._colorMethod=this._colorMethod,t._value=this._value,t}copy(t){return this._colorMethod=t._colorMethod,this._value=t._value,this}equals(t){return this._colorMethod===t._colorMethod&&this._value===t._value}toString(){switch(this._colorMethod){case S.ByLayer:return"ByLayer";case S.ByBlock:return"ByBlock";case S.ByACI:return this._value!==void 0?String(this._value):"";case S.ByColor:return this._value?`${this.red},${this.green},${this.blue}`:"";default:return""}}static fromString(t){if(!t)return;const e=t.trim();if(/^bylayer$/i.test(e))return new ee(S.ByLayer);if(/^byblock$/i.test(e))return new ee(S.ByBlock);const s=e.match(/^rgb\s*:\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})$/i);if(s){const r=Number(s[1]),a=Number(s[2]),o=Number(s[3]),l=new ee(S.ByColor);return l.setRGB(r,a,o),l}if(/^\d{1,3},\d{1,3},\d{1,3}$/.test(e)){const[r,a,o]=e.split(",").map(Number),l=new ee(S.ByColor);return l.setRGB(r,a,o),l}if(/^\d+$/.test(e)){const r=parseInt(e,10);return new ee(S.ByACI,r)}if(/^book\$/i.test(e)){const r=e.substring(e.indexOf("$")+1),a=le.getColorByName(r);return a!=null?new ee(S.ByColor,a):void 0}const n=le.getColorByName(e);if(n!=null)return new ee(S.ByColor,n)}};class al{constructor(t=S.ByColor,e=0){this._colorMethod=t,this._value=e}get colorMethd(){return this._colorMethod}get red(){return this._value>>16&255}set red(t){this._colorMethod=S.ByColor,this._value=this._value&65535|(t&255)<<16}get green(){return this._value>>8&255}set green(t){this._colorMethod=S.ByColor,this._value=this._value&16711935|(t&255)<<8}get blue(){return this._value&255}set blue(t){this._colorMethod=S.ByColor,this._value=this._value&16776960|t&255}setRGB(t,e,s){this._colorMethod=S.ByColor,this._value=(t&255)<<16|(e&255)<<8|s&255}get colorIndex(){return this._value}set colorIndex(t){this._colorMethod=S.ByACI,this._value=t}get layerIndex(){return this._value}set layerIndex(t){this._colorMethod=S.ByLayer,this._value=t}isByColor(){return this._colorMethod===S.ByColor}isByLayer(){return this._colorMethod===S.ByLayer}isByBlock(){return this._colorMethod===S.ByBlock}isByACI(){return this._colorMethod===S.ByACI}isNone(){return this._colorMethod===S.None}get rawValue(){return this._value}set rawValue(t){this._value=t}}const yt={get ILLEGAL_PARAMETERS(){return new ReferenceError("Illegal Parameters")},get ZERO_DIVISION(){return new Error("Zero division")},get UNRESOLVED_BOUNDARY_CONFLICT(){return new Error("Unresolved boundary conflict in boolean operation")},get INFINITE_LOOP(){return new Error("Infinite loop")},get CANNOT_INVOKE_ABSTRACT_METHOD(){return new Error("Abstract method cannot be invoked")},get OPERATION_IS_NOT_SUPPORTED(){return new Error("Operation is not supported")},get NOT_IMPLEMENTED(){return new Error("Not implemented yet")}};let ol=class{constructor(){this._listeners={}}addEventListener(t,e){this._listeners===void 0&&(this._listeners={});const s=this._listeners;s[t]===void 0&&(s[t]=[]),s[t].indexOf(e)===-1&&s[t].push(e)}hasEventListener(t,e){if(this._listeners===void 0)return!1;const s=this._listeners;return s[t]!==void 0&&s[t].indexOf(e)!==-1}removeEventListener(t,e){if(this._listeners===void 0)return;const s=this._listeners[t];if(s!==void 0){const n=s.indexOf(e);n!==-1&&s.splice(n,1)}}dispatchEvent(t){if(this._listeners===void 0)return;const e=this._listeners[t.type];if(e!==void 0){t.target=this;const s=e.slice(0);for(let n=0,r=s.length;n<r;n++)s[n].call(this,t)}}},q=class{constructor(){this.listeners=[]}addEventListener(t){this.listeners.push(t)}removeEventListener(t){this.listeners=this.listeners.filter(e=>e!==t)}replaceEventListener(t){this.removeEventListener(t),this.addEventListener(t)}dispatch(t,...e){for(const s of this.listeners)s.call(null,t,...e)}};function ws(i){return i===null||typeof i!="object"?i:Array.isArray(i)?[...i]:{...i}}function on(i){if(i===null||typeof i!="object")return i;if(i instanceof Date)return new Date(i.getTime());if(i instanceof RegExp)return new RegExp(i.source,i.flags);if(Array.isArray(i))return i.map(on);const t={};for(const e in i)Object.prototype.hasOwnProperty.call(i,e)&&(t[e]=on(i[e]));return t}function zs(i,...t){for(const e of t)if(e)for(const s in e)Object.prototype.hasOwnProperty.call(e,s)&&i[s]===void 0&&(i[s]=e[s]);return i}function ia(i,t){return i!=null&&Object.prototype.hasOwnProperty.call(i,t)}function na(i){return i==null?!0:Array.isArray(i)||typeof i=="string"?i.length===0:i instanceof Map||i instanceof Set?i.size===0:typeof i=="object"?Object.keys(i).length===0:!1}function Ye(i,t){if(i===t)return!0;if(i==null||t==null)return i===t;if(typeof i!=typeof t)return!1;if(typeof i!="object")return i===t;if(Array.isArray(i)!==Array.isArray(t))return!1;if(Array.isArray(i)){if(i.length!==t.length)return!1;for(let n=0;n<i.length;n++)if(!Ye(i[n],t[n]))return!1;return!0}const e=Object.keys(i),s=Object.keys(t);if(e.length!==s.length)return!1;for(const n of e)if(!Object.prototype.hasOwnProperty.call(t,n)||!Ye(i[n],t[n]))return!1;return!0}var hl=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ll(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var ra={exports:{}};(function(i){(function(t,e){i.exports?i.exports=e():t.log=e()})(hl,function(){var t=function(){},e="undefined",s=typeof window!==e&&typeof window.navigator!==e&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"],r={},a=null;function o(y,w){var b=y[w];if(typeof b.bind=="function")return b.bind(y);try{return Function.prototype.bind.call(b,y)}catch{return function(){return Function.prototype.apply.apply(b,[y,arguments])}}}function l(){console.log&&(console.log.apply||Function.prototype.apply.apply(console.log,[console,arguments]))}function c(y){return y==="debug"&&(y="log"),typeof console===e?!1:y==="trace"&&s?l:console[y]!==void 0?o(console,y):console.log!==void 0?o(console,"log"):t}function d(){for(var y=this.getLevel(),w=0;w<n.length;w++){var b=n[w];this[b]=w<y?t:this.methodFactory(b,y,this.name)}if(this.log=this.debug,typeof console===e&&y<this.levels.SILENT)return"No console available for logging"}function u(y){return function(){typeof console!==e&&(d.call(this),this[y].apply(this,arguments))}}function g(y,w,b){return c(y)||u.apply(this,arguments)}function p(y,w){var b=this,E,I,T,A="loglevel";typeof y=="string"?A+=":"+y:typeof y=="symbol"&&(A=void 0);function W(F){var H=(n[F]||"silent").toUpperCase();if(!(typeof window===e||!A)){try{window.localStorage[A]=H;return}catch{}try{window.document.cookie=encodeURIComponent(A)+"="+H+";"}catch{}}}function M(){var F;if(!(typeof window===e||!A)){try{F=window.localStorage[A]}catch{}if(typeof F===e)try{var H=window.document.cookie,_e=encodeURIComponent(A),we=H.indexOf(_e+"=");we!==-1&&(F=/^([^;]+)/.exec(H.slice(we+_e.length+1))[1])}catch{}return b.levels[F]===void 0&&(F=void 0),F}}function Y(){if(!(typeof window===e||!A)){try{window.localStorage.removeItem(A)}catch{}try{window.document.cookie=encodeURIComponent(A)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function B(F){var H=F;if(typeof H=="string"&&b.levels[H.toUpperCase()]!==void 0&&(H=b.levels[H.toUpperCase()]),typeof H=="number"&&H>=0&&H<=b.levels.SILENT)return H;throw new TypeError("log.setLevel() called with invalid level: "+F)}b.name=y,b.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},b.methodFactory=w||g,b.getLevel=function(){return T??I??E},b.setLevel=function(F,H){return T=B(F),H!==!1&&W(T),d.call(b)},b.setDefaultLevel=function(F){I=B(F),M()||b.setLevel(F,!1)},b.resetLevel=function(){T=null,Y(),d.call(b)},b.enableAll=function(F){b.setLevel(b.levels.TRACE,F)},b.disableAll=function(F){b.setLevel(b.levels.SILENT,F)},b.rebuild=function(){if(a!==b&&(E=B(a.getLevel())),d.call(b),a===b)for(var F in r)r[F].rebuild()},E=B(a?a.getLevel():"WARN");var et=M();et!=null&&(T=B(et)),d.call(b)}a=new p,a.getLogger=function(y){if(typeof y!="symbol"&&typeof y!="string"||y==="")throw new TypeError("You must supply a name when creating a logger.");var w=r[y];return w||(w=r[y]=new p(y,a.methodFactory)),w};var m=typeof window!==e?window.log:void 0;return a.noConflict=function(){return typeof window!==e&&window.log===a&&(window.log=m),a},a.getLoggers=function(){return r},a.default=a,a})})(ra);var aa=ra.exports;const cl=ll(aa),dl=rl({__proto__:null,default:cl},[aa]),ul=!0,bs=dl;bs.setLevel("debug");const pl=i=>{try{bs.setLevel(i)}catch(t){bs.setLevel("error"),bs.error(t)}};let oa=class ha{constructor(t,e){this.events={attrChanged:new q,modelChanged:new q},this._changing=!1,this._previousAttributes={},this._pending=!1;const s=t||{};e&&zs(s,e),this.attributes=s,this.changed={}}get(t){return this.attributes[t]}set(t,e,s){if(t==null)return this;let n;typeof t=="object"?(n=t,s=e):(n={},n[t]=e),s||(s={});const r=s.unset,a=s.silent,o=[],l=this._changing;this._changing=!0,l||(this._previousAttributes=ws(this.attributes),this.changed={});const c=this.attributes,d=this.changed,u=this._previousAttributes;for(const g in n)e=n[g],Ye(c[g],e)||o.push(g),Ye(u[g],e)?delete d[g]:d[g]=e,r?delete c[g]:c[g]=e;if(!a){o.length&&(this._pending=s);for(let g=0;g<o.length;g++)this.events.attrChanged.dispatch({object:this,attrName:o[g],attrValue:c[o[g]],options:s})}if(l)return this;if(!a)for(;this._pending;)s=this._pending,this._pending=!1,this.events.modelChanged.dispatch({object:this,options:s});return this._pending=!1,this._changing=!1,this}has(t){return this.get(t)!=null}hasChanged(t){return t==null?!na(this.changed):ia(this.changed,t)}changedAttributes(t){if(!t)return this.hasChanged()?ws(this.changed):{};const e=this._changing?this._previousAttributes:this.attributes,s={};for(const n in t){const r=t[n];Ye(e[n],r)||(s[n]=r)}return s}previous(t){return t==null||!this._previousAttributes?null:this._previousAttributes[t]}previousAttributes(){return ws(this._previousAttributes)}clone(){const t=ws(this.attributes);return new ha(t)}},In=class xs{constructor(){this.entries=new Map}static getInstance(){return xs.instance||(xs.instance=new xs),xs.instance}collect(t){this.entries.set(t.name,t)}printAll(){for(const[t,e]of this.entries);}clear(){this.entries.clear()}getAll(){return Array.from(this.entries.values())}getEntry(t){return this.entries.get(t)}remove(t){return this.entries.delete(t)}};class gl{static formatBytes(t,e=2){if(t===0)return"0 B";const s=1024,n=Math.max(0,e),r=["B","KB","MB","GB","TB"],a=Math.floor(Math.log(t)/Math.log(s)),o=t/Math.pow(s,a);return`${parseFloat(o.toFixed(n))} ${r[a]}`}}var ut=(i=>(i[i.ByLayer=0]="ByLayer",i[i.ByBlock=1]="ByBlock",i[i.ByAlpha=2]="ByAlpha",i[i.ErrorValue=3]="ErrorValue",i))(ut||{});let Gi=class Nt{constructor(t){t!==void 0?(this._method=ut.ByAlpha,this._alpha=Nt.clampAlpha(t)):(this._method=ut.ByLayer,this._alpha=255)}get method(){return this._method}set method(t){this._method=t}get alpha(){return this._alpha}set alpha(t){this._alpha=Nt.clampAlpha(t),this._method=ut.ByAlpha}get percentage(){if(this._method===ut.ByAlpha)return Math.round((1-this._alpha/255)*100)}set percentage(t){const e=Math.max(0,Math.min(100,t)),s=Math.round(255*(1-e/100));this.alpha=s}static clampAlpha(t){return Math.max(0,Math.min(255,Math.floor(t)))}get isByAlpha(){return this._method===ut.ByAlpha}get isByBlock(){return this._method===ut.ByBlock}get isByLayer(){return this._method===ut.ByLayer}get isClear(){return this.isByAlpha&&this._alpha===0}get isSolid(){return this.isByAlpha&&this._alpha===255}get isInvalid(){return this._method===ut.ErrorValue}serialize(){return this._method<<24|this._alpha}clone(){const t=new Nt;return t._method=this._method,t._alpha=this._alpha,t}equals(t){return this._method===t._method&&this._alpha===t._alpha}toString(){return this.isByLayer?"ByLayer":this.isByBlock?"ByBlock":this._alpha.toString()}static fromString(t){const e=t.trim();if(/^bylayer$/i.test(e)){const r=new Nt;return r._method=ut.ByLayer,r}if(/^byblock$/i.test(e)){const r=new Nt;return r._method=ut.ByBlock,r}const s=Number(e);if(Number.isInteger(s)&&s>=0&&s<=255)return new Nt(s);const n=new Nt;return n._method=ut.ErrorValue,n}static deserialize(t){const e=t>>>24&255,s=t&255,n=Object.values(ut)[e]??ut.ErrorValue,r=new Nt;return r._method=n,r._alpha=Nt.clampAlpha(s),r}};class la{constructor(t){this.name=t}run(t){throw new Error("run() must be implemented by subclass")}}class ca{constructor(){this.tasks=[],this.onProgress=()=>{},this.onComplete=()=>{},this.onError=()=>!1}scheduleTask(t){return new Promise((e,s)=>{const n=()=>{Promise.resolve(t()).then(e).catch(s)};typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(n):setTimeout(n,0)})}addTask(t){this.tasks.push(t)}setProgressCallback(t){this.onProgress=t}setCompleteCallback(t){this.onComplete=t}setErrorCallback(t){this.onError=t}async run(t){const e=this.tasks.length;let s=t;for(let n=0;n<e;n++){const r=this.tasks[n];try{s=await this.scheduleTask(async()=>{const a=await r.run(s);return this.onProgress((n+1)/e,r),a})}catch(a){if(this.onError({error:a,taskIndex:n,task:r}))return Promise.reject(a)}}this.onComplete(s)}}let da=class{constructor(t,e,s){this.isLoading=!1,this.itemsLoaded=0,this.itemsTotal=0,this.urlModifier=void 0,this.handlers=[],this.onStart=void 0,this.onLoad=t,this.onProgress=e,this.onError=s}itemStart(t){this.itemsTotal++,this.isLoading===!1&&this.onStart!==void 0&&this.onStart(t,this.itemsLoaded,this.itemsTotal),this.isLoading=!0}itemEnd(t){this.itemsLoaded++,this.onProgress!==void 0&&this.onProgress(t,this.itemsLoaded,this.itemsTotal),this.itemsLoaded===this.itemsTotal&&(this.isLoading=!1,this.onLoad!==void 0&&this.onLoad())}itemError(t){this.onError!==void 0&&this.onError(t)}resolveURL(t){return this.urlModifier?this.urlModifier(t):t}setURLModifier(t){return this.urlModifier=t,this}addHandler(t,e){return this.handlers.push(t,e),this}removeHandler(t){const e=this.handlers.indexOf(t);return e!==-1&&this.handlers.splice(e,2),this}getHandler(t){for(let e=0,s=this.handlers.length;e<s;e+=2){const n=this.handlers[e],r=this.handlers[e+1];if(n.global&&(n.lastIndex=0),n.test(t))return r}return null}};const ua=new da;class ml{constructor(t){this.manager=t!==void 0?t:ua,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}loadAsync(t,e){return new Promise((s,n)=>{this.load(t,s,e,n)})}parse(t){}setCrossOrigin(t){return this.crossOrigin=t,this}setWithCredentials(t){return this.withCredentials=t,this}setPath(t){return this.path=t,this}setResourcePath(t){return this.resourcePath=t,this}setRequestHeader(t){return this.requestHeader=t,this}}var Re=256,pa=[],Fr=256,Qs;for(;Re--;)pa[Re]=(Re+256).toString(16).substring(1);function yl(i){var t=0,e=11;if(!Qs||Re+e>Fr*2)for(Qs="",Re=0;t<Fr;t++)Qs+=pa[Math.random()*256|0];return Qs.substring(Re,Re+++e)}const ni="TEMP_";let hn;function ga(i){hn=i}class re{constructor(t,e){if(t=t||{},this._attrs=new oa(t,e),this._xDataMap=new Map,!this._attrs.get("objectId"))try{this._attrs.set("objectId",this.database.generateHandle())}catch{this._attrs.set("objectId",this.generateTemporaryHandle())}}generateTemporaryHandle(){return ni+yl()}get attrs(){return this._attrs}getAttr(t){const e=this._attrs.get(t);if(e===void 0)throw new Error(`[AcDbObject] Attribute name '${t}' does't exist in this object!`);return e}getAttrWithoutException(t){return this._attrs.get(t)}setAttr(t,e){this._attrs.set(t,e)}get objectId(){return this.getAttr("objectId")}set objectId(t){this._attrs.set("objectId",t),t&&!t.startsWith(ni)&&this.database.updateMaxHandle(t)}get isTemp(){const t=this.getAttrWithoutException("objectId");return!!t&&t.startsWith(ni)}get ownerId(){return this.getAttr("ownerId")}set ownerId(t){this._attrs.set("ownerId",t)}get extensionDictionary(){return this.getAttrWithoutException("extensionDictionary")}set extensionDictionary(t){this._attrs.set("extensionDictionary",t)}get database(){if(this._database)return this._database;if(hn)return hn().workingDatabase;throw new Error("The current working database must be set before using it!")}set database(t){this._database=t}getXData(t){return this._xDataMap.get(t)}setXData(t){for(const e of t)e.code===fn.ExtendedDataRegAppName&&this._xDataMap.set(e.value,t)}removeXData(t){this._xDataMap.delete(t)}createExtensionDictionary(){}close(){}dxfOut(...t){const[e,s=!1]=t;if(e.writeHandle(5,this.objectId),e.writeObjectId(330,this.ownerId),e.writeObjectId(360,this.extensionDictionary),this.dxfOutFields(e),s)for(const n of this._xDataMap.values())e.writeResultBuffer(n);return this}dxfOutFields(t){return this}}let ln;function ma(i){ln=i}function Pn(){return pi.instance}const Di=class Di{constructor(){this._workingDatabase=null}get workingDatabase(){if(this._workingDatabase==null)throw new Error("The current working database must be set before using it!");return this._workingDatabase}set workingDatabase(t){this._workingDatabase=t}get layoutManager(){if(!this._layoutManager){if(!ln)throw new Error("The layout manager factory must be registered before using it!");this._layoutManager=ln()}return this._layoutManager}};Di.instance=new Di;let pi=Di;ga(Pn);var ya=(i=>(i.kForRead="kForRead",i.kForWrite="kForWrite",i))(ya||{});class En{constructor(t){if(this._values=[],t)for(const e of t)this._values.push({...e})}get length(){return this._values.length}at(t){return this._values[t]}add(t){this._values.push(t)}addRange(t){for(const e of t)this._values.push(e)}clear(){this._values.length=0}toArray(){return this._values.map(t=>({...t}))}clone(){return new En(this._values)}[Symbol.iterator](){return this._values[Symbol.iterator]()}}class Sn{constructor(t,e,s){this._chunkSize=-1,this._minimumChunkSize=50,this._count=t,this._numerOfChunk=e<1?1:e,this._minimumChunkSize=s,this.calculateChunkSize()}get count(){return this._count}get numerOfChunk(){return this._numerOfChunk}get minimumChunkSize(){return this._minimumChunkSize}set minimumChunkSize(t){this._minimumChunkSize=t,this.calculateChunkSize()}get chunkSize(){return this._chunkSize}calculateChunkSize(){let t=this._count/this._numerOfChunk;t<this._minimumChunkSize&&(t=Math.min(this._minimumChunkSize,this._count)),this._chunkSize=t<1?this._count:Math.floor(t)}scheduleTask(t){return new Promise((e,s)=>{const n=()=>{Promise.resolve(t()).then(e).catch(s)};typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(n):setTimeout(n,0)})}async processChunk(t,e){if(this._count<=0){await(e==null?void 0:e());return}let s=0;const n=async()=>{const r=s,a=Math.min(s+this._chunkSize,this._count);await t(r,a),s=a,s<this._count&&await this.scheduleTask(n)};await n(),await(e==null?void 0:e())}}var fs=(i=>(i.DXF="dxf",i.DWG="dwg",i))(fs||{});class Ct{constructor(){this.events={registered:new q,unregistered:new q},this._converters=new Map,this.register("dxf",new il)}static createInstance(){return Ct._instance==null&&(Ct._instance=new Ct),this._instance}static get instance(){return Ct._instance||(Ct._instance=new Ct),Ct._instance}get fileTypes(){return this._converters.keys()}register(t,e){this._converters.set(t,e),this.events.registered.dispatch({fileType:t,converter:e})}get(t){return this._converters.get(t)}unregister(t){const e=this._converters.get(t);e&&(this._converters.delete(t),this.events.unregistered.dispatch({fileType:t,converter:e}))}}var An=(i=>(i[i.DecimalDegrees=0]="DecimalDegrees",i[i.DegreesMinutesSeconds=1]="DegreesMinutesSeconds",i[i.Gradians=2]="Gradians",i[i.Radians=3]="Radians",i[i.SurveyorsUnits=4]="SurveyorsUnits",i))(An||{});class Je{static get instance(){return this._instance||(this._instance=new Je),this._instance}constructor(){this._blocks=new Map}createKey(t,e){return`${t}_${e}`}set(t,e){return e=e.fastDeepClone(),this._blocks.set(t,e),e}get(t){let e=this._blocks.get(t);return e&&(e=e.fastDeepClone()),e}has(t){return this._blocks.has(t)}clear(){this._blocks.clear()}draw(t,e,s,n=[],r=!0,a,o){const l=[];if(e!=null){const c=this.createKey(e.name,s);let d;if(this.has(c))d=this.get(c);else{const u=e.newIterator();for(const g of u)g.color.isByBlock&&s?(Rr.copy(g.color),g.color.setRGBValue(s),this.addEntity(g,l,t),g.color.copy(Rr)):this.addEntity(g,l,t);d=t.group(l),d&&r&&Z.name&&!Z.name.startsWith("*U")&&this.set(c,d)}return d&&a&&(d.applyMatrix(a),o&&(o.x!=0||o.y!=0||o.z!=1)&&(a.setFromExtrusionDirection(o),d.applyMatrix(a))),d&&n&&n.length>0&&(d.bakeTransformToChildren(),n.forEach(u=>d.addChild(u))),d}else return t.group(l)}addEntity(t,e,s){const n=t.worldDraw(s);n&&(this.attachEntityInfo(n,t),e.push(n))}attachEntityInfo(t,e){t.objectId=e.objectId,t.ownerId=e.ownerId,t.layerName=e.layer,t.visible=e.visibility}}const Rr=new tt;var Mn=(i=>(i[i.UTF8=0]="UTF8",i[i.US_ASCII=1]="US_ASCII",i[i.ISO_8859_1=2]="ISO_8859_1",i[i.ISO_8859_2=3]="ISO_8859_2",i[i.ISO_8859_3=4]="ISO_8859_3",i[i.ISO_8859_4=5]="ISO_8859_4",i[i.ISO_8859_5=6]="ISO_8859_5",i[i.ISO_8859_6=7]="ISO_8859_6",i[i.ISO_8859_7=8]="ISO_8859_7",i[i.ISO_8859_8=9]="ISO_8859_8",i[i.ISO_8859_9=10]="ISO_8859_9",i[i.CP437=11]="CP437",i[i.CP850=12]="CP850",i[i.CP852=13]="CP852",i[i.CP855=14]="CP855",i[i.CP857=15]="CP857",i[i.CP860=16]="CP860",i[i.CP861=17]="CP861",i[i.CP863=18]="CP863",i[i.CP864=19]="CP864",i[i.CP865=20]="CP865",i[i.CP869=21]="CP869",i[i.CP932=22]="CP932",i[i.MACINTOSH=23]="MACINTOSH",i[i.BIG5=24]="BIG5",i[i.CP949=25]="CP949",i[i.JOHAB=26]="JOHAB",i[i.CP866=27]="CP866",i[i.ANSI_1250=28]="ANSI_1250",i[i.ANSI_1251=29]="ANSI_1251",i[i.ANSI_1252=30]="ANSI_1252",i[i.GB2312=31]="GB2312",i[i.ANSI_1253=32]="ANSI_1253",i[i.ANSI_1254=33]="ANSI_1254",i[i.ANSI_1255=34]="ANSI_1255",i[i.ANSI_1256=35]="ANSI_1256",i[i.ANSI_1257=36]="ANSI_1257",i[i.ANSI_874=37]="ANSI_874",i[i.ANSI_932=38]="ANSI_932",i[i.ANSI_936=39]="ANSI_936",i[i.ANSI_949=40]="ANSI_949",i[i.ANSI_950=41]="ANSI_950",i[i.ANSI_1361=42]="ANSI_1361",i[i.UTF16=43]="UTF16",i[i.ANSI_1258=44]="ANSI_1258",i[i.UNDEFINED=255]="UNDEFINED",i))(Mn||{});const _l=["utf-8","utf-8","iso-8859-1","iso-8859-2","iso-8859-3","iso-8859-4","iso-8859-5","iso-8859-6","iso-8859-7","iso-8859-8","iso-8859-9","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","shift-jis","macintosh","big5","utf-8","utf-8","ibm866","windows-1250","windows-1251","windows-1252","gbk","windows-1253","windows-1254","windows-1255","windows-1256","windows-1257","windows-874","shift-jis","gbk","euc-kr","big5","utf-8","utf-16le","windows-1258"],_a=i=>_l[i],$e="Continuous",J="Standard",qe="ByLayer",gi="ByBlock",cn="mlightcad",dn="ACAD",at=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let zr=1234567;const Tn=Math.PI/180,vn=180/Math.PI;function wa(){const i=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,s=Math.random()*4294967295|0;return(at[i&255]+at[i>>8&255]+at[i>>16&255]+at[i>>24&255]+"-"+at[t&255]+at[t>>8&255]+"-"+at[t>>16&15|64]+at[t>>24&255]+"-"+at[e&63|128]+at[e>>8&255]+"-"+at[e>>16&255]+at[e>>24&255]+at[s&255]+at[s>>8&255]+at[s>>16&255]+at[s>>24&255]).toLowerCase()}function se(i,t,e){return Math.max(t,Math.min(e,i))}function kn(i,t){return(i%t+t)%t}function xa(i,t,e,s,n){return s+(i-t)*(n-s)/(e-t)}function ba(i,t,e){return i!==t?(e-i)/(t-i):0}function Ln(i,t,e){return(1-e)*i+e*t}function fa(i,t,e,s){return Ln(i,t,1-Math.exp(-e*s))}function Ia(i,t=1){return t-Math.abs(kn(i,t*2)-t)}function Pa(i,t,e){return i<=t?0:i>=e?1:(i=(i-t)/(e-t),i*i*(3-2*i))}function Ea(i,t,e){return i<=t?0:i>=e?1:(i=(i-t)/(e-t),i*i*i*(i*(i*6-15)+10))}function Sa(i,t){return i+Math.floor(Math.random()*(t-i+1))}function Aa(i,t){return i+Math.random()*(t-i)}function Ma(i){return i*(.5-Math.random())}function Ta(i){i!==void 0&&(zr=i);let t=zr+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function va(i){return i*Tn}function ka(i){return i*vn}function La(i){return(i&i-1)===0&&i!==0}function Na(i){return Math.pow(2,Math.ceil(Math.log(i)/Math.LN2))}function Oa(i){return Math.pow(2,Math.floor(Math.log(i)/Math.LN2))}function Is(i){const t=Math.PI*2;return(i%t+t)%t}function Ca(i,t,e){return i>t&&i<e||i>e&&i<t}function Ba(i,t,e,s=!1){return i=Is(i),t=Is(t),e=Is(e),s?t>e?i<=t&&i>=e:i<=t||i>=e:t<e?i>=t&&i<=e:i>=t||i<=e}function Nn(i){return i=Math.abs(i),i<1?0:Math.ceil(Math.log10(Math.abs(i)+1))}function Fa(i,t=1e-7){const e=Nn(i);return Math.max(Math.pow(10,e)*t,t)}const L={DEG2RAD:Tn,RAD2DEG:vn,generateUUID:wa,clamp:se,euclideanModulo:kn,mapLinear:xa,inverseLerp:ba,lerp:Ln,damp:fa,pingpong:Ia,smoothstep:Pa,smootherstep:Ea,randInt:Sa,randFloat:Aa,randFloatSpread:Ma,seededRandom:Ta,degToRad:va,radToDeg:ka,isPowerOfTwo:La,ceilPowerOfTwo:Na,floorPowerOfTwo:Oa,normalizeAngle:Is,isBetween:Ca,isBetweenAngle:Ba,intPartLength:Nn,relativeEps:Fa},un=class Ra{constructor(t,e){this.x=0,this.y=0;const s=+(t!==void 0)+ +(e!==void 0);if(s!==0){if(s===1&&t instanceof Array){this.x=t[0],this.y=t[1];return}if(s===1){const{x:n,y:r}=t;this.x=n,this.y=r;return}if(s===2){this.x=t,this.y=e;return}throw yt.ILLEGAL_PARAMETERS}}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new Ra(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix2d(t){const e=this.x,s=this.y,n=t.elements;return this.x=n[0]*e+n[3]*s+n[6],this.y=n[1]*e+n[4]*s+n[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){const s=this.length();return this.divideScalar(s||1).multiplyScalar(Math.max(t,Math.min(e,s)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const s=this.dot(t)/e;return Math.acos(Math.max(-1,Math.min(1,s)))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,s=this.y-t.y;return e*e+s*s}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,s){return this.x=t.x+(e.x-t.x)*s,this.y=t.y+(e.y-t.y)*s,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}rotateAround(t,e){const s=Math.cos(e),n=Math.sin(e),r=this.x-t.x,a=this.y-t.y;return this.x=r*s-a*n+t.x,this.y=r*n+a*s+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}relativeEps(t=1e-7){return Math.min(L.relativeEps(this.x,t),L.relativeEps(this.y,t))}*[Symbol.iterator](){yield this.x,yield this.y}};un.EMPTY=Object.freeze(new un(0,0));let U=un;const pn=class za{constructor(t,e,s,n,r,a,o,l,c){this.elements=[1,0,0,0,1,0,0,0,1],t!=null&&e!=null&&s!=null&&n!=null&&r!=null&&a!=null&&o!=null&&l!=null&&c!=null&&this.set(t,e,s,n,r,a,o,l,c)}set(t,e,s,n,r,a,o,l,c){const d=this.elements;return d[0]=t,d[1]=n,d[2]=o,d[3]=e,d[4]=r,d[5]=l,d[6]=s,d[7]=a,d[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,s=t.elements;return e[0]=s[0],e[1]=s[1],e[2]=s[2],e[3]=s[3],e[4]=s[4],e[5]=s[5],e[6]=s[6],e[7]=s[7],e[8]=s[8],this}extractBasis(t,e,s){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),s.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const s=t.elements,n=e.elements,r=this.elements,a=s[0],o=s[3],l=s[6],c=s[1],d=s[4],u=s[7],g=s[2],p=s[5],m=s[8],y=n[0],w=n[3],b=n[6],E=n[1],I=n[4],T=n[7],A=n[2],W=n[5],M=n[8];return r[0]=a*y+o*E+l*A,r[3]=a*w+o*I+l*W,r[6]=a*b+o*T+l*M,r[1]=c*y+d*E+u*A,r[4]=c*w+d*I+u*W,r[7]=c*b+d*T+u*M,r[2]=g*y+p*E+m*A,r[5]=g*w+p*I+m*W,r[8]=g*b+p*T+m*M,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],s=t[1],n=t[2],r=t[3],a=t[4],o=t[5],l=t[6],c=t[7],d=t[8];return e*a*d-e*o*c-s*r*d+s*o*l+n*r*c-n*a*l}invert(){const t=this.elements,e=t[0],s=t[1],n=t[2],r=t[3],a=t[4],o=t[5],l=t[6],c=t[7],d=t[8],u=d*a-o*c,g=o*l-d*r,p=c*r-a*l,m=e*u+s*g+n*p;if(m===0)return this.set(0,0,0,0,0,0,0,0,0);const y=1/m;return t[0]=u*y,t[1]=(n*c-d*s)*y,t[2]=(o*s-n*a)*y,t[3]=g*y,t[4]=(d*e-n*l)*y,t[5]=(n*r-o*e)*y,t[6]=p*y,t[7]=(s*l-c*e)*y,t[8]=(a*e-s*r)*y,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t.elements[0]=e[0],t.elements[1]=e[3],t.elements[2]=e[6],t.elements[3]=e[1],t.elements[4]=e[4],t.elements[5]=e[7],t.elements[6]=e[2],t.elements[7]=e[5],t.elements[8]=e[8],this}setUvTransform(t,e,s,n,r,a,o){const l=Math.cos(r),c=Math.sin(r);return this.set(s*l,s*c,-s*(l*a+c*o)+a+t,-n*c,n*l,-n*(-c*a+l*o)+o+e,0,0,1),this}scale(t,e){return this.premultiply($i.makeScale(t,e)),this}rotate(t){return this.premultiply($i.makeRotation(-t)),this}translate(t,e){return this.premultiply($i.makeTranslation(t,e)),this}makeTranslation(t,e){return t instanceof U?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),s=Math.sin(t);return this.set(e,-s,0,s,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){const e=this.elements,s=t.elements;for(let n=0;n<9;n++)if(e[n]!==s[n])return!1;return!0}fromArray(t,e=0){for(let s=0;s<9;s++)this.elements[s]=t[s+e];return this}toArray(t=[],e=0){const s=this.elements;return t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+3]=s[3],t[e+4]=s[4],t[e+5]=s[5],t[e+6]=s[6],t[e+7]=s[7],t[e+8]=s[8],t}clone(){return new za().fromArray(this.elements)}};pn.IDENTITY=Object.freeze(new pn);let Vs=pn;const $i=new Vs,Fe=1e-6,j=2*Math.PI,wl={x:0,y:0},On={x:0,y:0,z:0};class Cn{constructor(){this.equalPointTol=Fe,this.equalVectorTol=Fe}equalPoint2d(t,e){return new U(t).sub(e).length()<this.equalPointTol}equalPoint3d(t,e){return new f(t).sub(e).length()<this.equalPointTol}static equalToZero(t,e=Fe){return t<e&&t>-e}static equal(t,e,s=Fe){return Math.abs(t-e)<s}static great(t,e,s=Fe){return t-e>s}static less(t,e,s=Fe){return t-e<s}}const Bn=new Cn;function Fn(i,t,e=!1){const s=i.x,n=i.y;let r=!1;const a=t.length;for(let o=0,l=a-1;o<a;l=o++){const c=t[o].x,d=t[o].y,u=t[l].x,g=t[l].y;let p=d>n!=g>n;e&&(p=d>=n!=g>=n),p&&s<(u-c)*(n-d)/(g-d)+c&&(r=!r)}return r}function Va(i,t){if(i.length===0||t.length===0)return!1;const e=new pt().setFromPoints(i),s=new pt().setFromPoints(t);if(!e.intersectsBox(s))return!1;for(let n=0;n<i.length;){if(Fn(i[n],t,!0))return!0;n<i.length-1&&Bn.equalPoint2d(i[n+1],i[n])&&++n,++n}return!1}const Da={isPointInPolygon:Fn,isPolygonIntersect:Va};function xl(i,t){const e=[],s=t-1,n=i;for(let r=0;r<=n;r++)e.push(0);for(let r=1;r<=s-n;r++)e.push(r);for(let r=0;r<=n;r++)e.push(s-n+1);return e}function bl(i,t){const e=t.length-1,s=i,n=[0];let r=0;for(let o=1;o<=e;o++){const l=t[o][0]-t[o-1][0],c=t[o][1]-t[o-1][1],d=t[o][2]-t[o-1][2],u=Math.sqrt(l*l+c*c+d*d);r+=u,n.push(r)}const a=[];for(let o=0;o<=s;o++)a.push(0);for(let o=1;o<=e-s;o++){const l=n[o]/r;a.push(l*(e-s+1))}for(let o=0;o<=s;o++)a.push(e-s+1);return a}function ja(i,t="Uniform"){const e=i.length;if(e===0)return[];if(e===1)return[0];const s=e-1;if(t==="Uniform")return new Array(e).fill(0).map((a,o)=>o/s);const n=[0];let r=0;for(let a=1;a<=s;a++){const o=i[a][0]-i[a-1][0],l=i[a][1]-i[a-1][1],c=i[a][2]-i[a-1][2],d=Math.sqrt(o*o+l*l+c*c),u=t==="SqrtChord"?Math.sqrt(d):d;r+=u,n.push(r)}return r<1e-12?new Array(e).fill(0).map((a,o)=>o/s):n.map(a=>a/r)}function Wa(i,t){const e=t.length-1,s=i,n=e+s+1,r=new Array(n+1).fill(0),a=t[t.length-1];for(let o=n-s;o<=n;o++)r[o]=a;for(let o=1;o<=e-s;o++){let l=0;for(let c=o;c<o+s;c++)l+=t[c];r[o+s]=l/s}return r}function fl(i,t){const e=t.length-1,s=i,n=[0];let r=0;for(let o=1;o<=e;o++){const l=t[o][0]-t[o-1][0],c=t[o][1]-t[o-1][1],d=t[o][2]-t[o-1][2],u=Math.sqrt(l*l+c*c+d*d),g=Math.sqrt(u);r+=g,n.push(r)}const a=[];for(let o=0;o<=s;o++)a.push(0);for(let o=1;o<=e-s;o++){const l=n[o]/r;a.push(l*(e-s+1))}for(let o=0;o<=s;o++)a.push(e-s+1);return a}function qi(i,t){const e=i.length,s=i.map(a=>a.slice()),n=t.slice();for(let a=0;a<e;a++){let o=a,l=Math.abs(s[a][a]);for(let c=a+1;c<e;c++){const d=Math.abs(s[c][a]);d>l&&(l=d,o=c)}if(l<1e-12)throw new Error("Interpolation matrix is singular.");if(o!==a){const c=s[a];s[a]=s[o],s[o]=c;const d=n[a];n[a]=n[o],n[o]=d}for(let c=a+1;c<e;c++){const d=s[c][a]/s[a][a];if(!(Math.abs(d)<1e-14)){for(let u=a;u<e;u++)s[c][u]-=d*s[a][u];n[c]-=d*n[a]}}}const r=new Array(e).fill(0);for(let a=e-1;a>=0;a--){let o=n[a];for(let l=a+1;l<e;l++)o-=s[a][l]*r[l];r[a]=o/s[a][a]}return r}function Rn(i,t,e="Uniform",s,n){if(i.length===0)return{controlPoints:[],knots:[],weights:[]};const r=i.map(B=>[B[0],B[1],B[2]??0]),a=!!s,o=!!n,l=(a?1:0)+(o?1:0),c=r.length-1,d=c+l;if(d<t)throw new Error("Not enough points to interpolate a curve of this degree.");const u=ja(r,e),g=u.slice();a&&g.unshift(u[0]),o&&g.push(u[u.length-1]);const p=Wa(t,g),m=d+1,y=new Array(m),w=new Array(m),b=new Array(m),E=new Array(m);let I=0;y[I]=new Array(m).fill(0),y[I][0]=1,w[I]=r[0][0],b[I]=r[0][1],E[I]=r[0][2],I++;for(let B=1;B<=c-1;B++){const et=u[B];y[I]=new Array(m).fill(0);for(let F=0;F<=d;F++)y[I][F]=Ts(F,t,et,p);w[I]=r[B][0],b[I]=r[B][1],E[I]=r[B][2],I++}if(y[I]=new Array(m).fill(0),y[I][d]=1,w[I]=r[c][0],b[I]=r[c][1],E[I]=r[c][2],I++,a){const B=p[t+1]-p[0],et=B!==0?t/B:0;y[I]=new Array(m).fill(0),y[I][0]=-et,y[I][1]=et,w[I]=(s==null?void 0:s[0])??0,b[I]=(s==null?void 0:s[1])??0,E[I]=(s==null?void 0:s[2])??0,I++}if(o){const B=p[d+t+1]-p[d],et=B!==0?t/B:0;y[I]=new Array(m).fill(0),y[I][d-1]=-et,y[I][d]=et,w[I]=(n==null?void 0:n[0])??0,b[I]=(n==null?void 0:n[1])??0,E[I]=(n==null?void 0:n[2])??0,I++}const T=qi(y,w),A=qi(y,b),W=qi(y,E),M=new Array(m);for(let B=0;B<m;B++)M[B]=[T[B],A[B],W[B]];const Y=new Array(m).fill(1);return{controlPoints:M,knots:p,weights:Y}}function Ts(i,t,e,s){if(t===0)return e>=s[i]&&e<s[i+1]?1:0;const n=s[i+t]-s[i],r=s[i+t+1]-s[i+1],a=n>1e-10?(e-s[i])/n:0,o=r>1e-10?(s[i+t+1]-e)/r:0;return a*Ts(i,t-1,e,s)+o*Ts(i+1,t-1,e,s)}function Ps(i,t,e,s,n){const r=s.length-1,a=t;if(i=Math.max(e[a],Math.min(e[r+1],i)),Math.abs(i-e[r+1])<1e-8)return[...s[r]];if(Math.abs(i-e[a])<1e-8)return[...s[0]];const o=[0,0,0];let l=0;for(let c=0;c<=r;c++){const d=Ts(c,a,i,e),u=n[c]*d;o[0]+=s[c][0]*u,o[1]+=s[c][1]*u,o[2]+=s[c][2]*u,l+=u}if(Math.abs(l)<1e-10){const c=e[e.length-a-1];if(Math.abs(i-c)<1e-8)return[...s[r]];if(Math.abs(i-e[a])<1e-8)return[...s[0]]}return Math.abs(l)>=1e-10&&(o[0]/=l,o[1]/=l,o[2]/=l),o}function Ga(i,t,e,s){const n=i,r=t[n],a=t[t.length-n-1];let o=0;const l=1e3,c=(a-r)/l;let d=Ps(r,i,t,e,s);for(let y=1;y<=l;y++){const w=r+y*c,b=Ps(w,i,t,e,s),E=b[0]-d[0],I=b[1]-d[1],T=b[2]-d[2];o+=Math.sqrt(E*E+I*I+T*T),d=b}const u=Ps(a,i,t,e,s),g=u[0]-d[0],p=u[1]-d[1],m=u[2]-d[2];return o+=Math.sqrt(g*g+p*p+m*m),o}function Il(i,t=3,e="Uniform",s,n){return i.length===0?[]:Rn(i,t,e,s,n).controlPoints}class We{constructor(t=0,e=0,s=0,n=1){this._x=t,this._y=e,this._z=s,this._w=n}static slerpFlat(t,e,s,n,r,a,o){let l=s[n+0],c=s[n+1],d=s[n+2],u=s[n+3];const g=r[a+0],p=r[a+1],m=r[a+2],y=r[a+3];if(o===0){t[e+0]=l,t[e+1]=c,t[e+2]=d,t[e+3]=u;return}if(o===1){t[e+0]=g,t[e+1]=p,t[e+2]=m,t[e+3]=y;return}if(u!==y||l!==g||c!==p||d!==m){let w=1-o;const b=l*g+c*p+d*m+u*y,E=b>=0?1:-1,I=1-b*b;if(I>Number.EPSILON){const A=Math.sqrt(I),W=Math.atan2(A,b*E);w=Math.sin(w*W)/A,o=Math.sin(o*W)/A}const T=o*E;if(l=l*w+g*T,c=c*w+p*T,d=d*w+m*T,u=u*w+y*T,w===1-o){const A=1/Math.sqrt(l*l+c*c+d*d+u*u);l*=A,c*=A,d*=A,u*=A}}t[e]=l,t[e+1]=c,t[e+2]=d,t[e+3]=u}static multiplyQuaternionsFlat(t,e,s,n,r,a){const o=s[n],l=s[n+1],c=s[n+2],d=s[n+3],u=r[a],g=r[a+1],p=r[a+2],m=r[a+3];return t[e]=o*m+d*u+l*p-c*g,t[e+1]=l*m+d*g+c*u-o*p,t[e+2]=c*m+d*p+o*g-l*u,t[e+3]=d*m-o*u-l*g-c*p,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,s,n){return this._x=t,this._y=e,this._z=s,this._w=n,this._onChangeCallback(),this}clone(){return new We(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e=!0){const s=t.x,n=t.y,r=t.z,a=t.order,o=Math.cos,l=Math.sin,c=o(s/2),d=o(n/2),u=o(r/2),g=l(s/2),p=l(n/2),m=l(r/2);switch(a){case"XYZ":this._x=g*d*u+c*p*m,this._y=c*p*u-g*d*m,this._z=c*d*m+g*p*u,this._w=c*d*u-g*p*m;break;case"YXZ":this._x=g*d*u+c*p*m,this._y=c*p*u-g*d*m,this._z=c*d*m-g*p*u,this._w=c*d*u+g*p*m;break;case"ZXY":this._x=g*d*u-c*p*m,this._y=c*p*u+g*d*m,this._z=c*d*m+g*p*u,this._w=c*d*u-g*p*m;break;case"ZYX":this._x=g*d*u-c*p*m,this._y=c*p*u+g*d*m,this._z=c*d*m-g*p*u,this._w=c*d*u+g*p*m;break;case"YZX":this._x=g*d*u+c*p*m,this._y=c*p*u+g*d*m,this._z=c*d*m-g*p*u,this._w=c*d*u-g*p*m;break;case"XZY":this._x=g*d*u-c*p*m,this._y=c*p*u-g*d*m,this._z=c*d*m+g*p*u,this._w=c*d*u+g*p*m;break}return e===!0&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const s=e/2,n=Math.sin(s);return this._x=t.x*n,this._y=t.y*n,this._z=t.z*n,this._w=Math.cos(s),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,s=e[0],n=e[4],r=e[8],a=e[1],o=e[5],l=e[9],c=e[2],d=e[6],u=e[10],g=s+o+u;if(g>0){const p=.5/Math.sqrt(g+1);this._w=.25/p,this._x=(d-l)*p,this._y=(r-c)*p,this._z=(a-n)*p}else if(s>o&&s>u){const p=2*Math.sqrt(1+s-o-u);this._w=(d-l)/p,this._x=.25*p,this._y=(n+a)/p,this._z=(r+c)/p}else if(o>u){const p=2*Math.sqrt(1+o-s-u);this._w=(r-c)/p,this._x=(n+a)/p,this._y=.25*p,this._z=(l+d)/p}else{const p=2*Math.sqrt(1+u-s-o);this._w=(a-n)/p,this._x=(r+c)/p,this._y=(l+d)/p,this._z=.25*p}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let s=t.dot(e)+1;return s<Number.EPSILON?(s=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=s):(this._x=0,this._y=-t.z,this._z=t.y,this._w=s)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=s),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(se(this.dot(t),-1,1)))}rotateTowards(t,e){const s=this.angleTo(t);if(s===0)return this;const n=Math.min(1,e/s);return this.slerp(t,n),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const s=t._x,n=t._y,r=t._z,a=t._w,o=e._x,l=e._y,c=e._z,d=e._w;return this._x=s*d+a*o+n*c-r*l,this._y=n*d+a*l+r*o-s*c,this._z=r*d+a*c+s*l-n*o,this._w=a*d-s*o-n*l-r*c,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);const s=this._x,n=this._y,r=this._z,a=this._w;let o=a*t._w+s*t._x+n*t._y+r*t._z;if(o<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,o=-o):this.copy(t),o>=1)return this._w=a,this._x=s,this._y=n,this._z=r,this;const l=1-o*o;if(l<=Number.EPSILON){const p=1-e;return this._w=p*a+e*this._w,this._x=p*s+e*this._x,this._y=p*n+e*this._y,this._z=p*r+e*this._z,this.normalize(),this}const c=Math.sqrt(l),d=Math.atan2(c,o),u=Math.sin((1-e)*d)/c,g=Math.sin(e*d)/c;return this._w=a*u+this._w*g,this._x=s*u+this._x*g,this._y=n*u+this._y*g,this._z=r*u+this._z*g,this._onChangeCallback(),this}slerpQuaternions(t,e,s){return this.copy(t).slerp(e,s)}random(){const t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),s=Math.random(),n=Math.sqrt(1-s),r=Math.sqrt(s);return this.set(n*Math.sin(t),n*Math.cos(t),r*Math.sin(e),r*Math.cos(e))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}const dt=class Ha{constructor(t,e,s){this.x=0,this.y=0,this.z=0;const n=+(t!==void 0)+ +(e!==void 0)+ +(s!==void 0);if(n!==0){if(n===1&&t instanceof Array){this.x=t[0],this.y=t[1],this.z=t[2];return}if(n===1){const{x:r,y:a,z:o}=t;this.x=r,this.y=a,this.z=o||0;return}if(n===3){this.x=t,this.y=e,this.z=s;return}throw yt.ILLEGAL_PARAMETERS}}set(t,e,s){return s===void 0&&(s=this.z),this.x=t,this.y=e,this.z=s,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new Ha(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z||0,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z||0,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(Vr.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(Vr.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,s=this.y,n=this.z,r=t.elements;return this.x=r[0]*e+r[3]*s+r[6]*n,this.y=r[1]*e+r[4]*s+r[7]*n,this.z=r[2]*e+r[5]*s+r[8]*n,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,s=this.y,n=this.z,r=t.elements,a=1/(r[3]*e+r[7]*s+r[11]*n+r[15]);return this.x=(r[0]*e+r[4]*s+r[8]*n+r[12])*a,this.y=(r[1]*e+r[5]*s+r[9]*n+r[13])*a,this.z=(r[2]*e+r[6]*s+r[10]*n+r[14])*a,this}applyQuaternion(t){const e=this.x,s=this.y,n=this.z,r=t.x,a=t.y,o=t.z,l=t.w,c=2*(a*n-o*s),d=2*(o*e-r*n),u=2*(r*s-a*e);return this.x=e+l*c+a*u-o*d,this.y=s+l*d+o*c-r*u,this.z=n+l*u+r*d-a*c,this}transformDirection(t){const e=this.x,s=this.y,n=this.z,r=t.elements;return this.x=r[0]*e+r[4]*s+r[8]*n,this.y=r[1]*e+r[5]*s+r[9]*n,this.z=r[2]*e+r[6]*s+r[10]*n,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){const s=this.length();return this.divideScalar(s||1).multiplyScalar(Math.max(t,Math.min(e,s)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}isParallelTo(t){const e=this.dot(t),s=this.length(),n=t.length();return Math.abs(e)===s*n}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,s){return this.x=t.x+(e.x-t.x)*s,this.y=t.y+(e.y-t.y)*s,this.z=t.z+(e.z-t.z)*s,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const s=t.x,n=t.y,r=t.z,a=e.x,o=e.y,l=e.z;return this.x=n*l-r*o,this.y=r*a-s*l,this.z=s*o-n*a,this}projectOnVector(t){const e=t.lengthSq();if(e===0)return this.set(0,0,0);const s=t.dot(this)/e;return this.copy(t).multiplyScalar(s)}projectOnPlane(t){return Zi.copy(this).projectOnVector(t),this.sub(Zi)}reflect(t){return this.sub(Zi.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const s=this.dot(t)/e;return Math.acos(Math.max(-1,Math.min(1,s)))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,s=this.y-t.y,n=this.z-t.z;return e*e+s*s+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),s=this.setFromMatrixColumn(t,1).length(),n=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=s,this.z=n,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=Math.random()*Math.PI*2,e=Math.random()*2-1,s=Math.sqrt(1-e*e);return this.x=s*Math.cos(t),this.y=e,this.z=s*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};dt.ORIGIN=Object.freeze(new dt(0,0,0)),dt.X_AXIS=Object.freeze(new dt(1,0,0)),dt.NEGATIVE_X_AXIS=Object.freeze(new dt(-1,0,0)),dt.Y_AXIS=Object.freeze(new dt(0,1,0)),dt.NEGATIVE_Y_AXIS=Object.freeze(new dt(0,-1,0)),dt.Z_AXIS=Object.freeze(new dt(0,0,1)),dt.NEGATIVE_Z_AXIS=Object.freeze(new dt(0,0,-1));let f=dt;const Zi=new f,Vr=new We,gn=class Ua{constructor(t,e,s,n,r,a,o,l,c,d,u,g,p,m,y,w){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!=null&&e!=null&&s!=null&&n!=null&&r!=null&&a!=null&&o!=null&&l!=null&&c!=null&&d!=null&&u!=null&&g!=null&&p!=null&&m!=null&&y!=null&&w!=null&&this.set(t,e,s,n,r,a,o,l,c,d,u,g,p,m,y,w)}set(t,e,s,n,r,a,o,l,c,d,u,g,p,m,y,w){const b=this.elements;return b[0]=t,b[4]=e,b[8]=s,b[12]=n,b[1]=r,b[5]=a,b[9]=o,b[13]=l,b[2]=c,b[6]=d,b[10]=u,b[14]=g,b[3]=p,b[7]=m,b[11]=y,b[15]=w,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new Ua().fromArray(this.elements)}copy(t){const e=this.elements,s=t.elements;return e[0]=s[0],e[1]=s[1],e[2]=s[2],e[3]=s[3],e[4]=s[4],e[5]=s[5],e[6]=s[6],e[7]=s[7],e[8]=s[8],e[9]=s[9],e[10]=s[10],e[11]=s[11],e[12]=s[12],e[13]=s[13],e[14]=s[14],e[15]=s[15],this}copyPosition(t){const e=this.elements,s=t.elements;return e[12]=s[12],e[13]=s[13],e[14]=s[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}setFromExtrusionDirection(t){if(Bn.equalPoint3d(t,f.Z_AXIS))this.identity();else{const e=new f(1,0,0);Math.abs(t.x)<1/64&&Math.abs(t.y)<1/64?e.crossVectors(f.Y_AXIS,t).normalize():e.crossVectors(f.Z_AXIS,t).normalize();const s=t.clone().cross(e).normalize();this.set(e.x,e.y,e.z,0,s.x,s.y,s.z,0,t.x,t.y,t.z,0,0,0,0,1)}return this}extractBasis(t,e,s){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),s.setFromMatrixColumn(this,2),this}makeBasis(t,e,s){return this.set(t.x,e.x,s.x,0,t.y,e.y,s.y,0,t.z,e.z,s.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,s=t.elements,n=1/Ge.setFromMatrixColumn(t,0).length(),r=1/Ge.setFromMatrixColumn(t,1).length(),a=1/Ge.setFromMatrixColumn(t,2).length();return e[0]=s[0]*n,e[1]=s[1]*n,e[2]=s[2]*n,e[3]=0,e[4]=s[4]*r,e[5]=s[5]*r,e[6]=s[6]*r,e[7]=0,e[8]=s[8]*a,e[9]=s[9]*a,e[10]=s[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(Pl,t,El)}lookAt(t,e,s){const n=this.elements;return _t.subVectors(t,e),_t.lengthSq()===0&&(_t.z=1),_t.normalize(),he.crossVectors(s,_t),he.lengthSq()===0&&(Math.abs(s.z)===1?_t.x+=1e-4:_t.z+=1e-4,_t.normalize(),he.crossVectors(s,_t)),he.normalize(),Js.crossVectors(_t,he),n[0]=he.x,n[4]=Js.x,n[8]=_t.x,n[1]=he.y,n[5]=Js.y,n[9]=_t.y,n[2]=he.z,n[6]=Js.z,n[10]=_t.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const s=t.elements,n=e.elements,r=this.elements,a=s[0],o=s[4],l=s[8],c=s[12],d=s[1],u=s[5],g=s[9],p=s[13],m=s[2],y=s[6],w=s[10],b=s[14],E=s[3],I=s[7],T=s[11],A=s[15],W=n[0],M=n[4],Y=n[8],B=n[12],et=n[1],F=n[5],H=n[9],_e=n[13],we=n[2],Us=n[6],Xs=n[10],Ys=n[14],$s=n[3],qs=n[7],Zs=n[11],Ks=n[15];return r[0]=a*W+o*et+l*we+c*$s,r[4]=a*M+o*F+l*Us+c*qs,r[8]=a*Y+o*H+l*Xs+c*Zs,r[12]=a*B+o*_e+l*Ys+c*Ks,r[1]=d*W+u*et+g*we+p*$s,r[5]=d*M+u*F+g*Us+p*qs,r[9]=d*Y+u*H+g*Xs+p*Zs,r[13]=d*B+u*_e+g*Ys+p*Ks,r[2]=m*W+y*et+w*we+b*$s,r[6]=m*M+y*F+w*Us+b*qs,r[10]=m*Y+y*H+w*Xs+b*Zs,r[14]=m*B+y*_e+w*Ys+b*Ks,r[3]=E*W+I*et+T*we+A*$s,r[7]=E*M+I*F+T*Us+A*qs,r[11]=E*Y+I*H+T*Xs+A*Zs,r[15]=E*B+I*_e+T*Ys+A*Ks,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],s=t[4],n=t[8],r=t[12],a=t[1],o=t[5],l=t[9],c=t[13],d=t[2],u=t[6],g=t[10],p=t[14],m=t[3],y=t[7],w=t[11],b=t[15];return m*(+r*l*u-n*c*u-r*o*g+s*c*g+n*o*p-s*l*p)+y*(+e*l*p-e*c*g+r*a*g-n*a*p+n*c*d-r*l*d)+w*(+e*c*u-e*o*p-r*a*u+s*a*p+r*o*d-s*c*d)+b*(-n*o*d-e*l*u+e*o*g+n*a*u-s*a*g+s*l*d)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,s){const n=this.elements;return t instanceof f?(n[12]=t.x,n[13]=t.y,n[14]=t.z):(n[12]=t,n[13]=e,n[14]=s),this}invert(){const t=this.elements,e=t[0],s=t[1],n=t[2],r=t[3],a=t[4],o=t[5],l=t[6],c=t[7],d=t[8],u=t[9],g=t[10],p=t[11],m=t[12],y=t[13],w=t[14],b=t[15],E=u*w*c-y*g*c+y*l*p-o*w*p-u*l*b+o*g*b,I=m*g*c-d*w*c-m*l*p+a*w*p+d*l*b-a*g*b,T=d*y*c-m*u*c+m*o*p-a*y*p-d*o*b+a*u*b,A=m*u*l-d*y*l-m*o*g+a*y*g+d*o*w-a*u*w,W=e*E+s*I+n*T+r*A;if(W===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const M=1/W;return t[0]=E*M,t[1]=(y*g*r-u*w*r-y*n*p+s*w*p+u*n*b-s*g*b)*M,t[2]=(o*w*r-y*l*r+y*n*c-s*w*c-o*n*b+s*l*b)*M,t[3]=(u*l*r-o*g*r-u*n*c+s*g*c+o*n*p-s*l*p)*M,t[4]=I*M,t[5]=(d*w*r-m*g*r+m*n*p-e*w*p-d*n*b+e*g*b)*M,t[6]=(m*l*r-a*w*r-m*n*c+e*w*c+a*n*b-e*l*b)*M,t[7]=(a*g*r-d*l*r+d*n*c-e*g*c-a*n*p+e*l*p)*M,t[8]=T*M,t[9]=(m*u*r-d*y*r-m*s*p+e*y*p+d*s*b-e*u*b)*M,t[10]=(a*y*r-m*o*r+m*s*c-e*y*c-a*s*b+e*o*b)*M,t[11]=(d*o*r-a*u*r-d*s*c+e*u*c+a*s*p-e*o*p)*M,t[12]=A*M,t[13]=(d*y*n-m*u*n+m*s*g-e*y*g-d*s*w+e*u*w)*M,t[14]=(m*o*n-a*y*n-m*s*l+e*y*l+a*s*w-e*o*w)*M,t[15]=(a*u*n-d*o*n+d*s*l-e*u*l-a*s*g+e*o*g)*M,this}scale(t){const e=this.elements,s=t.x,n=t.y,r=t.z;return e[0]*=s,e[4]*=n,e[8]*=r,e[1]*=s,e[5]*=n,e[9]*=r,e[2]*=s,e[6]*=n,e[10]*=r,e[3]*=s,e[7]*=n,e[11]*=r,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],s=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],n=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,s,n))}makeTranslation(t,e,s){return t instanceof f?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,s,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),s=Math.sin(t);return this.set(1,0,0,0,0,e,-s,0,0,s,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),s=Math.sin(t);return this.set(e,0,s,0,0,1,0,0,-s,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),s=Math.sin(t);return this.set(e,-s,0,0,s,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const s=Math.cos(e),n=Math.sin(e),r=1-s,a=t.x,o=t.y,l=t.z,c=r*a,d=r*o;return this.set(c*a+s,c*o-n*l,c*l+n*o,0,c*o+n*l,d*o+s,d*l-n*a,0,c*l-n*o,d*l+n*a,r*l*l+s,0,0,0,0,1),this}makeScale(t,e,s){return this.set(t,0,0,0,0,e,0,0,0,0,s,0,0,0,0,1),this}makeShear(t,e,s,n,r,a){return this.set(1,s,r,0,t,1,a,0,e,n,1,0,0,0,0,1),this}compose(t,e,s){const n=this.elements,r=e.x,a=e.y,o=e.z,l=e.w,c=r+r,d=a+a,u=o+o,g=r*c,p=r*d,m=r*u,y=a*d,w=a*u,b=o*u,E=l*c,I=l*d,T=l*u,A=s.x,W=s.y,M=s.z;return n[0]=(1-(y+b))*A,n[1]=(p+T)*A,n[2]=(m-I)*A,n[3]=0,n[4]=(p-T)*W,n[5]=(1-(g+b))*W,n[6]=(w+E)*W,n[7]=0,n[8]=(m+I)*M,n[9]=(w-E)*M,n[10]=(1-(g+y))*M,n[11]=0,n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=1,this}decompose(t,e,s){const n=this.elements;let r=Ge.set(n[0],n[1],n[2]).length();const a=Ge.set(n[4],n[5],n[6]).length(),o=Ge.set(n[8],n[9],n[10]).length();this.determinant()<0&&(r=-r),t.x=n[12],t.y=n[13],t.z=n[14],Mt.copy(this);const l=1/r,c=1/a,d=1/o;return Mt.elements[0]*=l,Mt.elements[1]*=l,Mt.elements[2]*=l,Mt.elements[4]*=c,Mt.elements[5]*=c,Mt.elements[6]*=c,Mt.elements[8]*=d,Mt.elements[9]*=d,Mt.elements[10]*=d,e.setFromRotationMatrix(Mt),s.x=r,s.y=a,s.z=o,this}equals(t){const e=this.elements,s=t.elements;for(let n=0;n<16;n++)if(e[n]!==s[n])return!1;return!0}fromArray(t,e=0){for(let s=0;s<16;s++)this.elements[s]=t[s+e];return this}toArray(t=[],e=0){const s=this.elements;return t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+3]=s[3],t[e+4]=s[4],t[e+5]=s[5],t[e+6]=s[6],t[e+7]=s[7],t[e+8]=s[8],t[e+9]=s[9],t[e+10]=s[10],t[e+11]=s[11],t[e+12]=s[12],t[e+13]=s[13],t[e+14]=s[14],t[e+15]=s[15],t}};gn.IDENTITY=Object.freeze(new gn);let Q=gn;const Ge=new f,Mt=new Q,Pl=new f(0,0,0),El=new f(1,1,1),he=new f,Js=new f,_t=new f;let C=class Xa{constructor(t=void 0,e=void 0){this.min=t==null?new f(1/0,1/0,1/0):new f(t.x,t.y,t.z),this.max=e==null?new f(-1/0,-1/0,-1/0):new f(e.x,e.y,e.z)}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){this.makeEmpty();for(let e=0,s=t.length;e<s;e+=3)this.expandByPoint(Ki.fromArray(t,e));return this}setFromPoints(t){this.makeEmpty();for(let e=0,s=t.length;e<s;e++)this.expandByPoint(t[e]);return this}setFromCenterAndSize(t,e){const s=Ki.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(s),this.max.copy(t).add(s),this}clone(){return new Xa().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(t){return this.isEmpty()?t.set(0,0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0,0):t.subVectors(this.max,this.min)}get center(){return this.isEmpty()?new f(0,0,0):new f(0,0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new f(0,0,0):new f(0,0,0).subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}containsPoint(t){return!(t.x<this.min.x||t.x>this.max.x||t.y<this.min.y||t.y>this.max.y||t.z<this.min.z||t.z>this.max.z)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return!(t.max.x<this.min.x||t.min.x>this.max.x||t.max.y<this.min.y||t.min.y>this.max.y||t.max.z<this.min.z||t.min.z>this.max.z)}intersectsPlane(t){let e,s;return t.normal.x>0?(e=t.normal.x*this.min.x,s=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,s=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,s+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,s+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,s+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,s+=t.normal.z*this.min.z),e<=-t.constant&&s>=-t.constant}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,Ki).distanceTo(t)}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(Vt[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Vt[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Vt[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Vt[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Vt[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Vt[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Vt[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Vt[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Vt),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}};const Vt=[new f,new f,new f,new f,new f,new f,new f,new f],Ki=new f,Dr=new U;let pt=class Ya{constructor(t=void 0,e=void 0){this.min=t==null?new U(1/0,1/0):new U(t.x,t.y),this.max=e==null?new U(-1/0,-1/0):new U(e.x,e.y)}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromPoints(t){this.makeEmpty();for(let e=0,s=t.length;e<s;e++)this.expandByPoint(t[e]);return this}setFromCenterAndSize(t,e){const s=Dr.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(s),this.max.copy(t).add(s),this}clone(){return new Ya().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y}getCenter(t){return this.isEmpty()?t.set(0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0):t.subVectors(this.max,this.min)}get center(){return this.isEmpty()?new U(0,0):new U(0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new U(0,0):new U(0,0).subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}containsPoint(t){return!(t.x<this.min.x||t.x>this.max.x||t.y<this.min.y||t.y>this.max.y)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(t){return!(t.max.x<this.min.x||t.min.x>this.max.x||t.max.y<this.min.y||t.min.y>this.max.y)}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,Dr).distanceTo(t)}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}};const jr=new f,Sl=new f,Al=new Vs;class Ds{constructor(t=new f(1,0,0),e=0){this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,s,n){return this.normal.set(t,e,s),this.constant=n,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,s){const n=jr.subVectors(s,e).cross(Sl.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(n,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}projectPoint(t,e){return e.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))}intersectsBox(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){const s=e||Al.getNormalMatrix(t),n=this.coplanarPoint(jr).applyMatrix4(t),r=this.normal.applyMatrix3(s).normalize();return this.constant=-n.dot(r),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return new Ds().copy(this)}}let v=class extends U{static pointArrayToNumberArray(t){const e=new Array(t.length*2);return t.forEach((s,n)=>{s.toArray(e,n*2)}),e}},x=class extends f{static pointArrayToNumberArray(t,e=!0){const s=e?3:2,n=new Array(t.length*s);return t.forEach((r,a)=>{r.toArray(n,a*s)}),n}};const Wr=new Q,Gr=new We,$a=class mn{constructor(t=0,e=0,s=0,n=mn.DEFAULT_ORDER){this._x=t,this._y=e,this._z=s,this._order=n}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,s,n=this._order){return this._x=t,this._y=e,this._z=s,this._order=n,this._onChangeCallback(),this}clone(){return new mn(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,s=!0){const n=t.elements,r=n[0],a=n[4],o=n[8],l=n[1],c=n[5],d=n[9],u=n[2],g=n[6],p=n[10];switch(e){case"XYZ":this._y=Math.asin(se(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-d,p),this._z=Math.atan2(-a,r)):(this._x=Math.atan2(g,c),this._z=0);break;case"YXZ":this._x=Math.asin(-se(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(o,p),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-u,r),this._z=0);break;case"ZXY":this._x=Math.asin(se(g,-1,1)),Math.abs(g)<.9999999?(this._y=Math.atan2(-u,p),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(l,r));break;case"ZYX":this._y=Math.asin(-se(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(g,p),this._z=Math.atan2(l,r)):(this._x=0,this._z=Math.atan2(-a,c));break;case"YZX":this._z=Math.asin(se(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-d,c),this._y=Math.atan2(-u,r)):(this._x=0,this._y=Math.atan2(o,p));break;case"XZY":this._z=Math.asin(-se(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(g,c),this._y=Math.atan2(o,r)):(this._x=Math.atan2(-d,p),this._y=0);break}return this._order=e,s===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,s=!0){return Wr.makeRotationFromQuaternion(t),this.setFromRotationMatrix(Wr,e,s)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return Gr.setFromEuler(this),this.setFromQuaternion(Gr,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};$a.DEFAULT_ORDER="XYZ";let Ml=$a;class qa{constructor(){this._boundingBoxNeedsUpdate=!1}get boundingBoxNeedUpdate(){return this._boundingBoxNeedsUpdate}}class zn extends qa{translate(t){return this.transform(new Vs().makeTranslation(t.x,t.y))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}}class vs extends zn{constructor(){super(),this._loops=[]}add(t){this._loops.push(t),this._boundingBoxNeedsUpdate=!0}get loops(){return this._loops}get outter(){if(this._loops.length>0)return this._loops[0]}calculateBoundingBox(){const t=this.outter;return t?t.box:new pt}transform(t){return this._loops.forEach(e=>{e.transform(t)}),this._boundingBoxNeedsUpdate=!0,this}getPoints(t){const e=[];for(let s=0;s<this.loops.length;++s){const n=this.loops[s].getPoints(t);e.push(n)}return e}buildHierarchy(){var t;const e=this.getPoints(100),s=this.calculateBoundaryBoxes(e),n=this.sortBoundaryBoxesByAreas(s),r=new Map,a=n.length;for(let l=0;l<a;l++)r.set(n[l],{index:n[l],children:[]});const o={index:-1,children:[]};for(let l=0;l<a;l++){const c=n[l],d=e[c],u=s[c];let g=l+1;for(;g<a;g++){const p=n[g],m=e[p];if(s[p].containsBox(u)&&Da.isPointInPolygon(d[L.randInt(0,d.length-1)],m)){(t=r.get(p))==null||t.children.push(r.get(c));break}}g===a&&o.children.push(r.get(c))}return o}get area(){if(this._loops.length===0)return 0;let t=0;for(let e=0;e<this._loops.length;e++){const s=this._loops[e].getPoints(128),n=this.polygonArea(s);e===0?t+=Math.abs(n):t-=Math.abs(n)}return t}polygonArea(t){const e=t.length;if(e<3)return 0;let s=0;for(let n=0,r=e-1;n<e;r=n++){const a=t[r],o=t[n];s+=a.x*o.y-o.x*a.y}return s*.5}calculateBoundaryBoxes(t){const e=[];return t.forEach(s=>{e.push(new pt().setFromPoints(s))}),e}sortBoundaryBoxesByAreas(t){const e=[];t.forEach((n,r)=>{const a=n.size,o=a.width*a.height;e.push({area:o,index:r})}),e.sort((n,r)=>n.area-r.area);const s=[];return e.forEach(n=>{s.push(n.index)}),s}}let ts=class extends zn{constructor(){super(),this.arcLengthDivisions=100}get startPoint(){return this.getPoint(0)}get endPoint(){return this.getPoint(1)}get length(){return this.getLength()}getPoint(t){throw new Error("AcGeCurve2d: .getPoint() not implemented.")}getPointAt(t){const e=this.getUtoTmapping(t);return this.getPoint(e)}getPoints(t=5){const e=[];for(let s=0;s<=t;s++)e.push(this.getPoint(s/t));return e}getSpacedPoints(t=5){const e=[];for(let s=0;s<=t;s++)e.push(this.getPointAt(s/t));return e}getLength(){const t=this.getLengths();return t[t.length-1]}getLengths(t=this.arcLengthDivisions){const e=[];let s,n=this.getPoint(0),r=0;e.push(0);for(let a=1;a<=t;a++)s=this.getPoint(a/t),r+=s.distanceTo(n),e.push(r),n=s;return e}getUtoTmapping(t,e){const s=this.getLengths();let n=0;const r=s.length;let a;e?a=e:a=t*s[r-1];let o=0,l=r-1,c;for(;o<=l;)if(n=Math.floor(o+(l-o)/2),c=s[n]-a,c<0)o=n+1;else if(c>0)l=n-1;else{l=n;break}if(n=l,s[n]===a)return n/(r-1);const d=s[n],u=s[n+1]-d,g=(a-d)/u;return(n+g)/(r-1)}getTangent(t){let e=t-1e-4,s=t+1e-4;e<0&&(e=0),s>1&&(s=1);const n=this.getPoint(e),r=this.getPoint(s),a=new v;return a.copy(r).sub(n).normalize(),a}getTangentAt(t){const e=this.getUtoTmapping(t);return this.getTangent(e)}},Ve=class yn extends ts{constructor(t,e,s,n,r){super();const a=+(t!==void 0)+ +(e!==void 0)+ +(s!==void 0)+ +(n!==void 0)+ +(r!==void 0);if(a==3)typeof t=="object"&&typeof e=="object"&&typeof s=="object"?this.createByThreePoints(t,e,s):this.createByStartEndPointsAndBulge(t,e,s);else if(a==5){const o=t;this.center=new v(o.x,o.y),this.radius=e,this._clockwise=r,this._startAngle=this._clockwise?this._mirrorAngle(L.normalizeAngle(s)):L.normalizeAngle(s),this._endAngle=this._clockwise?this._mirrorAngle(L.normalizeAngle(n)):L.normalizeAngle(n)}else throw yt.ILLEGAL_PARAMETERS}createByThreePoints(t,e,s){const n=(M,Y)=>({x:(M.x+Y.x)/2,y:(M.y+Y.y)/2}),r=(M,Y)=>(Y.y-M.y)/(Y.x-M.x),a=M=>-1/M,o=n(t,e),l=n(e,s),c=r(t,e),d=r(e,s),u=a(c),g=a(d),p=(M,Y,B,et)=>{const F=(et-Y)/(M-B),H=M*F+Y;return{x:F,y:H}},m=o.y-u*o.x,y=l.y-g*l.x,w=p(u,m,g,y),b=Math.sqrt(Math.pow(t.x-w.x,2)+Math.pow(t.y-w.y,2)),E=(M,Y)=>Math.atan2(M.y-Y.y,M.x-Y.x),I=E(t,w),T=E(e,w),A=E(s,w),W=A>I&&A<T||I>A&&I<T||T>A&&T<I;this.center=w,this.radius=b,this._clockwise=!W,this._startAngle=I,this._endAngle=A}createByStartEndPointsAndBulge(t,e,s){let n,r,a;s<0?(n=Math.atan(-s)*4,r=new U(t),a=new U(e)):(n=Math.atan(s)*4,r=new U(e),a=new U(t));const o=new U().subVectors(a,r),l=o.length(),c=new U().addVectors(r,o.multiplyScalar(.5)),d=Math.abs(l/2/Math.tan(n/2)),u=o.normalize(),g=s<0?-Math.PI/2:Math.PI/2,p=new U(u.x*Math.cos(g)-u.y*Math.sin(g),u.y*Math.cos(g)+u.x*Math.sin(g));let m;n<Math.PI?s<0?m=c.add(p.multiplyScalar(d)):m=c.add(p.multiplyScalar(-d)):s<0?m=c.add(p.multiplyScalar(-d)):m=c.add(p.multiplyScalar(d)),s<0?(this._startAngle=Math.atan2(r.y-m.y,r.x-m.x),this._endAngle=Math.atan2(a.y-m.y,a.x-m.x)):(this._startAngle=Math.atan2(a.y-m.y,a.x-m.x),this._endAngle=Math.atan2(r.y-m.y,r.x-m.x)),this._clockwise=s<0,this.center=m,this.radius=a.sub(m).length()}get center(){return this._center}set center(t){this._center=new v(t.x,t.y),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(t){this._radius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._clockwise?this._mirrorAngle(this._startAngle):this._startAngle}set startAngle(t){this._startAngle=this._clockwise?this._mirrorAngle(L.normalizeAngle(t)):L.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._clockwise?this._mirrorAngle(this._endAngle):this._endAngle}set endAngle(t){const e=this.startAngle==0&&t==j?t:L.normalizeAngle(t);this._endAngle=this._clockwise?this._mirrorAngle(e):e,this._boundingBoxNeedsUpdate=!0}_mirrorAngle(t){return(360-t*180/Math.PI)%360*Math.PI/180}_getInternalAngle(t){return this._clockwise?this._mirrorAngle(t):t}get deltaAngle(){const t=this._getInternalAngle(this.startAngle),e=this._getInternalAngle(this.endAngle);return this.clockwise?L.normalizeAngle(t-e):L.normalizeAngle(e-t)}get clockwise(){return this._clockwise}set clockwise(t){this._clockwise=t,this._boundingBoxNeedsUpdate=!0}get startPoint(){return this.getPointAtAngle(this.startAngle)}get endPoint(){return this.getPointAtAngle(this.endAngle)}get midPoint(){const t=this._getInternalAngle(this.startAngle),e=this._clockwise?L.normalizeAngle(t-this.deltaAngle/2):L.normalizeAngle(t+this.deltaAngle/2),s=this._clockwise?this._mirrorAngle(e):e;return this.getPointAtAngle(s)}get closed(){const t=this._getInternalAngle(this.startAngle),e=this._getInternalAngle(this.endAngle);return Math.abs(e-t)/Math.PI%2==0}calculateBoundingBox(){const t=[this.startPoint,this.endPoint],e=[0,Math.PI/2,Math.PI,3*Math.PI/2];for(const r of e){const a=this._getInternalAngle(r);L.isBetweenAngle(a,this._getInternalAngle(this.startAngle),this._getInternalAngle(this.endAngle),this.clockwise)&&t.push(this.getPointAtAngle(r))}const s=t.map(r=>r.x),n=t.map(r=>r.y);return new pt(new v(Math.min(...s),Math.min(...n)),new v(Math.max(...s),Math.max(...n)))}get length(){return Math.abs(this.deltaAngle*this.radius)}transform(t){const e=t,s=this.center.clone().applyMatrix2d(e),n=this.startPoint.clone().applyMatrix2d(e);if(this.closed)return this.center=s,this.radius=s.distanceTo(n),this._startAngle=Math.atan2(n.y-s.y,n.x-s.x),this._endAngle=this._startAngle,this._clockwise=e.determinant()<0?!this._clockwise:this._clockwise,this._boundingBoxNeedsUpdate=!0,this;const r=this.midPoint.clone().applyMatrix2d(e),a=this.endPoint.clone().applyMatrix2d(e),o=new yn(n,r,a),l=e.determinant()<0?!this.clockwise:this.clockwise,c=d=>{const u=L.normalizeAngle(d);return l?this._mirrorAngle(u):u};return this.center=o.center,this.radius=o.radius,this.clockwise=l,this.startAngle=c(Math.atan2(n.y-o.center.y,n.x-o.center.x)),this.endAngle=c(Math.atan2(a.y-o.center.y,a.x-o.center.x)),this._boundingBoxNeedsUpdate=!0,this}clone(){return new yn(this.center.clone(),this.radius,this._startAngle,this._endAngle,this.clockwise)}getPointAtAngle(t){const e=this._getInternalAngle(t),s=this.center.x+this.radius*Math.cos(e),n=this.center.y+this.radius*Math.sin(e);return new v(s,n)}getPoints(t=100){const e=[];let s=this.deltaAngle,n=this._getInternalAngle(this.startAngle);if(this.closed&&(s=j,n=0),this.clockwise)for(let r=0;r<=t;r++){const a=n-s*(r/t),o=this._clockwise?this._mirrorAngle(a):a,l=this.getPointAtAngle(o);e.push(new v(l.x,l.y))}else for(let r=0;r<=t;r++){const a=n+s*(r/t),o=this._clockwise?this._mirrorAngle(a):a,l=this.getPointAtAngle(o);e.push(new v(l.x,l.y))}return e}};class Tl extends qa{translate(t){return this.transform(new Q().makeTranslation(t.x,t.y,t.z))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}}class js extends Tl{}class pe extends js{constructor(t,e){super(),this._start=new x(t),this._end=new x(e)}get startPoint(){return this._start}set startPoint(t){this._start.copy(t),this._boundingBoxNeedsUpdate=!0}get endPoint(){return this._end}set endPoint(t){this._end.copy(t),this._boundingBoxNeedsUpdate=!0}get direction(){return new f().subVectors(this.endPoint,this.startPoint).normalize()}get midPoint(){return new x((this._start.x+this._end.x)/2,(this._start.y+this._end.y)/2,(this._start.z+this._end.z)/2)}nearestPoint(t){return this.project(t)}get length(){return this.startPoint.distanceTo(this.endPoint)}isPointOnLine(t){return this.project(t).distanceTo(t)<1e-6}at(t,e){return this.delta(e).multiplyScalar(t).add(this._start)}atLength(t,e=!1){if(e){const s=this.delta(xe).normalize();return new x(this._start).addScaledVector(s,t)}else{const s=this.delta(xe).normalize();return new x(this._end).addScaledVector(s,t)}}extend(t,e=!1){if(e){const s=xe.subVectors(this._start,this._end).normalize();this._start=new x(this._start).addScaledVector(s,t)}else{const s=this.delta(xe).normalize();this._end=new x(this._end).addScaledVector(s,t)}return this._boundingBoxNeedsUpdate=!0,this}closestPointToPointParameter(t,e){Hr.subVectors(t,this._start),ti.subVectors(this.endPoint,this.startPoint);const s=ti.dot(ti);let n=ti.dot(Hr)/s;return e&&(n=L.clamp(n,0,1)),n}closestPointToPoint(t,e,s){const n=this.closestPointToPointParameter(t,e);return this.delta(s).multiplyScalar(n).add(this._start)}delta(t){return t.subVectors(this._end,this._start)}distanceSq(){return this._start.distanceToSquared(this._end)}distance(){return this._start.distanceTo(this._end)}project(t){const e=this.direction,s=xe.subVectors(t,this.startPoint).dot(e);return new x().copy(e).multiplyScalar(s).add(this.startPoint)}perpPoint(t){const e=this.direction,s=this.startPoint,n=xe.subVectors(t,s).dot(e),r=xe.copy(e).multiplyScalar(n);return new x().addVectors(s,r)}calculateBoundingBox(){const t=new x(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y),Math.min(this._start.z,this._end.z)),e=new x(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y),Math.max(this._start.z,this._end.z));return new C(t,e)}transform(t){return this._start.applyMatrix4(t),this._end.applyMatrix4(t),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!1}copy(t){return this.startPoint=t.startPoint,this.endPoint=t.endPoint,this._boundingBoxNeedsUpdate=!0,this}clone(){return new pe(this._start.clone(),this._end.clone())}}const xe=new f,Hr=new f,ti=new f;class ze extends js{static computeCenterPoint(t,e,s){const n=new f().addVectors(t,e).multiplyScalar(.5),r=new f().addVectors(t,s).multiplyScalar(.5),a=new f().subVectors(e,t),o=new f().subVectors(s,t),l=new f().crossVectors(a,o).normalize();if(l.lengthSq()===0)return null;const c=new f().crossVectors(a,l).normalize(),d=new f().crossVectors(o,l).normalize(),u=c.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),g=d.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),p=new pe(n,n.clone().add(u)),m=new pe(r,r.clone().add(g)),y=new f;return p.closestPointToPoint(m.startPoint,!0,y)?y:null}static createByThreePoints(t,e,s){const n=ze.computeCenterPoint(t,e,s);if(n){const r=n.distanceTo(t),a=new f().subVectors(t,n),o=new f().subVectors(e,n),l=Math.atan2(a.y,a.x),c=Math.atan2(o.y,o.x);return new ze(n,r,l,c,f.Z_AXIS)}}constructor(t,e,s,n,r,a=f.X_AXIS){super(),this.center=t,this.radius=e,this.startAngle=s,this.endAngle=n,this.normal=r,this.refVec=a,(n-s)%j==0?(this.startAngle=0,this.endAngle=j):(this.startAngle=s,this.endAngle=n)}get center(){return this._center}set center(t){this._center=new x(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(t){if(t<0)throw yt.ILLEGAL_PARAMETERS;this._radius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=L.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==j?t:L.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return L.normalizeAngle(this.endAngle-this.startAngle)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}get clockwise(){return this.deltaAngle<=0}get normal(){return this._normal}set normal(t){this._normal=new f(t.x,t.y,t.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get refVec(){return this._refVec}set refVec(t){this._refVec=new f(t.x,t.y,t.z),this._refVec.normalize(),this._boundingBoxNeedsUpdate=!0}get startPoint(){return this.getPointAtAngle(this._startAngle)}get endPoint(){return this.getPointAtAngle(this._endAngle)}get midPoint(){let t=this.startAngle,e=this.deltaAngle;this.closed&&(t=0,e=j);const s=t+e*.5;return this.getPointAtAngle(s)}get length(){return this.closed?2*Math.PI*this.radius:Math.abs(this.deltaAngle*this.radius)}get area(){return this.closed?Math.PI*this.radius*this.radius:Math.abs(this.deltaAngle*this.radius*this.radius)}nearestPoint(t){const e=new f(t.x,t.y,t.z||0),s=this.center,n=this.normal,r=e.clone().sub(s).dot(n),a=e.clone().sub(n.clone().multiplyScalar(r)).clone().sub(s);if(a.lengthSq()===0)return this.startPoint.clone();a.normalize().multiplyScalar(this.radius);const o=s.clone().add(a),l=this.getAngle(o.clone()),c=this.startAngle,d=this.deltaAngle;let u=L.normalizeAngle(l-c);u<0&&(u=0),u>d&&(u=d);const g=this.getPointAtAngle(c+u),p=g.distanceTo(e),m=this.startPoint.distanceTo(e),y=this.endPoint.distanceTo(e);return m<p&&m<=y?this.startPoint.clone():y<p&&y<m?this.endPoint.clone():g}tangentPoints(t){const e=[],s=new f(t.x,t.y,t.z||0),n=this.center,r=this.normal,a=this.radius,o=s.clone().sub(n).dot(r),l=s.clone().sub(r.clone().multiplyScalar(o)),c=n.clone(),d=l.clone().sub(c).length();if(d<a)return e;const u=Math.acos(a/d),g=this.getAngle(l.clone()),p=[g+u,g-u];for(const m of p){const y=L.normalizeAngle(m-this.startAngle);y>=0&&y<=this.deltaAngle&&e.push(this.getPointAtAngle(this.startAngle+y))}return e}nearestTangentPoint(t){const e=this.tangentPoints(t);if(e.length===0)return null;const s=new x(t.x,t.y,t.z||0);return e.length===1||e[0].distanceTo(s)<e[1].distanceTo(s)?e[0]:e[1]}calculateBoundingBox(){const t=[this.startAngle,this.endAngle];for(let l=0;l<2*Math.PI;l+=Math.PI/2)L.isBetweenAngle(l,this.startAngle,this.endAngle)&&t.push(l);let e=1/0,s=1/0,n=1/0,r=-1/0,a=-1/0,o=-1/0;for(const l of t){const c=this.getPointAtAngle(l);c.x<e&&(e=c.x),c.y<s&&(s=c.y),c.z<n&&(n=c.z),c.x>r&&(r=c.x),c.y>a&&(a=c.y),c.z>o&&(o=c.z)}return new C({x:e,y:s,z:n},{x:r,y:a,z:o})}get closed(){return Math.abs(this.endAngle-this.startAngle)/Math.PI%2==0}getPoints(t){const e=[];let s=this.deltaAngle,n=this.startAngle;this.closed&&(s=j,n=0);for(let r=0;r<=t;r++){const a=n+s*(r/t),o=this.getPointAtAngle(a);e.push(o)}return e}transform(t){const e=this.center.clone().applyMatrix4(t),s=this.startPoint.clone().applyMatrix4(t),n=this.endPoint.clone().applyMatrix4(t),r=this.getPointAtAngle(this.closed?Math.PI/2:this.startAngle+this.deltaAngle/2).clone().applyMatrix4(t),a=new f(s).sub(e).normalize(),o=e.distanceTo(s);let l=new f().crossVectors(new f(s).sub(e),new f(r).sub(e)).normalize();l.lengthSq()===0&&(l=this.normal.clone().transformDirection(t));const c=d=>{const u=new f(d).sub(e);return Math.atan2(u.dot(Ur.crossVectors(l,a)),u.dot(a))};return this.center=e,this.radius=o,this.normal=l,this.refVec=a,this.startAngle=0,this.endAngle=this.closed?j:c(n),this._boundingBoxNeedsUpdate=!0,this}copy(t){return this.center=t.center,this.radius=t.radius,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this.normal=t.normal,this.refVec=t.refVec,this._boundingBoxNeedsUpdate=!0,this}clone(){return new ze(this.center.clone(),this.radius,this.startAngle,this.endAngle,this.normal,this.refVec)}getAngle(t){return t.sub(this.center),Math.atan2(t.dot(Ur.crossVectors(this.refVec,this.normal)),t.dot(this.refVec))}getPointAtAngle(t){const e=this.normal,s=this.refVec,n={x:e.y*s.z-e.z*s.y,y:e.z*s.x-e.x*s.z,z:e.x*s.y-e.y*s.x},r=this.center,a=this.radius;return new x(r.x+a*(s.x*Math.cos(t)+n.x*Math.sin(t)),r.y+a*(s.y*Math.cos(t)+n.y*Math.sin(t)),r.z+a*(s.z*Math.cos(t)+n.z*Math.sin(t)))}get plane(){const t=new f(this.center).distanceTo(On);return new Ds(this.normal,t)}}const Ur=new f;let ks=class ri extends ts{constructor(t,e,s,n=0,r=j,a=!1,o=0){super(),this.center=t,this.majorAxisRadius=e,this.minorAxisRadius=s,(r-n)%j==0?(this.startAngle=0,this.endAngle=j):(this.startAngle=n,this.endAngle=r),this.clockwise=a,this.rotation=o}get center(){return this._center}set center(t){this._center=new x(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(t){if(t<0)throw yt.ILLEGAL_PARAMETERS;this._majorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(t){if(t<0)throw yt.ILLEGAL_PARAMETERS;this._minorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=L.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==j?t:L.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get clockwise(){return this._clockwise}set clockwise(t){this._clockwise=t,this._boundingBoxNeedsUpdate=!0}get rotation(){return this._rotation}set rotation(t){this._rotation=t,this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return L.normalizeAngle(this.endAngle-this.startAngle)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}calculateBoundingBox(){let t=1/0,e=1/0,s=-1/0,n=-1/0;for(let r=0;r<=100;r++){const a=this.getPoint(r/100);t=Math.min(t,a.x),e=Math.min(e,a.y),s=Math.max(s,a.x),n=Math.max(n,a.y)}return new pt({x:t,y:e},{x:s,y:n})}get closed(){return this.deltaAngle==0}getPoint(t){const e=Math.PI*2;let s=this.endAngle-this.startAngle;const n=Math.abs(s)<Number.EPSILON;for(;s<0;)s+=e;for(;s>e;)s-=e;s<Number.EPSILON&&(n?s=0:s=e),this.clockwise===!0&&!n&&(s===e?s=-e:s=s-e);const r=this.startAngle+t*s;let a=this.center.x+this.majorAxisRadius*Math.cos(r),o=this.center.y+this.minorAxisRadius*Math.sin(r);if(this.rotation!==0){const l=Math.cos(this.rotation),c=Math.sin(this.rotation),d=a-this.center.x,u=o-this.center.y;a=d*l-u*c+this.center.x,o=d*c+u*l+this.center.y}return new v(a,o)}transform(t){const e=t,s=new v(this.center).applyMatrix2d(e),n=new x(s.x,s.y,this.center.z),r=this.getPointAtAngle(0).clone().applyMatrix2d(e),a=this.getPointAtAngle(Math.PI/2).clone().applyMatrix2d(e),o=new v(r).sub(s),l=new v(a).sub(s),c=o.length(),d=l.length(),u=Math.atan2(o.y,o.x),g=o.clone().normalize(),p=l.clone().normalize(),m=b=>{const E=new v(b).sub(s),I=E.dot(g),T=E.dot(p);return L.normalizeAngle(Math.atan2(T/d,I/c))},y=e.determinant()<0?!this.clockwise:this.clockwise,w=this.closed?new ri(n,c,d,0,j,y,u):new ri(n,c,d,m(this.startPoint.clone().applyMatrix2d(e)),m(this.endPoint.clone().applyMatrix2d(e)),y,u);return this.center=w.center,this.majorAxisRadius=w.majorAxisRadius,this.minorAxisRadius=w.minorAxisRadius,this._startAngle=w._startAngle,this._endAngle=w._endAngle,this._clockwise=w._clockwise,this.rotation=w.rotation,this._boundingBoxNeedsUpdate=!0,this}getPointAtAngle(t){return this.getPoint(this.closed?t/j:L.normalizeAngle(t-this.startAngle)/this.deltaAngle)}copy(t){return this.center=t.center,this.majorAxisRadius=t.majorAxisRadius,this.minorAxisRadius=t.minorAxisRadius,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this.clockwise=t.clockwise,this.rotation=t.rotation,this}clone(){return new ri(this.center,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle,this.clockwise,this.rotation)}};class Ze extends js{constructor(t,e,s,n,r,a=0,o=j){super(),this.center=t,this.normal=e,this.majorAxis=s,this.majorAxisRadius=n,this.minorAxisRadius=r;const l=Math.abs(o-a);Math.abs(l-j)<1e-10||Math.abs(l-2*j)<1e-10?(this.startAngle=0,this.endAngle=j):(this.startAngle=a,this.endAngle=o)}get center(){return this._center}set center(t){this._center=new x(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(t){if(t<0)throw yt.ILLEGAL_PARAMETERS;this._majorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(t){if(t<0)throw yt.ILLEGAL_PARAMETERS;this._minorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=L.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==j?t:L.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){const t=this.endAngle-this.startAngle;return Math.abs(t-j)<1e-10?j:L.normalizeAngle(t)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}get clockwise(){return this.deltaAngle<=0}get normal(){return this._normal}set normal(t){this._normal=new f(t.x,t.y,t.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get majorAxis(){return this._majorAxis}set majorAxis(t){this._majorAxis=new f(t.x,t.y,t.z),this._majorAxis.normalize(),this._boundingBoxNeedsUpdate=!0}get minorAxis(){return new f().crossVectors(this.normal,this.majorAxis).normalize()}get startPoint(){return this.getPointAtAngle(this._startAngle)}get endPoint(){return this.getPointAtAngle(this._endAngle)}get midPoint(){let t=this.startAngle,e=this.deltaAngle;(this.closed||Math.abs(e-j)<1e-10)&&(t=0,e=j);const s=t+e/2;return this.getPointAtAngle(s)}get isCircular(){return Cn.equal(this.majorAxisRadius,this.minorAxisRadius)}get length(){if(this.isCircular)return this.majorAxisRadius*Math.abs(this.deltaAngle);const t=1e3,e=this.deltaAngle/t;let s=0,n=this.getPointAtAngle(this.startAngle);for(let r=1;r<=t;r++){const a=this.startAngle+r*e,o=this.getPointAtAngle(a),l=o.x-n.x,c=o.y-n.y,d=o.z-n.z;s+=Math.sqrt(l*l+c*c+d*d),n=o}return s}get area(){const t=this.majorAxisRadius,e=this.minorAxisRadius,s=this.startAngle,n=s+this.deltaAngle;if(Math.abs(this.deltaAngle-j)<1e-10)return Math.PI*t*e;const r=t*e/2*(n-s-(Math.sin(n)*Math.cos(n)-Math.sin(s)*Math.cos(s)));return Math.abs(r)}calculateBoundingBox(){if(this.majorAxis.equals(f.X_AXIS)||this.majorAxis.equals(f.Y_AXIS)||this.majorAxis.isParallelTo(f.X_AXIS)||this.majorAxis.isParallelTo(f.Y_AXIS)){const t=[this.startAngle,this.endAngle];for(let l=0;l<2*Math.PI;l+=Math.PI/2)L.isBetweenAngle(l,this.startAngle,this.endAngle)&&t.push(l);let e=1/0,s=1/0,n=1/0,r=-1/0,a=-1/0,o=-1/0;for(const l of t){const c=this.getPointAtAngle(l);c.x<e&&(e=c.x),c.y<s&&(s=c.y),c.z<n&&(n=c.z),c.x>r&&(r=c.x),c.y>a&&(a=c.y),c.z>o&&(o=c.z)}return new C({x:e,y:s,z:n},{x:r,y:a,z:o})}else{let t=1/0,e=1/0,s=1/0,n=-1/0,r=-1/0,a=-1/0;for(let o=0;o<=100;o++){const l=this.startAngle+this.deltaAngle*(o/100),c=this.getPointAtAngle(l);t=Math.min(t,c.x),e=Math.min(e,c.y),s=Math.min(s,c.z),n=Math.max(n,c.x),r=Math.max(r,c.y),a=Math.max(a,c.z)}return new C({x:t,y:e,z:s},{x:n,y:r,z:a})}}get closed(){return this.deltaAngle==0}getPoints(t=100){const e=[];let s=this.deltaAngle,n=this.startAngle;this.closed&&(s=j,n=0);for(let r=0;r<=t;r++){const a=n+s*(r/t),o=this.getPointAtAngle(a);e.push(o)}return e}getPointAtAngle(t){const e=Math.cos(t),s=Math.sin(t),n=this.minorAxis.clone().multiplyScalar(this.minorAxisRadius).multiplyScalar(s),r=this.majorAxis.clone().multiplyScalar(e*this.majorAxisRadius).add(n);return new x(this.center.x+r.x,this.center.y+r.y,this.center.z+r.z)}contains(t){const e=new f(t).sub(this.center),s=e.dot(this.majorAxis),n=e.dot(this.minorAxis),r=s/this.majorAxisRadius,a=n/this.minorAxisRadius;return r*r+a*a<=1}transform(t){const e=t,s=this.center.clone().applyMatrix4(e),n=this.getPointAtAngle(0).clone().applyMatrix4(e),r=this.getPointAtAngle(Math.PI/2).clone().applyMatrix4(e),a=new f(n).sub(s),o=new f(r).sub(s),l=a.length(),c=o.length(),d=a.clone().normalize(),u=new f().crossVectors(a,o).normalize();let g=new f().crossVectors(u,d).normalize();g.dot(o)<0&&(u.negate(),g=new f().crossVectors(u,d).normalize());const p=y=>{const w=new f(y).sub(s),b=w.dot(d),E=w.dot(g);return L.normalizeAngle(Math.atan2(E/c,b/l))},m=this.closed?new Ze(s,u,d,l,c,0,j):new Ze(s,u,d,l,c,p(this.startPoint.clone().applyMatrix4(e)),p(this.endPoint.clone().applyMatrix4(e)));return this.center=m.center,this.normal=m.normal,this.majorAxis=m.majorAxis,this.majorAxisRadius=m.majorAxisRadius,this.minorAxisRadius=m.minorAxisRadius,this._startAngle=m._startAngle,this._endAngle=m._endAngle,this._boundingBoxNeedsUpdate=!0,this}copy(t){return this.center=t.center,this.normal=t.normal,this.majorAxis=t.majorAxis,this.majorAxisRadius=t.majorAxisRadius,this.minorAxisRadius=t.minorAxisRadius,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this._boundingBoxNeedsUpdate=!0,this}clone(){return new Ze(this.center,this.normal,this.majorAxis,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle)}get plane(){const t=new f(this.center).distanceTo(On);return new Ds(this.normal,t)}}class me extends ts{constructor(t=null,e=!1){super(),this._vertices=t||new Array,this._closed=e}get vertices(){return this._vertices}get numberOfVertices(){return this._vertices.length}get closed(){return this._closed}get startPoint(){if(this.numberOfVertices>0){const t=this._vertices[0];return new v(t.x,t.y)}throw new Error("Start point does not exist in an empty polyline.")}get endPoint(){const t=this.numberOfVertices;if(t>0)if(this.closed){const e=this._vertices[0];return new v(e.x,e.y)}else{const e=this._vertices[t-1];return new v(e.x,e.y)}throw new Error("End point does not exist in an empty polyline.")}get length(){let t=0;const e=this._vertices.length;for(let s=0;s<e;++s){const n=this._vertices[s];let r=null;if(s<e-1?r=this._vertices[s+1]:s==e-1&&this.closed&&(r=this._vertices[0]),r)if(n.bulge){const a=new Ve(n,r,n.bulge);t+=a.length}else t+=new v(n.x,n.y).distanceTo(r)}return t}set closed(t){this._closed=t,this._boundingBoxNeedsUpdate=!0}addVertexAt(t,e){t<=0?this._vertices.unshift(e):this._vertices.splice(t,0,e),this._boundingBoxNeedsUpdate=!0}removeVertexAt(t){if(t<0||t>=this._vertices.length)throw new Error(`Index ${t} is out of bounds. Valid range is 0 to ${this._vertices.length-1}.`);this._vertices.splice(t,1),this._boundingBoxNeedsUpdate=!0}reset(t,e){t?e!==void 0&&e>=0&&e<this._vertices.length&&(this._vertices=this._vertices.slice(0,e),this._boundingBoxNeedsUpdate=!0):(this._vertices=new Array,this._boundingBoxNeedsUpdate=!0)}getPointAt(t){const e=this._vertices[t];return new v(e.x,e.y)}calculateBoundingBox(){const t=this.getPoints(100);return new pt().setFromPoints(t)}transform(t){const e=t.determinant()<0;return this._vertices.forEach(s=>{const n=new v(s).applyMatrix2d(t);s.x=n.x,s.y=n.y,e&&s.bulge!=null&&(s.bulge=-s.bulge)}),this._boundingBoxNeedsUpdate=!0,this}getPoints3d(t,e){const s=[];return this.getPoints(t).forEach(n=>s.push(new x().set(n.x,n.y,e))),s}getPoints(t){const e=[],s=this._vertices.length;for(let n=0;n<s;++n){const r=this._vertices[n];if(r.bulge){let a=null;if(n<s-1?a=this._vertices[n+1]:n==s-1&&this.closed&&(a=this._vertices[0]),a){const o=new Ve(r,a,r.bulge).getPoints(t),l=o.length;for(let c=0;c<l;++c){const d=o[c];e.push(new v(d.x,d.y))}}}else e.push(new v(r.x,r.y)),n==s-1&&this.closed&&e.push(e[0])}return e}}class Ft extends ts{constructor(t,e){super(),this._start=new v(t),this._end=new v(e)}get startPoint(){return this._start}set startPoint(t){this._start.copy(t),this._boundingBoxNeedsUpdate=!0}get endPoint(){return this._end}set endPoint(t){this._end.copy(t),this._boundingBoxNeedsUpdate=!0}getPoints(){return[this.startPoint,this.endPoint]}get length(){return this.startPoint.distanceTo(this.endPoint)}calculateBoundingBox(){const t=new v(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y)),e=new v(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y));return new pt(t,e)}transform(t){return this._start.applyMatrix2d(t),this._end.applyMatrix2d(t),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!1}copy(t){return this.startPoint=t.startPoint,this.endPoint=t.endPoint,this._boundingBoxNeedsUpdate=!0,this}clone(){return new Ft(this._start.clone(),this._end.clone())}}let Ls=class Ot extends ts{constructor(t=[]){super(),this._curves=t}get curves(){return this._curves}static buildFromEdges(t,e=.001){if(t.length===0)return[];const s=[...t],n=[],r=e*e,a=(o,l)=>{const c=o.x-l.x,d=o.y-l.y;return c*c+d*d<=r};for(;s.length>0;){const o=[],l=s.shift();o.push(l);const c=Ot.getEdgeStartPoint(l);let d=Ot.getEdgeEndPoint(l);if(!a(c,d))for(;s.length>0;){const u=Ot.findConnectingEdge(s,d,r);if(u.index<0)break;let g=s.splice(u.index,1)[0];if(u.reverse&&(g=Ot.reverseEdge(g)),o.push(g),d=Ot.getEdgeEndPoint(g),a(d,c))break}n.push(new Ot(o))}return n}add(t){this._curves.push(t),this._boundingBoxNeedsUpdate=!0}get numberOfEdges(){return this._curves.length}get startPoint(){if(this._curves.length>0){const t=this._curves[0].startPoint;return new v(t.x,t.y)}throw new Error("Start point does not exist in an empty loop.")}get endPoint(){return this.startPoint}get length(){let t=0;return this._curves.forEach(e=>{t+=e.length}),t}calculateBoundingBox(){const t=this.getPoints(100),e=new pt;return e.setFromPoints(t),e}transform(t){const e=new Q().set(t.elements[0],t.elements[3],0,t.elements[6],t.elements[1],t.elements[4],0,t.elements[7],0,0,1,0,0,0,0,1);return this._curves.forEach(s=>{s instanceof Rt?s.transform(e):s.transform(t)}),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!0}getPoints(t){const e=[];return this.curves.forEach(s=>{s.getPoints(t).forEach(n=>{e.push(new v(n.x,n.y))})}),e}static findConnectingEdge(t,e,s){let n=-1,r=!1,a=Number.POSITIVE_INFINITY;for(let o=0;o<t.length;o++){const l=t[o],c=Ot.getEdgeStartPoint(l),d=Ot.getEdgeEndPoint(l),u=e.x-c.x,g=e.y-c.y,p=u*u+g*g;p<a&&(a=p,n=o,r=!1);const m=e.x-d.x,y=e.y-d.y,w=m*m+y*y;w<a&&(a=w,n=o,r=!0)}return a>s?{index:-1,reverse:!1}:{index:n,reverse:r}}static getEdgeStartPoint(t){const e=t.startPoint;return new v(e.x,e.y)}static getEdgeEndPoint(t){const e=t.endPoint;return new v(e.x,e.y)}static reverseEdge(t){return t instanceof Ft?new Ft(t.endPoint,t.startPoint):t instanceof Ve?new Ve(t.center,t.radius,t.endAngle,t.startAngle,!t.clockwise):t instanceof ks?new ks(t.center,t.majorAxisRadius,t.minorAxisRadius,t.endAngle,t.startAngle,!t.clockwise,t.rotation):t instanceof Rt?Ot.reverseSplineEdge(t):t}static reverseSplineEdge(t){const e=[...t.controlPoints].reverse(),s=t.knots,n=s[0],r=s[s.length-1],a=s.map(c=>n+r-c).reverse(),o=t.weights,l=o.length>0?[...o].reverse():void 0;return new Rt(e,a,l,t.degree,t.closed)}};class Qi{constructor(){this.c0=0,this.c1=0,this.c2=0,this.c3=0}init(t,e,s,n){this.c0=t,this.c1=s,this.c2=-3*t+3*e-2*s-n,this.c3=2*t-2*e+s+n}initCatmullRom(t,e,s,n,r){this.init(e,s,r*(s-t),r*(n-e))}initNonuniformCatmullRom(t,e,s,n,r,a,o){let l=(e-t)/r-(s-t)/(r+a)+(s-e)/a,c=(s-e)/a-(n-e)/(a+o)+(n-s)/o;l*=a,c*=a,this.init(e,s,l,c)}calc(t){const e=t*t,s=e*t;return this.c0+this.c1*t+this.c2*e+this.c3*s}}class Za extends js{constructor(t=[],e=!1,s="centripetal",n=.5){super(),this.isCatmullRomCurve3d=!0,this.type="CatmullRomCurve3d",this._tmp=new f,this._px=new Qi,this._py=new Qi,this._pz=new Qi,this._points=t.map(r=>new x(r)),this._closed=e,this._curveType=s,this._tension=n}get points(){return this._points}get closed(){return this._closed}get curveType(){return this._curveType}get tension(){return this._tension}get startPoint(){return this._points.length>0?this._points[0]:new x}get endPoint(){return this._points.length>0?this._points[this._points.length-1]:new x}get length(){if(this._points.length<2)return 0;let t=0;for(let e=1;e<this._points.length;e++)t+=this._points[e-1].distanceTo(this._points[e]);return this._closed&&this._points.length>2&&(t+=this._points[this._points.length-1].distanceTo(this._points[0])),t}getPoint(t,e=new x){const s=e,n=this._points,r=n.length;if(r===0)return s.set(0,0,0);if(r===1)return s.copy(n[0]);const a=(r-(this._closed?0:1))*t;let o=Math.floor(a),l=a-o;this._closed?o+=o>0?0:(Math.floor(Math.abs(o)/r)+1)*r:l===0&&o===r-1&&(o=r-2,l=1);let c,d;this._closed||o>0?c=n[(o-1)%r]:(this._tmp.subVectors(n[0],n[1]).add(n[0]),c=new x(this._tmp.x,this._tmp.y,this._tmp.z));const u=n[o%r],g=n[(o+1)%r];if(this._closed||o+2<r?d=n[(o+2)%r]:(this._tmp.subVectors(n[r-1],n[r-2]).add(n[r-1]),d=new x(this._tmp.x,this._tmp.y,this._tmp.z)),this._curveType==="centripetal"||this._curveType==="chordal"){const p=this._curveType==="chordal"?.5:.25;let m=Math.pow(c.distanceToSquared(u),p),y=Math.pow(u.distanceToSquared(g),p),w=Math.pow(g.distanceToSquared(d),p);y<1e-4&&(y=1),m<1e-4&&(m=y),w<1e-4&&(w=y),this._px.initNonuniformCatmullRom(c.x,u.x,g.x,d.x,m,y,w),this._py.initNonuniformCatmullRom(c.y,u.y,g.y,d.y,m,y,w),this._pz.initNonuniformCatmullRom(c.z,u.z,g.z,d.z,m,y,w)}else this._curveType==="catmullrom"&&(this._px.initCatmullRom(c.x,u.x,g.x,d.x,this._tension),this._py.initCatmullRom(c.y,u.y,g.y,d.y,this._tension),this._pz.initCatmullRom(c.z,u.z,g.z,d.z,this._tension));return s.set(this._px.calc(l),this._py.calc(l),this._pz.calc(l)),s}getPoints(t){const e=[];for(let s=0;s<=t;s++)e.push(this.getPoint(s/t));return e}setPoints(t){this._points=t.map(e=>new x(e)),this._boundingBoxNeedsUpdate=!0}setClosed(t){this._closed!==t&&(this._closed=t,this._boundingBoxNeedsUpdate=!0)}setCurveType(t){this._curveType=t}setTension(t){this._tension=t}transform(t){return this._points=this._points.map(e=>{const s=new x;return s.copy(e),s.applyMatrix4(t),s}),this._boundingBoxNeedsUpdate=!0,this}calculateBoundingBox(){if(this._points.length===0)return new C;const t=new C;return this._points.forEach(e=>{t.expandByPoint(e)}),t}}let Lt=class ai{constructor(t,e,s,n){this._degree=t,this._knots=[...e],this._controlPoints=s.map(r=>({x:r.x,y:r.y,z:r.z})),this._weights=n?[...n]:new Array(s.length).fill(1)}degree(){return this._degree}knots(){return[...this._knots]}controlPoints(){return this._controlPoints.map(t=>({x:t.x,y:t.y,z:t.z}))}weights(){return[...this._weights]}point(t){const e=this._controlPoints.map(s=>[s.x,s.y,s.z]);return Ps(t,this._degree,this._knots,e,this._weights)}length(){const t=this._controlPoints.map(e=>[e.x,e.y,e.z]);return Ga(this._degree,this._knots,t,this._weights)}static byKnotsControlPointsWeights(t,e,s,n){return new ai(t,e,s,n)}static byPoints(t,e,s="Uniform",n,r){const a=Rn(t,e,s,n,r),o=a.controlPoints.map(l=>({x:l[0],y:l[1],z:l[2]}));return new ai(e,a.knots,o,a.weights)}getParameterRange(){const t=this._knots[this._degree],e=this._knots[this._knots.length-this._degree-1];return{start:t,end:e}}getPoints(t){const e=[],{start:s,end:n}=this.getParameterRange();for(let r=0;r<=t;r++){const a=s+(n-s)*(r/t);e.push(this.point(a))}return e}isClosed(t=1e-6){const{start:e,end:s}=this.getParameterRange(),n=this.point(e),r=this.point(s),a=n[0]-r[0],o=n[1]-r[1],l=n[2]-r[2];return Math.sqrt(a*a+o*o+l*l)<t}static createFitPointsForClosedCurve(t){if(t.length<4)throw new Error("At least 4 points are required for a closed NURBS curve");const e=new Za(t,!0,"centripetal"),s=Math.max(50,t.length*2);return e.getPoints(s)}static createClosedCurve(t,e,s="Chord"){const n=this.createFitPointsForClosedCurve(t).map(r=>[r.x,r.y,r.z]);return ai.byPoints(n,e,s)}},Rt=class Ka extends js{constructor(t,e,s,n,r,a){super();const o=arguments.length;if(this._degree=3,this._closed=!1,Array.isArray(e)){if(o<2||o>5)throw yt.ILLEGAL_PARAMETERS;this._controlPoints=t;let l,c=3,d=!1;if(o>=3&&(Array.isArray(s)?(l=s,o>=4&&(c=n||3),o>=5&&(d=r)):s!==void 0&&(c=s||3,o>=4&&(d=n))),s===void 0&&o>=4&&(c=n||3,o>=5&&(d=r)),this._degree=c,this._closed=d,this._controlPoints.length<this._degree+1)throw yt.ILLEGAL_PARAMETERS;this._nurbsCurve=Lt.byKnotsControlPointsWeights(this._degree,e,this._controlPoints,l)}else{if(o<2||o>6)throw yt.ILLEGAL_PARAMETERS;this._fitPoints=t,this._knotParameterization=e,o>=3&&(this._degree=s||3);const l=typeof n=="boolean";o>=4&&l&&(this._closed=n),l?(o>=5&&(this._startTangent=r),o>=6&&(this._endTangent=a)):(o>=4&&(this._startTangent=n),o>=5&&(this._endTangent=r)),this._closed&&(this._startTangent=void 0,this._endTangent=void 0);const c=(this._startTangent?1:0)+(this._endTangent?1:0);if(this._fitPoints.length+c<this._degree+1)throw yt.ILLEGAL_PARAMETERS;if(this._closed)this._nurbsCurve=Lt.createClosedCurve(this._fitPoints,this._degree,this._knotParameterization);else{const d=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=Lt.byPoints(d,this._degree,this._knotParameterization,this._startTangent?this.toNurbsPoint(this._startTangent):void 0,this._endTangent?this.toNurbsPoint(this._endTangent):void 0)}this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints().map(d=>[d.x,d.y,d.z||0]))}}buildCurve(){if(this._fitPoints&&this._knotParameterization){if(this._closed){const t=Lt.createFitPointsForClosedCurve(this._fitPoints),e=this.toNurbsPoints(t);this._nurbsCurve=Lt.byPoints(e,this._degree,this._knotParameterization)}else{const t=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=Lt.byPoints(t,this._degree,this._knotParameterization,this._startTangent?this.toNurbsPoint(this._startTangent):void 0,this._endTangent?this.toNurbsPoint(this._endTangent):void 0)}this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints().map(t=>[t.x,t.y,t.z||0]))}else if(this._controlPoints)if(this._closed){const t=Lt.createFitPointsForClosedCurve(this._controlPoints),e=this.toNurbsPoints(t);this._nurbsCurve=Lt.byPoints(e,this._degree,this._knotParameterization),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints().map(s=>[s.x,s.y,s.z||0]))}else{const t=this._nurbsCurve.knots(),e=this._nurbsCurve.weights();this._nurbsCurve=Lt.byKnotsControlPointsWeights(this._degree,t,this._controlPoints,e)}}setClosed(t){this._closed!==t&&(this._closed=t,this._boundingBoxNeedsUpdate=!0,this.buildCurve())}get degree(){return this._degree}get knotParameterization(){return this._knotParameterization}get controlPoints(){return this._controlPoints.map(t=>({x:t.x,y:t.y,z:t.z||0}))}get fitPoints(){var t;return(t=this._fitPoints)==null?void 0:t.map(e=>({x:e.x,y:e.y,z:e.z||0}))}get knots(){return[...this._nurbsCurve.knots()]}get weights(){return[...this._nurbsCurve.weights()]}get startPoint(){const t=this._nurbsCurve.knots(),e=this._nurbsCurve.degree(),s=t[e],n=this._nurbsCurve.point(s);return new x(n[0],n[1],n[2])}get endPoint(){const t=this._nurbsCurve.knots(),e=this._nurbsCurve.degree(),s=t[t.length-e-1],n=this._nurbsCurve.point(s);return new x(n[0],n[1],n[2])}get length(){return this._nurbsCurve.length()}getFitPointAt(t){if(!this._fitPoints)throw new Error("No fit points in this spline");const e=this._fitPoints.length,s=t<0||t>=e?e-1:t,n=this._fitPoints[s];return{x:n.x,y:n.y,z:n.z||0}}getControlPointAt(t){const e=this._controlPoints.length,s=t<0||t>=e?e-1:t;return this._controlPoints[s]}getPoints(t=100){const e=this._nurbsCurve,s=[],n=e.knots(),r=this._nurbsCurve.degree(),a=n[r],o=n[n.length-r-1],l=(o-a)/(t-1);for(let c=0;c<t;c++){const d=c===t-1?o:a+c*l,u=e.point(d);s.push(new x(u[0],u[1],u[2]))}return s}getCurvePoints(t,e){const s=[],n=t.knots(),r=t.degree(),a=n[r],o=(n[n.length-r-1]-a)/(e-1);for(let l=0;l<e;l++){const c=a+l*o;s.push(t.point(c))}return s}calculateBoundingBox(){const t=this.getPoints(100);return new C().setFromPoints(t)}get closed(){return this._closed}set closed(t){this.setClosed(t)}transform(t){if(this._fitPoints&&this._knotParameterization)this._fitPoints=this._fitPoints.map(e=>new x(e).applyMatrix4(t)),this._startTangent&&(this._startTangent=new x(this._startTangent).transformDirection(t)),this._endTangent&&(this._endTangent=new x(this._endTangent).transformDirection(t)),this.buildCurve();else{const e=this._nurbsCurve.knots(),s=this._nurbsCurve.weights();this._controlPoints=this._controlPoints.map(n=>new x(n).applyMatrix4(t)),this._nurbsCurve=Lt.byKnotsControlPointsWeights(this._degree,e,this._controlPoints,s.length>0?s:void 0)}return this._boundingBoxNeedsUpdate=!0,this}toNurbsPoints(t){const e=new Array(t.length);return t.forEach((s,n)=>{e[n]=[s.x,s.y,s.z||0]}),e}toGePoints(t){const e=new Array(t.length);return t.forEach((s,n)=>{e[n]={x:s[0],y:s[1],z:s[2]}}),e}toNurbsPoint(t){return[t.x,t.y,t.z||0]}static createClosedSpline(t,e="Uniform",s=3){if(t.length<s+1)throw new Error(`At least ${s+1} points are required for a degree ${s} closed spline`);return new Ka(t,e,s,!0)}};var Vn=(i=>(i.ClosedFilled="",i.Dot="_DOT",i.DotSmall="_DOTSMALL",i.DotBlank="_DOTBLANK",i.Origin="_ORIGIN",i.Origin2="_ORIGIN2",i.Open="_OPEN",i.Open90="_OPEN90",i.Open30="_OPEN30",i.Closed="_CLOSED",i.Small="_SMALL",i.None="_NONE",i.Oblique="_OBLIQUE",i.BoxFilled="_BOXFILLED",i.Box="_BOXBLANK",i.ClosedBlank="_CLOSEDBLANK",i.DatumBlank="_DATUMBLANK",i.DatumFilled="_DATUMFILLED",i.Integral="_INTEGRAL",i.ArchTick="_ARCHTICK",i))(Vn||{}),De=(i=>(i[i.ByBlock=-2]="ByBlock",i[i.ByDIPs=-4]="ByDIPs",i[i.ByLayer=-1]="ByLayer",i[i.ByLineWeightDefault=-3]="ByLineWeightDefault",i[i.LineWeight000=0]="LineWeight000",i[i.LineWeight005=5]="LineWeight005",i[i.LineWeight009=9]="LineWeight009",i[i.LineWeight013=13]="LineWeight013",i[i.LineWeight015=15]="LineWeight015",i[i.LineWeight018=18]="LineWeight018",i[i.LineWeight020=20]="LineWeight020",i[i.LineWeight025=25]="LineWeight025",i[i.LineWeight030=30]="LineWeight030",i[i.LineWeight035=35]="LineWeight035",i[i.LineWeight040=40]="LineWeight040",i[i.LineWeight050=50]="LineWeight050",i[i.LineWeight053=53]="LineWeight053",i[i.LineWeight060=60]="LineWeight060",i[i.LineWeight070=70]="LineWeight070",i[i.LineWeight080=80]="LineWeight080",i[i.LineWeight090=90]="LineWeight090",i[i.LineWeight100=100]="LineWeight100",i[i.LineWeight106=106]="LineWeight106",i[i.LineWeight120=120]="LineWeight120",i[i.LineWeight140=140]="LineWeight140",i[i.LineWeight158=158]="LineWeight158",i[i.LineWeight200=200]="LineWeight200",i[i.LineWeight211=211]="LineWeight211",i))(De||{}),ie=(i=>(i[i.LEFT_TO_RIGHT=1]="LEFT_TO_RIGHT",i[i.RIGHT_TO_LEFT=2]="RIGHT_TO_LEFT",i[i.TOP_TO_BOTTOM=3]="TOP_TO_BOTTOM",i[i.BOTTOM_TO_TOP=4]="BOTTOM_TO_TOP",i[i.BY_STYLE=5]="BY_STYLE",i))(ie||{}),ot=(i=>(i[i.TopLeft=1]="TopLeft",i[i.TopCenter=2]="TopCenter",i[i.TopRight=3]="TopRight",i[i.MiddleLeft=4]="MiddleLeft",i[i.MiddleCenter=5]="MiddleCenter",i[i.MiddleRight=6]="MiddleRight",i[i.BottomLeft=7]="BottomLeft",i[i.BottomCenter=8]="BottomCenter",i[i.BottomRight=9]="BottomRight",i))(ot||{}),Dn=(i=>(i[i.OPTIMIZED_2D=0]="OPTIMIZED_2D",i[i.WIREFRAME=1]="WIREFRAME",i[i.HIDDEN_LINE=2]="HIDDEN_LINE",i[i.FLAT_SHADED=3]="FLAT_SHADED",i[i.GOURAUD_SHADED=4]="GOURAUD_SHADED",i[i.FLAT_SHADED_WITH_WIREFRAME=5]="FLAT_SHADED_WITH_WIREFRAME",i[i.GOURAUD_SHADED_WITH_WIREFRAME=6]="GOURAUD_SHADED_WITH_WIREFRAME",i))(Dn||{}),jn=(i=>(i[i.NON_ORTHOGRAPHIC=0]="NON_ORTHOGRAPHIC",i[i.TOP=1]="TOP",i[i.BOTTOM=2]="BOTTOM",i[i.FRONT=3]="FRONT",i[i.BACK=4]="BACK",i[i.LEFT=5]="LEFT",i[i.RIGHT=6]="RIGHT",i))(jn||{}),Wn=(i=>(i[i.ONE_DISTANT_LIGHT=0]="ONE_DISTANT_LIGHT",i[i.TWO_DISTANT_LIGHTS=1]="TWO_DISTANT_LIGHTS",i))(Wn||{});let Qa=class Ja{constructor(){this._number=-1,this._id="",this._groupId="",this._centerPoint=new x,this._height=0,this._width=0,this._viewCenter=new x,this._viewHeight=0}get number(){return this._number}set number(t){this._number=t}get id(){return this._id}set id(t){this._id=t}get groupId(){return this._groupId}set groupId(t){this._groupId=t}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint.copy(t)}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get box(){const t=new pt;return t.setFromCenterAndSize(this.centerPoint,{x:this.width,y:this.height}),t}get viewCenter(){return this._viewCenter}set viewCenter(t){this._viewCenter.copy(t)}get viewHeight(){return this._viewHeight}set viewHeight(t){this._viewHeight=t}get viewWidth(){return this.viewHeight*(this.width/this.height)}get viewBox(){const t=new pt;return t.setFromCenterAndSize(this.viewCenter,{x:this.viewWidth,y:this.viewHeight}),t}clone(){const t=new Ja;return t.id=this.id,t.groupId=this.groupId,t.number=this.number,t.centerPoint.copy(this.centerPoint),t.height=this.height,t.width=this.width,t.viewCenter.copy(this.viewCenter),t.viewHeight=this.viewHeight,t}copy(t){return this.id=t.id,this.groupId=t.groupId,this.number=t.number,this.centerPoint.copy(t.centerPoint),this.height=t.height,this.width=t.width,this.viewCenter.copy(t.viewCenter),this.viewHeight=t.viewHeight,this}};const Kn=class Kn extends re{constructor(){super(...arguments),this._lineType=qe,this._visibility=!0,this._transparency=new Gi}get type(){return this.constructor.typeName}get layer(){return this._layer==null&&(this._layer=this.database.clayer??"0"),this._layer}set layer(t){this._layer=t}get color(){return this._color==null&&(this._color=new tt,this.database.cecolor&&this._color.copy(this.database.cecolor)),this._color}set color(t){this._color==null&&(this._color=new tt),this._color.copy(t)}get resolvedColor(){let t=this.color;if(t.isByLayer){const e=this.getLayerColor();e&&e.RGB!=null&&(t=e)}else t.isByBlock;return t}get rgbColor(){const e=this.resolvedColor.RGB;return e??16777215}get lineType(){return this._lineType}set lineType(t){this._lineType=t||qe}get lineWeight(){return this._lineWeight==null&&(this._lineWeight=this.database.celweight??De.ByLayer),this._lineWeight}set lineWeight(t){this._lineWeight=t}get linetypeScale(){return this._linetypeScale==null&&(this._linetypeScale=this.database.celtscale??-1),this._linetypeScale}set linetypeScale(t){this._linetypeScale=t}get visibility(){return this._visibility}set visibility(t){this._visibility=t}get transparency(){return this._transparency}set transparency(t){this._transparency=t.clone()}dxfOutFields(t){t.writeSubclassMarker("AcDbEntity"),t.writeString(8,this.layer),t.writeString(6,this.lineType),t.writeDouble(48,this.linetypeScale),t.writeInt16(60,this.visibility?0:1),t.writeCmColor(this.color),t.writeInt16(370,this.lineWeight),t.writeTransparency(this.transparency);const e=this.database.tables.blockTable.getIdAt(this.ownerId);return e!=null&&e.isPaperSapce&&t.writeInt16(67,1),this}resolveEffectiveProperties(){this._layer==null&&(this._layer=this.database.clayer??"0"),this._color==null&&(this._color=new tt,this.database.cecolor&&this._color.copy(this.database.cecolor)),this._linetypeScale==null&&(this._linetypeScale=this.database.celtscale??-1),this._lineWeight==null&&(this._lineWeight=this.database.celweight??De.ByLayer)}get properties(){return{type:this.type,groups:[this.getGeneralProperties()]}}subGetGripPoints(){return new Array}subGetOsnapPoints(t,e,s,n,r){}transformBy(t){return this}erase(){return this.database.tables.blockTable.removeEntity(this.objectId)}worldDraw(t,e){const s=t.subEntityTraits;s.color=this.resolvedColor,s.rgbColor=this.rgbColor,s.lineType=this.lineStyle,s.lineTypeScale=this.linetypeScale,s.lineWeight=this.lineWeight,s.transparency=this.transparency,s.layer=this.layer,"thickness"in this&&(s.thickness=this.thickness);const n=this.subWorldDraw(t,e);return this.attachEntityInfo(n),n}triggerModifiedEvent(){this.database.events.entityModified.dispatch({database:this.database,entity:this})}getGeneralProperties(){return{groupName:"general",properties:[{name:"handle",type:"int",editable:!1,accessor:{get:()=>this.objectId}},{name:"color",type:"color",editable:!0,accessor:{get:()=>this.color,set:t=>{this.color.copy(t)}}},{name:"layer",type:"string",editable:!0,accessor:{get:()=>this.layer,set:t=>{this.layer=t}}},{name:"linetype",type:"linetype",editable:!0,accessor:{get:()=>this.lineType,set:t=>{this.lineType=t}}},{name:"linetypeScale",type:"float",editable:!0,accessor:{get:()=>this.linetypeScale,set:t=>{this.linetypeScale=t}}},{name:"lineWeight",type:"lineweight",editable:!0,accessor:{get:()=>this.lineWeight,set:t=>{this.lineWeight=t}}},{name:"transparency",type:"transparency",editable:!0,accessor:{get:()=>this.transparency,set:t=>{this.transparency=t}}}]}}get lineStyle(){var n;const{type:t,name:e}=this.getLineType(),s=(n=this.database)==null?void 0:n.tables.linetypeTable.getAt(e);return s?{type:t,...s.linetype}:{type:t,name:e,standardFlag:0,description:"",totalPatternLength:0}}getLineType(){if(this.lineType==qe){const t=this.database.tables.layerTable.getAt(this.layer);if(t&&t.linetype)return{type:"ByLayer",name:t.linetype}}else return this.lineType==gi?{type:"ByBlock",name:$e}:{type:"UserSpecified",name:this.lineType};return{type:"UserSpecified",name:$e}}getLayerColor(){const t=this.database.tables.layerTable.getAt(this.layer);return t!=null?t.color:null}attachEntityInfo(t){t&&(t.objectId=this.objectId,this.attrs.has("ownerId")&&(t.ownerId=this.ownerId),t.layerName=this.layer,t.visible=this.visibility)}};Kn.typeName="Entity";let gt=Kn;const Qn=class Qn extends gt{};Qn.typeName="Curve";let rt=Qn;var Ue=(i=>(i[i.SimplePoly=0]="SimplePoly",i[i.FitCurvePoly=1]="FitCurvePoly",i[i.QuadSplinePoly=2]="QuadSplinePoly",i[i.CubicSplinePoly=3]="CubicSplinePoly",i))(Ue||{});const Jn=class Jn extends rt{get dxfTypeName(){return"POLYLINE"}constructor(t,e,s=0,n=!1,r=0,a=0,o=null){super(),this._polyType=t,this._elevation=s;const l=o&&(o==null?void 0:o.length)===e.length,c=e.map((d,u)=>({x:d.x,y:d.y,bulge:l?o[u]:void 0}));this._geo=new me(c,n)}get polyType(){return this._polyType}set polyType(t){this._polyType=t}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get closed(){return this._geo.closed}set closed(t){this._geo.closed=t}get numberOfVertices(){return this._geo.numberOfVertices}getPointAt(t){return this._geo.getPointAt(t)}getBulgeAt(t){const e=this._geo.vertices[t];return(e==null?void 0:e.bulge)||0}get geometricExtents(){const t=this._geo.box;return new C({x:t.min.x,y:t.min.y,z:this._elevation},{x:t.max.x,y:t.max.y,z:this._elevation})}subGetGripPoints(){const t=new Array;for(let e=0;e<this._geo.numberOfVertices;++e){const s=this._geo.getPointAt(e);t.push(new x(s.x,s.y,0))}return t}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:for(let r=0;r<this._geo.numberOfVertices;++r){const a=this._geo.getPointAt(r);n.push(new x(a.x,a.y,0))}break}}transformBy(t){const e=t.determinant()<0;let s=this._elevation;return this._geo.vertices.forEach(n=>{const r=new x(n.x,n.y,this._elevation).applyMatrix4(t);n.x=r.x,n.y=r.y,s=r.z,e&&n.bulge!=null&&(n.bulge=-n.bulge)}),this._elevation=s,this._geo._boundingBoxNeedsUpdate=!0,this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0}]},accessor:{get:()=>this._geo.vertices}},{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]},{groupName:"others",properties:[{name:"closed",type:"float",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}}]}]}}subWorldDraw(t){const e=[];return this._geo.getPoints(100).forEach(n=>e.push(new x().set(n.x,n.y,this.elevation))),t.lines(e)}dxfOut(t,e=!1){super.dxfOut(t,e);for(let s=0;s<this.numberOfVertices;++s)t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb2dVertex"),t.writePoint3d(10,{x:this.getPointAt(s).x,y:this.getPointAt(s).y,z:this.elevation}),t.writeDouble(42,this.getBulgeAt(s)),t.writeInt16(70,0);return t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDb2dPolyline");let e=this.closed?1:0;return this.polyType===1&&(e|=2),this.polyType===2&&(e|=4),this.polyType===3&&(e|=8),t.writeInt16(66,this.numberOfVertices>0?1:0),t.writeInt16(70,e),t.writeDouble(10,0),t.writeDouble(20,0),t.writeDouble(30,this.elevation),this}};Jn.typeName="2dPolyline";let mi=Jn;var to=(i=>(i[i.Vertex=0]="Vertex",i[i.CurveFitVertex=1]="CurveFitVertex",i[i.SplineFitVertex=8]="SplineFitVertex",i[i.SplineCtlVertex=9]="SplineCtlVertex",i))(to||{});const tr=class tr extends gt{get dxfTypeName(){return"VERTEX"}constructor(){super(),this._position=new x,this._bulge=0,this._startWidth=0,this._endWidth=0,this._vertexType=0}get position(){return this._position}set position(t){this._position.copy(t)}get bulge(){return this._bulge}set bulge(t){this._bulge=t}get startWidth(){return this._startWidth}set startWidth(t){this._startWidth=t}get endWidth(){return this._endWidth}set endWidth(t){this._endWidth=t}get vertexType(){return this._vertexType}set vertexType(t){this._vertexType=t}get geometricExtents(){return new C().expandByPoint(this._position)}subGetGripPoints(){const t=new Array;return t.push(this._position),t}subGetOsnapPoints(t,e,s,n){n.push(this._position)}transformBy(t){return this._position.applyMatrix4(t),this}subWorldDraw(t){}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb2dVertex"),t.writePoint2d(10,this.position),t.writeDouble(40,this.startWidth),t.writeDouble(41,this.endWidth),t.writeDouble(42,this.bulge),t.writeInt16(70,this.vertexType),this}};tr.typeName="2dVertex";let _n=tr;var Es=(i=>(i[i.SimplePoly=0]="SimplePoly",i[i.QuadSplinePoly=1]="QuadSplinePoly",i[i.CubicSplinePoly=2]="CubicSplinePoly",i))(Es||{});const er=class er extends rt{get dxfTypeName(){return"POLYLINE"}constructor(t,e,s=!1){super(),this._polyType=t,this._geo=new me(e,s)}get polyType(){return this._polyType}set polyType(t){this._polyType=t}get closed(){return this._geo.closed}set closed(t){this._geo.closed=t}get numberOfVertices(){return this._geo.numberOfVertices}getPointAt(t){const e=this._geo.vertices[t];return new x(e.x,e.y,e.z||0)}get geometricExtents(){const t=this._geo.vertices.map(e=>new x(e.x,e.y,e.z||0));return new C().setFromPoints(t)}subGetGripPoints(){const t=new Array;for(let e=0;e<this._geo.numberOfVertices;++e){const s=this._geo.getPointAt(e);t.push(new x(s.x,s.y,0))}return t}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:for(let r=0;r<this._geo.numberOfVertices;++r)n.push(this.getPointAt(r));break}}transformBy(t){return this._geo.vertices.forEach(e=>{const s=new x(e.x,e.y,e.z||0).applyMatrix4(t);e.x=s.x,e.y=s.y,e.z=s.z}),this._geo._boundingBoxNeedsUpdate=!0,this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0},{name:"z",type:"float",editable:!0}]},accessor:{get:()=>this._geo.vertices}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]},{groupName:"others",properties:[{name:"closed",type:"float",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}}]}]}}subWorldDraw(t){const e=this._geo.vertices.map(s=>new x(s.x,s.y,s.z||0));return t.lines(e)}dxfOut(t,e=!1){super.dxfOut(t,e);for(let s=0;s<this.numberOfVertices;++s){const n=this.getPointAt(s);t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb3dPolylineVertex"),t.writePoint3d(10,{x:n.x,y:n.y,z:n.z}),t.writeInt16(70,32)}return t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDb3dPolyline");let e=this.closed?1:0;return e|=8,this.polyType===1&&(e|=16),this.polyType===2&&(e|=32),t.writeInt16(66,this.numberOfVertices>0?1:0),t.writeInt16(70,e),this}};er.typeName="3dPolyline";let yi=er;var eo=(i=>(i[i.SimpleVertex=0]="SimpleVertex",i[i.ControlVertex=1]="ControlVertex",i[i.FitVertex=2]="FitVertex",i))(eo||{});const sr=class sr extends gt{get dxfTypeName(){return"VERTEX"}constructor(){super(),this._position=new x,this._vertexType=0}get position(){return this._position}set position(t){this._position.copy(t)}get vertexType(){return this._vertexType}set vertexType(t){this._vertexType=t}get geometricExtents(){return new C().expandByPoint(this._position)}subGetGripPoints(){const t=new Array;return t.push(this._position),t}subGetOsnapPoints(t,e,s,n){n.push(this._position)}transformBy(t){return this._position.applyMatrix4(t),this}subWorldDraw(t){}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb3dPolylineVertex"),t.writePoint3d(10,this.position),t.writeInt16(70,this.vertexType|32),this}};sr.typeName="3dVertex";let wn=sr;const ir=class ir extends rt{get dxfTypeName(){return"ARC"}constructor(t,e,s,n,r=f.Z_AXIS){super(),this._geo=new ze(t,e,s,n,r,f.X_AXIS)}get center(){return this._geo.center}set center(t){this._geo.center=t}get radius(){return this._geo.radius}set radius(t){this._geo.radius=t}get startAngle(){return this._geo.startAngle}set startAngle(t){this._geo.startAngle=t}get endAngle(){return this._geo.endAngle}set endAngle(t){this._geo.endAngle=t}get normal(){return this._geo.normal}set normal(t){this._geo.normal=t}get startPoint(){return this._geo.startPoint}get endPoint(){return this._geo.endPoint}get midPoint(){return this._geo.midPoint}get geometricExtents(){return this._geo.box}get closed(){return this._geo.closed}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"centerX",type:"float",editable:!0,accessor:{get:()=>this.center.x,set:t=>{this.center.x=t}}},{name:"centerY",type:"float",editable:!0,accessor:{get:()=>this.center.y,set:t=>{this.center.y=t}}},{name:"centerZ",type:"float",editable:!0,accessor:{get:()=>this.center.z,set:t=>{this.center.z=t}}},{name:"radius",type:"float",editable:!0,accessor:{get:()=>this.radius,set:t=>{this.radius=t}}},{name:"startAngle",type:"float",editable:!0,accessor:{get:()=>this.startAngle,set:t=>{this.startAngle=t}}},{name:"endAngle",type:"float",editable:!0,accessor:{get:()=>this.endAngle,set:t=>{this.endAngle=t}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:t=>{this.normal.x=t}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:t=>{this.normal.y=t}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:t=>{this.normal.z=t}}},{name:"arcLength",type:"float",editable:!1,accessor:{get:()=>this._geo.length}},{name:"totalAngle",type:"float",editable:!1,accessor:{get:()=>L.radToDeg(Math.abs(this._geo.deltaAngle))}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this._geo.area}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.center),t.push(this.startPoint),t.push(this.endPoint),t}subGetOsnapPoints(t,e,s,n){const r=this.startPoint,a=this.endPoint;switch(t){case R.EndPoint:n.push(r),n.push(a);break;case R.MidPoint:n.push(this.midPoint);break;case R.Nearest:{const o=this._geo.nearestPoint(e);n.push(o)}break;case R.Perpendicular:break;case R.Tangent:{const o=this._geo.tangentPoints(e);n.push(...o);break}}}transformBy(t){return this._geo.transform(t),this}subWorldDraw(t){return t.circularArc(this._geo)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbArc"),t.writePoint3d(10,this.center),t.writeDouble(40,this.radius),t.writeAngle(50,this.startAngle),t.writeAngle(51,this.endAngle),t.writeVector3d(210,this.normal),this}};ir.typeName="Arc";let _i=ir;var so=(i=>(i[i.LEFT=0]="LEFT",i[i.CENTER=1]="CENTER",i[i.RIGHT=2]="RIGHT",i[i.ALIGNED=3]="ALIGNED",i[i.MIDDLE=4]="MIDDLE",i[i.FIT=5]="FIT",i))(so||{}),io=(i=>(i[i.BASELINE=0]="BASELINE",i[i.BOTTOM=1]="BOTTOM",i[i.MIDDLE=2]="MIDDLE",i[i.TOP=3]="TOP",i))(io||{});const nr=class nr extends gt{get dxfTypeName(){return"TEXT"}constructor(){super(),this._textString="",this._height=0,this._thickness=1,this._position=new x,this._rotation=0,this._oblique=0,this._horizontalMode=0,this._verticalModel=2,this._styleName="",this._widthFactor=1}get textString(){return this._textString}set textString(t){this._textString=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get height(){return this._height}set height(t){this._height=t}get position(){return this._position}set position(t){this._position.copy(t)}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get oblique(){return this._oblique}set oblique(t){this._oblique=t}get horizontalMode(){return this._horizontalMode}set horizontalMode(t){this._horizontalMode=t}get verticalMode(){return this._verticalModel}set verticalMode(t){this._verticalModel=t}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get widthFactor(){return this._widthFactor}set widthFactor(t){this._widthFactor=t}get geometricExtents(){return new C}subGetOsnapPoints(t,e,s,n){R.Insertion===t&&n.push(this._position)}transformBy(t){const e=this._position.clone(),s=this._position.clone().add(new f(Math.cos(this._rotation),Math.sin(this._rotation),0)),n=this._position.clone().add(new f(-Math.sin(this._rotation),Math.cos(this._rotation),0)),r=this._position.clone().add(new f(0,0,1));e.applyMatrix4(t),s.applyMatrix4(t),n.applyMatrix4(t),r.applyMatrix4(t);const a=new f(s).sub(e),o=new f(n).sub(e),l=new f(r).sub(e),c=o.length(),d=a.length(),u=l.length();return this._position.copy(e),d>0&&(this._rotation=Math.atan2(a.y,a.x)),c>0&&(this._height*=c,d>0&&(this._widthFactor*=d/c)),u>0&&(this._thickness*=u),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.textString,set:t=>{this.textString=t}}},{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.height,set:t=>{this.height=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"widthFactor",type:"float",editable:!0,accessor:{get:()=>this.widthFactor,set:t=>{this.widthFactor=t}}},{name:"oblique",type:"float",editable:!0,accessor:{get:()=>this.oblique,set:t=>{this.oblique=t}}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}getTextStyle(){const t=this.database.tables.textStyleTable,e=t.getAt(this.styleName)??t.getAt(this.database.textstyle)??t.getAt(J);if(!e)throw new Error("No valid text style found in text style table.");return e.textStyle}subWorldDraw(t,e){const s={text:this.textString,height:this.height,width:1/0,widthFactor:this.widthFactor,position:this.position,rotation:this.rotation,drawingDirection:ie.BOTTOM_TO_TOP,attachmentPoint:ot.BottomLeft};return t.mtext(s,this.getTextStyle(),e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbText"),t.writePoint3d(10,this.position),t.writeDouble(39,this.thickness),t.writeDouble(40,this.height),t.writeString(1,this.textString),t.writeAngle(50,this.rotation),t.writeDouble(41,this.widthFactor),t.writeAngle(51,this.oblique),t.writeString(7,this.styleName),t.writeInt16(72,this.horizontalMode),t.writeInt16(73,this.verticalMode),t.writePoint3d(11,this.position),this}};nr.typeName="Text";let Ke=nr;var K=(i=>(i[i.Invisible=1]="Invisible",i[i.Const=2]="Const",i[i.Verifiable=4]="Verifiable",i[i.Preset=8]="Preset",i))(K||{}),Bt=(i=>(i[i.MultiLine=2]="MultiLine",i[i.ConstMultiLine=4]="ConstMultiLine",i))(Bt||{});const rr=class rr extends Ke{get dxfTypeName(){return"ATTDEF"}constructor(){super(),this._flags=0,this._prompt="",this._mtextFlag=0,this._tag="",this._fieldLength=0,this._lockPositionInBlock=!1,this._isReallyLocked=!1}get isInvisible(){return(this._flags&1)!==0}set isInvisible(t){t?this._flags|=1:this._flags&=-2}get prompt(){return this._prompt}set prompt(t){this._prompt=t}get isConst(){return(this._flags&2)!==0}set isConst(t){t?this._flags|=2:this._flags&=-3}get isVerifiable(){return(this._flags&4)!==0}set isVerifiable(t){t?this._flags|=4:this._flags&=-5}get isPreset(){return(this._flags&8)!==0}set isPreset(t){t?this._flags|=8:this._flags&=-9}get isMTextAttribute(){return(this._mtextFlag&2)!==0}set isMTextAttribute(t){t?this._mtextFlag|=2:this._mtextFlag&=-3}get isConstMTextAttribute(){return(this._mtextFlag&4)!==0}set isConstMTextAttribute(t){t?this._mtextFlag|=4:this._mtextFlag&=-5}get tag(){return this._tag}set tag(t){this._tag=t}get fieldLength(){return this._fieldLength}set fieldLength(t){this._fieldLength=t}get lockPositionInBlock(){return this._lockPositionInBlock}set lockPositionInBlock(t){this._lockPositionInBlock=t}get isReallyLocked(){return this._isReallyLocked}set isReallyLocked(t){this._isReallyLocked=t}get mtext(){return this._mtext}set mtext(t){this._mtext=t,this.isMTextAttribute=t!=null}subWorldDraw(t){}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbAttributeDefinition"),t.writeString(3,this.prompt),t.writeString(2,this.tag),t.writeInt16(70,this.isInvisible?1:0),t.writeInt16(73,this.fieldLength),t.writeInt16(74,this.isReallyLocked?1:0),this}};rr.typeName="AttDef";let wi=rr;const ar=class ar extends Ke{get dxfTypeName(){return"ATTRIB"}constructor(){super(),this._flags=0,this._mtextFlag=0,this._tag="",this._fieldLength=0,this._lockPositionInBlock=!1,this._isReallyLocked=!1}get isInvisible(){return(this._flags&K.Invisible)!==0}set isInvisible(t){t?this._flags|=K.Invisible:this._flags&=~K.Invisible}get isConst(){return(this._flags&K.Const)!==0}set isConst(t){t?this._flags|=K.Const:this._flags&=~K.Const}get isVerifiable(){return(this._flags&K.Verifiable)!==0}set isVerifiable(t){t?this._flags|=K.Verifiable:this._flags&=~K.Verifiable}get isPreset(){return(this._flags&K.Preset)!==0}set isPreset(t){t?this._flags|=K.Preset:this._flags&=~K.Preset}get isMTextAttribute(){return(this._mtextFlag&Bt.MultiLine)!==0}set isMTextAttribute(t){t?this._mtextFlag|=Bt.MultiLine:this._mtextFlag&=~Bt.MultiLine}get isConstMTextAttribute(){return(this._mtextFlag&Bt.ConstMultiLine)!==0}set isConstMTextAttribute(t){t?this._mtextFlag|=Bt.ConstMultiLine:this._mtextFlag&=~Bt.ConstMultiLine}get tag(){return this._tag}set tag(t){this._tag=t}get fieldLength(){return this._fieldLength}set fieldLength(t){this._fieldLength=t}get lockPositionInBlock(){return this._lockPositionInBlock}set lockPositionInBlock(t){this._lockPositionInBlock=t}get isReallyLocked(){return this._isReallyLocked}set isReallyLocked(t){this._isReallyLocked=t}get mtext(){return this._mtext}set mtext(t){this._mtext=t,this.isMTextAttribute=t!=null}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbAttribute"),t.writeInt16(70,this.isInvisible?1:0),t.writeInt16(73,this.fieldLength),t.writeString(2,this.tag),t.writeInt16(74,this.isReallyLocked?1:0),this.mtext&&t.writeInt16(71,this.isMTextAttribute?1:0),this}};ar.typeName="Attrib";let xi=ar;const or=class or extends gt{get dxfTypeName(){return"INSERT"}constructor(t){super(),this._blockName=t,this._position=new x,this._rotation=0,this._normal=new f(0,0,1),this._scaleFactors=new x(1,1,1),this._attribs=new Map}get position(){return this._position}set position(t){this._position.copy(t)}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get scaleFactors(){return this._scaleFactors}set scaleFactors(t){this._scaleFactors.copy(t)}get normal(){return this._normal}set normal(t){this._normal.copy(t).normalize()}get blockName(){return this._blockName}get blockTableRecord(){return this.database.tables.blockTable.getAt(this._blockName)}appendAttributes(t){this._attribs.set(t.objectId,t),t.ownerId=this.objectId}attributeIterator(){return new Gs(this._attribs)}get blockTransform(){const t=this.blockTableRecord,e=(t==null?void 0:t.origin)??x.ORIGIN,s=new Q().makeTranslation(-e.x,-e.y,-e.z),n=new Q().makeScale(this._scaleFactors.x,this._scaleFactors.y,this._scaleFactors.z),r=new We().setFromAxisAngle(f.Z_AXIS,this._rotation),a=new Q().makeRotationFromQuaternion(r),o=new Q().makeTranslation(this._position.x,this._position.y,this._position.z);return new Q().multiplyMatrices(o,a).multiply(n).multiply(s)}subGetOsnapPoints(t,e,s,n,r){R.Insertion===t?n.push(this._position):r&&this.subEntityGetOsnapPoints(t,e,s,n,r)}transformBy(t){const e=new Q().setFromExtrusionDirection(this._normal),s=new Q().makeRotationZ(this._rotation),n=new Q().multiplyMatrices(e,s),r=this._position.clone(),a=new x(this._scaleFactors.x,0,0).applyMatrix4(n).add(r),o=new x(0,this._scaleFactors.y,0).applyMatrix4(n).add(r),l=new x(0,0,this._scaleFactors.z).applyMatrix4(n).add(r);r.applyMatrix4(t),a.applyMatrix4(t),o.applyMatrix4(t),l.applyMatrix4(t);const c=new f(a).sub(r),d=new f(o).sub(r),u=new f(l).sub(r);let g=new f().crossVectors(c,d);g.lengthSq()===0?g=this._normal.clone().transformDirection(t):g.normalize();const m=new Q().setFromExtrusionDirection(g).clone().invert(),y=c.clone().applyMatrix4(m);return this._position.copy(r),this._normal.copy(g),this._rotation=Math.atan2(y.y,y.x),this._scaleFactors.set(c.length(),d.length(),u.length()),this._attribs.forEach(w=>w.transformBy(t)),this}get properties(){const t={type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"blockName",type:"float",editable:!1,accessor:{get:()=>this._blockName}},{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:e=>{this.position.x=e}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:e=>{this.position.y=e}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:e=>{this.position.z=e}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:e=>{this.rotation=e}}},{name:"scaleFactorsX",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.x,set:e=>{this.scaleFactors.x=e}}},{name:"scaleFactorsY",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.y,set:e=>{this.scaleFactors.y=e}}},{name:"scaleFactorsZ",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.z,set:e=>{this.scaleFactors.z=e}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:e=>{this.normal.x=e}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:e=>{this.normal.y=e}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:e=>{this.normal.z=e}}}]}]};if(this._attribs.size>0){const e={groupName:"attribute",properties:[]};t.groups.push(e),this._attribs.forEach(s=>{e.properties.push({name:s.tag,type:"string",editable:!s.isConst,skipTranslation:!0,accessor:{get:()=>s.textString,set:n=>{s.textString=n}}})})}return t}get geometricExtents(){const t=new C,e=this.blockTableRecord;if(e!=null){const n=e.newIterator();for(const r of n)t.union(r.geometricExtents)}const s=this.blockTransform;return t.applyMatrix4(s),t}subWorldDraw(t){const e=this.blockTableRecord;if(e!=null){const s=this.blockTransform,n=[];return this._attribs.forEach(a=>{if(!a.isInvisible){const o=a.worldDraw(t);o&&n.push(o)}}),Je.instance.draw(t,e,this.rgbColor,n,!0,s,this._normal)}else return t.group([])}dxfOut(t,e=!1){super.dxfOut(t,e);let s=!1;for(const n of this.attributeIterator())s=!0,t.writeStart("ATTRIB"),n.dxfOut(t);return s&&(t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity")),this}subEntityGetOsnapPoints(t,e,s,n,r){var o;if(r===this.objectId)return;const a=(o=this.database)==null?void 0:o.tables.blockTable;if(a!=null){const l=a.getEntityById(r);if(l){const c=[];l.subGetOsnapPoints(t,e,s,c,r);const d=this.blockTransform;c.forEach(u=>{const g=u.clone().applyMatrix4(d);n.push(g)})}}}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbBlockReference"),t.writePoint3d(10,this.position),t.writeString(2,this.blockName),t.writeDouble(41,this.scaleFactors.x),t.writeDouble(42,this.scaleFactors.y),t.writeDouble(43,this.scaleFactors.z),t.writeAngle(50,this.rotation),t.writeVector3d(210,this.normal),this}};or.typeName="BlockReference";let Qe=or;const hr=class hr extends rt{get dxfTypeName(){return"CIRCLE"}constructor(t,e,s=f.Z_AXIS){super(),this._geo=new ze(t,e,0,j,s,f.X_AXIS)}get center(){return this._geo.center}set center(t){this._geo.center=t}get radius(){return this._geo.radius}set radius(t){this._geo.radius=t}get normal(){return this._geo.normal}get geometricExtents(){return this._geo.box}get closed(){return this._geo.closed}subGetOsnapPoints(t,e,s,n){switch(t){case R.Center:case R.Centroid:n.push(this._geo.center);break;case R.Quadrant:n.push(this._geo.getPointAtAngle(0)),n.push(this._geo.getPointAtAngle(Math.PI/2)),n.push(this._geo.getPointAtAngle(Math.PI)),n.push(this._geo.getPointAtAngle(Math.PI/2*3));break;case R.Nearest:{const r=this._geo.nearestPoint(e);n.push(r)}break;case R.Tangent:{const r=this._geo.tangentPoints(e);n.push(...r);break}}}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"centerX",type:"float",editable:!0,accessor:{get:()=>this.center.x,set:t=>{this.center.x=t}}},{name:"centerY",type:"float",editable:!0,accessor:{get:()=>this.center.y,set:t=>{this.center.y=t}}},{name:"centerZ",type:"float",editable:!0,accessor:{get:()=>this.center.z,set:t=>{this.center.z=t}}},{name:"radius",type:"float",editable:!0,accessor:{get:()=>this.radius,set:t=>{this.radius=t}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:t=>{this.normal.x=t}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:t=>{this.normal.y=t}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:t=>{this.normal.z=t}}},{name:"diameter",type:"float",editable:!1,accessor:{get:()=>this._geo.radius*2}},{name:"perimeter",type:"float",editable:!1,accessor:{get:()=>this._geo.length}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this._geo.area}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.center),t}transformBy(t){return this._geo.transform(t),this}subWorldDraw(t){return t.circularArc(this._geo)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbCircle"),t.writePoint3d(10,this.center),t.writeDouble(40,this.radius),t.writeVector3d(210,this.normal),this}};hr.typeName="Circle";let bi=hr;const lr=class lr extends rt{get dxfTypeName(){return"ELLIPSE"}constructor(t,e,s,n,r,a,o){super(),this._geo=new Ze(t,e,s,n,r,a,o)}get center(){return this._geo.center}set center(t){this._geo.center=t}get majorAxisRadius(){return this._geo.majorAxisRadius}set majorAxisRadius(t){this._geo.majorAxisRadius=t}get minorAxisRadius(){return this._geo.minorAxisRadius}set minorAxisRadius(t){this._geo.minorAxisRadius=t}get startAngle(){return this._geo.startAngle}set startAngle(t){this._geo.startAngle=t}get endAngle(){return this._geo.endAngle}set endAngle(t){this._geo.endAngle=t}get normal(){return this._geo.normal}set normal(t){this._geo.normal=t}get geometricExtents(){return this._geo.box}get closed(){return this._geo.closed}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:this.closed||(n.push(this._geo.startPoint),n.push(this._geo.endPoint));break;case R.MidPoint:this.closed||n.push(this._geo.midPoint);break;case R.Quadrant:this.closed&&(n.push(this._geo.getPointAtAngle(0)),n.push(this._geo.getPointAtAngle(Math.PI/2)),n.push(this._geo.getPointAtAngle(Math.PI)),n.push(this._geo.getPointAtAngle(Math.PI/2*3)));break}}transformBy(t){return this._geo.transform(t),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"centerX",type:"float",editable:!0,accessor:{get:()=>this.center.x,set:t=>{this.center.x=t}}},{name:"centerY",type:"float",editable:!0,accessor:{get:()=>this.center.y,set:t=>{this.center.y=t}}},{name:"centerZ",type:"float",editable:!0,accessor:{get:()=>this.center.z,set:t=>{this.center.z=t}}},{name:"majorAxisRadius",type:"float",editable:!0,accessor:{get:()=>this.majorAxisRadius,set:t=>{this.center.x=t}}},{name:"minorAxisRadius",type:"float",editable:!0,accessor:{get:()=>this.minorAxisRadius,set:t=>{this.minorAxisRadius=t}}},{name:"startAngle",type:"float",editable:!0,accessor:{get:()=>this.startAngle,set:t=>{this.startAngle=t}}},{name:"endAngle",type:"float",editable:!0,accessor:{get:()=>this.endAngle,set:t=>{this.endAngle=t}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:t=>{this.normal.x=t}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:t=>{this.normal.y=t}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:t=>{this.normal.z=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this._geo.area}}]}]}}subWorldDraw(t){return t.ellipticalArc(this._geo)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbEllipse"),t.writePoint3d(10,this.center);const e=this._geo.majorAxis,s=this.majorAxisRadius;return t.writePoint3d(11,{x:e.x*s,y:e.y*s,z:e.z*s}),t.writeVector3d(210,this.normal),t.writeDouble(40,this.minorAxisRadius/this.majorAxisRadius),t.writeDouble(41,this.startAngle),t.writeDouble(42,this.endAngle),this}};lr.typeName="Ellipse";let fi=lr;const cr=class cr extends gt{get dxfTypeName(){return"3DFACE"}constructor(){super(),this._vertices=[new x,new x,new x],this._edgeInvisibilities=0}getVertexAt(t){return t<0?this._vertices[0]:t>this._vertices.length?this._vertices[this._vertices.length-1]:this._vertices[t]}setVertexAt(t,e){if(t<0&&this._vertices[0].copy(e),t>=3)return this._vertices.length===3&&this._vertices.push(new x),this._vertices[3].copy(e);this._vertices[t].copy(e)}setEdgeInvisibilities(t){this._edgeInvisibilities=t}isEdgeVisibleAt(t){if(t<0||t>3)throw new Error("Index out of range");return(this._edgeInvisibilities&1<<t)===0}makeEdgeInvisibleAt(t){if(t<0||t>3)throw new Error("Index out of range");this._edgeInvisibilities=this._edgeInvisibilities|1<<t}get geometricExtents(){return new C().setFromPoints(this._vertices)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:n.push(...this._vertices);break}}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this}subWorldDraw(t){const e=this._vertices.length,s=new Float32Array(e*3),n=new Uint16Array(e*2);for(let r=0;r<e;r++)s[r*3]=this._vertices[r].x,s[r*3+1]=this._vertices[r].y,s[r*3+2]=this._vertices[r].z,this.isEdgeVisibleAt(r)&&(n[r*2]=r,n[r*2+1]=(r+1)%4);return t.lineSegments(s,3,n)}dxfOutFields(t){super.dxfOutFields(t);const e=this.getVertexAt(0),s=this.getVertexAt(1),n=this.getVertexAt(2),r=this.getVertexAt(3);t.writeSubclassMarker("AcDbFace"),t.writePoint3d(10,e),t.writePoint3d(11,s),t.writePoint3d(12,n),t.writePoint3d(13,r);let a=0;for(let o=0;o<4;++o)this.isEdgeVisibleAt(o)||(a|=1<<o);return t.writeInt16(70,a),this}};cr.typeName="Face";let Ii=cr;var Ss=(i=>(i[i.UserDefined=0]="UserDefined",i[i.Predefined=1]="Predefined",i[i.Custom=2]="Custom",i))(Ss||{}),no=(i=>(i[i.Normal=0]="Normal",i[i.Outer=1]="Outer",i[i.Ignore=2]="Ignore",i))(no||{});const dr=class dr extends gt{get dxfTypeName(){return"HATCH"}constructor(){super(),this._elevation=0,this._geo=new vs,this._isSolidFill=!1,this._definitionLines=[],this._patternName="",this._patternType=1,this._patternAngle=0,this._patternScale=1,this._hatchStyle=0}get isSolidFill(){return this._isSolidFill||this._patternName.toUpperCase()==="SOLID"}set isSolidFill(t){this._isSolidFill=t}get definitionLines(){return this._definitionLines}get patternName(){return this._patternName}set patternName(t){this._patternName=t}get patternType(){return this._patternType}set patternType(t){this._patternType=t}get patternAngle(){return this._patternAngle}set patternAngle(t){this._patternAngle=t}get patternScale(){return this._patternScale}set patternScale(t){this._patternScale=t}get hatchStyle(){return this._hatchStyle}set hatchStyle(t){this._hatchStyle=t}get elevation(){return this._elevation}set elevation(t){this._elevation=t}add(t){this._geo.add(t)}buildAreasFromLoops(){const t=this._geo.loops;if(t.length===0)return[];if(t.length===1)return[this._geo];const e=this._geo.buildHierarchy(),s=[],n=(r,a)=>{if(r.index>=0&&a%2===0){const o=new vs;o.add(t[r.index]),r.children.forEach(l=>{l.index>=0&&o.add(t[l.index])}),s.push(o)}r.children.forEach(o=>n(o,a+1))};return e.children.forEach(r=>n(r,0)),s.length>0?s:[this._geo]}getCalculatedAreaValue(){const t=this.buildAreasFromLoops();return t.length===0?0:t.reduce((e,s)=>e+s.area,0)}get geometricExtents(){const t=this.buildAreasFromLoops();if(t.length===0)return new C;const e=new C;return t.forEach(s=>{const n=s.box;e.union(new C({x:n.min.x,y:n.min.y,z:this._elevation},{x:n.max.x,y:n.max.y,z:this._elevation}))}),e}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"pattern",properties:[{name:"patternType",type:"enum",editable:!0,options:[{label:Ss[0],value:0},{label:Ss[1],value:1},{label:Ss[2],value:2}],accessor:{get:()=>this.patternType,set:t=>{this.patternType=t}}},{name:"patternName",type:"string",editable:!0,accessor:{get:()=>this.patternName,set:t=>{this.patternName=t}}},{name:"patternAngle",type:"float",editable:!0,accessor:{get:()=>this.patternAngle,set:t=>{this.patternAngle=t}}},{name:"patternScale",type:"float",editable:!0,accessor:{get:()=>this.patternScale,set:t=>{this.patternScale=t}}}]},{groupName:"geometry",properties:[{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this.getCalculatedAreaValue()}}]}]}}subWorldDraw(t){const e=t.subEntityTraits;e.fillType={solidFill:this.isSolidFill,patternAngle:this.patternAngle,definitionLines:this.definitionLines};const s=this.buildAreasFromLoops();if(s.length===0)return t.area(this._geo);if(s.length===1)return t.area(s[0]);const n=s.map(r=>t.area(r));return t.group(n)}transformBy(t){const e=t.elements,s=new Vs(e[0],e[4],e[12],e[1],e[5],e[13],0,0,1);this._geo.transform(s),this._elevation=new x(0,0,this._elevation).applyMatrix4(t).z;const n=new x(1,0,0).applyMatrix4(t),r=new x().applyMatrix4(t),a=new x(n).sub(r);return a.length()>0&&(this._patternAngle+=Math.atan2(a.y,a.x),this._patternScale*=a.length()),this}dxfOutFields(t){super.dxfOutFields(t);const e=this._geo.loops;return t.writeSubclassMarker("AcDbHatch"),t.writePoint3d(10,{x:0,y:0,z:this.elevation}),t.writeVector3d(210,{x:0,y:0,z:1}),t.writeString(2,this.patternName||(this.isSolidFill?"SOLID":"USER")),t.writeInt16(70,this.isSolidFill?1:0),t.writeInt16(71,0),t.writeInt16(91,e.length),e.forEach((s,n)=>{const r=n===0;if(s instanceof me){const a=s.vertices,o=a.some(c=>(c.bulge??0)!==0);t.writeInt16(92,2),t.writeInt16(72,o?1:0),t.writeInt16(73,s.closed?1:0),t.writeInt16(93,a.length);for(const c of a)t.writePoint2d(10,c),o&&t.writeDouble(42,c.bulge??0);t.writeInt16(97,0);return}if(s instanceof Ls){const a=r?1:0;t.writeInt16(92,a),t.writeInt16(93,s.numberOfEdges);for(const o of s.curves){if(o instanceof Ft){t.writeInt16(72,1),t.writePoint2d(10,o.startPoint),t.writePoint2d(11,o.endPoint);continue}if(o instanceof Ve){t.writeInt16(72,2),t.writePoint2d(10,o.center),t.writeDouble(40,o.radius),t.writeAngle(50,o.startAngle),t.writeAngle(51,o.endAngle),t.writeInt16(73,o.clockwise?0:1);continue}if(o instanceof ks){t.writeInt16(72,3),t.writePoint2d(10,o.center);const l=new v(o.majorAxisRadius*Math.cos(o.rotation),o.majorAxisRadius*Math.sin(o.rotation));t.writePoint2d(11,l);const c=o.majorAxisRadius===0?0:o.minorAxisRadius/o.majorAxisRadius;t.writeDouble(40,c),t.writeAngle(50,o.startAngle),t.writeAngle(51,o.endAngle),t.writeInt16(73,o.clockwise?0:1);continue}if(o instanceof Rt){const l=o.knots,c=o.controlPoints,d=o.weights,u=o.fitPoints,g=d.some(p=>p!==1);t.writeInt16(72,4),t.writeInt16(94,o.degree),t.writeInt16(73,g?1:0),t.writeInt16(74,o.closed?1:0),t.writeInt16(95,l.length),t.writeInt16(96,c.length),l.forEach(p=>t.writeDouble(40,p)),c.forEach((p,m)=>{t.writePoint2d(10,p),g&&t.writeDouble(42,d[m]??1)}),t.writeInt16(97,(u==null?void 0:u.length)??0),u==null||u.forEach(p=>t.writePoint2d(11,p))}}t.writeInt16(97,0)}}),t.writeInt16(75,this.hatchStyle),t.writeInt16(76,this.patternType),t.writeAngle(52,this.patternAngle),t.writeDouble(41,this.patternScale),t.writeInt16(77,0),t.writeInt16(78,this.definitionLines.length),this.definitionLines.forEach(s=>{t.writeAngle(53,s.angle),t.writePoint2d(43,s.base),t.writePoint2d(45,s.offset),t.writeInt16(79,s.dashLengths.length),s.dashLengths.forEach(n=>t.writeDouble(49,n))}),t.writeInt16(98,0),this}};dr.typeName="Hatch";let Ns=dr;var ro=(i=>(i[i.MText=0]="MText",i[i.Fcf=1]="Fcf",i[i.BlockReference=2]="BlockReference",i[i.NoAnnotation=3]="NoAnnotation",i))(ro||{});const ur=class ur extends rt{get dxfTypeName(){return"LEADER"}constructor(){super(),this._isSplined=!1,this._updated=!1,this._hasArrowHead=!1,this._vertices=[],this._dimensionStyle="",this._hasHookLine=!1,this._annoType=3}get isSplined(){return this._isSplined}set isSplined(t){this._isSplined=t}get hasArrowHead(){return this._hasArrowHead}set hasArrowHead(t){this._hasArrowHead=t}get hasHookLine(){return this._hasHookLine}set hasHookLine(t){this._hasHookLine=t}get numVertices(){return this._vertices.length}get vertices(){return this._vertices.map(t=>t.clone())}get dimensionStyle(){return this._dimensionStyle}set dimensionStyle(t){this._dimensionStyle=t}get annoType(){return this._annoType}set annoType(t){this._annoType=t}appendVertex(t){this._vertices.push(new x().copy(t)),this._updated=!0}setVertexAt(t,e){throw(t<0||t>=this._vertices.length)&&(this._vertices[t].copy(e),this._updated=!0),new Error("The vertex index is out of range!")}vertexAt(t){throw(t<0||t>=this._vertices.length)&&this._vertices[t],new Error("The vertex index is out of range!")}get geometricExtents(){return this._isSplined&&this.splineGeo?this.splineGeo.calculateBoundingBox():new C().setFromPoints(this._vertices)}get closed(){return!1}set closed(t){}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this._splineGeo?(this._splineGeo.transform(t),this._updated=!1):this._updated=!0,this}subWorldDraw(t){if(this.isSplined&&this.splineGeo){const e=this.splineGeo.getPoints(100);return t.lines(e)}else return t.lines(this._vertices)}get splineGeo(){return this.createSplineIfNeeded(),this._splineGeo}createSplineIfNeeded(){this.isSplined&&this.numVertices>=2&&(this._splineGeo==null||this._updated)&&(this._splineGeo=new Rt(this._vertices,"Uniform"),this._updated=!1)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLeader"),t.writeString(3,this.dimensionStyle),t.writeInt16(71,this.hasArrowHead?1:0),t.writeInt16(72,this.annoType),t.writeInt16(73,this.hasHookLine?1:0),t.writeInt16(74,this.isSplined?1:0),t.writeInt16(76,this.numVertices);for(const e of this.vertices)t.writePoint3d(10,e);return this}};ur.typeName="Leader";let Pi=ur;var R=(i=>(i[i.EndPoint=1]="EndPoint",i[i.MidPoint=2]="MidPoint",i[i.Center=3]="Center",i[i.Node=4]="Node",i[i.Quadrant=5]="Quadrant",i[i.Insertion=7]="Insertion",i[i.Perpendicular=8]="Perpendicular",i[i.Tangent=9]="Tangent",i[i.Nearest=10]="Nearest",i[i.Centroid=11]="Centroid",i))(R||{});function vl(i){let t=0;for(const e of i)t|=1<<e-1;return t}function kl(i){const t=[];for(const e of Object.values(R)){if(typeof e!="number")continue;const s=1<<e-1;i&s&&t.push(e)}return t}function Ll(i,t){return i^1<<t-1}function Nl(i,t){return(i&1<<t-1)!==0}function Ol(i,t){return i|1<<t-1}function Cl(i,t){return i&~(1<<t-1)}const pr=class pr extends rt{get dxfTypeName(){return"LINE"}constructor(t,e){super(),this._geo=new pe(t,e)}get startPoint(){return this._geo.startPoint}set startPoint(t){this._geo.startPoint=t}get endPoint(){return this._geo.endPoint}set endPoint(t){this._geo.endPoint=t}get midPoint(){return this._geo.midPoint}get geometricExtents(){return this._geo.box}get closed(){return!1}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"startX",type:"float",editable:!0,accessor:{get:()=>this.startPoint.x,set:t=>{this.startPoint.x=t}}},{name:"startY",type:"float",editable:!0,accessor:{get:()=>this.startPoint.y,set:t=>{this.startPoint.y=t}}},{name:"startZ",type:"float",editable:!0,accessor:{get:()=>this.startPoint.z,set:t=>{this.startPoint.z=t}}},{name:"endX",type:"float",editable:!0,accessor:{get:()=>this.endPoint.x,set:t=>{this.endPoint.x=t}}},{name:"endY",type:"float",editable:!0,accessor:{get:()=>this.endPoint.y,set:t=>{this.endPoint.y=t}}},{name:"endZ",type:"float",editable:!0,accessor:{get:()=>this.endPoint.z,set:t=>{this.endPoint.z=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.midPoint),t.push(this.startPoint),t.push(this.endPoint),t}subGetOsnapPoints(t,e,s,n){const r=this.startPoint,a=this.endPoint;switch(t){case R.EndPoint:n.push(r),n.push(a);break;case R.MidPoint:n.push(this.midPoint);break;case R.Nearest:{const o=this._geo.project(e);n.push(o)}break;case R.Perpendicular:{const o=this._geo.perpPoint(e);n.push(o)}break;case R.Tangent:break}}transformBy(t){return this._geo.transform(t),this}subWorldDraw(t){const e=this.startPoint,s=this.endPoint,n=[new x(e.x,e.y,0),new x(s.x,s.y,0)];return t.lines(n)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLine"),t.writePoint3d(10,this.startPoint),t.writePoint3d(11,this.endPoint),this}};pr.typeName="Line";let Os=pr;const gr=class gr extends gt{get dxfTypeName(){return"MTEXT"}constructor(){super(),this._contents="",this._height=0,this._width=0,this._lineSpacingFactor=.25,this._lineSpacingStyle=0,this._backgroundFill=!1,this._backgroundFillColor=13158600,this._backgroundFillTransparency=1,this._backgroundScaleFactor=1,this._rotation=0,this._styleName="",this._location=new x,this._attachmentPoint=ot.TopLeft,this._direction=new f(1,0,0),this._drawingDirection=ie.LEFT_TO_RIGHT}get contents(){return this._contents}set contents(t){this._contents=t}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get lineSpacingFactor(){return this._lineSpacingFactor}set lineSpacingFactor(t){this._lineSpacingFactor=t}get lineSpacingStyle(){return this._lineSpacingStyle}set lineSpacingStyle(t){this._lineSpacingStyle=t}get backgroundFill(){return this._backgroundFill}set backgroundFill(t){this._backgroundFill=t,this._backgroundFillColor=13158600}get backgroundFillColor(){return this._backgroundFillColor}set backgroundFillColor(t){this._backgroundFillColor=t}get backgroundFillTransparency(){return this._backgroundFillTransparency}set backgroundFillTransparency(t){this._backgroundFillTransparency=t}get backgroundScaleFactor(){return this._backgroundScaleFactor}set backgroundScaleFactor(t){this._backgroundScaleFactor=t}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get location(){return this._location}set location(t){this._location.copy(t)}get attachmentPoint(){return this._attachmentPoint}set attachmentPoint(t){this._attachmentPoint=t}get direction(){return this._direction}set direction(t){this._direction.copy(t)}get drawingDirection(){return this._drawingDirection}set drawingDirection(t){this._drawingDirection=t}get geometricExtents(){return new C}subGetOsnapPoints(t,e,s,n){R.Insertion===t&&n.push(this._location)}transformBy(t){const e=this._location.clone(),s=this._direction.lengthSq()>0?this._direction.clone().normalize():new f(Math.cos(this._rotation),Math.sin(this._rotation),0),n=new f(-s.y,s.x,s.z);n.lengthSq()===0&&n.set(0,1,0),n.normalize();const r=e.clone().add(s),a=e.clone().add(n);e.applyMatrix4(t),r.applyMatrix4(t),a.applyMatrix4(t);const o=new f(r).sub(e),l=new f(a).sub(e),c=o.length(),d=l.length();return this._location.copy(e),c>0&&(this._direction.copy(o).normalize(),this._rotation=Math.atan2(this._direction.y,this._direction.x),this._width*=c),d>0&&(this._height*=d),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.contents,set:t=>{this.contents=t}}},{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"attachmentPoint",type:"enum",editable:!0,options:[{label:ot[1],value:1},{label:ot[2],value:2},{label:ot[3],value:3},{label:ot[4],value:4},{label:ot[5],value:5},{label:ot[6],value:6},{label:ot[7],value:7},{label:ot[8],value:8},{label:ot[9],value:9}],accessor:{get:()=>this.attachmentPoint,set:t=>{this.attachmentPoint=t}}},{name:"drawingDirection",type:"enum",editable:!0,options:[{label:ie[1],value:1},{label:ie[2],value:2},{label:ie[3],value:3},{label:ie[4],value:4},{label:ie[5],value:5}],accessor:{get:()=>this.drawingDirection,set:t=>{this.drawingDirection=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.height,set:t=>{this.height=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"lineSpacingFactor",type:"float",editable:!0,accessor:{get:()=>this.lineSpacingFactor,set:t=>{this.lineSpacingFactor=t}}},{name:"definedWidth",type:"float",editable:!0,accessor:{get:()=>this.width,set:t=>{this.width=t}}},{name:"directionX",type:"float",editable:!0,accessor:{get:()=>this.direction.x,set:t=>{this.direction.x=t}}},{name:"directionY",type:"float",editable:!0,accessor:{get:()=>this.direction.y,set:t=>{this.direction.y=t}}},{name:"directionZ",type:"float",editable:!0,accessor:{get:()=>this.direction.z,set:t=>{this.direction.z=t}}}]},{groupName:"geometry",properties:[{name:"locationX",type:"float",editable:!0,accessor:{get:()=>this.location.x,set:t=>{this.location.x=t}}},{name:"locationY",type:"float",editable:!0,accessor:{get:()=>this.location.y,set:t=>{this.location.y=t}}},{name:"locationZ",type:"float",editable:!0,accessor:{get:()=>this.location.z,set:t=>{this.location.z=t}}}]}]}}getTextStyle(){const t=this.database.tables.textStyleTable,e=t.getAt(this.styleName)??t.getAt(this.database.textstyle)??t.getAt(J);if(!e)throw new Error("No valid text style found in text style table.");return e.textStyle}subWorldDraw(t,e){const s={text:this.contents,height:this.height,width:this.width,position:this.location,rotation:this.rotation,directionVector:this.direction,attachmentPoint:this.attachmentPoint,drawingDirection:this.drawingDirection,lineSpaceFactor:this.lineSpacingFactor};return t.mtext(s,this.getTextStyle(),e)}encodeMTextContentsForDxf(t){return t.replace(/\r\n|\r|\n/g,"\\P")}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMText"),t.writePoint3d(10,this.location),t.writeDouble(40,this.height),t.writeDouble(41,this.width),t.writeString(1,this.encodeMTextContentsForDxf(this.contents)),t.writeString(7,this.styleName),t.writeAngle(50,this.rotation),t.writeVector3d(11,this.direction),t.writeInt16(71,this.attachmentPoint),t.writeInt16(72,this.drawingDirection),t.writeInt16(73,this.lineSpacingStyle),t.writeDouble(44,this.lineSpacingFactor),this.backgroundFill&&(t.writeInt16(90,1),t.writeInt32(63,this.backgroundFillColor),t.writeInt32(441,this.backgroundFillTransparency),t.writeDouble(45,this.backgroundScaleFactor)),this}};gr.typeName="MText";let Cs=gr;const mr=class mr extends rt{get dxfTypeName(){return"SPLINE"}constructor(t,e,s,n,r){super(),this.rebuild(t,e,s,n,r)}rebuild(t,e,s,n,r){const a=+(t!==void 0)+ +(e!==void 0)+ +(s!==void 0)+ +(n!==void 0)+ +(r!==void 0);if(a<2||a>5)throw yt.ILLEGAL_PARAMETERS;!Array.isArray(e)?this._geo=new Rt(t,e,s,n):this._geo=new Rt(t,e,s,n,r)}get geometricExtents(){return this._geo.box}get closed(){return this._geo.closed}set closed(t){this._geo.closed=t}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:n.push(this._geo.startPoint),n.push(this._geo.endPoint);break}}transformBy(t){return this._geo.transform(t),this}subWorldDraw(t){const e=this._geo.getPoints(100);return t.lines(e)}dxfOutFields(t){var s;const e=this._geo;super.dxfOutFields(t),t.writeSubclassMarker("AcDbSpline"),t.writeInt16(70,this.closed?1:0),t.writeInt16(71,e.degree),t.writeInt16(72,e.knots.length),t.writeInt16(73,e.controlPoints.length),t.writeInt16(74,((s=e.fitPoints)==null?void 0:s.length)??0);for(const n of e.knots)t.writeDouble(40,n);for(const n of e.weights)t.writeDouble(41,n);for(const n of e.controlPoints)t.writePoint3d(10,n);for(const n of e.fitPoints??[])t.writePoint3d(11,n);return this}};mr.typeName="Spline";let Bs=mr;const Bl=new f,yr=class yr extends Qe{get dxfTypeName(){return"ACAD_TABLE"}constructor(t,e,s){super(t),this._attachmentPoint=ot.TopLeft,this._numColumns=s,this._numRows=e,this._columnWidth=new Array(s),this._rowHeight=new Array(e),this._cells=new Array(e*s)}get attachmentPoint(){return this._attachmentPoint}set attachmentPoint(t){this._attachmentPoint=t}get numRows(){return this._numRows}set numRows(t){this._numRows=t}get numColumns(){return this._numColumns}set numColumns(t){this._numColumns=t}numContents(t,e){return 1}rowHeight(t){return this._rowHeight[t]}setRowHeight(t,e){this._rowHeight[t]=e}setUniformRowHeight(t){this._rowHeight.fill(t)}columnWidth(t){return this._columnWidth[t]}setUniformColumnWidth(t){this._columnWidth.fill(t)}setColumnWidth(t,e){this._columnWidth[t]=e}cell(t){if(!(t<0||t>=this._cells.length))return this._cells[t]}setCell(t,e){this._cells[t]=e}textString(t,e,s){var r;const n=t*this._numColumns+e;return(r=this._cells[n])==null?void 0:r.text}setTextString(t,e,s){const n=t*this._numColumns+e;if(!this._cells[n]){this._cells[n]={text:s,attachmentPoint:this._attachmentPoint,cellType:1,textHeight:0};return}this._cells[n].text=s}isEmpty(t,e){var n;const s=t*this._numColumns+e;return!((n=this._cells[s])!=null&&n.text)}get geometricExtents(){return new C}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"table",properties:[{name:"numRows",type:"string",editable:!0,accessor:{get:()=>this.numRows,set:t=>{this.numRows=t}}},{name:"numColumns",type:"float",editable:!0,accessor:{get:()=>this.numColumns,set:t=>{this.numColumns=t}}},{name:"tableWidth",type:"float",editable:!1,accessor:{get:()=>this._columnWidth.reduce((t,e)=>t+e,0)}},{name:"tableHeight",type:"float",editable:!1,accessor:{get:()=>this._rowHeight.reduce((t,e)=>t+e,0)}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}subWorldDraw(t){let e=0,s=0;const n=new Uint16Array(this.numColumns*this.numRows*8),r=new Float32Array((this.numColumns+1)*(this.numRows+1)*3);let a=0;for(let g=0;g<=this.numRows;g++){e-=g>0?this.rowHeight(g-1):0,s=0;for(let p=0;p<=this.numColumns;p++)s+=p>0?this.columnWidth(p-1):0,r[a++]=s,r[a++]=e,r[a++]=0}const o=[],l=new Array(this.numRows*this.numColumns).fill(!1);s=0,a=0;let c=0;for(let g=0;g<this.numColumns;g++){s+=g>0?this.columnWidth(g-1):0,e=0;for(let p=0;p<this.numRows;p++){e+=p>0?this.rowHeight(p-1):0;const m=this.cell(p*this.numColumns+g);if(c=p*this.numColumns+g,m&&!l[c]){const y=m.borderWidth??1,w=m.borderHeight??1;this.fillVisited(l,c,this.numColumns,y,w),n[a++]=g+p*(this.numColumns+1),n[a++]=g+p*(this.numColumns+1)+y;const b=r[n[a-1]*3]-s,E=g+(p+w)*(this.numColumns+1)+y;g+y==this.numColumns&&(n[a++]=g+p*(this.numColumns+1)+y,n[a++]=E);const I=-r[E*3+1]-e;if(p+w==this.numRows&&(n[a++]=g+(p+w)*(this.numColumns+1)+w,n[a++]=g+(p+w)*(this.numColumns+1)),n[a++]=g+(p+w)*(this.numColumns+1),n[a++]=g+p*(this.numColumns+1),m.text){const T=m.attachmentPoint||this.attachmentPoint||ot.MiddleCenter,A=this.getTableTextOffset(T,b,I),W={text:m.text,height:m.textHeight,width:b,position:Bl.set(s,-e,0).clone().add(A),rotation:this.rotation,attachmentPoint:T},M=this.getTextStyle(m);o.push(t.mtext(W,M))}}}}o.push(t.lineSegments(r,3,n));const d=t.group(o),u=new We;return u.setFromAxisAngle(f.Z_AXIS,this.rotation),Xr.compose(this.position,u,this.scaleFactors),d.applyMatrix(Xr),d}fillVisited(t,e,s,n,r){if(r==1&&n==1)t[e]=!0;else for(let a=0;a<n;++a)for(let o=0;o<r;++o)t[e+a+o*s]=!0}getTextStyle(t){const e=this.database.tables.textStyleTable,s=(t.textStyle?e.getAt(t.textStyle):void 0)??e.getAt(this.database.textstyle)??e.getAt(J);if(!s)throw new Error("No valid text style found in text style table.");return s.textStyle}getTableTextOffset(t,e,s){const n=new f;switch(t){case 1:break;case 2:n.setX(e/2);break;case 3:n.setX(e);break;case 4:n.setY(-s/2);break;case 5:n.set(e/2,-s/2,0);break;case 6:n.set(e,-s/2,0);break;case 7:n.setY(-s);break;case 8:n.set(e/2,-s,0);break;case 9:n.set(e,-s,0);break}return n}dxfOutFields(t){var r,a,o,l,c,d,u;super.dxfOutFields(t),t.writeSubclassMarker("AcDbTable");const e=t.version??((r=t.database)==null?void 0:r.version)??((a=this.database)==null?void 0:a.version),s=(e==null?void 0:e.value)!=null?e.value>=27:!1;t.writeInt16(280,this.tableDataVersion),t.writeObjectId(342,this.tableStyleId),t.writeObjectId(343,this.owningBlockRecordId),t.writeVector3d(11,this.horizontalDirection),t.writeUInt32(90,this.tableValueFlag),t.writeUInt32(93,this.tableOverrideFlag),t.writeUInt32(94,this.borderColorOverrideFlag),t.writeUInt32(95,this.borderLineweightOverrideFlag),t.writeUInt32(96,this.borderVisibilityOverrideFlag),t.writeInt16(71,this.attachmentPoint),t.writeInt32(91,this.numRows),t.writeInt32(92,this.numColumns);for(let g=0;g<this.numRows;++g)t.writeDouble(141,this.rowHeight(g));for(let g=0;g<this.numColumns;++g)t.writeDouble(142,this.columnWidth(g));const n=this._cells.length>0?this._cells.length:this.numRows*this.numColumns;for(let g=0;g<n;g++){const p=this._cells[g],m=(p==null?void 0:p.cellType)??(p!=null&&p.blockTableRecordId?2:1);if(t.writeInt16(171,m),t.writeInt16(172,(p==null?void 0:p.flagValue)??0),t.writeInt16(173,(p==null?void 0:p.mergedValue)??0),t.writeBoolean(174,p==null?void 0:p.autoFit),t.writeInt16(175,p==null?void 0:p.borderWidth),t.writeInt16(176,p==null?void 0:p.borderHeight),(p==null?void 0:p.overrideFlag)!=null&&(s?t.writeInt32(91,p.overrideFlag):t.writeInt16(177,p.overrideFlag)),t.writeInt16(178,p==null?void 0:p.virtualEdgeFlag),t.writeAngle(145,p==null?void 0:p.rotation),s&&t.writeInt16(92,p==null?void 0:p.extendedCellFlags),m===1)p!=null&&p.fieldObjetId?t.writeObjectId(344,p.fieldObjetId):this.writeCellText(t,(p==null?void 0:p.text)??"",s,p==null?void 0:p.cellValueBlockBegin);else if(m===2){if(t.writeObjectId(340,p==null?void 0:p.blockTableRecordId),t.writeDouble(144,p==null?void 0:p.blockScale),t.writeInt16(179,p==null?void 0:p.blockAttrNum),(o=p==null?void 0:p.attrDefineId)!=null&&o.length)for(const y of p.attrDefineId)t.writeObjectId(331,y);if((p==null?void 0:p.attrText)!=null)if(Array.isArray(p.attrText))for(const y of p.attrText)t.writeString(300,y);else t.writeString(300,p.attrText)}p!=null&&p.textStyle&&t.writeString(7,p.textStyle),(p==null?void 0:p.textHeight)!=null&&t.writeDouble(140,p.textHeight),(p==null?void 0:p.attachmentPoint)!=null&&t.writeInt16(170,p.attachmentPoint),(p==null?void 0:p.topBorderVisibility)!=null&&t.writeInt16(289,p.topBorderVisibility?1:0),(p==null?void 0:p.rightBorderVisibility)!=null&&t.writeInt16(285,p.rightBorderVisibility?1:0),(p==null?void 0:p.bottomBorderVisibility)!=null&&t.writeInt16(286,p.bottomBorderVisibility?1:0),(p==null?void 0:p.leftBorderVisibility)!=null&&t.writeInt16(288,p.leftBorderVisibility?1:0)}if(t.writeInt16(70,this.flowDirection),t.writeDouble(40,this.horizontalCellMargin),t.writeDouble(41,this.verticalCellMargin),this.suppressTitle!=null&&t.writeInt16(280,this.suppressTitle?1:0),this.suppressHeader!=null&&t.writeInt16(281,this.suppressHeader?1:0),(l=this.cellTypeOverrides)!=null&&l.length)for(const g of this.cellTypeOverrides){t.writeString(7,g.textStyle),t.writeDouble(140,g.textHeight),t.writeInt16(170,g.alignment),t.writeInt16(63,g.backgroundColor),t.writeInt16(64,g.contentColor),g.backgroundColorEnabled!=null&&t.writeInt16(283,g.backgroundColorEnabled?1:0);const p=g.borderLineweights;p&&(t.writeInt16(274,p.top),t.writeInt16(275,p.right),t.writeInt16(276,p.bottom),t.writeInt16(277,p.left),t.writeInt16(278,p.insideHorizontal),t.writeInt16(279,p.insideVertical));const m=g.borderVisibility;m&&(t.writeInt16(284,m.top?1:0),t.writeInt16(285,m.right?1:0),t.writeInt16(286,m.bottom?1:0),t.writeInt16(287,m.left?1:0),t.writeInt16(288,m.insideHorizontal?1:0),t.writeInt16(289,m.insideVertical?1:0))}if(this.tableBorderColors&&(t.writeInt16(63,this.tableBorderColors.left),t.writeInt16(64,this.tableBorderColors.top),t.writeInt16(65,this.tableBorderColors.insideHorizontal),t.writeInt16(66,this.tableBorderColors.bottom),t.writeInt16(68,this.tableBorderColors.insideVertical),t.writeInt16(69,this.tableBorderColors.right)),(c=this.rowDataTypes)!=null&&c.length)for(const g of this.rowDataTypes)t.writeInt16(97,g);if((d=this.rowUnitTypes)!=null&&d.length)for(const g of this.rowUnitTypes)t.writeInt16(98,g);if((u=this.rowFormats)!=null&&u.length)for(const g of this.rowFormats)t.writeString(4,g);return this}writeCellText(t,e,s,n){if(!s){if(e.length<=250){t.writeString(1,e);return}const o=Math.ceil(e.length/250);for(let l=0;l<o;l++){const c=l*250,d=c+250,u=e.slice(c,d);l===o-1?t.writeString(1,u):t.writeString(2,u)}return}if(t.writeString(301,n??"CELL_VALUE"),e.length<=250){t.writeString(302,e),t.writeString(304,"ACVALUE_END");return}const a=Math.ceil(e.length/250);for(let o=0;o<a;o++){const l=o*250,c=l+250,d=e.slice(l,c);o===a-1?t.writeString(302,d):t.writeString(303,d)}t.writeString(304,"ACVALUE_END")}};yr.typeName="Table";let Ei=yr;const Xr=new Q,_r=class _r extends rt{get dxfTypeName(){return"TRACE"}constructor(){super(),this._elevation=0,this._thickness=1,this._vertices=[new x,new x,new x,new x]}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get closed(){return!0}get thickness(){return this._thickness}set thickness(t){this._thickness=t}getPointAt(t){return t<0?this._vertices[0]:t>3?this._vertices[3]:this._vertices[t]}setPointAt(t,e){if(t<0&&this._vertices[0].copy(e),t>3)return this._vertices[3].copy(e);this._vertices[t].copy(e)}get geometricExtents(){return new C().setFromPoints(this._vertices)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:n.push(...this._vertices);break}}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this._elevation=this._vertices[0].z,this}subWorldDraw(t){const e=new me(this._vertices,!0),s=new vs;s.add(e);const n=t.subEntityTraits;return n.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},t.area(s)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbTrace"),t.writeDouble(38,this.elevation),t.writeDouble(39,this.thickness),t.writePoint3d(10,this.getPointAt(0)),t.writePoint3d(11,this.getPointAt(1)),t.writePoint3d(12,this.getPointAt(2)),t.writePoint3d(13,this.getPointAt(3)),this}};_r.typeName="Trace";let Si=_r;const wr=class wr extends rt{get dxfTypeName(){return"LWPOLYLINE"}constructor(){super(),this._elevation=0,this._geo=new me}get numberOfVertices(){return this._geo.numberOfVertices}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get closed(){return this._geo.closed}set closed(t){this._geo.closed=t}addVertexAt(t,e,s=0,n=-1,r=-1){const a=n<0?void 0:n,o=r<0?void 0:r,l={x:e.x,y:e.y,bulge:s,startWidth:a,endWidth:o};this._geo.addVertexAt(t,l)}removeVertexAt(t){this._geo.removeVertexAt(t)}reset(t,e){this._geo.reset(t,e)}getPoint2dAt(t){return this._geo.getPointAt(t)}getPoint3dAt(t){const e=this.getPoint2dAt(t);return new x(e.x,e.y,this._elevation)}get geometricExtents(){const t=this._geo.box;return new C({x:t.min.x,y:t.min.y,z:this._elevation},{x:t.max.x,y:t.max.y,z:this._elevation})}subGetGripPoints(){const t=new Array;for(let e=0;e<this.numberOfVertices;++e)t.push(this.getPoint3dAt(e));return t}subGetOsnapPoints(t,e,s,n){const r=new Array;for(let a=0;a<this.numberOfVertices;++a)r.push(this.getPoint3dAt(a));switch(t){case R.EndPoint:n.push(...r);break}}transformBy(t){const e=t.determinant()<0;let s=this._elevation;return this._geo.vertices.forEach(n=>{const r=new x(n.x,n.y,this._elevation).applyMatrix4(t);n.x=r.x,n.y=r.y,s=r.z,e&&n.bulge!=null&&(n.bulge=-n.bulge)}),this._elevation=s,this._geo._boundingBoxNeedsUpdate=!0,this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0}]},accessor:{get:()=>this._geo.vertices}},{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]},{groupName:"others",properties:[{name:"closed",type:"float",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}}]}]}}subWorldDraw(t){const e=[];return this._geo.getPoints(100).forEach(n=>e.push(new x().set(n.x,n.y,this.elevation))),t.lines(e)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPolyline"),t.writeInt32(90,this.numberOfVertices),t.writeInt16(70,this.closed?1:0),t.writeDouble(38,this.elevation);for(let e=0;e<this.numberOfVertices;++e)t.writePoint2d(10,this.getPoint2dAt(e));return this}};wr.typeName="Polyline";let Ai=wr;const xr=class xr extends gt{get dxfTypeName(){return"POINT"}constructor(){super(),this._geo=new x}get position(){return this._geo}set position(t){this._geo.set(t.x,t.y,t.z||0)}get geometricExtents(){return new C().expandByPoint(this._geo)}subGetOsnapPoints(t,e,s,n){R.Node===t&&n.push(this._geo)}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}transformBy(t){return this._geo.applyMatrix4(t),this}subWorldDraw(t){return t.point(this._geo,{displayMode:this.database.pdmode,displaySize:this.database.pdsize})}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbPoint"),t.writePoint3d(10,this.position),this}};xr.typeName="Point";let Mi=xr;var ao=(i=>(i[i.Invalid=0]="Invalid",i[i.Rect=1]="Rect",i[i.Poly=2]="Poly",i))(ao||{}),oo=(i=>(i[i.Show=1]="Show",i[i.ShowUnAligned=2]="ShowUnAligned",i[i.Clip=4]="Clip",i[i.Transparent=8]="Transparent",i))(oo||{});const br=class br extends gt{get dxfTypeName(){return"IMAGE"}constructor(){super(),this._brightness=50,this._contrast=50,this._fade=0,this._width=0,this._height=0,this._position=new x,this._scale=new U(1,1),this._rotation=0,this._imageSize=new v,this._clipBoundaryType=1,this._clipBoundary=[],this._isClipped=!1,this._isShownClipped=!1,this._isImageShown=!0,this._isImageTransparent=!1,this._imageDefId=""}get brightness(){return this._brightness}set brightness(t){this._brightness=t}get contrast(){return this._contrast}set contrast(t){this._contrast=t}get fade(){return this._fade}set fade(t){this._fade=t}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get position(){return this._position}set position(t){this._position=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get scale(){return this._scale}set scale(t){this._scale.copy(t)}get imageSize(){return this._imageSize}set imageSize(t){this._imageSize.copy(t)}get clipBoundaryType(){return this._clipBoundaryType}set clipBoundaryType(t){this._clipBoundaryType=t}get clipBoundary(){return this._clipBoundary}set clipBoundary(t){this._clipBoundary=[],this._clipBoundary.push(...t)}get isClipped(){return this._isClipped}set isClipped(t){this._isClipped=t}get isShownClipped(){return this._isShownClipped}set isShownClipped(t){this._isShownClipped=t}get isImageShown(){return this._isImageShown}set isImageShown(t){this._isImageShown=t}get isImageTransparent(){return this._isImageTransparent}set isImageTransparent(t){this._isImageTransparent=t}get image(){return this._image}set image(t){this._image=t}get imageDefId(){return this._imageDefId}set imageDefId(t){this._imageDefId=t}get imageFileName(){if(this._imageDefId){const t=this.database.objects.imageDefinition.getIdAt(this._imageDefId);if(t)return t.sourceFileName}return""}get geometricExtents(){const t=new C;return t.min.copy(this._position),t.max.set(this._position.x+this._width,this._position.y+this._height,0),t}subGetGripPoints(){return this.boundaryPath()}subWorldDraw(t){const e=this.boundaryPath();return this._image?t.image(this._image,{boundary:e,roation:this._rotation}):t.lines(e)}transformBy(t){const e=this._width*this._scale.x,s=this._height*this._scale.y,n=new f(e*Math.cos(this._rotation),e*Math.sin(this._rotation),0),r=new f(-s*Math.sin(this._rotation),s*Math.cos(this._rotation),0),a=this._position.clone(),o=this._position.clone().add(n),l=this._position.clone().add(r);a.applyMatrix4(t),o.applyMatrix4(t),l.applyMatrix4(t);const c=new f(o).sub(a),d=new f(l).sub(a);return this._position.copy(a),this._rotation=Math.atan2(c.y,c.x),this._width=c.length(),this._height=d.length(),this._scale.set(1,1),this}boundaryPath(){const t=[];if(this.isClipped&&this._clipBoundary.length>3){const e=this._width,s=this._height,n=new pt;n.setFromPoints(this._clipBoundary);const r=new v;r.setX(this._position.x-n.min.x*e),r.setY(this._position.y-n.min.y*s),this._clipBoundary.forEach(a=>{const o=a.x*e+r.x,l=a.y*s+r.y;t.push(new x(o,l,this._position.z))})}else{if(t.push(this._position),t.push(this._position.clone().setX(this._position.x+this._width)),t.push(this._position.clone().set(this._position.x+this._width,this._position.y+this._height,this._position.z)),t.push(this._position.clone().setY(this._position.y+this._height)),this._rotation>0){Yr.copy(t[1]);for(let e=1;e<4;e++)ei.copy(t[e]),ei.rotateAround(Yr,this._rotation),t[e].setX(ei.x),t[e].setY(ei.y)}t.push(t[0])}return t}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbRasterImage"),t.writePoint3d(10,this.position);const e=this.width*this.scale.x,s=this.height*this.scale.y,n=this._imageSize.x>0&&this._imageSize.y>0?this._imageSize:{x:e,y:s},r=n.x>0?e/n.x:e,a=n.y>0?s/n.y:s,o=Math.cos(this._rotation),l=Math.sin(this._rotation);t.writePoint3d(11,{x:r*o,y:r*l,z:0}),t.writePoint3d(12,{x:-a*l,y:a*o,z:0}),t.writePoint2d(13,n),t.writeObjectId(340,this.imageDefId);const c=(this.isImageShown?1:0)|(this.isShownClipped?4:0)|(this.isImageTransparent?8:0);if(t.writeInt16(70,c),t.writeInt16(280,this.isClipped?1:0),t.writeInt16(281,this.brightness),t.writeInt16(282,this.contrast),t.writeInt16(283,this.fade),t.writeInt16(71,this.clipBoundaryType),this.isClipped){t.writeInt16(91,this.clipBoundary.length);for(const d of this.clipBoundary)t.writePoint2d(14,d)}return this}};br.typeName="RasterImage";let Fs=br;const Yr=new v,ei=new v,fr=class fr extends rt{get dxfTypeName(){return"RAY"}constructor(){super(),this._basePoint=new x,this._unitDir=new f}get basePoint(){return this._basePoint}set basePoint(t){this._basePoint.copy(t)}get unitDir(){return this._unitDir}set unitDir(t){this._unitDir.copy(t)}get closed(){return!1}get geometricExtents(){const t=new C;return t.expandByPoint(this._unitDir.clone().multiplyScalar(10).add(this._basePoint)),t.expandByPoint(this._unitDir.clone().multiplyScalar(-10).add(this._basePoint)),t}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"basePointX",type:"float",editable:!0,accessor:{get:()=>this.basePoint.x,set:t=>{this.basePoint.x=t}}},{name:"basePointY",type:"float",editable:!0,accessor:{get:()=>this.basePoint.y,set:t=>{this.basePoint.y=t}}},{name:"basePointZ",type:"float",editable:!0,accessor:{get:()=>this.basePoint.z,set:t=>{this.basePoint.z=t}}},{name:"unitDirX",type:"float",editable:!0,accessor:{get:()=>this.unitDir.x,set:t=>{this.unitDir.x=t}}},{name:"unitDirY",type:"float",editable:!0,accessor:{get:()=>this.unitDir.y,set:t=>{this.unitDir.y=t}}},{name:"unitDirZ",type:"float",editable:!0,accessor:{get:()=>this.unitDir.z,set:t=>{this.unitDir.z=t}}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.basePoint),t}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:n.push(this.basePoint);break}}transformBy(t){return this._basePoint.applyMatrix4(t),this._unitDir.transformDirection(t),this}subWorldDraw(t){const e=[];return e.push(this.basePoint),e.push(this._unitDir.clone().multiplyScalar(1e6).add(this._basePoint)),t.lines(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRay"),t.writePoint3d(10,this.basePoint),t.writeVector3d(11,this.unitDir),this}};fr.typeName="Ray";let Ti=fr;const Ir=class Ir extends gt{get dxfTypeName(){return"VIEWPORT"}constructor(){super(),this._centerPoint=new x,this._height=0,this._width=0,this._viewCenter=new x,this._viewHeight=0,this._number=-1}get number(){return this._number}set number(t){this._number=t}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint=t}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get viewCenter(){return this._viewCenter}set viewCenter(t){this._viewCenter=t}get viewHeight(){return this._viewHeight}set viewHeight(t){this._viewHeight=t}get geometricExtents(){return new C}transformBy(t){const e=this._centerPoint.clone(),s=this._centerPoint.clone().add(new f(this._width,0,0)),n=this._centerPoint.clone().add(new f(0,this._height,0));e.applyMatrix4(t),s.applyMatrix4(t),n.applyMatrix4(t);const r=new f(s).sub(e),a=new f(n).sub(e),o=this._height!==0?a.length()/this._height:1;return this._centerPoint.copy(e),this._width=r.length(),this._height=a.length(),this._viewHeight*=o,this}subWorldDraw(t){if(this._number>1&&this.ownerId!=this.database.tables.blockTable.modelSpace.objectId){const e=this.toGiViewport();return t.group(this.createViewportRect(e,t))}}toGiViewport(){const t=new Qa;return t.id=this.objectId,t.groupId=this.ownerId,t.number=this.number,t.centerPoint=this.centerPoint,t.width=this.width,t.height=this.height,t.viewHeight=this.viewHeight,t.viewCenter=this.viewCenter,t}createViewportRect(t,e){const s=[];return s.push(e.lines([new x(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0),new x(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0)])),s.push(e.lines([new x(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0),new x(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0)])),s.push(e.lines([new x(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0),new x(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0)])),s.push(e.lines([new x(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0),new x(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0)])),s}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewport"),t.writePoint3d(10,this.centerPoint),t.writeDouble(40,this.height),t.writeDouble(41,this.width),t.writePoint3d(12,this.viewCenter),t.writeDouble(45,this.viewHeight),t.writeInt32(69,this.number),this}};Ir.typeName="Viewport";let vi=Ir;const Pr=class Pr extends Fs{get dxfTypeName(){return"WIPEOUT"}subWorldDraw(t){const e=this.boundaryPath(),s=new vs;return s.add(new me(e)),t.area(s)}dxfOutFields(t){return super.dxfOutFields(t),this}};Pr.typeName="Wipeout";let ki=Pr;const Er=class Er extends rt{get dxfTypeName(){return"XLINE"}constructor(){super(),this._basePoint=new x,this._unitDir=new f}get basePoint(){return this._basePoint}set basePoint(t){this._basePoint.copy(t)}get unitDir(){return this._unitDir}set unitDir(t){this._unitDir.copy(t)}get closed(){return!1}get geometricExtents(){const t=new C;return t.expandByPoint(this._unitDir.clone().multiplyScalar(10).add(this._basePoint)),t.expandByPoint(this._unitDir.clone().multiplyScalar(-10).add(this._basePoint)),t}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"basePointX",type:"float",editable:!0,accessor:{get:()=>this.basePoint.x,set:t=>{this.basePoint.x=t}}},{name:"basePointY",type:"float",editable:!0,accessor:{get:()=>this.basePoint.y,set:t=>{this.basePoint.y=t}}},{name:"basePointZ",type:"float",editable:!0,accessor:{get:()=>this.basePoint.z,set:t=>{this.basePoint.z=t}}},{name:"unitDirX",type:"float",editable:!0,accessor:{get:()=>this.unitDir.x,set:t=>{this.unitDir.x=t}}},{name:"unitDirY",type:"float",editable:!0,accessor:{get:()=>this.unitDir.y,set:t=>{this.unitDir.y=t}}},{name:"unitDirZ",type:"float",editable:!0,accessor:{get:()=>this.unitDir.z,set:t=>{this.unitDir.z=t}}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.basePoint),t}transformBy(t){return this._basePoint.applyMatrix4(t),this._unitDir.transformDirection(t),this}subWorldDraw(t){const e=[];return e.push(this._unitDir.clone().multiplyScalar(-1e6).add(this._basePoint)),e.push(this._unitDir.clone().multiplyScalar(1e6).add(this._basePoint)),t.lines(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbXline"),t.writePoint3d(10,this.basePoint),t.writeVector3d(11,this.unitDir),this}};Er.typeName="Xline";let Li=Er;class ho{constructor(t){this.position=new x(t.x,t.y,t.z||0)}}const Sr=class Sr extends rt{get dxfTypeName(){return"POLYLINE"}constructor(t,e,s,n=!1,r=!1){super(),this._mCount=t,this._nCount=e,this._closedM=n,this._closedN=r,this._vertices=s.map(a=>new ho(a))}get mCount(){return this._mCount}get nCount(){return this._nCount}get closedM(){return this._closedM}get closedN(){return this._closedN}get closed(){return this._closedM}set closed(t){this._closedM=t}get numberOfVertices(){return this._vertices.length}getVertexAt(t){if(t<0||t>=this._vertices.length)throw new Error("Vertex index out of bounds");return this._vertices[t]}getVertexAtMN(t,e){const s=t*this._nCount+e;return this.getVertexAt(s)}get geometricExtents(){if(this._vertices.length===0)return new C(new x(0,0,0),new x(0,0,0));let t=Number.MAX_VALUE,e=Number.MAX_VALUE,s=Number.MAX_VALUE,n=-Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE;return this._vertices.forEach(o=>{t=Math.min(t,o.position.x),e=Math.min(e,o.position.y),s=Math.min(s,o.position.z),n=Math.max(n,o.position.x),r=Math.max(r,o.position.y),a=Math.max(a,o.position.z)}),new C(new x(t,e,s),new x(n,r,a))}subGetGripPoints(){const t=new Array;return this._vertices.forEach(e=>{t.push(e.position)}),t}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:this._vertices.forEach(r=>{n.push(r.position)});break}}transformBy(t){return this._vertices.forEach(e=>{e.position.applyMatrix4(t)}),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"mCount",type:"float",editable:!1,accessor:{get:()=>this._mCount}},{name:"nCount",type:"float",editable:!1,accessor:{get:()=>this._nCount}},{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0},{name:"z",type:"float",editable:!0}]},accessor:{get:()=>this._vertices.map(t=>({x:t.position.x,y:t.position.y,z:t.position.z}))}}]},{groupName:"others",properties:[{name:"closedM",type:"boolean",editable:!0,accessor:{get:()=>this._closedM,set:t=>{this._closedM=t}}},{name:"closedN",type:"boolean",editable:!0,accessor:{get:()=>this._closedN,set:t=>{this._closedN=t}}}]}]}}subWorldDraw(t){const e=[];for(let s=0;s<this._mCount;s++)for(let n=0;n<this._nCount;n++){const r=this.getVertexAtMN(s,n);let a=n+1;if(a>=this._nCount)if(this._closedN)a=0;else continue;const o=this.getVertexAtMN(s,a);e.push(r.position),e.push(o.position)}for(let s=0;s<this._nCount;s++)for(let n=0;n<this._mCount;n++){const r=this.getVertexAtMN(n,s);let a=n+1;if(a>=this._mCount)if(this._closedM)a=0;else continue;const o=this.getVertexAtMN(a,s);e.push(r.position),e.push(o.position)}return t.lines(e)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPolygonMesh");let e=16;return this._closedM&&(e|=1),this._closedN&&(e|=32),t.writeInt16(66,1),t.writeInt16(70,e),t.writeInt32(71,this._mCount),t.writeInt32(72,this._nCount),this}dxfOut(t,e=!1){super.dxfOut(t,e);for(let s=0;s<this.numberOfVertices;s++){const n=this.getVertexAt(s);t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDbPolygonMeshVertex"),t.writePoint3d(10,n.position),t.writeInt16(70,16)}return t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}};Sr.typeName="PolygonMesh";let Ni=Sr;class lo{constructor(t){this.position=new x(t.x,t.y,t.z||0)}}class co{constructor(t){this.vertexIndices=t}}const Ar=class Ar extends rt{get dxfTypeName(){return"POLYLINE"}constructor(t,e){super(),this._vertices=t.map(s=>new lo(s)),this._faces=e.map(s=>new co(s))}get numberOfVertices(){return this._vertices.length}get numberOfFaces(){return this._faces.length}get closed(){return!1}set closed(t){}getVertexAt(t){if(t<0||t>=this._vertices.length)throw new Error("Vertex index out of bounds");return this._vertices[t]}getFaceAt(t){if(t<0||t>=this._faces.length)throw new Error("Face index out of bounds");return this._faces[t]}get geometricExtents(){if(this._vertices.length===0)return new C(new x(0,0,0),new x(0,0,0));let t=Number.MAX_VALUE,e=Number.MAX_VALUE,s=Number.MAX_VALUE,n=-Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE;return this._vertices.forEach(o=>{t=Math.min(t,o.position.x),e=Math.min(e,o.position.y),s=Math.min(s,o.position.z),n=Math.max(n,o.position.x),r=Math.max(r,o.position.y),a=Math.max(a,o.position.z)}),new C(new x(t,e,s),new x(n,r,a))}subGetGripPoints(){const t=new Array;return this._vertices.forEach(e=>{t.push(e.position)}),t}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:this._vertices.forEach(r=>{n.push(r.position)});break}}transformBy(t){return this._vertices.forEach(e=>{e.position.applyMatrix4(t)}),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0},{name:"z",type:"float",editable:!0}]},accessor:{get:()=>this._vertices.map(t=>({x:t.position.x,y:t.position.y,z:t.position.z}))}},{name:"faces",type:"array",editable:!1,itemSchema:{properties:[{name:"vertexIndices",type:"array",editable:!1,itemSchema:{properties:[{name:"index",type:"int",editable:!1}]}}]},accessor:{get:()=>this._faces.map(t=>({vertexIndices:t.vertexIndices}))}}]}]}}subWorldDraw(t){const e=[];return this._faces.forEach(s=>{const n=[];if(s.vertexIndices.forEach(r=>{const a=Math.abs(r)-1;a>=0&&a<this._vertices.length&&n.push(this._vertices[a].position)}),n.length>=3)for(let r=0;r<n.length;r++){const a=n[r],o=n[(r+1)%n.length];e.push(a),e.push(o)}}),t.lines(e)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPolyFaceMesh");const e=64;return t.writeInt16(66,1),t.writeInt16(70,e),this}dxfOut(t,e=!1){super.dxfOut(t,e);for(let s=0;s<this.numberOfVertices;s++){const n=this.getVertexAt(s);t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDbPolyFaceMeshVertex"),t.writePoint3d(10,n.position),t.writeInt16(70,64)}for(let s=0;s<this.numberOfFaces;s++){const n=this.getFaceAt(s);t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDbPolyFaceMeshVertex"),t.writeInt16(70,128),n.vertexIndices.forEach((r,a)=>{t.writeInt32(10+a,r)})}return t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}};Ar.typeName="PolyFaceMesh";let Oi=Ar;var uo=(i=>(i[i.AtLeast=1]="AtLeast",i[i.Exactly=2]="Exactly",i))(uo||{});const Mr=class Mr extends gt{get dxfTypeName(){return"DIMENSION"}constructor(){super(),this._dimBlockId=null,this._dimBlockPosition=new x,this._dimensionStyleName=null,this._dimensionText=null,this._textLineSpacingFactor=1,this._textLineSpacingStyle=1,this._textPosition=new x,this._textRotation=0,this._normal=new f(0,0,1)}get dimBlockId(){return this._dimBlockId}set dimBlockId(t){this._dimBlockId=t}get dimBlockPosition(){return this._dimBlockPosition}set dimBlockPosition(t){this._dimBlockPosition.copy(t)}get dimensionStyleName(){return this._dimensionStyleName}set dimensionStyleName(t){this._dimensionStyleName=t}get dimensionStyle(){if(this._dimStyle==null){let t;this.dimensionStyleName&&(t=this.database.tables.dimStyleTable.getAt(this.dimensionStyleName)),t==null&&(t=new je),this._dimStyle=t}return this._dimStyle}get dimensionText(){return this._dimensionText}set dimensionText(t){this._dimensionText=t}get measurement(){return this._measurement}set measurement(t){this._measurement=t}get textLineSpacingFactor(){return this._textLineSpacingFactor}set textLineSpacingFactor(t){this._textLineSpacingFactor=t}get textLineSpacingStyle(){return this._textLineSpacingStyle}set textLineSpacingStyle(t){this._textLineSpacingStyle=t}get textPosition(){return this._textPosition}set textPosition(t){this._textPosition.copy(t)}get textRotation(){return this._textRotation}set textRotation(t){this._textRotation=t}get normal(){return this._normal}set normal(t){this._normal.copy(t).normalize()}transformBy(t){const e=this._textPosition.clone(),s=this._textPosition.clone().add(new f(Math.cos(this._textRotation),Math.sin(this._textRotation),0));this._dimBlockPosition.applyMatrix4(t),this._textPosition.applyMatrix4(t),this._normal.transformDirection(t),e.applyMatrix4(t),s.applyMatrix4(t);const n=new f(s).sub(e);return n.lengthSq()>0&&(this._textRotation=Math.atan2(n.y,n.x)),this.subTransformBy(t),this}subWorldDraw(t){if(this.dimBlockId){const s=this.database.tables.blockTable.getAt(this.dimBlockId);if(s){const n=this.computeDimBlockTransform();return Je.instance.draw(t,s,this.rgbColor,[],!1,n,this._normal)}}return t.group([])}get arrowScaleFactor(){return this.dimensionStyle.dimasz}get firstArrowStyle(){return{type:this.firstArrowType,scale:this.arrowScaleFactor,appended:this.isAppendArrow,visible:this.dimensionStyle.dimse1==0}}get secondArrowStyle(){return{type:this.secondArrowType,scale:this.arrowScaleFactor,appended:this.isAppendArrow,visible:this.dimensionStyle.dimse2==0}}get isAppendArrow(){return!0}get firstArrowTypeBtrId(){const t=this.dimensionStyle;return t.dimsah==0?t.dimblk:t.dimblk1}get firstArrowType(){const t=this.firstArrowTypeBtrId;return this.getArrowName(t)}get secondArrowTypeBtrId(){const t=this.dimensionStyle;return t.dimsah==0?t.dimblk:t.dimblk2}get secondArrowType(){const t=this.secondArrowTypeBtrId;return this.getArrowName(t)}get arrowLineCount(){return 1}getLineArrowStyle(t){}findPointOnLine1(t,e,s){const n=new x().subVectors(e,t).normalize();return new x(e).addScaledVector(n,s)}findPointOnLine2(t,e,s){const n=t.x+s*Math.cos(e),r=t.y+s*Math.sin(e);return{x:n,y:r}}adjustExtensionLine(t){const e=this.dimensionStyle;t.extend(e.dimexe),t.extend(-e.dimexo,!0)}getArrowName(t){const e=this.database.tables.blockTable.getIdAt(t);return e?e.name.toUpperCase():Vn.Closed}computeDimBlockTransform(){const t=this.dimBlockId?this.database.tables.blockTable.getAt(this.dimBlockId):void 0,e=(t==null?void 0:t.origin)??x.ORIGIN,s=new Q().makeTranslation(-e.x,-e.y,-e.z),n=new Q().makeTranslation(this._dimBlockPosition.x,this._dimBlockPosition.y,this._dimBlockPosition.z);return new Q().multiplyMatrices(n,s)}subTransformBy(t){}dxfOutFields(t){super.dxfOutFields(t);const e=this.dimensionStyleName!=null?this.database.tables.dimStyleTable.getAt(this.dimensionStyleName):void 0;return t.writeSubclassMarker("AcDbDimension"),t.writeString(3,this.dimensionStyleName??this.dimensionStyle.name),t.writePoint3d(10,this.dimBlockPosition),t.writeString(1,this.dimensionText??""),t.writeAngle(53,this.textRotation),t.writePoint3d(11,this.textPosition),t.writeInt16(70,0),t.writeVector3d(210,this.normal),t.writeObjectId(340,e==null?void 0:e.objectId),this}};Mr.typeName="Dimension";let ne=Mr;const Tr=class Tr extends ne{constructor(t,e,s,n,r=null,a=null){super(),this._centerPoint=new x().copy(t),this._xLine1Point=new x().copy(e),this._xLine2Point=new x().copy(s),this._arcPoint=new x().copy(n),this.dimensionText=r,this.dimensionStyleName=a}get arcPoint(){return this._arcPoint}set arcPoint(t){this._arcPoint.copy(t)}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint.copy(t)}get xLine1Point(){return this._xLine1Point}set xLine1Point(t){this._xLine1Point.copy(t)}get xLine2Point(){return this._xLine2Point}set xLine2Point(t){this._xLine2Point.copy(t)}subTransformBy(t){this._arcPoint.applyMatrix4(t),this._centerPoint.applyMatrix4(t),this._xLine1Point.applyMatrix4(t),this._xLine2Point.applyMatrix4(t)}get geometricExtents(){return new C}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDb3PointAngularDimension"),t.writePoint3d(13,this.xLine1Point),t.writePoint3d(14,this.xLine2Point),t.writePoint3d(15,this.centerPoint),t.writePoint3d(16,this.arcPoint),this}};Tr.typeName="3PointAngularDimension";let Ci=Tr;const vr=class vr extends ne{constructor(t,e,s,n=null,r=null){super(),this._dimLinePoint=new x().copy(s),this._xLine1Point=new x().copy(t),this._xLine2Point=new x().copy(e),this._oblique=0,this._rotation=0,this.calculateRotation(),n?this.dimensionText=n:this.dimensionText=this._xLine1Point.distanceTo(this._xLine2Point).toFixed(3),this.dimensionStyleName=r}get dimLinePoint(){return this._dimLinePoint}set dimLinePoint(t){this._dimLinePoint.copy(t)}get xLine1Point(){return this._xLine1Point}set xLine1Point(t){this._xLine1Point.copy(t)}get xLine2Point(){return this._xLine2Point}set xLine2Point(t){this._xLine2Point.copy(t)}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get oblique(){return this._oblique}set oblique(t){this._oblique=t}subTransformBy(t){this._dimLinePoint.applyMatrix4(t),this._xLine1Point.applyMatrix4(t),this._xLine2Point.applyMatrix4(t),this.calculateRotation()}get geometricExtents(){return new C}get isAppendArrow(){return!1}createDimBlock(t){const e=new Z;e.name=t;const s=this.createLines();s.forEach(o=>e.appendEntity(new Os(o.startPoint,o.endPoint))),this.createArrows(s[0]).forEach(o=>e.appendEntity(o));const r=s[0].midPoint,a=this.createMText(r,this._rotation);return a&&e.appendEntity(a),e}createMText(t,e){const s=n=>({x:Math.cos(n),y:Math.sin(n),z:0});if(this.dimensionText){const n=new Cs;return n.attachmentPoint=ot.MiddleLeft,n.layer="0",n.color=new tt(S.ByBlock),n.location=t,n.contents=this.dimensionText??"",n.height=10,n.direction=s(e),n.styleName=this.dimensionStyle.dimtxsty,n}}createArrows(t){const e=[];return e.push(this.createArrow(t.startPoint,this.rotation+Math.PI,10)),e.push(this.createArrow(t.endPoint,this.rotation,10)),e}createArrow(t,e,s){const n="_CAXARROW",r=new Qe(n);return r.position=t,r.rotation=e,r.scaleFactors={x:s,y:s,z:s},r}createLines(){const t=[],e=this.createExtensionLine(this._xLine1Point),s=this.createExtensionLine(this._xLine2Point),n=this.findIntersectionPoint(e,this._dimLinePoint),r=this.findIntersectionPoint(s,this._dimLinePoint),a=new pe(n,r);return t.push(a),e.endPoint=n,this.adjustExtensionLine(e),t.push(e),s.endPoint=r,this.adjustExtensionLine(s),t.push(s),t}createExtensionLine(t){const e=this.rotation+Math.PI/2,s=this.findPointOnLine2(t,e,100);return new pe(t,{...s,z:t.z})}findIntersectionPoint(t,e){const s=t.startPoint,n=t.endPoint,r=new f().subVectors(n,s).normalize(),o=new f().subVectors(e,s).dot(r),l=new f().copy(r).multiplyScalar(o);return new f().addVectors(s,l)}calculateRotation(){const t=this._xLine1Point,e=this._xLine2Point,s=e.x-t.x,n=e.y-t.y;this._rotation=Math.atan2(n,s)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbAlignedDimension"),t.writePoint3d(13,this.xLine1Point),t.writePoint3d(14,this.xLine2Point),t.writePoint3d(15,this.dimLinePoint),t.writeAngle(50,this.rotation),t.writeAngle(52,this.oblique),this}};vr.typeName="AlignedDimension";let Bi=vr;const kr=class kr extends ne{constructor(t,e,s,n,r=null,a=null){super(),this._arcPoint=new x().copy(n),this._xLine1Point=new x().copy(e),this._xLine2Point=new x().copy(s),this._centerPoint=new x().copy(t),this.dimensionText=r,this.dimensionStyleName=a}get arcPoint(){return this._arcPoint}set arcPoint(t){this._arcPoint.copy(t)}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint.copy(t)}get xLine1Point(){return this._xLine1Point}set xLine1Point(t){this._xLine1Point.copy(t)}get xLine2Point(){return this._xLine2Point}set xLine2Point(t){this._xLine2Point.copy(t)}subTransformBy(t){this._arcPoint.applyMatrix4(t),this._centerPoint.applyMatrix4(t),this._xLine1Point.applyMatrix4(t),this._xLine2Point.applyMatrix4(t)}get geometricExtents(){return new C}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbArcDimension"),t.writePoint3d(13,this.xLine1Point),t.writePoint3d(14,this.xLine2Point),t.writePoint3d(15,this.centerPoint),t.writePoint3d(16,this.arcPoint),this}};kr.typeName="ArcDimension";let xn=kr;const Lr=class Lr extends ne{constructor(t,e,s=0,n=null,r=null){super(),this._chordPoint=new x().copy(t),this._farChordPoint=new x().copy(e),this._extArcStartAngle=0,this._extArcEndAngle=0,this._leaderLength=s,this.dimensionText=n,this.dimensionStyleName=r}get chordPoint(){return this._chordPoint}set chordPoint(t){this._chordPoint.copy(t)}get farChordPoint(){return this._farChordPoint}set farChordPoint(t){this._farChordPoint.copy(t)}get extArcStartAngle(){return this._extArcStartAngle}set extArcStartAngle(t){this._extArcStartAngle=t}get extArcEndAngle(){return this._extArcEndAngle}set extArcEndAngle(t){this._extArcEndAngle=t}get leaderLength(){return this._leaderLength}subTransformBy(t){this._chordPoint.applyMatrix4(t),this._farChordPoint.applyMatrix4(t)}get geometricExtents(){return new C}drawLines(t,e){const s=[],n=e.length;return n==1?s.push(this.drawLine(t,e[0],{firstArrow:this.firstArrowStyle})):n==3?(this.sortLines(e),s.push(this.drawLine(t,e[0],{firstArrow:this.firstArrowStyle})),s.push(this.drawLine(t,e[1])),s.push(this.drawLine(t,e[2],{firstArrow:this.firstArrowStyle}))):e.forEach(r=>{s.push(this.drawLine(t,r))}),s}drawLine(t,e,s){if(s){const n=[e.startPoint,e.endPoint];return t.lines(n)}else return e.worldDraw(t)}sortLines(t){const e=(s,n)=>s.x!==n.x?s.x-n.x:s.y!==n.y?s.y-n.y:s.z-n.z;t.sort((s,n)=>{const r=e(s.startPoint,n.startPoint);return r!==0?r:e(s.endPoint,n.endPoint)})}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbDiametricDimension"),t.writePoint3d(15,this.chordPoint),t.writePoint3d(16,this.farChordPoint),t.writeDouble(40,this.leaderLength),t.writeAngle(52,this.extArcStartAngle),t.writeAngle(53,this.extArcEndAngle),this}};Lr.typeName="DiametricDimension";let Fi=Lr;const Nr=class Nr extends ne{constructor(t,e,s=null,n=null){super(),this._definingPoint=new x().copy(t),this._leaderEndPoint=new x().copy(e),this.dimensionText=s,this.dimensionStyleName=n}get definingPoint(){return this._definingPoint}set definingPoint(t){this._definingPoint.copy(t)}get leaderEndPoint(){return this._leaderEndPoint}set leaderEndPoint(t){this._leaderEndPoint.copy(t)}subTransformBy(t){this._definingPoint.applyMatrix4(t),this._leaderEndPoint.applyMatrix4(t)}get geometricExtents(){return new C}get arrowLineCount(){return 0}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbOrdinateDimension"),t.writePoint3d(13,this.definingPoint),t.writePoint3d(14,this.leaderEndPoint),this}};Nr.typeName="OrdinateDimension";let Ri=Nr;const Or=class Or extends ne{constructor(t,e,s,n=null,r=null){super(),this._center=new x().copy(t),this._chordPoint=new x().copy(e),this._leaderLength=s,this._extArcStartAngle=0,this._extArcEndAngle=0,this.dimensionText=n,this.dimensionStyleName=r}get center(){return this._center}set center(t){this._center.copy(t)}get chordPoint(){return this._chordPoint}set chordPoint(t){this._chordPoint.copy(t)}get extArcStartAngle(){return this._extArcStartAngle}set extArcStartAngle(t){this._extArcStartAngle=t}get extArcEndAngle(){return this._extArcEndAngle}set extArcEndAngle(t){this._extArcEndAngle=t}get leaderLength(){return this._leaderLength}set leaderLenght(t){this._leaderLength=t}subTransformBy(t){this._center.applyMatrix4(t),this._chordPoint.applyMatrix4(t)}get geometricExtents(){return new C}getLineArrowStyle(t){return{secondArrow:this.secondArrowStyle}}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRadialDimension"),t.writePoint3d(15,this.center),t.writePoint3d(13,this.chordPoint),t.writeDouble(40,this.leaderLength),t.writeAngle(52,this.extArcStartAngle),t.writeAngle(53,this.extArcEndAngle),this}};Or.typeName="RadialDimension";let zi=Or;var po=(i=>(i[i.kInches=0]="kInches",i[i.kMillimeters=1]="kMillimeters",i[i.kPixels=2]="kPixels",i))(po||{}),go=(i=>(i[i.k0degrees=0]="k0degrees",i[i.k90degrees=1]="k90degrees",i[i.k180degrees=2]="k180degrees",i[i.k270degrees=3]="k270degrees",i))(go||{}),mo=(i=>(i[i.kDisplay=0]="kDisplay",i[i.kExtents=1]="kExtents",i[i.kLimits=2]="kLimits",i[i.kView=3]="kView",i[i.kWindow=4]="kWindow",i[i.kLayout=5]="kLayout",i))(mo||{}),ce=(i=>(i[i.kDraft=0]="kDraft",i[i.kPreview=1]="kPreview",i[i.kNormal=2]="kNormal",i[i.kPresentation=3]="kPresentation",i[i.kMaximum=4]="kMaximum",i[i.kCustom=5]="kCustom",i))(ce||{}),Xe=(i=>(i[i.kAsDisplayed=0]="kAsDisplayed",i[i.kWireframe=1]="kWireframe",i[i.kHidden=2]="kHidden",i[i.kRendered=3]="kRendered",i[i.kVisualStyle=4]="kVisualStyle",i[i.kRenderPreset=5]="kRenderPreset",i))(Xe||{}),yo=(i=>(i[i.kScaleToFit=0]="kScaleToFit",i[i.k1_128in_1ft=1]="k1_128in_1ft",i[i.k1_64in_1ft=2]="k1_64in_1ft",i[i.k1_32in_1ft=3]="k1_32in_1ft",i[i.k1_16in_1ft=4]="k1_16in_1ft",i[i.k3_32in_1ft=5]="k3_32in_1ft",i[i.k1_8in_1ft=6]="k1_8in_1ft",i[i.k3_16in_1ft=7]="k3_16in_1ft",i[i.k1_4in_1ft=8]="k1_4in_1ft",i[i.k3_8in_1ft=9]="k3_8in_1ft",i[i.k1_2in_1ft=10]="k1_2in_1ft",i[i.k3_4in_1ft=11]="k3_4in_1ft",i[i.k1in_1ft=12]="k1in_1ft",i[i.k3in_1ft=13]="k3in_1ft",i[i.k6in_1ft=14]="k6in_1ft",i[i.k1ft_1ft=15]="k1ft_1ft",i[i.k1_1=16]="k1_1",i[i.k1_2=17]="k1_2",i[i.k1_4=18]="k1_4",i[i.k1_5=19]="k1_5",i[i.k1_8=20]="k1_8",i[i.k1_10=21]="k1_10",i[i.k1_16=22]="k1_16",i[i.k1_20=23]="k1_20",i[i.k1_30=24]="k1_30",i[i.k1_40=25]="k1_40",i[i.k1_50=26]="k1_50",i[i.k1_100=27]="k1_100",i[i.k2_1=28]="k2_1",i[i.k4_1=29]="k4_1",i[i.k8_1=30]="k8_1",i[i.k10_1=31]="k10_1",i[i.k100_1=32]="k100_1",i[i.k1000_1=33]="k1000_1",i[i.k1and1_2in_1ft=34]="k1and1_2in_1ft",i))(yo||{});const Fl={0:0,1:1/1536,2:1/768,3:1/384,4:1/192,5:1/128,6:1/96,7:1/64,8:1/48,9:1/32,10:1/24,11:1/16,12:1/12,13:1/4,14:1/2,15:1,16:1,17:1/2,18:1/4,19:1/5,20:1/8,21:1/10,22:1/16,23:1/20,24:1/30,25:1/40,26:1/50,27:1/100,28:2,29:4,30:8,31:10,32:100,33:1e3,34:1/8};class _o extends re{constructor(t=!1){super(),this._plotSettingsName="",this._plotCfgName="",this._canonicalMediaName="",this._currentStyleSheet="",this._plotOrigin=new v,this._customPrintScale={numerator:1,denominator:1},this._plotPaperSize=new v,this._plotPaperMargins={left:0,right:0,top:0,bottom:0},this._plotViewName="",this._plotWindowArea=new pt,this._modelType=t,this._plotCentered=!1,this._plotHidden=!1,this._plotPaperUnits=1,this._plotPlotStyles=!0,this._plotRotation=0,this._plotType=5,this._plotViewportBorders=!1,this._printLineweights=!0,this._scaleLineweights=!1,this._drawViewportsFirst=!1,this._showPlotStyles=!0,this._shadePlotType=0,this._shadePlotResLevel=2,this._shadePlotCustomDpi=300,this._shadePlotId=void 0,this._stdScaleType=0,this._useStandardScale=!0}get plotSettingsName(){return this._plotSettingsName}set plotSettingsName(t){this._plotSettingsName=t}getPlotSettingsName(){return this._plotSettingsName}setPlotSettingsName(t){this._plotSettingsName=t}get plotCfgName(){return this._plotCfgName}set plotCfgName(t){this._plotCfgName=t}getPlotCfgName(){return this._plotCfgName}get canonicalMediaName(){return this._canonicalMediaName}set canonicalMediaName(t){this._canonicalMediaName=t}getCanonicalMediaName(){return this._canonicalMediaName}get currentStyleSheet(){return this._currentStyleSheet}set currentStyleSheet(t){this._currentStyleSheet=t}getCurrentStyleSheet(){return this._currentStyleSheet}get plotOrigin(){return this._plotOrigin}set plotOrigin(t){this._plotOrigin=t}getPlotOrigin(){return this._plotOrigin}get customPrintScale(){return this._customPrintScale}set customPrintScale(t){this._customPrintScale=t}getCustomPrintScale(){return this._customPrintScale}get plotPaperSize(){return this._plotPaperSize}set plotPaperSize(t){this._plotPaperSize=t}getPlotPaperSize(){return this._plotPaperSize}get plotPaperMargins(){return this._plotPaperMargins}set plotPaperMargins(t){this._plotPaperMargins=t}getPlotPaperMargins(){return this._plotPaperMargins}get plotViewName(){return this._plotViewName}set plotViewName(t){this._plotViewName=t}getPlotViewName(){return this._plotViewName}get plotWindowArea(){return this._plotWindowArea}set plotWindowArea(t){this._plotWindowArea=t}getPlotWindowArea(){return this._plotWindowArea}get modelType(){return this._modelType}set modelType(t){this._modelType=t}getModelType(){return this._modelType}setModelType(t){this._modelType=t}get drawViewportsFirst(){return this._drawViewportsFirst}set drawViewportsFirst(t){this._drawViewportsFirst=t}setDrawViewportsFirst(t){this._drawViewportsFirst=t}get plotCentered(){return this._plotCentered}set plotCentered(t){this._plotCentered=t}setPlotCentered(t){this._plotCentered=t}get plotHidden(){return this._plotHidden}set plotHidden(t){this._plotHidden=t}setPlotHidden(t){this._plotHidden=t}get plotPaperUnits(){return this._plotPaperUnits}set plotPaperUnits(t){this._plotPaperUnits=t}get plotPlotStyles(){return this._plotPlotStyles}set plotPlotStyles(t){this._plotPlotStyles=t}setPlotPlotStyles(t){this._plotPlotStyles=t}get plotRotation(){return this._plotRotation}set plotRotation(t){this._plotRotation=t}get plotType(){return this._plotType}set plotType(t){this._plotType=t}get plotViewportBorders(){return this._plotViewportBorders}set plotViewportBorders(t){this._plotViewportBorders=t}setPlotViewportBorders(t){this._plotViewportBorders=t}get printLineweights(){return this._printLineweights}set printLineweights(t){this._printLineweights=t}setPrintLineweights(t){this._printLineweights=t}get scaleLineweights(){return this._scaleLineweights}set scaleLineweights(t){this._scaleLineweights=t}setScaleLineweights(t){this._scaleLineweights=t}get showPlotStyles(){return this._showPlotStyles}set showPlotStyles(t){this._showPlotStyles=t}setShowPlotStyles(t){this._showPlotStyles=t}get shadePlot(){return this._shadePlotType}set shadePlot(t){this._shadePlotType=t}setShadePlot(t){this._shadePlotType=t}get shadePlotResLevel(){return this._shadePlotResLevel}set shadePlotResLevel(t){this._shadePlotResLevel=t}setShadePlotResLevel(t){this._shadePlotResLevel=t}get shadePlotCustomDPI(){return this._shadePlotCustomDpi}set shadePlotCustomDPI(t){this._shadePlotCustomDpi=t}setShadePlotCustomDPI(t){this._shadePlotCustomDpi=t}get shadePlotId(){return this._shadePlotId}set shadePlotId(t){this._shadePlotId=t}get plotWireframe(){return this._shadePlotType===1}get plotAsRaster(){return this._shadePlotType===3||this._shadePlotType===4||this._shadePlotType===5}get stdScaleType(){return this._stdScaleType}set stdScaleType(t){this._stdScaleType=t}get stdScale(){return Fl[this._stdScaleType]??1}get useStandardScale(){return this._useStandardScale}set useStandardScale(t){this._useStandardScale=t}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPlotSettings"),t.writeString(1,this.plotSettingsName),t.writeString(2,this.plotCfgName),t.writeString(4,this.canonicalMediaName),t.writeString(6,this.plotViewName),t.writeDouble(40,this.plotPaperMargins.left),t.writeDouble(41,this.plotPaperMargins.bottom),t.writeDouble(42,this.plotPaperMargins.right),t.writeDouble(43,this.plotPaperMargins.top),t.writeDouble(44,this.plotPaperSize.x),t.writeDouble(45,this.plotPaperSize.y),t.writeDouble(46,this.plotOrigin.x),t.writeDouble(47,this.plotOrigin.y),t.writeDouble(48,this.plotWindowArea.min.x),t.writeDouble(49,this.plotWindowArea.min.y),t.writeDouble(140,this.plotWindowArea.max.x),t.writeDouble(141,this.plotWindowArea.max.y),t.writeDouble(142,this.customPrintScale.numerator),t.writeDouble(143,this.customPrintScale.denominator);let e=0;return this.plotViewportBorders&&(e|=1),this.showPlotStyles&&(e|=2),this.plotCentered&&(e|=4),this.plotHidden&&(e|=8),this.useStandardScale&&(e|=16),this.plotPlotStyles&&(e|=32),this.scaleLineweights&&(e|=64),this.printLineweights&&(e|=128),this.drawViewportsFirst&&(e|=512),this.modelType&&(e|=1024),t.writeInt16(70,e),t.writeInt16(72,this.plotPaperUnits),t.writeInt16(73,this.plotRotation),t.writeInt16(74,this.plotType),t.writeString(7,this.currentStyleSheet),t.writeInt16(75,this.stdScaleType),t.writeInt16(76,this.shadePlot),t.writeInt16(77,this.shadePlotResLevel),t.writeInt16(78,this.shadePlotCustomDPI),t.writeDouble(147,this.stdScale),t.writeObjectId(333,this.shadePlotId),this}}class Ws extends _o{constructor(){super(),this._tabOrder=-1,this._tabSelected=!1,this._blockTableRecordId="",this._layoutName="",this._limits=new pt,this._extents=new C,this._viewportArray=[]}get layoutName(){return this._layoutName}set layoutName(t){this._layoutName=t.length>256?t.slice(0,256):t}get tabOrder(){return this._tabOrder}set tabOrder(t){this._tabOrder=t}get tabSelected(){return this._tabSelected}set tabSelected(t){this._tabSelected=t}get blockTableRecordId(){return this._blockTableRecordId}set blockTableRecordId(t){this._blockTableRecordId=t}get limits(){return this._limits}set limits(t){this._limits.copy(t)}get extents(){return this._extents}set extents(t){this._extents.copy(t)}get viewportArray(){return this._viewportArray}set viewportArray(t){this._viewportArray=t.slice()}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayout"),t.writeString(1,this.layoutName),t.writeInt16(70,this.tabSelected?1:0),t.writeInt16(71,this.tabOrder),t.writeObjectId(330,this.blockTableRecordId),t.writeObjectId(331,this._viewportArray.length>0?this._viewportArray[0]:"0"),t.writePoint2d(10,this.limits.min),t.writePoint2d(11,this.limits.max),t.writePoint3d(14,this.extents.min),t.writePoint3d(15,this.extents.max),this}}class Gs{constructor(t){this.i=0,this._records=t,this._keys=Array.from(t.keys())}get count(){return this._records.size}toArray(){return Array.from(this._records.values())}[Symbol.iterator](){return this}next(){for(;this.i<this._keys.length;){const t=this._records.get(this._keys[this.i]);return this.i+=1,{value:t,done:!1}}return{value:null,done:!0}}}class As extends re{constructor(t){super(),this.database=t,this.objectId=t.generateHandle(),this._recordsByName=new Map,this._recordsById=new Map}get numEntries(){return this._recordsByName.size}setAt(t,e){e.database=this.database,e.ownerId=this.objectId,this.database.commitObjectHandle(e,s=>this.hasId(s)),this._recordsByName.set(t,e),this._recordsById.set(e.objectId,e),this.database.events.dictObjetSet.dispatch({database:this.database,object:e,key:t})}remove(t){const e=this.getAt(t);return e?(this._recordsByName.delete(t.toUpperCase()),this._recordsById.delete(this.objectId),this.database.events.dictObjectErased.dispatch({database:this.database,object:e,key:t}),!0):!1}removeId(t){const e=this.getIdAt(t);return e?(this._recordsById.delete(this.objectId),this._recordsByName.forEach((s,n)=>{s===e&&(this._recordsByName.delete(n),this.database.events.dictObjectErased.dispatch({database:this.database,object:e,key:n}))}),!0):!1}removeAll(){this._recordsByName.forEach((t,e)=>{this.database.events.dictObjectErased.dispatch({database:this.database,object:t,key:e})}),this._recordsByName.clear(),this._recordsById.clear()}has(t){return this._recordsByName.has(t.toUpperCase())}hasId(t){return this._recordsById.has(t)}getAt(t){return this._recordsByName.get(t)}getIdAt(t){return this._recordsById.get(t)}newIterator(){return new Gs(this._recordsByName)}entries(){return this._recordsByName.entries()}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbDictionary"),t.writeInt16(280,1),t.writeInt16(281,1);for(const[e,s]of this._recordsByName)t.writeString(3,e),t.writeObjectId(350,s.objectId);return this}}class wo extends As{getBtrIdAt(t){for(const[e,s]of this._recordsByName)if(s.blockTableRecordId==t)return s}get maxTabOrder(){let t=-1;return this._recordsByName.forEach(e=>{e.tabOrder>t&&(t=e.tabOrder)}),t}}class ye extends re{constructor(t,e){t=t||{},zs(t,{name:""}),super(t,e)}get name(){return this.getAttr("name")}set name(t){this.setAttr("name",t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbSymbolTableRecord"),this}}var xo=(i=>(i[i.Any=0]="Any",i[i.Uniform=1]="Uniform",i))(xo||{});const de=class de extends ye{static isModelSapceName(t){return t.toLowerCase()==de.MODEL_SPACE_NAME.toLowerCase()}static isPaperSapceName(t){return t.toLowerCase().startsWith(de.PAPER_SPACE_NAME_PREFIX.toLowerCase())}constructor(){super(),this._origin=new x,this._layoutId="",this._entities=new Map,this._blockInsertUnits=0,this._explodability=1,this._blockScaling=1,this._bmpPreview=void 0}get isModelSapce(){return de.isModelSapceName(this.name)}get isPaperSapce(){return de.isPaperSapceName(this.name)}get origin(){return this._origin}set origin(t){this._origin.copy(t)}get layoutId(){return this._layoutId}set layoutId(t){this._layoutId=t}get blockInsertUnits(){return this._blockInsertUnits}set blockInsertUnits(t){this._blockInsertUnits=t}get explodability(){return this._explodability}set explodability(t){this._explodability=t}get blockScaling(){return this._blockScaling}set blockScaling(t){this._blockScaling=t}get bmpPreview(){return this._bmpPreview}set bmpPreview(t){this._bmpPreview=t}appendEntity(t){const e=s=>{s.database=this.database,s.ownerId=this.objectId,this.database.commitObjectHandle(s,n=>this._entities.has(n)),s.resolveEffectiveProperties(),this._entities.set(s.objectId,s)};if(Array.isArray(t))for(let s=0;s<t.length;++s)e(t[s]);else e(t);(this.isModelSapce||this.isPaperSapce)&&this.database.events.entityAppended.dispatch({database:this.database,entity:t})}removeEntity(t){const e=Array.isArray(t)?t:[t],s=[];return e.forEach(n=>{const r=this._entities.get(n);r&&s.push(r),this._entities.delete(n)}),s.length>0&&this.database.events.entityErased.dispatch({database:this.database,entity:s}),s.length>0}newIterator(){return new Gs(this._entities)}getIdAt(t){return this._entities.get(t)}dxfOutBlockRecord(t){return t.writeStart("BLOCK_RECORD"),this.dxfOut(t),this}dxfOutBlockBegin(t){return t.writeStart("BLOCK"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeString(8,"0"),t.writeSubclassMarker("AcDbBlockBegin"),t.writeString(2,this.name),t.writeInt16(70,0),t.writePoint3d(10,this.origin),t.writeString(3,this.name),this}dxfOutBlockEnd(t){return t.writeStart("ENDBLK"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbBlockEnd"),this}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbBlockTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.blockInsertUnits),t.writeInt16(280,this.explodability),t.writeInt16(281,this.blockScaling),(this.isModelSapce||this.isPaperSapce)&&t.writeObjectId(340,this.layoutId),this}};de.MODEL_SPACE_NAME="*Model_Space",de.PAPER_SPACE_NAME_PREFIX="*Paper_Space";let Z=de;class bo{constructor(){this.events={layoutCreated:new q,layoutRemoved:new q,layoutRenamed:new q,layoutSwitched:new q}}countLayouts(t){return this.getWorkingDatabase(t).objects.layout.numEntries}findLayoutNamed(t,e){return this.getWorkingDatabase(e).objects.layout.getAt(t)}findActiveLayout(){const t=this.getActiveLayout();return t?t.layoutName:"Model"}setCurrentLayoutId(t,e){const s=this.getWorkingDatabase(e),n=s.objects.layout.getIdAt(t);return this.setCurrentLayoutInternal(n,s)}setCurrentLayoutBtrId(t,e){const s=this.getWorkingDatabase(e),n=s.objects.layout.getBtrIdAt(t);return this.setCurrentLayoutInternal(n,s)}setCurrentLayout(t,e){const s=this.getWorkingDatabase(e),n=s.objects.layout.getAt(t);return this.setCurrentLayoutInternal(n,s)}renameLayout(t,e,s){const r=this.getWorkingDatabase(s).objects.layout.getAt(t);return r?(r.layoutName=e,this.events.layoutRenamed.dispatch({layout:r,oldName:t,newName:e}),!0):!1}layoutExists(t,e){return this.getWorkingDatabase(e).objects.layout.has(t)}deleteLayout(t,e){const s=this.getWorkingDatabase(e).objects.layout,n=s.getAt(t);let r=!1;return n&&(r=s.remove(t),r&&this.events.layoutRemoved.dispatch({layout:n})),r}createLayout(t,e){const s=this.getWorkingDatabase(e),n=new Ws;n.layoutName=t,n.tabOrder=s.objects.layout.maxTabOrder;const r=new Z;return r.name=`*Paper_Space${n.tabOrder}`,s.tables.blockTable.add(r),s.objects.layout.setAt(t,n),this.events.layoutCreated.dispatch({layout:n}),{layout:n,btr:r}}getActiveLayout(t){const e=this.getWorkingDatabase(t);return e.objects.layout.getBtrIdAt(e.currentSpaceId)}getWorkingDatabase(t){return t||Pn().workingDatabase}setCurrentLayoutInternal(t,e){return t?(this.events.layoutSwitched.dispatch({layout:t}),e.currentSpaceId=t.blockTableRecordId,!0):!1}}ma(()=>new bo);class fo extends re{constructor(){super(),this._sourceFileName=""}get sourceFileName(){return this._sourceFileName}set sourceFileName(t){this._sourceFileName=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRasterImageDef"),t.writeString(1,this.sourceFileName),t.writeInt16(280,1),t.writeInt16(281,0),this}}var Io=(i=>(i[i.NotApplicable=0]="NotApplicable",i[i.Ignore=1]="Ignore",i[i.Replace=2]="Replace",i[i.XrefMangleName=3]="XrefMangleName",i[i.MangleName=4]="MangleName",i))(Io||{});class Gn extends re{constructor(){super(...arguments),this._data=null}get data(){return this._data}set data(t){this._data=t}clear(){var t;(t=this._data)==null||t.clear()}clone(){var e;const t=new Gn;return t._data=((e=this._data)==null?void 0:e.clone())??null,t}getDuplicateRecordCloning(){return 0}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbXrecord"),t.writeInt16(280,1),t.writeResultBuffer(this.data),this}}class Po{constructor(t){this.db=t}createDefaultLayer(){const t=new tt;return t.colorIndex=7,this.db.tables.layerTable.add(new Hi({name:"0",standardFlags:0,linetype:"Continuous",lineWeight:0,isOff:!1,color:t,isPlottable:!0}))}createDefaultLineType(){this.db.tables.linetypeTable.add(new ue({name:"ByBlock",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new ue({name:"ByLayer",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new ue({name:"Continuous",standardFlag:0,description:"Solid line",totalPatternLength:0}))}createDefaultTextStyle(){this.db.tables.textStyleTable.add(new Ui({name:J,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"}))}createDefaultDimStyle(){this.db.tables.dimStyleTable.add(new je({name:J,dimtxsty:J}))}createDefaultLayout(){const t=new Ws;t.layoutName="Model",t.tabOrder=0,t.blockTableRecordId=this.db.tables.blockTable.modelSpace.objectId,t.limits.min.copy({x:0,y:0}),t.limits.max.copy({x:1e6,y:1e6}),t.extents.min.copy({x:0,y:0,z:0}),t.extents.max.copy({x:1e6,y:1e6,z:0}),this.db.objects.layout.setAt(t.layoutName,t),this.db.tables.blockTable.modelSpace.layoutId=t.objectId}createArrowBlock(){if(!this.db.tables.blockTable.getAt("_CAXARROW")){const e=new Ns;e.patternName="SOLID";const s=new Ls;s.add(new Ft({x:0,y:0},{x:-1,y:.125})),s.add(new Ft({x:-1,y:.125},{x:-1,y:-.125})),s.add(new Ft({x:-1,y:-.125},{x:0,y:0})),e.add(s);const n=new Z;n.name="_CAXARROW",n.appendEntity(e),this.db.tables.blockTable.add(n)}}}var Eo=(i=>(i.ClosedFilled="",i.Dot="_DOT",i.DotSmall="_DOTSMALL",i.DotBlank="_DOTBLANK",i.Origin="_ORIGIN",i.Origin2="_ORIGIN2",i.Open="_OPEN",i.Open90="_OPEN90",i.Open30="_OPEN30",i.Closed="_CLOSED",i.Small="_SMALL",i.None="_NONE",i.Oblique="_OBLIQUE",i.BoxFilled="_BOXFILLED",i.Box="_BOXBLANK",i.ClosedBlank="_CLOSEDBLANK",i.DatumBlank="_DATUMBLANK",i.DatumFilled="_DATUMFILLED",i.Integral="_INTEGRAL",i.ArchTick="_ARCHTICK",i))(Eo||{}),Hn=(i=>(i[i.Undefined=0]="Undefined",i[i.Inches=1]="Inches",i[i.Feet=2]="Feet",i[i.Miles=3]="Miles",i[i.Millimeters=4]="Millimeters",i[i.Centimeters=5]="Centimeters",i[i.Meters=6]="Meters",i[i.Kilometers=7]="Kilometers",i[i.Microinches=8]="Microinches",i[i.Mils=9]="Mils",i[i.Yards=10]="Yards",i[i.Angstroms=11]="Angstroms",i[i.Nanometers=12]="Nanometers",i[i.Microns=13]="Microns",i[i.Decimeters=14]="Decimeters",i[i.Dekameters=15]="Dekameters",i[i.Hectometers=16]="Hectometers",i[i.Gigameters=17]="Gigameters",i[i.Astronomical=18]="Astronomical",i[i.LightYears=19]="LightYears",i[i.Parsecs=20]="Parsecs",i[i.USSurveyFeet=21]="USSurveyFeet",i[i.USSurveyInch=22]="USSurveyInch",i[i.USSurveyYard=23]="USSurveyYard",i[i.USSurveyMile=24]="USSurveyMile",i[i.Max=24]="Max",i))(Hn||{});function Rl(i){return i==4||i==5||i==6||i==7||i==12||i==13||i==14||i==15||i==16||i==17}function zl(i){return i==1||i==2||i==3||i==8||i==9||i==10||i==21}class ae extends re{constructor(t){super(),this.database=t,this.objectId=t.generateHandle(),this.ownerId=t.objectId,this._recordsByName=new Map,this._recordsById=new Map}get numEntries(){return this._recordsByName.size}add(t){t.database=this.database,t.ownerId=this.objectId,this.database.commitObjectHandle(t,s=>this.hasId(s));const e=this.normalizeName(t.name);this._recordsByName.set(e,t),this._recordsById.set(t.objectId,t)}remove(t){const e=this.normalizeName(t),s=this._recordsByName.get(e);return s?(this._recordsById.delete(s.objectId),this._recordsByName.delete(t),!0):!1}removeId(t){const e=this._recordsById.get(t);return e?(this._recordsByName.delete(e.name),this._recordsById.delete(t),!0):!1}removeAll(){this._recordsByName.clear(),this._recordsById.clear()}has(t){const e=this.normalizeName(t);return this._recordsByName.has(e)}hasId(t){return this._recordsById.has(t)}getAt(t){const e=this.normalizeName(t);return this._recordsByName.get(e)}getIdAt(t){return this._recordsById.get(t)}getOwnerIdAt(t){return this._recordsById.get(t)}newIterator(){return new Gs(this._recordsByName)}normalizeName(t){return t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbSymbolTable"),t.writeInt16(70,this.numEntries),this}}class So extends ae{constructor(t){super(t)}get modelSpace(){let t=this.getAt(Z.MODEL_SPACE_NAME);return t||(t=new Z,t.name=Z.MODEL_SPACE_NAME,this.add(t)),t}getEntityById(t){for(const e of this.database.tables.blockTable.newIterator()){const s=e.getIdAt(t);if(s)return s}}removeEntity(t){let e=!1;for(const s of this.database.tables.blockTable.newIterator())if(s.removeEntity(t)){e=!0;break}return e}normalizeName(t){let e=t;if(Z.isModelSapceName(t))e=Z.MODEL_SPACE_NAME;else if(Z.isPaperSapceName(t)){const s=Z.PAPER_SPACE_NAME_PREFIX,n=t.substring(s.length);e=s+n}return e}}class Ao extends ae{constructor(t){super(t)}}var Mo=(i=>(i[i.Center=0]="Center",i[i.Left=1]="Left",i[i.Right=2]="Right",i[i.OverFirst=3]="OverFirst",i[i.OverSecond=4]="OverSecond",i))(Mo||{}),To=(i=>(i[i.Center=0]="Center",i[i.Above=1]="Above",i[i.Outside=2]="Outside",i[i.JIS=3]="JIS",i[i.Below=4]="Below",i))(To||{}),vo=(i=>(i[i.Feet=0]="Feet",i[i.None=1]="None",i[i.Inch=2]="Inch",i[i.FeetAndInch=3]="FeetAndInch",i[i.Leading=4]="Leading",i[i.Trailing=8]="Trailing",i[i.LeadingAndTrailing=12]="LeadingAndTrailing",i))(vo||{}),ko=(i=>(i[i.None=0]="None",i[i.Leading=1]="Leading",i[i.Trailing=2]="Trailing",i[i.LeadingAndTrailing=3]="LeadingAndTrailing",i))(ko||{}),Lo=(i=>(i[i.Bottom=0]="Bottom",i[i.Middle=1]="Middle",i[i.Top=2]="Top",i))(Lo||{});const ji=class ji extends ye{constructor(t,e){t=t||{},zs(t,ji.DEFAULT_DIM_VALUES),super(t,e)}get dimpost(){return this.getAttr("dimpost")}set dimpost(t){this.setAttr("dimpost",t)}get dimapost(){return this.getAttr("dimapost")}set dimapost(t){this.setAttr("dimapost",t)}get dimscale(){return this.getAttr("dimscale")}set dimscale(t){this.setAttr("dimscale",t)}get dimasz(){return this.getAttr("dimasz")}set dimasz(t){this.setAttr("dimasz",t)}get dimexo(){return this.getAttr("dimexo")}set dimexo(t){this.setAttr("dimexo",t)}get dimdli(){return this.getAttr("dimdli")}set dimdli(t){this.setAttr("dimdli",t)}get dimexe(){return this.getAttr("dimexe")}set dimexe(t){this.setAttr("dimexe",t)}get dimrnd(){return this.getAttr("dimrnd")}set dimrnd(t){this.setAttr("dimrnd",t)}get dimdle(){return this.getAttr("dimdle")}set dimdle(t){this.setAttr("dimdle",t)}get dimtp(){return this.getAttr("dimtp")}set dimtp(t){this.setAttr("dimtp",t)}get dimtm(){return this.getAttr("dimtm")}set dimtm(t){this.setAttr("dimtm",t)}get dimtxt(){return this.getAttr("dimtxt")}set dimtxt(t){this.setAttr("dimtxt",t)}get dimcen(){return this.getAttr("dimcen")}set dimcen(t){this.setAttr("dimcen",t)}get dimtsz(){return this.getAttr("dimtsz")}set dimtsz(t){this.setAttr("dimtsz",t)}get dimaltf(){return this.getAttr("dimaltf")}set dimaltf(t){this.setAttr("dimaltf",t)}get dimlfac(){return this.getAttr("dimlfac")}set dimlfac(t){this.setAttr("dimlfac",t)}get dimtvp(){return this.getAttr("dimtvp")}set dimtvp(t){this.setAttr("dimtvp",t)}get dimtfac(){return this.getAttr("dimtfac")}set dimtfac(t){this.setAttr("dimtfac",t)}get dimgap(){return this.getAttr("dimgap")}set dimgap(t){this.setAttr("dimgap",t)}get dimaltrnd(){return this.getAttr("dimaltrnd")}set dimaltrnd(t){this.setAttr("dimaltrnd",t)}get dimtol(){return this.getAttr("dimtol")}set dimtol(t){this.setAttr("dimtol",t)}get dimlim(){return this.getAttr("dimlim")}set dimlim(t){this.setAttr("dimlim",t)}get dimtih(){return this.getAttr("dimtih")}set dimtih(t){this.setAttr("dimtih",t)}get dimtoh(){return this.getAttr("dimtoh")}set dimtoh(t){this.setAttr("dimtoh",t)}get dimse1(){return this.getAttr("dimse1")}set dimse1(t){this.setAttr("dimse1",t)}get dimse2(){return this.getAttr("dimse2")}set dimse2(t){this.setAttr("dimse2",t)}get dimtad(){return this.getAttr("dimtad")}set dimtad(t){this.setAttr("dimtad",t)}get dimzin(){return this.getAttr("dimzin")}set dimzin(t){this.setAttr("dimzin",t)}get dimazin(){return this.getAttr("dimazin")}set dimazin(t){this.setAttr("dimazin",t)}get dimalt(){return this.getAttr("dimalt")}set dimalt(t){this.setAttr("dimalt",t)}get dimaltd(){return this.getAttr("dimaltd")}set dimaltd(t){this.setAttr("dimaltd",t)}get dimtofl(){return this.getAttr("dimtofl")}set dimtofl(t){this.setAttr("dimtofl",t)}get dimsah(){return this.getAttr("dimsah")}set dimsah(t){this.setAttr("dimsah",t)}get dimtix(){return this.getAttr("dimtix")}set dimtix(t){this.setAttr("dimtix",t)}get dimsoxd(){return this.getAttr("dimsoxd")}set dimsoxd(t){this.setAttr("dimsoxd",t)}get dimclrd(){return this.getAttr("dimclrd")}set dimclrd(t){this.setAttr("dimclrd",t)}get dimclre(){return this.getAttr("dimclre")}set dimclre(t){this.setAttr("dimclre",t)}get dimclrt(){return this.getAttr("dimclrt")}set dimclrt(t){this.setAttr("dimclrt",t)}get dimadec(){return this.getAttr("dimadec")}set dimadec(t){this.setAttr("dimadec",t)}get dimunit(){return this.getAttr("dimunit")}set dimunit(t){this.setAttr("dimunit",t)}get dimdec(){return this.getAttr("dimdec")}set dimdec(t){this.setAttr("dimdec",t)}get dimtdec(){return this.getAttr("dimtdec")}set dimtdec(t){this.setAttr("dimtdec",t)}get dimaltu(){return this.getAttr("dimaltu")}set dimaltu(t){this.setAttr("dimaltu",t)}get dimalttd(){return this.getAttr("dimalttd")}set dimalttd(t){this.setAttr("dimalttd",t)}get dimaunit(){return this.getAttr("dimaunit")}set dimaunit(t){this.setAttr("dimaunit",t)}get dimfrac(){return this.getAttr("dimfrac")}set dimfrac(t){this.setAttr("dimfrac",t)}get dimlunit(){return this.getAttr("dimlunit")}set dimlunit(t){this.setAttr("dimlunit",t)}get dimdsep(){return this.getAttr("dimdsep")}set dimdsep(t){this.setAttr("dimdsep",t)}get dimtmove(){return this.getAttr("dimtmove")}set dimtmove(t){this.setAttr("dimtmove",t)}get dimjust(){return this.getAttr("dimjust")}set dimjust(t){this.setAttr("dimjust",t)}get dimsd1(){return this.getAttr("dimsd1")}set dimsd1(t){this.setAttr("dimsd1",t)}get dimsd2(){return this.getAttr("dimsd2")}set dimsd2(t){this.setAttr("dimsd2",t)}get dimtolj(){return this.getAttr("dimtolj")}set dimtolj(t){this.setAttr("dimtolj",t)}get dimtzin(){return this.getAttr("dimtzin")}set dimtzin(t){this.setAttr("dimtzin",t)}get dimaltz(){return this.getAttr("dimaltz")}set dimaltz(t){this.setAttr("dimaltz",t)}get dimalttz(){return this.getAttr("dimalttz")}set dimalttz(t){this.setAttr("dimalttz",t)}get dimfit(){return this.getAttr("dimfit")}set dimfit(t){this.setAttr("dimfit",t)}get dimupt(){return this.getAttr("dimupt")}set dimupt(t){this.setAttr("dimupt",t)}get dimatfit(){return this.getAttr("dimatfit")}set dimatfit(t){this.setAttr("dimatfit",t)}get dimtxsty(){return this.getAttr("dimtxsty")}set dimtxsty(t){this.setAttr("dimtxsty",t)}get dimldrblk(){return this.getAttr("dimldrblk")}set dimldrblk(t){this.setAttr("dimldrblk",t)}get dimblk(){return this.getAttr("dimblk")}set dimblk(t){this.setAttr("dimblk",t)}get dimblk1(){return this.getAttr("dimblk1")}set dimblk1(t){this.setAttr("dimblk1",t)}get dimblk2(){return this.getAttr("dimblk2")}set dimblk2(t){this.setAttr("dimblk2",t)}get dimlwd(){return this.getAttr("dimlwd")}set dimlwd(t){this.setAttr("dimlwd",t)}get dimlwe(){return this.getAttr("dimlwe")}set dimlwe(t){this.setAttr("dimlwe",t)}dxfOutFields(t){super.dxfOutFields(t);const e=this.database.tables.textStyleTable.getAt(this.dimtxsty),s=this.database.tables.blockTable.getAt(this.dimldrblk),n=this.database.tables.blockTable.getAt(this.dimblk),r=this.database.tables.blockTable.getAt(this.dimblk1),a=this.database.tables.blockTable.getAt(this.dimblk2);return t.writeSubclassMarker("AcDbDimStyleTableRecord"),t.writeString(2,this.name),t.writeInt16(70,0),t.writeString(3,this.dimpost),t.writeString(4,this.dimapost),t.writeDouble(40,this.dimscale),t.writeDouble(41,this.dimasz),t.writeDouble(42,this.dimexo),t.writeDouble(43,this.dimdli),t.writeDouble(44,this.dimexe),t.writeDouble(140,this.dimtxt),t.writeDouble(147,this.dimgap),t.writeInt16(170,this.dimalt),t.writeInt16(171,this.dimtol),t.writeInt16(172,this.dimlim),t.writeInt16(173,this.dimtih),t.writeInt16(174,this.dimtoh),t.writeObjectId(340,e==null?void 0:e.objectId),t.writeObjectId(341,s==null?void 0:s.objectId),t.writeObjectId(342,n==null?void 0:n.objectId),t.writeObjectId(343,r==null?void 0:r.objectId),t.writeObjectId(344,a==null?void 0:a.objectId),t.writeInt16(371,this.dimlwd),t.writeInt16(372,this.dimlwe),this}};ji.DEFAULT_DIM_VALUES={name:"",dimpost:"",dimapost:"",dimscale:1,dimasz:2.5,dimexo:.625,dimdli:.38,dimexe:.18,dimrnd:0,dimdle:0,dimtp:0,dimtm:0,dimtxt:2.5,dimcen:2.5,dimtsz:0,dimaltf:0,dimlfac:1,dimtvp:0,dimtfac:1,dimgap:1,dimaltrnd:0,dimtol:0,dimlim:0,dimtih:0,dimtoh:0,dimse1:0,dimse2:0,dimtad:0,dimzin:0,dimazin:0,dimalt:0,dimaltd:2,dimtofl:0,dimsah:0,dimtix:0,dimsoxd:0,dimclrd:0,dimclre:0,dimclrt:0,dimadec:0,dimunit:2,dimdec:4,dimtdec:4,dimaltu:2,dimalttd:2,dimaunit:0,dimfrac:0,dimlunit:2,dimdsep:".",dimtmove:0,dimjust:0,dimsd1:0,dimsd2:0,dimtolj:0,dimtzin:0,dimaltz:0,dimalttz:0,dimfit:0,dimupt:0,dimatfit:3,dimtxsty:J,dimldrblk:"",dimblk:"",dimblk1:"",dimblk2:"",dimlwd:-2,dimlwe:-2};let je=ji;class No extends ae{constructor(t){super(t)}add(t){super.add(t),this.database.events.layerAppended.dispatch({database:this.database,layer:t})}}class Hi extends ye{constructor(t,e){t=t||{},zs(t,{color:new tt,description:"",standardFlags:0,isHidden:!1,isInUse:!0,isOff:!1,isPlottable:!0,transparency:new Gi,linetype:"",lineWeight:1,materialId:-1}),super(t,e),this.attrs.events.attrChanged.addEventListener(s=>{this.database.events.layerModified.dispatch({database:this.database,layer:this,changes:s.object.changedAttributes()})})}get color(){return this.getAttr("color")}set color(t){this.setAttr("color",t.clone())}get description(){return this.getAttr("description")}set description(t){this.setAttr("description",t)}get standardFlags(){return this.getAttr("standardFlags")}set standardFlags(t){this.setAttr("standardFlags",t)}get isFrozen(){return(this.standardFlags&1)==1}set isFrozen(t){const e=t?1:0;this.standardFlags=this.standardFlags|e}get isHidden(){return this.getAttr("isHidden")}set isHidden(t){this.setAttr("isHidden",t)}get isInUse(){return this.getAttr("isInUse")}set isInUse(t){this.setAttr("isInUse",t)}get isLocked(){return(this.standardFlags&4)==4}set isLocked(t){const e=t?4:0;this.standardFlags=this.standardFlags|e}get isOff(){return this.getAttr("isOff")}set isOff(t){this.setAttr("isOff",t)}get isPlottable(){return this.getAttr("isPlottable")}set isPlottable(t){this.setAttr("isPlottable",t)}get transparency(){return this.getAttr("transparency")}set transparency(t){this.setAttr("transparency",t.clone())}get linetype(){return this.getAttr("linetype")}set linetype(t){this.setAttr("linetype",t)}get lineStyle(){var e;const t=(e=this.database)==null?void 0:e.tables.linetypeTable.getAt(this.linetype);if(t)return{type:"UserSpecified",...t.linetype}}get lineWeight(){return this.getAttr("lineWeight")}set lineWeight(t){this.setAttr("lineWeight",t)}get materialId(){return this.getAttr("materialId")}set materialId(t){this.setAttr("materialId",t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writeCmColor(this.color),t.writeString(6,this.linetype),t.writeInt16(290,this.isPlottable?1:0),t.writeInt16(370,this.lineWeight),t.writeTransparency(this.transparency),this.description&&t.writeString(4,this.description),this}}class Oo extends ae{constructor(t){super(t)}}class ue extends ye{constructor(t){super(),this.name=t.name,this._linetype=t}get numDashes(){return this._linetype.pattern?this._linetype.pattern.length:0}get patternLength(){return this._linetype.totalPatternLength}get comments(){return this._linetype.description}get linetype(){return this._linetype}dashLengthAt(t){if(t<0||t>=this.numDashes)throw new Error('Index must be greater than or equal to zero, but less than the value of property "numDashes".');return this._linetype.pattern[t].elementLength}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLinetypeTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.linetype.standardFlag),t.writeString(3,this.comments),t.writeInt16(72,65),t.writeInt16(73,this.numDashes),t.writeDouble(40,this.patternLength);for(const e of this.linetype.pattern??[])t.writeDouble(49,e.elementLength),t.writeInt16(74,e.elementTypeFlag);return this}}class Co extends ae{constructor(t){super(t)}get fonts(){const t=new Set,e=n=>{if(n){const r=n.lastIndexOf(".");if(r>=0){const a=n.substring(0,r).toLowerCase();t.add(a)}else t.add(n.toLowerCase())}},s=this.newIterator();for(const n of s)e(n.fileName),e(n.bigFontFileName);return Array.from(t)}}class Ui extends ye{constructor(t){super(),this.name=t.name,this._textStyle=t,this._textStyle.font=this.getFileNameWithoutExtension(this._textStyle.font||this._textStyle.extendedFont||this.name),this._isVertical=!1}get obliquingAngle(){return this._textStyle.obliqueAngle}set obliquingAngle(t){this._textStyle.obliqueAngle=t}get priorSize(){return this._textStyle.lastHeight}set priorSize(t){this._textStyle.lastHeight=t}get textSize(){return this._textStyle.fixedTextHeight}set textSize(t){this._textStyle.fixedTextHeight=t}get xScale(){return this._textStyle.widthFactor}set xScale(t){this._textStyle.widthFactor=t}get isVertical(){return this._isVertical}set isVertical(t){this._isVertical=t}get fileName(){return this._textStyle.font}set fileName(t){this._textStyle.font=t}get bigFontFileName(){return this._textStyle.bigFont}set bigFontFileName(t){this._textStyle.bigFont=t}get textStyle(){return this._textStyle}getFileNameWithoutExtension(t){const e=t.split("/").pop();if(e){const s=e.lastIndexOf(".");return s===-1?e:e.substring(0,s)}return t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbTextStyleTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.textStyle.standardFlag),t.writeDouble(40,this.textSize),t.writeDouble(41,this.xScale),t.writeAngle(50,this.obliquingAngle),t.writeInt16(71,this.isVertical?4:this.textStyle.textGenerationFlag),t.writeDouble(42,this.priorSize),t.writeString(3,this.fileName),t.writeString(4,this.bigFontFileName),this}}class Bo extends ae{constructor(t){super(t)}}class Fo extends ae{constructor(t){super(t)}}const Vl=()=>({center:new v,viewDirectionFromTarget:new x(0,0,1),viewTarget:new x(0,0,0),lensLength:500,frontClippingPlane:0,backClippingPlane:0,viewHeight:1e3,viewTwistAngle:0,frozenLayers:[],styleSheet:"",renderMode:Dn.OPTIMIZED_2D,viewMode:0,ucsIconSetting:0,ucsOrigin:new x(0,0,0),ucsXAxis:new x(1,0,0),ucsYAxis:new x(0,1,0),orthographicType:jn.TOP,shadePlotSetting:0,shadePlotObjectId:void 0,visualStyleObjectId:void 0,isDefaultLightingOn:!1,defaultLightingType:Wn.ONE_DISTANT_LIGHT,brightness:0,contrast:0,ambientColor:void 0});class Un extends ye{constructor(){super(),this._gsView=Vl(),this._centerPoint=this._gsView.center}get gsView(){return this._gsView}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint.copy(t)}get viewDirectionFromTarget(){return this._gsView.viewDirectionFromTarget}set viewDirectionFromTarget(t){this._gsView.viewDirectionFromTarget.copy(t)}get viewTarget(){return this._gsView.viewTarget}set viewTarget(t){this._gsView.viewTarget.copy(t)}get viewHeight(){return this._gsView.viewHeight}set viewHeight(t){this._gsView.viewHeight=t}get viewTwistAngle(){return this._gsView.viewTwistAngle}set viewTwistAngle(t){this._gsView.viewTwistAngle=t}get lensLength(){return this._gsView.lensLength}set lensLength(t){this._gsView.lensLength=t}get frontClippingPlane(){return this._gsView.frontClippingPlane}set frontClippingPlane(t){this._gsView.frontClippingPlane=t}get backClippingPlane(){return this._gsView.backClippingPlane}set backClippingPlane(t){this._gsView.backClippingPlane=t}get renderMode(){return this._gsView.renderMode}set renderMode(t){this._gsView.renderMode=t}get viewMode(){return this._gsView.viewMode}set viewMode(t){this._gsView.viewMode=t}get ucsIconSetting(){return this._gsView.ucsIconSetting}set ucsIconSetting(t){this._gsView.ucsIconSetting=t}get ucsOrigin(){return this._gsView.ucsOrigin}set ucsOrigin(t){this._gsView.ucsOrigin.copy(t)}get ucsXAxis(){return this._gsView.ucsXAxis}set ucsXAxis(t){this._gsView.ucsXAxis.copy(t)}get ucsYAxis(){return this._gsView.ucsYAxis}set ucsYAxis(t){this._gsView.ucsYAxis.copy(t)}get orthographicType(){return this._gsView.orthographicType}set orthographicType(t){this._gsView.orthographicType=t}get shadePlotSetting(){return this._gsView.shadePlotSetting}set shadePlotSetting(t){this._gsView.shadePlotSetting=t}get shadePlotObjectId(){return this._gsView.shadePlotObjectId}set shadePlotObjectId(t){this._gsView.shadePlotObjectId=t}get visualStyleObjectId(){return this._gsView.visualStyleObjectId}set visualStyleObjectId(t){this._gsView.visualStyleObjectId=t}get isDefaultLightingOn(){return this._gsView.isDefaultLightingOn}set isDefaultLightingOn(t){this._gsView.isDefaultLightingOn=t}get defaultLightingType(){return this._gsView.defaultLightingType}set defaultLightingType(t){this._gsView.defaultLightingType=t}get brightness(){return this._gsView.brightness}set brightness(t){this._gsView.brightness=t}get contrast(){return this._gsView.contrast}set contrast(t){this._gsView.contrast=t}get ambientColor(){return this._gsView.ambientColor}set ambientColor(t){this._gsView.ambientColor=t}}class Xn extends Un{constructor(){super(),this._circleSides=100,this._lowerLeftCorner=new v(0,0),this._upperRightCorner=new v(1,1),this._snapBase=new v(0,0),this._snapAngle=0,this._snapSpacing=new v(0,0),this._standardFlag=0,this._gridSpacing=new v,this._gridMajor=10}get circleSides(){return this._circleSides}set circleSides(t){this._circleSides=t}get center(){return this.centerPoint}set center(t){this.centerPoint=t}get lowerLeftCorner(){return this._lowerLeftCorner}set lowerLeftCorner(t){this._lowerLeftCorner.copy(t)}get upperRightCorner(){return this._upperRightCorner}set upperRightCorner(t){this._upperRightCorner.copy(t)}get snapBase(){return this._snapBase}set snapBase(t){this._snapBase.copy(t)}get snapAngle(){return this._snapAngle}set snapAngle(t){this._snapAngle=t}get snapIncrements(){return this._snapSpacing}set snapIncrements(t){this._snapSpacing.copy(t)}get gridMajor(){return this._gridMajor}set gridMajor(t){this._gridMajor=t}get gridIncrements(){return this._gridSpacing}set gridIncrements(t){this._gridSpacing.copy(t)}get standardFlag(){return this._standardFlag}set standardFlag(t){this._standardFlag=t}get snapEnabled(){return!!(this._standardFlag&256)}get backgroundObjectId(){return this._backgroundObjectId}set backgroundObjectId(t){this._backgroundObjectId=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewportTableRecord"),t.writeString(2,this.name),t.writeDouble(45,this.gsView.viewHeight),t.writePoint2d(10,this.lowerLeftCorner),t.writePoint2d(11,this.upperRightCorner),t.writePoint2d(12,this.center),t.writePoint2d(13,this.snapBase),t.writePoint2d(14,this.snapIncrements),t.writePoint2d(15,this.gridIncrements),t.writeInt16(70,this.standardFlag),t.writeInt16(71,this.circleSides),t.writeDouble(42,this.gsView.lensLength),t.writePoint3d(16,this.gsView.viewDirectionFromTarget),t.writePoint3d(17,this.gsView.viewTarget),t.writeAngle(50,this.snapAngle),t.writeAngle(51,this.gsView.viewTwistAngle),t.writeInt16(61,this.gridMajor),t.writeInt16(281,this.backgroundObjectId?1:0),t.writeObjectId(332,this.backgroundObjectId),this}}class Ro extends ae{constructor(t){super(t)}}class bn extends ye{constructor(t){super(),this.name=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRegAppTableRecord"),t.writeString(2,this.name),t.writeInt16(70,0),this}}const V={ACADVER:"ACADVER",ANGBASE:"ANGBASE",ANGDIR:"ANGDIR",AUNITS:"AUNITS",CECOLOR:"CECOLOR",CELTSCALE:"CELTSCALE",CELWEIGHT:"CELWEIGHT",CLAYER:"CLAYER",COLORTHEME:"COLORTHEME",DYNMODE:"DYNMODE",DYNPROMPT:"DYNPROMPT",EXTMAX:"EXTMAX",EXTMIN:"EXTMIN",INSUNITS:"INSUNITS",LTSCALE:"LTSCALE",LWDISPLAY:"LWDISPLAY",MEASUREMENTCOLOR:"MEASUREMENTCOLOR",OSMODE:"OSMODE",PDMODE:"PDMODE",PDSIZE:"PDSIZE",PICKBOX:"PICKBOX",SHORTCUTMENU:"SHORTCUTMENU",TEXTSTYLE:"TEXTSTYLE",WHITEBKCOLOR:"WHITEBKCOLOR"},Dl=Object.freeze(Object.values(V)),Wi=class Wi{constructor(){this.registry=new Map,this.cache=new Map,this.events={sysVarChanged:new q},this.registerVar({name:V.CECOLOR,type:"color",isDbVar:!0,defaultValue:new tt(S.ByLayer)}),this.registerVar({name:V.CELTSCALE,type:"number",isDbVar:!0,defaultValue:-1}),this.registerVar({name:V.CELWEIGHT,type:"number",isDbVar:!0,defaultValue:De.ByLayer}),this.registerVar({name:V.CLAYER,type:"string",isDbVar:!0,defaultValue:"0"}),this.registerVar({name:V.COLORTHEME,type:"number",isDbVar:!1,defaultValue:"0"}),this.registerVar({name:V.DYNMODE,type:"number",isDbVar:!1,defaultValue:3}),this.registerVar({name:V.DYNPROMPT,type:"boolean",isDbVar:!1,defaultValue:!0}),this.registerVar({name:V.LWDISPLAY,type:"boolean",isDbVar:!0,defaultValue:!1}),this.registerVar({name:V.MEASUREMENTCOLOR,type:"color",isDbVar:!1,defaultValue:(()=>{const t=new tt(S.ByColor);return t.setRGB(96,165,250),t})()}),this.registerVar({name:V.OSMODE,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:V.PICKBOX,type:"number",isDbVar:!1,defaultValue:10}),this.registerVar({name:V.SHORTCUTMENU,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:V.TEXTSTYLE,type:"string",isDbVar:!0,defaultValue:J}),this.registerVar({name:V.WHITEBKCOLOR,type:"boolean",isDbVar:!1,defaultValue:!1})}static instance(){return this._instance||(this._instance=new Wi),this._instance}registerVar(t){const e=this.normalizeName(t.name);this.registry.set(e,{...t,name:e}),t.isDbVar||this.cache.set(e,t.defaultValue)}registerMany(t){t.forEach(e=>this.registerVar(e))}getVar(t,e){t=this.normalizeName(t);const s=this.getDescriptor(t);if(!s)throw new Error(`System variable ${t} not found!`);if(s.isDbVar)return e[t.toLowerCase()];if(this.cache.has(t))return this.cache.get(t)}getDefaultValue(t){t=this.normalizeName(t);const e=this.getDescriptor(t);if(!e)throw new Error(`System variable ${t} not found!`);return e.defaultValue}setVar(t,e,s){t=this.normalizeName(t);const n=this.getDescriptor(t);if(n){const r=this.getVar(t,s);if(n.type!=="string"&&(typeof e=="string"||e instanceof String)){if(n.type==="number"){const a=Number(e);if(Number.isNaN(a))throw new Error("Invalid number input!");e=a}else if(n.type==="boolean")e=this.parseBoolean(e);else if(n.type==="color"){const a=tt.fromString(e);if(a==null)throw new Error("Invalid color value!");e=a}}n.isDbVar?s[t.toLowerCase()]=e:(this.cache.set(t,e),this.hasValueChanged(r,e)&&this.events.sysVarChanged.dispatch({database:s,name:t,newVal:e,oldVal:r}))}else throw new Error(`System variable ${t} not found!`)}getDescriptor(t){return this.registry.get(this.normalizeName(t))}getAllDescriptors(){return[...this.registry.values()]}parseBoolean(t){if(t==null)return!1;const e=String(t).trim().toLowerCase(),s=new Set(["true","t","1","yes","y"]),n=new Set(["false","f","0","no","n"]);return s.has(e)?!0:(n.has(e),!1)}hasValueChanged(t,e){return t instanceof tt&&e instanceof tt?!t.equals(e):!Object.is(t,e)}normalizeName(t){return t.toLowerCase()}};Wi._instance=null;let Rs=Wi;class jl extends re{constructor(){super({objectId:"0"}),this.events={dictObjetSet:new q,dictObjectErased:new q,entityAppended:new q,entityModified:new q,entityErased:new q,layerAppended:new q,layerModified:new q,layerErased:new q,openProgress:new q},this._version=new At("AC1014"),this._angBase=0,this._angDir=0,this._aunits=An.DecimalDegrees,this._celtscale=1,this._cecolor=new tt,this._celweight=De.ByLayer,this._clayer="0",this._textstyle=J,this._extents=new C,this._insunits=Hn.Millimeters,this._ltscale=1,this._lwdisplay=!1,this._pdmode=0,this._pdsize=0,this._osmode=0,this._maxHandle=0,this._tables={appIdTable:new Ro(this),blockTable:new So(this),dimStyleTable:new Ao(this),linetypeTable:new Oo(this),textStyleTable:new Co(this),viewTable:new Bo(this),layerTable:new No(this),viewportTable:new Fo(this)},this._objects={dictionary:new As(this),imageDefinition:new As(this),layout:new wo(this),xrecord:new As(this)}}get tables(){return this._tables}get objects(){return this._objects}generateHandle(){return this._maxHandle++,this._maxHandle.toString(16).toUpperCase()}updateMaxHandle(t){const e=parseInt(t,16);!isNaN(e)&&e>this._maxHandle&&(this._maxHandle=e)}commitObjectHandle(t,e){const s=t.getAttrWithoutException("objectId");!s||t.isTemp||e&&e(s)?t.objectId=this.generateHandle():this.updateMaxHandle(s)}get currentSpaceId(){return this._currentSpace||(this._currentSpace=this._tables.blockTable.modelSpace),this._currentSpace.objectId}set currentSpaceId(t){const e=this.tables.blockTable.getIdAt(t);if(e==null)throw new Error(`[AcDbDatabase] The specified block table record id '${t}' doesn't exist in the drawing database!`);this._currentSpace=e}get aunits(){return this._aunits}set aunits(t){this.updateSysVar(V.AUNITS,this._aunits,t??0,e=>{this._aunits=e})}get version(){return this._version}set version(t){this.updateSysVar(V.ACADVER,this._version,new At(t),e=>{this._version=e})}get insunits(){return this._insunits}set insunits(t){this.updateSysVar(V.INSUNITS,this._insunits,t??4,e=>{this._insunits=e})}get ltscale(){return this._ltscale}set ltscale(t){this.updateSysVar(V.LTSCALE,this._ltscale,t??1,e=>{this._ltscale=e})}get lwdisplay(){return this._lwdisplay}set lwdisplay(t){this.updateSysVar(V.LWDISPLAY,this._lwdisplay,t??!1,e=>{this._lwdisplay=e})}get cecolor(){return this._cecolor}set cecolor(t){this.updateSysVar(V.CECOLOR,this._cecolor,t||0,e=>{this._cecolor=e.clone()})}get celtscale(){return this._celtscale}set celtscale(t){this.updateSysVar(V.CELTSCALE,this._celtscale,t??1,e=>{this._celtscale=e})}get celweight(){return this._celweight}set celweight(t){this.updateSysVar(V.CELWEIGHT,this._celweight,t??De.ByLayer,e=>{this._celweight=e})}get clayer(){return this._clayer}set clayer(t){this.updateSysVar(V.CLAYER,this._clayer,t??"0",e=>{this._clayer=e})}get textstyle(){return this._textstyle}set textstyle(t){this.updateSysVar(V.TEXTSTYLE,this._textstyle,t??J,e=>{this._textstyle=e})}get angBase(){return this._angBase}set angBase(t){this.updateSysVar(V.ANGBASE,this._angBase,t??0,e=>{this._angBase=e})}get angDir(){return this._angDir}set angDir(t){this.updateSysVar(V.ANGDIR,this._angDir,t??0,e=>{this._angDir=e})}get extmax(){return this._extents.max}set extmax(t){if(t){const e=this._extents.max.clone();this._extents.expandByPoint(t),this._extents.max.equals(e)||this.triggerSysVarChangedEvent(V.EXTMAX,e,this._extents.max)}}get extmin(){return this._extents.min}set extmin(t){if(t){const e=this._extents.min.clone();this._extents.expandByPoint(t),this._extents.min.equals(e)||this.triggerSysVarChangedEvent(V.EXTMIN,e,this._extents.min)}}get extents(){return this._extents}get pdmode(){return this._pdmode}set pdmode(t){this.updateSysVar(V.PDMODE,this._pdmode,t??0,e=>{this._pdmode=e})}get pdsize(){return this._pdsize}set pdsize(t){this.updateSysVar(V.PDSIZE,this._pdsize,t??0,e=>{this._pdsize=e})}get osmode(){return this._osmode}set osmode(t){this.updateSysVar(V.OSMODE,this._osmode,t??0,e=>{this._osmode=e})}async read(t,e,s=fs.DXF){const n=Ct.instance.get(s);if(n==null)throw new Error(`Database converter for file type '${s}' isn't registered and can can't read this file!`);this.clear(),await n.read(t,this,e&&e.minimumChunkSize||10,async(r,a,o,l)=>{if(this.events.openProgress.dispatch({database:this,percentage:r,stage:"CONVERSION",subStage:a,subStageStatus:o,data:l}),e&&e.fontLoader&&a=="FONT"&&o=="END"){const c=l||this.tables.textStyleTable.fonts;await e.fontLoader.load(c)}},e==null?void 0:e.timeout,e==null?void 0:e.sysVars),this.ensureDatabaseDefaults()}async openUri(t,e){var p;this.events.openProgress.dispatch({database:this,percentage:0,stage:"FETCH_FILE",subStageStatus:"START"});const s=await fetch(t);if(!s.ok)throw this.events.openProgress.dispatch({database:this,percentage:100,stage:"FETCH_FILE",subStageStatus:"ERROR"}),new Error(`Failed to fetch file '${t}' with HTTP status code '${s.status}'!`);const n=s.headers.get("content-length"),r=n?parseInt(n,10):null;let a=0;const o=(p=s.body)==null?void 0:p.getReader();if(!o)throw new Error("Failed to get response reader");const l=[];for(;;){const{done:m,value:y}=await o.read();if(m)break;if(l.push(y),a+=y.length,r!==null){const w=Math.round(a/r*100);this.events.openProgress.dispatch({database:this,percentage:w,stage:"FETCH_FILE",subStageStatus:"IN-PROGRESS"})}}const c=new Uint8Array(a);let d=0;for(const m of l)c.set(m,d),d+=m.length;const g=this.getFileNameFromUri(t).toLowerCase().split(".").pop();g==="dwg"?await this.read(c.buffer,e,fs.DWG):g==="dxf"?await this.read(c.buffer,e,fs.DXF):await this.read(c.buffer,e,g),this.events.openProgress.dispatch({database:this,percentage:100,stage:"FETCH_FILE",subStageStatus:"END"})}dxfOut(t,e=16,s=this.version.name,n=!1){this.ensureDatabaseDefaults();const r=s instanceof At?s:new At(s),a=new sa({database:this,precision:e,version:r});return this.writeDxfHeaderSection(a),this.writeDxfTablesSection(a,r),this.writeDxfBlocksSection(a),this.writeDxfEntitiesSection(a),this.writeDxfObjectsSection(a),a.writeStart("EOF"),a.toString()}async regen(){await new nl(this).read(null,this,500,async(e,s,n,r)=>{this.events.openProgress.dispatch({database:this,percentage:e,stage:"CONVERSION",subStage:s,subStageStatus:n,data:r})})}createDefaultData(t={layer:!0,lineType:!0,textStyle:!0,dimStyle:!0,layout:!0}){const e=new Po(this);t.layer&&e.createDefaultLayer(),t.lineType&&e.createDefaultLineType(),t.textStyle&&e.createDefaultTextStyle(),t.dimStyle&&e.createDefaultDimStyle(),t.layout&&e.createDefaultLayout()}ensureDatabaseDefaults(){if(!this.tables.layerTable.has("0")){const e=new tt;e.colorIndex=7,this.tables.layerTable.add(new Hi({name:"0",standardFlags:0,linetype:$e,lineWeight:0,isOff:!1,color:e,isPlottable:!0}))}if(this.tables.linetypeTable.has(gi)||this.tables.linetypeTable.add(new ue({name:gi,standardFlag:0,description:"",totalPatternLength:0})),this.tables.linetypeTable.has(qe)||this.tables.linetypeTable.add(new ue({name:qe,standardFlag:0,description:"",totalPatternLength:0})),this.tables.linetypeTable.has($e)||this.tables.linetypeTable.add(new ue({name:$e,standardFlag:0,description:"Solid line",totalPatternLength:0})),this.tables.textStyleTable.has(J)||this.tables.textStyleTable.add(new Ui({name:J,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"})),this.tables.dimStyleTable.has(J)||this.tables.dimStyleTable.add(new je({name:J,dimtxsty:J})),!this.tables.viewportTable.has("*Active")){const e=new Xn;e.name="*Active",this.tables.viewportTable.add(e)}const t=this.tables.blockTable.modelSpace;if(!this.objects.layout.getAt("Model")){const e=new Ws;e.layoutName="Model",e.tabOrder=0,e.blockTableRecordId=t.objectId,e.limits.min.copy({x:0,y:0}),e.limits.max.copy({x:1e6,y:1e6}),e.extents.min.copy({x:0,y:0,z:0}),e.extents.max.copy({x:1e6,y:1e6,z:0}),this.objects.layout.setAt(e.layoutName,e),t.layoutId=e.objectId}this.tables.appIdTable.has(dn)||this.tables.appIdTable.add(new bn(dn)),this.tables.appIdTable.has(cn)||this.tables.appIdTable.add(new bn(cn))}writeDxfHeaderSection(t){var e;t.startSection("HEADER"),t.writeString(9,"$ACADVER"),t.writeString(1,((e=t.version)==null?void 0:e.name)??this.version.name),t.writeString(9,"$HANDSEED"),t.writeString(5,t.nextHandle.toString(16).toUpperCase()),t.version!=null&&t.version.value>=27&&(t.writeString(9,"$DWGCODEPAGE"),t.writeString(3,"UTF-8")),t.writeString(9,"$INSUNITS"),t.writeInt16(70,this.insunits),t.writeString(9,"$LTSCALE"),t.writeDouble(40,this.ltscale),t.writeString(9,"$LWDISPLAY"),t.writeInt16(70,this.lwdisplay?1:0),t.writeString(9,"$CLAYER"),t.writeString(8,this.clayer),t.writeString(9,"$TEXTSTYLE"),t.writeString(7,this.textstyle),t.writeString(9,"$ANGBASE"),t.writeAngle(50,this.angBase),t.writeString(9,"$ANGDIR"),t.writeInt16(70,this.angDir),t.writeString(9,"$EXTMIN"),t.writePoint3d(10,this.extmin),t.writeString(9,"$EXTMAX"),t.writePoint3d(10,this.extmax),t.writeString(9,"$PDMODE"),t.writeInt32(70,this.pdmode),t.writeString(9,"$PDSIZE"),t.writeDouble(40,this.pdsize),t.writeString(9,"$OSMODE"),t.writeInt32(70,this.osmode),t.endSection()}writeDxfTablesSection(t,e){t.startSection("TABLES"),this.writeDxfTable(t,"VPORT",this.tables.viewportTable,this.tables.viewportTable.newIterator(),"VPORT"),this.writeDxfTable(t,"VIEW",this.tables.viewTable,this.tables.viewTable.newIterator(),"VIEW"),this.writeDxfTable(t,"LTYPE",this.tables.linetypeTable,this.tables.linetypeTable.newIterator(),"LTYPE"),this.writeDxfTable(t,"LAYER",this.tables.layerTable,this.tables.layerTable.newIterator(),"LAYER"),this.writeDxfTable(t,"STYLE",this.tables.textStyleTable,this.tables.textStyleTable.newIterator(),"STYLE"),this.writeDxfTable(t,"APPID",this.tables.appIdTable,this.tables.appIdTable.newIterator(),"APPID"),this.writeDxfTable(t,"DIMSTYLE",this.tables.dimStyleTable,this.tables.dimStyleTable.newIterator(),"DIMSTYLE"),e.value>=19&&this.writeDxfTable(t,"BLOCK_RECORD",this.tables.blockTable,this.tables.blockTable.newIterator(),"BLOCK_RECORD"),t.endSection()}writeDxfBlocksSection(t){t.startSection("BLOCKS");for(const e of this.tables.blockTable.newIterator()){if(e.dxfOutBlockBegin(t),!e.isModelSapce&&!e.isPaperSapce)for(const s of e.newIterator())this.writeDxfEntity(t,s);e.dxfOutBlockEnd(t)}t.endSection()}writeDxfEntitiesSection(t){t.startSection("ENTITIES");for(const e of this.tables.blockTable.newIterator())if(!(!e.isModelSapce&&!e.isPaperSapce))for(const s of e.newIterator())this.writeDxfEntity(t,s);t.endSection()}writeDxfObjectsSection(t){t.startSection("OBJECTS");const e=this.objects.dictionary;e.ownerId="0";const s=a=>{t.writeStart("DICTIONARY"),a.dxfOut(t)},n=(a,o)=>{e.getAt(a)!==o&&e.setAt(a,o)},r=a=>{e.getAt(a)&&e.remove(a)};n("ACAD_LAYOUT",this.objects.layout),this.objects.imageDefinition.numEntries>0?n("ISM_RASTER_IMAGE_DICT",this.objects.imageDefinition):r("ISM_RASTER_IMAGE_DICT"),this.objects.xrecord.numEntries>0?n("MLIGHT_XRECORD",this.objects.xrecord):r("MLIGHT_XRECORD"),s(e),s(this.objects.layout),this.objects.imageDefinition.numEntries>0&&s(this.objects.imageDefinition),this.objects.xrecord.numEntries>0&&s(this.objects.xrecord);for(const[a,o]of this.objects.layout.entries())t.writeStart("LAYOUT"),o.dxfOut(t);for(const[a,o]of this.objects.imageDefinition.entries())t.writeStart("IMAGEDEF"),o.dxfOut(t);for(const[a,o]of this.objects.xrecord.entries())t.writeStart("XRECORD"),o.dxfOut(t);t.endSection()}writeDxfTable(t,e,s,n,r){const a=[...n];t.startTable(e),s.dxfOut(t);for(const o of a){if(r==="BLOCK_RECORD"&&o instanceof Z){o.dxfOutBlockRecord(t);continue}t.writeStart(r),o.dxfOut(t)}t.endTable()}writeDxfEntity(t,e){t.writeStart(e.dxfTypeName),e.dxfOut(t)}clear(){this._tables.blockTable.removeAll(),this._tables.dimStyleTable.removeAll(),this._tables.linetypeTable.removeAll(),this._tables.textStyleTable.removeAll(),this._tables.viewTable.removeAll(),this._tables.layerTable.removeAll(),this._tables.viewportTable.removeAll(),this._objects.layout.removeAll(),this._currentSpace=void 0,this._extents.makeEmpty()}updateSysVar(t,e,s,n){this.hasSysVarValueChanged(e,s)&&(n(s),this.triggerSysVarChangedEvent(t,e,s))}hasSysVarValueChanged(t,e){return t instanceof tt&&e instanceof tt?!t.equals(e):t instanceof At&&e instanceof At?t.value!==e.value:!Object.is(t,e)}triggerSysVarChangedEvent(t,e,s){const n=Rs.instance(),r=t.toLowerCase();n.getDescriptor(r)!=null&&n.events.sysVarChanged.dispatch({database:this,name:r,oldVal:e,newVal:s})}getFileNameFromUri(t){try{const s=new URL(t).pathname.split("/");return s[s.length-1]||""}catch{return""}}}const zo="Load Database",$r=3e4,Wl=12e4,Gl=1024*1024;class mt extends la{constructor(t,e){super(t.stage),this.data=t,this.progress=e}async run(t){const e=In.getInstance().getEntry(zo),s=Date.now();this.progress&&await this.progress(this.data.progress.value,this.data.stage,"START");const n=await this.data.task(t);return this.progress&&(await this.progress(this.data.progress.value,this.data.stage,"END",n?n.data:null),this.data.progress.value+=this.data.step,this.data.progress.value>100&&(this.data.progress.value=100)),e&&(e.data[this.name]=Date.now()-s),n}}class Yn{constructor(t={}){this.config=t}async read(t,e,s,n,r,a){const o={name:zo,data:{total:0},format(){let u="";return Object.keys(this.data).forEach(g=>{g!=="total"&&(u+=`- ${g}: ${this.data[g]} ms
4
- `)}),u+=`- total: ${this.data.total} ms`,u}};In.getInstance().collect(o),this.progress=n;const l={value:0},c=new ca;c.setCompleteCallback(()=>this.onFinished()),c.setErrorCallback(u=>this.onError(u)),c.addTask(new mt({stage:"START",step:1,progress:l,task:async u=>u},n)),c.addTask(new mt({stage:"PARSE",step:5,progress:l,task:async u=>await this.parse(u,r)},n)),c.addTask(new mt({stage:"FONT",step:5,progress:l,task:async u=>{const g=this.getFonts(u.model);return{model:u.model,data:g}}},n)),c.addTask(new mt({stage:"LTYPE",step:1,progress:l,task:async u=>(this.processLineTypes(u.model,e),u)},n)),c.addTask(new mt({stage:"STYLE",step:1,progress:l,task:async u=>(this.processTextStyles(u.model,e),u)},n)),c.addTask(new mt({stage:"DIMSTYLE",step:1,progress:l,task:async u=>(this.processDimStyles(u.model,e),u)},n)),c.addTask(new mt({stage:"LAYER",step:1,progress:l,task:async u=>(this.processLayers(u.model,e),e.tables.layerTable.numEntries===0&&e.createDefaultData({layer:!0}),u)},n)),c.addTask(new mt({stage:"VPORT",step:1,progress:l,task:async u=>(this.processViewports(u.model,e),u)},n)),c.addTask(new mt({stage:"HEADER",step:1,progress:l,task:async u=>{if(this.processHeader(u.model,e),a){const g=Rs.instance();for(const[p,m]of Object.entries(a))g.setVar(p,m,e)}return u}},n)),c.addTask(new mt({stage:"BLOCK_RECORD",step:5,progress:l,task:async u=>(this.processBlockTables(u.model,e),u)},n)),c.addTask(new mt({stage:"OBJECT",step:5,progress:l,task:async u=>(this.processObjects(u.model,e),e.objects.layout.numEntries===0&&e.createDefaultData({layout:!0}),u)},n)),c.addTask(new mt({stage:"BLOCK",step:5,progress:l,task:async u=>(await this.processBlocks(u.model,e),u)},n)),c.addTask(new mt({stage:"ENTITY",step:100,progress:l,task:async u=>(await this.processEntities(u.model,e,s,l,n),u)},n)),c.addTask(new mt({stage:"END",step:0,progress:l,task:async u=>u},n));const d=Date.now();await c.run(t),o.data.total=Date.now()-d}onError(t){if(this.progress){const e=t.task;this.progress(e.data.progress.value,e.data.stage,"ERROR",void 0,t)}return t.task.name==="ENTITY"?!1:(this.onFinished(),!0)}onFinished(){this.progress&&(this.progress(100,"END","END"),Je.instance.clear())}getParserWorkerTimeout(t,e){const s=e??this.config.timeout;if(s!=null)return s;const n=Math.ceil(t.byteLength/Gl),r=$r+n*1e3;return Math.min(Wl,Math.max($r,r))}async parse(t,e){throw new Error("Not impelemented yet!")}getFonts(t){throw new Error("Not impelemented yet!")}processLineTypes(t,e){throw new Error("Not impelemented yet!")}processTextStyles(t,e){throw new Error("Not impelemented yet!")}processDimStyles(t,e){throw new Error("Not impelemented yet!")}processLayers(t,e){throw new Error("Not impelemented yet!")}processViewports(t,e){throw new Error("Not impelemented yet!")}processHeader(t,e){throw new Error("Not impelemented yet!")}processBlockTables(t,e){throw new Error("Not impelemented yet!")}processObjects(t,e){throw new Error("Not impelemented yet!")}processBlocks(t,e){throw new Error("Not impelemented yet!")}processEntities(t,e,s,n,r){throw new Error("Not impelemented yet!")}}class Hl extends Un{constructor(){super(),this._standardFlags=0,this._viewWidth=this.viewHeight,this._ucsAssociated=!1,this._cameraPlottable=!1,this._ucsElevation=0}get standardFlags(){return this._standardFlags}set standardFlags(t){this._standardFlags=t}get viewWidth(){return this._viewWidth}set viewWidth(t){this._viewWidth=t}get ucsAssociated(){return this._ucsAssociated}set ucsAssociated(t){this._ucsAssociated=t}get cameraPlottable(){return this._cameraPlottable}set cameraPlottable(t){this._cameraPlottable=t}get ucsElevation(){return this._ucsElevation}set ucsElevation(t){this._ucsElevation=t}get ucsObjectId(){return this._ucsObjectId}set ucsObjectId(t){this._ucsObjectId=t}get ucsBaseObjectId(){return this._ucsBaseObjectId}set ucsBaseObjectId(t){this._ucsBaseObjectId=t}get backgroundObjectId(){return this._backgroundObjectId}set backgroundObjectId(t){this._backgroundObjectId=t}get liveSectionObjectId(){return this._liveSectionObjectId}set liveSectionObjectId(t){this._liveSectionObjectId=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writeDouble(40,this.gsView.viewHeight),t.writePoint2d(10,this.centerPoint),t.writeDouble(41,this.viewWidth),t.writePoint3d(11,this.gsView.viewDirectionFromTarget),t.writePoint3d(12,this.gsView.viewTarget),t.writeDouble(42,this.gsView.lensLength),t.writeDouble(43,this.gsView.frontClippingPlane),t.writeDouble(44,this.gsView.backClippingPlane),t.writeAngle(50,this.gsView.viewTwistAngle),t.writeInt16(71,this.gsView.viewMode),t.writeInt16(281,this.gsView.renderMode),t.writeInt16(72,this.ucsAssociated?1:0),t.writeInt16(73,this.cameraPlottable?1:0),t.writeObjectId(332,this.backgroundObjectId),t.writeObjectId(334,this.liveSectionObjectId),t.writeObjectId(348,this.gsView.visualStyleObjectId),this.ucsAssociated&&(t.writePoint3d(110,this.gsView.ucsOrigin),t.writePoint3d(111,this.gsView.ucsXAxis),t.writePoint3d(112,this.gsView.ucsYAxis),t.writeInt16(79,this.gsView.orthographicType),t.writeDouble(146,this.ucsElevation),t.writeObjectId(345,this.ucsObjectId),t.writeObjectId(346,this.ucsBaseObjectId)),this}}var st,es,X,$,ss,Tt,be,Dt,ht,jt,vt,fe,Ie,Pe,wt,Wt,is,ns,Ee,Se,rs,as,os,xt,Gt,G,Ae,hs,k,lt,ls,ct,cs,Ht,D,ds,Ut,Me,Ji,tn,kt,us,Te,bt,Xt,Yt,$t,ps,gs,qt,ve,ke,en,ms,Le,Zt,Ne,it,Kt,ft,sn,nt,nn,Qt,It,Oe,ys,Ce,Pt,Jt,Et,te,rn,Be,St;(st={})[st.None=0]="None",st[st.Anonymous=1]="Anonymous",st[st.NonConstant=2]="NonConstant",st[st.Xref=4]="Xref",st[st.XrefOverlay=8]="XrefOverlay",st[st.ExternallyDependent=16]="ExternallyDependent",st[st.ResolvedOrDependent=32]="ResolvedOrDependent",st[st.ReferencedXref=64]="ReferencedXref";(es={})[es.BYBLOCK=0]="BYBLOCK",es[es.BYLAYER=256]="BYLAYER";(X={})[X.Rotated=0]="Rotated",X[X.Aligned=1]="Aligned",X[X.Angular=2]="Angular",X[X.Diameter=3]="Diameter",X[X.Radius=4]="Radius",X[X.Angular3Point=5]="Angular3Point",X[X.Ordinate=6]="Ordinate",X[X.ReferenceIsExclusive=32]="ReferenceIsExclusive",X[X.IsOrdinateXTypeFlag=64]="IsOrdinateXTypeFlag",X[X.IsCustomTextPositionFlag=128]="IsCustomTextPositionFlag";($={})[$.TopLeft=1]="TopLeft",$[$.TopCenter=2]="TopCenter",$[$.TopRight=3]="TopRight",$[$.MiddleLeft=4]="MiddleLeft",$[$.MiddleCenter=5]="MiddleCenter",$[$.MiddleRight=6]="MiddleRight",$[$.BottomLeft=7]="BottomLeft",$[$.BottomCenter=8]="BottomCenter",$[$.BottomRight=9]="BottomRight";(ss={})[ss.AtLeast=1]="AtLeast",ss[ss.Exact=2]="Exact";var qr=((Tt={})[Tt.Center=0]="Center",Tt[Tt.Above=1]="Above",Tt[Tt.Outside=2]="Outside",Tt[Tt.JIS=3]="JIS",Tt[Tt.Below=4]="Below",Tt);(be={})[be.WithDimension=0]="WithDimension",be[be.AddLeader=1]="AddLeader",be[be.Independent=2]="Independent";(Dt={})[Dt.BothOutside=0]="BothOutside",Dt[Dt.ArrowFirst=1]="ArrowFirst",Dt[Dt.TextFirst=2]="TextFirst",Dt[Dt.Auto=3]="Auto";var He=((ht={})[ht.Feet=0]="Feet",ht[ht.None=1]="None",ht[ht.Inch=2]="Inch",ht[ht.FeetAndInch=3]="FeetAndInch",ht[ht.Leading=4]="Leading",ht[ht.Trailing=8]="Trailing",ht[ht.LeadingAndTrailing=12]="LeadingAndTrailing",ht),Ul=((jt={})[jt.None=0]="None",jt[jt.Leading=1]="Leading",jt[jt.Trailing=2]="Trailing",jt[jt.LeadingAndTrailing=3]="LeadingAndTrailing",jt),Xl=((vt={})[vt.Center=0]="Center",vt[vt.First=1]="First",vt[vt.Second=2]="Second",vt[vt.OverFirst=3]="OverFirst",vt[vt.OverSecond=4]="OverSecond",vt),Yl=((fe={})[fe.Bottom=0]="Bottom",fe[fe.Center=1]="Center",fe[fe.Top=2]="Top",fe);(Ie={})[Ie.None=0]="None",Ie[Ie.UseDrawingBackground=1]="UseDrawingBackground",Ie[Ie.Custom=2]="Custom";(Pe={})[Pe.Horizontal=0]="Horizontal",Pe[Pe.Diagonal=1]="Diagonal",Pe[Pe.NotStacked=2]="NotStacked";(wt={})[wt.Scientific=1]="Scientific",wt[wt.Decimal=2]="Decimal",wt[wt.Engineering=3]="Engineering",wt[wt.Architectural=4]="Architectural",wt[wt.Fractional=5]="Fractional",wt[wt.WindowDesktop=6]="WindowDesktop";(Wt={})[Wt.Decimal=0]="Decimal",Wt[Wt.DegreesMinutesSecond=1]="DegreesMinutesSecond",Wt[Wt.Gradian=2]="Gradian",Wt[Wt.Radian=3]="Radian";var $l=((is={})[is.PatternFill=0]="PatternFill",is[is.SolidFill=1]="SolidFill",is);(ns={})[ns.NonAssociative=0]="NonAssociative",ns[ns.Associative=1]="Associative";(Ee={})[Ee.Normal=0]="Normal",Ee[Ee.Outer=1]="Outer",Ee[Ee.Ignore=2]="Ignore";(Se={})[Se.UserDefined=0]="UserDefined",Se[Se.Predefined=1]="Predefined",Se[Se.Custom=2]="Custom";(rs={})[rs.NotAnnotated=0]="NotAnnotated",rs[rs.Annotated=1]="Annotated";(as={})[as.Solid=0]="Solid",as[as.Gradient=1]="Gradient";(os={})[os.TwoColor=0]="TwoColor",os[os.OneColor=1]="OneColor";var ql=((xt={})[xt.Default=0]="Default",xt[xt.External=1]="External",xt[xt.Polyline=2]="Polyline",xt[xt.Derived=4]="Derived",xt[xt.Textbox=8]="Textbox",xt[xt.Outermost=16]="Outermost",xt),si=((Gt={})[Gt.Line=1]="Line",Gt[Gt.Circular=2]="Circular",Gt[Gt.Elliptic=3]="Elliptic",Gt[Gt.Spline=4]="Spline",Gt),Zl=((G={})[G.Off=0]="Off",G[G.Solid=1]="Solid",G[G.Dashed=2]="Dashed",G[G.Dotted=3]="Dotted",G[G.ShotDash=4]="ShotDash",G[G.MediumDash=5]="MediumDash",G[G.LongDash=6]="LongDash",G[G.DoubleShortDash=7]="DoubleShortDash",G[G.DoubleMediumDash=8]="DoubleMediumDash",G[G.DoubleLongDash=9]="DoubleLongDash",G[G.DoubleMediumLongDash=10]="DoubleMediumLongDash",G[G.SparseDot=11]="SparseDot",G);Zl.Off;(Ae={})[Ae.Standard=-3]="Standard",Ae[Ae.ByLayer=-2]="ByLayer",Ae[Ae.ByBlock=-1]="ByBlock";(hs={})[hs.English=0]="English",hs[hs.Metric=1]="Metric";(k={})[k.PERSPECTIVE_MODE=1]="PERSPECTIVE_MODE",k[k.FRONT_CLIPPING=2]="FRONT_CLIPPING",k[k.BACK_CLIPPING=4]="BACK_CLIPPING",k[k.UCS_FOLLOW=8]="UCS_FOLLOW",k[k.FRONT_CLIP_NOT_AT_EYE=16]="FRONT_CLIP_NOT_AT_EYE",k[k.UCS_ICON_VISIBILITY=32]="UCS_ICON_VISIBILITY",k[k.UCS_ICON_AT_ORIGIN=64]="UCS_ICON_AT_ORIGIN",k[k.FAST_ZOOM=128]="FAST_ZOOM",k[k.SNAP_MODE=256]="SNAP_MODE",k[k.GRID_MODE=512]="GRID_MODE",k[k.ISOMETRIC_SNAP_STYLE=1024]="ISOMETRIC_SNAP_STYLE",k[k.HIDE_PLOT_MODE=2048]="HIDE_PLOT_MODE",k[k.K_ISO_PAIR_TOP=4096]="K_ISO_PAIR_TOP",k[k.K_ISO_PAIR_RIGHT=8192]="K_ISO_PAIR_RIGHT",k[k.VIEWPORT_ZOOM_LOCKING=16384]="VIEWPORT_ZOOM_LOCKING",k[k.UNUSED=32768]="UNUSED",k[k.NON_RECTANGULAR_CLIPPING=65536]="NON_RECTANGULAR_CLIPPING",k[k.VIEWPORT_OFF=131072]="VIEWPORT_OFF",k[k.GRID_BEYOND_DRAWING_LIMITS=262144]="GRID_BEYOND_DRAWING_LIMITS",k[k.ADAPTIVE_GRID_DISPLAY=524288]="ADAPTIVE_GRID_DISPLAY",k[k.SUBDIVISION_BELOW_SPACING=1048576]="SUBDIVISION_BELOW_SPACING",k[k.GRID_FOLLOWS_WORKPLANE=2097152]="GRID_FOLLOWS_WORKPLANE";(lt={})[lt.OPTIMIZED_2D=0]="OPTIMIZED_2D",lt[lt.WIREFRAME=1]="WIREFRAME",lt[lt.HIDDEN_LINE=2]="HIDDEN_LINE",lt[lt.FLAT_SHADED=3]="FLAT_SHADED",lt[lt.GOURAUD_SHADED=4]="GOURAUD_SHADED",lt[lt.FLAT_SHADED_WITH_WIREFRAME=5]="FLAT_SHADED_WITH_WIREFRAME",lt[lt.GOURAUD_SHADED_WITH_WIREFRAME=6]="GOURAUD_SHADED_WITH_WIREFRAME";(ls={})[ls.UCS_UNCHANGED=0]="UCS_UNCHANGED",ls[ls.HAS_OWN_UCS=1]="HAS_OWN_UCS";(ct={})[ct.NON_ORTHOGRAPHIC=0]="NON_ORTHOGRAPHIC",ct[ct.TOP=1]="TOP",ct[ct.BOTTOM=2]="BOTTOM",ct[ct.FRONT=3]="FRONT",ct[ct.BACK=4]="BACK",ct[ct.LEFT=5]="LEFT",ct[ct.RIGHT=6]="RIGHT";(cs={})[cs.ONE_DISTANT_LIGHT=0]="ONE_DISTANT_LIGHT",cs[cs.TWO_DISTANT_LIGHTS=1]="TWO_DISTANT_LIGHTS";(Ht={})[Ht.ByLayer=0]="ByLayer",Ht[Ht.ByBlock=1]="ByBlock",Ht[Ht.ByDictionaryDefault=2]="ByDictionaryDefault",Ht[Ht.ByObject=3]="ByObject";(D={})[D.NotAllowed=0]="NotAllowed",D[D.AllowErase=1]="AllowErase",D[D.AllowTransform=2]="AllowTransform",D[D.AllowChangeColor=4]="AllowChangeColor",D[D.AllowChangeLayer=8]="AllowChangeLayer",D[D.AllowChangeLinetype=16]="AllowChangeLinetype",D[D.AllowChangeLinetypeScale=32]="AllowChangeLinetypeScale",D[D.AllowChangeVisibility=64]="AllowChangeVisibility",D[D.AllowClone=128]="AllowClone",D[D.AllowChangeLineweight=256]="AllowChangeLineweight",D[D.AllowChangePlotStyleName=512]="AllowChangePlotStyleName",D[D.AllowAllExceptClone=895]="AllowAllExceptClone",D[D.AllowAll=1023]="AllowAll",D[D.DisableProxyWarning=1024]="DisableProxyWarning",D[D.R13FormatProxy=32768]="R13FormatProxy";function O(i,t,e){return i.code===t&&(e==null||i.value===e)}function ge(i){let t={};i.rewind();let e=i.next(),s=e.code;if(t.x=e.value,(e=i.next()).code!==s+10)throw Error("Expected code for point value to be 20 but got "+e.code+".");return t.y=e.value,(e=i.next()).code!==s+20?i.rewind():t.z=e.value,t}let Hs=Symbol();function P(i,t){return(e,s,n)=>{let r=function(l,c=!1){return l.reduce((d,u)=>{u.pushContext&&d.push({});let g=d[d.length-1];for(let p of typeof u.code=="number"?[u.code]:u.code){let m=g[p]??(g[p]=[]);u.isMultiple&&m.length,m.push(u)}return d},[{}])}(i,s.debug),a=!1,o=r.length-1;for(;!O(e,0,"EOF");){let l=function(w,b,E){return w.find((I,T)=>{var A;return T>=E&&((A=I[b])==null?void 0:A.length)})}(r,e.code,o),c=l==null?void 0:l[e.code],d=c==null?void 0:c[c.length-1];if(!l||!d){s.rewind();break}d.isMultiple||l[e.code].pop();let{name:u,parser:g,isMultiple:p,isReducible:m}=d,y=g==null?void 0:g(e,s,n);if(y===Hs){s.rewind();break}if(u){let[w,b]=Kl(n,u);p&&!m?(Object.prototype.hasOwnProperty.call(w,b)||(w[b]=[]),w[b].push(y)):w[b]=y}d.pushContext&&(o-=1),a=!0,e=s.next()}return t&&Object.setPrototypeOf(n,t),a}}function Kl(i,t){let e=t.split(".");if(!e.length)throw Error("[parserGenerator::getObjectByPath] Invalid empty path");let s=i;for(let n=0;n<e.length-1;++n){let r=an(e[n]),a=an(e[n+1]);Object.prototype.hasOwnProperty.call(s,r)||(typeof a=="number"?s[r]=[]:s[r]={}),s=s[r]}return[s,an(e[e.length-1])]}function an(i){let t=Number.parseInt(i);return Number.isNaN(t)?i:t}function h({value:i}){return i}function _(i,t){return ge(t)}function N({value:i}){return!!i}function Ql({value:i}){return i.trim()}let Jl=[{code:281,name:"isEntity",parser:N},{code:280,name:"wasProxy",parser:N},{code:91,name:"instanceCount",parser:h},{code:90,name:"proxyFlag",parser:h},{code:3,name:"appName",parser:h},{code:2,name:"cppClassName",parser:h},{code:1,name:"name",parser:h}],tc=P(Jl),ec=[{code:0,name:"classes",isMultiple:!0,parser(i,t){if(i.value!=="CLASS")return Hs;i=t.next();let e={};return tc(i,t,e),e}}],sc=P(ec);(ds={})[ds.RayTrace=0]="RayTrace",ds[ds.ShadowMap=1]="ShadowMap";function zt(i,t,e){for(;O(i,102);){var s;let n=i.value;if(i=t.next(),!n.startsWith("{")){t.debug,function(a,o){for(;!O(a,102)&&!O(a,0,"EOF");)a=o.next()}(i,t),i=t.next();continue}let r=n.slice(1).trim();e.extensions??(e.extensions={}),(s=e.extensions)[r]??(s[r]=[]),function(a,o,l){for(;!O(a,102,"}")&&!O(a,0,"EOF");)l.push(a),a=o.next()}(i,t,e.extensions[r]),i=t.next()}t.rewind()}let ic=[{code:1001,name:"xdata",isMultiple:!0,parser:Vo}],nc=new Set([1010,1011,1012,1013]);function Vo(i,t){var n;if(!O(i,1001))throw Error("XData must starts with code 1001");let e={appName:i.value,value:[]};i=t.next();let s=[e.value];for(;!O(i,0,"EOF")&&!O(i,1001)&&i.code>=1e3;){let r=s[s.length-1];if(i.code===1002){i.value==="{"?s.push([]):(s.pop(),(n=s[s.length-1])==null||n.push(r)),i=t.next();continue}nc.has(i.code)?r.push(ge(t)):r.push(i.value),i=t.next()}return t.rewind(),e}(Ut={})[Ut.CAST_AND_RECEIVE=0]="CAST_AND_RECEIVE",Ut[Ut.CAST=1]="CAST",Ut[Ut.RECEIVE=2]="RECEIVE",Ut[Ut.IGNORE=3]="IGNORE";let z=[...ic,{code:284,name:"shadowMode",parser:h},{code:390,name:"plotStyleHardId",parser:h},{code:380,name:"plotStyleType",parser:h},{code:440,name:"transparency",parser:h},{code:430,name:"colorName",parser:h},{code:420,name:"color",parser:h},{code:310,name:"proxyEntity",isMultiple:!0,isReducible:!0,parser:(i,t,e)=>(e.proxyEntity??"")+i.value},{code:[92,160],name:"proxyByte",parser:h},{code:60,name:"isVisible",parser:N},{code:48,name:"lineTypeScale",parser:h},{code:370,name:"lineweight",parser:h},{code:62,name:"colorIndex",parser:h},{code:347,name:"materialObjectHardId",parser:h},{code:6,name:"lineType",parser:h},{code:8,name:"layer",parser:h},{code:410,name:"layoutTabName",parser:h},{code:67,name:"isInPaperSpace",parser:N},{code:100},{code:330,name:"ownerBlockRecordSoftId",parser:h},{code:102,parser:zt},{code:102,parser:zt},{code:102,parser:zt},{code:5,name:"handle",parser:h}];function Xi(i){return[{code:3,name:i,parser:(t,e,s)=>(s._code3text=(s._code3text??"")+t.value,s._code3text+(s._code1text??"")),isMultiple:!0,isReducible:!0},{code:1,name:i,parser:(t,e,s)=>(s._code1text=t.value,(s._code3text??"")+s._code1text)}]}function Do(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let rc={extrusionDirection:{x:0,y:0,z:1}},ac=[{code:210,name:"extrusionDirection",parser:_},{code:51,name:"endAngle",parser:h},{code:50,name:"startAngle",parser:h},{code:100,name:"subclassMarker",parser:h},{code:40,name:"radius",parser:h},{code:10,name:"center",parser:_},{code:39,name:"thickness",parser:h},{code:100},...z];class jo{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Do(this,"parser",P(ac,rc))}}Do(jo,"ForEntityName","ARC");(Me={})[Me.BeforeText=0]="BeforeText",Me[Me.AboveText=1]="AboveText",Me[Me.None=2]="None";let $n=[{name:"DIMPOST",code:3},{name:"DIMAPOST",code:4,defaultValue:""},{name:"DIMBLK_OBSOLETE",code:5},{name:"DIMBLK1_OBSOLETE",code:6},{name:"DIMBLK2_OBSOLETE",code:7},{name:"DIMSCALE",code:40,defaultValue:1},{name:"DIMASZ",code:41,defaultValue:.25},{name:"DIMEXO",code:42,defaultValue:.625,defaultValueImperial:.0625},{name:"DIMDLI",code:43,defaultValue:3.75,defaultValueImperial:.38},{name:"DIMEXE",code:44,defaultValue:2.25,defaultValueImperial:.28},{name:"DIMRND",code:45,defaultValue:0},{name:"DIMDLE",code:46,defaultValue:0},{name:"DIMTP",code:47,defaultValue:0},{name:"DIMTM",code:48,defaultValue:0},{name:"DIMFXL",code:49,defaultValue:1},{name:"DIMJOGANG",code:50,defaultValue:45},{name:"DIMTFILL",code:69,defaultValue:0},{name:"DIMTFILLCLR",code:70,defaultValue:0},{name:"DIMTOL",code:71,defaultValue:0,defaultValueImperial:1},{name:"DIMLIM",code:72,defaultValue:0},{name:"DIMTIH",code:73,defaultValue:0,defaultValueImperial:1},{name:"DIMTOH",code:74,defaultValue:0,defaultValueImperial:1},{name:"DIMSE1",code:75,defaultValue:0},{name:"DIMSE2",code:76,defaultValue:0},{name:"DIMTAD",code:77,defaultValue:qr.Above,defaultValueImperial:qr.Center},{name:"DIMZIN",code:78,defaultValue:He.Trailing,defaultValueImperial:He.Feet},{name:"DIMAZIN",code:79,defaultValue:Ul.None},{name:"DIMARCSYM",code:90,defaultValue:0},{name:"DIMTXT",code:140,defaultValue:2.5,defaultValueImperial:.28},{name:"DIMCEN",code:141,defaultValue:2.5,defaultValueImperial:.09},{name:"DIMTSZ",code:142,defaultValue:0},{name:"DIMALTF",code:143,defaultValue:25.4},{name:"DIMLFAC",code:144,defaultValue:1},{name:"DIMTVP",code:145,defaultValue:0},{name:"DIMTFAC",code:146,defaultValue:1},{name:"DIMGAP",code:147,defaultValue:.625,defaultValueImperial:.09},{name:"DIMALTRND",code:148,defaultValue:0},{name:"DIMALT",code:170,defaultValue:0},{name:"DIMALTD",code:171,defaultValue:3,defaultValueImperial:2},{name:"DIMTOFL",code:172,defaultValue:1,defaultValueImperial:0},{name:"DIMSAH",code:173,defaultValue:0},{name:"DIMTIX",code:174,defaultValue:0},{name:"DIMSOXD",code:175,defaultValue:0},{name:"DIMCLRD",code:176,defaultValue:0},{name:"DIMCLRE",code:177,defaultValue:0},{name:"DIMCLRT",code:178,defaultValue:0},{name:"DIMADEC",code:179,defaultValue:0},{name:"DIMUNIT",code:270},{name:"DIMDEC",code:271,defaultValue:2,defaultValueImperial:4},{name:"DIMTDEC",code:272,defaultValue:2,defaultValueImperial:4},{name:"DIMALTU",code:273,defaultValue:2},{name:"DIMALTTD",code:274,defaultValue:3,defaultValueImperial:2},{name:"DIMAUNIT",code:275,defaultValue:0},{name:"DIMFRAC",code:276,defaultValue:0},{name:"DIMLUNIT",code:277,defaultValue:2},{name:"DIMDSEP",code:278,defaultValue:44,defaultValueImperial:46},{name:"DIMTMOVE",code:279,defaultValue:0},{name:"DIMJUST",code:280,defaultValue:Xl.Center},{name:"DIMSD1",code:281,defaultValue:0},{name:"DIMSD2",code:282,defaultValue:0},{name:"DIMTOLJ",code:283,defaultValue:Yl.Center},{name:"DIMTZIN",code:284,defaultValue:He.Trailing,defaultValueImperial:He.Feet},{name:"DIMALTZ",code:285,defaultValue:He.Trailing},{name:"DIMALTTZ",code:286,defaultValue:He.Trailing},{name:"DIMFIT",code:287},{name:"DIMUPT",code:288,defaultValue:0},{name:"DIMATFIT",code:289,defaultValue:3},{name:"DIMFXLON",code:290,defaultValue:0},{name:"DIMTXTDIRECTION",code:294,defaultValue:0},{name:"DIMTXSTY",code:340,defaultValue:"Standard"},{name:"DIMLDRBLK",code:341,defaultValue:""},{name:"DIMBLK",code:342,defaultValue:""},{name:"DIMBLK1",code:343,defaultValue:""},{name:"DIMBLK2",code:344,defaultValue:""},{name:"DIMLTYPE",code:345,defaultValue:""},{name:"DIMLTEX1",code:346,defaultValue:""},{name:"DIMLTEX2",code:347,defaultValue:""},{name:"DIMLWD",code:371,defaultValue:-2},{name:"DIMLWE",code:372,defaultValue:-2}],Wo=[{code:3,name:"styleName",parser:h},{code:210,name:"extrusionDirection",parser:_},{code:51,name:"ocsRotation",parser:h},{code:53,name:"textRotation",parser:h},{code:1,name:"text",parser:h},{code:42,name:"measurement",parser:h},{code:72,name:"textLineSpacingStyle",parser:h},{code:71,name:"attachmentPoint",parser:h},{code:70,name:"dimensionType",parser:h},{code:11,name:"textPoint",parser:_},{code:10,name:"definitionPoint",parser:_},{code:2,name:"name",parser:h},{code:280,name:"version",parser:h},{code:100}],oc=[{code:100},{code:52,name:"obliqueAngle",parser:h},{code:50,name:"rotationAngle",parser:h},{code:14,name:"subDefinitionPoint2",parser:_},{code:13,name:"subDefinitionPoint1",parser:_},{code:12,name:"insertionPoint",parser:_},{code:100,name:"subclassMarker",parser:h}],hc=[{code:16,name:"arcPoint",parser:_},{code:15,name:"centerPoint",parser:_},{code:14,name:"subDefinitionPoint2",parser:_},{code:13,name:"subDefinitionPoint1",parser:_},{code:100,name:"subclassMarker",parser:h}],lc=[{code:14,name:"subDefinitionPoint2",parser:_},{code:13,name:"subDefinitionPoint1",parser:_},{code:100,name:"subclassMarker",parser:h}],cc=[{code:40,name:"leaderLength",parser:h},{code:15,name:"subDefinitionPoint",parser:_},{code:100,name:"subclassMarker",parser:h}],dc=[{code:100,parser(i,t,e){let s=function(n){switch(n){case"AcDbAlignedDimension":return P(oc);case"AcDb3PointAngularDimension":case"AcDb2LineAngularDimension":return P(hc);case"AcDbOrdinateDimension":return P(lc);case"AcDbRadialDimension":case"AcDbDiametricDimension":return P(cc)}return null}(i.value);if(!s)return Hs;s(i,t,e)},pushContext:!0},...$n.map(i=>({...i,parser:h})),...Wo,...z];class oi{parseEntity(t,e){let s={};return P(dc)(e,t,s),s}}(Ji="ForEntityName")in oi?Object.defineProperty(oi,Ji,{value:"DIMENSION",enumerable:!0,configurable:!0,writable:!0}):oi[Ji]="DIMENSION";let uc=[{code:73},{code:17,name:"leaderEnd",parser:_},{code:16,name:"leaderStart",parser:_},{code:71,name:"hasLeader",parser:N},{code:41,name:"endAngle",parser:h},{code:40,name:"startAngle",parser:h},{code:70,name:"isPartial",parser:N},{code:15,name:"centerPoint",parser:_},{code:14,name:"xline2Point",parser:_},{code:13,name:"xline1Point",parser:_},{code:100,name:"subclassMarker",parser:h,pushContext:!0},...$n.map(i=>({...i,parser:h})),...Wo,...z];class hi{parseEntity(t,e){let s={};return P(uc)(e,t,s),s}}(tn="ForEntityName")in hi?Object.defineProperty(hi,tn,{value:"ARC_DIMENSION",enumerable:!0,configurable:!0,writable:!0}):hi[tn]="ARC_DIMENSION";(kt={})[kt.NONE=0]="NONE",kt[kt.INVISIBLE=1]="INVISIBLE",kt[kt.CONSTANT=2]="CONSTANT",kt[kt.VERIFICATION_REQUIRED=4]="VERIFICATION_REQUIRED",kt[kt.PRESET=8]="PRESET";(us={})[us.MULTILINE=2]="MULTILINE",us[us.CONSTANT_MULTILINE=4]="CONSTANT_MULTILINE";(Te={})[Te.NONE=0]="NONE",Te[Te.MIRRORED_X=2]="MIRRORED_X",Te[Te.MIRRORED_Y=4]="MIRRORED_Y";var pc=((bt={})[bt.LEFT=0]="LEFT",bt[bt.CENTER=1]="CENTER",bt[bt.RIGHT=2]="RIGHT",bt[bt.ALIGNED=3]="ALIGNED",bt[bt.MIDDLE=4]="MIDDLE",bt[bt.FIT=5]="FIT",bt),gc=((Xt={})[Xt.BASELINE=0]="BASELINE",Xt[Xt.BOTTOM=1]="BOTTOM",Xt[Xt.MIDDLE=2]="MIDDLE",Xt[Xt.TOP=3]="TOP",Xt);function Go(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let Ho={thickness:0,rotation:0,xScale:1,obliqueAngle:0,styleName:"STANDARD",generationFlag:0,halign:pc.LEFT,valign:gc.BASELINE,extrusionDirection:{x:0,y:0,z:1}},Uo=[{code:73,name:"valign",parser:h},{code:100},{code:210,name:"extrusionDirection",parser:_},{code:11,name:"endPoint",parser:_},{code:72,name:"valign",parser:h},{code:72,name:"halign",parser:h},{code:71,name:"generationFlag",parser:h},{code:7,name:"styleName",parser:h},{code:51,name:"obliqueAngle",parser:h},{code:41,name:"xScale",parser:h},{code:50,name:"rotation",parser:h},{code:1,name:"text",parser:h},{code:40,name:"textHeight",parser:h},{code:10,name:"startPoint",parser:_},{code:39,name:"thickness",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class Xo{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Go(this,"parser",P(Uo,Ho))}}function Yo(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Go(Xo,"ForEntityName","TEXT");let mc={...Ho},yc=[{code:2},{code:40,name:"annotationScale",parser:h},{code:10,name:"alignmentPoint",parser:_},{code:340,name:"secondaryAttributesHardIds",isMultiple:!0,parser:h},{code:70,name:"numberOfSecondaryAttributes",parser:h},{code:70,name:"isReallyLocked",parser:N},{code:70,name:"mtextFlag",parser:h},{code:280,name:"isDuplicatedRecord",parser:N},{code:100},{code:280,name:"isLocked",parser:N},{code:74,name:"valign",parser:h},{code:73},{code:70,name:"attributeFlag",parser:h},{code:2,name:"tag",parser:h},{code:3,name:"prompt",parser:h},{code:280},{code:100,name:"subclassMarker",parser:h},...Uo.slice(2)];class $o{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Yo(this,"parser",P(yc,mc))}}function _c(i,t){let e={};for(let s of i){let n=t(s);n!=null&&(e[n]??(e[n]=[]),e[n].push(s))}return e}function*Vi(i,t=1/0,e=1){for(let s=i;s!==t;s+=e)yield s}function Zr(i){return{x:i.x??0,y:i.y??0,z:i.z??0}}Yo($o,"ForEntityName","ATTDEF");var wc=[0,16711680,16776960,65280,65535,255,16711935,16777215,8421504,12632256,16711680,16744319,13369344,13395558,10027008,10046540,8323072,8339263,4980736,4990502,16727808,16752511,13382400,13401958,10036736,10051404,8331008,8343359,4985600,4992806,16744192,16760703,13395456,13408614,10046464,10056268,8339200,8347455,4990464,4995366,16760576,16768895,13408512,13415014,10056192,10061132,8347392,8351551,4995328,4997670,16776960,16777087,13421568,13421670,10000384,10000460,8355584,8355647,5000192,5000230,12582656,14679935,10079232,11717734,7510016,8755276,6258432,7307071,3755008,4344870,8388352,12582783,6736896,10079334,5019648,7510092,4161280,6258495,2509824,3755046,4194048,10485631,3394560,8375398,2529280,6264908,2064128,5209919,1264640,3099686,65280,8388479,52224,6736998,38912,5019724,32512,4161343,19456,2509862,65343,8388511,52275,6737023,38950,5019743,32543,4161359,19475,2509871,65407,8388543,52326,6737049,38988,5019762,32575,4161375,19494,2509881,65471,8388575,52377,6737074,39026,5019781,32607,4161391,19513,2509890,65535,8388607,52428,6737100,39064,5019800,32639,4161407,19532,2509900,49151,8380415,39372,6730444,29336,5014936,24447,4157311,14668,2507340,32767,8372223,26316,6724044,19608,5010072,16255,4153215,9804,2505036,16383,8364031,13260,6717388,9880,5005208,8063,4149119,4940,2502476,255,8355839,204,6710988,152,5000344,127,4145023,76,2500172,4129023,10452991,3342540,8349388,2490520,6245528,2031743,5193599,1245260,3089996,8323327,12550143,6684876,10053324,4980888,7490712,4128895,6242175,2490444,3745356,12517631,14647295,10027212,11691724,7471256,8735896,6226047,7290751,3735628,4335180,16711935,16744447,13369548,13395660,9961624,9981080,8323199,8339327,4980812,4990540,16711871,16744415,13369497,13395634,9961586,9981061,8323167,8339311,4980793,4990530,16711807,16744383,13369446,13395609,9961548,9981042,8323135,8339295,4980774,4990521,16711743,16744351,13369395,13395583,9961510,9981023,8323103,8339279,4980755,4990511,3355443,5987163,8684676,11382189,14079702,16777215];function xc(i){return wc[i]}function bc(i){i.rewind();let t=i.next();if(t.code!==101)throw Error("Bad call for skipEmbeddedObject()");do t=i.next();while(t.code!==0);i.rewind()}function fc(i,t,e){if(O(t,102))return zt(t,e,i),!0;switch(t.code){case 0:i.type=t.value;break;case 5:i.handle=t.value;break;case 330:i.ownerBlockRecordSoftId=t.value;break;case 67:i.isInPaperSpace=!!t.value;break;case 8:i.layer=t.value;break;case 6:i.lineType=t.value;break;case 347:i.materialObjectHardId=t.value;break;case 62:i.colorIndex=t.value,i.color=xc(Math.abs(t.value));break;case 370:i.lineweight=t.value;break;case 48:i.lineTypeScale=t.value;break;case 60:i.isVisible=!!t.value;break;case 92:i.proxyByte=t.value;break;case 310:i.proxyEntity=t.value;break;case 100:break;case 420:i.color=t.value;break;case 430:i.transparency=t.value;break;case 390:i.plotStyleHardId=t.value;break;case 284:i.shadowMode=t.value;break;case 1001:(i.xdata??(i.xdata=[])).push(Vo(t,e));break;default:return!1}return!0}function qo(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let Ic={textStyle:"STANDARD",extrusionDirection:{x:0,y:0,z:1},rotation:0},li=[{code:46,name:"annotationHeight",parser:h},{code:101,parser(i,t){bc(t)}},{code:50,name:"columnHeight",parser:h},{code:49,name:"columnGutter",parser:h},{code:48,name:"columnWidth",parser:h},{code:79,name:"columnAutoHeight",parser:h},{code:78,name:"columnFlowReversed",parser:h},{code:76,name:"columnCount",parser:h},{code:75,name:"columnType",parser:h},{code:441,name:"backgroundFillTransparency",parser:h},{code:63,name:"backgroundFillColor",parser:h},{code:45,name:"fillBoxScale",parser:h},{code:[...Vi(430,440)],name:"backgroundColor",parser:h},{code:[...Vi(420,430)],name:"backgroundColor",parser:h},{code:90,name:"backgroundFill",parser:h},{code:44,name:"lineSpacing",parser:h},{code:73,name:"lineSpacingStyle",parser:h},{code:50,name:"rotation",parser:h},{code:43},{code:42},{code:11,name:"direction",parser:_},{code:210,name:"extrusionDirection",parser:_},{code:7,name:"styleName",parser:h},...Xi("text"),{code:72,name:"drawingDirection",parser:h},{code:71,name:"attachmentPoint",parser:h},{code:41,name:"width",parser:h},{code:40,name:"height",parser:h},{code:10,name:"insertionPoint",parser:_},{code:100,name:"subclassMarker",parser:h},...z];class Zo{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){qo(this,"parser",P(li,Ic))}}function Ko(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}qo(Zo,"ForEntityName","MTEXT");let Pc={thickness:0,rotation:0,scale:1,obliqueAngle:0,textStyle:"STANDARD",textGenerationFlag:0,horizontalJustification:0,verticalJustification:0,extrusionDirection:{x:0,y:0,z:1}},Ec=[...li.slice(li.findIndex(({name:i})=>i==="columnType"),li.findIndex(({name:i})=>i==="subclassMarker")+1),{code:100},{code:0,parser(i){if(!O(i,0,"MTEXT"))return Hs}},{code:2,name:"definitionTag",parser:h},{code:40,name:"annotationScale",parser:h},{code:10,name:"alignmentPoint",parser:_},{code:340,name:"secondaryAttributesHardId",parser:h},{code:70,name:"numberOfSecondaryAttributes",parser:h},{code:70,name:"isReallyLocked",parser:N},{code:70,name:"mtextFlag",parser:h},{code:280,name:"isDuplicatedEntriesKeep",parser:N},{code:100},{code:280,name:"lockPositionFlag",parser:N},{code:210,name:"extrusionDirection",parser:_},{code:11,name:"alignmentPoint",parser:_},{code:74,name:"verticalJustification",parser:h},{code:72,name:"horizontalJustification",parser:h},{code:71,name:"textGenerationFlag",parser:h},{code:7,name:"textStyle",parser:h},{code:51,name:"obliqueAngle",parser:h},{code:41,name:"scale",parser:h},{code:50,name:"rotation",parser:h},{code:73},{code:70,name:"attributeFlag",parser:h},{code:2,name:"tag",parser:h},{code:280},{code:100,name:"subclassMarker",parser:h},{code:1,name:"text",parser:h},{code:40,name:"textHeight",parser:h},{code:10,name:"startPoint",parser:_},{code:39,name:"thickness",parser:h},{code:100},...z];class Qo{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Ko(this,"parser",P(Ec,Pc))}}function Jo(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Ko(Qo,"ForEntityName","ATTRIB");let Sc=[...Xi("data"),{code:70,name:"version",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class th{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Jo(this,"parser",P(Sc))}}function eh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Jo(th,"ForEntityName","BODY");let Ac={thickness:0,extrusionDirection:{x:0,y:0,z:1}},Mc=[{code:210,name:"extrusionDirection",parser:_},{code:40,name:"radius",parser:h},{code:10,name:"center",parser:_},{code:39,name:"thickness",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class sh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){eh(this,"parser",P(Mc,Ac))}}function ih(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}eh(sh,"ForEntityName","CIRCLE");let Tc={extrusionDirection:{x:0,y:0,z:1}},vc=[{code:42,name:"endAngle",parser:h},{code:41,name:"startAngle",parser:h},{code:40,name:"axisRatio",parser:h},{code:210,name:"extrusionDirection",parser:_},{code:11,name:"majorAxisEndPoint",parser:_},{code:10,name:"center",parser:_},{code:100,name:"subclassMarker",parser:h},...z];class nh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){ih(this,"parser",P(vc,Tc))}}function rh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}ih(nh,"ForEntityName","ELLIPSE");let kc=[{code:13,name:"vertices.3",parser:_},{code:12,name:"vertices.2",parser:_},{code:11,name:"vertices.1",parser:_},{code:10,name:"vertices.0",parser:_},{code:100,name:"subclassMarker",parser:h},...z];class ah{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){rh(this,"parser",P(kc))}}rh(ah,"ForEntityName","3DFACE");(Yt={})[Yt.First=1]="First",Yt[Yt.Second=2]="Second",Yt[Yt.Third=4]="Third",Yt[Yt.Fourth=8]="Fourth";let oh=[{code:330,name:"sourceBoundaryObjects",parser:h,isMultiple:!0},{code:97,name:"numberOfSourceBoundaryObjects",parser:h}],Lc=[{code:11,name:"end",parser:_},{code:10,name:"start",parser:_}],Nc=[{code:73,name:"isCCW",parser:N},{code:51,name:"endAngle",parser:h},{code:50,name:"startAngle",parser:h},{code:40,name:"radius",parser:h},{code:10,name:"center",parser:_}],Oc=[{code:73,name:"isCCW",parser:N},{code:51,name:"endAngle",parser:h},{code:50,name:"startAngle",parser:h},{code:40,name:"lengthOfMinorAxis",parser:h},{code:11,name:"end",parser:_},{code:10,name:"center",parser:_}],Cc=[{code:13,name:"endTangent",parser:_},{code:12,name:"startTangent",parser:_},{code:11,name:"fitDatum",isMultiple:!0,parser:_},{code:97,name:"numberOfFitData",parser:h},{code:10,name:"controlPoints",isMultiple:!0,parser(i,t){let e={...ge(t),weight:1};return(i=t.next()).code===42?e.weight=i.value:t.rewind(),e}},{code:40,name:"knots",isMultiple:!0,parser:h},{code:96,name:"numberOfControlPoints",parser:h},{code:95,name:"numberOfKnots",parser:h},{code:74,name:"isPeriodic",parser:N},{code:73,name:"splineFlag",parser:h},{code:94,name:"degree",parser:h}],Bc={[si.Line]:Lc,[si.Circular]:Nc,[si.Elliptic]:Oc,[si.Spline]:Cc},Fc=[...oh,{code:72,name:"edges",parser(i,t){let e={type:i.value},s=P(Bc[e.type]);if(!s)throw Error(`Invalid edge type ${e.type}`);return s(i=t.next(),t,e),e},isMultiple:!0},{code:93,name:"numberOfEdges",parser:h}],Rc=[...oh,{code:10,name:"vertices",parser(i,t){let e={...ge(t),bulge:0};return(i=t.next()).code===42?e.bulge=i.value:t.rewind(),e},isMultiple:!0},{code:93,name:"numberOfVertices",parser:h},{code:73,name:"isClosed",parser:N},{code:72,name:"hasBulge",parser:N}];function zc(i,t){let e={boundaryPathTypeFlag:i.value},s=e.boundaryPathTypeFlag&ql.Polyline;return i=t.next(),s?P(Rc)(i,t,e):P(Fc)(i,t,e),e}let Vc=[{code:49,name:"dashLengths",parser:h,isMultiple:!0},{code:79,name:"numberOfDashLengths",parser:h},{code:45,name:"offset",parser:Kr},{code:43,name:"base",parser:Kr},{code:53,name:"angle",parser:h}];function Kr(i,t){let e=i.code+1,s={x:i.value,y:1};return(i=t.next()).code===e?s.y=i.value:t.rewind(),s}function Dc(i,t){let e={};return P(Vc)(i,t,e),e}function hh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let jc={extrusionDirection:{x:0,y:0,z:1},gradientRotation:0,colorTint:0},Wc=[{code:470},{code:463},{code:462,name:"colorTint",parser:h},{code:461,name:"gradientDefinition",parser:h},{code:460,name:"gradientRotation",parser:h},{code:453,name:"numberOfColors",parser:h},{code:452,name:"gradientColorFlag",parser:h},{code:451},{code:450,name:"gradientFlag",parser:h},{code:10,name:"seedPoints",parser:_,isMultiple:!0},{code:99},{code:11,name:"offsetVector",parser:_},{code:98,name:"numberOfSeedPoints",parser:h},{code:47,name:"pixelSize",parser:h},{code:53,name:"definitionLines",parser:Dc,isMultiple:!0},{code:78,name:"numberOfDefinitionLines",parser:h},{code:77,name:"isDouble",parser:N},{code:73,name:"isAnnotated",parser:N},{code:41,name:"patternScale",parser:h},{code:52,name:"patternAngle",parser:h},{code:76,name:"patternType",parser:h},{code:75,name:"hatchStyle",parser:h},{code:92,name:"boundaryPaths",parser:zc,isMultiple:!0},{code:91,name:"numberOfBoundaryPaths",parser:h},{code:71,name:"associativity",parser:h},{code:63,name:"patternFillColor",parser:h},{code:70,name:"solidFill",parser:h},{code:2,name:"patternName",parser:h},{code:210,name:"extrusionDirection",parser:_},{code:10,name:"elevationPoint",parser:_},{code:100,name:"subclassMarker",parser:h,pushContext:!0},...z];class lh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){hh(this,"parser",P(Wc,jc))}}function ch(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}hh(lh,"ForEntityName","HATCH");let Gc={brightness:50,contrast:50,fade:0,clippingBoundaryPath:[]},Hc=[{code:290,name:"clipMode",parser:h},{code:14,name:"clippingBoundaryPath",isMultiple:!0,parser:_},{code:91,name:"countBoundaryPoints",parser:h},{code:71,name:"clippingBoundaryType",parser:h},{code:360,name:"imageDefReactorHandle",parser:h},{code:283,name:"fade",parser:h},{code:282,name:"contrast",parser:h},{code:281,name:"brightness",parser:h},{code:280,name:"isClipped",parser:N},{code:70,name:"flags",parser:h},{code:340,name:"imageDefHandle",parser:h},{code:13,name:"imageSize",parser:_},{code:12,name:"vPixel",parser:_},{code:11,name:"uPixel",parser:_},{code:10,name:"position",parser:_},{code:90,name:"version",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class dh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){ch(this,"parser",P(Hc,Gc))}}ch(dh,"ForEntityName","IMAGE");($t={})[$t.ShowImage=1]="ShowImage",$t[$t.ShowImageWhenNotAlignedWithScreen=2]="ShowImageWhenNotAlignedWithScreen",$t[$t.UseClippingBoundary=4]="UseClippingBoundary",$t[$t.TransparencyIsOn=8]="TransparencyIsOn";(ps={})[ps.Rectangular=1]="Rectangular",ps[ps.Polygonal=2]="Polygonal";(gs={})[gs.Outside=0]="Outside",gs[gs.Inside=1]="Inside";function uh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let Uc={xScale:1,yScale:1,zScale:1,rotation:0,columnCount:0,rowCount:0,columnSpacing:0,rowSpacing:0,extrusionDirection:{x:0,y:0,z:1}},Xc=[{code:210,name:"extrusionDirection",parser:_},{code:45,name:"rowSpacing",parser:h},{code:44,name:"columnSpacing",parser:h},{code:71,name:"rowCount",parser:h},{code:70,name:"columnCount",parser:h},{code:50,name:"rotation",parser:h},{code:43,name:"zScale",parser:h},{code:42,name:"yScale",parser:h},{code:41,name:"xScale",parser:h},{code:10,name:"insertionPoint",parser:_},{code:2,name:"name",parser:h},{code:66,name:"isVariableAttributes",parser:N},{code:100,name:"subclassMarker",parser:h},...z];class ph{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){uh(this,"parser",P(Xc,Uc))}}function gh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}uh(ph,"ForEntityName","INSERT");let Yc={isArrowheadEnabled:!0},$c=[{code:213,name:"offsetFromAnnotation",parser:_},{code:212,name:"offsetFromBlock",parser:_},{code:211,name:"horizontalDirection",parser:_},{code:210,name:"normal",parser:_},{code:340,name:"associatedAnnotation",parser:h},{code:77,name:"byBlockColor",parser:h},{code:10,name:"vertices",parser:_,isMultiple:!0},{code:76,name:"numberOfVertices",parser:h},{code:41,name:"textWidth",parser:h},{code:40,name:"textHeight",parser:h},{code:75,name:"isHooklineExists",parser:N},{code:74,name:"isHooklineSameDirection",parser:N},{code:73,name:"leaderCreationFlag",parser:h},{code:72,name:"isSpline",parser:N},{code:71,name:"isArrowheadEnabled",parser:N},{code:3,name:"styleName",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class mh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){gh(this,"parser",P($c,Yc))}}gh(mh,"ForEntityName","LEADER");(qt={})[qt.TextAnnotation=0]="TextAnnotation",qt[qt.ToleranceAnnotation=1]="ToleranceAnnotation",qt[qt.BlockReferenceAnnotation=2]="BlockReferenceAnnotation",qt[qt.NoAnnotation=3]="NoAnnotation";function yh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let qc={thickness:0,extrusionDirection:{x:0,y:0,z:1}},Zc=[{code:210,name:"extrusionDirection",parser:_},{code:11,name:"endPoint",parser:_},{code:10,name:"startPoint",parser:_},{code:39,name:"thickness",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class _h{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){yh(this,"parser",P(Zc,qc))}}function wh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}yh(_h,"ForEntityName","LINE");let Kc=[{code:280,name:"shadowMapSoftness",parser:h},{code:91,name:"shadowMapSize",parser:h},{code:73,name:"shadowType",parser:h},{code:293,name:"isShadowCast",parser:N},{code:51,name:"falloffAngle",parser:h},{code:50,name:"hotspotAngle",parser:h},{code:42,name:"limitEnd",parser:h},{code:41,name:"limitStart",parser:h},{code:292,name:"isAttenuationLimited",parser:N},{code:72,name:"attenuationType",parser:h},{code:11,name:"target",parser:_},{code:10,name:"position",parser:_},{code:40,name:"intensity",parser:h},{code:291,name:"isPlotGlyph",parser:N},{code:290,name:"isOn",parser:N},{code:421,name:"lightColorInstance",parser:h},{code:63,name:"lightColorIndex",parser:h},{code:70,name:"lightType",parser:h},{code:1,name:"name",parser:h},{code:90,name:"version",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class xh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){wh(this,"parser",P(Kc))}}wh(xh,"ForEntityName","LIGHT");(ve={})[ve.Distant=1]="Distant",ve[ve.Point=2]="Point",ve[ve.Spot=3]="Spot";(ke={})[ke.None=0]="None",ke[ke.InverseLinear=1]="InverseLinear",ke[ke.InverseSquare=2]="InverseSquare";let Qc={flag:0,elevation:0,thickness:0,extrusionDirection:{x:0,y:0,z:1},vertices:[]},Jc={bulge:0},td=[{code:42,name:"bulge",parser:h},{code:41,name:"endWidth",parser:h},{code:40,name:"startWidth",parser:h},{code:91,name:"id",parser:h},{code:20,name:"y",parser:h},{code:10,name:"x",parser:h}],ed=[{code:210,name:"extrusionDirection",parser:_},{code:10,name:"vertices",isMultiple:!0,parser(i,t){let e={};return P(td,Jc)(i,t,e),e}},{code:39,name:"thickness",parser:h},{code:38,name:"elevation",parser:h},{code:43,name:"constantWidth",parser:h},{code:70,name:"flag",parser:h},{code:90,name:"numberOfVertices",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class ci{parseEntity(t,e){let s={};return P(ed,Qc)(e,t,s),s}}(en="ForEntityName")in ci?Object.defineProperty(ci,en,{value:"LWPOLYLINE",enumerable:!0,configurable:!0,writable:!0}):ci[en]="LWPOLYLINE";(ms={})[ms.IS_CLOSED=1]="IS_CLOSED",ms[ms.PLINE_GEN=128]="PLINE_GEN";function bh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let sd=[{code:90,name:"overridenSubEntityCount",parser:h},{code:140,name:"edgeCreaseWeights",parser:h,isMultiple:!0},{code:95,name:"edgeCreaseCount",parser:h},{code:94,parser(i,t,e){e.edgeCount=i.value,e.edgeIndices=[];for(let s=0;s<e.edgeCount;++s){let n=[];i=t.next(),n[0]=i.value,i=t.next(),n[1]=i.value,e.edgeIndices.push(n)}}},{code:93,parser(i,t,e){e.totalFaceIndices=i.value,e.faceIndices=[];let s=[];for(let r=0;r<e.totalFaceIndices&&!O(i,0);++r)i=t.next(),s.push(i.value);let n=0;for(;n<s.length;){let r=s[n++],a=[];for(let o=0;o<r;++o)a.push(s[n++]);e.faceIndices.push(a)}}},{code:10,name:"vertices",parser:_,isMultiple:!0},{code:92,name:"verticesCount",parser:h},{code:91,name:"subdivisionLevel",parser:h},{code:40,name:"blendCrease",parser:h},{code:72,name:"isBlendCreased",parser:N},{code:71,name:"version",parser:h},{code:100,name:"subclassMarker",parser:Ql,pushContext:!0},...z];class fh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){bh(this,"parser",P(sd))}}function Ih(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}bh(fh,"ForEntityName","MESH");let id=[{code:42,name:"fillParameters",parser:h,isMultiple:!0},{code:75,name:"fillCount",parser:h},{code:41,name:"parameters",parser:h,isMultiple:!0},{code:74,name:"parameterCount",parser:h}],nd=[{code:[74,41,75,42],name:"elements",parser(i,t){let e=P(id),s={};return e(i,t,s),s},isMultiple:!0},{code:13,name:"miterDirection",parser:_},{code:12,name:"direction",parser:_},{code:11,name:"position",parser:_}],rd=[{code:[11,12,13],name:"segments",parser(i,t){let e=P(nd),s={};return e(i,t,s),s},isMultiple:!0},{code:210,name:"extrusionDirection",parser:_},{code:10,name:"startPosition",parser:_},{code:73,name:"styleCount",parser:h},{code:72,name:"vertexCount",parser:h},{code:71,name:"flags",parser:h},{code:70,name:"justification",parser:h},{code:40,name:"scale",parser:h},{code:340,name:"styleObjectHandle",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h,pushContext:!0},...z];class Ph{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Ih(this,"parser",P(rd))}}Ih(Ph,"ForEntityName","MLINE");(Le={})[Le.Top=0]="Top",Le[Le.Zero=1]="Zero",Le[Le.Bottom=2]="Bottom";(Zt={})[Zt.HasVertex=1]="HasVertex",Zt[Zt.Closed=2]="Closed",Zt[Zt.SuppressStartCaps=4]="SuppressStartCaps",Zt[Zt.SuppressEndCaps=8]="SuppressEndCaps";(Ne={})[Ne.LEFT_TO_RIGHT=1]="LEFT_TO_RIGHT",Ne[Ne.TOP_TO_BOTTOM=3]="TOP_TO_BOTTOM",Ne[Ne.BY_STYLE=5]="BY_STYLE";function Eh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let ad={},od=[{code:170,name:"multileaderType",parser:h},{code:291,name:"doglegEnabled",parser:N},{code:40,name:"doglegLength",parser:h},{code:172,name:"contentType",parser:h},{code:3,name:"textContent",parser:h},{code:12,name:"textAnchor",parser:_},{code:344,name:"blockHandle",parser:h},{code:15,name:"blockPosition",parser:_},{code:302,name:"leaderSections",parser:function(i,t,e){let s,n={leaderLines:[]};for(;t.hasNext()&&(s=t.next()).code!==303;)switch(s.code){case 10:n.landingPoint=_(s.value,t);break;case 11:n.doglegVector=_(s.value,t);break;case 40:n.doglegLength=s.value;break;case 304:n.leaderLines.push(function(r){let a,o={vertices:[]};for(;r.hasNext()&&(a=r.next()).code!==305;)a.code===10&&o.vertices.push(_(a.value,r));return o}(t))}return n},isMultiple:!0},...z];class Sh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Eh(this,"parser",P(od,ad))}}function Ah(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Eh(Sh,"ForEntityName","MULTILEADER");let hd={thickness:0,extrusionDirection:{x:0,y:0,z:1},angle:0},ld=[{code:50,name:"angle",parser:h},{code:210,name:"extrusionDirection",parser:_},{code:39,name:"thickness",parser:h},{code:10,name:"position",parser:_},{code:100,name:"subclassMarker",parser:h},...z];class Mh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Ah(this,"parser",P(ld,hd))}}function Th(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Ah(Mh,"ForEntityName","POINT");let cd={startWidth:0,endWidth:0,bulge:0},dd=[{code:91,name:"id",parser:h},{code:[...Vi(71,75)],name:"faces",isMultiple:!0,parser:h},{code:50,name:"tangentDirection",parser:h},{code:70,name:"flag",parser:h},{code:42,name:"bulge",parser:h},{code:41,name:"endWidth",parser:h},{code:40,name:"startWidth",parser:h},{code:30,name:"z",parser:h},{code:20,name:"y",parser:h},{code:10,name:"x",parser:h},{code:100,name:"subclassMarker",parser:h},{code:100},...z];class qn{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Th(this,"parser",P(dd,cd))}}function vh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Th(qn,"ForEntityName","VERTEX");let ud={thickness:0,flag:0,startWidth:0,endWidth:0,meshMVertexCount:0,meshNVertexCount:0,surfaceMDensity:0,surfaceNDensity:0,smoothType:0,extrusionDirection:{x:0,y:0,z:1},vertices:[]},pd=[{code:0,name:"vertices",isMultiple:!0,parser:(i,t)=>O(i,0,"VERTEX")?(i=t.next(),new qn().parseEntity(t,i)):Hs},{code:210,name:"extrusionDirection",parser:_},{code:75,name:"smoothType",parser:h},{code:74,name:"surfaceNDensity",parser:h},{code:73,name:"surfaceMDensity",parser:h},{code:72,name:"meshNVertexCount",parser:h},{code:71,name:"meshMVertexCount",parser:h},{code:41,name:"endWidth",parser:h},{code:40,name:"startWidth",parser:h},{code:70,name:"flag",parser:h},{code:39,name:"thickness",parser:h},{code:30,name:"elevation",parser:h},{code:20},{code:10},{code:66},{code:100,name:"subclassMarker",parser:h},...z];class kh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){vh(this,"parser",P(pd,ud))}}vh(kh,"ForEntityName","POLYLINE");(it={})[it.CLOSED_POLYLINE=1]="CLOSED_POLYLINE",it[it.CURVE_FIT=2]="CURVE_FIT",it[it.SPLINE_FIT=4]="SPLINE_FIT",it[it.POLYLINE_3D=8]="POLYLINE_3D",it[it.POLYGON_3D=16]="POLYGON_3D",it[it.CLOSED_POLYGON=32]="CLOSED_POLYGON",it[it.POLYFACE=64]="POLYFACE",it[it.CONTINUOUS=128]="CONTINUOUS";var ii=((Kt={})[Kt.NONE=0]="NONE",Kt[Kt.QUADRATIC=5]="QUADRATIC",Kt[Kt.CUBIC=6]="CUBIC",Kt[Kt.BEZIER=8]="BEZIER",Kt);function Lh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let gd=[{code:11,name:"direction",parser:_},{code:10,name:"position",parser:_},{code:100,name:"subclassMarker",parser:h},...z];class Nh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Lh(this,"parser",P(gd))}}function Oh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Lh(Nh,"ForEntityName","RAY");let md=[...Xi("data"),{code:70,name:"version",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class Ch{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Oh(this,"parser",P(md))}}function Bh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Oh(Ch,"ForEntityName","REGION");let yd={vertices:[],backLineVertices:[]},_d=[{code:360,name:"geometrySettingHardId",parser:h},{code:12,name:"backLineVertices",isMultiple:!0,parser:_},{code:93,name:"numberOfBackLineVertices",parser:h},{code:11,name:"vertices",isMultiple:!0,parser:_},{code:92,name:"verticesCount",parser:h},{code:[63,411],name:"indicatorColor",parser:h},{code:70,name:"indicatorTransparency",parser:h},{code:41,name:"bottomHeight",parser:h},{code:40,name:"topHeight",parser:h},{code:10,name:"verticalDirection",parser:_},{code:1,name:"name",parser:h},{code:91,name:"flag",parser:h},{code:90,name:"state",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class Fh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Bh(this,"parser",P(_d,yd))}}function Rh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Bh(Fh,"ForEntityName","SECTION");let wd={points:[],thickness:0,extrusionDirection:{x:0,y:0,z:1}},xd=[{code:210,name:"extrusionDirection",parser:_},{code:39,name:"thickness",parser:h},{code:[...Vi(10,14)],name:"points",isMultiple:!0,parser:_},{code:100,name:"subclassMarker",parser:h},...z];class zh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Rh(this,"parser",P(xd,wd))}}function Vh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Rh(zh,"ForEntityName","SOLID");let bd=[{code:350,name:"historyObjectSoftId",parser:h},{code:100,name:"subclassMarker",parser:h},...Xi("data"),{code:70,name:"version",parser:h},{code:100},...z];class Dh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Vh(this,"parser",P(bd))}}function jh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Vh(Dh,"ForEntityName","3DSOLID");let fd={knotTolerance:1e-6,controlTolerance:1e-6,fitTolerance:1e-9,knotValues:[],controlPoints:[],fitPoints:[]},Id=[{code:11,name:"fitPoints",isMultiple:!0,parser:_},{code:10,name:"controlPoints",isMultiple:!0,parser:_},{code:41,name:"weights",isMultiple:!0,parser:h},{code:40,name:"knots",isMultiple:!0,parser:h},{code:13,name:"endTangent",parser:_},{code:12,name:"startTangent",parser:_},{code:44,name:"fitTolerance",parser:h},{code:43,name:"controlTolerance",parser:h},{code:42,name:"knotTolerance",parser:h},{code:74,name:"numberOfFitPoints",parser:h},{code:73,name:"numberOfControlPoints",parser:h},{code:72,name:"numberOfKnots",parser:h},{code:71,name:"degree",parser:h},{code:70,name:"flag",parser:h},{code:210,name:"normal",parser:_},{code:100,name:"subclassMarker",parser:h},...z];class Wh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){jh(this,"parser",P(Id,fd))}}jh(Wh,"ForEntityName","SPLINE");(ft={})[ft.NONE=0]="NONE",ft[ft.CLOSED=1]="CLOSED",ft[ft.PERIODIC=2]="PERIODIC",ft[ft.RATIONAL=4]="RATIONAL",ft[ft.PLANAR=8]="PLANAR",ft[ft.LINEAR=16]="LINEAR";function Gh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let Pd=[{code:280,name:"shadowMapSoftness",parser:h},{code:71,name:"shadowMapSize",parser:h},{code:70,name:"shadowType",parser:h},{code:292,name:"isSummerTime",parser:N},{code:92,name:"time",parser:h},{code:91,name:"julianDay",parser:h},{code:291,name:"hasShadow",parser:N},{code:40,name:"intensity",parser:h},{code:421,name:"lightColorInstance",parser:h},{code:63,name:"lightColorIndex",parser:h},{code:290,name:"isOn",parser:N},{code:90,name:"version",parser:h},{code:100,name:"subclassMarker",parser:h,pushContext:!0},...z.filter(i=>i.code!==100)];class Hh{parseEntity(t,e){let s={layer:""};return this.parser(e,t,s),s}constructor(){Gh(this,"parser",P(Pd))}}Gh(Hh,"ForEntityName","SUN");class di{parseEntity(t,e){let s={};for(;!t.isEOF();){if(e.code===0){t.rewind();break}switch(e.code){case 100:s.subclassMarker=e.value,e=t.next();break;case 2:s.name=e.value,e=t.next();break;case 5:s.handle=e.value,e=t.next();break;case 10:s.startPoint=Zr(ge(t)),e=t.lastReadGroup;break;case 11:s.directionVector=Zr(ge(t)),e=t.lastReadGroup;break;case 90:s.tableValue=e.value,e=t.next();break;case 91:s.rowCount=e.value,e=t.next();break;case 92:s.columnCount=e.value,e=t.next();break;case 93:s.overrideFlag=e.value,e=t.next();break;case 94:s.borderColorOverrideFlag=e.value,e=t.next();break;case 95:s.borderLineWeightOverrideFlag=e.value,e=t.next();break;case 96:s.borderVisibilityOverrideFlag=e.value,e=t.next();break;case 141:s.rowHeightArr??(s.rowHeightArr=[]),s.rowHeightArr.push(e.value),e=t.next();break;case 142:s.columnWidthArr??(s.columnWidthArr=[]),s.columnWidthArr.push(e.value),e=t.next();break;case 280:s.version=e.value,e=t.next();break;case 310:s.bmpPreview??(s.bmpPreview=""),s.bmpPreview+=e.value,e=t.next();break;case 330:s.ownerDictionaryId=e.value,e=t.next();break;case 342:s.tableStyleId=e.value,e=t.next();break;case 343:s.blockRecordHandle=e.value,e=t.next();break;case 170:s.attachmentPoint=e.value,e=t.next();break;case 171:s.cells??(s.cells=[]),s.cells.push(function(n,r){let a=!1,o=!1,l={};for(;!n.isEOF()&&r.code!==0&&!o;)switch(r.code){case 171:if(a){o=!0;continue}l.cellType=r.value,a=!0,r=n.next();break;case 172:l.flagValue=r.value,r=n.next();break;case 173:l.mergedValue=r.value,r=n.next();break;case 174:l.autoFit=r.value,r=n.next();break;case 175:l.borderWidth=r.value,r=n.next();break;case 176:l.borderHeight=r.value,r=n.next();break;case 91:l.overrideFlag=r.value,r=n.next();break;case 178:l.virtualEdgeFlag=r.value,r=n.next();break;case 145:l.rotation=r.value,r=n.next();break;case 345:l.fieldObjetId=r.value,r=n.next();break;case 340:l.blockTableRecordId=r.value,r=n.next();break;case 146:l.blockScale=r.value,r=n.next();break;case 177:l.blockAttrNum=r.value,r=n.next();break;case 7:l.textStyle=r.value,r=n.next();break;case 140:l.textHeight=r.value,r=n.next();break;case 170:l.attachmentPoint=r.value,r=n.next();break;case 92:l.extendedCellFlags=r.value,r=n.next();break;case 285:l.rightBorderVisibility=!!(r.value??!0),r=n.next();break;case 286:l.bottomBorderVisibility=!!(r.value??!0),r=n.next();break;case 288:l.leftBorderVisibility=!!(r.value??!0),r=n.next();break;case 289:l.topBorderVisibility=!!(r.value??!0),r=n.next();break;case 301:(function(c,d,u){for(;u.code!==304;)switch(u.code){case 301:case 93:case 90:case 94:u=d.next();break;case 1:c.text=u.value,u=d.next();break;case 300:c.attrText=u.value,u=d.next();break;case 302:c.text=u.value?u.value:c.text,u=d.next();break;default:u=d.next()}})(l,n,r),r=n.next();break;default:return l}return a=!1,o=!1,l}(t,e)),e=t.lastReadGroup;break;default:fc(s,e,t),e=t.next()}}return s}}function Uh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}(sn="ForEntityName")in di?Object.defineProperty(di,sn,{value:"ACAD_TABLE",enumerable:!0,configurable:!0,writable:!0}):di[sn]="ACAD_TABLE";let Ed=[{code:11,name:"xAxisDirection",parser:_},{code:210,name:"extrusionDirection",parser:_},{code:1,name:"text",parser:h},{code:10,name:"position",parser:_},{code:3,name:"styleName",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class Xh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Uh(this,"parser",P(Ed))}}Uh(Xh,"ForEntityName","TOLERANCE");var Sd=((nt={})[nt.CREATED_BY_CURVE_FIT=1]="CREATED_BY_CURVE_FIT",nt[nt.TANGENT_DEFINED=2]="TANGENT_DEFINED",nt[nt.NOT_USED=4]="NOT_USED",nt[nt.CREATED_BY_SPLINE_FIT=8]="CREATED_BY_SPLINE_FIT",nt[nt.SPLINE_CONTROL_POINT=16]="SPLINE_CONTROL_POINT",nt[nt.FOR_POLYLINE=32]="FOR_POLYLINE",nt[nt.FOR_POLYGON=64]="FOR_POLYGON",nt[nt.POLYFACE=128]="POLYFACE",nt);let Ad=[{code:[335,343,344,91],name:"softPointers",isMultiple:!0,parser:h},{code:361,name:"sunId",parser:h},{code:431,name:"ambientLightColorName",parser:h},{code:421,name:"ambientLightColorInstance",parser:h},{code:63,name:"ambientLightColorIndex",parser:h},{code:142,name:"contrast",parser:h},{code:141,name:"brightness",parser:h},{code:282,name:"defaultLightingType",parser:h},{code:292,name:"isDefaultLighting",parser:N},{code:348,name:"visualStyleId",parser:h},{code:333,name:"shadePlotId",parser:h},{code:332,name:"backgroundId",parser:h},{code:61,name:"majorGridFrequency",parser:h},{code:170,name:"shadePlotMode",parser:h},{code:146,name:"elevation",parser:h},{code:79,name:"orthographicType",parser:h},{code:346,name:"ucsBaseId",parser:h},{code:345,name:"ucsId",parser:h},{code:112,name:"ucsYAxis",parser:_},{code:111,name:"ucsXAxis",parser:_},{code:110,name:"ucsOrigin",parser:_},{code:74,name:"iconFlag",parser:h},{code:71,name:"ucsPerViewport",parser:h},{code:281,name:"renderMode",parser:h},{code:1,name:"sheetName",parser:h},{code:340,name:"clippingBoundaryId",parser:h},{code:90,name:"statusBitFlags",parser:h},{code:331,name:"frozenLayerIds",isMultiple:!0,parser:h},{code:72,name:"circleZoomPercent",parser:h},{code:51,name:"viewTwistAngle",parser:h},{code:50,name:"snapAngle",parser:h},{code:45,name:"viewHeight",parser:h},{code:44,name:"backClipZ",parser:h},{code:43,name:"frontClipZ",parser:h},{code:42,name:"perspectiveLensLength",parser:h},{code:17,name:"targetPoint",parser:_},{code:16,name:"viewDirection",parser:_},{code:15,name:"gridSpacing",parser:_},{code:14,name:"snapSpacing",parser:_},{code:13,name:"snapBase",parser:_},{code:12,name:"displayCenter",parser:_},{code:69,name:"viewportId",parser:h},{code:68,name:"status",parser:h},{code:41,name:"height",parser:h},{code:40,name:"width",parser:h},{code:10,name:"viewportCenter",parser:_},{code:100,name:"subclassMarker",parser:h,pushContext:!0},...z];class ui{parseEntity(t,e){let s={};return P(Ad)(e,t,s),s}}function Yh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}(nn="ForEntityName")in ui?Object.defineProperty(ui,nn,{value:"VIEWPORT",enumerable:!0,configurable:!0,writable:!0}):ui[nn]="VIEWPORT";let Md={brightness:50,constrast:50,fade:0},Td=[{code:14,name:"boundary",isMultiple:!0,parser:_},{code:91,name:"numberOfVertices",parser:h},{code:71,name:"boundaryType",parser:h},{code:360,name:"imageDefReactorHardId",parser:h},{code:283,name:"fade",parser:h},{code:282,name:"contrast",parser:h},{code:281,name:"brightness",parser:h},{code:280,name:"isClipping",parser:N},{code:70,name:"displayFlag",parser:h},{code:340,name:"imageDefHardId",parser:h},{code:13,name:"imageSize",parser:_},{code:12,name:"vDirection",parser:_},{code:11,name:"uDirection",parser:_},{code:10,name:"position",parser:_},{code:90,name:"classVersion",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class $h{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Yh(this,"parser",P(Td,Md))}}Yh($h,"ForEntityName","WIPEOUT");(Qt={})[Qt.ShowImage=1]="ShowImage",Qt[Qt.ShowImageWhenNotAligned=2]="ShowImageWhenNotAligned",Qt[Qt.UseClippingBoundary=4]="UseClippingBoundary",Qt[Qt.Transparency=8]="Transparency";function qh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let vd=[{code:11,name:"direction",parser:_},{code:10,name:"position",parser:_},{code:100,name:"subclassMarker",parser:h},...z];class Zh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){qh(this,"parser",P(vd))}}qh(Zh,"ForEntityName","XLINE");let kd=0;function Kh(i){if(!i)throw TypeError("entity cannot be undefined or null");i.handle||(i.handle=kd++)}let Ld=Object.fromEntries([jo,hi,$o,Qo,th,sh,oi,nh,ah,dh,ph,mh,_h,xh,ci,fh,Ph,Zo,Sh,Mh,kh,Nh,Ch,Fh,zh,Dh,Wh,Hh,di,Xo,Xh,lh,qn,ui,$h,Zh].map(i=>[i.ForEntityName,new i]));function Qh(i,t){let e=[];for(;!O(i,0,"EOF");){if(i.code===0){if(i.value==="ENDBLK"||i.value==="ENDSEC"){t.rewind();break}let s=Ld[i.value];if(s){let n=i.value;i=t.next();let r=s.parseEntity(t,i);r.type=n,Kh(r),e.push(r)}else t.debug}i=t.next()}return e}function _s(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}class Qr{next(){if(!this.hasNext())return this._eof?this.debug:this.debug,{code:0,value:"EOF"};let t=parseInt(this._data[this._pointer++],10),e=Jr(t,this._data[this._pointer++],this.debug),s={code:t,value:e};return O(s,0,"EOF")&&(this._eof=!0),this.lastReadGroup=s,s}peek(){if(!this.hasNext())throw this._eof?Error("Cannot call 'next' after EOF group has been read"):Error("Unexpected end of input: EOF group not read before end of file. Ended on code "+this._data[this._pointer]);let t={code:parseInt(this._data[this._pointer]),value:0};return t.value=Jr(t.code,this._data[this._pointer+1],this.debug),t}rewind(t){t=t||1,this._pointer=this._pointer-2*t}hasNext(){return!this._eof&&!(this._pointer>this._data.length-2)}isEOF(){return this._eof}constructor(t,e=!1){_s(this,"_data",void 0),_s(this,"debug",void 0),_s(this,"_pointer",void 0),_s(this,"_eof",void 0),_s(this,"lastReadGroup",void 0),this._data=t,this.debug=e,this.lastReadGroup={code:0,value:0},this._pointer=0,this._eof=!1}}function Jr(i,t,e=!1){return i<=9?t:i>=10&&i<=59?parseFloat(t.trim()):i>=60&&i<=99?parseInt(t.trim()):i>=100&&i<=109?t:i>=110&&i<=149?parseFloat(t.trim()):i>=160&&i<=179?parseInt(t.trim()):i>=210&&i<=239?parseFloat(t.trim()):i>=270&&i<=289?parseInt(t.trim()):i>=290&&i<=299?function(s){if(s==="0")return!1;if(s==="1")return!0;throw TypeError("String '"+s+"' cannot be cast to Boolean type")}(t.trim()):i>=300&&i<=369?t:i>=370&&i<=389?parseInt(t.trim()):i>=390&&i<=399?t:i>=400&&i<=409?parseInt(t.trim()):i>=410&&i<=419?t:i>=420&&i<=429?parseInt(t.trim()):i>=430&&i<=439?t:i>=440&&i<=459?parseInt(t.trim()):i>=460&&i<=469?parseFloat(t.trim()):i>=470&&i<=481||i===999||i>=1e3&&i<=1009?t:i>=1010&&i<=1059?parseFloat(t.trim()):i>=1060&&i<=1071?parseInt(t.trim()):t}function Nd(i,t){let e=null,s={};for(;!O(i,0,"EOF")&&!O(i,0,"ENDSEC");)i.code===9?e=i.value:i.code===10?s[e]=ge(t):s[e]=i.value,i=t.next();return s}let oe=[{code:100,name:"subclassMarker",parser:h},{code:330,name:"ownerObjectId",parser:h},{code:102,isMultiple:!0,parser(i,t){for(;!O(i,0,"EOF")&&!O(i,102,"}");)i=t.next()}},{code:5,name:"handle",parser:h}],Od=[{code:70,name:"flag",parser:h},{code:2,name:"appName",parser:h},{code:100,name:"subclassMarker",parser:h},...oe],Cd=P(Od),Bd=P([{code:310,name:"bmpPreview",parser:h},{code:281,name:"scalability",parser:h},{code:280,name:"explodability",parser:h},{code:70,name:"insertionUnits",parser:h},{code:340,name:"layoutObjects",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h},...oe]),Fd=P([...$n.map(i=>({...i,parser:h})),{code:70,name:"standardFlag",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h},{code:105,name:"handle",parser:h},...oe.filter(i=>i.code!==5)]),Rd=P([{code:347,name:"materialObjectId",parser:h},{code:390,name:"plotStyleNameObjectId",parser:h},{code:370,name:"lineweight",parser:h},{code:290,name:"isPlotting",parser:N},{code:6,name:"lineType",parser:h},{code:62,name:"colorIndex",parser:h},{code:70,name:"standardFlag",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h},...oe]),zd=P([{code:9,name:"text",parser:h},{code:45,name:"offsetY",parser:h},{code:44,name:"offsetX",parser:h},{code:50,name:"rotation",parser:h},{code:46,name:"scale",parser:h},{code:340,name:"styleObjectId",parser:h},{code:75,name:"shapeNumber",parser:h},{code:74,name:"elementTypeFlag",parser:h},{code:49,name:"elementLength",parser:h}],{elementTypeFlag:0,elementLength:0}),Vd=P([{code:49,name:"pattern",parser(i,t){let e={};return zd(i,t,e),e},isMultiple:!0},{code:40,name:"totalPatternLength",parser:h},{code:73,name:"numberOfLineTypes",parser:h},{code:72,parser:h},{code:3,name:"description",parser:h},{code:70,name:"standardFlag",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h},...oe]),Dd=P([{code:1e3,name:"extendedFont",parser:h},{code:1001},{code:4,name:"bigFont",parser:h},{code:3,name:"font",parser:h},{code:42,name:"lastHeight",parser:h},{code:71,name:"textGenerationFlag",parser:h},{code:50,name:"obliqueAngle",parser:h},{code:41,name:"widthFactor",parser:h},{code:40,name:"fixedTextHeight",parser:h},{code:70,name:"standardFlag",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h},...oe]),jd=[{code:13,name:"orthographicOrigin",parser:_},{code:71,name:"orthographicType",parser:h},{code:346,name:"baseUcsHandle",parser:h},{code:146,name:"elevation",parser:h},{code:79,name:"isOrthographic",parser:N},{code:12,name:"yAxis",parser:_},{code:11,name:"xAxis",parser:_},{code:10,name:"origin",parser:_},{code:70,name:"flag",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h},...oe],Wd=P(jd),Gd=[{code:346,name:"baseUcsId",parser:h},{code:345,name:"ucsId",parser:h},{code:146,name:"elevation",parser:h},{code:79,name:"orthographicType",parser:h},{code:112,name:"ucsYAxis",parser:_},{code:111,name:"ucsXAxis",parser:_},{code:110,name:"ucsOrigin",parser:_},{code:361,name:"sunHardId",parser:h},{code:348,name:"styleHardId",parser:h},{code:334,name:"liveSectionSoftId",parser:h},{code:332,name:"backgroundSoftId",parser:h},{code:73,name:"isPlottable",parser:N},{code:72,name:"isUcsAssociated",parser:N},{code:281,name:"renderMode",parser:h},{code:71,name:"viewMode",parser:h},{code:50,name:"twistAngle",parser:h},{code:44,name:"backClippingPlane",parser:h},{code:43,name:"frontClippingPlane",parser:h},{code:42,name:"lensLength",parser:h},{code:12,name:"target",parser:_},{code:11,name:"direction",parser:_},{code:10,name:"center",parser:_},{code:41,name:"width",parser:h},{code:40,name:"height",parser:h},{code:70,name:"flag",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h},...oe],Hd=P(Gd),Ud=P([{code:[63,421,431],name:"ambientColor",parser:h},{code:142,name:"contrast",parser:h},{code:141,name:"brightness",parser:h},{code:282,name:"defaultLightingType",parser:h},{code:292,name:"isDefaultLightingOn",parser:N},{code:348,name:"visualStyleObjectId",parser:h},{code:333,name:"shadePlotObjectId",parser:h},{code:332,name:"backgroundObjectId",parser:h},{code:61,name:"majorGridLines",parser:h},{code:170,name:"shadePlotSetting",parser:h},{code:146,name:"elevation",parser:h},{code:79,name:"orthographicType",parser:h},{code:112,name:"ucsYAxis",parser:_},{code:111,name:"ucsXAxis",parser:_},{code:110,name:"ucsOrigin",parser:_},{code:74,name:"ucsIconSetting",parser:h},{code:71,name:"viewMode",parser:h},{code:281,name:"renderMode",parser:h},{code:1,name:"styleSheet",parser:h},{code:[331,441],name:"frozenLayers",parser:h,isMultiple:!0},{code:72,name:"circleSides",parser:h},{code:51,name:"viewTwistAngle",parser:h},{code:50,name:"snapRotationAngle",parser:h},{code:45,name:"viewHeight",parser:h},{code:44,name:"backClippingPlane",parser:h},{code:43,name:"frontClippingPlane",parser:h},{code:42,name:"lensLength",parser:h},{code:17,name:"viewTarget",parser:_},{code:16,name:"viewDirectionFromTarget",parser:_},{code:15,name:"gridSpacing",parser:_},{code:14,name:"snapSpacing",parser:_},{code:13,name:"snapBasePoint",parser:_},{code:12,name:"center",parser:_},{code:11,name:"upperRightCorner",parser:_},{code:10,name:"lowerLeftCorner",parser:_},{code:70,name:"standardFlag",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h},...oe]),Xd={APPID:Cd,BLOCK_RECORD:Bd,DIMSTYLE:Fd,LAYER:Rd,LTYPE:Vd,STYLE:Dd,UCS:Wd,VIEW:Hd,VPORT:Ud},Yd=P([{code:70,name:"maxNumberOfEntries",parser:h},{code:100,name:"subclassMarker",parser:h},{code:330,name:"ownerObjectId",parser:h},{code:102,parser:zt},{code:102,parser:zt},{code:102,parser:zt},{code:360,isMultiple:!0},{code:5,name:"handle",parser:h},{code:2,name:"name",parser:h}]);function $d(i,t){var s;let e={};for(;!O(i,0,"EOF")&&!O(i,0,"ENDSEC");){if(O(i,0,"TABLE")){i=t.next();let n={entries:[]};Yd(i,t,n),e[n.name]=n}if(O(i,0)&&!O(i,0,"ENDTAB")){let n=i.value;i=t.next();let r=Xd[n];if(!r){t.debug,i=t.next();continue}let a={};r(i,t,a),(s=e[n])==null||s.entries.push(a)}i=t.next()}return e}function qd(i,t){let e={};for(;!O(i,0,"EOF")&&!O(i,0,"ENDSEC");){if(O(i,0,"BLOCK")){let s=Zd(i=t.next(),t);Kh(s),s.name&&(e[s.name]=s)}i=t.next()}return e}function Zd(i,t){let e={};for(;!O(i,0,"EOF");){if(O(i,0,"ENDBLK")){for(i=t.next();!O(i,0,"EOF");){if(O(i,100,"AcDbBlockEnd"))return e;i=t.next()}break}switch(i.code){case 1:e.xrefPath=i.value;break;case 2:e.name=i.value;break;case 3:e.name2=i.value;break;case 5:e.handle=i.value;break;case 8:e.layer=i.value;break;case 10:e.position=ge(t);break;case 67:e.paperSpace=!!i.value&&i.value==1;break;case 70:i.value!==0&&(e.type=i.value);break;case 100:break;case 330:e.ownerHandle=i.value;break;case 0:e.entities=Qh(i,t)}i=t.next()}return e}let Zn=[{code:330,name:"ownerObjectId",parser:h},{code:102,parser:zt},{code:102,parser:zt},{code:102,parser:zt},{code:5,name:"handle",parser:h}],Jh=[{code:333,name:"shadePlotId",parser:h},{code:149,name:"imageOriginY",parser:h},{code:148,name:"imageOriginX",parser:h},{code:147,name:"scaleFactor",parser:h},{code:78,name:"shadePlotCustomDPI",parser:h},{code:77,name:"shadePlotResolution",parser:h},{code:76,name:"shadePlotMode",parser:h},{code:75,name:"standardScaleType",parser:h},{code:7,name:"currentStyleSheet",parser:h},{code:74,name:"plotType",parser:h},{code:73,name:"plotRotation",parser:h},{code:72,name:"plotPaperUnit",parser:h},{code:70,name:"layoutFlag",parser:h},{code:143,name:"printScaleDenominator",parser:h},{code:142,name:"printScaleNumerator",parser:h},{code:141,name:"windowAreaYMax",parser:h},{code:140,name:"windowAreaXMax",parser:h},{code:49,name:"windowAreaYMin",parser:h},{code:48,name:"windowAreaXMin",parser:h},{code:47,name:"plotOriginY",parser:h},{code:46,name:"plotOriginX",parser:h},{code:45,name:"paperHeight",parser:h},{code:44,name:"paperWidth",parser:h},{code:43,name:"marginTop",parser:h},{code:42,name:"marginRight",parser:h},{code:41,name:"marginBottom",parser:h},{code:40,name:"marginLeft",parser:h},{code:6,name:"plotViewName",parser:h},{code:4,name:"paperSize",parser:h},{code:2,name:"configName",parser:h},{code:1,name:"pageSetupName",parser:h},{code:100,name:"subclassMarker",parser:h},...Zn],Kd=[{code:346,name:"orthographicUcsId",parser:h},{code:345,name:"namedUcsId",parser:h},{code:331,name:"viewportId",parser:h},{code:330,name:"paperSpaceTableId",parser:h},{code:76,name:"orthographicType",parser:h},{code:17,name:"ucsYAxis",parser:_},{code:16,name:"ucsXAxis",parser:_},{code:13,name:"ucsOrigin",parser:_},{code:146,name:"elevation",parser:h},{code:15,name:"maxExtent",parser:_},{code:14,name:"minExtent",parser:_},{code:12,name:"insertionPoint",parser:_},{code:11,name:"maxLimit",parser:_},{code:10,name:"minLimit",parser:_},{code:71,name:"tabOrder",parser:h},{code:70,name:"controlFlag",parser:h},{code:1,name:"layoutName",parser:h},{code:100,name:"subclassMarker",parser:h},...Jh],Qd=[{code:3,name:"entries",parser:(i,t)=>{let e={name:i.value};return(i=t.next()).code===350?e.objectSoftId=i.value:i.code===360?e.objectHardId=i.value:t.rewind(),e},isMultiple:!0},{code:281,name:"recordCloneFlag",parser:h},{code:280,name:"isHardOwned",parser:N},{code:100,name:"subclassMarker",parser:h},...Zn],Jd=[{code:40,name:"wcsToOCSTransform",parser:ta},{code:40,name:"ocsToWCSTransform",parser:ta},{code:41,name:"backClippingDistance",parser:h},{code:73,name:"isBackClipping",parser:N,pushContext:!0},{code:40,name:"frontClippingDistance",parser:h},{code:72,name:"isFrontClipping",parser:N,pushContext:!0},{code:71,name:"isClipBoundaryDisplayed",parser:N},{code:11,name:"position",parser:_},{code:210,name:"normal",parser:_},{code:10,name:"boundaryVertices",parser:_,isMultiple:!0},{code:70,name:"boundaryCount",parser:h},{code:100,name:"subclassMarker",parser:h},{code:100},...Zn];function ta(i,t){let e=[];for(let s=0;s<3&&O(i,40);++s){let n=[];for(let r=0;r<4&&O(i,40);++r)n.push(i.value),i=t.next();e.push(n)}return t.rewind(),e}let tu=[{code:330,name:"imageDefReactorIdSoft",isMultiple:!0,parser:h},{code:90,name:"version",parser:h},{code:1,name:"fileName",parser:h},{code:10,name:"size",parser:_},{code:11,name:"sizeOfOnePixel",parser:_},{code:280,name:"isLoaded",parser:h},{code:281,name:"resolutionUnits",parser:h},{code:100,name:"subclassMarker",parser:h}],eu={LAYOUT:Kd,PLOTSETTINGS:Jh,DICTIONARY:Qd,SPATIAL_FILTER:Jd,IMAGEDEF:tu};function su(i,t){let e=[];for(;i.code!==0||!["EOF","ENDSEC"].includes(i.value);){let s=i.value,n=eu[s];if(i.code===0&&(n!=null&&n.length)){let r=P(n),a={name:s};r(i=t.next(),t,a)?(e.push(a),i=t.peek()):i=t.next()}else i=t.next()}return{byName:_c(e,({name:s})=>s)}}function Ms(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}class iu{constructor(){Ms(this,"encoding","utf-8"),Ms(this,"encodingFailureFatal",!1),Ms(this,"thumbnailImageFormat","base64")}}class nu extends EventTarget{parseSync(t,e=!1){let s=new Qr(t.split(/\r\n|\r|\n/g),e);if(!s.hasNext())throw Error("Empty file");return this.parseAll(s)}parseStream(t){let e="",s=this;return new Promise((n,r)=>{t.on("data",a=>{e+=a}),t.on("end",()=>{try{let a=e.split(/\r\n|\r|\n/g),o=new Qr(a);if(!o.hasNext())throw Error("Empty file");n(s.parseAll(o))}catch(a){r(a)}}),t.on("error",a=>{r(a)})})}async parseFromUrl(t,e){let s=await fetch(t,e);if(!s.body)return null;let n=s.body.getReader(),r="";for(;;){let{done:a,value:o}=await n.read();if(a){r+=this._decoder.decode(new ArrayBuffer(0),{stream:!1});break}r+=this._decoder.decode(o,{stream:!0})}return this.parseSync(r)}parseAll(t){let e={header:{},blocks:{},entities:[],tables:{},objects:{byName:{},byTree:void 0}},s=t.next();for(;!O(s,0,"EOF");)O(s,0,"SECTION")&&(O(s=t.next(),2,"HEADER")?e.header=Nd(s=t.next(),t):O(s,2,"CLASSES")?sc(s=t.next(),t,e):O(s,2,"BLOCKS")?e.blocks=qd(s=t.next(),t):O(s,2,"ENTITIES")?e.entities=Qh(s=t.next(),t):O(s,2,"TABLES")?e.tables=$d(s=t.next(),t):O(s,2,"OBJECTS")?e.objects=su(s=t.next(),t):O(s,2,"THUMBNAILIMAGE")&&(e.thumbnailImage=function(n,r,a="base64"){let o,l="",c=0;for(;!O(n,0,"EOF")&&!O(n,0,"ENDSEC");)n.code===90?c=n.value:n.code===310&&(l+=n.value),n=r.next();if(a==="hex")o=l;else{let d=function(u){let g=u.length/2,p=new Uint8Array(g);for(let m=0;m<g;m++)p[m]=parseInt(u.substr(2*m,2),16);return p}(l);o=a==="buffer"?d:function(u){let g="";for(let p=0;p<u.length;p++)g+=String.fromCharCode(u[p]);return btoa(g)}(d)}return{size:c,data:o}}(s=t.next(),t,this._options.thumbnailImageFormat))),s=t.next();return e}constructor(t={}){super(),Ms(this,"_decoder",void 0),Ms(this,"_options",void 0);let e=new iu;this._options=Object.assign(e,t),this._decoder=new TextDecoder(this._options.encoding,{fatal:this._options.encodingFailureFatal})}}(It={})[It.NOT_APPLICABLE=0]="NOT_APPLICABLE",It[It.KEEP_EXISTING=1]="KEEP_EXISTING",It[It.USE_CLONE=2]="USE_CLONE",It[It.XREF_VALUE_NAME=3]="XREF_VALUE_NAME",It[It.VALUE_NAME=4]="VALUE_NAME",It[It.UNMANGLE_NAME=5]="UNMANGLE_NAME";(Oe={})[Oe.NOUNIT=0]="NOUNIT",Oe[Oe.CENTIMETERS=2]="CENTIMETERS",Oe[Oe.INCH=5]="INCH";(ys={})[ys.PSLTSCALE=1]="PSLTSCALE",ys[ys.LIMCHECK=2]="LIMCHECK";(Ce={})[Ce.INCHES=0]="INCHES",Ce[Ce.MILLIMETERS=1]="MILLIMETERS",Ce[Ce.PIXELS=2]="PIXELS";(Pt={})[Pt.LAST_SCREEN_DISPLAY=0]="LAST_SCREEN_DISPLAY",Pt[Pt.DRAWING_EXTENTS=1]="DRAWING_EXTENTS",Pt[Pt.DRAWING_LIMITS=2]="DRAWING_LIMITS",Pt[Pt.VIEW_SPECIFIED=3]="VIEW_SPECIFIED",Pt[Pt.WINDOW_SPECIFIED=4]="WINDOW_SPECIFIED",Pt[Pt.LAYOUT_INFORMATION=5]="LAYOUT_INFORMATION";(Jt={})[Jt.AS_DISPLAYED=0]="AS_DISPLAYED",Jt[Jt.WIREFRAME=1]="WIREFRAME",Jt[Jt.HIDDEN=2]="HIDDEN",Jt[Jt.RENDERED=3]="RENDERED";(Et={})[Et.DRAFT=0]="DRAFT",Et[Et.PREVIEW=1]="PREVIEW",Et[Et.NORMAL=2]="NORMAL",Et[Et.PRESENTATION=3]="PRESENTATION",Et[Et.MAXIMUM=4]="MAXIMUM",Et[Et.CUSTOM=5]="CUSTOM";(te={})[te.NONE=0]="NONE",te[te.AbsoluteRotation=1]="AbsoluteRotation",te[te.TextEmbedded=2]="TextEmbedded",te[te.ShapeEmbedded=4]="ShapeEmbedded";(rn={})[rn.PaperSpace=1]="PaperSpace";(Be={})[Be.XrefDependent=16]="XrefDependent",Be[Be.XrefResolved=32]="XrefResolved",Be[Be.Referenced=64]="Referenced";(St={})[St.Off=0]="Off",St[St.Perspective=1]="Perspective",St[St.ClipFront=2]="ClipFront",St[St.ClipBack=4]="ClipBack",St[St.UcsFollow=8]="UcsFollow",St[St.ClipFrontByFrontZ=16]="ClipFrontByFrontZ";class ru{parse(t){const e=new nu,s=this.getDxfInfoFromBuffer(t);let n="";return s.version&&s.version.value<=23&&s.encoding?n=new TextDecoder(s.encoding).decode(t):n=new TextDecoder().decode(t),e.parseSync(n)}getDxfInfoFromBuffer(t){var c,d,u;const s=new TextDecoder("utf-8");let n=0,r="",a=null,o=null,l=!1;for(;n<t.byteLength;){const g=Math.min(n+65536,t.byteLength),p=t.slice(n,g);n=g;const y=(r+s.decode(p,{stream:!0})).split(/\r?\n/);r=y.pop()??"";for(let w=0;w<y.length;w++){const b=y[w].trim();if(b==="SECTION"&&((c=y[w+2])==null?void 0:c.trim())==="HEADER")l=!0;else if(b==="ENDSEC"&&l)return{version:a,encoding:o};if(l&&b==="$ACADVER"){const E=(d=y[w+2])==null?void 0:d.trim();E&&(a=new At(E))}else if(l&&b==="$DWGCODEPAGE"){const E=(u=y[w+2])==null?void 0:u.trim();if(E){const I=Mn[E];o=_a(I)}}if(a&&o)return{version:a,encoding:o}}}return{version:a,encoding:o}}}class ea{convert(t){const e=this.createEntity(t);return e&&this.processCommonAttrs(t,e),e}createEntity(t){return t.type=="3DFACE"?this.convertFace(t):t.type=="ARC"?this.convertArc(t):t.type=="ATTDEF"?this.convertAttributeDefinition(t):t.type=="ATTRIB"?this.convertAttribute(t):t.type=="CIRCLE"?this.convertCirle(t):t.type=="DIMENSION"?this.convertDimension(t):t.type=="ELLIPSE"?this.convertEllipse(t):t.type=="HATCH"?this.convertHatch(t):t.type=="IMAGE"?this.convertImage(t):t.type=="LEADER"?this.convertLeader(t):t.type=="LINE"?this.convertLine(t):t.type=="LWPOLYLINE"?this.convertLWPolyline(t):t.type=="MTEXT"?this.convertMText(t):t.type=="POLYLINE"?this.convertPolyline(t):t.type=="POINT"?this.convertPoint(t):t.type=="RAY"?this.convertRay(t):t.type=="SPLINE"?this.convertSpline(t):t.type=="ACAD_TABLE"?this.convertTable(t):t.type=="TEXT"?this.convertText(t):t.type=="SOLID"?this.convertSolid(t):t.type=="VIEWPORT"?this.convertViewport(t):t.type=="WIPEOUT"?this.convertWipeout(t):t.type=="XLINE"?this.convertXline(t):t.type=="INSERT"?this.convertBlockReference(t):null}convertFace(t){const e=new Ii;return t.vertices.forEach((s,n)=>e.setVertexAt(n,s)),e}convertArc(t){return new _i(t.center,t.radius,L.degToRad(t.startAngle),L.degToRad(t.endAngle),t.extrusionDirection??f.Z_AXIS)}convertAttributeCommon(t,e){e.textString=t.text,e.height=t.textHeight,e.position.copy(t.startPoint),e.rotation=t.rotation,e.oblique=t.obliqueAngle??0,e.thickness=t.thickness,e.tag=t.tag,e.fieldLength=0,e.isInvisible=(t.attributeFlag&K.Invisible)!==0,e.isConst=(t.attributeFlag&K.Const)!==0,e.isVerifiable=(t.attributeFlag&K.Verifiable)!==0,e.isPreset=(t.attributeFlag&K.Preset)!==0,e.isReallyLocked=!!t.isReallyLocked,e.isMTextAttribute=(t.mtextFlag&Bt.MultiLine)!==0,e.isConstMTextAttribute=(t.mtextFlag&Bt.ConstMultiLine)!==0}convertAttribute(t){const e=new xi;return this.convertAttributeCommon(t,e),e.styleName=t.textStyle,e.horizontalMode=t.horizontalJustification,e.verticalMode=t.verticalJustification,e.widthFactor=t.scale??1,e.lockPositionInBlock=t.lockPositionFlag,e}convertAttributeDefinition(t){const e=new wi;return this.convertAttributeCommon(t,e),e.styleName=t.styleName,e.horizontalMode=t.halign,e.verticalMode=t.valign,e.widthFactor=t.xScale??1,e.prompt=t.prompt,e}convertCirle(t){return new bi(t.center,t.radius,t.extrusionDirection??f.Z_AXIS)}convertEllipse(t){const e=new f(t.majorAxisEndPoint),s=e.length();return new fi(t.center,t.extrusionDirection??f.Z_AXIS,e,s,s*t.axisRatio,t.startAngle,t.endAngle)}convertLine(t){const e=t.startPoint,s=t.endPoint;return new Os(new x(e.x,e.y,e.z||0),new x(s.x,s.y,s.z||0))}convertSpline(t){try{if(t.numberOfControlPoints>0&&t.numberOfKnots>0)return new Bs(t.controlPoints,t.knots,t.weights,t.degree,!!(t.flag&1));if(t.numberOfFitPoints>0)return new Bs(t.fitPoints,"Uniform",t.degree,!!(t.flag&1))}catch{}return null}convertPoint(t){const e=new Mi;return e.position=t.position,e}convertSolid(t){const e=new Si;return t.points.forEach((s,n)=>e.setPointAt(n,s)),e.thickness=t.thickness,e}convertPolyline(t){const e=!!(t.flag&1),s=!!(t.flag&8),n=!!(t.flag&16),r=!!(t.flag&64),a=!!(t.flag&32),o=[],l=[],c=[];if(t.vertices.map(d=>{d.flag&Sd.SPLINE_CONTROL_POINT||(r&&d.flag&128?d.flag&64?(o.push({x:d.x,y:d.y,z:d.z}),l.push(d.bulge??0)):d.faces&&d.faces.length>=3&&c.push([...d.faces]):(o.push({x:d.x,y:d.y,z:d.z}),l.push(d.bulge??0)))}),n){const d=t.meshMVertexCount,u=t.meshNVertexCount;return new Ni(d,u,o,e,a)}else{if(r)return new Oi(o,c);if(s){let d=Es.SimplePoly;return t.flag&4&&(t.smoothType==ii.CUBIC?d=Es.CubicSplinePoly:t.smoothType==ii.QUADRATIC&&(d=Es.QuadSplinePoly)),new yi(d,o,e)}else{let d=Ue.SimplePoly;return t.flag&2?d=Ue.FitCurvePoly:t.flag&4&&(t.smoothType==ii.CUBIC?d=Ue.CubicSplinePoly:t.smoothType==ii.QUADRATIC&&(d=Ue.QuadSplinePoly)),new mi(d,o,0,e,t.startWidth,t.endWidth,l)}}}convertLWPolyline(t){const e=new Ai;return e.closed=!!(t.flag&1),t.vertices.forEach((s,n)=>{e.addVertexAt(n,new v(s.x,s.y),s.bulge,s.startWidth,s.endWidth)}),e}convertHatch(t){var n;const e=new Ns;return(n=t.definitionLines)==null||n.forEach(r=>{e.definitionLines.push({angle:r.angle,base:r.base,offset:r.offset,dashLengths:r.numberOfDashLengths>0?r.dashLengths:[]})}),e.isSolidFill=t.solidFill==$l.SolidFill,e.hatchStyle=t.hatchStyle,e.patternName=t.patternName,e.patternType=t.patternType,e.patternAngle=t.patternAngle==null?0:t.patternAngle,e.patternScale=t.patternScale==null?0:t.patternScale,t.boundaryPaths.forEach(r=>{if(r.boundaryPathTypeFlag&2){const o=r,l=new me;l.closed=o.isClosed,o.vertices.forEach((c,d)=>{l.addVertexAt(d,{x:c.x,y:c.y,bulge:c.bulge})}),e.add(l)}else{const o=r,l=[];o.edges.forEach(d=>{if(d.type==1){const u=d;l.push(new Ft(u.start,u.end))}else if(d.type==2){const u=d;l.push(new Ve(u.center,u.radius,L.degToRad(u.startAngle||0),L.degToRad(u.endAngle||0),!u.isCCW))}else if(d.type==3){const u=d;new U().subVectors(u.end,u.center);const p=Math.sqrt(Math.pow(u.end.x,2)+Math.pow(u.end.y,2)),m=p*u.lengthOfMinorAxis;let y=L.degToRad(u.startAngle||0),w=L.degToRad(u.endAngle||0);const b=Math.atan2(u.end.y,u.end.x);u.isCCW||(y=Math.PI*2-y,w=Math.PI*2-w),l.push(new ks({...u.center,z:0},p,m,y,w,!u.isCCW,b))}else if(d.type==4){const u=d;if(u.numberOfControlPoints>0&&u.numberOfKnots>0){const g=u.controlPoints.map(y=>({x:y.x,y:y.y,z:0}));let p=!0;const m=u.controlPoints.map(y=>(y.weight==null&&(p=!1),y.weight||1));l.push(new Rt(g,u.knots,p?m:void 0))}else if(u.numberOfFitData>0){const g=u.fitDatum.map(p=>({x:p.x,y:p.y,z:0}));l.push(new Rt(g,"Uniform"))}}});const c=Ls.buildFromEdges(l);c.length==0&&l.length>0?e.add(new Ls(l)):c.forEach(d=>e.add(d))}}),e}convertTable(t){const e=new Ei(t.name,t.rowCount,t.columnCount);return e.tableDataVersion=t.version,e.tableStyleId=t.tableStyleId,e.owningBlockRecordId=t.blockRecordHandle,t.directionVector&&(e.horizontalDirection=new f(t.directionVector)),e.attachmentPoint=t.attachmentPoint,e.position.copy(t.startPoint),e.tableValueFlag=t.tableValue,e.tableOverrideFlag=t.overrideFlag,e.borderColorOverrideFlag=t.borderColorOverrideFlag,e.borderLineweightOverrideFlag=t.borderLineWeightOverrideFlag,e.borderVisibilityOverrideFlag=t.borderVisibilityOverrideFlag,t.columnWidthArr.forEach((s,n)=>e.setColumnWidth(n,s)),t.rowHeightArr.forEach((s,n)=>e.setRowHeight(n,s)),t.cells.forEach((s,n)=>{e.setCell(n,s)}),e}convertText(t){const e=new Ke;return e.textString=t.text,e.styleName=t.styleName,e.height=t.textHeight,e.position.copy(t.startPoint),e.rotation=L.degToRad(t.rotation||0),e.oblique=t.obliqueAngle??0,e.thickness=t.thickness,e.horizontalMode=t.halign,e.verticalMode=t.valign,e.widthFactor=t.xScale??1,e}convertMText(t){const e=new Cs;return e.contents=t.text,t.styleName!=null&&(e.styleName=t.styleName),e.height=t.height,e.width=t.width,e.rotation=L.degToRad(t.rotation||0),e.location=t.insertionPoint,e.attachmentPoint=t.attachmentPoint,t.direction&&(e.direction=new f(t.direction)),e.drawingDirection=t.drawingDirection,e}convertLeader(t){const e=new Pi;return t.vertices.forEach(s=>{e.appendVertex(s)}),e.hasArrowHead=t.isArrowheadEnabled,e.hasHookLine=t.isHooklineExists,e.isSplined=t.isSpline,e.dimensionStyle=t.styleName,e.annoType=t.leaderCreationFlag,e}convertDimension(t){if(t.subclassMarker=="AcDbAlignedDimension"||t.subclassMarker=="AcDbRotatedDimension"){const e=t,s=new Bi(e.subDefinitionPoint1,e.subDefinitionPoint2,e.definitionPoint);return e.insertionPoint&&(s.dimBlockPosition={...e.insertionPoint,z:0}),s.rotation=L.degToRad(e.rotationAngle||0),this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDb3PointAngularDimension"){const e=t,s=new Ci(e.centerPoint,e.subDefinitionPoint1,e.subDefinitionPoint2,e.definitionPoint);return this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDbOrdinateDimension"){const e=t,s=new Ri(e.subDefinitionPoint1,e.subDefinitionPoint2);return this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDbRadialDimension"){const e=t,s=new zi(e.definitionPoint,e.subDefinitionPoint,e.leaderLength);return this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDbDiametricDimension"){const e=t,s=new Fi(e.definitionPoint,e.subDefinitionPoint,e.leaderLength);return this.processDimensionCommonAttrs(t,s),s}return null}processImage(t,e){e.position.copy(t.position),e.brightness=t.brightness,e.contrast=t.contrast,e.fade=t.fade,e.imageSize.copy(t.imageSize),e.isShownClipped=(t.flags|4)>0,e.isImageShown=(t.flags|3)>0,e.isImageTransparent=(t.flags|8)>0,e.imageDefId=t.imageDefHandle,e.isClipped=t.isClipped,t.clippingBoundaryPath.forEach(s=>{e.clipBoundary.push(new v(s))}),e.width=Math.sqrt(t.uPixel.x**2+t.uPixel.y**2+t.uPixel.z**2)*t.imageSize.x,e.height=Math.sqrt(t.vPixel.x**2+t.vPixel.y**2+t.vPixel.z**2)*t.imageSize.y,e.rotation=Math.atan2(t.uPixel.y,t.uPixel.x)}convertImage(t){const e=new Fs;return this.processImage(t,e),e.clipBoundaryType=t.clippingBoundaryType,e}processWipeout(t,e){e.position.copy(t.position),e.brightness=t.brightness,e.contrast=t.contrast,e.fade=t.fade,e.imageSize.copy(t.imageSize),e.isShownClipped=(t.displayFlag|4)>0,e.isImageShown=(t.displayFlag|3)>0,e.isImageTransparent=(t.displayFlag|8)>0,e.imageDefId=t.imageDefHardId,e.isClipped=t.isClipping,t.boundary.forEach(s=>{e.clipBoundary.push(new v(s))}),e.clipBoundaryType=t.boundaryType,e.width=Math.sqrt(t.uDirection.x**2+t.uDirection.y**2+t.uDirection.z**2)*t.imageSize.x,e.height=Math.sqrt(t.vDirection.x**2+t.vDirection.y**2+t.vDirection.z**2)*t.imageSize.y,e.rotation=Math.atan2(t.uDirection.y,t.uDirection.x)}convertWipeout(t){const e=new ki;return this.processWipeout(t,e),e}convertViewport(t){const e=new vi;return e.number=t.viewportId,e.centerPoint.copy(t.viewportCenter),e.height=t.height,e.width=t.width,e.viewCenter.copy(t.displayCenter),e.viewHeight=t.viewHeight,e}convertRay(t){const e=new Ti;return e.basePoint.copy(t.position),e.unitDir.copy(t.direction),e}convertXline(t){const e=new Li;return e.basePoint.copy(t.position),e.unitDir.copy(t.direction),e}convertBlockReference(t){const e=new Qe(t.name);return t.insertionPoint&&e.position.copy(t.insertionPoint),e.scaleFactors.x=t.xScale||1,e.scaleFactors.y=t.yScale||1,e.scaleFactors.z=t.zScale||1,e.rotation=t.rotation!=null?L.degToRad(t.rotation):0,e.normal.copy(t.extrusionDirection??{x:0,y:0,z:1}),e}processDimensionCommonAttrs(t,e){e.dimBlockId=t.name,e.textPosition.copy(t.textPoint),e.textRotation=t.textRotation||0,t.textLineSpacingFactor&&(e.textLineSpacingFactor=t.textLineSpacingFactor),t.textLineSpacingStyle&&(e.textLineSpacingStyle=t.textLineSpacingStyle),e.dimensionStyleName=t.styleName,e.dimensionText=t.text||"",e.measurement=t.measurement,e.normal.copy(t.extrusionDirection??{x:0,y:0,z:1})}processCommonAttrs(t,e){e.layer=t.layer||"0",t.handle&&(e.objectId=t.handle.toString()),e.ownerId=t.ownerBlockRecordSoftId||"",t.lineType!=null&&(e.lineType=t.lineType),t.lineweight!=null&&(e.lineWeight=t.lineweight),t.lineTypeScale!=null&&(e.linetypeScale=t.lineTypeScale),t.color!=null&&e.color.setRGBValue(t.color),t.colorIndex!=null&&(e.color.colorIndex=t.colorIndex),t.colorName&&(e.color.colorName=t.colorName),t.isVisible!=null&&(e.visibility=t.isVisible),t.transparency!=null&&(e.transparency=Gi.deserialize(t.transparency))}}class au{convertLayout(t,e){var r,a;const s=new Ws;s.layoutName=t.layoutName,s.tabOrder=t.tabOrder,s.plotSettingsName=t.pageSetupName,s.plotCfgName=t.configName,s.canonicalMediaName=t.paperSize,s.plotViewName=t.plotViewName,s.currentStyleSheet=t.currentStyleSheet,s.plotPaperMargins={left:t.marginLeft,right:t.marginRight,top:t.marginTop,bottom:t.marginBottom},s.plotPaperSize.copy({x:t.paperWidth,y:t.paperHeight}),s.plotOrigin.copy({x:t.plotOriginX,y:t.plotOriginY}),s.plotWindowArea.min.copy({x:t.windowAreaXMin,y:t.windowAreaYMin}),s.plotWindowArea.max.copy({x:t.windowAreaXMax,y:t.windowAreaYMax}),s.customPrintScale={numerator:t.printScaleNumerator,denominator:t.printScaleDenominator},s.plotPaperUnits=t.plotPaperUnit,s.plotRotation=t.plotRotation,s.plotType=t.plotType,s.stdScaleType=t.standardScaleType,s.shadePlot=(()=>{switch(t.shadePlotMode){case 1:return Xe.kWireframe;case 2:return Xe.kHidden;case 3:return Xe.kRendered;default:return Xe.kAsDisplayed}})(),s.shadePlotResLevel=(()=>{switch(t.shadePlotResolution){case 1:return ce.kPreview;case 2:return ce.kNormal;case 3:return ce.kPresentation;case 4:return ce.kMaximum;case 5:return ce.kCustom;default:return ce.kDraft}})(),t.shadePlotCustomDPI!=null&&(s.shadePlotCustomDPI=t.shadePlotCustomDPI),t.shadePlotId&&(s.shadePlotId=t.shadePlotId);const n=t.layoutFlag??0;if(s.plotViewportBorders=(n&1)!==0,s.showPlotStyles=(n&2)!==0,s.plotCentered=(n&4)!==0,s.plotHidden=(n&8)!==0,s.useStandardScale=(n&16)!==0,s.plotPlotStyles=(n&32)!==0,s.scaleLineweights=(n&64)!==0,s.printLineweights=(n&128)!==0,s.drawViewportsFirst=(n&512)!==0,s.modelType=(n&1024)!==0,t.viewportId&&s.viewportArray.push(t.viewportId),t.layoutName==="Model"){const o=Z.MODEL_SPACE_NAME.toUpperCase();(r=e.tables.BLOCK_RECORD)==null||r.entries.some(l=>l.name.toUpperCase()===o?(s.blockTableRecordId=l.handle,!0):!1)}else(a=e.tables.BLOCK_RECORD)==null||a.entries.some(o=>o.layoutObjects===t.handle?(s.blockTableRecordId=o.handle,!0):!1),s.blockTableRecordId||(s.blockTableRecordId=t.paperSpaceTableId);return t.minLimit&&s.limits.min.copy(t.minLimit),t.maxLimit&&s.limits.max.copy(t.maxLimit),t.minExtent&&s.extents.min.copy(t.minExtent),t.maxExtent&&s.extents.max.copy(t.maxExtent),this.processCommonAttrs(t,s),s}convertImageDef(t){const e=new fo;return e.sourceFileName=t.fileName,this.processCommonAttrs(t,e),e}processCommonAttrs(t,e){e.objectId=t.handle,e.ownerId=t.ownerObjectId}}class tl{constructor(t){this.taskId=0,this.workers=new Map,this.pendingTasks=new Map,this.config={workerUrl:t.workerUrl,timeout:t.timeout??3e4,maxConcurrentWorkers:t.maxConcurrentWorkers??4}}async execute(t,e){const s=Date.now(),n=this.generateTaskId();try{return await this.executeInWorker(n,t,e||this.config.workerUrl)}catch(r){const a=Date.now()-s;return{success:!1,error:r instanceof Error?r.message:String(r),duration:a}}}async executeInWorker(t,e,s){const n=Date.now();return new Promise((r,a)=>{const o=this.getAvailableWorker(s),l=setTimeout(()=>{this.cleanupTask(t),this.releaseWorker(o),a(new Error(`Worker operation timed out after ${this.config.timeout}ms`))},this.config.timeout);this.pendingTasks.set(t,{resolve:u=>{clearTimeout(l),this.releaseWorker(o),r(u)},reject:u=>{clearTimeout(l),this.releaseWorker(o),a(u)},timeout:l});const c=u=>{const{id:g,success:p,data:m,error:y}=u.data;if(g!==t)return;this.cleanupTask(t);const w=Date.now()-n;r(p?{success:!0,data:m,duration:w}:{success:!1,error:y,duration:w})},d=u=>{this.cleanupTask(t),a(new Error(`Worker error: ${u.message}`))};o.addEventListener("message",c),o.addEventListener("error",d),o.postMessage({id:t,input:e})})}cleanupTask(t){const e=this.pendingTasks.get(t);e&&(clearTimeout(e.timeout),this.pendingTasks.delete(t))}generateTaskId(){return`task_${++this.taskId}_${Date.now()}`}detectWorkerSupport(){return typeof Worker<"u"}getAvailableWorker(t){for(const[s,n]of this.workers)if(!n.isBusy)return n.isBusy=!0,n.worker;if(this.workers.size<this.config.maxConcurrentWorkers){const s=new Worker(t,{type:"module"}),n=this.generateWorkerId(),r={worker:s,isBusy:!0,id:n,createdAt:new Date};return this.workers.set(n,r),s}const e=Array.from(this.workers.values()).sort((s,n)=>s.createdAt.getTime()-n.createdAt.getTime())[0];return e.isBusy=!0,e.worker}releaseWorker(t){for(const[e,s]of this.workers)if(s.worker===t){s.isBusy=!1;break}}generateWorkerId(){return`worker_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}getStats(){return{totalWorkers:this.workers.size,busyWorkers:Array.from(this.workers.values()).filter(t=>t.isBusy).length,pendingTasks:this.pendingTasks.size,config:this.config}}destroy(){for(const[t,e]of this.pendingTasks)clearTimeout(e.timeout),e.reject(new Error("Framework destroyed"));this.pendingTasks.clear();for(const[t,e]of this.workers)e.worker.terminate();this.workers.clear()}}class el{constructor(t){this.framework=new tl(t)}async execute(t,e){return this.framework.execute(t,e)}getStats(){return this.framework.getStats()}destroy(){this.framework.destroy()}}function sl(i){return new el(i)}class ou{constructor(){this.setupMessageHandler()}setupMessageHandler(){self.onmessage=async t=>{const{id:e,input:s}=t.data;try{const n=await this.executeTask(s);this.sendResponse(e,!0,n)}catch(n){this.sendResponse(e,!1,void 0,n instanceof Error?n.message:String(n))}}}sendResponse(t,e,s,n){const r={id:t,success:e,data:s,error:n};self.postMessage(r)}}class il extends Yn{constructor(t={}){super(t),t.parserWorkerUrl||(t.parserWorkerUrl="/assets/dxf-parser-worker.js")}async parse(t,e){const s=this.config,n=this.getParserWorkerTimeout(t,e);if(s.useWorker&&s.parserWorkerUrl){const r=sl({workerUrl:s.parserWorkerUrl,timeout:n,maxConcurrentWorkers:1}),a=await r.execute(t);if(r.destroy(),a.success)return{model:a.data,data:{unknownEntityCount:0}};throw new Error(`Failed to parse drawing due to error: '${a.error}'`)}else return{model:new ru().parse(t),data:{unknownEntityCount:0}}}getFonts(t){var r;const e=new Map,s=a=>{if(a){const o=a.lastIndexOf(".");return o>=0?a.substring(0,o).toLowerCase():a.toLowerCase()}};(r=t.tables.STYLE)==null||r.entries.forEach(a=>{const o=[];if(a.font){const l=s(a.font);l&&o.push(l)}if(a.bigFont){const l=s(a.bigFont);l&&o.push(l)}if(a.extendedFont){const l=s(a.extendedFont);l&&o.push(l)}e.set(a.name,o)});const n=new Set;return this.getFontsInBlock(t.entities,t.blocks,e,n),Array.from(n)}getFontsInBlock(t,e,s,n){const r=/\\f(.*?)\|/g;t.forEach(a=>{if(a.type=="MTEXT"){const o=a;[...o.text.matchAll(r)].forEach(d=>{n.add(d[1].toLowerCase())});const c=s.get(o.styleName);c==null||c.forEach(d=>n.add(d))}else if(a.type=="TEXT"){const o=a,l=s.get(o.styleName);l==null||l.forEach(c=>n.add(c))}else if(a.type=="INSERT"){const l=e[a.name];l&&l.entities&&this.getFontsInBlock(l.entities,e,s,n)}})}async processEntities(t,e,s,n,r){const a=new ea;let o=t.entities;const l=o.length,c=new Sn(l,100-n.value,s);this.config.convertByEntityType&&(o=this.groupAndFlattenByType(o));const d=new Map;for(let g=0;g<l;g++){const p=o[g];if(p.type==="ATTRIB"){const m=a.convert(p);if(m&&m.ownerId&&m.ownerId!=="0"){let y=d.get(m==null?void 0:m.ownerId);y==null&&(y=[],d.set(m.ownerId,y)),y.push(m)}}}const u=e.tables.blockTable.modelSpace;await c.processChunk(async(g,p)=>{let m=[],y=g<p?o[g].type:"";for(let b=g;b<p;b++){const E=o[b];if(!(E.ownerBlockRecordSoftId&&E.ownerBlockRecordSoftId!==u.objectId)&&E.type!=="ATTRIB"){const I=a.convert(E);if(I){if(this.config.convertByEntityType&&E.type!==y&&(u.appendEntity(m),m=[],y=E.type),E.type==="INSERT"){const T=d.get(I.objectId);T&&T.length>0&&T.forEach(A=>{I.appendAttributes(A)})}m.push(I)}}}u.appendEntity(m);let w=n.value+p/l*(100-n.value);w>100&&(w=100),r&&await r(w,"ENTITY","IN-PROGRESS")})}async processEntitiesInBlock(t,e,s=!1){const n=new ea,r=t.length,a=[],o=e.objectId,l=[];for(let c=0;c<r;c++){const d=t[c],u=n.convert(d);u&&(d.type==="ATTRIB"?l.push(u):(!s||d.ownerBlockRecordSoftId===o)&&a.push(u))}l.forEach(c=>{const d=e.getIdAt(c.ownerId);d&&d.appendAttributes(c)}),e.appendEntity(a)}processBlocks(t,e){const s=t.blocks;for(const[n,r]of Object.entries(s)){let a=e.tables.blockTable.getAt(r.name);a||(a=new Z,a.objectId=r.handle,a.name=n,a.origin.copy(r.position),e.tables.blockTable.add(a)),r.entities?this.processEntitiesInBlock(r.entities,a):a.isPaperSapce&&this.processEntitiesInBlock(t.entities,a,!0)}}processHeader(t,e){const s=t.header;s.$ACADVER&&(e.version=s.$ACADVER),e.cecolor.colorIndex=s.$CECOLOR||256,e.angBase=s.$ANGBASE||0,e.angDir=s.$ANGDIR||0,s.$AUNITS!=null&&(e.aunits=s.$AUNITS),e.celtscale=s.$CELTSCALE||1,e.ltscale=s.$LTSCALE||1,s.$EXTMAX&&(e.extmax=s.$EXTMAX),s.$EXTMIN&&(e.extmin=s.$EXTMIN),s.$INSUNITS!=null&&(e.insunits=s.$INSUNITS),e.osmode=s.$OSMODE||0,e.pdmode=s.$PDMODE||0,e.pdsize=s.$PDSIZE||0,e.textstyle=s.$TEXTSTYLE||J}processBlockTables(t,e){var n;const s=(n=t.tables.BLOCK_RECORD)==null?void 0:n.entries;s&&s.length>0&&(e.tables.blockTable.removeAll(),s.forEach(r=>{const a=new Z;a.objectId=r.handle,a.name=r.name,a.layoutId=r.layoutObjects,a.blockInsertUnits=r.insertionUnits,a.explodability=r.explodability,a.blockScaling=r.scalability,r.bmpPreview&&(a.bmpPreview=r.bmpPreview),e.tables.blockTable.add(a)}))}processObjects(t,e){const s=t.objects.byName,n=new au;if("LAYOUT"in s){const r=e.objects.layout;s.LAYOUT.forEach(a=>{const o=n.convertLayout(a,t);r.setAt(o.layoutName,o)})}if("IMAGEDEF"in s){const r=e.objects.imageDefinition;s.IMAGEDEF.forEach(a=>{const o=n.convertImageDef(a);r.setAt(o.objectId,o)})}}processViewports(t,e){var n;const s=(n=t.tables)==null?void 0:n.VPORT;if(s){this.processCommonTableAttrs(s,e.tables.viewportTable);const r=s.entries;r&&r.length>0&&r.forEach(a=>{const o=new Xn;this.processCommonTableEntryAttrs(a,o),a.circleSides&&(o.circleSides=a.circleSides),o.standardFlag=a.standardFlag,o.center.copy(a.center),o.lowerLeftCorner.copy(a.lowerLeftCorner),o.upperRightCorner.copy(a.upperRightCorner),a.snapBasePoint&&o.snapBase.copy(a.snapBasePoint),a.snapRotationAngle&&(o.snapAngle=a.snapRotationAngle),a.snapSpacing&&o.snapIncrements.copy(a.snapSpacing),a.majorGridLines&&(o.gridMajor=a.majorGridLines),a.gridSpacing&&o.gridIncrements.copy(a.gridSpacing),a.backgroundObjectId&&(o.backgroundObjectId=a.backgroundObjectId),o.gsView.center.copy(a.center),o.gsView.viewDirectionFromTarget.copy(a.viewDirectionFromTarget),o.gsView.viewTarget.copy(a.viewTarget),a.lensLength&&(o.gsView.lensLength=a.lensLength),a.frontClippingPlane&&(o.gsView.frontClippingPlane=a.frontClippingPlane),a.backClippingPlane&&(o.gsView.backClippingPlane=a.backClippingPlane),a.viewHeight&&(o.gsView.viewHeight=a.viewHeight),a.viewTwistAngle&&(o.gsView.viewTwistAngle=a.viewTwistAngle),a.frozenLayers&&(o.gsView.frozenLayers=a.frozenLayers),a.styleSheet&&(o.gsView.styleSheet=a.styleSheet),a.renderMode&&(o.gsView.renderMode=a.renderMode),a.viewMode&&(o.gsView.viewMode=a.viewMode),a.ucsIconSetting&&(o.gsView.ucsIconSetting=a.ucsIconSetting),a.ucsOrigin&&o.gsView.ucsOrigin.copy(a.ucsOrigin),a.ucsXAxis&&o.gsView.ucsXAxis.copy(a.ucsXAxis),a.ucsYAxis&&o.gsView.ucsYAxis.copy(a.ucsYAxis),a.orthographicType&&(o.gsView.orthographicType=a.orthographicType),a.shadePlotSetting&&(o.gsView.shadePlotSetting=a.shadePlotSetting),a.shadePlotObjectId&&(o.gsView.shadePlotObjectId=a.shadePlotObjectId),a.visualStyleObjectId&&(o.gsView.visualStyleObjectId=a.visualStyleObjectId),a.isDefaultLightingOn&&(o.gsView.isDefaultLightingOn=a.isDefaultLightingOn),a.defaultLightingType&&(o.gsView.defaultLightingType=a.defaultLightingType),a.brightness&&(o.gsView.brightness=a.brightness),a.contrast&&(o.gsView.contrast=a.contrast),a.ambientColor&&(o.gsView.ambientColor=a.ambientColor),e.tables.viewportTable.add(o)})}}processLayers(t,e){var n;const s=(n=t.tables)==null?void 0:n.LAYER;if(s){this.processCommonTableAttrs(s,e.tables.layerTable);const r=s.entries;r&&r.length>0&&r.forEach(a=>{const o=new tt;o.colorIndex=a.colorIndex;const l=new Hi({name:a.name,standardFlags:a.standardFlag,linetype:a.lineType,lineWeight:a.lineweight,isOff:a.colorIndex<0,color:o,isPlottable:a.isPlotting});this.processCommonTableEntryAttrs(a,l),e.tables.layerTable.add(l)})}}processLineTypes(t,e){var n;const s=(n=t.tables)==null?void 0:n.LTYPE;if(s){this.processCommonTableAttrs(s,e.tables.linetypeTable);const r=s.entries;r&&r.length>0&&r.forEach(a=>{const o=new ue(a);this.processCommonTableEntryAttrs(a,o),o.name=a.name,e.tables.linetypeTable.add(o)})}}processTextStyles(t,e){var n;const s=(n=t.tables)==null?void 0:n.STYLE;if(s){this.processCommonTableAttrs(s,e.tables.textStyleTable);const r=s.entries;r&&r.length>0&&r.forEach(a=>{const o=new Ui(a);this.processCommonTableEntryAttrs(a,o),e.tables.textStyleTable.add(o)})}}processDimStyles(t,e){var n;const s=(n=t.tables)==null?void 0:n.DIMSTYLE;if(s){this.processCommonTableAttrs(s,e.tables.dimStyleTable);const r=s.entries;r&&r.length>0&&r.forEach(a=>{const o={name:a.name,ownerId:a.ownerObjectId,dimpost:a.DIMPOST||"",dimapost:a.DIMAPOST||"",dimscale:a.DIMSCALE,dimasz:a.DIMASZ,dimexo:a.DIMEXO,dimdli:a.DIMDLI,dimexe:a.DIMEXE,dimrnd:a.DIMRND,dimdle:a.DIMDLE,dimtp:a.DIMTP,dimtm:a.DIMTM,dimtxt:a.DIMTXT,dimcen:a.DIMCEN,dimtsz:a.DIMTSZ,dimaltf:a.DIMALTF,dimlfac:a.DIMLFAC,dimtvp:a.DIMTVP,dimtfac:a.DIMTFAC,dimgap:a.DIMGAP,dimaltrnd:a.DIMALTRND,dimtol:a.DIMTOL==null||a.DIMTOL==0?0:1,dimlim:a.DIMLIM==null||a.DIMLIM==0?0:1,dimtih:a.DIMTIH==null||a.DIMTIH==0?0:1,dimtoh:a.DIMTOH==null||a.DIMTOH==0?0:1,dimse1:a.DIMSE1==null||a.DIMSE1==0?0:1,dimse2:a.DIMSE2==null||a.DIMSE2==0?0:1,dimtad:a.DIMTAD,dimzin:a.DIMZIN,dimazin:a.DIMAZIN,dimalt:a.DIMALT,dimaltd:a.DIMALTD,dimtofl:a.DIMTOFL,dimsah:a.DIMSAH,dimtix:a.DIMTIX,dimsoxd:a.DIMSOXD,dimclrd:a.DIMCLRD,dimclre:a.DIMCLRE,dimclrt:a.DIMCLRT,dimadec:a.DIMADEC||0,dimunit:a.DIMUNIT||2,dimdec:a.DIMDEC,dimtdec:a.DIMTDEC,dimaltu:a.DIMALTU,dimalttd:a.DIMALTTD,dimaunit:a.DIMAUNIT,dimfrac:a.DIMFRAC,dimlunit:a.DIMLUNIT,dimdsep:a.DIMDSEP?a.DIMDSEP.toString():".",dimtmove:a.DIMTMOVE||0,dimjust:a.DIMJUST,dimsd1:a.DIMSD1,dimsd2:a.DIMSD2,dimtolj:a.DIMTOLJ,dimtzin:a.DIMTZIN,dimaltz:a.DIMALTZ,dimalttz:a.DIMALTTZ,dimfit:a.DIMFIT||0,dimupt:a.DIMUPT,dimatfit:a.DIMATFIT,dimtxsty:a.DIMTXSTY||J,dimldrblk:a.DIMLDRBLK||"",dimblk:a.DIMBLK||"",dimblk1:a.DIMBLK1||"",dimblk2:a.DIMBLK2||"",dimlwd:a.DIMLWD,dimlwe:a.DIMLWE},l=new je(o);this.processCommonTableEntryAttrs(a,l),e.tables.dimStyleTable.add(l)})}}processCommonTableAttrs(t,e){t.handle!=null&&(e.objectId=t.handle),e.ownerId=t.ownerObjectId}processCommonTableEntryAttrs(t,e){e.name="name"in t?t.name:"",t.handle!=null&&(e.objectId=t.handle),e.ownerId=t.ownerObjectId}groupAndFlattenByType(t){const e={},s=[];for(const n of t)e[n.type]||(e[n.type]=[],s.push(n.type)),e[n.type].push(n);return s.flatMap(n=>e[n])}}class nl extends Yn{constructor(t){super({}),this._database=t}async parse(){return{model:this._database,data:{unknownEntityCount:0}}}getFonts(){return[]}async processEntities(t,e,s,n,r){let a=t.tables.blockTable.modelSpace.newIterator().toArray();const o=a.length,l=new Sn(o,100-n.value,s);this.config.convertByEntityType&&(a=this.groupAndFlattenByType(a));const c=e.tables.blockTable.modelSpace;await l.processChunk(async(d,u)=>{let g=[],p=d<u?a[d].type:"";for(let m=d;m<u;m++){const y=a[m];this.config.convertByEntityType&&y.type!==p&&(this.triggerEvents(c,g),g=[],p=y.type),g.push(y)}if(this.triggerEvents(c,g),r){let m=n.value+u/o*(100-n.value);m>100&&(m=100),await r(m,"ENTITY","IN-PROGRESS")}})}processBlocks(){const t=this._database.tables.blockTable.newIterator();for(const e of t){const s=e.newIterator().toArray();this.triggerEvents(e,s)}}processHeader(){}processBlockTables(){}processObjects(){const t=this._database.objects.layout.newIterator();for(const s of t)this._database.events.dictObjetSet.dispatch({database:this._database,object:s,key:s.layoutName});const e=this._database.objects.imageDefinition.newIterator();for(const s of e)this._database.events.dictObjetSet.dispatch({database:this._database,object:s,key:s.objectId})}processViewports(){}processLayers(){this._database.tables.layerTable.newIterator().toArray().forEach(e=>{this._database.events.layerAppended.dispatch({database:this._database,layer:e})})}processLineTypes(){}processTextStyles(){}processDimStyles(){}groupAndFlattenByType(t){const e={},s=[];for(const n of t)e[n.type]||(e[n.type]=[],s.push(n.type)),e[n.type].push(n);return s.flatMap(n=>e[n])}triggerEvents(t,e){(t.isModelSapce||t.isPaperSapce)&&t.database.events.entityAppended.dispatch({database:t.database,entity:e})}}exports.ACAD_APPID=dn;exports.AC_DB_SYSTEM_VARIABLE_NAMES=Dl;exports.AcCmColor=tt;exports.AcCmColorMethod=S;exports.AcCmColorUtil=le;exports.AcCmEntityColor=al;exports.AcCmErrors=yt;exports.AcCmEventDispatcher=ol;exports.AcCmEventManager=q;exports.AcCmLoader=ml;exports.AcCmLoadingManager=da;exports.AcCmObject=oa;exports.AcCmPerformanceCollector=In;exports.AcCmTask=la;exports.AcCmTaskScheduler=ca;exports.AcCmTransparency=Gi;exports.AcCmTransparencyMethod=ut;exports.AcDb2dPolyline=mi;exports.AcDb2dVertex=_n;exports.AcDb2dVertexType=to;exports.AcDb3PointAngularDimension=Ci;exports.AcDb3dPolyline=yi;exports.AcDb3dVertex=wn;exports.AcDb3dVertexType=eo;exports.AcDbAbstractViewTableRecord=Un;exports.AcDbAlignedDimension=Bi;exports.AcDbAngleUnits=An;exports.AcDbArc=_i;exports.AcDbArcDimension=xn;exports.AcDbAttribute=xi;exports.AcDbAttributeDefinition=wi;exports.AcDbAttributeFlags=K;exports.AcDbAttributeMTextFlag=Bt;exports.AcDbBaseWorker=ou;exports.AcDbBatchProcessing=Sn;exports.AcDbBlockReference=Qe;exports.AcDbBlockScaling=xo;exports.AcDbBlockTable=So;exports.AcDbBlockTableRecord=Z;exports.AcDbCircle=bi;exports.AcDbCodePage=Mn;exports.AcDbCurve=rt;exports.AcDbDataGenerator=Po;exports.AcDbDatabase=jl;exports.AcDbDatabaseConverter=Yn;exports.AcDbDatabaseConverterManager=Ct;exports.AcDbDiametricDimension=Fi;exports.AcDbDictionary=As;exports.AcDbDimArrowType=Eo;exports.AcDbDimStyleTable=Ao;exports.AcDbDimStyleTableRecord=je;exports.AcDbDimTextHorizontal=Mo;exports.AcDbDimTextVertical=To;exports.AcDbDimVerticalJustification=Lo;exports.AcDbDimZeroSuppression=vo;exports.AcDbDimZeroSuppressionAngular=ko;exports.AcDbDimension=ne;exports.AcDbDuplicateRecordCloning=Io;exports.AcDbDwgVersion=At;exports.AcDbDxfCode=fn;exports.AcDbDxfConverter=il;exports.AcDbDxfFiler=sa;exports.AcDbEllipse=fi;exports.AcDbEntity=gt;exports.AcDbFace=Ii;exports.AcDbFileType=fs;exports.AcDbHatch=Ns;exports.AcDbHatchPatternType=Ss;exports.AcDbHatchStyle=no;exports.AcDbHostApplicationServices=pi;exports.AcDbLayerTable=No;exports.AcDbLayerTableRecord=Hi;exports.AcDbLayout=Ws;exports.AcDbLayoutDictionary=wo;exports.AcDbLayoutManager=bo;exports.AcDbLeader=Pi;exports.AcDbLeaderAnnotationType=ro;exports.AcDbLine=Os;exports.AcDbLineSpacingStyle=uo;exports.AcDbLinetypeTable=Oo;exports.AcDbLinetypeTableRecord=ue;exports.AcDbMText=Cs;exports.AcDbObject=re;exports.AcDbObjectIterator=Gs;exports.AcDbOpenMode=ya;exports.AcDbOrdinateDimension=Ri;exports.AcDbOsnapMode=R;exports.AcDbPlotPaperUnits=po;exports.AcDbPlotRotation=go;exports.AcDbPlotSettings=_o;exports.AcDbPlotShadePlotResLevel=ce;exports.AcDbPlotShadePlotType=Xe;exports.AcDbPlotStdScaleType=yo;exports.AcDbPlotType=mo;exports.AcDbPoint=Mi;exports.AcDbPoly2dType=Ue;exports.AcDbPoly3dType=Es;exports.AcDbPolyFaceMesh=Oi;exports.AcDbPolyFaceMeshFace=co;exports.AcDbPolyFaceMeshVertex=lo;exports.AcDbPolygonMesh=Ni;exports.AcDbPolygonMeshVertex=ho;exports.AcDbPolyline=Ai;exports.AcDbRadialDimension=zi;exports.AcDbRasterImage=Fs;exports.AcDbRasterImageClipBoundaryType=ao;exports.AcDbRasterImageDef=fo;exports.AcDbRasterImageImageDisplayOpt=oo;exports.AcDbRay=Ti;exports.AcDbRegAppTable=Ro;exports.AcDbRegAppTableRecord=bn;exports.AcDbRegenerator=nl;exports.AcDbRenderingCache=Je;exports.AcDbResultBuffer=En;exports.AcDbSpline=Bs;exports.AcDbSymbolTable=ae;exports.AcDbSymbolTableRecord=ye;exports.AcDbSysVarManager=Rs;exports.AcDbSystemVariables=V;exports.AcDbTable=Ei;exports.AcDbText=Ke;exports.AcDbTextHorizontalMode=so;exports.AcDbTextStyleTable=Co;exports.AcDbTextStyleTableRecord=Ui;exports.AcDbTextVerticalMode=io;exports.AcDbTrace=Si;exports.AcDbUnitsValue=Hn;exports.AcDbViewTable=Bo;exports.AcDbViewTableRecord=Hl;exports.AcDbViewport=vi;exports.AcDbViewportTable=Fo;exports.AcDbViewportTableRecord=Xn;exports.AcDbWipeout=ki;exports.AcDbWorkerApi=el;exports.AcDbWorkerManager=tl;exports.AcDbXline=Li;exports.AcDbXrecord=Gn;exports.AcGeArea2d=vs;exports.AcGeBox2d=pt;exports.AcGeBox3d=C;exports.AcGeCatmullRomCurve3d=Za;exports.AcGeCircArc2d=Ve;exports.AcGeCircArc3d=ze;exports.AcGeCurve2d=ts;exports.AcGeEllipseArc2d=ks;exports.AcGeEllipseArc3d=Ze;exports.AcGeEuler=Ml;exports.AcGeGeometryUtil=Da;exports.AcGeLine2d=Ft;exports.AcGeLine3d=pe;exports.AcGeLoop2d=Ls;exports.AcGeMathUtil=L;exports.AcGeMatrix2d=Vs;exports.AcGeMatrix3d=Q;exports.AcGeNurbsCurve=Lt;exports.AcGePlane=Ds;exports.AcGePoint2d=v;exports.AcGePoint3d=x;exports.AcGePolyline2d=me;exports.AcGeQuaternion=We;exports.AcGeShape2d=zn;exports.AcGeSpline3d=Rt;exports.AcGeTol=Cn;exports.AcGeVector2d=U;exports.AcGeVector3d=f;exports.AcGiArrowType=Vn;exports.AcGiDefaultLightingType=Wn;exports.AcGiLineWeight=De;exports.AcGiMTextAttachmentPoint=ot;exports.AcGiMTextFlowDirection=ie;exports.AcGiOrthographicType=jn;exports.AcGiRenderMode=Dn;exports.AcGiViewport=Qa;exports.AcTrStringUtil=gl;exports.ByBlock=gi;exports.ByLayer=qe;exports.DEBUG_MODE=ul;exports.DEFAULT_LINE_TYPE=$e;exports.DEFAULT_TEXT_STYLE=J;exports.DEFAULT_TOL=Bn;exports.DEG2RAD=Tn;exports.DefaultLoadingManager=ua;exports.FLOAT_TOL=Fe;exports.MLIGHTCAD_APPID=cn;exports.ORIGIN_POINT_2D=wl;exports.ORIGIN_POINT_3D=On;exports.RAD2DEG=vn;exports.TAU=j;exports.TEMP_OBJECT_ID_PREFIX=ni;exports.acdbDisableOsnapMode=Cl;exports.acdbEnableOsnapMode=Ol;exports.acdbHasOsnapMode=Nl;exports.acdbHostApplicationServices=Pn;exports.acdbMaskToOsnapModes=kl;exports.acdbOsnapModesToMask=vl;exports.acdbToggleOsnapMode=Ll;exports.basisFunction=Ts;exports.calculateCurveLength=Ga;exports.ceilPowerOfTwo=Na;exports.clamp=se;exports.clone=ws;exports.computeParameterValues=ja;exports.createWorkerApi=sl;exports.damp=fa;exports.deepClone=on;exports.defaults=zs;exports.degToRad=va;exports.dwgCodePageToEncoding=_a;exports.euclideanModulo=kn;exports.evaluateNurbsPoint=Ps;exports.floorPowerOfTwo=Oa;exports.generateAveragedKnots=Wa;exports.generateChordKnots=bl;exports.generateSqrtChordKnots=fl;exports.generateUUID=wa;exports.generateUniformKnots=xl;exports.has=ia;exports.intPartLength=Nn;exports.interpolateControlPoints=Il;exports.interpolateNurbsCurve=Rn;exports.inverseLerp=ba;exports.isBetween=Ca;exports.isBetweenAngle=Ba;exports.isEmpty=na;exports.isEqual=Ye;exports.isImperialUnits=zl;exports.isMetricUnits=Rl;exports.isPointInPolygon=Fn;exports.isPolygonIntersect=Va;exports.isPowerOfTwo=La;exports.lerp=Ln;exports.log=bs;exports.mapLinear=xa;exports.normalizeAngle=Is;exports.pingpong=Ia;exports.radToDeg=ka;exports.randFloat=Aa;exports.randFloatSpread=Ma;exports.randInt=Sa;exports.relativeEps=Fa;exports.seededRandom=Ta;exports.setAcDbHostApplicationServicesProvider=ga;exports.setAcDbLayoutManagerFactory=ma;exports.setLogLevel=pl;exports.smootherstep=Ea;exports.smoothstep=Pa;
3
+ `}registerHandle(t){return this._handleMap.has(t)||(/^[0-9A-F]+$/i.test(t)?this._handleMap.set(t,t.toUpperCase()):(this._handleMap.set(t,this._nextHandle.toString(16).toUpperCase()),this._nextHandle+=1)),this._handleMap.get(t)}resolveHandle(t){if(t)return this.registerHandle(t)}writeGroup(t,e){if(e==null)return this;this._lines.push(String(Math.trunc(t)));const s=this.formatValue(e);return this._lines.push(s===""?"0":s),this}writeStart(t){return this.writeString(0,t)}writeSubclassMarker(t){return this.writeString(100,t)}writeString(t,e){return!e&&e!==""?this:this.writeGroup(t,e)}writeInt8(t,e){return e==null?this:this.writeGroup(t,Math.trunc(e))}writeInt16(t,e){return e==null?this:this.writeGroup(t,Math.trunc(e))}writeInt32(t,e){return e==null?this:this.writeGroup(t,Math.trunc(e))}writeInt64(t,e){return e==null?this:this.writeGroup(t,Math.trunc(e))}writeUInt16(t,e){return e==null?this:this.writeGroup(t,Math.max(0,e))}writeUInt32(t,e){return e==null?this:this.writeGroup(t,Math.max(0,e))}writeBoolean(t,e){return e==null?this:this.writeGroup(t,e?1:0)}writeBool(t,e){return this.writeBoolean(t,e)}writeDouble(t,e){return e==null||!Number.isFinite(e)?this:this.writeGroup(t,e)}writeAngle(t,e){return e==null||!Number.isFinite(e)?this:this.writeDouble(t,e*180/Math.PI)}writeHandle(t,e){const s=this.resolveHandle(e);return s?this.writeString(t,s):this}writeObjectId(t,e){return this.writeHandle(t,e)}writePoint2d(t,e){return e?(this.writeDouble(t,e.x),this.writeDouble(t+10,e.y),this):this}writePoint3d(t,e){return e?(this.writeDouble(t,e.x),this.writeDouble(t+10,e.y),this.writeDouble(t+20,e.z??0),this):this}writeVector3d(t,e){return e?(this.writeDouble(t,e.x),this.writeDouble(t+10,e.y),this.writeDouble(t+20,e.z??0),this):this}writeCmColor(t,e=62,s=420){if(!t)return this;const n=t.colorIndex;n!=null&&this.writeInt16(e,n);const r=t.RGB;return r!=null&&t.colorIndex==null&&this.writeInt32(s,r),this}writeTransparency(t,e=440){return t?this.writeInt32(e,t.serialize()):this}writeResultBuffer(t){if(!t)return this;for(const e of t)this.writeGroup(e.code,e.value);return this}startSection(t){return this.writeStart("SECTION"),this.writeString(2,t),this}endSection(){return this.writeStart("ENDSEC"),this}startTable(t){return this.writeStart("TABLE"),this.writeString(2,t),this}endTable(){return this.writeStart("ENDTAB"),this}formatValue(t){if(typeof t=="string")return this.sanitizeStringForDxfLine(t);if(typeof t=="boolean")return t?"1":"0";if(typeof t=="number"){if(!Number.isFinite(t))return"0";if(Number.isInteger(t))return String(t);const s=t.toFixed(this._precision).replace(/\.?0+$/,"");return s===""||s==="-"?"0":s}return String(t)}sanitizeStringForDxfLine(t){return t.replace(/\r\n|\r|\n/g," ").replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g,"")}}function ol(i,t){for(var e=0;e<t.length;e++){const s=t[e];if(typeof s!="string"&&!Array.isArray(s)){for(const n in s)if(n!=="default"&&!(n in i)){const r=Object.getOwnPropertyDescriptor(s,n);r&&Object.defineProperty(i,n,r.get?r:{enumerable:!0,get:()=>s[n]})}}}return Object.freeze(Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}))}var S=(i=>(i[i.ByColor=1]="ByColor",i[i.ByACI=2]="ByACI",i[i.ByLayer=3]="ByLayer",i[i.ByBlock=4]="ByBlock",i[i.None=0]="None",i))(S||{});const Fr={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Zi=[0,16711680,16776960,65280,65535,255,16711935,16777215,8421504,12632256,16711680,16744319,13369344,13395558,10027008,10046540,8323072,8339263,4980736,4990502,16727808,16752511,13382400,13401958,10036736,10051404,8331008,8343359,4985600,4992806,16744192,16760703,13395456,13408614,10046464,10056268,8339200,8347455,4990464,4995366,16760576,16768895,13408512,13415014,10056192,10061132,8347392,8351551,4995328,4997670,16776960,16777087,13421568,13421670,10000384,10000460,8355584,8355647,5000192,5000230,12582656,14679935,10079232,11717734,7510016,8755276,6258432,7307071,3755008,4344870,8388352,12582783,6736896,10079334,5019648,7510092,4161280,6258495,2509824,3755046,4194048,10485631,3394560,8375398,2529280,6264908,2064128,5209919,1264640,3099686,65280,8388479,52224,6736998,38912,5019724,32512,4161343,19456,2509862,65343,8388511,52275,6737023,38950,5019743,32543,4161359,19475,2509871,65407,8388543,52326,6737049,38988,5019762,32575,4161375,19494,2509881,65471,8388575,52377,6737074,39026,5019781,32607,4161391,19513,2509890,65535,8388607,52428,6737100,39064,5019800,32639,4161407,19532,2509900,49151,8380415,39372,6730444,29336,5014936,24447,4157311,14668,2507340,32767,8372223,26316,6724044,19608,5010072,16255,4153215,9804,2505036,16383,8364031,13260,6717388,9880,5005208,8063,4149119,4940,2502476,255,8355839,204,6710988,152,5000344,127,4145023,76,2500172,4129023,10452991,3342540,8349388,2490520,6245528,2031743,5193599,1245260,3089996,8323327,12550143,6684876,10053324,4980888,7490712,4128895,6242175,2490444,3745356,12517631,14647295,10027212,11691724,7471256,8735896,6226047,7290751,3735628,4335180,16711935,16744447,13369548,13395660,9961624,9981080,8323199,8339327,4980812,4990540,16711871,16744415,13369497,13395634,9961586,9981061,8323167,8339311,4980793,4990530,16711807,16744383,13369446,13395609,9961548,9981042,8323135,8339295,4980774,4990521,16711743,16744351,13369395,13395583,9961510,9981023,8323103,8339279,4980755,4990511,3355443,5987163,8684676,11382189,14079702,16777215,0];let ce=class{static getColorByIndex(t){return Zi[t]}static getIndexByColor(t){const e=Zi.length-1;for(let s=1;s<e;++s)if(Zi[s]===t)return s}static getColorByName(t){return Fr[t.toLowerCase()]}static getNameByColor(t){for(const[e,s]of Object.entries(Fr))if(s===t)return e}static getNameByIndex(t){const e=this.getColorByIndex(t);return this.getNameByColor(e)}},tt=class se{constructor(t=S.ByLayer,e){this._colorMethod=t,this._colorMethod==S.ByColor&&e==null?this._value=16777215:this._colorMethod==S.ByACI?e==null?this._value=8:e===0?this._colorMethod=S.ByBlock:e===256?this._colorMethod=S.ByLayer:this._value=Math.max(0,Math.min(e,256)):this._value=e}get colorMethod(){return this._colorMethod}set colorMethod(t){this._colorMethod=t}get red(){const t=this.RGB;return t!=null?t>>16&255:void 0}get green(){const t=this.RGB;return t!=null?t>>8&255:void 0}get blue(){const t=this.RGB;return t!=null?t&255:void 0}get RGB(){switch(this._colorMethod){case S.ByColor:case S.ByBlock:case S.ByLayer:return this._value;case S.ByACI:return this._value?ce.getColorByIndex(this._value):this._value;default:return}}setRGB(t,e,s){const n=Math.max(0,Math.min(255,Math.round(t))),r=Math.max(0,Math.min(255,Math.round(e))),a=Math.max(0,Math.min(255,Math.round(s)));return this._value=n<<16|r<<8|a,this._colorMethod=S.ByColor,this}setRGBValue(t){return t==null||!Number.isFinite(t)?this:(this._value=t&16777215,this._colorMethod=S.ByColor,this)}setRGBFromCss(t){if(!t)return this;const e=t.trim().toLowerCase();if(e.startsWith("#")){let r=0,a=0,o=0;if(e.length===7)r=parseInt(e.substr(1,2),16),a=parseInt(e.substr(3,2),16),o=parseInt(e.substr(5,2),16);else if(e.length===4)r=parseInt(e[1]+e[1],16),a=parseInt(e[2]+e[2],16),o=parseInt(e[3]+e[3],16);else return this;return this.setRGB(r,a,o)}const s=e.match(/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);if(s){const r=parseInt(s[1],10),a=parseInt(s[2],10),o=parseInt(s[3],10);return this.setRGB(r,a,o)}const n=ce.getColorByName(t);return n!==void 0?this.setRGBValue(n):this}setScalar(t){return this.setRGB(t,t,t)}get hexColor(){const t=this.RGB;return t==null?void 0:"0x"+t.toString(16).padStart(6,"0").toUpperCase()}get cssColor(){const t=this.RGB;if(t!=null)return`rgb(${t>>16&255},${t>>8&255},${t&255})`}cssColorAlpha(t){const e=this.RGB;if(e!=null)return`rgba(${e>>16&255},${e>>8&255},${e&255},${t})`}get colorIndex(){return this._colorMethod===S.ByACI?this._value:this._colorMethod===S.ByLayer?256:this._colorMethod===S.ByBlock?0:void 0}set colorIndex(t){if(t==null)return;const e=Math.max(0,Math.min(256,Math.round(t)));e===0?(this._colorMethod=S.ByBlock,this._value=void 0):e===256?(this._colorMethod=S.ByLayer,this._value=void 0):(this._colorMethod=S.ByACI,this._value=e)}get isByColor(){return this._colorMethod===S.ByColor}get isByACI(){return this._colorMethod===S.ByACI}get isForeground(){return this._colorMethod===S.ByACI&&this._value===7}setForeground(){return this._colorMethod=S.ByACI,this._value=7,this}get isByLayer(){return this._colorMethod===S.ByLayer}setByLayer(t){return this._colorMethod=S.ByLayer,t==null?this._value=256:this._value=t,this}get isByBlock(){return this._colorMethod===S.ByBlock}setByBlock(t){return this._colorMethod=S.ByBlock,t==null?this._value=0:this._value=t,this}get colorName(){switch(this._colorMethod){case S.ByLayer:return"ByLayer";case S.ByBlock:return"ByBlock";case S.ByColor:return this._value?ce.getNameByColor(this._value):"";case S.ByACI:return this._value?ce.getNameByIndex(this._value):"";default:return}}set colorName(t){if(!t)return;const e=ce.getColorByName(t);e!==void 0&&(this._value=e,this._colorMethod=S.ByColor)}clone(){const t=new se;return t._colorMethod=this._colorMethod,t._value=this._value,t}copy(t){return this._colorMethod=t._colorMethod,this._value=t._value,this}equals(t){return this._colorMethod===t._colorMethod&&this._value===t._value}toString(){switch(this._colorMethod){case S.ByLayer:return"ByLayer";case S.ByBlock:return"ByBlock";case S.ByACI:return this._value!==void 0?String(this._value):"";case S.ByColor:return this._value?`${this.red},${this.green},${this.blue}`:"";default:return""}}static fromString(t){if(!t)return;const e=t.trim();if(/^bylayer$/i.test(e))return new se(S.ByLayer);if(/^byblock$/i.test(e))return new se(S.ByBlock);const s=e.match(/^rgb\s*:\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})$/i);if(s){const r=Number(s[1]),a=Number(s[2]),o=Number(s[3]),l=new se(S.ByColor);return l.setRGB(r,a,o),l}if(/^\d{1,3},\d{1,3},\d{1,3}$/.test(e)){const[r,a,o]=e.split(",").map(Number),l=new se(S.ByColor);return l.setRGB(r,a,o),l}if(/^\d+$/.test(e)){const r=parseInt(e,10);return new se(S.ByACI,r)}if(/^book\$/i.test(e)){const r=e.substring(e.indexOf("$")+1),a=ce.getColorByName(r);return a!=null?new se(S.ByColor,a):void 0}const n=ce.getColorByName(e);if(n!=null)return new se(S.ByColor,n)}};class hl{constructor(t=S.ByColor,e=0){this._colorMethod=t,this._value=e}get colorMethd(){return this._colorMethod}get red(){return this._value>>16&255}set red(t){this._colorMethod=S.ByColor,this._value=this._value&65535|(t&255)<<16}get green(){return this._value>>8&255}set green(t){this._colorMethod=S.ByColor,this._value=this._value&16711935|(t&255)<<8}get blue(){return this._value&255}set blue(t){this._colorMethod=S.ByColor,this._value=this._value&16776960|t&255}setRGB(t,e,s){this._colorMethod=S.ByColor,this._value=(t&255)<<16|(e&255)<<8|s&255}get colorIndex(){return this._value}set colorIndex(t){this._colorMethod=S.ByACI,this._value=t}get layerIndex(){return this._value}set layerIndex(t){this._colorMethod=S.ByLayer,this._value=t}isByColor(){return this._colorMethod===S.ByColor}isByLayer(){return this._colorMethod===S.ByLayer}isByBlock(){return this._colorMethod===S.ByBlock}isByACI(){return this._colorMethod===S.ByACI}isNone(){return this._colorMethod===S.None}get rawValue(){return this._value}set rawValue(t){this._value=t}}const yt={get ILLEGAL_PARAMETERS(){return new ReferenceError("Illegal Parameters")},get ZERO_DIVISION(){return new Error("Zero division")},get UNRESOLVED_BOUNDARY_CONFLICT(){return new Error("Unresolved boundary conflict in boolean operation")},get INFINITE_LOOP(){return new Error("Infinite loop")},get CANNOT_INVOKE_ABSTRACT_METHOD(){return new Error("Abstract method cannot be invoked")},get OPERATION_IS_NOT_SUPPORTED(){return new Error("Operation is not supported")},get NOT_IMPLEMENTED(){return new Error("Not implemented yet")}};let ll=class{constructor(){this._listeners={}}addEventListener(t,e){this._listeners===void 0&&(this._listeners={});const s=this._listeners;s[t]===void 0&&(s[t]=[]),s[t].indexOf(e)===-1&&s[t].push(e)}hasEventListener(t,e){if(this._listeners===void 0)return!1;const s=this._listeners;return s[t]!==void 0&&s[t].indexOf(e)!==-1}removeEventListener(t,e){if(this._listeners===void 0)return;const s=this._listeners[t];if(s!==void 0){const n=s.indexOf(e);n!==-1&&s.splice(n,1)}}dispatchEvent(t){if(this._listeners===void 0)return;const e=this._listeners[t.type];if(e!==void 0){t.target=this;const s=e.slice(0);for(let n=0,r=s.length;n<r;n++)s[n].call(this,t)}}},q=class{constructor(){this.listeners=[]}addEventListener(t){this.listeners.push(t)}removeEventListener(t){this.listeners=this.listeners.filter(e=>e!==t)}replaceEventListener(t){this.removeEventListener(t),this.addEventListener(t)}dispatch(t,...e){for(const s of this.listeners)s.call(null,t,...e)}};function ws(i){return i===null||typeof i!="object"?i:Array.isArray(i)?[...i]:{...i}}function cn(i){if(i===null||typeof i!="object")return i;if(i instanceof Date)return new Date(i.getTime());if(i instanceof RegExp)return new RegExp(i.source,i.flags);if(Array.isArray(i))return i.map(cn);const t={};for(const e in i)Object.prototype.hasOwnProperty.call(i,e)&&(t[e]=cn(i[e]));return t}function Vs(i,...t){for(const e of t)if(e)for(const s in e)Object.prototype.hasOwnProperty.call(e,s)&&i[s]===void 0&&(i[s]=e[s]);return i}function na(i,t){return i!=null&&Object.prototype.hasOwnProperty.call(i,t)}function ra(i){return i==null?!0:Array.isArray(i)||typeof i=="string"?i.length===0:i instanceof Map||i instanceof Set?i.size===0:typeof i=="object"?Object.keys(i).length===0:!1}function Ye(i,t){if(i===t)return!0;if(i==null||t==null)return i===t;if(typeof i!=typeof t)return!1;if(typeof i!="object")return i===t;if(Array.isArray(i)!==Array.isArray(t))return!1;if(Array.isArray(i)){if(i.length!==t.length)return!1;for(let n=0;n<i.length;n++)if(!Ye(i[n],t[n]))return!1;return!0}const e=Object.keys(i),s=Object.keys(t);if(e.length!==s.length)return!1;for(const n of e)if(!Object.prototype.hasOwnProperty.call(t,n)||!Ye(i[n],t[n]))return!1;return!0}var cl=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function dl(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var aa={exports:{}};(function(i){(function(t,e){i.exports?i.exports=e():t.log=e()})(cl,function(){var t=function(){},e="undefined",s=typeof window!==e&&typeof window.navigator!==e&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"],r={},a=null;function o(y,w){var b=y[w];if(typeof b.bind=="function")return b.bind(y);try{return Function.prototype.bind.call(b,y)}catch{return function(){return Function.prototype.apply.apply(b,[y,arguments])}}}function l(){console.log&&(console.log.apply||Function.prototype.apply.apply(console.log,[console,arguments]))}function c(y){return y==="debug"&&(y="log"),typeof console===e?!1:y==="trace"&&s?l:console[y]!==void 0?o(console,y):console.log!==void 0?o(console,"log"):t}function d(){for(var y=this.getLevel(),w=0;w<n.length;w++){var b=n[w];this[b]=w<y?t:this.methodFactory(b,y,this.name)}if(this.log=this.debug,typeof console===e&&y<this.levels.SILENT)return"No console available for logging"}function u(y){return function(){typeof console!==e&&(d.call(this),this[y].apply(this,arguments))}}function g(y,w,b){return c(y)||u.apply(this,arguments)}function p(y,w){var b=this,E,I,T,A="loglevel";typeof y=="string"?A+=":"+y:typeof y=="symbol"&&(A=void 0);function W(F){var H=(n[F]||"silent").toUpperCase();if(!(typeof window===e||!A)){try{window.localStorage[A]=H;return}catch{}try{window.document.cookie=encodeURIComponent(A)+"="+H+";"}catch{}}}function M(){var F;if(!(typeof window===e||!A)){try{F=window.localStorage[A]}catch{}if(typeof F===e)try{var H=window.document.cookie,_e=encodeURIComponent(A),we=H.indexOf(_e+"=");we!==-1&&(F=/^([^;]+)/.exec(H.slice(we+_e.length+1))[1])}catch{}return b.levels[F]===void 0&&(F=void 0),F}}function Y(){if(!(typeof window===e||!A)){try{window.localStorage.removeItem(A)}catch{}try{window.document.cookie=encodeURIComponent(A)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function B(F){var H=F;if(typeof H=="string"&&b.levels[H.toUpperCase()]!==void 0&&(H=b.levels[H.toUpperCase()]),typeof H=="number"&&H>=0&&H<=b.levels.SILENT)return H;throw new TypeError("log.setLevel() called with invalid level: "+F)}b.name=y,b.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},b.methodFactory=w||g,b.getLevel=function(){return T??I??E},b.setLevel=function(F,H){return T=B(F),H!==!1&&W(T),d.call(b)},b.setDefaultLevel=function(F){I=B(F),M()||b.setLevel(F,!1)},b.resetLevel=function(){T=null,Y(),d.call(b)},b.enableAll=function(F){b.setLevel(b.levels.TRACE,F)},b.disableAll=function(F){b.setLevel(b.levels.SILENT,F)},b.rebuild=function(){if(a!==b&&(E=B(a.getLevel())),d.call(b),a===b)for(var F in r)r[F].rebuild()},E=B(a?a.getLevel():"WARN");var et=M();et!=null&&(T=B(et)),d.call(b)}a=new p,a.getLogger=function(y){if(typeof y!="symbol"&&typeof y!="string"||y==="")throw new TypeError("You must supply a name when creating a logger.");var w=r[y];return w||(w=r[y]=new p(y,a.methodFactory)),w};var m=typeof window!==e?window.log:void 0;return a.noConflict=function(){return typeof window!==e&&window.log===a&&(window.log=m),a},a.getLoggers=function(){return r},a.default=a,a})})(aa);var oa=aa.exports;const ul=dl(oa),pl=ol({__proto__:null,default:ul},[oa]),gl=!0,fs=pl;fs.setLevel("debug");const ml=i=>{try{fs.setLevel(i)}catch(t){fs.setLevel("error"),fs.error(t)}};let ha=class la{constructor(t,e){this.events={attrChanged:new q,modelChanged:new q},this._changing=!1,this._previousAttributes={},this._pending=!1;const s=t||{};e&&Vs(s,e),this.attributes=s,this.changed={}}get(t){return this.attributes[t]}set(t,e,s){if(t==null)return this;let n;typeof t=="object"?(n=t,s=e):(n={},n[t]=e),s||(s={});const r=s.unset,a=s.silent,o=[],l=this._changing;this._changing=!0,l||(this._previousAttributes=ws(this.attributes),this.changed={});const c=this.attributes,d=this.changed,u=this._previousAttributes;for(const g in n)e=n[g],Ye(c[g],e)||o.push(g),Ye(u[g],e)?delete d[g]:d[g]=e,r?delete c[g]:c[g]=e;if(!a){o.length&&(this._pending=s);for(let g=0;g<o.length;g++)this.events.attrChanged.dispatch({object:this,attrName:o[g],attrValue:c[o[g]],options:s})}if(l)return this;if(!a)for(;this._pending;)s=this._pending,this._pending=!1,this.events.modelChanged.dispatch({object:this,options:s});return this._pending=!1,this._changing=!1,this}has(t){return this.get(t)!=null}hasChanged(t){return t==null?!ra(this.changed):na(this.changed,t)}changedAttributes(t){if(!t)return this.hasChanged()?ws(this.changed):{};const e=this._changing?this._previousAttributes:this.attributes,s={};for(const n in t){const r=t[n];Ye(e[n],r)||(s[n]=r)}return s}previous(t){return t==null||!this._previousAttributes?null:this._previousAttributes[t]}previousAttributes(){return ws(this._previousAttributes)}clone(){const t=ws(this.attributes);return new la(t)}},Sn=class xs{constructor(){this.entries=new Map}static getInstance(){return xs.instance||(xs.instance=new xs),xs.instance}collect(t){this.entries.set(t.name,t)}printAll(){for(const[t,e]of this.entries);}clear(){this.entries.clear()}getAll(){return Array.from(this.entries.values())}getEntry(t){return this.entries.get(t)}remove(t){return this.entries.delete(t)}};class yl{static formatBytes(t,e=2){if(t===0)return"0 B";const s=1024,n=Math.max(0,e),r=["B","KB","MB","GB","TB"],a=Math.floor(Math.log(t)/Math.log(s)),o=t/Math.pow(s,a);return`${parseFloat(o.toFixed(n))} ${r[a]}`}}var ut=(i=>(i[i.ByLayer=0]="ByLayer",i[i.ByBlock=1]="ByBlock",i[i.ByAlpha=2]="ByAlpha",i[i.ErrorValue=3]="ErrorValue",i))(ut||{});let Ui=class Nt{constructor(t){t!==void 0?(this._method=ut.ByAlpha,this._alpha=Nt.clampAlpha(t)):(this._method=ut.ByLayer,this._alpha=255)}get method(){return this._method}set method(t){this._method=t}get alpha(){return this._alpha}set alpha(t){this._alpha=Nt.clampAlpha(t),this._method=ut.ByAlpha}get percentage(){if(this._method===ut.ByAlpha)return Math.round((1-this._alpha/255)*100)}set percentage(t){const e=Math.max(0,Math.min(100,t)),s=Math.round(255*(1-e/100));this.alpha=s}static clampAlpha(t){return Math.max(0,Math.min(255,Math.floor(t)))}get isByAlpha(){return this._method===ut.ByAlpha}get isByBlock(){return this._method===ut.ByBlock}get isByLayer(){return this._method===ut.ByLayer}get isClear(){return this.isByAlpha&&this._alpha===0}get isSolid(){return this.isByAlpha&&this._alpha===255}get isInvalid(){return this._method===ut.ErrorValue}serialize(){return this._method<<24|this._alpha}clone(){const t=new Nt;return t._method=this._method,t._alpha=this._alpha,t}equals(t){return this._method===t._method&&this._alpha===t._alpha}toString(){return this.isByLayer?"ByLayer":this.isByBlock?"ByBlock":this._alpha.toString()}static fromString(t){const e=t.trim();if(/^bylayer$/i.test(e)){const r=new Nt;return r._method=ut.ByLayer,r}if(/^byblock$/i.test(e)){const r=new Nt;return r._method=ut.ByBlock,r}const s=Number(e);if(Number.isInteger(s)&&s>=0&&s<=255)return new Nt(s);const n=new Nt;return n._method=ut.ErrorValue,n}static deserialize(t){const e=t>>>24&255,s=t&255,n=Object.values(ut)[e]??ut.ErrorValue,r=new Nt;return r._method=n,r._alpha=Nt.clampAlpha(s),r}};class ca{constructor(t){this.name=t}run(t){throw new Error("run() must be implemented by subclass")}}class da{constructor(){this.tasks=[],this.onProgress=()=>{},this.onComplete=()=>{},this.onError=()=>!1}scheduleTask(t){return new Promise((e,s)=>{const n=()=>{Promise.resolve(t()).then(e).catch(s)};typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(n):setTimeout(n,0)})}addTask(t){this.tasks.push(t)}setProgressCallback(t){this.onProgress=t}setCompleteCallback(t){this.onComplete=t}setErrorCallback(t){this.onError=t}async run(t){const e=this.tasks.length;let s=t;for(let n=0;n<e;n++){const r=this.tasks[n];try{s=await this.scheduleTask(async()=>{const a=await r.run(s);return this.onProgress((n+1)/e,r),a})}catch(a){if(this.onError({error:a,taskIndex:n,task:r}))return Promise.reject(a)}}this.onComplete(s)}}let ua=class{constructor(t,e,s){this.isLoading=!1,this.itemsLoaded=0,this.itemsTotal=0,this.urlModifier=void 0,this.handlers=[],this.onStart=void 0,this.onLoad=t,this.onProgress=e,this.onError=s}itemStart(t){this.itemsTotal++,this.isLoading===!1&&this.onStart!==void 0&&this.onStart(t,this.itemsLoaded,this.itemsTotal),this.isLoading=!0}itemEnd(t){this.itemsLoaded++,this.onProgress!==void 0&&this.onProgress(t,this.itemsLoaded,this.itemsTotal),this.itemsLoaded===this.itemsTotal&&(this.isLoading=!1,this.onLoad!==void 0&&this.onLoad())}itemError(t){this.onError!==void 0&&this.onError(t)}resolveURL(t){return this.urlModifier?this.urlModifier(t):t}setURLModifier(t){return this.urlModifier=t,this}addHandler(t,e){return this.handlers.push(t,e),this}removeHandler(t){const e=this.handlers.indexOf(t);return e!==-1&&this.handlers.splice(e,2),this}getHandler(t){for(let e=0,s=this.handlers.length;e<s;e+=2){const n=this.handlers[e],r=this.handlers[e+1];if(n.global&&(n.lastIndex=0),n.test(t))return r}return null}};const pa=new ua;class _l{constructor(t){this.manager=t!==void 0?t:pa,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}loadAsync(t,e){return new Promise((s,n)=>{this.load(t,s,e,n)})}parse(t){}setCrossOrigin(t){return this.crossOrigin=t,this}setWithCredentials(t){return this.withCredentials=t,this}setPath(t){return this.path=t,this}setResourcePath(t){return this.resourcePath=t,this}setRequestHeader(t){return this.requestHeader=t,this}}var Re=256,ga=[],Rr=256,ti;for(;Re--;)ga[Re]=(Re+256).toString(16).substring(1);function wl(i){var t=0,e=11;if(!ti||Re+e>Rr*2)for(ti="",Re=0;t<Rr;t++)ti+=ga[Math.random()*256|0];return ti.substring(Re,Re+++e)}const ai="TEMP_";let dn;function ma(i){dn=i}class ae{constructor(t,e){if(t=t||{},this._attrs=new ha(t,e),this._xDataMap=new Map,!this._attrs.get("objectId"))try{this._attrs.set("objectId",this.database.generateHandle())}catch{this._attrs.set("objectId",this.generateTemporaryHandle())}}generateTemporaryHandle(){return ai+wl()}get attrs(){return this._attrs}getAttr(t){const e=this._attrs.get(t);if(e===void 0)throw new Error(`[AcDbObject] Attribute name '${t}' does't exist in this object!`);return e}getAttrWithoutException(t){return this._attrs.get(t)}setAttr(t,e){this._attrs.set(t,e)}get objectId(){return this.getAttr("objectId")}set objectId(t){this._attrs.set("objectId",t),t&&!t.startsWith(ai)&&this.database.updateMaxHandle(t)}get isTemp(){const t=this.getAttrWithoutException("objectId");return!!t&&t.startsWith(ai)}get ownerId(){return this.getAttr("ownerId")}set ownerId(t){this._attrs.set("ownerId",t)}get extensionDictionary(){return this.getAttrWithoutException("extensionDictionary")}set extensionDictionary(t){this._attrs.set("extensionDictionary",t)}get database(){if(this._database)return this._database;if(dn)return dn().workingDatabase;throw new Error("The current working database must be set before using it!")}set database(t){this._database=t}getXData(t){return this._xDataMap.get(t)}setXData(t){for(const e of t)e.code===En.ExtendedDataRegAppName&&this._xDataMap.set(e.value,t)}removeXData(t){this._xDataMap.delete(t)}createExtensionDictionary(){}close(){}clone(){const t=Object.create(Object.getPrototypeOf(this)),e=this,s=t;for(const n of Object.keys(e))n!=="_database"&&(s[n]=this.cloneValue(e[n]));return t.objectId=this.generateTemporaryHandle(),t}cloneValue(t){if(t==null||typeof t!="object")return t;if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp)return new RegExp(t.source,t.flags);if(Array.isArray(t))return t.map(n=>this.cloneValue(n));if(t instanceof Map){const n=new Map;for(const[r,a]of t.entries())n.set(this.cloneValue(r),this.cloneValue(a));return n}if(t instanceof Set){const n=new Set;for(const r of t.values())n.add(this.cloneValue(r));return n}if(ArrayBuffer.isView(t)){if(t instanceof DataView)return new DataView(t.buffer.slice(0));const n=t.constructor;return new n(t)}if(t instanceof ArrayBuffer)return t.slice(0);if("clone"in t&&typeof t.clone=="function")return t.clone();const e=Object.create(Object.getPrototypeOf(t)),s=t;for(const n of Object.keys(s))e[n]=this.cloneValue(s[n]);return e}dxfOut(...t){const[e,s=!1]=t;if(e.writeHandle(5,this.objectId),e.writeObjectId(330,this.ownerId),e.writeObjectId(360,this.extensionDictionary),this.dxfOutFields(e),s)for(const n of this._xDataMap.values())e.writeResultBuffer(n);return this}dxfOutFields(t){return this}}let un;function ya(i){un=i}function An(){return mi.instance}const Wi=class Wi{constructor(){this._workingDatabase=null}get workingDatabase(){if(this._workingDatabase==null)throw new Error("The current working database must be set before using it!");return this._workingDatabase}set workingDatabase(t){this._workingDatabase=t}get layoutManager(){if(!this._layoutManager){if(!un)throw new Error("The layout manager factory must be registered before using it!");this._layoutManager=un()}return this._layoutManager}};Wi.instance=new Wi;let mi=Wi;ma(An);var _a=(i=>(i.kForRead="kForRead",i.kForWrite="kForWrite",i))(_a||{});class Mn{constructor(t){if(this._values=[],t)for(const e of t)this._values.push({...e})}get length(){return this._values.length}at(t){return this._values[t]}add(t){this._values.push(t)}addRange(t){for(const e of t)this._values.push(e)}clear(){this._values.length=0}toArray(){return this._values.map(t=>({...t}))}clone(){return new Mn(this._values)}[Symbol.iterator](){return this._values[Symbol.iterator]()}}class Tn{constructor(t,e,s){this._chunkSize=-1,this._minimumChunkSize=50,this._count=t,this._numerOfChunk=e<1?1:e,this._minimumChunkSize=s,this.calculateChunkSize()}get count(){return this._count}get numerOfChunk(){return this._numerOfChunk}get minimumChunkSize(){return this._minimumChunkSize}set minimumChunkSize(t){this._minimumChunkSize=t,this.calculateChunkSize()}get chunkSize(){return this._chunkSize}calculateChunkSize(){let t=this._count/this._numerOfChunk;t<this._minimumChunkSize&&(t=Math.min(this._minimumChunkSize,this._count)),this._chunkSize=t<1?this._count:Math.floor(t)}scheduleTask(t){return new Promise((e,s)=>{const n=()=>{Promise.resolve(t()).then(e).catch(s)};typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(n):setTimeout(n,0)})}async processChunk(t,e){if(this._count<=0){await(e==null?void 0:e());return}let s=0;const n=async()=>{const r=s,a=Math.min(s+this._chunkSize,this._count);await t(r,a),s=a,s<this._count&&await this.scheduleTask(n)};await n(),await(e==null?void 0:e())}}var Is=(i=>(i.DXF="dxf",i.DWG="dwg",i))(Is||{});class Ct{constructor(){this.events={registered:new q,unregistered:new q},this._converters=new Map,this.register("dxf",new rl)}static createInstance(){return Ct._instance==null&&(Ct._instance=new Ct),this._instance}static get instance(){return Ct._instance||(Ct._instance=new Ct),Ct._instance}get fileTypes(){return this._converters.keys()}register(t,e){this._converters.set(t,e),this.events.registered.dispatch({fileType:t,converter:e})}get(t){return this._converters.get(t)}unregister(t){const e=this._converters.get(t);e&&(this._converters.delete(t),this.events.unregistered.dispatch({fileType:t,converter:e}))}}var vn=(i=>(i[i.DecimalDegrees=0]="DecimalDegrees",i[i.DegreesMinutesSeconds=1]="DegreesMinutesSeconds",i[i.Gradians=2]="Gradians",i[i.Radians=3]="Radians",i[i.SurveyorsUnits=4]="SurveyorsUnits",i))(vn||{});class Je{static get instance(){return this._instance||(this._instance=new Je),this._instance}constructor(){this._blocks=new Map}createKey(t,e){return`${t}_${e}`}set(t,e){return e=e.fastDeepClone(),this._blocks.set(t,e),e}get(t){let e=this._blocks.get(t);return e&&(e=e.fastDeepClone()),e}has(t){return this._blocks.has(t)}clear(){this._blocks.clear()}draw(t,e,s,n=[],r=!0,a,o){const l=[];if(e!=null){const c=this.createKey(e.name,s);let d;if(this.has(c))d=this.get(c);else{const u=e.newIterator();for(const g of u)g.color.isByBlock&&s?(zr.copy(g.color),g.color.setRGBValue(s),this.addEntity(g,l,t),g.color.copy(zr)):this.addEntity(g,l,t);d=t.group(l),d&&r&&Z.name&&!Z.name.startsWith("*U")&&this.set(c,d)}return d&&a&&(d.applyMatrix(a),o&&(o.x!=0||o.y!=0||o.z!=1)&&(a.setFromExtrusionDirection(o),d.applyMatrix(a))),d&&n&&n.length>0&&(d.bakeTransformToChildren(),n.forEach(u=>d.addChild(u))),d}else return t.group(l)}addEntity(t,e,s){const n=t.worldDraw(s);n&&(this.attachEntityInfo(n,t),e.push(n))}attachEntityInfo(t,e){t.objectId=e.objectId,t.ownerId=e.ownerId,t.layerName=e.layer,t.visible=e.visibility}}const zr=new tt;var kn=(i=>(i[i.UTF8=0]="UTF8",i[i.US_ASCII=1]="US_ASCII",i[i.ISO_8859_1=2]="ISO_8859_1",i[i.ISO_8859_2=3]="ISO_8859_2",i[i.ISO_8859_3=4]="ISO_8859_3",i[i.ISO_8859_4=5]="ISO_8859_4",i[i.ISO_8859_5=6]="ISO_8859_5",i[i.ISO_8859_6=7]="ISO_8859_6",i[i.ISO_8859_7=8]="ISO_8859_7",i[i.ISO_8859_8=9]="ISO_8859_8",i[i.ISO_8859_9=10]="ISO_8859_9",i[i.CP437=11]="CP437",i[i.CP850=12]="CP850",i[i.CP852=13]="CP852",i[i.CP855=14]="CP855",i[i.CP857=15]="CP857",i[i.CP860=16]="CP860",i[i.CP861=17]="CP861",i[i.CP863=18]="CP863",i[i.CP864=19]="CP864",i[i.CP865=20]="CP865",i[i.CP869=21]="CP869",i[i.CP932=22]="CP932",i[i.MACINTOSH=23]="MACINTOSH",i[i.BIG5=24]="BIG5",i[i.CP949=25]="CP949",i[i.JOHAB=26]="JOHAB",i[i.CP866=27]="CP866",i[i.ANSI_1250=28]="ANSI_1250",i[i.ANSI_1251=29]="ANSI_1251",i[i.ANSI_1252=30]="ANSI_1252",i[i.GB2312=31]="GB2312",i[i.ANSI_1253=32]="ANSI_1253",i[i.ANSI_1254=33]="ANSI_1254",i[i.ANSI_1255=34]="ANSI_1255",i[i.ANSI_1256=35]="ANSI_1256",i[i.ANSI_1257=36]="ANSI_1257",i[i.ANSI_874=37]="ANSI_874",i[i.ANSI_932=38]="ANSI_932",i[i.ANSI_936=39]="ANSI_936",i[i.ANSI_949=40]="ANSI_949",i[i.ANSI_950=41]="ANSI_950",i[i.ANSI_1361=42]="ANSI_1361",i[i.UTF16=43]="UTF16",i[i.ANSI_1258=44]="ANSI_1258",i[i.UNDEFINED=255]="UNDEFINED",i))(kn||{});const xl=["utf-8","utf-8","iso-8859-1","iso-8859-2","iso-8859-3","iso-8859-4","iso-8859-5","iso-8859-6","iso-8859-7","iso-8859-8","iso-8859-9","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","utf-8","shift-jis","macintosh","big5","utf-8","utf-8","ibm866","windows-1250","windows-1251","windows-1252","gbk","windows-1253","windows-1254","windows-1255","windows-1256","windows-1257","windows-874","shift-jis","gbk","euc-kr","big5","utf-8","utf-16le","windows-1258"],wa=i=>xl[i],$e="Continuous",J="Standard",qe="ByLayer",yi="ByBlock",pn="mlightcad",gn="ACAD",at=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let Vr=1234567;const Ln=Math.PI/180,On=180/Math.PI;function xa(){const i=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,s=Math.random()*4294967295|0;return(at[i&255]+at[i>>8&255]+at[i>>16&255]+at[i>>24&255]+"-"+at[t&255]+at[t>>8&255]+"-"+at[t>>16&15|64]+at[t>>24&255]+"-"+at[e&63|128]+at[e>>8&255]+"-"+at[e>>16&255]+at[e>>24&255]+at[s&255]+at[s>>8&255]+at[s>>16&255]+at[s>>24&255]).toLowerCase()}function ie(i,t,e){return Math.max(t,Math.min(e,i))}function Nn(i,t){return(i%t+t)%t}function ba(i,t,e,s,n){return s+(i-t)*(n-s)/(e-t)}function fa(i,t,e){return i!==t?(e-i)/(t-i):0}function Cn(i,t,e){return(1-e)*i+e*t}function Ia(i,t,e,s){return Cn(i,t,1-Math.exp(-e*s))}function Pa(i,t=1){return t-Math.abs(Nn(i,t*2)-t)}function Ea(i,t,e){return i<=t?0:i>=e?1:(i=(i-t)/(e-t),i*i*(3-2*i))}function Sa(i,t,e){return i<=t?0:i>=e?1:(i=(i-t)/(e-t),i*i*i*(i*(i*6-15)+10))}function Aa(i,t){return i+Math.floor(Math.random()*(t-i+1))}function Ma(i,t){return i+Math.random()*(t-i)}function Ta(i){return i*(.5-Math.random())}function va(i){i!==void 0&&(Vr=i);let t=Vr+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function ka(i){return i*Ln}function La(i){return i*On}function Oa(i){return(i&i-1)===0&&i!==0}function Na(i){return Math.pow(2,Math.ceil(Math.log(i)/Math.LN2))}function Ca(i){return Math.pow(2,Math.floor(Math.log(i)/Math.LN2))}function Ps(i){const t=Math.PI*2;return(i%t+t)%t}function Ba(i,t,e){return i>t&&i<e||i>e&&i<t}function Fa(i,t,e,s=!1){return i=Ps(i),t=Ps(t),e=Ps(e),s?t>e?i<=t&&i>=e:i<=t||i>=e:t<e?i>=t&&i<=e:i>=t||i<=e}function Bn(i){return i=Math.abs(i),i<1?0:Math.ceil(Math.log10(Math.abs(i)+1))}function Ra(i,t=1e-7){const e=Bn(i);return Math.max(Math.pow(10,e)*t,t)}const L={DEG2RAD:Ln,RAD2DEG:On,generateUUID:xa,clamp:ie,euclideanModulo:Nn,mapLinear:ba,inverseLerp:fa,lerp:Cn,damp:Ia,pingpong:Pa,smoothstep:Ea,smootherstep:Sa,randInt:Aa,randFloat:Ma,randFloatSpread:Ta,seededRandom:va,degToRad:ka,radToDeg:La,isPowerOfTwo:Oa,ceilPowerOfTwo:Na,floorPowerOfTwo:Ca,normalizeAngle:Ps,isBetween:Ba,isBetweenAngle:Fa,intPartLength:Bn,relativeEps:Ra},mn=class za{constructor(t,e){this.x=0,this.y=0;const s=+(t!==void 0)+ +(e!==void 0);if(s!==0){if(s===1&&t instanceof Array){this.x=t[0],this.y=t[1];return}if(s===1){const{x:n,y:r}=t;this.x=n,this.y=r;return}if(s===2){this.x=t,this.y=e;return}throw yt.ILLEGAL_PARAMETERS}}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new za(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix2d(t){const e=this.x,s=this.y,n=t.elements;return this.x=n[0]*e+n[3]*s+n[6],this.y=n[1]*e+n[4]*s+n[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){const s=this.length();return this.divideScalar(s||1).multiplyScalar(Math.max(t,Math.min(e,s)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const s=this.dot(t)/e;return Math.acos(Math.max(-1,Math.min(1,s)))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,s=this.y-t.y;return e*e+s*s}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,s){return this.x=t.x+(e.x-t.x)*s,this.y=t.y+(e.y-t.y)*s,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}rotateAround(t,e){const s=Math.cos(e),n=Math.sin(e),r=this.x-t.x,a=this.y-t.y;return this.x=r*s-a*n+t.x,this.y=r*n+a*s+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}relativeEps(t=1e-7){return Math.min(L.relativeEps(this.x,t),L.relativeEps(this.y,t))}*[Symbol.iterator](){yield this.x,yield this.y}};mn.EMPTY=Object.freeze(new mn(0,0));let U=mn;const yn=class Va{constructor(t,e,s,n,r,a,o,l,c){this.elements=[1,0,0,0,1,0,0,0,1],t!=null&&e!=null&&s!=null&&n!=null&&r!=null&&a!=null&&o!=null&&l!=null&&c!=null&&this.set(t,e,s,n,r,a,o,l,c)}set(t,e,s,n,r,a,o,l,c){const d=this.elements;return d[0]=t,d[1]=n,d[2]=o,d[3]=e,d[4]=r,d[5]=l,d[6]=s,d[7]=a,d[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,s=t.elements;return e[0]=s[0],e[1]=s[1],e[2]=s[2],e[3]=s[3],e[4]=s[4],e[5]=s[5],e[6]=s[6],e[7]=s[7],e[8]=s[8],this}extractBasis(t,e,s){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),s.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const s=t.elements,n=e.elements,r=this.elements,a=s[0],o=s[3],l=s[6],c=s[1],d=s[4],u=s[7],g=s[2],p=s[5],m=s[8],y=n[0],w=n[3],b=n[6],E=n[1],I=n[4],T=n[7],A=n[2],W=n[5],M=n[8];return r[0]=a*y+o*E+l*A,r[3]=a*w+o*I+l*W,r[6]=a*b+o*T+l*M,r[1]=c*y+d*E+u*A,r[4]=c*w+d*I+u*W,r[7]=c*b+d*T+u*M,r[2]=g*y+p*E+m*A,r[5]=g*w+p*I+m*W,r[8]=g*b+p*T+m*M,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],s=t[1],n=t[2],r=t[3],a=t[4],o=t[5],l=t[6],c=t[7],d=t[8];return e*a*d-e*o*c-s*r*d+s*o*l+n*r*c-n*a*l}invert(){const t=this.elements,e=t[0],s=t[1],n=t[2],r=t[3],a=t[4],o=t[5],l=t[6],c=t[7],d=t[8],u=d*a-o*c,g=o*l-d*r,p=c*r-a*l,m=e*u+s*g+n*p;if(m===0)return this.set(0,0,0,0,0,0,0,0,0);const y=1/m;return t[0]=u*y,t[1]=(n*c-d*s)*y,t[2]=(o*s-n*a)*y,t[3]=g*y,t[4]=(d*e-n*l)*y,t[5]=(n*r-o*e)*y,t[6]=p*y,t[7]=(s*l-c*e)*y,t[8]=(a*e-s*r)*y,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t.elements[0]=e[0],t.elements[1]=e[3],t.elements[2]=e[6],t.elements[3]=e[1],t.elements[4]=e[4],t.elements[5]=e[7],t.elements[6]=e[2],t.elements[7]=e[5],t.elements[8]=e[8],this}setUvTransform(t,e,s,n,r,a,o){const l=Math.cos(r),c=Math.sin(r);return this.set(s*l,s*c,-s*(l*a+c*o)+a+t,-n*c,n*l,-n*(-c*a+l*o)+o+e,0,0,1),this}scale(t,e){return this.premultiply(Ki.makeScale(t,e)),this}rotate(t){return this.premultiply(Ki.makeRotation(-t)),this}translate(t,e){return this.premultiply(Ki.makeTranslation(t,e)),this}makeTranslation(t,e){return t instanceof U?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),s=Math.sin(t);return this.set(e,-s,0,s,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){const e=this.elements,s=t.elements;for(let n=0;n<9;n++)if(e[n]!==s[n])return!1;return!0}fromArray(t,e=0){for(let s=0;s<9;s++)this.elements[s]=t[s+e];return this}toArray(t=[],e=0){const s=this.elements;return t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+3]=s[3],t[e+4]=s[4],t[e+5]=s[5],t[e+6]=s[6],t[e+7]=s[7],t[e+8]=s[8],t}clone(){return new Va().fromArray(this.elements)}};yn.IDENTITY=Object.freeze(new yn);let Ds=yn;const Ki=new Ds,Fe=1e-6,j=2*Math.PI,bl={x:0,y:0},Fn={x:0,y:0,z:0};class js{constructor(){this.equalPointTol=Fe,this.equalVectorTol=Fe}clone(){const t=new js;return t.equalPointTol=this.equalPointTol,t.equalVectorTol=this.equalVectorTol,t}equalPoint2d(t,e){return new U(t).sub(e).length()<this.equalPointTol}equalPoint3d(t,e){return new f(t).sub(e).length()<this.equalPointTol}static equalToZero(t,e=Fe){return t<e&&t>-e}static equal(t,e,s=Fe){return Math.abs(t-e)<s}static great(t,e,s=Fe){return t-e>s}static less(t,e,s=Fe){return t-e<s}}const Rn=new js;function zn(i,t,e=!1){const s=i.x,n=i.y;let r=!1;const a=t.length;for(let o=0,l=a-1;o<a;l=o++){const c=t[o].x,d=t[o].y,u=t[l].x,g=t[l].y;let p=d>n!=g>n;e&&(p=d>=n!=g>=n),p&&s<(u-c)*(n-d)/(g-d)+c&&(r=!r)}return r}function Da(i,t){if(i.length===0||t.length===0)return!1;const e=new pt().setFromPoints(i),s=new pt().setFromPoints(t);if(!e.intersectsBox(s))return!1;for(let n=0;n<i.length;){if(zn(i[n],t,!0))return!0;n<i.length-1&&Rn.equalPoint2d(i[n+1],i[n])&&++n,++n}return!1}const ja={isPointInPolygon:zn,isPolygonIntersect:Da};function fl(i,t){const e=[],s=t-1,n=i;for(let r=0;r<=n;r++)e.push(0);for(let r=1;r<=s-n;r++)e.push(r);for(let r=0;r<=n;r++)e.push(s-n+1);return e}function Il(i,t){const e=t.length-1,s=i,n=[0];let r=0;for(let o=1;o<=e;o++){const l=t[o][0]-t[o-1][0],c=t[o][1]-t[o-1][1],d=t[o][2]-t[o-1][2],u=Math.sqrt(l*l+c*c+d*d);r+=u,n.push(r)}const a=[];for(let o=0;o<=s;o++)a.push(0);for(let o=1;o<=e-s;o++){const l=n[o]/r;a.push(l*(e-s+1))}for(let o=0;o<=s;o++)a.push(e-s+1);return a}function Wa(i,t="Uniform"){const e=i.length;if(e===0)return[];if(e===1)return[0];const s=e-1;if(t==="Uniform")return new Array(e).fill(0).map((a,o)=>o/s);const n=[0];let r=0;for(let a=1;a<=s;a++){const o=i[a][0]-i[a-1][0],l=i[a][1]-i[a-1][1],c=i[a][2]-i[a-1][2],d=Math.sqrt(o*o+l*l+c*c),u=t==="SqrtChord"?Math.sqrt(d):d;r+=u,n.push(r)}return r<1e-12?new Array(e).fill(0).map((a,o)=>o/s):n.map(a=>a/r)}function Ga(i,t){const e=t.length-1,s=i,n=e+s+1,r=new Array(n+1).fill(0),a=t[t.length-1];for(let o=n-s;o<=n;o++)r[o]=a;for(let o=1;o<=e-s;o++){let l=0;for(let c=o;c<o+s;c++)l+=t[c];r[o+s]=l/s}return r}function Pl(i,t){const e=t.length-1,s=i,n=[0];let r=0;for(let o=1;o<=e;o++){const l=t[o][0]-t[o-1][0],c=t[o][1]-t[o-1][1],d=t[o][2]-t[o-1][2],u=Math.sqrt(l*l+c*c+d*d),g=Math.sqrt(u);r+=g,n.push(r)}const a=[];for(let o=0;o<=s;o++)a.push(0);for(let o=1;o<=e-s;o++){const l=n[o]/r;a.push(l*(e-s+1))}for(let o=0;o<=s;o++)a.push(e-s+1);return a}function Qi(i,t){const e=i.length,s=i.map(a=>a.slice()),n=t.slice();for(let a=0;a<e;a++){let o=a,l=Math.abs(s[a][a]);for(let c=a+1;c<e;c++){const d=Math.abs(s[c][a]);d>l&&(l=d,o=c)}if(l<1e-12)throw new Error("Interpolation matrix is singular.");if(o!==a){const c=s[a];s[a]=s[o],s[o]=c;const d=n[a];n[a]=n[o],n[o]=d}for(let c=a+1;c<e;c++){const d=s[c][a]/s[a][a];if(!(Math.abs(d)<1e-14)){for(let u=a;u<e;u++)s[c][u]-=d*s[a][u];n[c]-=d*n[a]}}}const r=new Array(e).fill(0);for(let a=e-1;a>=0;a--){let o=n[a];for(let l=a+1;l<e;l++)o-=s[a][l]*r[l];r[a]=o/s[a][a]}return r}function Vn(i,t,e="Uniform",s,n){if(i.length===0)return{controlPoints:[],knots:[],weights:[]};const r=i.map(B=>[B[0],B[1],B[2]??0]),a=!!s,o=!!n,l=(a?1:0)+(o?1:0),c=r.length-1,d=c+l;if(d<t)throw new Error("Not enough points to interpolate a curve of this degree.");const u=Wa(r,e),g=u.slice();a&&g.unshift(u[0]),o&&g.push(u[u.length-1]);const p=Ga(t,g),m=d+1,y=new Array(m),w=new Array(m),b=new Array(m),E=new Array(m);let I=0;y[I]=new Array(m).fill(0),y[I][0]=1,w[I]=r[0][0],b[I]=r[0][1],E[I]=r[0][2],I++;for(let B=1;B<=c-1;B++){const et=u[B];y[I]=new Array(m).fill(0);for(let F=0;F<=d;F++)y[I][F]=vs(F,t,et,p);w[I]=r[B][0],b[I]=r[B][1],E[I]=r[B][2],I++}if(y[I]=new Array(m).fill(0),y[I][d]=1,w[I]=r[c][0],b[I]=r[c][1],E[I]=r[c][2],I++,a){const B=p[t+1]-p[0],et=B!==0?t/B:0;y[I]=new Array(m).fill(0),y[I][0]=-et,y[I][1]=et,w[I]=(s==null?void 0:s[0])??0,b[I]=(s==null?void 0:s[1])??0,E[I]=(s==null?void 0:s[2])??0,I++}if(o){const B=p[d+t+1]-p[d],et=B!==0?t/B:0;y[I]=new Array(m).fill(0),y[I][d-1]=-et,y[I][d]=et,w[I]=(n==null?void 0:n[0])??0,b[I]=(n==null?void 0:n[1])??0,E[I]=(n==null?void 0:n[2])??0,I++}const T=Qi(y,w),A=Qi(y,b),W=Qi(y,E),M=new Array(m);for(let B=0;B<m;B++)M[B]=[T[B],A[B],W[B]];const Y=new Array(m).fill(1);return{controlPoints:M,knots:p,weights:Y}}function vs(i,t,e,s){if(t===0)return e>=s[i]&&e<s[i+1]?1:0;const n=s[i+t]-s[i],r=s[i+t+1]-s[i+1],a=n>1e-10?(e-s[i])/n:0,o=r>1e-10?(s[i+t+1]-e)/r:0;return a*vs(i,t-1,e,s)+o*vs(i+1,t-1,e,s)}function Es(i,t,e,s,n){const r=s.length-1,a=t;if(i=Math.max(e[a],Math.min(e[r+1],i)),Math.abs(i-e[r+1])<1e-8)return[...s[r]];if(Math.abs(i-e[a])<1e-8)return[...s[0]];const o=[0,0,0];let l=0;for(let c=0;c<=r;c++){const d=vs(c,a,i,e),u=n[c]*d;o[0]+=s[c][0]*u,o[1]+=s[c][1]*u,o[2]+=s[c][2]*u,l+=u}if(Math.abs(l)<1e-10){const c=e[e.length-a-1];if(Math.abs(i-c)<1e-8)return[...s[r]];if(Math.abs(i-e[a])<1e-8)return[...s[0]]}return Math.abs(l)>=1e-10&&(o[0]/=l,o[1]/=l,o[2]/=l),o}function Ha(i,t,e,s){const n=i,r=t[n],a=t[t.length-n-1];let o=0;const l=1e3,c=(a-r)/l;let d=Es(r,i,t,e,s);for(let y=1;y<=l;y++){const w=r+y*c,b=Es(w,i,t,e,s),E=b[0]-d[0],I=b[1]-d[1],T=b[2]-d[2];o+=Math.sqrt(E*E+I*I+T*T),d=b}const u=Es(a,i,t,e,s),g=u[0]-d[0],p=u[1]-d[1],m=u[2]-d[2];return o+=Math.sqrt(g*g+p*p+m*m),o}function El(i,t=3,e="Uniform",s,n){return i.length===0?[]:Vn(i,t,e,s,n).controlPoints}class We{constructor(t=0,e=0,s=0,n=1){this._x=t,this._y=e,this._z=s,this._w=n}static slerpFlat(t,e,s,n,r,a,o){let l=s[n+0],c=s[n+1],d=s[n+2],u=s[n+3];const g=r[a+0],p=r[a+1],m=r[a+2],y=r[a+3];if(o===0){t[e+0]=l,t[e+1]=c,t[e+2]=d,t[e+3]=u;return}if(o===1){t[e+0]=g,t[e+1]=p,t[e+2]=m,t[e+3]=y;return}if(u!==y||l!==g||c!==p||d!==m){let w=1-o;const b=l*g+c*p+d*m+u*y,E=b>=0?1:-1,I=1-b*b;if(I>Number.EPSILON){const A=Math.sqrt(I),W=Math.atan2(A,b*E);w=Math.sin(w*W)/A,o=Math.sin(o*W)/A}const T=o*E;if(l=l*w+g*T,c=c*w+p*T,d=d*w+m*T,u=u*w+y*T,w===1-o){const A=1/Math.sqrt(l*l+c*c+d*d+u*u);l*=A,c*=A,d*=A,u*=A}}t[e]=l,t[e+1]=c,t[e+2]=d,t[e+3]=u}static multiplyQuaternionsFlat(t,e,s,n,r,a){const o=s[n],l=s[n+1],c=s[n+2],d=s[n+3],u=r[a],g=r[a+1],p=r[a+2],m=r[a+3];return t[e]=o*m+d*u+l*p-c*g,t[e+1]=l*m+d*g+c*u-o*p,t[e+2]=c*m+d*p+o*g-l*u,t[e+3]=d*m-o*u-l*g-c*p,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,s,n){return this._x=t,this._y=e,this._z=s,this._w=n,this._onChangeCallback(),this}clone(){return new We(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e=!0){const s=t.x,n=t.y,r=t.z,a=t.order,o=Math.cos,l=Math.sin,c=o(s/2),d=o(n/2),u=o(r/2),g=l(s/2),p=l(n/2),m=l(r/2);switch(a){case"XYZ":this._x=g*d*u+c*p*m,this._y=c*p*u-g*d*m,this._z=c*d*m+g*p*u,this._w=c*d*u-g*p*m;break;case"YXZ":this._x=g*d*u+c*p*m,this._y=c*p*u-g*d*m,this._z=c*d*m-g*p*u,this._w=c*d*u+g*p*m;break;case"ZXY":this._x=g*d*u-c*p*m,this._y=c*p*u+g*d*m,this._z=c*d*m+g*p*u,this._w=c*d*u-g*p*m;break;case"ZYX":this._x=g*d*u-c*p*m,this._y=c*p*u+g*d*m,this._z=c*d*m-g*p*u,this._w=c*d*u+g*p*m;break;case"YZX":this._x=g*d*u+c*p*m,this._y=c*p*u+g*d*m,this._z=c*d*m-g*p*u,this._w=c*d*u-g*p*m;break;case"XZY":this._x=g*d*u-c*p*m,this._y=c*p*u-g*d*m,this._z=c*d*m+g*p*u,this._w=c*d*u+g*p*m;break}return e===!0&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const s=e/2,n=Math.sin(s);return this._x=t.x*n,this._y=t.y*n,this._z=t.z*n,this._w=Math.cos(s),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,s=e[0],n=e[4],r=e[8],a=e[1],o=e[5],l=e[9],c=e[2],d=e[6],u=e[10],g=s+o+u;if(g>0){const p=.5/Math.sqrt(g+1);this._w=.25/p,this._x=(d-l)*p,this._y=(r-c)*p,this._z=(a-n)*p}else if(s>o&&s>u){const p=2*Math.sqrt(1+s-o-u);this._w=(d-l)/p,this._x=.25*p,this._y=(n+a)/p,this._z=(r+c)/p}else if(o>u){const p=2*Math.sqrt(1+o-s-u);this._w=(r-c)/p,this._x=(n+a)/p,this._y=.25*p,this._z=(l+d)/p}else{const p=2*Math.sqrt(1+u-s-o);this._w=(a-n)/p,this._x=(r+c)/p,this._y=(l+d)/p,this._z=.25*p}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let s=t.dot(e)+1;return s<Number.EPSILON?(s=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=s):(this._x=0,this._y=-t.z,this._z=t.y,this._w=s)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=s),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(ie(this.dot(t),-1,1)))}rotateTowards(t,e){const s=this.angleTo(t);if(s===0)return this;const n=Math.min(1,e/s);return this.slerp(t,n),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const s=t._x,n=t._y,r=t._z,a=t._w,o=e._x,l=e._y,c=e._z,d=e._w;return this._x=s*d+a*o+n*c-r*l,this._y=n*d+a*l+r*o-s*c,this._z=r*d+a*c+s*l-n*o,this._w=a*d-s*o-n*l-r*c,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);const s=this._x,n=this._y,r=this._z,a=this._w;let o=a*t._w+s*t._x+n*t._y+r*t._z;if(o<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,o=-o):this.copy(t),o>=1)return this._w=a,this._x=s,this._y=n,this._z=r,this;const l=1-o*o;if(l<=Number.EPSILON){const p=1-e;return this._w=p*a+e*this._w,this._x=p*s+e*this._x,this._y=p*n+e*this._y,this._z=p*r+e*this._z,this.normalize(),this}const c=Math.sqrt(l),d=Math.atan2(c,o),u=Math.sin((1-e)*d)/c,g=Math.sin(e*d)/c;return this._w=a*u+this._w*g,this._x=s*u+this._x*g,this._y=n*u+this._y*g,this._z=r*u+this._z*g,this._onChangeCallback(),this}slerpQuaternions(t,e,s){return this.copy(t).slerp(e,s)}random(){const t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),s=Math.random(),n=Math.sqrt(1-s),r=Math.sqrt(s);return this.set(n*Math.sin(t),n*Math.cos(t),r*Math.sin(e),r*Math.cos(e))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}const dt=class Ua{constructor(t,e,s){this.x=0,this.y=0,this.z=0;const n=+(t!==void 0)+ +(e!==void 0)+ +(s!==void 0);if(n!==0){if(n===1&&t instanceof Array){this.x=t[0],this.y=t[1],this.z=t[2];return}if(n===1){const{x:r,y:a,z:o}=t;this.x=r,this.y=a,this.z=o||0;return}if(n===3){this.x=t,this.y=e,this.z=s;return}throw yt.ILLEGAL_PARAMETERS}}set(t,e,s){return s===void 0&&(s=this.z),this.x=t,this.y=e,this.z=s,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new Ua(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z||0,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z||0,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(Dr.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(Dr.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,s=this.y,n=this.z,r=t.elements;return this.x=r[0]*e+r[3]*s+r[6]*n,this.y=r[1]*e+r[4]*s+r[7]*n,this.z=r[2]*e+r[5]*s+r[8]*n,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,s=this.y,n=this.z,r=t.elements,a=1/(r[3]*e+r[7]*s+r[11]*n+r[15]);return this.x=(r[0]*e+r[4]*s+r[8]*n+r[12])*a,this.y=(r[1]*e+r[5]*s+r[9]*n+r[13])*a,this.z=(r[2]*e+r[6]*s+r[10]*n+r[14])*a,this}applyQuaternion(t){const e=this.x,s=this.y,n=this.z,r=t.x,a=t.y,o=t.z,l=t.w,c=2*(a*n-o*s),d=2*(o*e-r*n),u=2*(r*s-a*e);return this.x=e+l*c+a*u-o*d,this.y=s+l*d+o*c-r*u,this.z=n+l*u+r*d-a*c,this}transformDirection(t){const e=this.x,s=this.y,n=this.z,r=t.elements;return this.x=r[0]*e+r[4]*s+r[8]*n,this.y=r[1]*e+r[5]*s+r[9]*n,this.z=r[2]*e+r[6]*s+r[10]*n,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){const s=this.length();return this.divideScalar(s||1).multiplyScalar(Math.max(t,Math.min(e,s)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}isParallelTo(t){const e=this.dot(t),s=this.length(),n=t.length();return Math.abs(e)===s*n}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,s){return this.x=t.x+(e.x-t.x)*s,this.y=t.y+(e.y-t.y)*s,this.z=t.z+(e.z-t.z)*s,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const s=t.x,n=t.y,r=t.z,a=e.x,o=e.y,l=e.z;return this.x=n*l-r*o,this.y=r*a-s*l,this.z=s*o-n*a,this}projectOnVector(t){const e=t.lengthSq();if(e===0)return this.set(0,0,0);const s=t.dot(this)/e;return this.copy(t).multiplyScalar(s)}projectOnPlane(t){return Ji.copy(this).projectOnVector(t),this.sub(Ji)}reflect(t){return this.sub(Ji.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const s=this.dot(t)/e;return Math.acos(Math.max(-1,Math.min(1,s)))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,s=this.y-t.y,n=this.z-t.z;return e*e+s*s+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),s=this.setFromMatrixColumn(t,1).length(),n=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=s,this.z=n,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=Math.random()*Math.PI*2,e=Math.random()*2-1,s=Math.sqrt(1-e*e);return this.x=s*Math.cos(t),this.y=e,this.z=s*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};dt.ORIGIN=Object.freeze(new dt(0,0,0)),dt.X_AXIS=Object.freeze(new dt(1,0,0)),dt.NEGATIVE_X_AXIS=Object.freeze(new dt(-1,0,0)),dt.Y_AXIS=Object.freeze(new dt(0,1,0)),dt.NEGATIVE_Y_AXIS=Object.freeze(new dt(0,-1,0)),dt.Z_AXIS=Object.freeze(new dt(0,0,1)),dt.NEGATIVE_Z_AXIS=Object.freeze(new dt(0,0,-1));let f=dt;const Ji=new f,Dr=new We,_n=class Xa{constructor(t,e,s,n,r,a,o,l,c,d,u,g,p,m,y,w){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!=null&&e!=null&&s!=null&&n!=null&&r!=null&&a!=null&&o!=null&&l!=null&&c!=null&&d!=null&&u!=null&&g!=null&&p!=null&&m!=null&&y!=null&&w!=null&&this.set(t,e,s,n,r,a,o,l,c,d,u,g,p,m,y,w)}set(t,e,s,n,r,a,o,l,c,d,u,g,p,m,y,w){const b=this.elements;return b[0]=t,b[4]=e,b[8]=s,b[12]=n,b[1]=r,b[5]=a,b[9]=o,b[13]=l,b[2]=c,b[6]=d,b[10]=u,b[14]=g,b[3]=p,b[7]=m,b[11]=y,b[15]=w,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new Xa().fromArray(this.elements)}copy(t){const e=this.elements,s=t.elements;return e[0]=s[0],e[1]=s[1],e[2]=s[2],e[3]=s[3],e[4]=s[4],e[5]=s[5],e[6]=s[6],e[7]=s[7],e[8]=s[8],e[9]=s[9],e[10]=s[10],e[11]=s[11],e[12]=s[12],e[13]=s[13],e[14]=s[14],e[15]=s[15],this}copyPosition(t){const e=this.elements,s=t.elements;return e[12]=s[12],e[13]=s[13],e[14]=s[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}setFromExtrusionDirection(t){if(Rn.equalPoint3d(t,f.Z_AXIS))this.identity();else{const e=new f(1,0,0);Math.abs(t.x)<1/64&&Math.abs(t.y)<1/64?e.crossVectors(f.Y_AXIS,t).normalize():e.crossVectors(f.Z_AXIS,t).normalize();const s=t.clone().cross(e).normalize();this.set(e.x,e.y,e.z,0,s.x,s.y,s.z,0,t.x,t.y,t.z,0,0,0,0,1)}return this}extractBasis(t,e,s){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),s.setFromMatrixColumn(this,2),this}makeBasis(t,e,s){return this.set(t.x,e.x,s.x,0,t.y,e.y,s.y,0,t.z,e.z,s.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,s=t.elements,n=1/Ge.setFromMatrixColumn(t,0).length(),r=1/Ge.setFromMatrixColumn(t,1).length(),a=1/Ge.setFromMatrixColumn(t,2).length();return e[0]=s[0]*n,e[1]=s[1]*n,e[2]=s[2]*n,e[3]=0,e[4]=s[4]*r,e[5]=s[5]*r,e[6]=s[6]*r,e[7]=0,e[8]=s[8]*a,e[9]=s[9]*a,e[10]=s[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(Sl,t,Al)}lookAt(t,e,s){const n=this.elements;return _t.subVectors(t,e),_t.lengthSq()===0&&(_t.z=1),_t.normalize(),le.crossVectors(s,_t),le.lengthSq()===0&&(Math.abs(s.z)===1?_t.x+=1e-4:_t.z+=1e-4,_t.normalize(),le.crossVectors(s,_t)),le.normalize(),ei.crossVectors(_t,le),n[0]=le.x,n[4]=ei.x,n[8]=_t.x,n[1]=le.y,n[5]=ei.y,n[9]=_t.y,n[2]=le.z,n[6]=ei.z,n[10]=_t.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const s=t.elements,n=e.elements,r=this.elements,a=s[0],o=s[4],l=s[8],c=s[12],d=s[1],u=s[5],g=s[9],p=s[13],m=s[2],y=s[6],w=s[10],b=s[14],E=s[3],I=s[7],T=s[11],A=s[15],W=n[0],M=n[4],Y=n[8],B=n[12],et=n[1],F=n[5],H=n[9],_e=n[13],we=n[2],Ys=n[6],$s=n[10],qs=n[14],Zs=n[3],Ks=n[7],Qs=n[11],Js=n[15];return r[0]=a*W+o*et+l*we+c*Zs,r[4]=a*M+o*F+l*Ys+c*Ks,r[8]=a*Y+o*H+l*$s+c*Qs,r[12]=a*B+o*_e+l*qs+c*Js,r[1]=d*W+u*et+g*we+p*Zs,r[5]=d*M+u*F+g*Ys+p*Ks,r[9]=d*Y+u*H+g*$s+p*Qs,r[13]=d*B+u*_e+g*qs+p*Js,r[2]=m*W+y*et+w*we+b*Zs,r[6]=m*M+y*F+w*Ys+b*Ks,r[10]=m*Y+y*H+w*$s+b*Qs,r[14]=m*B+y*_e+w*qs+b*Js,r[3]=E*W+I*et+T*we+A*Zs,r[7]=E*M+I*F+T*Ys+A*Ks,r[11]=E*Y+I*H+T*$s+A*Qs,r[15]=E*B+I*_e+T*qs+A*Js,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],s=t[4],n=t[8],r=t[12],a=t[1],o=t[5],l=t[9],c=t[13],d=t[2],u=t[6],g=t[10],p=t[14],m=t[3],y=t[7],w=t[11],b=t[15];return m*(+r*l*u-n*c*u-r*o*g+s*c*g+n*o*p-s*l*p)+y*(+e*l*p-e*c*g+r*a*g-n*a*p+n*c*d-r*l*d)+w*(+e*c*u-e*o*p-r*a*u+s*a*p+r*o*d-s*c*d)+b*(-n*o*d-e*l*u+e*o*g+n*a*u-s*a*g+s*l*d)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,s){const n=this.elements;return t instanceof f?(n[12]=t.x,n[13]=t.y,n[14]=t.z):(n[12]=t,n[13]=e,n[14]=s),this}invert(){const t=this.elements,e=t[0],s=t[1],n=t[2],r=t[3],a=t[4],o=t[5],l=t[6],c=t[7],d=t[8],u=t[9],g=t[10],p=t[11],m=t[12],y=t[13],w=t[14],b=t[15],E=u*w*c-y*g*c+y*l*p-o*w*p-u*l*b+o*g*b,I=m*g*c-d*w*c-m*l*p+a*w*p+d*l*b-a*g*b,T=d*y*c-m*u*c+m*o*p-a*y*p-d*o*b+a*u*b,A=m*u*l-d*y*l-m*o*g+a*y*g+d*o*w-a*u*w,W=e*E+s*I+n*T+r*A;if(W===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const M=1/W;return t[0]=E*M,t[1]=(y*g*r-u*w*r-y*n*p+s*w*p+u*n*b-s*g*b)*M,t[2]=(o*w*r-y*l*r+y*n*c-s*w*c-o*n*b+s*l*b)*M,t[3]=(u*l*r-o*g*r-u*n*c+s*g*c+o*n*p-s*l*p)*M,t[4]=I*M,t[5]=(d*w*r-m*g*r+m*n*p-e*w*p-d*n*b+e*g*b)*M,t[6]=(m*l*r-a*w*r-m*n*c+e*w*c+a*n*b-e*l*b)*M,t[7]=(a*g*r-d*l*r+d*n*c-e*g*c-a*n*p+e*l*p)*M,t[8]=T*M,t[9]=(m*u*r-d*y*r-m*s*p+e*y*p+d*s*b-e*u*b)*M,t[10]=(a*y*r-m*o*r+m*s*c-e*y*c-a*s*b+e*o*b)*M,t[11]=(d*o*r-a*u*r-d*s*c+e*u*c+a*s*p-e*o*p)*M,t[12]=A*M,t[13]=(d*y*n-m*u*n+m*s*g-e*y*g-d*s*w+e*u*w)*M,t[14]=(m*o*n-a*y*n-m*s*l+e*y*l+a*s*w-e*o*w)*M,t[15]=(a*u*n-d*o*n+d*s*l-e*u*l-a*s*g+e*o*g)*M,this}scale(t){const e=this.elements,s=t.x,n=t.y,r=t.z;return e[0]*=s,e[4]*=n,e[8]*=r,e[1]*=s,e[5]*=n,e[9]*=r,e[2]*=s,e[6]*=n,e[10]*=r,e[3]*=s,e[7]*=n,e[11]*=r,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],s=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],n=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,s,n))}makeTranslation(t,e,s){return t instanceof f?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,s,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),s=Math.sin(t);return this.set(1,0,0,0,0,e,-s,0,0,s,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),s=Math.sin(t);return this.set(e,0,s,0,0,1,0,0,-s,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),s=Math.sin(t);return this.set(e,-s,0,0,s,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const s=Math.cos(e),n=Math.sin(e),r=1-s,a=t.x,o=t.y,l=t.z,c=r*a,d=r*o;return this.set(c*a+s,c*o-n*l,c*l+n*o,0,c*o+n*l,d*o+s,d*l-n*a,0,c*l-n*o,d*l+n*a,r*l*l+s,0,0,0,0,1),this}makeScale(t,e,s){return this.set(t,0,0,0,0,e,0,0,0,0,s,0,0,0,0,1),this}makeShear(t,e,s,n,r,a){return this.set(1,s,r,0,t,1,a,0,e,n,1,0,0,0,0,1),this}compose(t,e,s){const n=this.elements,r=e.x,a=e.y,o=e.z,l=e.w,c=r+r,d=a+a,u=o+o,g=r*c,p=r*d,m=r*u,y=a*d,w=a*u,b=o*u,E=l*c,I=l*d,T=l*u,A=s.x,W=s.y,M=s.z;return n[0]=(1-(y+b))*A,n[1]=(p+T)*A,n[2]=(m-I)*A,n[3]=0,n[4]=(p-T)*W,n[5]=(1-(g+b))*W,n[6]=(w+E)*W,n[7]=0,n[8]=(m+I)*M,n[9]=(w-E)*M,n[10]=(1-(g+y))*M,n[11]=0,n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=1,this}decompose(t,e,s){const n=this.elements;let r=Ge.set(n[0],n[1],n[2]).length();const a=Ge.set(n[4],n[5],n[6]).length(),o=Ge.set(n[8],n[9],n[10]).length();this.determinant()<0&&(r=-r),t.x=n[12],t.y=n[13],t.z=n[14],Mt.copy(this);const l=1/r,c=1/a,d=1/o;return Mt.elements[0]*=l,Mt.elements[1]*=l,Mt.elements[2]*=l,Mt.elements[4]*=c,Mt.elements[5]*=c,Mt.elements[6]*=c,Mt.elements[8]*=d,Mt.elements[9]*=d,Mt.elements[10]*=d,e.setFromRotationMatrix(Mt),s.x=r,s.y=a,s.z=o,this}equals(t){const e=this.elements,s=t.elements;for(let n=0;n<16;n++)if(e[n]!==s[n])return!1;return!0}fromArray(t,e=0){for(let s=0;s<16;s++)this.elements[s]=t[s+e];return this}toArray(t=[],e=0){const s=this.elements;return t[e]=s[0],t[e+1]=s[1],t[e+2]=s[2],t[e+3]=s[3],t[e+4]=s[4],t[e+5]=s[5],t[e+6]=s[6],t[e+7]=s[7],t[e+8]=s[8],t[e+9]=s[9],t[e+10]=s[10],t[e+11]=s[11],t[e+12]=s[12],t[e+13]=s[13],t[e+14]=s[14],t[e+15]=s[15],t}};_n.IDENTITY=Object.freeze(new _n);let Q=_n;const Ge=new f,Mt=new Q,Sl=new f(0,0,0),Al=new f(1,1,1),le=new f,ei=new f,_t=new f;let C=class Ya{constructor(t=void 0,e=void 0){this.min=t==null?new f(1/0,1/0,1/0):new f(t.x,t.y,t.z),this.max=e==null?new f(-1/0,-1/0,-1/0):new f(e.x,e.y,e.z)}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){this.makeEmpty();for(let e=0,s=t.length;e<s;e+=3)this.expandByPoint(tn.fromArray(t,e));return this}setFromPoints(t){this.makeEmpty();for(let e=0,s=t.length;e<s;e++)this.expandByPoint(t[e]);return this}setFromCenterAndSize(t,e){const s=tn.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(s),this.max.copy(t).add(s),this}clone(){return new Ya().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(t){return this.isEmpty()?t.set(0,0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0,0):t.subVectors(this.max,this.min)}get center(){return this.isEmpty()?new f(0,0,0):new f(0,0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new f(0,0,0):new f(0,0,0).subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}containsPoint(t){return!(t.x<this.min.x||t.x>this.max.x||t.y<this.min.y||t.y>this.max.y||t.z<this.min.z||t.z>this.max.z)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return!(t.max.x<this.min.x||t.min.x>this.max.x||t.max.y<this.min.y||t.min.y>this.max.y||t.max.z<this.min.z||t.min.z>this.max.z)}intersectsPlane(t){let e,s;return t.normal.x>0?(e=t.normal.x*this.min.x,s=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,s=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,s+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,s+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,s+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,s+=t.normal.z*this.min.z),e<=-t.constant&&s>=-t.constant}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,tn).distanceTo(t)}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(Dt[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Dt[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Dt[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Dt[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Dt[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Dt[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Dt[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Dt[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Dt),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}};const Dt=[new f,new f,new f,new f,new f,new f,new f,new f],tn=new f,jr=new U;let pt=class $a{constructor(t=void 0,e=void 0){this.min=t==null?new U(1/0,1/0):new U(t.x,t.y),this.max=e==null?new U(-1/0,-1/0):new U(e.x,e.y)}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromPoints(t){this.makeEmpty();for(let e=0,s=t.length;e<s;e++)this.expandByPoint(t[e]);return this}setFromCenterAndSize(t,e){const s=jr.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(s),this.max.copy(t).add(s),this}clone(){return new $a().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y}getCenter(t){return this.isEmpty()?t.set(0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0):t.subVectors(this.max,this.min)}get center(){return this.isEmpty()?new U(0,0):new U(0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new U(0,0):new U(0,0).subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}containsPoint(t){return!(t.x<this.min.x||t.x>this.max.x||t.y<this.min.y||t.y>this.max.y)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(t){return!(t.max.x<this.min.x||t.min.x>this.max.x||t.max.y<this.min.y||t.min.y>this.max.y)}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,jr).distanceTo(t)}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}};const Wr=new f,Ml=new f,Tl=new Ds;class Ws{constructor(t=new f(1,0,0),e=0){this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,s,n){return this.normal.set(t,e,s),this.constant=n,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,s){const n=Wr.subVectors(s,e).cross(Ml.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(n,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}projectPoint(t,e){return e.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))}intersectsBox(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){const s=e||Tl.getNormalMatrix(t),n=this.coplanarPoint(Wr).applyMatrix4(t),r=this.normal.applyMatrix3(s).normalize();return this.constant=-n.dot(r),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return new Ws().copy(this)}}let v=class qa extends U{clone(){return new qa(this.x,this.y)}static pointArrayToNumberArray(t){const e=new Array(t.length*2);return t.forEach((s,n)=>{s.toArray(e,n*2)}),e}},x=class Za extends f{clone(){return new Za(this.x,this.y,this.z)}static pointArrayToNumberArray(t,e=!0){const s=e?3:2,n=new Array(t.length*s);return t.forEach((r,a)=>{r.toArray(n,a*s)}),n}};const Gr=new Q,Hr=new We,Ka=class wn{constructor(t=0,e=0,s=0,n=wn.DEFAULT_ORDER){this._x=t,this._y=e,this._z=s,this._order=n}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,s,n=this._order){return this._x=t,this._y=e,this._z=s,this._order=n,this._onChangeCallback(),this}clone(){return new wn(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,s=!0){const n=t.elements,r=n[0],a=n[4],o=n[8],l=n[1],c=n[5],d=n[9],u=n[2],g=n[6],p=n[10];switch(e){case"XYZ":this._y=Math.asin(ie(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-d,p),this._z=Math.atan2(-a,r)):(this._x=Math.atan2(g,c),this._z=0);break;case"YXZ":this._x=Math.asin(-ie(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(o,p),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-u,r),this._z=0);break;case"ZXY":this._x=Math.asin(ie(g,-1,1)),Math.abs(g)<.9999999?(this._y=Math.atan2(-u,p),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(l,r));break;case"ZYX":this._y=Math.asin(-ie(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(g,p),this._z=Math.atan2(l,r)):(this._x=0,this._z=Math.atan2(-a,c));break;case"YZX":this._z=Math.asin(ie(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-d,c),this._y=Math.atan2(-u,r)):(this._x=0,this._y=Math.atan2(o,p));break;case"XZY":this._z=Math.asin(-ie(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(g,c),this._y=Math.atan2(o,r)):(this._x=Math.atan2(-d,p),this._y=0);break}return this._order=e,s===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,s=!0){return Gr.makeRotationFromQuaternion(t),this.setFromRotationMatrix(Gr,e,s)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return Hr.setFromEuler(this),this.setFromQuaternion(Hr,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};Ka.DEFAULT_ORDER="XYZ";let vl=Ka;class Qa{constructor(){this._boundingBoxNeedsUpdate=!1}get boundingBoxNeedUpdate(){return this._boundingBoxNeedsUpdate}}class Dn extends Qa{translate(t){return this.transform(new Ds().makeTranslation(t.x,t.y))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}}let ks=class Ja extends Dn{constructor(){super(),this._loops=[]}add(t){this._loops.push(t),this._boundingBoxNeedsUpdate=!0}get loops(){return this._loops}get outter(){if(this._loops.length>0)return this._loops[0]}calculateBoundingBox(){const t=this.outter;return t?t.box:new pt}transform(t){return this._loops.forEach(e=>{e.transform(t)}),this._boundingBoxNeedsUpdate=!0,this}clone(){const t=new Ja;return this._loops.forEach(e=>{t.add(e.clone())}),t}getPoints(t){const e=[];for(let s=0;s<this.loops.length;++s){const n=this.loops[s].getPoints(t);e.push(n)}return e}buildHierarchy(){var t;const e=this.getPoints(100),s=this.calculateBoundaryBoxes(e),n=this.sortBoundaryBoxesByAreas(s),r=new Map,a=n.length;for(let l=0;l<a;l++)r.set(n[l],{index:n[l],children:[]});const o={index:-1,children:[]};for(let l=0;l<a;l++){const c=n[l],d=e[c],u=s[c];let g=l+1;for(;g<a;g++){const p=n[g],m=e[p];if(s[p].containsBox(u)&&ja.isPointInPolygon(d[L.randInt(0,d.length-1)],m)){(t=r.get(p))==null||t.children.push(r.get(c));break}}g===a&&o.children.push(r.get(c))}return o}get area(){if(this._loops.length===0)return 0;let t=0;for(let e=0;e<this._loops.length;e++){const s=this._loops[e].getPoints(128),n=this.polygonArea(s);e===0?t+=Math.abs(n):t-=Math.abs(n)}return t}polygonArea(t){const e=t.length;if(e<3)return 0;let s=0;for(let n=0,r=e-1;n<e;r=n++){const a=t[r],o=t[n];s+=a.x*o.y-o.x*a.y}return s*.5}calculateBoundaryBoxes(t){const e=[];return t.forEach(s=>{e.push(new pt().setFromPoints(s))}),e}sortBoundaryBoxesByAreas(t){const e=[];t.forEach((n,r)=>{const a=n.size,o=a.width*a.height;e.push({area:o,index:r})}),e.sort((n,r)=>n.area-r.area);const s=[];return e.forEach(n=>{s.push(n.index)}),s}},ts=class extends Dn{constructor(){super(),this.arcLengthDivisions=100}get startPoint(){return this.getPoint(0)}get endPoint(){return this.getPoint(1)}get length(){return this.getLength()}getPoint(t){throw new Error("AcGeCurve2d: .getPoint() not implemented.")}getPointAt(t){const e=this.getUtoTmapping(t);return this.getPoint(e)}getPoints(t=5){const e=[];for(let s=0;s<=t;s++)e.push(this.getPoint(s/t));return e}getSpacedPoints(t=5){const e=[];for(let s=0;s<=t;s++)e.push(this.getPointAt(s/t));return e}getLength(){const t=this.getLengths();return t[t.length-1]}getLengths(t=this.arcLengthDivisions){const e=[];let s,n=this.getPoint(0),r=0;e.push(0);for(let a=1;a<=t;a++)s=this.getPoint(a/t),r+=s.distanceTo(n),e.push(r),n=s;return e}getUtoTmapping(t,e){const s=this.getLengths();let n=0;const r=s.length;let a;e?a=e:a=t*s[r-1];let o=0,l=r-1,c;for(;o<=l;)if(n=Math.floor(o+(l-o)/2),c=s[n]-a,c<0)o=n+1;else if(c>0)l=n-1;else{l=n;break}if(n=l,s[n]===a)return n/(r-1);const d=s[n],u=s[n+1]-d,g=(a-d)/u;return(n+g)/(r-1)}getTangent(t){let e=t-1e-4,s=t+1e-4;e<0&&(e=0),s>1&&(s=1);const n=this.getPoint(e),r=this.getPoint(s),a=new v;return a.copy(r).sub(n).normalize(),a}getTangentAt(t){const e=this.getUtoTmapping(t);return this.getTangent(e)}},Ve=class xn extends ts{constructor(t,e,s,n,r){super();const a=+(t!==void 0)+ +(e!==void 0)+ +(s!==void 0)+ +(n!==void 0)+ +(r!==void 0);if(a==3)typeof t=="object"&&typeof e=="object"&&typeof s=="object"?this.createByThreePoints(t,e,s):this.createByStartEndPointsAndBulge(t,e,s);else if(a==5){const o=t;this.center=new v(o.x,o.y),this.radius=e,this._clockwise=r,this._startAngle=this._clockwise?this._mirrorAngle(L.normalizeAngle(s)):L.normalizeAngle(s),this._endAngle=this._clockwise?this._mirrorAngle(L.normalizeAngle(n)):L.normalizeAngle(n)}else throw yt.ILLEGAL_PARAMETERS}createByThreePoints(t,e,s){const n=(M,Y)=>({x:(M.x+Y.x)/2,y:(M.y+Y.y)/2}),r=(M,Y)=>(Y.y-M.y)/(Y.x-M.x),a=M=>-1/M,o=n(t,e),l=n(e,s),c=r(t,e),d=r(e,s),u=a(c),g=a(d),p=(M,Y,B,et)=>{const F=(et-Y)/(M-B),H=M*F+Y;return{x:F,y:H}},m=o.y-u*o.x,y=l.y-g*l.x,w=p(u,m,g,y),b=Math.sqrt(Math.pow(t.x-w.x,2)+Math.pow(t.y-w.y,2)),E=(M,Y)=>Math.atan2(M.y-Y.y,M.x-Y.x),I=E(t,w),T=E(e,w),A=E(s,w),W=A>I&&A<T||I>A&&I<T||T>A&&T<I;this.center=w,this.radius=b,this._clockwise=!W,this._startAngle=I,this._endAngle=A}createByStartEndPointsAndBulge(t,e,s){let n,r,a;s<0?(n=Math.atan(-s)*4,r=new U(t),a=new U(e)):(n=Math.atan(s)*4,r=new U(e),a=new U(t));const o=new U().subVectors(a,r),l=o.length(),c=new U().addVectors(r,o.multiplyScalar(.5)),d=Math.abs(l/2/Math.tan(n/2)),u=o.normalize(),g=s<0?-Math.PI/2:Math.PI/2,p=new U(u.x*Math.cos(g)-u.y*Math.sin(g),u.y*Math.cos(g)+u.x*Math.sin(g));let m;n<Math.PI?s<0?m=c.add(p.multiplyScalar(d)):m=c.add(p.multiplyScalar(-d)):s<0?m=c.add(p.multiplyScalar(-d)):m=c.add(p.multiplyScalar(d)),s<0?(this._startAngle=Math.atan2(r.y-m.y,r.x-m.x),this._endAngle=Math.atan2(a.y-m.y,a.x-m.x)):(this._startAngle=Math.atan2(a.y-m.y,a.x-m.x),this._endAngle=Math.atan2(r.y-m.y,r.x-m.x)),this._clockwise=s<0,this.center=m,this.radius=a.sub(m).length()}get center(){return this._center}set center(t){this._center=new v(t.x,t.y),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(t){this._radius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._clockwise?this._mirrorAngle(this._startAngle):this._startAngle}set startAngle(t){this._startAngle=this._clockwise?this._mirrorAngle(L.normalizeAngle(t)):L.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._clockwise?this._mirrorAngle(this._endAngle):this._endAngle}set endAngle(t){const e=this.startAngle==0&&t==j?t:L.normalizeAngle(t);this._endAngle=this._clockwise?this._mirrorAngle(e):e,this._boundingBoxNeedsUpdate=!0}_mirrorAngle(t){return(360-t*180/Math.PI)%360*Math.PI/180}_getInternalAngle(t){return this._clockwise?this._mirrorAngle(t):t}get deltaAngle(){const t=this._getInternalAngle(this.startAngle),e=this._getInternalAngle(this.endAngle);return this.clockwise?L.normalizeAngle(t-e):L.normalizeAngle(e-t)}get clockwise(){return this._clockwise}set clockwise(t){this._clockwise=t,this._boundingBoxNeedsUpdate=!0}get startPoint(){return this.getPointAtAngle(this.startAngle)}get endPoint(){return this.getPointAtAngle(this.endAngle)}get midPoint(){const t=this._getInternalAngle(this.startAngle),e=this._clockwise?L.normalizeAngle(t-this.deltaAngle/2):L.normalizeAngle(t+this.deltaAngle/2),s=this._clockwise?this._mirrorAngle(e):e;return this.getPointAtAngle(s)}get closed(){const t=this._getInternalAngle(this.startAngle),e=this._getInternalAngle(this.endAngle);return Math.abs(e-t)/Math.PI%2==0}calculateBoundingBox(){const t=[this.startPoint,this.endPoint],e=[0,Math.PI/2,Math.PI,3*Math.PI/2];for(const r of e){const a=this._getInternalAngle(r);L.isBetweenAngle(a,this._getInternalAngle(this.startAngle),this._getInternalAngle(this.endAngle),this.clockwise)&&t.push(this.getPointAtAngle(r))}const s=t.map(r=>r.x),n=t.map(r=>r.y);return new pt(new v(Math.min(...s),Math.min(...n)),new v(Math.max(...s),Math.max(...n)))}get length(){return Math.abs(this.deltaAngle*this.radius)}transform(t){const e=t,s=this.center.clone().applyMatrix2d(e),n=this.startPoint.clone().applyMatrix2d(e);if(this.closed)return this.center=s,this.radius=s.distanceTo(n),this._startAngle=Math.atan2(n.y-s.y,n.x-s.x),this._endAngle=this._startAngle,this._clockwise=e.determinant()<0?!this._clockwise:this._clockwise,this._boundingBoxNeedsUpdate=!0,this;const r=this.midPoint.clone().applyMatrix2d(e),a=this.endPoint.clone().applyMatrix2d(e),o=new xn(n,r,a),l=e.determinant()<0?!this.clockwise:this.clockwise,c=d=>{const u=L.normalizeAngle(d);return l?this._mirrorAngle(u):u};return this.center=o.center,this.radius=o.radius,this.clockwise=l,this.startAngle=c(Math.atan2(n.y-o.center.y,n.x-o.center.x)),this.endAngle=c(Math.atan2(a.y-o.center.y,a.x-o.center.x)),this._boundingBoxNeedsUpdate=!0,this}clone(){return new xn(this.center.clone(),this.radius,this._startAngle,this._endAngle,this.clockwise)}getPointAtAngle(t){const e=this._getInternalAngle(t),s=this.center.x+this.radius*Math.cos(e),n=this.center.y+this.radius*Math.sin(e);return new v(s,n)}getPoints(t=100){const e=[];let s=this.deltaAngle,n=this._getInternalAngle(this.startAngle);if(this.closed&&(s=j,n=0),this.clockwise)for(let r=0;r<=t;r++){const a=n-s*(r/t),o=this._clockwise?this._mirrorAngle(a):a,l=this.getPointAtAngle(o);e.push(new v(l.x,l.y))}else for(let r=0;r<=t;r++){const a=n+s*(r/t),o=this._clockwise?this._mirrorAngle(a):a,l=this.getPointAtAngle(o);e.push(new v(l.x,l.y))}return e}};class kl extends Qa{translate(t){return this.transform(new Q().makeTranslation(t.x,t.y,t.z))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}}class Gs extends kl{}class ge extends Gs{constructor(t,e){super(),this._start=new x(t),this._end=new x(e)}get startPoint(){return this._start}set startPoint(t){this._start.copy(t),this._boundingBoxNeedsUpdate=!0}get endPoint(){return this._end}set endPoint(t){this._end.copy(t),this._boundingBoxNeedsUpdate=!0}get direction(){return new f().subVectors(this.endPoint,this.startPoint).normalize()}get midPoint(){return new x((this._start.x+this._end.x)/2,(this._start.y+this._end.y)/2,(this._start.z+this._end.z)/2)}nearestPoint(t){return this.project(t)}get length(){return this.startPoint.distanceTo(this.endPoint)}isPointOnLine(t){return this.project(t).distanceTo(t)<1e-6}at(t,e){return this.delta(e).multiplyScalar(t).add(this._start)}atLength(t,e=!1){if(e){const s=this.delta(xe).normalize();return new x(this._start).addScaledVector(s,t)}else{const s=this.delta(xe).normalize();return new x(this._end).addScaledVector(s,t)}}extend(t,e=!1){if(e){const s=xe.subVectors(this._start,this._end).normalize();this._start=new x(this._start).addScaledVector(s,t)}else{const s=this.delta(xe).normalize();this._end=new x(this._end).addScaledVector(s,t)}return this._boundingBoxNeedsUpdate=!0,this}closestPointToPointParameter(t,e){Ur.subVectors(t,this._start),si.subVectors(this.endPoint,this.startPoint);const s=si.dot(si);let n=si.dot(Ur)/s;return e&&(n=L.clamp(n,0,1)),n}closestPointToPoint(t,e,s){const n=this.closestPointToPointParameter(t,e);return this.delta(s).multiplyScalar(n).add(this._start)}delta(t){return t.subVectors(this._end,this._start)}distanceSq(){return this._start.distanceToSquared(this._end)}distance(){return this._start.distanceTo(this._end)}project(t){const e=this.direction,s=xe.subVectors(t,this.startPoint).dot(e);return new x().copy(e).multiplyScalar(s).add(this.startPoint)}perpPoint(t){const e=this.direction,s=this.startPoint,n=xe.subVectors(t,s).dot(e),r=xe.copy(e).multiplyScalar(n);return new x().addVectors(s,r)}calculateBoundingBox(){const t=new x(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y),Math.min(this._start.z,this._end.z)),e=new x(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y),Math.max(this._start.z,this._end.z));return new C(t,e)}transform(t){return this._start.applyMatrix4(t),this._end.applyMatrix4(t),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!1}copy(t){return this.startPoint=t.startPoint,this.endPoint=t.endPoint,this._boundingBoxNeedsUpdate=!0,this}clone(){return new ge(this._start.clone(),this._end.clone())}}const xe=new f,Ur=new f,si=new f;class ze extends Gs{static computeCenterPoint(t,e,s){const n=new f().addVectors(t,e).multiplyScalar(.5),r=new f().addVectors(t,s).multiplyScalar(.5),a=new f().subVectors(e,t),o=new f().subVectors(s,t),l=new f().crossVectors(a,o).normalize();if(l.lengthSq()===0)return null;const c=new f().crossVectors(a,l).normalize(),d=new f().crossVectors(o,l).normalize(),u=c.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),g=d.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),p=new ge(n,n.clone().add(u)),m=new ge(r,r.clone().add(g)),y=new f;return p.closestPointToPoint(m.startPoint,!0,y)?y:null}static createByThreePoints(t,e,s){const n=ze.computeCenterPoint(t,e,s);if(n){const r=n.distanceTo(t),a=new f().subVectors(t,n),o=new f().subVectors(e,n),l=Math.atan2(a.y,a.x),c=Math.atan2(o.y,o.x);return new ze(n,r,l,c,f.Z_AXIS)}}constructor(t,e,s,n,r,a=f.X_AXIS){super(),this.center=t,this.radius=e,this.startAngle=s,this.endAngle=n,this.normal=r,this.refVec=a,(n-s)%j==0?(this.startAngle=0,this.endAngle=j):(this.startAngle=s,this.endAngle=n)}get center(){return this._center}set center(t){this._center=new x(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(t){if(t<0)throw yt.ILLEGAL_PARAMETERS;this._radius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=L.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==j?t:L.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return L.normalizeAngle(this.endAngle-this.startAngle)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}get clockwise(){return this.deltaAngle<=0}get normal(){return this._normal}set normal(t){this._normal=new f(t.x,t.y,t.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get refVec(){return this._refVec}set refVec(t){this._refVec=new f(t.x,t.y,t.z),this._refVec.normalize(),this._boundingBoxNeedsUpdate=!0}get startPoint(){return this.getPointAtAngle(this._startAngle)}get endPoint(){return this.getPointAtAngle(this._endAngle)}get midPoint(){let t=this.startAngle,e=this.deltaAngle;this.closed&&(t=0,e=j);const s=t+e*.5;return this.getPointAtAngle(s)}get length(){return this.closed?2*Math.PI*this.radius:Math.abs(this.deltaAngle*this.radius)}get area(){return this.closed?Math.PI*this.radius*this.radius:Math.abs(this.deltaAngle*this.radius*this.radius)}nearestPoint(t){const e=new f(t.x,t.y,t.z||0),s=this.center,n=this.normal,r=e.clone().sub(s).dot(n),a=e.clone().sub(n.clone().multiplyScalar(r)).clone().sub(s);if(a.lengthSq()===0)return this.startPoint.clone();a.normalize().multiplyScalar(this.radius);const o=s.clone().add(a),l=this.getAngle(o.clone()),c=this.startAngle,d=this.deltaAngle;let u=L.normalizeAngle(l-c);u<0&&(u=0),u>d&&(u=d);const g=this.getPointAtAngle(c+u),p=g.distanceTo(e),m=this.startPoint.distanceTo(e),y=this.endPoint.distanceTo(e);return m<p&&m<=y?this.startPoint.clone():y<p&&y<m?this.endPoint.clone():g}tangentPoints(t){const e=[],s=new f(t.x,t.y,t.z||0),n=this.center,r=this.normal,a=this.radius,o=s.clone().sub(n).dot(r),l=s.clone().sub(r.clone().multiplyScalar(o)),c=n.clone(),d=l.clone().sub(c).length();if(d<a)return e;const u=Math.acos(a/d),g=this.getAngle(l.clone()),p=[g+u,g-u];for(const m of p){const y=L.normalizeAngle(m-this.startAngle);y>=0&&y<=this.deltaAngle&&e.push(this.getPointAtAngle(this.startAngle+y))}return e}nearestTangentPoint(t){const e=this.tangentPoints(t);if(e.length===0)return null;const s=new x(t.x,t.y,t.z||0);return e.length===1||e[0].distanceTo(s)<e[1].distanceTo(s)?e[0]:e[1]}calculateBoundingBox(){const t=[this.startAngle,this.endAngle];for(let l=0;l<2*Math.PI;l+=Math.PI/2)L.isBetweenAngle(l,this.startAngle,this.endAngle)&&t.push(l);let e=1/0,s=1/0,n=1/0,r=-1/0,a=-1/0,o=-1/0;for(const l of t){const c=this.getPointAtAngle(l);c.x<e&&(e=c.x),c.y<s&&(s=c.y),c.z<n&&(n=c.z),c.x>r&&(r=c.x),c.y>a&&(a=c.y),c.z>o&&(o=c.z)}return new C({x:e,y:s,z:n},{x:r,y:a,z:o})}get closed(){return Math.abs(this.endAngle-this.startAngle)/Math.PI%2==0}getPoints(t){const e=[];let s=this.deltaAngle,n=this.startAngle;this.closed&&(s=j,n=0);for(let r=0;r<=t;r++){const a=n+s*(r/t),o=this.getPointAtAngle(a);e.push(o)}return e}transform(t){const e=this.center.clone().applyMatrix4(t),s=this.startPoint.clone().applyMatrix4(t),n=this.endPoint.clone().applyMatrix4(t),r=this.getPointAtAngle(this.closed?Math.PI/2:this.startAngle+this.deltaAngle/2).clone().applyMatrix4(t),a=new f(s).sub(e).normalize(),o=e.distanceTo(s);let l=new f().crossVectors(new f(s).sub(e),new f(r).sub(e)).normalize();l.lengthSq()===0&&(l=this.normal.clone().transformDirection(t));const c=d=>{const u=new f(d).sub(e);return Math.atan2(u.dot(Xr.crossVectors(l,a)),u.dot(a))};return this.center=e,this.radius=o,this.normal=l,this.refVec=a,this.startAngle=0,this.endAngle=this.closed?j:c(n),this._boundingBoxNeedsUpdate=!0,this}copy(t){return this.center=t.center,this.radius=t.radius,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this.normal=t.normal,this.refVec=t.refVec,this._boundingBoxNeedsUpdate=!0,this}clone(){return new ze(this.center.clone(),this.radius,this.startAngle,this.endAngle,this.normal,this.refVec)}getAngle(t){return t.sub(this.center),Math.atan2(t.dot(Xr.crossVectors(this.refVec,this.normal)),t.dot(this.refVec))}getPointAtAngle(t){const e=this.normal,s=this.refVec,n={x:e.y*s.z-e.z*s.y,y:e.z*s.x-e.x*s.z,z:e.x*s.y-e.y*s.x},r=this.center,a=this.radius;return new x(r.x+a*(s.x*Math.cos(t)+n.x*Math.sin(t)),r.y+a*(s.y*Math.cos(t)+n.y*Math.sin(t)),r.z+a*(s.z*Math.cos(t)+n.z*Math.sin(t)))}get plane(){const t=new f(this.center).distanceTo(Fn);return new Ws(this.normal,t)}}const Xr=new f;let Ls=class oi extends ts{constructor(t,e,s,n=0,r=j,a=!1,o=0){super(),this.center=t,this.majorAxisRadius=e,this.minorAxisRadius=s,(r-n)%j==0?(this.startAngle=0,this.endAngle=j):(this.startAngle=n,this.endAngle=r),this.clockwise=a,this.rotation=o}get center(){return this._center}set center(t){this._center=new x(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(t){if(t<0)throw yt.ILLEGAL_PARAMETERS;this._majorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(t){if(t<0)throw yt.ILLEGAL_PARAMETERS;this._minorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=L.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==j?t:L.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get clockwise(){return this._clockwise}set clockwise(t){this._clockwise=t,this._boundingBoxNeedsUpdate=!0}get rotation(){return this._rotation}set rotation(t){this._rotation=t,this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return L.normalizeAngle(this.endAngle-this.startAngle)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}calculateBoundingBox(){let t=1/0,e=1/0,s=-1/0,n=-1/0;for(let r=0;r<=100;r++){const a=this.getPoint(r/100);t=Math.min(t,a.x),e=Math.min(e,a.y),s=Math.max(s,a.x),n=Math.max(n,a.y)}return new pt({x:t,y:e},{x:s,y:n})}get closed(){return this.deltaAngle==0}getPoint(t){const e=Math.PI*2;let s=this.endAngle-this.startAngle;const n=Math.abs(s)<Number.EPSILON;for(;s<0;)s+=e;for(;s>e;)s-=e;s<Number.EPSILON&&(n?s=0:s=e),this.clockwise===!0&&!n&&(s===e?s=-e:s=s-e);const r=this.startAngle+t*s;let a=this.center.x+this.majorAxisRadius*Math.cos(r),o=this.center.y+this.minorAxisRadius*Math.sin(r);if(this.rotation!==0){const l=Math.cos(this.rotation),c=Math.sin(this.rotation),d=a-this.center.x,u=o-this.center.y;a=d*l-u*c+this.center.x,o=d*c+u*l+this.center.y}return new v(a,o)}transform(t){const e=t,s=new v(this.center).applyMatrix2d(e),n=new x(s.x,s.y,this.center.z),r=this.getPointAtAngle(0).clone().applyMatrix2d(e),a=this.getPointAtAngle(Math.PI/2).clone().applyMatrix2d(e),o=new v(r).sub(s),l=new v(a).sub(s),c=o.length(),d=l.length(),u=Math.atan2(o.y,o.x),g=o.clone().normalize(),p=l.clone().normalize(),m=b=>{const E=new v(b).sub(s),I=E.dot(g),T=E.dot(p);return L.normalizeAngle(Math.atan2(T/d,I/c))},y=e.determinant()<0?!this.clockwise:this.clockwise,w=this.closed?new oi(n,c,d,0,j,y,u):new oi(n,c,d,m(this.startPoint.clone().applyMatrix2d(e)),m(this.endPoint.clone().applyMatrix2d(e)),y,u);return this.center=w.center,this.majorAxisRadius=w.majorAxisRadius,this.minorAxisRadius=w.minorAxisRadius,this._startAngle=w._startAngle,this._endAngle=w._endAngle,this._clockwise=w._clockwise,this.rotation=w.rotation,this._boundingBoxNeedsUpdate=!0,this}getPointAtAngle(t){return this.getPoint(this.closed?t/j:L.normalizeAngle(t-this.startAngle)/this.deltaAngle)}copy(t){return this.center=t.center,this.majorAxisRadius=t.majorAxisRadius,this.minorAxisRadius=t.minorAxisRadius,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this.clockwise=t.clockwise,this.rotation=t.rotation,this}clone(){return new oi(this.center,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle,this.clockwise,this.rotation)}};class Ze extends Gs{constructor(t,e,s,n,r,a=0,o=j){super(),this.center=t,this.normal=e,this.majorAxis=s,this.majorAxisRadius=n,this.minorAxisRadius=r;const l=Math.abs(o-a);Math.abs(l-j)<1e-10||Math.abs(l-2*j)<1e-10?(this.startAngle=0,this.endAngle=j):(this.startAngle=a,this.endAngle=o)}get center(){return this._center}set center(t){this._center=new x(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(t){if(t<0)throw yt.ILLEGAL_PARAMETERS;this._majorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(t){if(t<0)throw yt.ILLEGAL_PARAMETERS;this._minorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=L.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==j?t:L.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){const t=this.endAngle-this.startAngle;return Math.abs(t-j)<1e-10?j:L.normalizeAngle(t)}get isLargeArc(){return Math.abs(this.deltaAngle)>Math.PI?1:0}get clockwise(){return this.deltaAngle<=0}get normal(){return this._normal}set normal(t){this._normal=new f(t.x,t.y,t.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get majorAxis(){return this._majorAxis}set majorAxis(t){this._majorAxis=new f(t.x,t.y,t.z),this._majorAxis.normalize(),this._boundingBoxNeedsUpdate=!0}get minorAxis(){return new f().crossVectors(this.normal,this.majorAxis).normalize()}get startPoint(){return this.getPointAtAngle(this._startAngle)}get endPoint(){return this.getPointAtAngle(this._endAngle)}get midPoint(){let t=this.startAngle,e=this.deltaAngle;(this.closed||Math.abs(e-j)<1e-10)&&(t=0,e=j);const s=t+e/2;return this.getPointAtAngle(s)}get isCircular(){return js.equal(this.majorAxisRadius,this.minorAxisRadius)}get length(){if(this.isCircular)return this.majorAxisRadius*Math.abs(this.deltaAngle);const t=1e3,e=this.deltaAngle/t;let s=0,n=this.getPointAtAngle(this.startAngle);for(let r=1;r<=t;r++){const a=this.startAngle+r*e,o=this.getPointAtAngle(a),l=o.x-n.x,c=o.y-n.y,d=o.z-n.z;s+=Math.sqrt(l*l+c*c+d*d),n=o}return s}get area(){const t=this.majorAxisRadius,e=this.minorAxisRadius,s=this.startAngle,n=s+this.deltaAngle;if(Math.abs(this.deltaAngle-j)<1e-10)return Math.PI*t*e;const r=t*e/2*(n-s-(Math.sin(n)*Math.cos(n)-Math.sin(s)*Math.cos(s)));return Math.abs(r)}calculateBoundingBox(){if(this.majorAxis.equals(f.X_AXIS)||this.majorAxis.equals(f.Y_AXIS)||this.majorAxis.isParallelTo(f.X_AXIS)||this.majorAxis.isParallelTo(f.Y_AXIS)){const t=[this.startAngle,this.endAngle];for(let l=0;l<2*Math.PI;l+=Math.PI/2)L.isBetweenAngle(l,this.startAngle,this.endAngle)&&t.push(l);let e=1/0,s=1/0,n=1/0,r=-1/0,a=-1/0,o=-1/0;for(const l of t){const c=this.getPointAtAngle(l);c.x<e&&(e=c.x),c.y<s&&(s=c.y),c.z<n&&(n=c.z),c.x>r&&(r=c.x),c.y>a&&(a=c.y),c.z>o&&(o=c.z)}return new C({x:e,y:s,z:n},{x:r,y:a,z:o})}else{let t=1/0,e=1/0,s=1/0,n=-1/0,r=-1/0,a=-1/0;for(let o=0;o<=100;o++){const l=this.startAngle+this.deltaAngle*(o/100),c=this.getPointAtAngle(l);t=Math.min(t,c.x),e=Math.min(e,c.y),s=Math.min(s,c.z),n=Math.max(n,c.x),r=Math.max(r,c.y),a=Math.max(a,c.z)}return new C({x:t,y:e,z:s},{x:n,y:r,z:a})}}get closed(){return this.deltaAngle==0}getPoints(t=100){const e=[];let s=this.deltaAngle,n=this.startAngle;this.closed&&(s=j,n=0);for(let r=0;r<=t;r++){const a=n+s*(r/t),o=this.getPointAtAngle(a);e.push(o)}return e}getPointAtAngle(t){const e=Math.cos(t),s=Math.sin(t),n=this.minorAxis.clone().multiplyScalar(this.minorAxisRadius).multiplyScalar(s),r=this.majorAxis.clone().multiplyScalar(e*this.majorAxisRadius).add(n);return new x(this.center.x+r.x,this.center.y+r.y,this.center.z+r.z)}contains(t){const e=new f(t).sub(this.center),s=e.dot(this.majorAxis),n=e.dot(this.minorAxis),r=s/this.majorAxisRadius,a=n/this.minorAxisRadius;return r*r+a*a<=1}transform(t){const e=t,s=this.center.clone().applyMatrix4(e),n=this.getPointAtAngle(0).clone().applyMatrix4(e),r=this.getPointAtAngle(Math.PI/2).clone().applyMatrix4(e),a=new f(n).sub(s),o=new f(r).sub(s),l=a.length(),c=o.length(),d=a.clone().normalize(),u=new f().crossVectors(a,o).normalize();let g=new f().crossVectors(u,d).normalize();g.dot(o)<0&&(u.negate(),g=new f().crossVectors(u,d).normalize());const p=y=>{const w=new f(y).sub(s),b=w.dot(d),E=w.dot(g);return L.normalizeAngle(Math.atan2(E/c,b/l))},m=this.closed?new Ze(s,u,d,l,c,0,j):new Ze(s,u,d,l,c,p(this.startPoint.clone().applyMatrix4(e)),p(this.endPoint.clone().applyMatrix4(e)));return this.center=m.center,this.normal=m.normal,this.majorAxis=m.majorAxis,this.majorAxisRadius=m.majorAxisRadius,this.minorAxisRadius=m.minorAxisRadius,this._startAngle=m._startAngle,this._endAngle=m._endAngle,this._boundingBoxNeedsUpdate=!0,this}copy(t){return this.center=t.center,this.normal=t.normal,this.majorAxis=t.majorAxis,this.majorAxisRadius=t.majorAxisRadius,this.minorAxisRadius=t.minorAxisRadius,this.startAngle=t.startAngle,this.endAngle=t.endAngle,this._boundingBoxNeedsUpdate=!0,this}clone(){return new Ze(this.center,this.normal,this.majorAxis,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle)}get plane(){const t=new f(this.center).distanceTo(Fn);return new Ws(this.normal,t)}}class Vt extends ts{constructor(t=null,e=!1){super(),this._vertices=t||new Array,this._closed=e}get vertices(){return this._vertices}get numberOfVertices(){return this._vertices.length}get closed(){return this._closed}get startPoint(){if(this.numberOfVertices>0){const t=this._vertices[0];return new v(t.x,t.y)}throw new Error("Start point does not exist in an empty polyline.")}get endPoint(){const t=this.numberOfVertices;if(t>0)if(this.closed){const e=this._vertices[0];return new v(e.x,e.y)}else{const e=this._vertices[t-1];return new v(e.x,e.y)}throw new Error("End point does not exist in an empty polyline.")}get length(){let t=0;const e=this._vertices.length;for(let s=0;s<e;++s){const n=this._vertices[s];let r=null;if(s<e-1?r=this._vertices[s+1]:s==e-1&&this.closed&&(r=this._vertices[0]),r)if(n.bulge){const a=new Ve(n,r,n.bulge);t+=a.length}else t+=new v(n.x,n.y).distanceTo(r)}return t}set closed(t){this._closed=t,this._boundingBoxNeedsUpdate=!0}addVertexAt(t,e){t<=0?this._vertices.unshift(e):this._vertices.splice(t,0,e),this._boundingBoxNeedsUpdate=!0}removeVertexAt(t){if(t<0||t>=this._vertices.length)throw new Error(`Index ${t} is out of bounds. Valid range is 0 to ${this._vertices.length-1}.`);this._vertices.splice(t,1),this._boundingBoxNeedsUpdate=!0}reset(t,e){t?e!==void 0&&e>=0&&e<this._vertices.length&&(this._vertices=this._vertices.slice(0,e),this._boundingBoxNeedsUpdate=!0):(this._vertices=new Array,this._boundingBoxNeedsUpdate=!0)}getPointAt(t){const e=this._vertices[t];return new v(e.x,e.y)}calculateBoundingBox(){const t=this.getPoints(100);return new pt().setFromPoints(t)}transform(t){const e=t.determinant()<0;return this._vertices.forEach(s=>{const n=new v(s).applyMatrix2d(t);s.x=n.x,s.y=n.y,e&&s.bulge!=null&&(s.bulge=-s.bulge)}),this._boundingBoxNeedsUpdate=!0,this}clone(){return new Vt(this._vertices.map(t=>({...t})),this._closed)}getPoints3d(t,e){const s=[];return this.getPoints(t).forEach(n=>s.push(new x().set(n.x,n.y,e))),s}getPoints(t){const e=[],s=this._vertices.length;for(let n=0;n<s;++n){const r=this._vertices[n];if(r.bulge){let a=null;if(n<s-1?a=this._vertices[n+1]:n==s-1&&this.closed&&(a=this._vertices[0]),a){const o=new Ve(r,a,r.bulge).getPoints(t),l=o.length;for(let c=0;c<l;++c){const d=o[c];e.push(new v(d.x,d.y))}}}else e.push(new v(r.x,r.y)),n==s-1&&this.closed&&e.push(e[0])}return e}}class Ft extends ts{constructor(t,e){super(),this._start=new v(t),this._end=new v(e)}get startPoint(){return this._start}set startPoint(t){this._start.copy(t),this._boundingBoxNeedsUpdate=!0}get endPoint(){return this._end}set endPoint(t){this._end.copy(t),this._boundingBoxNeedsUpdate=!0}getPoints(){return[this.startPoint,this.endPoint]}get length(){return this.startPoint.distanceTo(this.endPoint)}calculateBoundingBox(){const t=new v(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y)),e=new v(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y));return new pt(t,e)}transform(t){return this._start.applyMatrix2d(t),this._end.applyMatrix2d(t),this._boundingBoxNeedsUpdate=!0,this}get closed(){return!1}copy(t){return this.startPoint=t.startPoint,this.endPoint=t.endPoint,this._boundingBoxNeedsUpdate=!0,this}clone(){return new Ft(this._start.clone(),this._end.clone())}}let Os=class Lt extends ts{constructor(t=[]){super(),this._curves=t}get curves(){return this._curves}static buildFromEdges(t,e=.001){if(t.length===0)return[];const s=[...t],n=[],r=e*e,a=(o,l)=>{const c=o.x-l.x,d=o.y-l.y;return c*c+d*d<=r};for(;s.length>0;){const o=[],l=s.shift();o.push(l);const c=Lt.getEdgeStartPoint(l);let d=Lt.getEdgeEndPoint(l);if(!a(c,d))for(;s.length>0;){const u=Lt.findConnectingEdge(s,d,r);if(u.index<0)break;let g=s.splice(u.index,1)[0];if(u.reverse&&(g=Lt.reverseEdge(g)),o.push(g),d=Lt.getEdgeEndPoint(g),a(d,c))break}n.push(new Lt(o))}return n}add(t){this._curves.push(t),this._boundingBoxNeedsUpdate=!0}get numberOfEdges(){return this._curves.length}get startPoint(){if(this._curves.length>0){const t=this._curves[0].startPoint;return new v(t.x,t.y)}throw new Error("Start point does not exist in an empty loop.")}get endPoint(){return this.startPoint}get length(){let t=0;return this._curves.forEach(e=>{t+=e.length}),t}calculateBoundingBox(){const t=this.getPoints(100),e=new pt;return e.setFromPoints(t),e}transform(t){const e=new Q().set(t.elements[0],t.elements[3],0,t.elements[6],t.elements[1],t.elements[4],0,t.elements[7],0,0,1,0,0,0,0,1);return this._curves.forEach(s=>{s instanceof Rt?s.transform(e):s.transform(t)}),this._boundingBoxNeedsUpdate=!0,this}clone(){return new Lt(this._curves.map(t=>t.clone()))}get closed(){return!0}getPoints(t){const e=[];return this.curves.forEach(s=>{s.getPoints(t).forEach(n=>{e.push(new v(n.x,n.y))})}),e}static findConnectingEdge(t,e,s){let n=-1,r=!1,a=Number.POSITIVE_INFINITY;for(let o=0;o<t.length;o++){const l=t[o],c=Lt.getEdgeStartPoint(l),d=Lt.getEdgeEndPoint(l),u=e.x-c.x,g=e.y-c.y,p=u*u+g*g;p<a&&(a=p,n=o,r=!1);const m=e.x-d.x,y=e.y-d.y,w=m*m+y*y;w<a&&(a=w,n=o,r=!0)}return a>s?{index:-1,reverse:!1}:{index:n,reverse:r}}static getEdgeStartPoint(t){const e=t.startPoint;return new v(e.x,e.y)}static getEdgeEndPoint(t){const e=t.endPoint;return new v(e.x,e.y)}static reverseEdge(t){return t instanceof Ft?new Ft(t.endPoint,t.startPoint):t instanceof Ve?new Ve(t.center,t.radius,t.endAngle,t.startAngle,!t.clockwise):t instanceof Ls?new Ls(t.center,t.majorAxisRadius,t.minorAxisRadius,t.endAngle,t.startAngle,!t.clockwise,t.rotation):t instanceof Rt?Lt.reverseSplineEdge(t):t}static reverseSplineEdge(t){const e=[...t.controlPoints].reverse(),s=t.knots,n=s[0],r=s[s.length-1],a=s.map(c=>n+r-c).reverse(),o=t.weights,l=o.length>0?[...o].reverse():void 0;return new Rt(e,a,l,t.degree,t.closed)}};class en{constructor(){this.c0=0,this.c1=0,this.c2=0,this.c3=0}init(t,e,s,n){this.c0=t,this.c1=s,this.c2=-3*t+3*e-2*s-n,this.c3=2*t-2*e+s+n}initCatmullRom(t,e,s,n,r){this.init(e,s,r*(s-t),r*(n-e))}initNonuniformCatmullRom(t,e,s,n,r,a,o){let l=(e-t)/r-(s-t)/(r+a)+(s-e)/a,c=(s-e)/a-(n-e)/(a+o)+(n-s)/o;l*=a,c*=a,this.init(e,s,l,c)}calc(t){const e=t*t,s=e*t;return this.c0+this.c1*t+this.c2*e+this.c3*s}}class Xi extends Gs{constructor(t=[],e=!1,s="centripetal",n=.5){super(),this.isCatmullRomCurve3d=!0,this.type="CatmullRomCurve3d",this._tmp=new f,this._px=new en,this._py=new en,this._pz=new en,this._points=t.map(r=>new x(r)),this._closed=e,this._curveType=s,this._tension=n}get points(){return this._points}get closed(){return this._closed}get curveType(){return this._curveType}get tension(){return this._tension}get startPoint(){return this._points.length>0?this._points[0]:new x}get endPoint(){return this._points.length>0?this._points[this._points.length-1]:new x}get length(){if(this._points.length<2)return 0;let t=0;for(let e=1;e<this._points.length;e++)t+=this._points[e-1].distanceTo(this._points[e]);return this._closed&&this._points.length>2&&(t+=this._points[this._points.length-1].distanceTo(this._points[0])),t}getPoint(t,e=new x){const s=e,n=this._points,r=n.length;if(r===0)return s.set(0,0,0);if(r===1)return s.copy(n[0]);const a=(r-(this._closed?0:1))*t;let o=Math.floor(a),l=a-o;this._closed?o+=o>0?0:(Math.floor(Math.abs(o)/r)+1)*r:l===0&&o===r-1&&(o=r-2,l=1);let c,d;this._closed||o>0?c=n[(o-1)%r]:(this._tmp.subVectors(n[0],n[1]).add(n[0]),c=new x(this._tmp.x,this._tmp.y,this._tmp.z));const u=n[o%r],g=n[(o+1)%r];if(this._closed||o+2<r?d=n[(o+2)%r]:(this._tmp.subVectors(n[r-1],n[r-2]).add(n[r-1]),d=new x(this._tmp.x,this._tmp.y,this._tmp.z)),this._curveType==="centripetal"||this._curveType==="chordal"){const p=this._curveType==="chordal"?.5:.25;let m=Math.pow(c.distanceToSquared(u),p),y=Math.pow(u.distanceToSquared(g),p),w=Math.pow(g.distanceToSquared(d),p);y<1e-4&&(y=1),m<1e-4&&(m=y),w<1e-4&&(w=y),this._px.initNonuniformCatmullRom(c.x,u.x,g.x,d.x,m,y,w),this._py.initNonuniformCatmullRom(c.y,u.y,g.y,d.y,m,y,w),this._pz.initNonuniformCatmullRom(c.z,u.z,g.z,d.z,m,y,w)}else this._curveType==="catmullrom"&&(this._px.initCatmullRom(c.x,u.x,g.x,d.x,this._tension),this._py.initCatmullRom(c.y,u.y,g.y,d.y,this._tension),this._pz.initCatmullRom(c.z,u.z,g.z,d.z,this._tension));return s.set(this._px.calc(l),this._py.calc(l),this._pz.calc(l)),s}getPoints(t){const e=[];for(let s=0;s<=t;s++)e.push(this.getPoint(s/t));return e}setPoints(t){this._points=t.map(e=>new x(e)),this._boundingBoxNeedsUpdate=!0}setClosed(t){this._closed!==t&&(this._closed=t,this._boundingBoxNeedsUpdate=!0)}setCurveType(t){this._curveType=t}setTension(t){this._tension=t}clone(){return new Xi(this._points.map(t=>t.clone()),this._closed,this._curveType,this._tension)}transform(t){return this._points=this._points.map(e=>{const s=new x;return s.copy(e),s.applyMatrix4(t),s}),this._boundingBoxNeedsUpdate=!0,this}calculateBoundingBox(){if(this._points.length===0)return new C;const t=new C;return this._points.forEach(e=>{t.expandByPoint(e)}),t}}let Ot=class bs{constructor(t,e,s,n){this._degree=t,this._knots=[...e],this._controlPoints=s.map(r=>({x:r.x,y:r.y,z:r.z})),this._weights=n?[...n]:new Array(s.length).fill(1)}degree(){return this._degree}knots(){return[...this._knots]}controlPoints(){return this._controlPoints.map(t=>({x:t.x,y:t.y,z:t.z}))}weights(){return[...this._weights]}clone(){return new bs(this._degree,this._knots,this._controlPoints,this._weights)}point(t){const e=this._controlPoints.map(s=>[s.x,s.y,s.z]);return Es(t,this._degree,this._knots,e,this._weights)}length(){const t=this._controlPoints.map(e=>[e.x,e.y,e.z]);return Ha(this._degree,this._knots,t,this._weights)}static byKnotsControlPointsWeights(t,e,s,n){return new bs(t,e,s,n)}static byPoints(t,e,s="Uniform",n,r){const a=Vn(t,e,s,n,r),o=a.controlPoints.map(l=>({x:l[0],y:l[1],z:l[2]}));return new bs(e,a.knots,o,a.weights)}getParameterRange(){const t=this._knots[this._degree],e=this._knots[this._knots.length-this._degree-1];return{start:t,end:e}}getPoints(t){const e=[],{start:s,end:n}=this.getParameterRange();for(let r=0;r<=t;r++){const a=s+(n-s)*(r/t);e.push(this.point(a))}return e}isClosed(t=1e-6){const{start:e,end:s}=this.getParameterRange(),n=this.point(e),r=this.point(s),a=n[0]-r[0],o=n[1]-r[1],l=n[2]-r[2];return Math.sqrt(a*a+o*o+l*l)<t}static createFitPointsForClosedCurve(t){if(t.length<4)throw new Error("At least 4 points are required for a closed NURBS curve");const e=new Xi(t,!0,"centripetal"),s=Math.max(50,t.length*2);return e.getPoints(s)}static createClosedCurve(t,e,s="Chord"){const n=this.createFitPointsForClosedCurve(t).map(r=>[r.x,r.y,r.z]);return bs.byPoints(n,e,s)}},Rt=class hi extends Gs{constructor(t,e,s,n,r,a){super();const o=arguments.length;if(this._degree=3,this._closed=!1,Array.isArray(e)){if(o<2||o>5)throw yt.ILLEGAL_PARAMETERS;this._controlPoints=t;let l,c=3,d=!1;if(o>=3&&(Array.isArray(s)?(l=s,o>=4&&(c=n||3),o>=5&&(d=r)):s!==void 0&&(c=s||3,o>=4&&(d=n))),s===void 0&&o>=4&&(c=n||3,o>=5&&(d=r)),this._degree=c,this._closed=d,this._controlPoints.length<this._degree+1)throw yt.ILLEGAL_PARAMETERS;this._nurbsCurve=Ot.byKnotsControlPointsWeights(this._degree,e,this._controlPoints,l)}else{if(o<2||o>6)throw yt.ILLEGAL_PARAMETERS;this._fitPoints=t,this._knotParameterization=e,o>=3&&(this._degree=s||3);const l=typeof n=="boolean";o>=4&&l&&(this._closed=n),l?(o>=5&&(this._startTangent=r),o>=6&&(this._endTangent=a)):(o>=4&&(this._startTangent=n),o>=5&&(this._endTangent=r)),this._closed&&(this._startTangent=void 0,this._endTangent=void 0);const c=(this._startTangent?1:0)+(this._endTangent?1:0);if(this._fitPoints.length+c<this._degree+1)throw yt.ILLEGAL_PARAMETERS;if(this._closed)this._nurbsCurve=Ot.createClosedCurve(this._fitPoints,this._degree,this._knotParameterization);else{const d=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=Ot.byPoints(d,this._degree,this._knotParameterization,this._startTangent?this.toNurbsPoint(this._startTangent):void 0,this._endTangent?this.toNurbsPoint(this._endTangent):void 0)}this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints().map(d=>[d.x,d.y,d.z||0]))}}buildCurve(){if(this._fitPoints&&this._knotParameterization){if(this._closed){const t=Ot.createFitPointsForClosedCurve(this._fitPoints),e=this.toNurbsPoints(t);this._nurbsCurve=Ot.byPoints(e,this._degree,this._knotParameterization)}else{const t=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=Ot.byPoints(t,this._degree,this._knotParameterization,this._startTangent?this.toNurbsPoint(this._startTangent):void 0,this._endTangent?this.toNurbsPoint(this._endTangent):void 0)}this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints().map(t=>[t.x,t.y,t.z||0]))}else if(this._controlPoints)if(this._closed){const t=Ot.createFitPointsForClosedCurve(this._controlPoints),e=this.toNurbsPoints(t);this._nurbsCurve=Ot.byPoints(e,this._degree,this._knotParameterization),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints().map(s=>[s.x,s.y,s.z||0]))}else{const t=this._nurbsCurve.knots(),e=this._nurbsCurve.weights();this._nurbsCurve=Ot.byKnotsControlPointsWeights(this._degree,t,this._controlPoints,e)}}setClosed(t){this._closed!==t&&(this._closed=t,this._boundingBoxNeedsUpdate=!0,this.buildCurve())}get degree(){return this._degree}get knotParameterization(){return this._knotParameterization}get controlPoints(){return this._controlPoints.map(t=>({x:t.x,y:t.y,z:t.z||0}))}get fitPoints(){var t;return(t=this._fitPoints)==null?void 0:t.map(e=>({x:e.x,y:e.y,z:e.z||0}))}get knots(){return[...this._nurbsCurve.knots()]}get weights(){return[...this._nurbsCurve.weights()]}get startPoint(){const t=this._nurbsCurve.knots(),e=this._nurbsCurve.degree(),s=t[e],n=this._nurbsCurve.point(s);return new x(n[0],n[1],n[2])}get endPoint(){const t=this._nurbsCurve.knots(),e=this._nurbsCurve.degree(),s=t[t.length-e-1],n=this._nurbsCurve.point(s);return new x(n[0],n[1],n[2])}get length(){return this._nurbsCurve.length()}getFitPointAt(t){if(!this._fitPoints)throw new Error("No fit points in this spline");const e=this._fitPoints.length,s=t<0||t>=e?e-1:t,n=this._fitPoints[s];return{x:n.x,y:n.y,z:n.z||0}}getControlPointAt(t){const e=this._controlPoints.length,s=t<0||t>=e?e-1:t;return this._controlPoints[s]}getPoints(t=100){const e=this._nurbsCurve,s=[],n=e.knots(),r=this._nurbsCurve.degree(),a=n[r],o=n[n.length-r-1],l=(o-a)/(t-1);for(let c=0;c<t;c++){const d=c===t-1?o:a+c*l,u=e.point(d);s.push(new x(u[0],u[1],u[2]))}return s}getCurvePoints(t,e){const s=[],n=t.knots(),r=t.degree(),a=n[r],o=(n[n.length-r-1]-a)/(e-1);for(let l=0;l<e;l++){const c=a+l*o;s.push(t.point(c))}return s}calculateBoundingBox(){const t=this.getPoints(100);return new C().setFromPoints(t)}get closed(){return this._closed}set closed(t){this.setClosed(t)}transform(t){if(this._fitPoints&&this._knotParameterization)this._fitPoints=this._fitPoints.map(e=>new x(e).applyMatrix4(t)),this._startTangent&&(this._startTangent=new x(this._startTangent).transformDirection(t)),this._endTangent&&(this._endTangent=new x(this._endTangent).transformDirection(t)),this.buildCurve();else{const e=this._nurbsCurve.knots(),s=this._nurbsCurve.weights();this._controlPoints=this._controlPoints.map(n=>new x(n).applyMatrix4(t)),this._nurbsCurve=Ot.byKnotsControlPointsWeights(this._degree,e,this._controlPoints,s.length>0?s:void 0)}return this._boundingBoxNeedsUpdate=!0,this}clone(){return this._fitPoints&&this._knotParameterization?new hi(this._fitPoints.map(t=>({x:t.x,y:t.y,z:t.z||0})),this._knotParameterization,this._degree,this._closed,this._startTangent?{x:this._startTangent.x,y:this._startTangent.y,z:this._startTangent.z||0}:void 0,this._endTangent?{x:this._endTangent.x,y:this._endTangent.y,z:this._endTangent.z||0}:void 0):new hi(this._controlPoints.map(t=>({x:t.x,y:t.y,z:t.z||0})),this._nurbsCurve.knots(),this._nurbsCurve.weights(),this._degree,this._closed)}toNurbsPoints(t){const e=new Array(t.length);return t.forEach((s,n)=>{e[n]=[s.x,s.y,s.z||0]}),e}toGePoints(t){const e=new Array(t.length);return t.forEach((s,n)=>{e[n]={x:s[0],y:s[1],z:s[2]}}),e}toNurbsPoint(t){return[t.x,t.y,t.z||0]}static createClosedSpline(t,e="Uniform",s=3){if(t.length<s+1)throw new Error(`At least ${s+1} points are required for a degree ${s} closed spline`);return new hi(t,e,s,!0)}};var jn=(i=>(i.ClosedFilled="",i.Dot="_DOT",i.DotSmall="_DOTSMALL",i.DotBlank="_DOTBLANK",i.Origin="_ORIGIN",i.Origin2="_ORIGIN2",i.Open="_OPEN",i.Open90="_OPEN90",i.Open30="_OPEN30",i.Closed="_CLOSED",i.Small="_SMALL",i.None="_NONE",i.Oblique="_OBLIQUE",i.BoxFilled="_BOXFILLED",i.Box="_BOXBLANK",i.ClosedBlank="_CLOSEDBLANK",i.DatumBlank="_DATUMBLANK",i.DatumFilled="_DATUMFILLED",i.Integral="_INTEGRAL",i.ArchTick="_ARCHTICK",i))(jn||{}),De=(i=>(i[i.ByBlock=-2]="ByBlock",i[i.ByDIPs=-4]="ByDIPs",i[i.ByLayer=-1]="ByLayer",i[i.ByLineWeightDefault=-3]="ByLineWeightDefault",i[i.LineWeight000=0]="LineWeight000",i[i.LineWeight005=5]="LineWeight005",i[i.LineWeight009=9]="LineWeight009",i[i.LineWeight013=13]="LineWeight013",i[i.LineWeight015=15]="LineWeight015",i[i.LineWeight018=18]="LineWeight018",i[i.LineWeight020=20]="LineWeight020",i[i.LineWeight025=25]="LineWeight025",i[i.LineWeight030=30]="LineWeight030",i[i.LineWeight035=35]="LineWeight035",i[i.LineWeight040=40]="LineWeight040",i[i.LineWeight050=50]="LineWeight050",i[i.LineWeight053=53]="LineWeight053",i[i.LineWeight060=60]="LineWeight060",i[i.LineWeight070=70]="LineWeight070",i[i.LineWeight080=80]="LineWeight080",i[i.LineWeight090=90]="LineWeight090",i[i.LineWeight100=100]="LineWeight100",i[i.LineWeight106=106]="LineWeight106",i[i.LineWeight120=120]="LineWeight120",i[i.LineWeight140=140]="LineWeight140",i[i.LineWeight158=158]="LineWeight158",i[i.LineWeight200=200]="LineWeight200",i[i.LineWeight211=211]="LineWeight211",i))(De||{}),ne=(i=>(i[i.LEFT_TO_RIGHT=1]="LEFT_TO_RIGHT",i[i.RIGHT_TO_LEFT=2]="RIGHT_TO_LEFT",i[i.TOP_TO_BOTTOM=3]="TOP_TO_BOTTOM",i[i.BOTTOM_TO_TOP=4]="BOTTOM_TO_TOP",i[i.BY_STYLE=5]="BY_STYLE",i))(ne||{}),ot=(i=>(i[i.TopLeft=1]="TopLeft",i[i.TopCenter=2]="TopCenter",i[i.TopRight=3]="TopRight",i[i.MiddleLeft=4]="MiddleLeft",i[i.MiddleCenter=5]="MiddleCenter",i[i.MiddleRight=6]="MiddleRight",i[i.BottomLeft=7]="BottomLeft",i[i.BottomCenter=8]="BottomCenter",i[i.BottomRight=9]="BottomRight",i))(ot||{}),Wn=(i=>(i[i.OPTIMIZED_2D=0]="OPTIMIZED_2D",i[i.WIREFRAME=1]="WIREFRAME",i[i.HIDDEN_LINE=2]="HIDDEN_LINE",i[i.FLAT_SHADED=3]="FLAT_SHADED",i[i.GOURAUD_SHADED=4]="GOURAUD_SHADED",i[i.FLAT_SHADED_WITH_WIREFRAME=5]="FLAT_SHADED_WITH_WIREFRAME",i[i.GOURAUD_SHADED_WITH_WIREFRAME=6]="GOURAUD_SHADED_WITH_WIREFRAME",i))(Wn||{}),Gn=(i=>(i[i.NON_ORTHOGRAPHIC=0]="NON_ORTHOGRAPHIC",i[i.TOP=1]="TOP",i[i.BOTTOM=2]="BOTTOM",i[i.FRONT=3]="FRONT",i[i.BACK=4]="BACK",i[i.LEFT=5]="LEFT",i[i.RIGHT=6]="RIGHT",i))(Gn||{}),Hn=(i=>(i[i.ONE_DISTANT_LIGHT=0]="ONE_DISTANT_LIGHT",i[i.TWO_DISTANT_LIGHTS=1]="TWO_DISTANT_LIGHTS",i))(Hn||{});let to=class eo{constructor(){this._number=-1,this._id="",this._groupId="",this._centerPoint=new x,this._height=0,this._width=0,this._viewCenter=new x,this._viewHeight=0}get number(){return this._number}set number(t){this._number=t}get id(){return this._id}set id(t){this._id=t}get groupId(){return this._groupId}set groupId(t){this._groupId=t}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint.copy(t)}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get box(){const t=new pt;return t.setFromCenterAndSize(this.centerPoint,{x:this.width,y:this.height}),t}get viewCenter(){return this._viewCenter}set viewCenter(t){this._viewCenter.copy(t)}get viewHeight(){return this._viewHeight}set viewHeight(t){this._viewHeight=t}get viewWidth(){return this.viewHeight*(this.width/this.height)}get viewBox(){const t=new pt;return t.setFromCenterAndSize(this.viewCenter,{x:this.viewWidth,y:this.viewHeight}),t}clone(){const t=new eo;return t.id=this.id,t.groupId=this.groupId,t.number=this.number,t.centerPoint.copy(this.centerPoint),t.height=this.height,t.width=this.width,t.viewCenter.copy(this.viewCenter),t.viewHeight=this.viewHeight,t}copy(t){return this.id=t.id,this.groupId=t.groupId,this.number=t.number,this.centerPoint.copy(t.centerPoint),this.height=t.height,this.width=t.width,this.viewCenter.copy(t.viewCenter),this.viewHeight=t.viewHeight,this}};const Qn=class Qn extends ae{constructor(){super(...arguments),this._lineType=qe,this._visibility=!0,this._transparency=new Ui}get type(){return this.constructor.typeName}get layer(){return this._layer==null&&(this._layer=this.database.clayer??"0"),this._layer}set layer(t){this._layer=t}get color(){return this._color==null&&(this._color=new tt,this.database.cecolor&&this._color.copy(this.database.cecolor)),this._color}set color(t){this._color==null&&(this._color=new tt),this._color.copy(t)}get resolvedColor(){let t=this.color;if(t.isByLayer){const e=this.getLayerColor();e&&e.RGB!=null&&(t=e)}else t.isByBlock;return t}get rgbColor(){const e=this.resolvedColor.RGB;return e??16777215}get lineType(){return this._lineType}set lineType(t){this._lineType=t||qe}get lineWeight(){return this._lineWeight==null&&(this._lineWeight=this.database.celweight??De.ByLayer),this._lineWeight}set lineWeight(t){this._lineWeight=t}get linetypeScale(){return this._linetypeScale==null&&(this._linetypeScale=this.database.celtscale??-1),this._linetypeScale}set linetypeScale(t){this._linetypeScale=t}get visibility(){return this._visibility}set visibility(t){this._visibility=t}get transparency(){return this._transparency}set transparency(t){this._transparency=t.clone()}dxfOutFields(t){t.writeSubclassMarker("AcDbEntity"),t.writeString(8,this.layer),t.writeString(6,this.lineType),t.writeDouble(48,this.linetypeScale),t.writeInt16(60,this.visibility?0:1),t.writeCmColor(this.color),t.writeInt16(370,this.lineWeight),t.writeTransparency(this.transparency);const e=this.database.tables.blockTable.getIdAt(this.ownerId);return e!=null&&e.isPaperSapce&&t.writeInt16(67,1),this}resolveEffectiveProperties(){this._layer==null&&(this._layer=this.database.clayer??"0"),this._color==null&&(this._color=new tt,this.database.cecolor&&this._color.copy(this.database.cecolor)),this._linetypeScale==null&&(this._linetypeScale=this.database.celtscale??-1),this._lineWeight==null&&(this._lineWeight=this.database.celweight??De.ByLayer)}get properties(){return{type:this.type,groups:[this.getGeneralProperties()]}}subGetGripPoints(){return new Array}subGetOsnapPoints(t,e,s,n,r){}transformBy(t){return this}erase(){return this.database.tables.blockTable.removeEntity(this.objectId)}worldDraw(t,e){const s=t.subEntityTraits;s.color=this.resolvedColor,s.rgbColor=this.rgbColor,s.lineType=this.lineStyle,s.lineTypeScale=this.linetypeScale,s.lineWeight=this.lineWeight,s.transparency=this.transparency,s.layer=this.layer,"thickness"in this&&(s.thickness=this.thickness);const n=this.subWorldDraw(t,e);return this.attachEntityInfo(n),n}triggerModifiedEvent(){this.database.events.entityModified.dispatch({database:this.database,entity:this})}getGeneralProperties(){return{groupName:"general",properties:[{name:"handle",type:"int",editable:!1,accessor:{get:()=>this.objectId}},{name:"color",type:"color",editable:!0,accessor:{get:()=>this.color,set:t=>{this.color.copy(t)}}},{name:"layer",type:"string",editable:!0,accessor:{get:()=>this.layer,set:t=>{this.layer=t}}},{name:"linetype",type:"linetype",editable:!0,accessor:{get:()=>this.lineType,set:t=>{this.lineType=t}}},{name:"linetypeScale",type:"float",editable:!0,accessor:{get:()=>this.linetypeScale,set:t=>{this.linetypeScale=t}}},{name:"lineWeight",type:"lineweight",editable:!0,accessor:{get:()=>this.lineWeight,set:t=>{this.lineWeight=t}}},{name:"transparency",type:"transparency",editable:!0,accessor:{get:()=>this.transparency,set:t=>{this.transparency=t}}}]}}get lineStyle(){var n;const{type:t,name:e}=this.getLineType(),s=(n=this.database)==null?void 0:n.tables.linetypeTable.getAt(e);return s?{type:t,...s.linetype}:{type:t,name:e,standardFlag:0,description:"",totalPatternLength:0}}getLineType(){if(this.lineType==qe){const t=this.database.tables.layerTable.getAt(this.layer);if(t&&t.linetype)return{type:"ByLayer",name:t.linetype}}else return this.lineType==yi?{type:"ByBlock",name:$e}:{type:"UserSpecified",name:this.lineType};return{type:"UserSpecified",name:$e}}getLayerColor(){const t=this.database.tables.layerTable.getAt(this.layer);return t!=null?t.color:null}attachEntityInfo(t){t&&(t.objectId=this.objectId,this.attrs.has("ownerId")&&(t.ownerId=this.ownerId),t.layerName=this.layer,t.visible=this.visibility)}};Qn.typeName="Entity";let gt=Qn;const Jn=class Jn extends gt{};Jn.typeName="Curve";let rt=Jn;var Ue=(i=>(i[i.SimplePoly=0]="SimplePoly",i[i.FitCurvePoly=1]="FitCurvePoly",i[i.QuadSplinePoly=2]="QuadSplinePoly",i[i.CubicSplinePoly=3]="CubicSplinePoly",i))(Ue||{});const tr=class tr extends rt{get dxfTypeName(){return"POLYLINE"}constructor(t,e,s=0,n=!1,r=0,a=0,o=null){super(),this._polyType=t,this._elevation=s;const l=o&&(o==null?void 0:o.length)===e.length,c=e.map((d,u)=>({x:d.x,y:d.y,bulge:l?o[u]:void 0}));this._geo=new Vt(c,n)}get polyType(){return this._polyType}set polyType(t){this._polyType=t}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get closed(){return this._geo.closed}set closed(t){this._geo.closed=t}get numberOfVertices(){return this._geo.numberOfVertices}getPointAt(t){return this._geo.getPointAt(t)}getBulgeAt(t){const e=this._geo.vertices[t];return(e==null?void 0:e.bulge)||0}get geometricExtents(){const t=this._geo.box;return new C({x:t.min.x,y:t.min.y,z:this._elevation},{x:t.max.x,y:t.max.y,z:this._elevation})}subGetGripPoints(){const t=new Array;for(let e=0;e<this._geo.numberOfVertices;++e){const s=this._geo.getPointAt(e);t.push(new x(s.x,s.y,0))}return t}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:for(let r=0;r<this._geo.numberOfVertices;++r){const a=this._geo.getPointAt(r);n.push(new x(a.x,a.y,0))}break}}transformBy(t){const e=t.determinant()<0;let s=this._elevation;return this._geo.vertices.forEach(n=>{const r=new x(n.x,n.y,this._elevation).applyMatrix4(t);n.x=r.x,n.y=r.y,s=r.z,e&&n.bulge!=null&&(n.bulge=-n.bulge)}),this._elevation=s,this._geo._boundingBoxNeedsUpdate=!0,this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0}]},accessor:{get:()=>this._geo.vertices}},{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]},{groupName:"others",properties:[{name:"closed",type:"float",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}}]}]}}subWorldDraw(t){const e=[];return this._geo.getPoints(100).forEach(n=>e.push(new x().set(n.x,n.y,this.elevation))),t.lines(e)}dxfOut(t,e=!1){super.dxfOut(t,e);for(let s=0;s<this.numberOfVertices;++s)t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb2dVertex"),t.writePoint3d(10,{x:this.getPointAt(s).x,y:this.getPointAt(s).y,z:this.elevation}),t.writeDouble(42,this.getBulgeAt(s)),t.writeInt16(70,0);return t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDb2dPolyline");let e=this.closed?1:0;return this.polyType===1&&(e|=2),this.polyType===2&&(e|=4),this.polyType===3&&(e|=8),t.writeInt16(66,this.numberOfVertices>0?1:0),t.writeInt16(70,e),t.writeDouble(10,0),t.writeDouble(20,0),t.writeDouble(30,this.elevation),this}};tr.typeName="2dPolyline";let _i=tr;var so=(i=>(i[i.Vertex=0]="Vertex",i[i.CurveFitVertex=1]="CurveFitVertex",i[i.SplineFitVertex=8]="SplineFitVertex",i[i.SplineCtlVertex=9]="SplineCtlVertex",i))(so||{});const er=class er extends gt{get dxfTypeName(){return"VERTEX"}constructor(){super(),this._position=new x,this._bulge=0,this._startWidth=0,this._endWidth=0,this._vertexType=0}get position(){return this._position}set position(t){this._position.copy(t)}get bulge(){return this._bulge}set bulge(t){this._bulge=t}get startWidth(){return this._startWidth}set startWidth(t){this._startWidth=t}get endWidth(){return this._endWidth}set endWidth(t){this._endWidth=t}get vertexType(){return this._vertexType}set vertexType(t){this._vertexType=t}get geometricExtents(){return new C().expandByPoint(this._position)}subGetGripPoints(){const t=new Array;return t.push(this._position),t}subGetOsnapPoints(t,e,s,n){n.push(this._position)}transformBy(t){return this._position.applyMatrix4(t),this}subWorldDraw(t){}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb2dVertex"),t.writePoint2d(10,this.position),t.writeDouble(40,this.startWidth),t.writeDouble(41,this.endWidth),t.writeDouble(42,this.bulge),t.writeInt16(70,this.vertexType),this}};er.typeName="2dVertex";let bn=er;var Ss=(i=>(i[i.SimplePoly=0]="SimplePoly",i[i.QuadSplinePoly=1]="QuadSplinePoly",i[i.CubicSplinePoly=2]="CubicSplinePoly",i))(Ss||{});const sr=class sr extends rt{get dxfTypeName(){return"POLYLINE"}constructor(t,e,s=!1){super(),this._polyType=t,this._geo=new Vt(e,s)}get polyType(){return this._polyType}set polyType(t){this._polyType=t}get closed(){return this._geo.closed}set closed(t){this._geo.closed=t}get numberOfVertices(){return this._geo.numberOfVertices}getPointAt(t){const e=this._geo.vertices[t];return new x(e.x,e.y,e.z||0)}get geometricExtents(){const t=this._geo.vertices.map(e=>new x(e.x,e.y,e.z||0));return new C().setFromPoints(t)}subGetGripPoints(){const t=new Array;for(let e=0;e<this._geo.numberOfVertices;++e){const s=this._geo.getPointAt(e);t.push(new x(s.x,s.y,0))}return t}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:for(let r=0;r<this._geo.numberOfVertices;++r)n.push(this.getPointAt(r));break}}transformBy(t){return this._geo.vertices.forEach(e=>{const s=new x(e.x,e.y,e.z||0).applyMatrix4(t);e.x=s.x,e.y=s.y,e.z=s.z}),this._geo._boundingBoxNeedsUpdate=!0,this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0},{name:"z",type:"float",editable:!0}]},accessor:{get:()=>this._geo.vertices}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]},{groupName:"others",properties:[{name:"closed",type:"float",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}}]}]}}subWorldDraw(t){const e=this._geo.vertices.map(s=>new x(s.x,s.y,s.z||0));return t.lines(e)}dxfOut(t,e=!1){super.dxfOut(t,e);for(let s=0;s<this.numberOfVertices;++s){const n=this.getPointAt(s);t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb3dPolylineVertex"),t.writePoint3d(10,{x:n.x,y:n.y,z:n.z}),t.writeInt16(70,32)}return t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDb3dPolyline");let e=this.closed?1:0;return e|=8,this.polyType===1&&(e|=16),this.polyType===2&&(e|=32),t.writeInt16(66,this.numberOfVertices>0?1:0),t.writeInt16(70,e),this}};sr.typeName="3dPolyline";let wi=sr;var io=(i=>(i[i.SimpleVertex=0]="SimpleVertex",i[i.ControlVertex=1]="ControlVertex",i[i.FitVertex=2]="FitVertex",i))(io||{});const ir=class ir extends gt{get dxfTypeName(){return"VERTEX"}constructor(){super(),this._position=new x,this._vertexType=0}get position(){return this._position}set position(t){this._position.copy(t)}get vertexType(){return this._vertexType}set vertexType(t){this._vertexType=t}get geometricExtents(){return new C().expandByPoint(this._position)}subGetGripPoints(){const t=new Array;return t.push(this._position),t}subGetOsnapPoints(t,e,s,n){n.push(this._position)}transformBy(t){return this._position.applyMatrix4(t),this}subWorldDraw(t){}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDb3dPolylineVertex"),t.writePoint3d(10,this.position),t.writeInt16(70,this.vertexType|32),this}};ir.typeName="3dVertex";let fn=ir;const nr=class nr extends rt{get dxfTypeName(){return"ARC"}constructor(t,e,s,n,r=f.Z_AXIS){super(),this._geo=new ze(t,e,s,n,r,f.X_AXIS)}get center(){return this._geo.center}set center(t){this._geo.center=t}get radius(){return this._geo.radius}set radius(t){this._geo.radius=t}get startAngle(){return this._geo.startAngle}set startAngle(t){this._geo.startAngle=t}get endAngle(){return this._geo.endAngle}set endAngle(t){this._geo.endAngle=t}get normal(){return this._geo.normal}set normal(t){this._geo.normal=t}get startPoint(){return this._geo.startPoint}get endPoint(){return this._geo.endPoint}get midPoint(){return this._geo.midPoint}get geometricExtents(){return this._geo.box}get closed(){return this._geo.closed}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"centerX",type:"float",editable:!0,accessor:{get:()=>this.center.x,set:t=>{this.center.x=t}}},{name:"centerY",type:"float",editable:!0,accessor:{get:()=>this.center.y,set:t=>{this.center.y=t}}},{name:"centerZ",type:"float",editable:!0,accessor:{get:()=>this.center.z,set:t=>{this.center.z=t}}},{name:"radius",type:"float",editable:!0,accessor:{get:()=>this.radius,set:t=>{this.radius=t}}},{name:"startAngle",type:"float",editable:!0,accessor:{get:()=>this.startAngle,set:t=>{this.startAngle=t}}},{name:"endAngle",type:"float",editable:!0,accessor:{get:()=>this.endAngle,set:t=>{this.endAngle=t}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:t=>{this.normal.x=t}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:t=>{this.normal.y=t}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:t=>{this.normal.z=t}}},{name:"arcLength",type:"float",editable:!1,accessor:{get:()=>this._geo.length}},{name:"totalAngle",type:"float",editable:!1,accessor:{get:()=>L.radToDeg(Math.abs(this._geo.deltaAngle))}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this._geo.area}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.center),t.push(this.startPoint),t.push(this.endPoint),t}subGetOsnapPoints(t,e,s,n){const r=this.startPoint,a=this.endPoint;switch(t){case R.EndPoint:n.push(r),n.push(a);break;case R.MidPoint:n.push(this.midPoint);break;case R.Nearest:{const o=this._geo.nearestPoint(e);n.push(o)}break;case R.Perpendicular:break;case R.Tangent:{const o=this._geo.tangentPoints(e);n.push(...o);break}}}transformBy(t){return this._geo.transform(t),this}subWorldDraw(t){return t.circularArc(this._geo)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbArc"),t.writePoint3d(10,this.center),t.writeDouble(40,this.radius),t.writeAngle(50,this.startAngle),t.writeAngle(51,this.endAngle),t.writeVector3d(210,this.normal),this}};nr.typeName="Arc";let xi=nr;var no=(i=>(i[i.LEFT=0]="LEFT",i[i.CENTER=1]="CENTER",i[i.RIGHT=2]="RIGHT",i[i.ALIGNED=3]="ALIGNED",i[i.MIDDLE=4]="MIDDLE",i[i.FIT=5]="FIT",i))(no||{}),ro=(i=>(i[i.BASELINE=0]="BASELINE",i[i.BOTTOM=1]="BOTTOM",i[i.MIDDLE=2]="MIDDLE",i[i.TOP=3]="TOP",i))(ro||{});const rr=class rr extends gt{get dxfTypeName(){return"TEXT"}constructor(){super(),this._textString="",this._height=0,this._thickness=1,this._position=new x,this._rotation=0,this._oblique=0,this._horizontalMode=0,this._verticalModel=2,this._styleName="",this._widthFactor=1}get textString(){return this._textString}set textString(t){this._textString=t}get thickness(){return this._thickness}set thickness(t){this._thickness=t}get height(){return this._height}set height(t){this._height=t}get position(){return this._position}set position(t){this._position.copy(t)}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get oblique(){return this._oblique}set oblique(t){this._oblique=t}get horizontalMode(){return this._horizontalMode}set horizontalMode(t){this._horizontalMode=t}get verticalMode(){return this._verticalModel}set verticalMode(t){this._verticalModel=t}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get widthFactor(){return this._widthFactor}set widthFactor(t){this._widthFactor=t}get geometricExtents(){return new C}subGetOsnapPoints(t,e,s,n){R.Insertion===t&&n.push(this._position)}transformBy(t){const e=this._position.clone(),s=this._position.clone().add(new f(Math.cos(this._rotation),Math.sin(this._rotation),0)),n=this._position.clone().add(new f(-Math.sin(this._rotation),Math.cos(this._rotation),0)),r=this._position.clone().add(new f(0,0,1));e.applyMatrix4(t),s.applyMatrix4(t),n.applyMatrix4(t),r.applyMatrix4(t);const a=new f(s).sub(e),o=new f(n).sub(e),l=new f(r).sub(e),c=o.length(),d=a.length(),u=l.length();return this._position.copy(e),d>0&&(this._rotation=Math.atan2(a.y,a.x)),c>0&&(this._height*=c,d>0&&(this._widthFactor*=d/c)),u>0&&(this._thickness*=u),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.textString,set:t=>{this.textString=t}}},{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.height,set:t=>{this.height=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"widthFactor",type:"float",editable:!0,accessor:{get:()=>this.widthFactor,set:t=>{this.widthFactor=t}}},{name:"oblique",type:"float",editable:!0,accessor:{get:()=>this.oblique,set:t=>{this.oblique=t}}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}getTextStyle(){const t=this.database.tables.textStyleTable,e=t.getAt(this.styleName)??t.getAt(this.database.textstyle)??t.getAt(J);if(!e)throw new Error("No valid text style found in text style table.");return e.textStyle}subWorldDraw(t,e){const s={text:this.textString,height:this.height,width:1/0,widthFactor:this.widthFactor,position:this.position,rotation:this.rotation,drawingDirection:ne.BOTTOM_TO_TOP,attachmentPoint:ot.BottomLeft};return t.mtext(s,this.getTextStyle(),e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbText"),t.writePoint3d(10,this.position),t.writeDouble(39,this.thickness),t.writeDouble(40,this.height),t.writeString(1,this.textString),t.writeAngle(50,this.rotation),t.writeDouble(41,this.widthFactor),t.writeAngle(51,this.oblique),t.writeString(7,this.styleName),t.writeInt16(72,this.horizontalMode),t.writeInt16(73,this.verticalMode),t.writePoint3d(11,this.position),this}};rr.typeName="Text";let Ke=rr;var K=(i=>(i[i.Invisible=1]="Invisible",i[i.Const=2]="Const",i[i.Verifiable=4]="Verifiable",i[i.Preset=8]="Preset",i))(K||{}),Bt=(i=>(i[i.MultiLine=2]="MultiLine",i[i.ConstMultiLine=4]="ConstMultiLine",i))(Bt||{});const ar=class ar extends Ke{get dxfTypeName(){return"ATTDEF"}constructor(){super(),this._flags=0,this._prompt="",this._mtextFlag=0,this._tag="",this._fieldLength=0,this._lockPositionInBlock=!1,this._isReallyLocked=!1}get isInvisible(){return(this._flags&1)!==0}set isInvisible(t){t?this._flags|=1:this._flags&=-2}get prompt(){return this._prompt}set prompt(t){this._prompt=t}get isConst(){return(this._flags&2)!==0}set isConst(t){t?this._flags|=2:this._flags&=-3}get isVerifiable(){return(this._flags&4)!==0}set isVerifiable(t){t?this._flags|=4:this._flags&=-5}get isPreset(){return(this._flags&8)!==0}set isPreset(t){t?this._flags|=8:this._flags&=-9}get isMTextAttribute(){return(this._mtextFlag&2)!==0}set isMTextAttribute(t){t?this._mtextFlag|=2:this._mtextFlag&=-3}get isConstMTextAttribute(){return(this._mtextFlag&4)!==0}set isConstMTextAttribute(t){t?this._mtextFlag|=4:this._mtextFlag&=-5}get tag(){return this._tag}set tag(t){this._tag=t}get fieldLength(){return this._fieldLength}set fieldLength(t){this._fieldLength=t}get lockPositionInBlock(){return this._lockPositionInBlock}set lockPositionInBlock(t){this._lockPositionInBlock=t}get isReallyLocked(){return this._isReallyLocked}set isReallyLocked(t){this._isReallyLocked=t}get mtext(){return this._mtext}set mtext(t){this._mtext=t,this.isMTextAttribute=t!=null}subWorldDraw(t){}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbAttributeDefinition"),t.writeString(3,this.prompt),t.writeString(2,this.tag),t.writeInt16(70,this.isInvisible?1:0),t.writeInt16(73,this.fieldLength),t.writeInt16(74,this.isReallyLocked?1:0),this}};ar.typeName="AttDef";let bi=ar;const or=class or extends Ke{get dxfTypeName(){return"ATTRIB"}constructor(){super(),this._flags=0,this._mtextFlag=0,this._tag="",this._fieldLength=0,this._lockPositionInBlock=!1,this._isReallyLocked=!1}get isInvisible(){return(this._flags&K.Invisible)!==0}set isInvisible(t){t?this._flags|=K.Invisible:this._flags&=~K.Invisible}get isConst(){return(this._flags&K.Const)!==0}set isConst(t){t?this._flags|=K.Const:this._flags&=~K.Const}get isVerifiable(){return(this._flags&K.Verifiable)!==0}set isVerifiable(t){t?this._flags|=K.Verifiable:this._flags&=~K.Verifiable}get isPreset(){return(this._flags&K.Preset)!==0}set isPreset(t){t?this._flags|=K.Preset:this._flags&=~K.Preset}get isMTextAttribute(){return(this._mtextFlag&Bt.MultiLine)!==0}set isMTextAttribute(t){t?this._mtextFlag|=Bt.MultiLine:this._mtextFlag&=~Bt.MultiLine}get isConstMTextAttribute(){return(this._mtextFlag&Bt.ConstMultiLine)!==0}set isConstMTextAttribute(t){t?this._mtextFlag|=Bt.ConstMultiLine:this._mtextFlag&=~Bt.ConstMultiLine}get tag(){return this._tag}set tag(t){this._tag=t}get fieldLength(){return this._fieldLength}set fieldLength(t){this._fieldLength=t}get lockPositionInBlock(){return this._lockPositionInBlock}set lockPositionInBlock(t){this._lockPositionInBlock=t}get isReallyLocked(){return this._isReallyLocked}set isReallyLocked(t){this._isReallyLocked=t}get mtext(){return this._mtext}set mtext(t){this._mtext=t,this.isMTextAttribute=t!=null}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbAttribute"),t.writeInt16(70,this.isInvisible?1:0),t.writeInt16(73,this.fieldLength),t.writeString(2,this.tag),t.writeInt16(74,this.isReallyLocked?1:0),this.mtext&&t.writeInt16(71,this.isMTextAttribute?1:0),this}};or.typeName="Attrib";let fi=or;const hr=class hr extends gt{get dxfTypeName(){return"INSERT"}constructor(t){super(),this._blockName=t,this._position=new x,this._rotation=0,this._normal=new f(0,0,1),this._scaleFactors=new x(1,1,1),this._attribs=new Map}get position(){return this._position}set position(t){this._position.copy(t)}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get scaleFactors(){return this._scaleFactors}set scaleFactors(t){this._scaleFactors.copy(t)}get normal(){return this._normal}set normal(t){this._normal.copy(t).normalize()}get blockName(){return this._blockName}get blockTableRecord(){return this.database.tables.blockTable.getAt(this._blockName)}appendAttributes(t){this._attribs.set(t.objectId,t),t.ownerId=this.objectId}attributeIterator(){return new Us(this._attribs)}get blockTransform(){const t=this.blockTableRecord,e=(t==null?void 0:t.origin)??x.ORIGIN,s=new Q().makeTranslation(-e.x,-e.y,-e.z),n=new Q().makeScale(this._scaleFactors.x,this._scaleFactors.y,this._scaleFactors.z),r=new We().setFromAxisAngle(f.Z_AXIS,this._rotation),a=new Q().makeRotationFromQuaternion(r),o=new Q().makeTranslation(this._position.x,this._position.y,this._position.z);return new Q().multiplyMatrices(o,a).multiply(n).multiply(s)}subGetOsnapPoints(t,e,s,n,r){R.Insertion===t?n.push(this._position):r&&this.subEntityGetOsnapPoints(t,e,s,n,r)}transformBy(t){const e=new Q().setFromExtrusionDirection(this._normal),s=new Q().makeRotationZ(this._rotation),n=new Q().multiplyMatrices(e,s),r=this._position.clone(),a=new x(this._scaleFactors.x,0,0).applyMatrix4(n).add(r),o=new x(0,this._scaleFactors.y,0).applyMatrix4(n).add(r),l=new x(0,0,this._scaleFactors.z).applyMatrix4(n).add(r);r.applyMatrix4(t),a.applyMatrix4(t),o.applyMatrix4(t),l.applyMatrix4(t);const c=new f(a).sub(r),d=new f(o).sub(r),u=new f(l).sub(r);let g=new f().crossVectors(c,d);g.lengthSq()===0?g=this._normal.clone().transformDirection(t):g.normalize();const m=new Q().setFromExtrusionDirection(g).clone().invert(),y=c.clone().applyMatrix4(m);return this._position.copy(r),this._normal.copy(g),this._rotation=Math.atan2(y.y,y.x),this._scaleFactors.set(c.length(),d.length(),u.length()),this._attribs.forEach(w=>w.transformBy(t)),this}get properties(){const t={type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"blockName",type:"float",editable:!1,accessor:{get:()=>this._blockName}},{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:e=>{this.position.x=e}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:e=>{this.position.y=e}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:e=>{this.position.z=e}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:e=>{this.rotation=e}}},{name:"scaleFactorsX",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.x,set:e=>{this.scaleFactors.x=e}}},{name:"scaleFactorsY",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.y,set:e=>{this.scaleFactors.y=e}}},{name:"scaleFactorsZ",type:"float",editable:!0,accessor:{get:()=>this.scaleFactors.z,set:e=>{this.scaleFactors.z=e}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:e=>{this.normal.x=e}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:e=>{this.normal.y=e}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:e=>{this.normal.z=e}}}]}]};if(this._attribs.size>0){const e={groupName:"attribute",properties:[]};t.groups.push(e),this._attribs.forEach(s=>{e.properties.push({name:s.tag,type:"string",editable:!s.isConst,skipTranslation:!0,accessor:{get:()=>s.textString,set:n=>{s.textString=n}}})})}return t}get geometricExtents(){const t=new C,e=this.blockTableRecord;if(e!=null){const n=e.newIterator();for(const r of n)t.union(r.geometricExtents)}const s=this.blockTransform;return t.applyMatrix4(s),t}subWorldDraw(t){const e=this.blockTableRecord;if(e!=null){const s=this.blockTransform,n=[];return this._attribs.forEach(a=>{if(!a.isInvisible){const o=a.worldDraw(t);o&&n.push(o)}}),Je.instance.draw(t,e,this.rgbColor,n,!0,s,this._normal)}else return t.group([])}dxfOut(t,e=!1){super.dxfOut(t,e);let s=!1;for(const n of this.attributeIterator())s=!0,t.writeStart("ATTRIB"),n.dxfOut(t);return s&&(t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity")),this}subEntityGetOsnapPoints(t,e,s,n,r){var o;if(r===this.objectId)return;const a=(o=this.database)==null?void 0:o.tables.blockTable;if(a!=null){const l=a.getEntityById(r);if(l){const c=[];l.subGetOsnapPoints(t,e,s,c,r);const d=this.blockTransform;c.forEach(u=>{const g=u.clone().applyMatrix4(d);n.push(g)})}}}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbBlockReference"),t.writePoint3d(10,this.position),t.writeString(2,this.blockName),t.writeDouble(41,this.scaleFactors.x),t.writeDouble(42,this.scaleFactors.y),t.writeDouble(43,this.scaleFactors.z),t.writeAngle(50,this.rotation),t.writeVector3d(210,this.normal),this}};hr.typeName="BlockReference";let Qe=hr;const lr=class lr extends rt{get dxfTypeName(){return"CIRCLE"}constructor(t,e,s=f.Z_AXIS){super(),this._geo=new ze(t,e,0,j,s,f.X_AXIS)}get center(){return this._geo.center}set center(t){this._geo.center=t}get radius(){return this._geo.radius}set radius(t){this._geo.radius=t}get normal(){return this._geo.normal}get geometricExtents(){return this._geo.box}get closed(){return this._geo.closed}subGetOsnapPoints(t,e,s,n){switch(t){case R.Center:case R.Centroid:n.push(this._geo.center);break;case R.Quadrant:n.push(this._geo.getPointAtAngle(0)),n.push(this._geo.getPointAtAngle(Math.PI/2)),n.push(this._geo.getPointAtAngle(Math.PI)),n.push(this._geo.getPointAtAngle(Math.PI/2*3));break;case R.Nearest:{const r=this._geo.nearestPoint(e);n.push(r)}break;case R.Tangent:{const r=this._geo.tangentPoints(e);n.push(...r);break}}}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"centerX",type:"float",editable:!0,accessor:{get:()=>this.center.x,set:t=>{this.center.x=t}}},{name:"centerY",type:"float",editable:!0,accessor:{get:()=>this.center.y,set:t=>{this.center.y=t}}},{name:"centerZ",type:"float",editable:!0,accessor:{get:()=>this.center.z,set:t=>{this.center.z=t}}},{name:"radius",type:"float",editable:!0,accessor:{get:()=>this.radius,set:t=>{this.radius=t}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:t=>{this.normal.x=t}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:t=>{this.normal.y=t}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:t=>{this.normal.z=t}}},{name:"diameter",type:"float",editable:!1,accessor:{get:()=>this._geo.radius*2}},{name:"perimeter",type:"float",editable:!1,accessor:{get:()=>this._geo.length}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this._geo.area}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.center),t}transformBy(t){return this._geo.transform(t),this}subWorldDraw(t){return t.circularArc(this._geo)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbCircle"),t.writePoint3d(10,this.center),t.writeDouble(40,this.radius),t.writeVector3d(210,this.normal),this}};lr.typeName="Circle";let Ii=lr;const cr=class cr extends rt{get dxfTypeName(){return"ELLIPSE"}constructor(t,e,s,n,r,a,o){super(),this._geo=new Ze(t,e,s,n,r,a,o)}get center(){return this._geo.center}set center(t){this._geo.center=t}get majorAxisRadius(){return this._geo.majorAxisRadius}set majorAxisRadius(t){this._geo.majorAxisRadius=t}get minorAxisRadius(){return this._geo.minorAxisRadius}set minorAxisRadius(t){this._geo.minorAxisRadius=t}get startAngle(){return this._geo.startAngle}set startAngle(t){this._geo.startAngle=t}get endAngle(){return this._geo.endAngle}set endAngle(t){this._geo.endAngle=t}get normal(){return this._geo.normal}set normal(t){this._geo.normal=t}get geometricExtents(){return this._geo.box}get closed(){return this._geo.closed}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:this.closed||(n.push(this._geo.startPoint),n.push(this._geo.endPoint));break;case R.MidPoint:this.closed||n.push(this._geo.midPoint);break;case R.Quadrant:this.closed&&(n.push(this._geo.getPointAtAngle(0)),n.push(this._geo.getPointAtAngle(Math.PI/2)),n.push(this._geo.getPointAtAngle(Math.PI)),n.push(this._geo.getPointAtAngle(Math.PI/2*3)));break}}transformBy(t){return this._geo.transform(t),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"centerX",type:"float",editable:!0,accessor:{get:()=>this.center.x,set:t=>{this.center.x=t}}},{name:"centerY",type:"float",editable:!0,accessor:{get:()=>this.center.y,set:t=>{this.center.y=t}}},{name:"centerZ",type:"float",editable:!0,accessor:{get:()=>this.center.z,set:t=>{this.center.z=t}}},{name:"majorAxisRadius",type:"float",editable:!0,accessor:{get:()=>this.majorAxisRadius,set:t=>{this.center.x=t}}},{name:"minorAxisRadius",type:"float",editable:!0,accessor:{get:()=>this.minorAxisRadius,set:t=>{this.minorAxisRadius=t}}},{name:"startAngle",type:"float",editable:!0,accessor:{get:()=>this.startAngle,set:t=>{this.startAngle=t}}},{name:"endAngle",type:"float",editable:!0,accessor:{get:()=>this.endAngle,set:t=>{this.endAngle=t}}},{name:"normalX",type:"float",editable:!0,accessor:{get:()=>this.normal.x,set:t=>{this.normal.x=t}}},{name:"normalY",type:"float",editable:!0,accessor:{get:()=>this.normal.y,set:t=>{this.normal.y=t}}},{name:"normalZ",type:"float",editable:!0,accessor:{get:()=>this.normal.z,set:t=>{this.normal.z=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this._geo.area}}]}]}}subWorldDraw(t){return t.ellipticalArc(this._geo)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbEllipse"),t.writePoint3d(10,this.center);const e=this._geo.majorAxis,s=this.majorAxisRadius;return t.writePoint3d(11,{x:e.x*s,y:e.y*s,z:e.z*s}),t.writeVector3d(210,this.normal),t.writeDouble(40,this.minorAxisRadius/this.majorAxisRadius),t.writeDouble(41,this.startAngle),t.writeDouble(42,this.endAngle),this}};cr.typeName="Ellipse";let Pi=cr;const dr=class dr extends gt{get dxfTypeName(){return"3DFACE"}constructor(){super(),this._vertices=[new x,new x,new x],this._edgeInvisibilities=0}getVertexAt(t){return t<0?this._vertices[0]:t>this._vertices.length?this._vertices[this._vertices.length-1]:this._vertices[t]}setVertexAt(t,e){if(t<0&&this._vertices[0].copy(e),t>=3)return this._vertices.length===3&&this._vertices.push(new x),this._vertices[3].copy(e);this._vertices[t].copy(e)}setEdgeInvisibilities(t){this._edgeInvisibilities=t}isEdgeVisibleAt(t){if(t<0||t>3)throw new Error("Index out of range");return(this._edgeInvisibilities&1<<t)===0}makeEdgeInvisibleAt(t){if(t<0||t>3)throw new Error("Index out of range");this._edgeInvisibilities=this._edgeInvisibilities|1<<t}get geometricExtents(){return new C().setFromPoints(this._vertices)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:n.push(...this._vertices);break}}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this}subWorldDraw(t){const e=this._vertices.length,s=new Float32Array(e*3),n=new Uint16Array(e*2);for(let r=0;r<e;r++)s[r*3]=this._vertices[r].x,s[r*3+1]=this._vertices[r].y,s[r*3+2]=this._vertices[r].z,this.isEdgeVisibleAt(r)&&(n[r*2]=r,n[r*2+1]=(r+1)%4);return t.lineSegments(s,3,n)}dxfOutFields(t){super.dxfOutFields(t);const e=this.getVertexAt(0),s=this.getVertexAt(1),n=this.getVertexAt(2),r=this.getVertexAt(3);t.writeSubclassMarker("AcDbFace"),t.writePoint3d(10,e),t.writePoint3d(11,s),t.writePoint3d(12,n),t.writePoint3d(13,r);let a=0;for(let o=0;o<4;++o)this.isEdgeVisibleAt(o)||(a|=1<<o);return t.writeInt16(70,a),this}};dr.typeName="Face";let Ei=dr;var As=(i=>(i[i.UserDefined=0]="UserDefined",i[i.Predefined=1]="Predefined",i[i.Custom=2]="Custom",i))(As||{}),ao=(i=>(i[i.Normal=0]="Normal",i[i.Outer=1]="Outer",i[i.Ignore=2]="Ignore",i))(ao||{});const ur=class ur extends gt{get dxfTypeName(){return"HATCH"}constructor(){super(),this._elevation=0,this._geo=new ks,this._isSolidFill=!1,this._definitionLines=[],this._patternName="",this._patternType=1,this._patternAngle=0,this._patternScale=1,this._hatchStyle=0}get isSolidFill(){return this._isSolidFill||this._patternName.toUpperCase()==="SOLID"}set isSolidFill(t){this._isSolidFill=t}get definitionLines(){return this._definitionLines}get patternName(){return this._patternName}set patternName(t){this._patternName=t}get patternType(){return this._patternType}set patternType(t){this._patternType=t}get patternAngle(){return this._patternAngle}set patternAngle(t){this._patternAngle=t}get patternScale(){return this._patternScale}set patternScale(t){this._patternScale=t}get hatchStyle(){return this._hatchStyle}set hatchStyle(t){this._hatchStyle=t}get elevation(){return this._elevation}set elevation(t){this._elevation=t}add(t){this._geo.add(t)}buildAreasFromLoops(){const t=this._geo.loops;if(t.length===0)return[];if(t.length===1)return[this._geo];const e=this._geo.buildHierarchy(),s=[],n=(r,a)=>{if(r.index>=0&&a%2===0){const o=new ks;o.add(t[r.index]),r.children.forEach(l=>{l.index>=0&&o.add(t[l.index])}),s.push(o)}r.children.forEach(o=>n(o,a+1))};return e.children.forEach(r=>n(r,0)),s.length>0?s:[this._geo]}getCalculatedAreaValue(){const t=this.buildAreasFromLoops();return t.length===0?0:t.reduce((e,s)=>e+s.area,0)}get geometricExtents(){const t=this.buildAreasFromLoops();if(t.length===0)return new C;const e=new C;return t.forEach(s=>{const n=s.box;e.union(new C({x:n.min.x,y:n.min.y,z:this._elevation},{x:n.max.x,y:n.max.y,z:this._elevation}))}),e}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"pattern",properties:[{name:"patternType",type:"enum",editable:!0,options:[{label:As[0],value:0},{label:As[1],value:1},{label:As[2],value:2}],accessor:{get:()=>this.patternType,set:t=>{this.patternType=t}}},{name:"patternName",type:"string",editable:!0,accessor:{get:()=>this.patternName,set:t=>{this.patternName=t}}},{name:"patternAngle",type:"float",editable:!0,accessor:{get:()=>this.patternAngle,set:t=>{this.patternAngle=t}}},{name:"patternScale",type:"float",editable:!0,accessor:{get:()=>this.patternScale,set:t=>{this.patternScale=t}}}]},{groupName:"geometry",properties:[{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"area",type:"float",editable:!1,accessor:{get:()=>this.getCalculatedAreaValue()}}]}]}}subWorldDraw(t){const e=t.subEntityTraits;e.fillType={solidFill:this.isSolidFill,patternAngle:this.patternAngle,definitionLines:this.definitionLines};const s=this.buildAreasFromLoops();if(s.length===0)return t.area(this._geo);if(s.length===1)return t.area(s[0]);const n=s.map(r=>t.area(r));return t.group(n)}transformBy(t){const e=t.elements,s=new Ds(e[0],e[4],e[12],e[1],e[5],e[13],0,0,1);this._geo.transform(s),this._elevation=new x(0,0,this._elevation).applyMatrix4(t).z;const n=new x(1,0,0).applyMatrix4(t),r=new x().applyMatrix4(t),a=new x(n).sub(r);return a.length()>0&&(this._patternAngle+=Math.atan2(a.y,a.x),this._patternScale*=a.length()),this}dxfOutFields(t){super.dxfOutFields(t);const e=this._geo.loops;return t.writeSubclassMarker("AcDbHatch"),t.writePoint3d(10,{x:0,y:0,z:this.elevation}),t.writeVector3d(210,{x:0,y:0,z:1}),t.writeString(2,this.patternName||(this.isSolidFill?"SOLID":"USER")),t.writeInt16(70,this.isSolidFill?1:0),t.writeInt16(71,0),t.writeInt16(91,e.length),e.forEach((s,n)=>{const r=n===0;if(s instanceof Vt){const a=s.vertices,o=a.some(c=>(c.bulge??0)!==0);t.writeInt16(92,2),t.writeInt16(72,o?1:0),t.writeInt16(73,s.closed?1:0),t.writeInt16(93,a.length);for(const c of a)t.writePoint2d(10,c),o&&t.writeDouble(42,c.bulge??0);t.writeInt16(97,0);return}if(s instanceof Os){const a=r?1:0;t.writeInt16(92,a),t.writeInt16(93,s.numberOfEdges);for(const o of s.curves){if(o instanceof Ft){t.writeInt16(72,1),t.writePoint2d(10,o.startPoint),t.writePoint2d(11,o.endPoint);continue}if(o instanceof Ve){t.writeInt16(72,2),t.writePoint2d(10,o.center),t.writeDouble(40,o.radius),t.writeAngle(50,o.startAngle),t.writeAngle(51,o.endAngle),t.writeInt16(73,o.clockwise?0:1);continue}if(o instanceof Ls){t.writeInt16(72,3),t.writePoint2d(10,o.center);const l=new v(o.majorAxisRadius*Math.cos(o.rotation),o.majorAxisRadius*Math.sin(o.rotation));t.writePoint2d(11,l);const c=o.majorAxisRadius===0?0:o.minorAxisRadius/o.majorAxisRadius;t.writeDouble(40,c),t.writeAngle(50,o.startAngle),t.writeAngle(51,o.endAngle),t.writeInt16(73,o.clockwise?0:1);continue}if(o instanceof Rt){const l=o.knots,c=o.controlPoints,d=o.weights,u=o.fitPoints,g=d.some(p=>p!==1);t.writeInt16(72,4),t.writeInt16(94,o.degree),t.writeInt16(73,g?1:0),t.writeInt16(74,o.closed?1:0),t.writeInt16(95,l.length),t.writeInt16(96,c.length),l.forEach(p=>t.writeDouble(40,p)),c.forEach((p,m)=>{t.writePoint2d(10,p),g&&t.writeDouble(42,d[m]??1)}),t.writeInt16(97,(u==null?void 0:u.length)??0),u==null||u.forEach(p=>t.writePoint2d(11,p))}}t.writeInt16(97,0)}}),t.writeInt16(75,this.hatchStyle),t.writeInt16(76,this.patternType),t.writeAngle(52,this.patternAngle),t.writeDouble(41,this.patternScale),t.writeInt16(77,0),t.writeInt16(78,this.definitionLines.length),this.definitionLines.forEach(s=>{t.writeAngle(53,s.angle),t.writePoint2d(43,s.base),t.writePoint2d(45,s.offset),t.writeInt16(79,s.dashLengths.length),s.dashLengths.forEach(n=>t.writeDouble(49,n))}),t.writeInt16(98,0),this}};ur.typeName="Hatch";let Ns=ur;var oo=(i=>(i[i.MText=0]="MText",i[i.Fcf=1]="Fcf",i[i.BlockReference=2]="BlockReference",i[i.NoAnnotation=3]="NoAnnotation",i))(oo||{});const pr=class pr extends rt{get dxfTypeName(){return"LEADER"}constructor(){super(),this._isSplined=!1,this._updated=!1,this._hasArrowHead=!1,this._vertices=[],this._dimensionStyle="",this._hasHookLine=!1,this._annoType=3}get isSplined(){return this._isSplined}set isSplined(t){this._isSplined=t}get hasArrowHead(){return this._hasArrowHead}set hasArrowHead(t){this._hasArrowHead=t}get hasHookLine(){return this._hasHookLine}set hasHookLine(t){this._hasHookLine=t}get numVertices(){return this._vertices.length}get vertices(){return this._vertices.map(t=>t.clone())}get dimensionStyle(){return this._dimensionStyle}set dimensionStyle(t){this._dimensionStyle=t}get annoType(){return this._annoType}set annoType(t){this._annoType=t}appendVertex(t){this._vertices.push(new x().copy(t)),this._updated=!0}setVertexAt(t,e){throw(t<0||t>=this._vertices.length)&&(this._vertices[t].copy(e),this._updated=!0),new Error("The vertex index is out of range!")}vertexAt(t){throw(t<0||t>=this._vertices.length)&&this._vertices[t],new Error("The vertex index is out of range!")}get geometricExtents(){return this._isSplined&&this.splineGeo?this.splineGeo.calculateBoundingBox():new C().setFromPoints(this._vertices)}get closed(){return!1}set closed(t){}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this._splineGeo?(this._splineGeo.transform(t),this._updated=!1):this._updated=!0,this}subWorldDraw(t){if(this.isSplined&&this.splineGeo){const e=this.splineGeo.getPoints(100);return t.lines(e)}else return t.lines(this._vertices)}get splineGeo(){return this.createSplineIfNeeded(),this._splineGeo}createSplineIfNeeded(){this.isSplined&&this.numVertices>=2&&(this._splineGeo==null||this._updated)&&(this._splineGeo=new Rt(this._vertices,"Uniform"),this._updated=!1)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLeader"),t.writeString(3,this.dimensionStyle),t.writeInt16(71,this.hasArrowHead?1:0),t.writeInt16(72,this.annoType),t.writeInt16(73,this.hasHookLine?1:0),t.writeInt16(74,this.isSplined?1:0),t.writeInt16(76,this.numVertices);for(const e of this.vertices)t.writePoint3d(10,e);return this}};pr.typeName="Leader";let Si=pr;var R=(i=>(i[i.EndPoint=1]="EndPoint",i[i.MidPoint=2]="MidPoint",i[i.Center=3]="Center",i[i.Node=4]="Node",i[i.Quadrant=5]="Quadrant",i[i.Insertion=7]="Insertion",i[i.Perpendicular=8]="Perpendicular",i[i.Tangent=9]="Tangent",i[i.Nearest=10]="Nearest",i[i.Centroid=11]="Centroid",i))(R||{});function Ll(i){let t=0;for(const e of i)t|=1<<e-1;return t}function Ol(i){const t=[];for(const e of Object.values(R)){if(typeof e!="number")continue;const s=1<<e-1;i&s&&t.push(e)}return t}function Nl(i,t){return i^1<<t-1}function Cl(i,t){return(i&1<<t-1)!==0}function Bl(i,t){return i|1<<t-1}function Fl(i,t){return i&~(1<<t-1)}const gr=class gr extends rt{get dxfTypeName(){return"LINE"}constructor(t,e){super(),this._geo=new ge(t,e)}get startPoint(){return this._geo.startPoint}set startPoint(t){this._geo.startPoint=t}get endPoint(){return this._geo.endPoint}set endPoint(t){this._geo.endPoint=t}get midPoint(){return this._geo.midPoint}get geometricExtents(){return this._geo.box}get closed(){return!1}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"startX",type:"float",editable:!0,accessor:{get:()=>this.startPoint.x,set:t=>{this.startPoint.x=t}}},{name:"startY",type:"float",editable:!0,accessor:{get:()=>this.startPoint.y,set:t=>{this.startPoint.y=t}}},{name:"startZ",type:"float",editable:!0,accessor:{get:()=>this.startPoint.z,set:t=>{this.startPoint.z=t}}},{name:"endX",type:"float",editable:!0,accessor:{get:()=>this.endPoint.x,set:t=>{this.endPoint.x=t}}},{name:"endY",type:"float",editable:!0,accessor:{get:()=>this.endPoint.y,set:t=>{this.endPoint.y=t}}},{name:"endZ",type:"float",editable:!0,accessor:{get:()=>this.endPoint.z,set:t=>{this.endPoint.z=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.midPoint),t.push(this.startPoint),t.push(this.endPoint),t}subGetOsnapPoints(t,e,s,n){const r=this.startPoint,a=this.endPoint;switch(t){case R.EndPoint:n.push(r),n.push(a);break;case R.MidPoint:n.push(this.midPoint);break;case R.Nearest:{const o=this._geo.project(e);n.push(o)}break;case R.Perpendicular:{const o=this._geo.perpPoint(e);n.push(o)}break;case R.Tangent:break}}transformBy(t){return this._geo.transform(t),this}subWorldDraw(t){const e=this.startPoint,s=this.endPoint,n=[new x(e.x,e.y,0),new x(s.x,s.y,0)];return t.lines(n)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLine"),t.writePoint3d(10,this.startPoint),t.writePoint3d(11,this.endPoint),this}};gr.typeName="Line";let Cs=gr;const mr=class mr extends gt{get dxfTypeName(){return"MTEXT"}constructor(){super(),this._contents="",this._height=0,this._width=0,this._lineSpacingFactor=.25,this._lineSpacingStyle=0,this._backgroundFill=!1,this._backgroundFillColor=13158600,this._backgroundFillTransparency=1,this._backgroundScaleFactor=1,this._rotation=0,this._styleName="",this._location=new x,this._attachmentPoint=ot.TopLeft,this._direction=new f(1,0,0),this._drawingDirection=ne.LEFT_TO_RIGHT}get contents(){return this._contents}set contents(t){this._contents=t}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get lineSpacingFactor(){return this._lineSpacingFactor}set lineSpacingFactor(t){this._lineSpacingFactor=t}get lineSpacingStyle(){return this._lineSpacingStyle}set lineSpacingStyle(t){this._lineSpacingStyle=t}get backgroundFill(){return this._backgroundFill}set backgroundFill(t){this._backgroundFill=t,this._backgroundFillColor=13158600}get backgroundFillColor(){return this._backgroundFillColor}set backgroundFillColor(t){this._backgroundFillColor=t}get backgroundFillTransparency(){return this._backgroundFillTransparency}set backgroundFillTransparency(t){this._backgroundFillTransparency=t}get backgroundScaleFactor(){return this._backgroundScaleFactor}set backgroundScaleFactor(t){this._backgroundScaleFactor=t}get styleName(){return this._styleName}set styleName(t){this._styleName=t}get location(){return this._location}set location(t){this._location.copy(t)}get attachmentPoint(){return this._attachmentPoint}set attachmentPoint(t){this._attachmentPoint=t}get direction(){return this._direction}set direction(t){this._direction.copy(t)}get drawingDirection(){return this._drawingDirection}set drawingDirection(t){this._drawingDirection=t}get geometricExtents(){return new C}subGetOsnapPoints(t,e,s,n){R.Insertion===t&&n.push(this._location)}transformBy(t){const e=this._location.clone(),s=this._direction.lengthSq()>0?this._direction.clone().normalize():new f(Math.cos(this._rotation),Math.sin(this._rotation),0),n=new f(-s.y,s.x,s.z);n.lengthSq()===0&&n.set(0,1,0),n.normalize();const r=e.clone().add(s),a=e.clone().add(n);e.applyMatrix4(t),r.applyMatrix4(t),a.applyMatrix4(t);const o=new f(r).sub(e),l=new f(a).sub(e),c=o.length(),d=l.length();return this._location.copy(e),c>0&&(this._direction.copy(o).normalize(),this._rotation=Math.atan2(this._direction.y,this._direction.x),this._width*=c),d>0&&(this._height*=d),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"text",properties:[{name:"contents",type:"string",editable:!0,accessor:{get:()=>this.contents,set:t=>{this.contents=t}}},{name:"styleName",type:"string",editable:!0,accessor:{get:()=>this.styleName,set:t=>{this.styleName=t}}},{name:"attachmentPoint",type:"enum",editable:!0,options:[{label:ot[1],value:1},{label:ot[2],value:2},{label:ot[3],value:3},{label:ot[4],value:4},{label:ot[5],value:5},{label:ot[6],value:6},{label:ot[7],value:7},{label:ot[8],value:8},{label:ot[9],value:9}],accessor:{get:()=>this.attachmentPoint,set:t=>{this.attachmentPoint=t}}},{name:"drawingDirection",type:"enum",editable:!0,options:[{label:ne[1],value:1},{label:ne[2],value:2},{label:ne[3],value:3},{label:ne[4],value:4},{label:ne[5],value:5}],accessor:{get:()=>this.drawingDirection,set:t=>{this.drawingDirection=t}}},{name:"textHeight",type:"float",editable:!0,accessor:{get:()=>this.height,set:t=>{this.height=t}}},{name:"rotation",type:"float",editable:!0,accessor:{get:()=>this.rotation,set:t=>{this.rotation=t}}},{name:"lineSpacingFactor",type:"float",editable:!0,accessor:{get:()=>this.lineSpacingFactor,set:t=>{this.lineSpacingFactor=t}}},{name:"definedWidth",type:"float",editable:!0,accessor:{get:()=>this.width,set:t=>{this.width=t}}},{name:"directionX",type:"float",editable:!0,accessor:{get:()=>this.direction.x,set:t=>{this.direction.x=t}}},{name:"directionY",type:"float",editable:!0,accessor:{get:()=>this.direction.y,set:t=>{this.direction.y=t}}},{name:"directionZ",type:"float",editable:!0,accessor:{get:()=>this.direction.z,set:t=>{this.direction.z=t}}}]},{groupName:"geometry",properties:[{name:"locationX",type:"float",editable:!0,accessor:{get:()=>this.location.x,set:t=>{this.location.x=t}}},{name:"locationY",type:"float",editable:!0,accessor:{get:()=>this.location.y,set:t=>{this.location.y=t}}},{name:"locationZ",type:"float",editable:!0,accessor:{get:()=>this.location.z,set:t=>{this.location.z=t}}}]}]}}getTextStyle(){const t=this.database.tables.textStyleTable,e=t.getAt(this.styleName)??t.getAt(this.database.textstyle)??t.getAt(J);if(!e)throw new Error("No valid text style found in text style table.");return e.textStyle}subWorldDraw(t,e){const s={text:this.contents,height:this.height,width:this.width,position:this.location,rotation:this.rotation,directionVector:this.direction,attachmentPoint:this.attachmentPoint,drawingDirection:this.drawingDirection,lineSpaceFactor:this.lineSpacingFactor};return t.mtext(s,this.getTextStyle(),e)}encodeMTextContentsForDxf(t){return t.replace(/\r\n|\r|\n/g,"\\P")}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbMText"),t.writePoint3d(10,this.location),t.writeDouble(40,this.height),t.writeDouble(41,this.width),t.writeString(1,this.encodeMTextContentsForDxf(this.contents)),t.writeString(7,this.styleName),t.writeAngle(50,this.rotation),t.writeVector3d(11,this.direction),t.writeInt16(71,this.attachmentPoint),t.writeInt16(72,this.drawingDirection),t.writeInt16(73,this.lineSpacingStyle),t.writeDouble(44,this.lineSpacingFactor),this.backgroundFill&&(t.writeInt16(90,1),t.writeInt32(63,this.backgroundFillColor),t.writeInt32(441,this.backgroundFillTransparency),t.writeDouble(45,this.backgroundScaleFactor)),this}};mr.typeName="MText";let Bs=mr;const yr=class yr extends rt{get dxfTypeName(){return"SPLINE"}constructor(t,e,s,n,r){super(),this.rebuild(t,e,s,n,r)}rebuild(t,e,s,n,r){const a=+(t!==void 0)+ +(e!==void 0)+ +(s!==void 0)+ +(n!==void 0)+ +(r!==void 0);if(a<2||a>5)throw yt.ILLEGAL_PARAMETERS;!Array.isArray(e)?this._geo=new Rt(t,e,s,n):this._geo=new Rt(t,e,s,n,r)}get geometricExtents(){return this._geo.box}get closed(){return this._geo.closed}set closed(t){this._geo.closed=t}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:n.push(this._geo.startPoint),n.push(this._geo.endPoint);break}}transformBy(t){return this._geo.transform(t),this}subWorldDraw(t){const e=this._geo.getPoints(100);return t.lines(e)}dxfOutFields(t){var s;const e=this._geo;super.dxfOutFields(t),t.writeSubclassMarker("AcDbSpline"),t.writeInt16(70,this.closed?1:0),t.writeInt16(71,e.degree),t.writeInt16(72,e.knots.length),t.writeInt16(73,e.controlPoints.length),t.writeInt16(74,((s=e.fitPoints)==null?void 0:s.length)??0);for(const n of e.knots)t.writeDouble(40,n);for(const n of e.weights)t.writeDouble(41,n);for(const n of e.controlPoints)t.writePoint3d(10,n);for(const n of e.fitPoints??[])t.writePoint3d(11,n);return this}};yr.typeName="Spline";let Fs=yr;const Rl=new f,_r=class _r extends Qe{get dxfTypeName(){return"ACAD_TABLE"}constructor(t,e,s){super(t),this._attachmentPoint=ot.TopLeft,this._numColumns=s,this._numRows=e,this._columnWidth=new Array(s),this._rowHeight=new Array(e),this._cells=new Array(e*s)}get attachmentPoint(){return this._attachmentPoint}set attachmentPoint(t){this._attachmentPoint=t}get numRows(){return this._numRows}set numRows(t){this._numRows=t}get numColumns(){return this._numColumns}set numColumns(t){this._numColumns=t}numContents(t,e){return 1}rowHeight(t){return this._rowHeight[t]}setRowHeight(t,e){this._rowHeight[t]=e}setUniformRowHeight(t){this._rowHeight.fill(t)}columnWidth(t){return this._columnWidth[t]}setUniformColumnWidth(t){this._columnWidth.fill(t)}setColumnWidth(t,e){this._columnWidth[t]=e}cell(t){if(!(t<0||t>=this._cells.length))return this._cells[t]}setCell(t,e){this._cells[t]=e}textString(t,e,s){var r;const n=t*this._numColumns+e;return(r=this._cells[n])==null?void 0:r.text}setTextString(t,e,s){const n=t*this._numColumns+e;if(!this._cells[n]){this._cells[n]={text:s,attachmentPoint:this._attachmentPoint,cellType:1,textHeight:0};return}this._cells[n].text=s}isEmpty(t,e){var n;const s=t*this._numColumns+e;return!((n=this._cells[s])!=null&&n.text)}get geometricExtents(){return new C}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"table",properties:[{name:"numRows",type:"string",editable:!0,accessor:{get:()=>this.numRows,set:t=>{this.numRows=t}}},{name:"numColumns",type:"float",editable:!0,accessor:{get:()=>this.numColumns,set:t=>{this.numColumns=t}}},{name:"tableWidth",type:"float",editable:!1,accessor:{get:()=>this._columnWidth.reduce((t,e)=>t+e,0)}},{name:"tableHeight",type:"float",editable:!1,accessor:{get:()=>this._rowHeight.reduce((t,e)=>t+e,0)}}]},{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}subWorldDraw(t){let e=0,s=0;const n=new Uint16Array(this.numColumns*this.numRows*8),r=new Float32Array((this.numColumns+1)*(this.numRows+1)*3);let a=0;for(let g=0;g<=this.numRows;g++){e-=g>0?this.rowHeight(g-1):0,s=0;for(let p=0;p<=this.numColumns;p++)s+=p>0?this.columnWidth(p-1):0,r[a++]=s,r[a++]=e,r[a++]=0}const o=[],l=new Array(this.numRows*this.numColumns).fill(!1);s=0,a=0;let c=0;for(let g=0;g<this.numColumns;g++){s+=g>0?this.columnWidth(g-1):0,e=0;for(let p=0;p<this.numRows;p++){e+=p>0?this.rowHeight(p-1):0;const m=this.cell(p*this.numColumns+g);if(c=p*this.numColumns+g,m&&!l[c]){const y=m.borderWidth??1,w=m.borderHeight??1;this.fillVisited(l,c,this.numColumns,y,w),n[a++]=g+p*(this.numColumns+1),n[a++]=g+p*(this.numColumns+1)+y;const b=r[n[a-1]*3]-s,E=g+(p+w)*(this.numColumns+1)+y;g+y==this.numColumns&&(n[a++]=g+p*(this.numColumns+1)+y,n[a++]=E);const I=-r[E*3+1]-e;if(p+w==this.numRows&&(n[a++]=g+(p+w)*(this.numColumns+1)+w,n[a++]=g+(p+w)*(this.numColumns+1)),n[a++]=g+(p+w)*(this.numColumns+1),n[a++]=g+p*(this.numColumns+1),m.text){const T=m.attachmentPoint||this.attachmentPoint||ot.MiddleCenter,A=this.getTableTextOffset(T,b,I),W={text:m.text,height:m.textHeight,width:b,position:Rl.set(s,-e,0).clone().add(A),rotation:this.rotation,attachmentPoint:T},M=this.getTextStyle(m);o.push(t.mtext(W,M))}}}}o.push(t.lineSegments(r,3,n));const d=t.group(o),u=new We;return u.setFromAxisAngle(f.Z_AXIS,this.rotation),Yr.compose(this.position,u,this.scaleFactors),d.applyMatrix(Yr),d}fillVisited(t,e,s,n,r){if(r==1&&n==1)t[e]=!0;else for(let a=0;a<n;++a)for(let o=0;o<r;++o)t[e+a+o*s]=!0}getTextStyle(t){const e=this.database.tables.textStyleTable,s=(t.textStyle?e.getAt(t.textStyle):void 0)??e.getAt(this.database.textstyle)??e.getAt(J);if(!s)throw new Error("No valid text style found in text style table.");return s.textStyle}getTableTextOffset(t,e,s){const n=new f;switch(t){case 1:break;case 2:n.setX(e/2);break;case 3:n.setX(e);break;case 4:n.setY(-s/2);break;case 5:n.set(e/2,-s/2,0);break;case 6:n.set(e,-s/2,0);break;case 7:n.setY(-s);break;case 8:n.set(e/2,-s,0);break;case 9:n.set(e,-s,0);break}return n}dxfOutFields(t){var r,a,o,l,c,d,u;super.dxfOutFields(t),t.writeSubclassMarker("AcDbTable");const e=t.version??((r=t.database)==null?void 0:r.version)??((a=this.database)==null?void 0:a.version),s=(e==null?void 0:e.value)!=null?e.value>=27:!1;t.writeInt16(280,this.tableDataVersion),t.writeObjectId(342,this.tableStyleId),t.writeObjectId(343,this.owningBlockRecordId),t.writeVector3d(11,this.horizontalDirection),t.writeUInt32(90,this.tableValueFlag),t.writeUInt32(93,this.tableOverrideFlag),t.writeUInt32(94,this.borderColorOverrideFlag),t.writeUInt32(95,this.borderLineweightOverrideFlag),t.writeUInt32(96,this.borderVisibilityOverrideFlag),t.writeInt16(71,this.attachmentPoint),t.writeInt32(91,this.numRows),t.writeInt32(92,this.numColumns);for(let g=0;g<this.numRows;++g)t.writeDouble(141,this.rowHeight(g));for(let g=0;g<this.numColumns;++g)t.writeDouble(142,this.columnWidth(g));const n=this._cells.length>0?this._cells.length:this.numRows*this.numColumns;for(let g=0;g<n;g++){const p=this._cells[g],m=(p==null?void 0:p.cellType)??(p!=null&&p.blockTableRecordId?2:1);if(t.writeInt16(171,m),t.writeInt16(172,(p==null?void 0:p.flagValue)??0),t.writeInt16(173,(p==null?void 0:p.mergedValue)??0),t.writeBoolean(174,p==null?void 0:p.autoFit),t.writeInt16(175,p==null?void 0:p.borderWidth),t.writeInt16(176,p==null?void 0:p.borderHeight),(p==null?void 0:p.overrideFlag)!=null&&(s?t.writeInt32(91,p.overrideFlag):t.writeInt16(177,p.overrideFlag)),t.writeInt16(178,p==null?void 0:p.virtualEdgeFlag),t.writeAngle(145,p==null?void 0:p.rotation),s&&t.writeInt16(92,p==null?void 0:p.extendedCellFlags),m===1)p!=null&&p.fieldObjetId?t.writeObjectId(344,p.fieldObjetId):this.writeCellText(t,(p==null?void 0:p.text)??"",s,p==null?void 0:p.cellValueBlockBegin);else if(m===2){if(t.writeObjectId(340,p==null?void 0:p.blockTableRecordId),t.writeDouble(144,p==null?void 0:p.blockScale),t.writeInt16(179,p==null?void 0:p.blockAttrNum),(o=p==null?void 0:p.attrDefineId)!=null&&o.length)for(const y of p.attrDefineId)t.writeObjectId(331,y);if((p==null?void 0:p.attrText)!=null)if(Array.isArray(p.attrText))for(const y of p.attrText)t.writeString(300,y);else t.writeString(300,p.attrText)}p!=null&&p.textStyle&&t.writeString(7,p.textStyle),(p==null?void 0:p.textHeight)!=null&&t.writeDouble(140,p.textHeight),(p==null?void 0:p.attachmentPoint)!=null&&t.writeInt16(170,p.attachmentPoint),(p==null?void 0:p.topBorderVisibility)!=null&&t.writeInt16(289,p.topBorderVisibility?1:0),(p==null?void 0:p.rightBorderVisibility)!=null&&t.writeInt16(285,p.rightBorderVisibility?1:0),(p==null?void 0:p.bottomBorderVisibility)!=null&&t.writeInt16(286,p.bottomBorderVisibility?1:0),(p==null?void 0:p.leftBorderVisibility)!=null&&t.writeInt16(288,p.leftBorderVisibility?1:0)}if(t.writeInt16(70,this.flowDirection),t.writeDouble(40,this.horizontalCellMargin),t.writeDouble(41,this.verticalCellMargin),this.suppressTitle!=null&&t.writeInt16(280,this.suppressTitle?1:0),this.suppressHeader!=null&&t.writeInt16(281,this.suppressHeader?1:0),(l=this.cellTypeOverrides)!=null&&l.length)for(const g of this.cellTypeOverrides){t.writeString(7,g.textStyle),t.writeDouble(140,g.textHeight),t.writeInt16(170,g.alignment),t.writeInt16(63,g.backgroundColor),t.writeInt16(64,g.contentColor),g.backgroundColorEnabled!=null&&t.writeInt16(283,g.backgroundColorEnabled?1:0);const p=g.borderLineweights;p&&(t.writeInt16(274,p.top),t.writeInt16(275,p.right),t.writeInt16(276,p.bottom),t.writeInt16(277,p.left),t.writeInt16(278,p.insideHorizontal),t.writeInt16(279,p.insideVertical));const m=g.borderVisibility;m&&(t.writeInt16(284,m.top?1:0),t.writeInt16(285,m.right?1:0),t.writeInt16(286,m.bottom?1:0),t.writeInt16(287,m.left?1:0),t.writeInt16(288,m.insideHorizontal?1:0),t.writeInt16(289,m.insideVertical?1:0))}if(this.tableBorderColors&&(t.writeInt16(63,this.tableBorderColors.left),t.writeInt16(64,this.tableBorderColors.top),t.writeInt16(65,this.tableBorderColors.insideHorizontal),t.writeInt16(66,this.tableBorderColors.bottom),t.writeInt16(68,this.tableBorderColors.insideVertical),t.writeInt16(69,this.tableBorderColors.right)),(c=this.rowDataTypes)!=null&&c.length)for(const g of this.rowDataTypes)t.writeInt16(97,g);if((d=this.rowUnitTypes)!=null&&d.length)for(const g of this.rowUnitTypes)t.writeInt16(98,g);if((u=this.rowFormats)!=null&&u.length)for(const g of this.rowFormats)t.writeString(4,g);return this}writeCellText(t,e,s,n){if(!s){if(e.length<=250){t.writeString(1,e);return}const o=Math.ceil(e.length/250);for(let l=0;l<o;l++){const c=l*250,d=c+250,u=e.slice(c,d);l===o-1?t.writeString(1,u):t.writeString(2,u)}return}if(t.writeString(301,n??"CELL_VALUE"),e.length<=250){t.writeString(302,e),t.writeString(304,"ACVALUE_END");return}const a=Math.ceil(e.length/250);for(let o=0;o<a;o++){const l=o*250,c=l+250,d=e.slice(l,c);o===a-1?t.writeString(302,d):t.writeString(303,d)}t.writeString(304,"ACVALUE_END")}};_r.typeName="Table";let Ai=_r;const Yr=new Q,wr=class wr extends rt{get dxfTypeName(){return"TRACE"}constructor(){super(),this._elevation=0,this._thickness=1,this._vertices=[new x,new x,new x,new x]}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get closed(){return!0}get thickness(){return this._thickness}set thickness(t){this._thickness=t}getPointAt(t){return t<0?this._vertices[0]:t>3?this._vertices[3]:this._vertices[t]}setPointAt(t,e){if(t<0&&this._vertices[0].copy(e),t>3)return this._vertices[3].copy(e);this._vertices[t].copy(e)}get geometricExtents(){return new C().setFromPoints(this._vertices)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:n.push(...this._vertices);break}}transformBy(t){return this._vertices.forEach(e=>e.applyMatrix4(t)),this._elevation=this._vertices[0].z,this}subWorldDraw(t){const e=new Vt(this._vertices,!0),s=new ks;s.add(e);const n=t.subEntityTraits;return n.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},t.area(s)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbTrace"),t.writeDouble(38,this.elevation),t.writeDouble(39,this.thickness),t.writePoint3d(10,this.getPointAt(0)),t.writePoint3d(11,this.getPointAt(1)),t.writePoint3d(12,this.getPointAt(2)),t.writePoint3d(13,this.getPointAt(3)),this}};wr.typeName="Trace";let Mi=wr;const xr=class xr extends rt{get dxfTypeName(){return"LWPOLYLINE"}constructor(){super(),this._elevation=0,this._geo=new Vt}get numberOfVertices(){return this._geo.numberOfVertices}get elevation(){return this._elevation}set elevation(t){this._elevation=t}get closed(){return this._geo.closed}set closed(t){this._geo.closed=t}addVertexAt(t,e,s=0,n=-1,r=-1){const a=n<0?void 0:n,o=r<0?void 0:r,l={x:e.x,y:e.y,bulge:s,startWidth:a,endWidth:o};this._geo.addVertexAt(t,l)}removeVertexAt(t){this._geo.removeVertexAt(t)}reset(t,e){this._geo.reset(t,e)}getPoint2dAt(t){return this._geo.getPointAt(t)}getPoint3dAt(t){const e=this.getPoint2dAt(t);return new x(e.x,e.y,this._elevation)}get geometricExtents(){const t=this._geo.box;return new C({x:t.min.x,y:t.min.y,z:this._elevation},{x:t.max.x,y:t.max.y,z:this._elevation})}subGetGripPoints(){const t=new Array;for(let e=0;e<this.numberOfVertices;++e)t.push(this.getPoint3dAt(e));return t}subGetOsnapPoints(t,e,s,n){const r=new Array;for(let a=0;a<this.numberOfVertices;++a)r.push(this.getPoint3dAt(a));switch(t){case R.EndPoint:n.push(...r);break}}transformBy(t){const e=t.determinant()<0;let s=this._elevation;return this._geo.vertices.forEach(n=>{const r=new x(n.x,n.y,this._elevation).applyMatrix4(t);n.x=r.x,n.y=r.y,s=r.z,e&&n.bulge!=null&&(n.bulge=-n.bulge)}),this._elevation=s,this._geo._boundingBoxNeedsUpdate=!0,this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0}]},accessor:{get:()=>this._geo.vertices}},{name:"elevation",type:"float",editable:!0,accessor:{get:()=>this.elevation,set:t=>{this.elevation=t}}},{name:"length",type:"float",editable:!1,accessor:{get:()=>this._geo.length}}]},{groupName:"others",properties:[{name:"closed",type:"float",editable:!0,accessor:{get:()=>this.closed,set:t=>{this.closed=t}}}]}]}}subWorldDraw(t){const e=[];return this._geo.getPoints(100).forEach(n=>e.push(new x().set(n.x,n.y,this.elevation))),t.lines(e)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPolyline"),t.writeInt32(90,this.numberOfVertices),t.writeInt16(70,this.closed?1:0),t.writeDouble(38,this.elevation);for(let e=0;e<this.numberOfVertices;++e)t.writePoint2d(10,this.getPoint2dAt(e));return this}};xr.typeName="Polyline";let Ti=xr;const br=class br extends gt{get dxfTypeName(){return"POINT"}constructor(){super(),this._geo=new x}get position(){return this._geo}set position(t){this._geo.set(t.x,t.y,t.z||0)}get geometricExtents(){return new C().expandByPoint(this._geo)}subGetOsnapPoints(t,e,s,n){R.Node===t&&n.push(this._geo)}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"positionX",type:"float",editable:!0,accessor:{get:()=>this.position.x,set:t=>{this.position.x=t}}},{name:"positionY",type:"float",editable:!0,accessor:{get:()=>this.position.y,set:t=>{this.position.y=t}}},{name:"positionZ",type:"float",editable:!0,accessor:{get:()=>this.position.z,set:t=>{this.position.z=t}}}]}]}}transformBy(t){return this._geo.applyMatrix4(t),this}subWorldDraw(t){return t.point(this._geo,{displayMode:this.database.pdmode,displaySize:this.database.pdsize})}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbPoint"),t.writePoint3d(10,this.position),this}};br.typeName="Point";let vi=br;var ho=(i=>(i[i.Invalid=0]="Invalid",i[i.Rect=1]="Rect",i[i.Poly=2]="Poly",i))(ho||{}),lo=(i=>(i[i.Show=1]="Show",i[i.ShowUnAligned=2]="ShowUnAligned",i[i.Clip=4]="Clip",i[i.Transparent=8]="Transparent",i))(lo||{});const fr=class fr extends gt{get dxfTypeName(){return"IMAGE"}constructor(){super(),this._brightness=50,this._contrast=50,this._fade=0,this._width=0,this._height=0,this._position=new x,this._scale=new U(1,1),this._rotation=0,this._imageSize=new v,this._clipBoundaryType=1,this._clipBoundary=[],this._isClipped=!1,this._isShownClipped=!1,this._isImageShown=!0,this._isImageTransparent=!1,this._imageDefId=""}get brightness(){return this._brightness}set brightness(t){this._brightness=t}get contrast(){return this._contrast}set contrast(t){this._contrast=t}get fade(){return this._fade}set fade(t){this._fade=t}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get position(){return this._position}set position(t){this._position=t}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get scale(){return this._scale}set scale(t){this._scale.copy(t)}get imageSize(){return this._imageSize}set imageSize(t){this._imageSize.copy(t)}get clipBoundaryType(){return this._clipBoundaryType}set clipBoundaryType(t){this._clipBoundaryType=t}get clipBoundary(){return this._clipBoundary}set clipBoundary(t){this._clipBoundary=[],this._clipBoundary.push(...t)}get isClipped(){return this._isClipped}set isClipped(t){this._isClipped=t}get isShownClipped(){return this._isShownClipped}set isShownClipped(t){this._isShownClipped=t}get isImageShown(){return this._isImageShown}set isImageShown(t){this._isImageShown=t}get isImageTransparent(){return this._isImageTransparent}set isImageTransparent(t){this._isImageTransparent=t}get image(){return this._image}set image(t){this._image=t}get imageDefId(){return this._imageDefId}set imageDefId(t){this._imageDefId=t}get imageFileName(){if(this._imageDefId){const t=this.database.objects.imageDefinition.getIdAt(this._imageDefId);if(t)return t.sourceFileName}return""}get geometricExtents(){const t=new C;return t.min.copy(this._position),t.max.set(this._position.x+this._width,this._position.y+this._height,0),t}subGetGripPoints(){return this.boundaryPath()}subWorldDraw(t){const e=this.boundaryPath();return this._image?t.image(this._image,{boundary:e,roation:this._rotation}):t.lines(e)}transformBy(t){const e=this._width*this._scale.x,s=this._height*this._scale.y,n=new f(e*Math.cos(this._rotation),e*Math.sin(this._rotation),0),r=new f(-s*Math.sin(this._rotation),s*Math.cos(this._rotation),0),a=this._position.clone(),o=this._position.clone().add(n),l=this._position.clone().add(r);a.applyMatrix4(t),o.applyMatrix4(t),l.applyMatrix4(t);const c=new f(o).sub(a),d=new f(l).sub(a);return this._position.copy(a),this._rotation=Math.atan2(c.y,c.x),this._width=c.length(),this._height=d.length(),this._scale.set(1,1),this}boundaryPath(){const t=[];if(this.isClipped&&this._clipBoundary.length>3){const e=this._width,s=this._height,n=new pt;n.setFromPoints(this._clipBoundary);const r=new v;r.setX(this._position.x-n.min.x*e),r.setY(this._position.y-n.min.y*s),this._clipBoundary.forEach(a=>{const o=a.x*e+r.x,l=a.y*s+r.y;t.push(new x(o,l,this._position.z))})}else{if(t.push(this._position),t.push(this._position.clone().setX(this._position.x+this._width)),t.push(this._position.clone().set(this._position.x+this._width,this._position.y+this._height,this._position.z)),t.push(this._position.clone().setY(this._position.y+this._height)),this._rotation>0){$r.copy(t[1]);for(let e=1;e<4;e++)ii.copy(t[e]),ii.rotateAround($r,this._rotation),t[e].setX(ii.x),t[e].setY(ii.y)}t.push(t[0])}return t}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbRasterImage"),t.writePoint3d(10,this.position);const e=this.width*this.scale.x,s=this.height*this.scale.y,n=this._imageSize.x>0&&this._imageSize.y>0?this._imageSize:{x:e,y:s},r=n.x>0?e/n.x:e,a=n.y>0?s/n.y:s,o=Math.cos(this._rotation),l=Math.sin(this._rotation);t.writePoint3d(11,{x:r*o,y:r*l,z:0}),t.writePoint3d(12,{x:-a*l,y:a*o,z:0}),t.writePoint2d(13,n),t.writeObjectId(340,this.imageDefId);const c=(this.isImageShown?1:0)|(this.isShownClipped?4:0)|(this.isImageTransparent?8:0);if(t.writeInt16(70,c),t.writeInt16(280,this.isClipped?1:0),t.writeInt16(281,this.brightness),t.writeInt16(282,this.contrast),t.writeInt16(283,this.fade),t.writeInt16(71,this.clipBoundaryType),this.isClipped){t.writeInt16(91,this.clipBoundary.length);for(const d of this.clipBoundary)t.writePoint2d(14,d)}return this}};fr.typeName="RasterImage";let Rs=fr;const $r=new v,ii=new v,Ir=class Ir extends rt{get dxfTypeName(){return"RAY"}constructor(){super(),this._basePoint=new x,this._unitDir=new f}get basePoint(){return this._basePoint}set basePoint(t){this._basePoint.copy(t)}get unitDir(){return this._unitDir}set unitDir(t){this._unitDir.copy(t)}get closed(){return!1}get geometricExtents(){const t=new C;return t.expandByPoint(this._unitDir.clone().multiplyScalar(10).add(this._basePoint)),t.expandByPoint(this._unitDir.clone().multiplyScalar(-10).add(this._basePoint)),t}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"basePointX",type:"float",editable:!0,accessor:{get:()=>this.basePoint.x,set:t=>{this.basePoint.x=t}}},{name:"basePointY",type:"float",editable:!0,accessor:{get:()=>this.basePoint.y,set:t=>{this.basePoint.y=t}}},{name:"basePointZ",type:"float",editable:!0,accessor:{get:()=>this.basePoint.z,set:t=>{this.basePoint.z=t}}},{name:"unitDirX",type:"float",editable:!0,accessor:{get:()=>this.unitDir.x,set:t=>{this.unitDir.x=t}}},{name:"unitDirY",type:"float",editable:!0,accessor:{get:()=>this.unitDir.y,set:t=>{this.unitDir.y=t}}},{name:"unitDirZ",type:"float",editable:!0,accessor:{get:()=>this.unitDir.z,set:t=>{this.unitDir.z=t}}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.basePoint),t}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:n.push(this.basePoint);break}}transformBy(t){return this._basePoint.applyMatrix4(t),this._unitDir.transformDirection(t),this}subWorldDraw(t){const e=[];return e.push(this.basePoint),e.push(this._unitDir.clone().multiplyScalar(1e6).add(this._basePoint)),t.lines(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRay"),t.writePoint3d(10,this.basePoint),t.writeVector3d(11,this.unitDir),this}};Ir.typeName="Ray";let ki=Ir;const Pr=class Pr extends gt{get dxfTypeName(){return"VIEWPORT"}constructor(){super(),this._centerPoint=new x,this._height=0,this._width=0,this._viewCenter=new x,this._viewHeight=0,this._number=-1}get number(){return this._number}set number(t){this._number=t}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint=t}get height(){return this._height}set height(t){this._height=t}get width(){return this._width}set width(t){this._width=t}get viewCenter(){return this._viewCenter}set viewCenter(t){this._viewCenter=t}get viewHeight(){return this._viewHeight}set viewHeight(t){this._viewHeight=t}get geometricExtents(){return new C}transformBy(t){const e=this._centerPoint.clone(),s=this._centerPoint.clone().add(new f(this._width,0,0)),n=this._centerPoint.clone().add(new f(0,this._height,0));e.applyMatrix4(t),s.applyMatrix4(t),n.applyMatrix4(t);const r=new f(s).sub(e),a=new f(n).sub(e),o=this._height!==0?a.length()/this._height:1;return this._centerPoint.copy(e),this._width=r.length(),this._height=a.length(),this._viewHeight*=o,this}subWorldDraw(t){if(this._number>1&&this.ownerId!=this.database.tables.blockTable.modelSpace.objectId){const e=this.toGiViewport();return t.group(this.createViewportRect(e,t))}}toGiViewport(){const t=new to;return t.id=this.objectId,t.groupId=this.ownerId,t.number=this.number,t.centerPoint=this.centerPoint,t.width=this.width,t.height=this.height,t.viewHeight=this.viewHeight,t.viewCenter=this.viewCenter,t}createViewportRect(t,e){const s=[];return s.push(e.lines([new x(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0),new x(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0)])),s.push(e.lines([new x(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0),new x(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0)])),s.push(e.lines([new x(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0),new x(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0)])),s.push(e.lines([new x(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0),new x(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0)])),s}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewport"),t.writePoint3d(10,this.centerPoint),t.writeDouble(40,this.height),t.writeDouble(41,this.width),t.writePoint3d(12,this.viewCenter),t.writeDouble(45,this.viewHeight),t.writeInt32(69,this.number),this}};Pr.typeName="Viewport";let Li=Pr;const Er=class Er extends Rs{get dxfTypeName(){return"WIPEOUT"}subWorldDraw(t){const e=this.boundaryPath(),s=new ks;return s.add(new Vt(e)),t.area(s)}dxfOutFields(t){return super.dxfOutFields(t),this}};Er.typeName="Wipeout";let Oi=Er;const Sr=class Sr extends rt{get dxfTypeName(){return"XLINE"}constructor(){super(),this._basePoint=new x,this._unitDir=new f}get basePoint(){return this._basePoint}set basePoint(t){this._basePoint.copy(t)}get unitDir(){return this._unitDir}set unitDir(t){this._unitDir.copy(t)}get closed(){return!1}get geometricExtents(){const t=new C;return t.expandByPoint(this._unitDir.clone().multiplyScalar(10).add(this._basePoint)),t.expandByPoint(this._unitDir.clone().multiplyScalar(-10).add(this._basePoint)),t}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"basePointX",type:"float",editable:!0,accessor:{get:()=>this.basePoint.x,set:t=>{this.basePoint.x=t}}},{name:"basePointY",type:"float",editable:!0,accessor:{get:()=>this.basePoint.y,set:t=>{this.basePoint.y=t}}},{name:"basePointZ",type:"float",editable:!0,accessor:{get:()=>this.basePoint.z,set:t=>{this.basePoint.z=t}}},{name:"unitDirX",type:"float",editable:!0,accessor:{get:()=>this.unitDir.x,set:t=>{this.unitDir.x=t}}},{name:"unitDirY",type:"float",editable:!0,accessor:{get:()=>this.unitDir.y,set:t=>{this.unitDir.y=t}}},{name:"unitDirZ",type:"float",editable:!0,accessor:{get:()=>this.unitDir.z,set:t=>{this.unitDir.z=t}}}]}]}}subGetGripPoints(){const t=new Array;return t.push(this.basePoint),t}transformBy(t){return this._basePoint.applyMatrix4(t),this._unitDir.transformDirection(t),this}subWorldDraw(t){const e=[];return e.push(this._unitDir.clone().multiplyScalar(-1e6).add(this._basePoint)),e.push(this._unitDir.clone().multiplyScalar(1e6).add(this._basePoint)),t.lines(e)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbXline"),t.writePoint3d(10,this.basePoint),t.writeVector3d(11,this.unitDir),this}};Sr.typeName="Xline";let Ni=Sr;class co{constructor(t){this.position=new x(t.x,t.y,t.z||0)}}const Ar=class Ar extends rt{get dxfTypeName(){return"POLYLINE"}constructor(t,e,s,n=!1,r=!1){super(),this._mCount=t,this._nCount=e,this._closedM=n,this._closedN=r,this._vertices=s.map(a=>new co(a))}get mCount(){return this._mCount}get nCount(){return this._nCount}get closedM(){return this._closedM}get closedN(){return this._closedN}get closed(){return this._closedM}set closed(t){this._closedM=t}get numberOfVertices(){return this._vertices.length}getVertexAt(t){if(t<0||t>=this._vertices.length)throw new Error("Vertex index out of bounds");return this._vertices[t]}getVertexAtMN(t,e){const s=t*this._nCount+e;return this.getVertexAt(s)}get geometricExtents(){if(this._vertices.length===0)return new C(new x(0,0,0),new x(0,0,0));let t=Number.MAX_VALUE,e=Number.MAX_VALUE,s=Number.MAX_VALUE,n=-Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE;return this._vertices.forEach(o=>{t=Math.min(t,o.position.x),e=Math.min(e,o.position.y),s=Math.min(s,o.position.z),n=Math.max(n,o.position.x),r=Math.max(r,o.position.y),a=Math.max(a,o.position.z)}),new C(new x(t,e,s),new x(n,r,a))}subGetGripPoints(){const t=new Array;return this._vertices.forEach(e=>{t.push(e.position)}),t}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:this._vertices.forEach(r=>{n.push(r.position)});break}}transformBy(t){return this._vertices.forEach(e=>{e.position.applyMatrix4(t)}),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"mCount",type:"float",editable:!1,accessor:{get:()=>this._mCount}},{name:"nCount",type:"float",editable:!1,accessor:{get:()=>this._nCount}},{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0},{name:"z",type:"float",editable:!0}]},accessor:{get:()=>this._vertices.map(t=>({x:t.position.x,y:t.position.y,z:t.position.z}))}}]},{groupName:"others",properties:[{name:"closedM",type:"boolean",editable:!0,accessor:{get:()=>this._closedM,set:t=>{this._closedM=t}}},{name:"closedN",type:"boolean",editable:!0,accessor:{get:()=>this._closedN,set:t=>{this._closedN=t}}}]}]}}subWorldDraw(t){const e=[];for(let s=0;s<this._mCount;s++)for(let n=0;n<this._nCount;n++){const r=this.getVertexAtMN(s,n);let a=n+1;if(a>=this._nCount)if(this._closedN)a=0;else continue;const o=this.getVertexAtMN(s,a);e.push(r.position),e.push(o.position)}for(let s=0;s<this._nCount;s++)for(let n=0;n<this._mCount;n++){const r=this.getVertexAtMN(n,s);let a=n+1;if(a>=this._mCount)if(this._closedM)a=0;else continue;const o=this.getVertexAtMN(a,s);e.push(r.position),e.push(o.position)}return t.lines(e)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPolygonMesh");let e=16;return this._closedM&&(e|=1),this._closedN&&(e|=32),t.writeInt16(66,1),t.writeInt16(70,e),t.writeInt32(71,this._mCount),t.writeInt32(72,this._nCount),this}dxfOut(t,e=!1){super.dxfOut(t,e);for(let s=0;s<this.numberOfVertices;s++){const n=this.getVertexAt(s);t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDbPolygonMeshVertex"),t.writePoint3d(10,n.position),t.writeInt16(70,16)}return t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}};Ar.typeName="PolygonMesh";let Ci=Ar;class uo{constructor(t){this.position=new x(t.x,t.y,t.z||0)}}class po{constructor(t){this.vertexIndices=t}}const Mr=class Mr extends rt{get dxfTypeName(){return"POLYLINE"}constructor(t,e){super(),this._vertices=t.map(s=>new uo(s)),this._faces=e.map(s=>new po(s))}get numberOfVertices(){return this._vertices.length}get numberOfFaces(){return this._faces.length}get closed(){return!1}set closed(t){}getVertexAt(t){if(t<0||t>=this._vertices.length)throw new Error("Vertex index out of bounds");return this._vertices[t]}getFaceAt(t){if(t<0||t>=this._faces.length)throw new Error("Face index out of bounds");return this._faces[t]}get geometricExtents(){if(this._vertices.length===0)return new C(new x(0,0,0),new x(0,0,0));let t=Number.MAX_VALUE,e=Number.MAX_VALUE,s=Number.MAX_VALUE,n=-Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE;return this._vertices.forEach(o=>{t=Math.min(t,o.position.x),e=Math.min(e,o.position.y),s=Math.min(s,o.position.z),n=Math.max(n,o.position.x),r=Math.max(r,o.position.y),a=Math.max(a,o.position.z)}),new C(new x(t,e,s),new x(n,r,a))}subGetGripPoints(){const t=new Array;return this._vertices.forEach(e=>{t.push(e.position)}),t}subGetOsnapPoints(t,e,s,n){switch(t){case R.EndPoint:this._vertices.forEach(r=>{n.push(r.position)});break}}transformBy(t){return this._vertices.forEach(e=>{e.position.applyMatrix4(t)}),this}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"geometry",properties:[{name:"vertices",type:"array",editable:!1,itemSchema:{properties:[{name:"x",type:"float",editable:!0},{name:"y",type:"float",editable:!0},{name:"z",type:"float",editable:!0}]},accessor:{get:()=>this._vertices.map(t=>({x:t.position.x,y:t.position.y,z:t.position.z}))}},{name:"faces",type:"array",editable:!1,itemSchema:{properties:[{name:"vertexIndices",type:"array",editable:!1,itemSchema:{properties:[{name:"index",type:"int",editable:!1}]}}]},accessor:{get:()=>this._faces.map(t=>({vertexIndices:t.vertexIndices}))}}]}]}}subWorldDraw(t){const e=[];return this._faces.forEach(s=>{const n=[];if(s.vertexIndices.forEach(r=>{const a=Math.abs(r)-1;a>=0&&a<this._vertices.length&&n.push(this._vertices[a].position)}),n.length>=3)for(let r=0;r<n.length;r++){const a=n[r],o=n[(r+1)%n.length];e.push(a),e.push(o)}}),t.lines(e)}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPolyFaceMesh");const e=64;return t.writeInt16(66,1),t.writeInt16(70,e),this}dxfOut(t,e=!1){super.dxfOut(t,e);for(let s=0;s<this.numberOfVertices;s++){const n=this.getVertexAt(s);t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDbPolyFaceMeshVertex"),t.writePoint3d(10,n.position),t.writeInt16(70,64)}for(let s=0;s<this.numberOfFaces;s++){const n=this.getFaceAt(s);t.writeStart("VERTEX"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbVertex"),t.writeSubclassMarker("AcDbPolyFaceMeshVertex"),t.writeInt16(70,128),n.vertexIndices.forEach((r,a)=>{t.writeInt32(10+a,r)})}return t.writeStart("SEQEND"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),this}};Mr.typeName="PolyFaceMesh";let Bi=Mr;var go=(i=>(i[i.AtLeast=1]="AtLeast",i[i.Exactly=2]="Exactly",i))(go||{});const Tr=class Tr extends gt{get dxfTypeName(){return"DIMENSION"}constructor(){super(),this._dimBlockId=null,this._dimBlockPosition=new x,this._dimensionStyleName=null,this._dimensionText=null,this._textLineSpacingFactor=1,this._textLineSpacingStyle=1,this._textPosition=new x,this._textRotation=0,this._normal=new f(0,0,1)}get dimBlockId(){return this._dimBlockId}set dimBlockId(t){this._dimBlockId=t}get dimBlockPosition(){return this._dimBlockPosition}set dimBlockPosition(t){this._dimBlockPosition.copy(t)}get dimensionStyleName(){return this._dimensionStyleName}set dimensionStyleName(t){this._dimensionStyleName=t}get dimensionStyle(){if(this._dimStyle==null){let t;this.dimensionStyleName&&(t=this.database.tables.dimStyleTable.getAt(this.dimensionStyleName)),t==null&&(t=new je),this._dimStyle=t}return this._dimStyle}get dimensionText(){return this._dimensionText}set dimensionText(t){this._dimensionText=t}get measurement(){return this._measurement}set measurement(t){this._measurement=t}get textLineSpacingFactor(){return this._textLineSpacingFactor}set textLineSpacingFactor(t){this._textLineSpacingFactor=t}get textLineSpacingStyle(){return this._textLineSpacingStyle}set textLineSpacingStyle(t){this._textLineSpacingStyle=t}get textPosition(){return this._textPosition}set textPosition(t){this._textPosition.copy(t)}get textRotation(){return this._textRotation}set textRotation(t){this._textRotation=t}get normal(){return this._normal}set normal(t){this._normal.copy(t).normalize()}transformBy(t){const e=this._textPosition.clone(),s=this._textPosition.clone().add(new f(Math.cos(this._textRotation),Math.sin(this._textRotation),0));this._dimBlockPosition.applyMatrix4(t),this._textPosition.applyMatrix4(t),this._normal.transformDirection(t),e.applyMatrix4(t),s.applyMatrix4(t);const n=new f(s).sub(e);return n.lengthSq()>0&&(this._textRotation=Math.atan2(n.y,n.x)),this.subTransformBy(t),this}subWorldDraw(t){if(this.dimBlockId){const s=this.database.tables.blockTable.getAt(this.dimBlockId);if(s){const n=this.computeDimBlockTransform();return Je.instance.draw(t,s,this.rgbColor,[],!1,n,this._normal)}}return t.group([])}get arrowScaleFactor(){return this.dimensionStyle.dimasz}get firstArrowStyle(){return{type:this.firstArrowType,scale:this.arrowScaleFactor,appended:this.isAppendArrow,visible:this.dimensionStyle.dimse1==0}}get secondArrowStyle(){return{type:this.secondArrowType,scale:this.arrowScaleFactor,appended:this.isAppendArrow,visible:this.dimensionStyle.dimse2==0}}get isAppendArrow(){return!0}get firstArrowTypeBtrId(){const t=this.dimensionStyle;return t.dimsah==0?t.dimblk:t.dimblk1}get firstArrowType(){const t=this.firstArrowTypeBtrId;return this.getArrowName(t)}get secondArrowTypeBtrId(){const t=this.dimensionStyle;return t.dimsah==0?t.dimblk:t.dimblk2}get secondArrowType(){const t=this.secondArrowTypeBtrId;return this.getArrowName(t)}get arrowLineCount(){return 1}getLineArrowStyle(t){}findPointOnLine1(t,e,s){const n=new x().subVectors(e,t).normalize();return new x(e).addScaledVector(n,s)}findPointOnLine2(t,e,s){const n=t.x+s*Math.cos(e),r=t.y+s*Math.sin(e);return{x:n,y:r}}adjustExtensionLine(t){const e=this.dimensionStyle;t.extend(e.dimexe),t.extend(-e.dimexo,!0)}getArrowName(t){const e=this.database.tables.blockTable.getIdAt(t);return e?e.name.toUpperCase():jn.Closed}computeDimBlockTransform(){const t=this.dimBlockId?this.database.tables.blockTable.getAt(this.dimBlockId):void 0,e=(t==null?void 0:t.origin)??x.ORIGIN,s=new Q().makeTranslation(-e.x,-e.y,-e.z),n=new Q().makeTranslation(this._dimBlockPosition.x,this._dimBlockPosition.y,this._dimBlockPosition.z);return new Q().multiplyMatrices(n,s)}subTransformBy(t){}dxfOutFields(t){super.dxfOutFields(t);const e=this.dimensionStyleName!=null?this.database.tables.dimStyleTable.getAt(this.dimensionStyleName):void 0;return t.writeSubclassMarker("AcDbDimension"),t.writeString(3,this.dimensionStyleName??this.dimensionStyle.name),t.writePoint3d(10,this.dimBlockPosition),t.writeString(1,this.dimensionText??""),t.writeAngle(53,this.textRotation),t.writePoint3d(11,this.textPosition),t.writeInt16(70,0),t.writeVector3d(210,this.normal),t.writeObjectId(340,e==null?void 0:e.objectId),this}};Tr.typeName="Dimension";let re=Tr;const vr=class vr extends re{constructor(t,e,s,n,r=null,a=null){super(),this._centerPoint=new x().copy(t),this._xLine1Point=new x().copy(e),this._xLine2Point=new x().copy(s),this._arcPoint=new x().copy(n),this.dimensionText=r,this.dimensionStyleName=a}get arcPoint(){return this._arcPoint}set arcPoint(t){this._arcPoint.copy(t)}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint.copy(t)}get xLine1Point(){return this._xLine1Point}set xLine1Point(t){this._xLine1Point.copy(t)}get xLine2Point(){return this._xLine2Point}set xLine2Point(t){this._xLine2Point.copy(t)}subTransformBy(t){this._arcPoint.applyMatrix4(t),this._centerPoint.applyMatrix4(t),this._xLine1Point.applyMatrix4(t),this._xLine2Point.applyMatrix4(t)}get geometricExtents(){return new C}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDb3PointAngularDimension"),t.writePoint3d(13,this.xLine1Point),t.writePoint3d(14,this.xLine2Point),t.writePoint3d(15,this.centerPoint),t.writePoint3d(16,this.arcPoint),this}};vr.typeName="3PointAngularDimension";let Fi=vr;const kr=class kr extends re{constructor(t,e,s,n=null,r=null){super(),this._dimLinePoint=new x().copy(s),this._xLine1Point=new x().copy(t),this._xLine2Point=new x().copy(e),this._oblique=0,this._rotation=0,this.calculateRotation(),n?this.dimensionText=n:this.dimensionText=this._xLine1Point.distanceTo(this._xLine2Point).toFixed(3),this.dimensionStyleName=r}get dimLinePoint(){return this._dimLinePoint}set dimLinePoint(t){this._dimLinePoint.copy(t)}get xLine1Point(){return this._xLine1Point}set xLine1Point(t){this._xLine1Point.copy(t)}get xLine2Point(){return this._xLine2Point}set xLine2Point(t){this._xLine2Point.copy(t)}get rotation(){return this._rotation}set rotation(t){this._rotation=t}get oblique(){return this._oblique}set oblique(t){this._oblique=t}subTransformBy(t){this._dimLinePoint.applyMatrix4(t),this._xLine1Point.applyMatrix4(t),this._xLine2Point.applyMatrix4(t),this.calculateRotation()}get geometricExtents(){return new C}get isAppendArrow(){return!1}createDimBlock(t){const e=new Z;e.name=t;const s=this.createLines();s.forEach(o=>e.appendEntity(new Cs(o.startPoint,o.endPoint))),this.createArrows(s[0]).forEach(o=>e.appendEntity(o));const r=s[0].midPoint,a=this.createMText(r,this._rotation);return a&&e.appendEntity(a),e}createMText(t,e){const s=n=>({x:Math.cos(n),y:Math.sin(n),z:0});if(this.dimensionText){const n=new Bs;return n.attachmentPoint=ot.MiddleLeft,n.layer="0",n.color=new tt(S.ByBlock),n.location=t,n.contents=this.dimensionText??"",n.height=10,n.direction=s(e),n.styleName=this.dimensionStyle.dimtxsty,n}}createArrows(t){const e=[];return e.push(this.createArrow(t.startPoint,this.rotation+Math.PI,10)),e.push(this.createArrow(t.endPoint,this.rotation,10)),e}createArrow(t,e,s){const n="_CAXARROW",r=new Qe(n);return r.position=t,r.rotation=e,r.scaleFactors={x:s,y:s,z:s},r}createLines(){const t=[],e=this.createExtensionLine(this._xLine1Point),s=this.createExtensionLine(this._xLine2Point),n=this.findIntersectionPoint(e,this._dimLinePoint),r=this.findIntersectionPoint(s,this._dimLinePoint),a=new ge(n,r);return t.push(a),e.endPoint=n,this.adjustExtensionLine(e),t.push(e),s.endPoint=r,this.adjustExtensionLine(s),t.push(s),t}createExtensionLine(t){const e=this.rotation+Math.PI/2,s=this.findPointOnLine2(t,e,100);return new ge(t,{...s,z:t.z})}findIntersectionPoint(t,e){const s=t.startPoint,n=t.endPoint,r=new f().subVectors(n,s).normalize(),o=new f().subVectors(e,s).dot(r),l=new f().copy(r).multiplyScalar(o);return new f().addVectors(s,l)}calculateRotation(){const t=this._xLine1Point,e=this._xLine2Point,s=e.x-t.x,n=e.y-t.y;this._rotation=Math.atan2(n,s)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbAlignedDimension"),t.writePoint3d(13,this.xLine1Point),t.writePoint3d(14,this.xLine2Point),t.writePoint3d(15,this.dimLinePoint),t.writeAngle(50,this.rotation),t.writeAngle(52,this.oblique),this}};kr.typeName="AlignedDimension";let Ri=kr;const Lr=class Lr extends re{constructor(t,e,s,n,r=null,a=null){super(),this._arcPoint=new x().copy(n),this._xLine1Point=new x().copy(e),this._xLine2Point=new x().copy(s),this._centerPoint=new x().copy(t),this.dimensionText=r,this.dimensionStyleName=a}get arcPoint(){return this._arcPoint}set arcPoint(t){this._arcPoint.copy(t)}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint.copy(t)}get xLine1Point(){return this._xLine1Point}set xLine1Point(t){this._xLine1Point.copy(t)}get xLine2Point(){return this._xLine2Point}set xLine2Point(t){this._xLine2Point.copy(t)}subTransformBy(t){this._arcPoint.applyMatrix4(t),this._centerPoint.applyMatrix4(t),this._xLine1Point.applyMatrix4(t),this._xLine2Point.applyMatrix4(t)}get geometricExtents(){return new C}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbArcDimension"),t.writePoint3d(13,this.xLine1Point),t.writePoint3d(14,this.xLine2Point),t.writePoint3d(15,this.centerPoint),t.writePoint3d(16,this.arcPoint),this}};Lr.typeName="ArcDimension";let In=Lr;const Or=class Or extends re{constructor(t,e,s=0,n=null,r=null){super(),this._chordPoint=new x().copy(t),this._farChordPoint=new x().copy(e),this._extArcStartAngle=0,this._extArcEndAngle=0,this._leaderLength=s,this.dimensionText=n,this.dimensionStyleName=r}get chordPoint(){return this._chordPoint}set chordPoint(t){this._chordPoint.copy(t)}get farChordPoint(){return this._farChordPoint}set farChordPoint(t){this._farChordPoint.copy(t)}get extArcStartAngle(){return this._extArcStartAngle}set extArcStartAngle(t){this._extArcStartAngle=t}get extArcEndAngle(){return this._extArcEndAngle}set extArcEndAngle(t){this._extArcEndAngle=t}get leaderLength(){return this._leaderLength}subTransformBy(t){this._chordPoint.applyMatrix4(t),this._farChordPoint.applyMatrix4(t)}get geometricExtents(){return new C}drawLines(t,e){const s=[],n=e.length;return n==1?s.push(this.drawLine(t,e[0],{firstArrow:this.firstArrowStyle})):n==3?(this.sortLines(e),s.push(this.drawLine(t,e[0],{firstArrow:this.firstArrowStyle})),s.push(this.drawLine(t,e[1])),s.push(this.drawLine(t,e[2],{firstArrow:this.firstArrowStyle}))):e.forEach(r=>{s.push(this.drawLine(t,r))}),s}drawLine(t,e,s){if(s){const n=[e.startPoint,e.endPoint];return t.lines(n)}else return e.worldDraw(t)}sortLines(t){const e=(s,n)=>s.x!==n.x?s.x-n.x:s.y!==n.y?s.y-n.y:s.z-n.z;t.sort((s,n)=>{const r=e(s.startPoint,n.startPoint);return r!==0?r:e(s.endPoint,n.endPoint)})}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbDiametricDimension"),t.writePoint3d(15,this.chordPoint),t.writePoint3d(16,this.farChordPoint),t.writeDouble(40,this.leaderLength),t.writeAngle(52,this.extArcStartAngle),t.writeAngle(53,this.extArcEndAngle),this}};Or.typeName="DiametricDimension";let zi=Or;const Nr=class Nr extends re{constructor(t,e,s=null,n=null){super(),this._definingPoint=new x().copy(t),this._leaderEndPoint=new x().copy(e),this.dimensionText=s,this.dimensionStyleName=n}get definingPoint(){return this._definingPoint}set definingPoint(t){this._definingPoint.copy(t)}get leaderEndPoint(){return this._leaderEndPoint}set leaderEndPoint(t){this._leaderEndPoint.copy(t)}subTransformBy(t){this._definingPoint.applyMatrix4(t),this._leaderEndPoint.applyMatrix4(t)}get geometricExtents(){return new C}get arrowLineCount(){return 0}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbOrdinateDimension"),t.writePoint3d(13,this.definingPoint),t.writePoint3d(14,this.leaderEndPoint),this}};Nr.typeName="OrdinateDimension";let Vi=Nr;const Cr=class Cr extends re{constructor(t,e,s,n=null,r=null){super(),this._center=new x().copy(t),this._chordPoint=new x().copy(e),this._leaderLength=s,this._extArcStartAngle=0,this._extArcEndAngle=0,this.dimensionText=n,this.dimensionStyleName=r}get center(){return this._center}set center(t){this._center.copy(t)}get chordPoint(){return this._chordPoint}set chordPoint(t){this._chordPoint.copy(t)}get extArcStartAngle(){return this._extArcStartAngle}set extArcStartAngle(t){this._extArcStartAngle=t}get extArcEndAngle(){return this._extArcEndAngle}set extArcEndAngle(t){this._extArcEndAngle=t}get leaderLength(){return this._leaderLength}set leaderLenght(t){this._leaderLength=t}subTransformBy(t){this._center.applyMatrix4(t),this._chordPoint.applyMatrix4(t)}get geometricExtents(){return new C}getLineArrowStyle(t){return{secondArrow:this.secondArrowStyle}}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRadialDimension"),t.writePoint3d(15,this.center),t.writePoint3d(13,this.chordPoint),t.writeDouble(40,this.leaderLength),t.writeAngle(52,this.extArcStartAngle),t.writeAngle(53,this.extArcEndAngle),this}};Cr.typeName="RadialDimension";let Di=Cr;var mo=(i=>(i[i.kInches=0]="kInches",i[i.kMillimeters=1]="kMillimeters",i[i.kPixels=2]="kPixels",i))(mo||{}),yo=(i=>(i[i.k0degrees=0]="k0degrees",i[i.k90degrees=1]="k90degrees",i[i.k180degrees=2]="k180degrees",i[i.k270degrees=3]="k270degrees",i))(yo||{}),_o=(i=>(i[i.kDisplay=0]="kDisplay",i[i.kExtents=1]="kExtents",i[i.kLimits=2]="kLimits",i[i.kView=3]="kView",i[i.kWindow=4]="kWindow",i[i.kLayout=5]="kLayout",i))(_o||{}),de=(i=>(i[i.kDraft=0]="kDraft",i[i.kPreview=1]="kPreview",i[i.kNormal=2]="kNormal",i[i.kPresentation=3]="kPresentation",i[i.kMaximum=4]="kMaximum",i[i.kCustom=5]="kCustom",i))(de||{}),Xe=(i=>(i[i.kAsDisplayed=0]="kAsDisplayed",i[i.kWireframe=1]="kWireframe",i[i.kHidden=2]="kHidden",i[i.kRendered=3]="kRendered",i[i.kVisualStyle=4]="kVisualStyle",i[i.kRenderPreset=5]="kRenderPreset",i))(Xe||{}),wo=(i=>(i[i.kScaleToFit=0]="kScaleToFit",i[i.k1_128in_1ft=1]="k1_128in_1ft",i[i.k1_64in_1ft=2]="k1_64in_1ft",i[i.k1_32in_1ft=3]="k1_32in_1ft",i[i.k1_16in_1ft=4]="k1_16in_1ft",i[i.k3_32in_1ft=5]="k3_32in_1ft",i[i.k1_8in_1ft=6]="k1_8in_1ft",i[i.k3_16in_1ft=7]="k3_16in_1ft",i[i.k1_4in_1ft=8]="k1_4in_1ft",i[i.k3_8in_1ft=9]="k3_8in_1ft",i[i.k1_2in_1ft=10]="k1_2in_1ft",i[i.k3_4in_1ft=11]="k3_4in_1ft",i[i.k1in_1ft=12]="k1in_1ft",i[i.k3in_1ft=13]="k3in_1ft",i[i.k6in_1ft=14]="k6in_1ft",i[i.k1ft_1ft=15]="k1ft_1ft",i[i.k1_1=16]="k1_1",i[i.k1_2=17]="k1_2",i[i.k1_4=18]="k1_4",i[i.k1_5=19]="k1_5",i[i.k1_8=20]="k1_8",i[i.k1_10=21]="k1_10",i[i.k1_16=22]="k1_16",i[i.k1_20=23]="k1_20",i[i.k1_30=24]="k1_30",i[i.k1_40=25]="k1_40",i[i.k1_50=26]="k1_50",i[i.k1_100=27]="k1_100",i[i.k2_1=28]="k2_1",i[i.k4_1=29]="k4_1",i[i.k8_1=30]="k8_1",i[i.k10_1=31]="k10_1",i[i.k100_1=32]="k100_1",i[i.k1000_1=33]="k1000_1",i[i.k1and1_2in_1ft=34]="k1and1_2in_1ft",i))(wo||{});const zl={0:0,1:1/1536,2:1/768,3:1/384,4:1/192,5:1/128,6:1/96,7:1/64,8:1/48,9:1/32,10:1/24,11:1/16,12:1/12,13:1/4,14:1/2,15:1,16:1,17:1/2,18:1/4,19:1/5,20:1/8,21:1/10,22:1/16,23:1/20,24:1/30,25:1/40,26:1/50,27:1/100,28:2,29:4,30:8,31:10,32:100,33:1e3,34:1/8};class xo extends ae{constructor(t=!1){super(),this._plotSettingsName="",this._plotCfgName="",this._canonicalMediaName="",this._currentStyleSheet="",this._plotOrigin=new v,this._customPrintScale={numerator:1,denominator:1},this._plotPaperSize=new v,this._plotPaperMargins={left:0,right:0,top:0,bottom:0},this._plotViewName="",this._plotWindowArea=new pt,this._modelType=t,this._plotCentered=!1,this._plotHidden=!1,this._plotPaperUnits=1,this._plotPlotStyles=!0,this._plotRotation=0,this._plotType=5,this._plotViewportBorders=!1,this._printLineweights=!0,this._scaleLineweights=!1,this._drawViewportsFirst=!1,this._showPlotStyles=!0,this._shadePlotType=0,this._shadePlotResLevel=2,this._shadePlotCustomDpi=300,this._shadePlotId=void 0,this._stdScaleType=0,this._useStandardScale=!0}get plotSettingsName(){return this._plotSettingsName}set plotSettingsName(t){this._plotSettingsName=t}getPlotSettingsName(){return this._plotSettingsName}setPlotSettingsName(t){this._plotSettingsName=t}get plotCfgName(){return this._plotCfgName}set plotCfgName(t){this._plotCfgName=t}getPlotCfgName(){return this._plotCfgName}get canonicalMediaName(){return this._canonicalMediaName}set canonicalMediaName(t){this._canonicalMediaName=t}getCanonicalMediaName(){return this._canonicalMediaName}get currentStyleSheet(){return this._currentStyleSheet}set currentStyleSheet(t){this._currentStyleSheet=t}getCurrentStyleSheet(){return this._currentStyleSheet}get plotOrigin(){return this._plotOrigin}set plotOrigin(t){this._plotOrigin=t}getPlotOrigin(){return this._plotOrigin}get customPrintScale(){return this._customPrintScale}set customPrintScale(t){this._customPrintScale=t}getCustomPrintScale(){return this._customPrintScale}get plotPaperSize(){return this._plotPaperSize}set plotPaperSize(t){this._plotPaperSize=t}getPlotPaperSize(){return this._plotPaperSize}get plotPaperMargins(){return this._plotPaperMargins}set plotPaperMargins(t){this._plotPaperMargins=t}getPlotPaperMargins(){return this._plotPaperMargins}get plotViewName(){return this._plotViewName}set plotViewName(t){this._plotViewName=t}getPlotViewName(){return this._plotViewName}get plotWindowArea(){return this._plotWindowArea}set plotWindowArea(t){this._plotWindowArea=t}getPlotWindowArea(){return this._plotWindowArea}get modelType(){return this._modelType}set modelType(t){this._modelType=t}getModelType(){return this._modelType}setModelType(t){this._modelType=t}get drawViewportsFirst(){return this._drawViewportsFirst}set drawViewportsFirst(t){this._drawViewportsFirst=t}setDrawViewportsFirst(t){this._drawViewportsFirst=t}get plotCentered(){return this._plotCentered}set plotCentered(t){this._plotCentered=t}setPlotCentered(t){this._plotCentered=t}get plotHidden(){return this._plotHidden}set plotHidden(t){this._plotHidden=t}setPlotHidden(t){this._plotHidden=t}get plotPaperUnits(){return this._plotPaperUnits}set plotPaperUnits(t){this._plotPaperUnits=t}get plotPlotStyles(){return this._plotPlotStyles}set plotPlotStyles(t){this._plotPlotStyles=t}setPlotPlotStyles(t){this._plotPlotStyles=t}get plotRotation(){return this._plotRotation}set plotRotation(t){this._plotRotation=t}get plotType(){return this._plotType}set plotType(t){this._plotType=t}get plotViewportBorders(){return this._plotViewportBorders}set plotViewportBorders(t){this._plotViewportBorders=t}setPlotViewportBorders(t){this._plotViewportBorders=t}get printLineweights(){return this._printLineweights}set printLineweights(t){this._printLineweights=t}setPrintLineweights(t){this._printLineweights=t}get scaleLineweights(){return this._scaleLineweights}set scaleLineweights(t){this._scaleLineweights=t}setScaleLineweights(t){this._scaleLineweights=t}get showPlotStyles(){return this._showPlotStyles}set showPlotStyles(t){this._showPlotStyles=t}setShowPlotStyles(t){this._showPlotStyles=t}get shadePlot(){return this._shadePlotType}set shadePlot(t){this._shadePlotType=t}setShadePlot(t){this._shadePlotType=t}get shadePlotResLevel(){return this._shadePlotResLevel}set shadePlotResLevel(t){this._shadePlotResLevel=t}setShadePlotResLevel(t){this._shadePlotResLevel=t}get shadePlotCustomDPI(){return this._shadePlotCustomDpi}set shadePlotCustomDPI(t){this._shadePlotCustomDpi=t}setShadePlotCustomDPI(t){this._shadePlotCustomDpi=t}get shadePlotId(){return this._shadePlotId}set shadePlotId(t){this._shadePlotId=t}get plotWireframe(){return this._shadePlotType===1}get plotAsRaster(){return this._shadePlotType===3||this._shadePlotType===4||this._shadePlotType===5}get stdScaleType(){return this._stdScaleType}set stdScaleType(t){this._stdScaleType=t}get stdScale(){return zl[this._stdScaleType]??1}get useStandardScale(){return this._useStandardScale}set useStandardScale(t){this._useStandardScale=t}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbPlotSettings"),t.writeString(1,this.plotSettingsName),t.writeString(2,this.plotCfgName),t.writeString(4,this.canonicalMediaName),t.writeString(6,this.plotViewName),t.writeDouble(40,this.plotPaperMargins.left),t.writeDouble(41,this.plotPaperMargins.bottom),t.writeDouble(42,this.plotPaperMargins.right),t.writeDouble(43,this.plotPaperMargins.top),t.writeDouble(44,this.plotPaperSize.x),t.writeDouble(45,this.plotPaperSize.y),t.writeDouble(46,this.plotOrigin.x),t.writeDouble(47,this.plotOrigin.y),t.writeDouble(48,this.plotWindowArea.min.x),t.writeDouble(49,this.plotWindowArea.min.y),t.writeDouble(140,this.plotWindowArea.max.x),t.writeDouble(141,this.plotWindowArea.max.y),t.writeDouble(142,this.customPrintScale.numerator),t.writeDouble(143,this.customPrintScale.denominator);let e=0;return this.plotViewportBorders&&(e|=1),this.showPlotStyles&&(e|=2),this.plotCentered&&(e|=4),this.plotHidden&&(e|=8),this.useStandardScale&&(e|=16),this.plotPlotStyles&&(e|=32),this.scaleLineweights&&(e|=64),this.printLineweights&&(e|=128),this.drawViewportsFirst&&(e|=512),this.modelType&&(e|=1024),t.writeInt16(70,e),t.writeInt16(72,this.plotPaperUnits),t.writeInt16(73,this.plotRotation),t.writeInt16(74,this.plotType),t.writeString(7,this.currentStyleSheet),t.writeInt16(75,this.stdScaleType),t.writeInt16(76,this.shadePlot),t.writeInt16(77,this.shadePlotResLevel),t.writeInt16(78,this.shadePlotCustomDPI),t.writeDouble(147,this.stdScale),t.writeObjectId(333,this.shadePlotId),this}}class Hs extends xo{constructor(){super(),this._tabOrder=-1,this._tabSelected=!1,this._blockTableRecordId="",this._layoutName="",this._limits=new pt,this._extents=new C,this._viewportArray=[]}get layoutName(){return this._layoutName}set layoutName(t){this._layoutName=t.length>256?t.slice(0,256):t}get tabOrder(){return this._tabOrder}set tabOrder(t){this._tabOrder=t}get tabSelected(){return this._tabSelected}set tabSelected(t){this._tabSelected=t}get blockTableRecordId(){return this._blockTableRecordId}set blockTableRecordId(t){this._blockTableRecordId=t}get limits(){return this._limits}set limits(t){this._limits.copy(t)}get extents(){return this._extents}set extents(t){this._extents.copy(t)}get viewportArray(){return this._viewportArray}set viewportArray(t){this._viewportArray=t.slice()}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayout"),t.writeString(1,this.layoutName),t.writeInt16(70,this.tabSelected?1:0),t.writeInt16(71,this.tabOrder),t.writeObjectId(330,this.blockTableRecordId),t.writeObjectId(331,this._viewportArray.length>0?this._viewportArray[0]:"0"),t.writePoint2d(10,this.limits.min),t.writePoint2d(11,this.limits.max),t.writePoint3d(14,this.extents.min),t.writePoint3d(15,this.extents.max),this}}class Us{constructor(t){this.i=0,this._records=t,this._keys=Array.from(t.keys())}get count(){return this._records.size}toArray(){return Array.from(this._records.values())}[Symbol.iterator](){return this}next(){for(;this.i<this._keys.length;){const t=this._records.get(this._keys[this.i]);return this.i+=1,{value:t,done:!1}}return{value:null,done:!0}}}class Ms extends ae{constructor(t){super(),this.database=t,this.objectId=t.generateHandle(),this._recordsByName=new Map,this._recordsById=new Map}get numEntries(){return this._recordsByName.size}setAt(t,e){e.database=this.database,e.ownerId=this.objectId,this.database.commitObjectHandle(e,s=>this.hasId(s)),this._recordsByName.set(t,e),this._recordsById.set(e.objectId,e),this.database.events.dictObjetSet.dispatch({database:this.database,object:e,key:t})}remove(t){const e=this.getAt(t);return e?(this._recordsByName.delete(t.toUpperCase()),this._recordsById.delete(this.objectId),this.database.events.dictObjectErased.dispatch({database:this.database,object:e,key:t}),!0):!1}removeId(t){const e=this.getIdAt(t);return e?(this._recordsById.delete(this.objectId),this._recordsByName.forEach((s,n)=>{s===e&&(this._recordsByName.delete(n),this.database.events.dictObjectErased.dispatch({database:this.database,object:e,key:n}))}),!0):!1}removeAll(){this._recordsByName.forEach((t,e)=>{this.database.events.dictObjectErased.dispatch({database:this.database,object:t,key:e})}),this._recordsByName.clear(),this._recordsById.clear()}has(t){return this._recordsByName.has(t.toUpperCase())}hasId(t){return this._recordsById.has(t)}getAt(t){return this._recordsByName.get(t)}getIdAt(t){return this._recordsById.get(t)}newIterator(){return new Us(this._recordsByName)}entries(){return this._recordsByName.entries()}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbDictionary"),t.writeInt16(280,1),t.writeInt16(281,1);for(const[e,s]of this._recordsByName)t.writeString(3,e),t.writeObjectId(350,s.objectId);return this}}class bo extends Ms{getBtrIdAt(t){for(const[e,s]of this._recordsByName)if(s.blockTableRecordId==t)return s}get maxTabOrder(){let t=-1;return this._recordsByName.forEach(e=>{e.tabOrder>t&&(t=e.tabOrder)}),t}}class ye extends ae{constructor(t,e){t=t||{},Vs(t,{name:""}),super(t,e)}get name(){return this.getAttr("name")}set name(t){this.setAttr("name",t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbSymbolTableRecord"),this}}var fo=(i=>(i[i.Any=0]="Any",i[i.Uniform=1]="Uniform",i))(fo||{});const ue=class ue extends ye{static isModelSapceName(t){return t.toLowerCase()==ue.MODEL_SPACE_NAME.toLowerCase()}static isPaperSapceName(t){return t.toLowerCase().startsWith(ue.PAPER_SPACE_NAME_PREFIX.toLowerCase())}constructor(){super(),this._origin=new x,this._layoutId="",this._entities=new Map,this._blockInsertUnits=0,this._explodability=1,this._blockScaling=1,this._bmpPreview=void 0}get isModelSapce(){return ue.isModelSapceName(this.name)}get isPaperSapce(){return ue.isPaperSapceName(this.name)}get origin(){return this._origin}set origin(t){this._origin.copy(t)}get layoutId(){return this._layoutId}set layoutId(t){this._layoutId=t}get blockInsertUnits(){return this._blockInsertUnits}set blockInsertUnits(t){this._blockInsertUnits=t}get explodability(){return this._explodability}set explodability(t){this._explodability=t}get blockScaling(){return this._blockScaling}set blockScaling(t){this._blockScaling=t}get bmpPreview(){return this._bmpPreview}set bmpPreview(t){this._bmpPreview=t}appendEntity(t){const e=s=>{s.database=this.database,s.ownerId=this.objectId,this.database.commitObjectHandle(s,n=>this._entities.has(n)),s.resolveEffectiveProperties(),this._entities.set(s.objectId,s)};if(Array.isArray(t))for(let s=0;s<t.length;++s)e(t[s]);else e(t);(this.isModelSapce||this.isPaperSapce)&&this.database.events.entityAppended.dispatch({database:this.database,entity:t})}removeEntity(t){const e=Array.isArray(t)?t:[t],s=[];return e.forEach(n=>{const r=this._entities.get(n);r&&s.push(r),this._entities.delete(n)}),s.length>0&&this.database.events.entityErased.dispatch({database:this.database,entity:s}),s.length>0}newIterator(){return new Us(this._entities)}getIdAt(t){return this._entities.get(t)}dxfOutBlockRecord(t){return t.writeStart("BLOCK_RECORD"),this.dxfOut(t),this}dxfOutBlockBegin(t){return t.writeStart("BLOCK"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeString(8,"0"),t.writeSubclassMarker("AcDbBlockBegin"),t.writeString(2,this.name),t.writeInt16(70,0),t.writePoint3d(10,this.origin),t.writeString(3,this.name),this}dxfOutBlockEnd(t){return t.writeStart("ENDBLK"),t.writeHandle(5,this.database.generateHandle()),t.writeObjectId(330,this.objectId),t.writeSubclassMarker("AcDbEntity"),t.writeSubclassMarker("AcDbBlockEnd"),this}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbBlockTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.blockInsertUnits),t.writeInt16(280,this.explodability),t.writeInt16(281,this.blockScaling),(this.isModelSapce||this.isPaperSapce)&&t.writeObjectId(340,this.layoutId),this}};ue.MODEL_SPACE_NAME="*Model_Space",ue.PAPER_SPACE_NAME_PREFIX="*Paper_Space";let Z=ue;class Io{constructor(){this.events={layoutCreated:new q,layoutRemoved:new q,layoutRenamed:new q,layoutSwitched:new q}}countLayouts(t){return this.getWorkingDatabase(t).objects.layout.numEntries}findLayoutNamed(t,e){return this.getWorkingDatabase(e).objects.layout.getAt(t)}findActiveLayout(){const t=this.getActiveLayout();return t?t.layoutName:"Model"}setCurrentLayoutId(t,e){const s=this.getWorkingDatabase(e),n=s.objects.layout.getIdAt(t);return this.setCurrentLayoutInternal(n,s)}setCurrentLayoutBtrId(t,e){const s=this.getWorkingDatabase(e),n=s.objects.layout.getBtrIdAt(t);return this.setCurrentLayoutInternal(n,s)}setCurrentLayout(t,e){const s=this.getWorkingDatabase(e),n=s.objects.layout.getAt(t);return this.setCurrentLayoutInternal(n,s)}renameLayout(t,e,s){const r=this.getWorkingDatabase(s).objects.layout.getAt(t);return r?(r.layoutName=e,this.events.layoutRenamed.dispatch({layout:r,oldName:t,newName:e}),!0):!1}layoutExists(t,e){return this.getWorkingDatabase(e).objects.layout.has(t)}deleteLayout(t,e){const s=this.getWorkingDatabase(e).objects.layout,n=s.getAt(t);let r=!1;return n&&(r=s.remove(t),r&&this.events.layoutRemoved.dispatch({layout:n})),r}createLayout(t,e){const s=this.getWorkingDatabase(e),n=new Hs;n.layoutName=t,n.tabOrder=s.objects.layout.maxTabOrder;const r=new Z;return r.name=`*Paper_Space${n.tabOrder}`,s.tables.blockTable.add(r),s.objects.layout.setAt(t,n),this.events.layoutCreated.dispatch({layout:n}),{layout:n,btr:r}}getActiveLayout(t){const e=this.getWorkingDatabase(t);return e.objects.layout.getBtrIdAt(e.currentSpaceId)}getWorkingDatabase(t){return t||An().workingDatabase}setCurrentLayoutInternal(t,e){return t?(this.events.layoutSwitched.dispatch({layout:t}),e.currentSpaceId=t.blockTableRecordId,!0):!1}}ya(()=>new Io);class Po extends ae{constructor(){super(),this._sourceFileName=""}get sourceFileName(){return this._sourceFileName}set sourceFileName(t){this._sourceFileName=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRasterImageDef"),t.writeString(1,this.sourceFileName),t.writeInt16(280,1),t.writeInt16(281,0),this}}var Eo=(i=>(i[i.NotApplicable=0]="NotApplicable",i[i.Ignore=1]="Ignore",i[i.Replace=2]="Replace",i[i.XrefMangleName=3]="XrefMangleName",i[i.MangleName=4]="MangleName",i))(Eo||{});class Vl extends ae{constructor(){super(...arguments),this._data=null}get data(){return this._data}set data(t){this._data=t}clear(){var t;(t=this._data)==null||t.clear()}clone(){return super.clone()}getDuplicateRecordCloning(){return 0}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbXrecord"),t.writeInt16(280,1),t.writeResultBuffer(this.data),this}}class So{constructor(t){this.db=t}createDefaultLayer(){const t=new tt;return t.colorIndex=7,this.db.tables.layerTable.add(new Yi({name:"0",standardFlags:0,linetype:"Continuous",lineWeight:0,isOff:!1,color:t,isPlottable:!0}))}createDefaultLineType(){this.db.tables.linetypeTable.add(new pe({name:"ByBlock",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new pe({name:"ByLayer",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new pe({name:"Continuous",standardFlag:0,description:"Solid line",totalPatternLength:0}))}createDefaultTextStyle(){this.db.tables.textStyleTable.add(new $i({name:J,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"}))}createDefaultDimStyle(){this.db.tables.dimStyleTable.add(new je({name:J,dimtxsty:J}))}createDefaultLayout(){const t=new Hs;t.layoutName="Model",t.tabOrder=0,t.blockTableRecordId=this.db.tables.blockTable.modelSpace.objectId,t.limits.min.copy({x:0,y:0}),t.limits.max.copy({x:1e6,y:1e6}),t.extents.min.copy({x:0,y:0,z:0}),t.extents.max.copy({x:1e6,y:1e6,z:0}),this.db.objects.layout.setAt(t.layoutName,t),this.db.tables.blockTable.modelSpace.layoutId=t.objectId}createArrowBlock(){if(!this.db.tables.blockTable.getAt("_CAXARROW")){const e=new Ns;e.patternName="SOLID";const s=new Os;s.add(new Ft({x:0,y:0},{x:-1,y:.125})),s.add(new Ft({x:-1,y:.125},{x:-1,y:-.125})),s.add(new Ft({x:-1,y:-.125},{x:0,y:0})),e.add(s);const n=new Z;n.name="_CAXARROW",n.appendEntity(e),this.db.tables.blockTable.add(n)}}}var Ao=(i=>(i.ClosedFilled="",i.Dot="_DOT",i.DotSmall="_DOTSMALL",i.DotBlank="_DOTBLANK",i.Origin="_ORIGIN",i.Origin2="_ORIGIN2",i.Open="_OPEN",i.Open90="_OPEN90",i.Open30="_OPEN30",i.Closed="_CLOSED",i.Small="_SMALL",i.None="_NONE",i.Oblique="_OBLIQUE",i.BoxFilled="_BOXFILLED",i.Box="_BOXBLANK",i.ClosedBlank="_CLOSEDBLANK",i.DatumBlank="_DATUMBLANK",i.DatumFilled="_DATUMFILLED",i.Integral="_INTEGRAL",i.ArchTick="_ARCHTICK",i))(Ao||{}),Un=(i=>(i[i.Undefined=0]="Undefined",i[i.Inches=1]="Inches",i[i.Feet=2]="Feet",i[i.Miles=3]="Miles",i[i.Millimeters=4]="Millimeters",i[i.Centimeters=5]="Centimeters",i[i.Meters=6]="Meters",i[i.Kilometers=7]="Kilometers",i[i.Microinches=8]="Microinches",i[i.Mils=9]="Mils",i[i.Yards=10]="Yards",i[i.Angstroms=11]="Angstroms",i[i.Nanometers=12]="Nanometers",i[i.Microns=13]="Microns",i[i.Decimeters=14]="Decimeters",i[i.Dekameters=15]="Dekameters",i[i.Hectometers=16]="Hectometers",i[i.Gigameters=17]="Gigameters",i[i.Astronomical=18]="Astronomical",i[i.LightYears=19]="LightYears",i[i.Parsecs=20]="Parsecs",i[i.USSurveyFeet=21]="USSurveyFeet",i[i.USSurveyInch=22]="USSurveyInch",i[i.USSurveyYard=23]="USSurveyYard",i[i.USSurveyMile=24]="USSurveyMile",i[i.Max=24]="Max",i))(Un||{});function Dl(i){return i==4||i==5||i==6||i==7||i==12||i==13||i==14||i==15||i==16||i==17}function jl(i){return i==1||i==2||i==3||i==8||i==9||i==10||i==21}class oe extends ae{constructor(t){super(),this.database=t,this.objectId=t.generateHandle(),this.ownerId=t.objectId,this._recordsByName=new Map,this._recordsById=new Map}get numEntries(){return this._recordsByName.size}add(t){t.database=this.database,t.ownerId=this.objectId,this.database.commitObjectHandle(t,s=>this.hasId(s));const e=this.normalizeName(t.name);this._recordsByName.set(e,t),this._recordsById.set(t.objectId,t)}remove(t){const e=this.normalizeName(t),s=this._recordsByName.get(e);return s?(this._recordsById.delete(s.objectId),this._recordsByName.delete(e),!0):!1}removeId(t){const e=this._recordsById.get(t);return e?(this._recordsByName.delete(this.normalizeName(e.name)),this._recordsById.delete(t),!0):!1}removeAll(){this._recordsByName.clear(),this._recordsById.clear()}has(t){const e=this.normalizeName(t);return this._recordsByName.has(e)}hasId(t){return this._recordsById.has(t)}getAt(t){const e=this.normalizeName(t);return this._recordsByName.get(e)}getIdAt(t){return this._recordsById.get(t)}getOwnerIdAt(t){return this._recordsById.get(t)}newIterator(){return new Us(this._recordsByName)}normalizeName(t){return t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbSymbolTable"),t.writeInt16(70,this.numEntries),this}}class Mo extends oe{constructor(t){super(t)}get modelSpace(){let t=this.getAt(Z.MODEL_SPACE_NAME);return t||(t=new Z,t.name=Z.MODEL_SPACE_NAME,this.add(t)),t}getEntityById(t){for(const e of this.database.tables.blockTable.newIterator()){const s=e.getIdAt(t);if(s)return s}}removeEntity(t){let e=!1;for(const s of this.database.tables.blockTable.newIterator())if(s.removeEntity(t)){e=!0;break}return e}normalizeName(t){let e=t;if(Z.isModelSapceName(t))e=Z.MODEL_SPACE_NAME;else if(Z.isPaperSapceName(t)){const s=Z.PAPER_SPACE_NAME_PREFIX,n=t.substring(s.length);e=s+n}return e}}class To extends oe{constructor(t){super(t)}}var vo=(i=>(i[i.Center=0]="Center",i[i.Left=1]="Left",i[i.Right=2]="Right",i[i.OverFirst=3]="OverFirst",i[i.OverSecond=4]="OverSecond",i))(vo||{}),ko=(i=>(i[i.Center=0]="Center",i[i.Above=1]="Above",i[i.Outside=2]="Outside",i[i.JIS=3]="JIS",i[i.Below=4]="Below",i))(ko||{}),Lo=(i=>(i[i.Feet=0]="Feet",i[i.None=1]="None",i[i.Inch=2]="Inch",i[i.FeetAndInch=3]="FeetAndInch",i[i.Leading=4]="Leading",i[i.Trailing=8]="Trailing",i[i.LeadingAndTrailing=12]="LeadingAndTrailing",i))(Lo||{}),Oo=(i=>(i[i.None=0]="None",i[i.Leading=1]="Leading",i[i.Trailing=2]="Trailing",i[i.LeadingAndTrailing=3]="LeadingAndTrailing",i))(Oo||{}),No=(i=>(i[i.Bottom=0]="Bottom",i[i.Middle=1]="Middle",i[i.Top=2]="Top",i))(No||{});const Gi=class Gi extends ye{constructor(t,e){t=t||{},Vs(t,Gi.DEFAULT_DIM_VALUES),super(t,e)}get dimpost(){return this.getAttr("dimpost")}set dimpost(t){this.setAttr("dimpost",t)}get dimapost(){return this.getAttr("dimapost")}set dimapost(t){this.setAttr("dimapost",t)}get dimscale(){return this.getAttr("dimscale")}set dimscale(t){this.setAttr("dimscale",t)}get dimasz(){return this.getAttr("dimasz")}set dimasz(t){this.setAttr("dimasz",t)}get dimexo(){return this.getAttr("dimexo")}set dimexo(t){this.setAttr("dimexo",t)}get dimdli(){return this.getAttr("dimdli")}set dimdli(t){this.setAttr("dimdli",t)}get dimexe(){return this.getAttr("dimexe")}set dimexe(t){this.setAttr("dimexe",t)}get dimrnd(){return this.getAttr("dimrnd")}set dimrnd(t){this.setAttr("dimrnd",t)}get dimdle(){return this.getAttr("dimdle")}set dimdle(t){this.setAttr("dimdle",t)}get dimtp(){return this.getAttr("dimtp")}set dimtp(t){this.setAttr("dimtp",t)}get dimtm(){return this.getAttr("dimtm")}set dimtm(t){this.setAttr("dimtm",t)}get dimtxt(){return this.getAttr("dimtxt")}set dimtxt(t){this.setAttr("dimtxt",t)}get dimcen(){return this.getAttr("dimcen")}set dimcen(t){this.setAttr("dimcen",t)}get dimtsz(){return this.getAttr("dimtsz")}set dimtsz(t){this.setAttr("dimtsz",t)}get dimaltf(){return this.getAttr("dimaltf")}set dimaltf(t){this.setAttr("dimaltf",t)}get dimlfac(){return this.getAttr("dimlfac")}set dimlfac(t){this.setAttr("dimlfac",t)}get dimtvp(){return this.getAttr("dimtvp")}set dimtvp(t){this.setAttr("dimtvp",t)}get dimtfac(){return this.getAttr("dimtfac")}set dimtfac(t){this.setAttr("dimtfac",t)}get dimgap(){return this.getAttr("dimgap")}set dimgap(t){this.setAttr("dimgap",t)}get dimaltrnd(){return this.getAttr("dimaltrnd")}set dimaltrnd(t){this.setAttr("dimaltrnd",t)}get dimtol(){return this.getAttr("dimtol")}set dimtol(t){this.setAttr("dimtol",t)}get dimlim(){return this.getAttr("dimlim")}set dimlim(t){this.setAttr("dimlim",t)}get dimtih(){return this.getAttr("dimtih")}set dimtih(t){this.setAttr("dimtih",t)}get dimtoh(){return this.getAttr("dimtoh")}set dimtoh(t){this.setAttr("dimtoh",t)}get dimse1(){return this.getAttr("dimse1")}set dimse1(t){this.setAttr("dimse1",t)}get dimse2(){return this.getAttr("dimse2")}set dimse2(t){this.setAttr("dimse2",t)}get dimtad(){return this.getAttr("dimtad")}set dimtad(t){this.setAttr("dimtad",t)}get dimzin(){return this.getAttr("dimzin")}set dimzin(t){this.setAttr("dimzin",t)}get dimazin(){return this.getAttr("dimazin")}set dimazin(t){this.setAttr("dimazin",t)}get dimalt(){return this.getAttr("dimalt")}set dimalt(t){this.setAttr("dimalt",t)}get dimaltd(){return this.getAttr("dimaltd")}set dimaltd(t){this.setAttr("dimaltd",t)}get dimtofl(){return this.getAttr("dimtofl")}set dimtofl(t){this.setAttr("dimtofl",t)}get dimsah(){return this.getAttr("dimsah")}set dimsah(t){this.setAttr("dimsah",t)}get dimtix(){return this.getAttr("dimtix")}set dimtix(t){this.setAttr("dimtix",t)}get dimsoxd(){return this.getAttr("dimsoxd")}set dimsoxd(t){this.setAttr("dimsoxd",t)}get dimclrd(){return this.getAttr("dimclrd")}set dimclrd(t){this.setAttr("dimclrd",t)}get dimclre(){return this.getAttr("dimclre")}set dimclre(t){this.setAttr("dimclre",t)}get dimclrt(){return this.getAttr("dimclrt")}set dimclrt(t){this.setAttr("dimclrt",t)}get dimadec(){return this.getAttr("dimadec")}set dimadec(t){this.setAttr("dimadec",t)}get dimunit(){return this.getAttr("dimunit")}set dimunit(t){this.setAttr("dimunit",t)}get dimdec(){return this.getAttr("dimdec")}set dimdec(t){this.setAttr("dimdec",t)}get dimtdec(){return this.getAttr("dimtdec")}set dimtdec(t){this.setAttr("dimtdec",t)}get dimaltu(){return this.getAttr("dimaltu")}set dimaltu(t){this.setAttr("dimaltu",t)}get dimalttd(){return this.getAttr("dimalttd")}set dimalttd(t){this.setAttr("dimalttd",t)}get dimaunit(){return this.getAttr("dimaunit")}set dimaunit(t){this.setAttr("dimaunit",t)}get dimfrac(){return this.getAttr("dimfrac")}set dimfrac(t){this.setAttr("dimfrac",t)}get dimlunit(){return this.getAttr("dimlunit")}set dimlunit(t){this.setAttr("dimlunit",t)}get dimdsep(){return this.getAttr("dimdsep")}set dimdsep(t){this.setAttr("dimdsep",t)}get dimtmove(){return this.getAttr("dimtmove")}set dimtmove(t){this.setAttr("dimtmove",t)}get dimjust(){return this.getAttr("dimjust")}set dimjust(t){this.setAttr("dimjust",t)}get dimsd1(){return this.getAttr("dimsd1")}set dimsd1(t){this.setAttr("dimsd1",t)}get dimsd2(){return this.getAttr("dimsd2")}set dimsd2(t){this.setAttr("dimsd2",t)}get dimtolj(){return this.getAttr("dimtolj")}set dimtolj(t){this.setAttr("dimtolj",t)}get dimtzin(){return this.getAttr("dimtzin")}set dimtzin(t){this.setAttr("dimtzin",t)}get dimaltz(){return this.getAttr("dimaltz")}set dimaltz(t){this.setAttr("dimaltz",t)}get dimalttz(){return this.getAttr("dimalttz")}set dimalttz(t){this.setAttr("dimalttz",t)}get dimfit(){return this.getAttr("dimfit")}set dimfit(t){this.setAttr("dimfit",t)}get dimupt(){return this.getAttr("dimupt")}set dimupt(t){this.setAttr("dimupt",t)}get dimatfit(){return this.getAttr("dimatfit")}set dimatfit(t){this.setAttr("dimatfit",t)}get dimtxsty(){return this.getAttr("dimtxsty")}set dimtxsty(t){this.setAttr("dimtxsty",t)}get dimldrblk(){return this.getAttr("dimldrblk")}set dimldrblk(t){this.setAttr("dimldrblk",t)}get dimblk(){return this.getAttr("dimblk")}set dimblk(t){this.setAttr("dimblk",t)}get dimblk1(){return this.getAttr("dimblk1")}set dimblk1(t){this.setAttr("dimblk1",t)}get dimblk2(){return this.getAttr("dimblk2")}set dimblk2(t){this.setAttr("dimblk2",t)}get dimlwd(){return this.getAttr("dimlwd")}set dimlwd(t){this.setAttr("dimlwd",t)}get dimlwe(){return this.getAttr("dimlwe")}set dimlwe(t){this.setAttr("dimlwe",t)}dxfOutFields(t){super.dxfOutFields(t);const e=this.database.tables.textStyleTable.getAt(this.dimtxsty),s=this.database.tables.blockTable.getAt(this.dimldrblk),n=this.database.tables.blockTable.getAt(this.dimblk),r=this.database.tables.blockTable.getAt(this.dimblk1),a=this.database.tables.blockTable.getAt(this.dimblk2);return t.writeSubclassMarker("AcDbDimStyleTableRecord"),t.writeString(2,this.name),t.writeInt16(70,0),t.writeString(3,this.dimpost),t.writeString(4,this.dimapost),t.writeDouble(40,this.dimscale),t.writeDouble(41,this.dimasz),t.writeDouble(42,this.dimexo),t.writeDouble(43,this.dimdli),t.writeDouble(44,this.dimexe),t.writeDouble(140,this.dimtxt),t.writeDouble(147,this.dimgap),t.writeInt16(170,this.dimalt),t.writeInt16(171,this.dimtol),t.writeInt16(172,this.dimlim),t.writeInt16(173,this.dimtih),t.writeInt16(174,this.dimtoh),t.writeObjectId(340,e==null?void 0:e.objectId),t.writeObjectId(341,s==null?void 0:s.objectId),t.writeObjectId(342,n==null?void 0:n.objectId),t.writeObjectId(343,r==null?void 0:r.objectId),t.writeObjectId(344,a==null?void 0:a.objectId),t.writeInt16(371,this.dimlwd),t.writeInt16(372,this.dimlwe),this}};Gi.DEFAULT_DIM_VALUES={name:"",dimpost:"",dimapost:"",dimscale:1,dimasz:2.5,dimexo:.625,dimdli:.38,dimexe:.18,dimrnd:0,dimdle:0,dimtp:0,dimtm:0,dimtxt:2.5,dimcen:2.5,dimtsz:0,dimaltf:0,dimlfac:1,dimtvp:0,dimtfac:1,dimgap:1,dimaltrnd:0,dimtol:0,dimlim:0,dimtih:0,dimtoh:0,dimse1:0,dimse2:0,dimtad:0,dimzin:0,dimazin:0,dimalt:0,dimaltd:2,dimtofl:0,dimsah:0,dimtix:0,dimsoxd:0,dimclrd:0,dimclre:0,dimclrt:0,dimadec:0,dimunit:2,dimdec:4,dimtdec:4,dimaltu:2,dimalttd:2,dimaunit:0,dimfrac:0,dimlunit:2,dimdsep:".",dimtmove:0,dimjust:0,dimsd1:0,dimsd2:0,dimtolj:0,dimtzin:0,dimaltz:0,dimalttz:0,dimfit:0,dimupt:0,dimatfit:3,dimtxsty:J,dimldrblk:"",dimblk:"",dimblk1:"",dimblk2:"",dimlwd:-2,dimlwe:-2};let je=Gi;class Co extends oe{constructor(t){super(t)}add(t){super.add(t),this.database.events.layerAppended.dispatch({database:this.database,layer:t})}}class Yi extends ye{constructor(t,e){t=t||{},Vs(t,{color:new tt,description:"",standardFlags:0,isHidden:!1,isInUse:!0,isOff:!1,isPlottable:!0,transparency:new Ui,linetype:"",lineWeight:1,materialId:-1}),super(t,e),this.attrs.events.attrChanged.addEventListener(s=>{this.database.events.layerModified.dispatch({database:this.database,layer:this,changes:s.object.changedAttributes()})})}get color(){return this.getAttr("color")}set color(t){this.setAttr("color",t.clone())}get description(){return this.getAttr("description")}set description(t){this.setAttr("description",t)}get standardFlags(){return this.getAttr("standardFlags")}set standardFlags(t){this.setAttr("standardFlags",t)}get isFrozen(){return(this.standardFlags&1)==1}set isFrozen(t){const e=t?1:0;this.standardFlags=this.standardFlags|e}get isHidden(){return this.getAttr("isHidden")}set isHidden(t){this.setAttr("isHidden",t)}get isInUse(){return this.getAttr("isInUse")}set isInUse(t){this.setAttr("isInUse",t)}get isLocked(){return(this.standardFlags&4)==4}set isLocked(t){const e=t?4:0;this.standardFlags=this.standardFlags|e}get isOff(){return this.getAttr("isOff")}set isOff(t){this.setAttr("isOff",t)}get isPlottable(){return this.getAttr("isPlottable")}set isPlottable(t){this.setAttr("isPlottable",t)}get transparency(){return this.getAttr("transparency")}set transparency(t){this.setAttr("transparency",t.clone())}get linetype(){return this.getAttr("linetype")}set linetype(t){this.setAttr("linetype",t)}get lineStyle(){var e;const t=(e=this.database)==null?void 0:e.tables.linetypeTable.getAt(this.linetype);if(t)return{type:"UserSpecified",...t.linetype}}get lineWeight(){return this.getAttr("lineWeight")}set lineWeight(t){this.setAttr("lineWeight",t)}get materialId(){return this.getAttr("materialId")}set materialId(t){this.setAttr("materialId",t)}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbLayerTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writeCmColor(this.color),t.writeString(6,this.linetype),t.writeInt16(290,this.isPlottable?1:0),t.writeInt16(370,this.lineWeight),t.writeTransparency(this.transparency),this.description&&t.writeString(4,this.description),this}}class Bo extends oe{constructor(t){super(t)}}class pe extends ye{constructor(t){super(),this.name=t.name,this._linetype=t}get numDashes(){return this._linetype.pattern?this._linetype.pattern.length:0}get patternLength(){return this._linetype.totalPatternLength}get comments(){return this._linetype.description}get linetype(){return this._linetype}dashLengthAt(t){if(t<0||t>=this.numDashes)throw new Error('Index must be greater than or equal to zero, but less than the value of property "numDashes".');return this._linetype.pattern[t].elementLength}dxfOutFields(t){super.dxfOutFields(t),t.writeSubclassMarker("AcDbLinetypeTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.linetype.standardFlag),t.writeString(3,this.comments),t.writeInt16(72,65),t.writeInt16(73,this.numDashes),t.writeDouble(40,this.patternLength);for(const e of this.linetype.pattern??[])t.writeDouble(49,e.elementLength),t.writeInt16(74,e.elementTypeFlag);return this}}class Fo extends oe{constructor(t){super(t)}get fonts(){const t=new Set,e=n=>{if(n){const r=n.lastIndexOf(".");if(r>=0){const a=n.substring(0,r).toLowerCase();t.add(a)}else t.add(n.toLowerCase())}},s=this.newIterator();for(const n of s)e(n.fileName),e(n.bigFontFileName);return Array.from(t)}}class $i extends ye{constructor(t){super(),this.name=t.name,this._textStyle=t,this._textStyle.font=this.getFileNameWithoutExtension(this._textStyle.font||this._textStyle.extendedFont||this.name),this._isVertical=!1}get obliquingAngle(){return this._textStyle.obliqueAngle}set obliquingAngle(t){this._textStyle.obliqueAngle=t}get priorSize(){return this._textStyle.lastHeight}set priorSize(t){this._textStyle.lastHeight=t}get textSize(){return this._textStyle.fixedTextHeight}set textSize(t){this._textStyle.fixedTextHeight=t}get xScale(){return this._textStyle.widthFactor}set xScale(t){this._textStyle.widthFactor=t}get isVertical(){return this._isVertical}set isVertical(t){this._isVertical=t}get fileName(){return this._textStyle.font}set fileName(t){this._textStyle.font=t}get bigFontFileName(){return this._textStyle.bigFont}set bigFontFileName(t){this._textStyle.bigFont=t}get textStyle(){return this._textStyle}getFileNameWithoutExtension(t){const e=t.split("/").pop();if(e){const s=e.lastIndexOf(".");return s===-1?e:e.substring(0,s)}return t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbTextStyleTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.textStyle.standardFlag),t.writeDouble(40,this.textSize),t.writeDouble(41,this.xScale),t.writeAngle(50,this.obliquingAngle),t.writeInt16(71,this.isVertical?4:this.textStyle.textGenerationFlag),t.writeDouble(42,this.priorSize),t.writeString(3,this.fileName),t.writeString(4,this.bigFontFileName),this}}class Ro extends oe{constructor(t){super(t)}}class zo extends oe{constructor(t){super(t)}}const Wl=()=>({center:new v,viewDirectionFromTarget:new x(0,0,1),viewTarget:new x(0,0,0),lensLength:500,frontClippingPlane:0,backClippingPlane:0,viewHeight:1e3,viewTwistAngle:0,frozenLayers:[],styleSheet:"",renderMode:Wn.OPTIMIZED_2D,viewMode:0,ucsIconSetting:0,ucsOrigin:new x(0,0,0),ucsXAxis:new x(1,0,0),ucsYAxis:new x(0,1,0),orthographicType:Gn.TOP,shadePlotSetting:0,shadePlotObjectId:void 0,visualStyleObjectId:void 0,isDefaultLightingOn:!1,defaultLightingType:Hn.ONE_DISTANT_LIGHT,brightness:0,contrast:0,ambientColor:void 0});class Xn extends ye{constructor(){super(),this._gsView=Wl(),this._centerPoint=this._gsView.center}get gsView(){return this._gsView}get centerPoint(){return this._centerPoint}set centerPoint(t){this._centerPoint.copy(t)}get viewDirectionFromTarget(){return this._gsView.viewDirectionFromTarget}set viewDirectionFromTarget(t){this._gsView.viewDirectionFromTarget.copy(t)}get viewTarget(){return this._gsView.viewTarget}set viewTarget(t){this._gsView.viewTarget.copy(t)}get viewHeight(){return this._gsView.viewHeight}set viewHeight(t){this._gsView.viewHeight=t}get viewTwistAngle(){return this._gsView.viewTwistAngle}set viewTwistAngle(t){this._gsView.viewTwistAngle=t}get lensLength(){return this._gsView.lensLength}set lensLength(t){this._gsView.lensLength=t}get frontClippingPlane(){return this._gsView.frontClippingPlane}set frontClippingPlane(t){this._gsView.frontClippingPlane=t}get backClippingPlane(){return this._gsView.backClippingPlane}set backClippingPlane(t){this._gsView.backClippingPlane=t}get renderMode(){return this._gsView.renderMode}set renderMode(t){this._gsView.renderMode=t}get viewMode(){return this._gsView.viewMode}set viewMode(t){this._gsView.viewMode=t}get ucsIconSetting(){return this._gsView.ucsIconSetting}set ucsIconSetting(t){this._gsView.ucsIconSetting=t}get ucsOrigin(){return this._gsView.ucsOrigin}set ucsOrigin(t){this._gsView.ucsOrigin.copy(t)}get ucsXAxis(){return this._gsView.ucsXAxis}set ucsXAxis(t){this._gsView.ucsXAxis.copy(t)}get ucsYAxis(){return this._gsView.ucsYAxis}set ucsYAxis(t){this._gsView.ucsYAxis.copy(t)}get orthographicType(){return this._gsView.orthographicType}set orthographicType(t){this._gsView.orthographicType=t}get shadePlotSetting(){return this._gsView.shadePlotSetting}set shadePlotSetting(t){this._gsView.shadePlotSetting=t}get shadePlotObjectId(){return this._gsView.shadePlotObjectId}set shadePlotObjectId(t){this._gsView.shadePlotObjectId=t}get visualStyleObjectId(){return this._gsView.visualStyleObjectId}set visualStyleObjectId(t){this._gsView.visualStyleObjectId=t}get isDefaultLightingOn(){return this._gsView.isDefaultLightingOn}set isDefaultLightingOn(t){this._gsView.isDefaultLightingOn=t}get defaultLightingType(){return this._gsView.defaultLightingType}set defaultLightingType(t){this._gsView.defaultLightingType=t}get brightness(){return this._gsView.brightness}set brightness(t){this._gsView.brightness=t}get contrast(){return this._gsView.contrast}set contrast(t){this._gsView.contrast=t}get ambientColor(){return this._gsView.ambientColor}set ambientColor(t){this._gsView.ambientColor=t}}class Yn extends Xn{constructor(){super(),this._circleSides=100,this._lowerLeftCorner=new v(0,0),this._upperRightCorner=new v(1,1),this._snapBase=new v(0,0),this._snapAngle=0,this._snapSpacing=new v(0,0),this._standardFlag=0,this._gridSpacing=new v,this._gridMajor=10}get circleSides(){return this._circleSides}set circleSides(t){this._circleSides=t}get center(){return this.centerPoint}set center(t){this.centerPoint=t}get lowerLeftCorner(){return this._lowerLeftCorner}set lowerLeftCorner(t){this._lowerLeftCorner.copy(t)}get upperRightCorner(){return this._upperRightCorner}set upperRightCorner(t){this._upperRightCorner.copy(t)}get snapBase(){return this._snapBase}set snapBase(t){this._snapBase.copy(t)}get snapAngle(){return this._snapAngle}set snapAngle(t){this._snapAngle=t}get snapIncrements(){return this._snapSpacing}set snapIncrements(t){this._snapSpacing.copy(t)}get gridMajor(){return this._gridMajor}set gridMajor(t){this._gridMajor=t}get gridIncrements(){return this._gridSpacing}set gridIncrements(t){this._gridSpacing.copy(t)}get standardFlag(){return this._standardFlag}set standardFlag(t){this._standardFlag=t}get snapEnabled(){return!!(this._standardFlag&256)}get backgroundObjectId(){return this._backgroundObjectId}set backgroundObjectId(t){this._backgroundObjectId=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewportTableRecord"),t.writeString(2,this.name),t.writeDouble(45,this.gsView.viewHeight),t.writePoint2d(10,this.lowerLeftCorner),t.writePoint2d(11,this.upperRightCorner),t.writePoint2d(12,this.center),t.writePoint2d(13,this.snapBase),t.writePoint2d(14,this.snapIncrements),t.writePoint2d(15,this.gridIncrements),t.writeInt16(70,this.standardFlag),t.writeInt16(71,this.circleSides),t.writeDouble(42,this.gsView.lensLength),t.writePoint3d(16,this.gsView.viewDirectionFromTarget),t.writePoint3d(17,this.gsView.viewTarget),t.writeAngle(50,this.snapAngle),t.writeAngle(51,this.gsView.viewTwistAngle),t.writeInt16(61,this.gridMajor),t.writeInt16(281,this.backgroundObjectId?1:0),t.writeObjectId(332,this.backgroundObjectId),this}}class Vo extends oe{constructor(t){super(t)}}class Pn extends ye{constructor(t){super(),this.name=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbRegAppTableRecord"),t.writeString(2,this.name),t.writeInt16(70,0),this}}const V={ACADVER:"ACADVER",ANGBASE:"ANGBASE",ANGDIR:"ANGDIR",AUNITS:"AUNITS",CECOLOR:"CECOLOR",CELTSCALE:"CELTSCALE",CELWEIGHT:"CELWEIGHT",CLAYER:"CLAYER",COLORTHEME:"COLORTHEME",DYNMODE:"DYNMODE",DYNPROMPT:"DYNPROMPT",EXTMAX:"EXTMAX",EXTMIN:"EXTMIN",INSUNITS:"INSUNITS",LTSCALE:"LTSCALE",LWDISPLAY:"LWDISPLAY",MEASUREMENTCOLOR:"MEASUREMENTCOLOR",OSMODE:"OSMODE",PDMODE:"PDMODE",PDSIZE:"PDSIZE",PICKBOX:"PICKBOX",SHORTCUTMENU:"SHORTCUTMENU",TEXTSTYLE:"TEXTSTYLE",WHITEBKCOLOR:"WHITEBKCOLOR"},Gl=Object.freeze(Object.values(V)),Hi=class Hi{constructor(){this.registry=new Map,this.cache=new Map,this.events={sysVarChanged:new q},this.registerVar({name:V.CECOLOR,type:"color",isDbVar:!0,defaultValue:new tt(S.ByLayer)}),this.registerVar({name:V.CELTSCALE,type:"number",isDbVar:!0,defaultValue:-1}),this.registerVar({name:V.CELWEIGHT,type:"number",isDbVar:!0,defaultValue:De.ByLayer}),this.registerVar({name:V.CLAYER,type:"string",isDbVar:!0,defaultValue:"0"}),this.registerVar({name:V.COLORTHEME,type:"number",isDbVar:!1,defaultValue:"0"}),this.registerVar({name:V.DYNMODE,type:"number",isDbVar:!1,defaultValue:3}),this.registerVar({name:V.DYNPROMPT,type:"boolean",isDbVar:!1,defaultValue:!0}),this.registerVar({name:V.LWDISPLAY,type:"boolean",isDbVar:!0,defaultValue:!1}),this.registerVar({name:V.MEASUREMENTCOLOR,type:"color",isDbVar:!1,defaultValue:(()=>{const t=new tt(S.ByColor);return t.setRGB(96,165,250),t})()}),this.registerVar({name:V.OSMODE,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:V.PICKBOX,type:"number",isDbVar:!1,defaultValue:10}),this.registerVar({name:V.SHORTCUTMENU,type:"number",isDbVar:!1,defaultValue:0}),this.registerVar({name:V.TEXTSTYLE,type:"string",isDbVar:!0,defaultValue:J}),this.registerVar({name:V.WHITEBKCOLOR,type:"boolean",isDbVar:!1,defaultValue:!1})}static instance(){return this._instance||(this._instance=new Hi),this._instance}registerVar(t){const e=this.normalizeName(t.name);this.registry.set(e,{...t,name:e}),t.isDbVar||this.cache.set(e,t.defaultValue)}registerMany(t){t.forEach(e=>this.registerVar(e))}getVar(t,e){t=this.normalizeName(t);const s=this.getDescriptor(t);if(!s)throw new Error(`System variable ${t} not found!`);if(s.isDbVar)return e[t.toLowerCase()];if(this.cache.has(t))return this.cache.get(t)}getDefaultValue(t){t=this.normalizeName(t);const e=this.getDescriptor(t);if(!e)throw new Error(`System variable ${t} not found!`);return e.defaultValue}setVar(t,e,s){t=this.normalizeName(t);const n=this.getDescriptor(t);if(n){const r=this.getVar(t,s);if(n.type!=="string"&&(typeof e=="string"||e instanceof String)){if(n.type==="number"){const a=Number(e);if(Number.isNaN(a))throw new Error("Invalid number input!");e=a}else if(n.type==="boolean")e=this.parseBoolean(e);else if(n.type==="color"){const a=tt.fromString(e);if(a==null)throw new Error("Invalid color value!");e=a}}n.isDbVar?s[t.toLowerCase()]=e:(this.cache.set(t,e),this.hasValueChanged(r,e)&&this.events.sysVarChanged.dispatch({database:s,name:t,newVal:e,oldVal:r}))}else throw new Error(`System variable ${t} not found!`)}getDescriptor(t){return this.registry.get(this.normalizeName(t))}getAllDescriptors(){return[...this.registry.values()]}parseBoolean(t){if(t==null)return!1;const e=String(t).trim().toLowerCase(),s=new Set(["true","t","1","yes","y"]),n=new Set(["false","f","0","no","n"]);return s.has(e)?!0:(n.has(e),!1)}hasValueChanged(t,e){return t instanceof tt&&e instanceof tt?!t.equals(e):!Object.is(t,e)}normalizeName(t){return t.toLowerCase()}};Hi._instance=null;let zs=Hi;class Hl extends ae{constructor(){super({objectId:"0"}),this.events={dictObjetSet:new q,dictObjectErased:new q,entityAppended:new q,entityModified:new q,entityErased:new q,layerAppended:new q,layerModified:new q,layerErased:new q,openProgress:new q},this._version=new At("AC1014"),this._angBase=0,this._angDir=0,this._aunits=vn.DecimalDegrees,this._celtscale=1,this._cecolor=new tt,this._celweight=De.ByLayer,this._clayer="0",this._textstyle=J,this._extents=new C,this._insunits=Un.Millimeters,this._ltscale=1,this._lwdisplay=!1,this._pdmode=0,this._pdsize=0,this._osmode=0,this._maxHandle=0,this._tables={appIdTable:new Vo(this),blockTable:new Mo(this),dimStyleTable:new To(this),linetypeTable:new Bo(this),textStyleTable:new Fo(this),viewTable:new Ro(this),layerTable:new Co(this),viewportTable:new zo(this)},this._objects={dictionary:new Ms(this),imageDefinition:new Ms(this),layout:new bo(this),xrecord:new Ms(this)}}get tables(){return this._tables}get objects(){return this._objects}generateHandle(){return this._maxHandle++,this._maxHandle.toString(16).toUpperCase()}updateMaxHandle(t){const e=parseInt(t,16);!isNaN(e)&&e>this._maxHandle&&(this._maxHandle=e)}commitObjectHandle(t,e){const s=t.getAttrWithoutException("objectId");!s||t.isTemp||e&&e(s)?t.objectId=this.generateHandle():this.updateMaxHandle(s)}get currentSpaceId(){return this._currentSpace||(this._currentSpace=this._tables.blockTable.modelSpace),this._currentSpace.objectId}set currentSpaceId(t){const e=this.tables.blockTable.getIdAt(t);if(e==null)throw new Error(`[AcDbDatabase] The specified block table record id '${t}' doesn't exist in the drawing database!`);this._currentSpace=e}get aunits(){return this._aunits}set aunits(t){this.updateSysVar(V.AUNITS,this._aunits,t??0,e=>{this._aunits=e})}get version(){return this._version}set version(t){this.updateSysVar(V.ACADVER,this._version,new At(t),e=>{this._version=e})}get insunits(){return this._insunits}set insunits(t){this.updateSysVar(V.INSUNITS,this._insunits,t??4,e=>{this._insunits=e})}get ltscale(){return this._ltscale}set ltscale(t){this.updateSysVar(V.LTSCALE,this._ltscale,t??1,e=>{this._ltscale=e})}get lwdisplay(){return this._lwdisplay}set lwdisplay(t){this.updateSysVar(V.LWDISPLAY,this._lwdisplay,t??!1,e=>{this._lwdisplay=e})}get cecolor(){return this._cecolor}set cecolor(t){this.updateSysVar(V.CECOLOR,this._cecolor,t||0,e=>{this._cecolor=e.clone()})}get celtscale(){return this._celtscale}set celtscale(t){this.updateSysVar(V.CELTSCALE,this._celtscale,t??1,e=>{this._celtscale=e})}get celweight(){return this._celweight}set celweight(t){this.updateSysVar(V.CELWEIGHT,this._celweight,t??De.ByLayer,e=>{this._celweight=e})}get clayer(){return this._clayer}set clayer(t){this.updateSysVar(V.CLAYER,this._clayer,t??"0",e=>{this._clayer=e})}get textstyle(){return this._textstyle}set textstyle(t){this.updateSysVar(V.TEXTSTYLE,this._textstyle,t??J,e=>{this._textstyle=e})}get angBase(){return this._angBase}set angBase(t){this.updateSysVar(V.ANGBASE,this._angBase,t??0,e=>{this._angBase=e})}get angDir(){return this._angDir}set angDir(t){this.updateSysVar(V.ANGDIR,this._angDir,t??0,e=>{this._angDir=e})}get extmax(){return this._extents.max}set extmax(t){if(t){const e=this._extents.max.clone();this._extents.expandByPoint(t),this._extents.max.equals(e)||this.triggerSysVarChangedEvent(V.EXTMAX,e,this._extents.max)}}get extmin(){return this._extents.min}set extmin(t){if(t){const e=this._extents.min.clone();this._extents.expandByPoint(t),this._extents.min.equals(e)||this.triggerSysVarChangedEvent(V.EXTMIN,e,this._extents.min)}}get extents(){return this._extents}get pdmode(){return this._pdmode}set pdmode(t){this.updateSysVar(V.PDMODE,this._pdmode,t??0,e=>{this._pdmode=e})}get pdsize(){return this._pdsize}set pdsize(t){this.updateSysVar(V.PDSIZE,this._pdsize,t??0,e=>{this._pdsize=e})}get osmode(){return this._osmode}set osmode(t){this.updateSysVar(V.OSMODE,this._osmode,t??0,e=>{this._osmode=e})}async read(t,e,s=Is.DXF){const n=Ct.instance.get(s);if(n==null)throw new Error(`Database converter for file type '${s}' isn't registered and can can't read this file!`);this.clear(),await n.read(t,this,e&&e.minimumChunkSize||10,async(r,a,o,l)=>{if(this.events.openProgress.dispatch({database:this,percentage:r,stage:"CONVERSION",subStage:a,subStageStatus:o,data:l}),e&&e.fontLoader&&a=="FONT"&&o=="END"){const c=l||this.tables.textStyleTable.fonts;await e.fontLoader.load(c)}},e==null?void 0:e.timeout,e==null?void 0:e.sysVars),this.ensureDatabaseDefaults()}async openUri(t,e){var p;this.events.openProgress.dispatch({database:this,percentage:0,stage:"FETCH_FILE",subStageStatus:"START"});const s=await fetch(t);if(!s.ok)throw this.events.openProgress.dispatch({database:this,percentage:100,stage:"FETCH_FILE",subStageStatus:"ERROR"}),new Error(`Failed to fetch file '${t}' with HTTP status code '${s.status}'!`);const n=s.headers.get("content-length"),r=n?parseInt(n,10):null;let a=0;const o=(p=s.body)==null?void 0:p.getReader();if(!o)throw new Error("Failed to get response reader");const l=[];for(;;){const{done:m,value:y}=await o.read();if(m)break;if(l.push(y),a+=y.length,r!==null){const w=Math.round(a/r*100);this.events.openProgress.dispatch({database:this,percentage:w,stage:"FETCH_FILE",subStageStatus:"IN-PROGRESS"})}}const c=new Uint8Array(a);let d=0;for(const m of l)c.set(m,d),d+=m.length;const g=this.getFileNameFromUri(t).toLowerCase().split(".").pop();g==="dwg"?await this.read(c.buffer,e,Is.DWG):g==="dxf"?await this.read(c.buffer,e,Is.DXF):await this.read(c.buffer,e,g),this.events.openProgress.dispatch({database:this,percentage:100,stage:"FETCH_FILE",subStageStatus:"END"})}dxfOut(t,e=16,s=this.version.name,n=!1){this.ensureDatabaseDefaults();const r=s instanceof At?s:new At(s),a=new ia({database:this,precision:e,version:r});return this.writeDxfHeaderSection(a),this.writeDxfTablesSection(a,r),this.writeDxfBlocksSection(a),this.writeDxfEntitiesSection(a),this.writeDxfObjectsSection(a),a.writeStart("EOF"),a.toString()}async regen(){await new al(this).read(null,this,500,async(e,s,n,r)=>{this.events.openProgress.dispatch({database:this,percentage:e,stage:"CONVERSION",subStage:s,subStageStatus:n,data:r})})}createDefaultData(t={layer:!0,lineType:!0,textStyle:!0,dimStyle:!0,layout:!0}){const e=new So(this);t.layer&&e.createDefaultLayer(),t.lineType&&e.createDefaultLineType(),t.textStyle&&e.createDefaultTextStyle(),t.dimStyle&&e.createDefaultDimStyle(),t.layout&&e.createDefaultLayout()}ensureDatabaseDefaults(){if(!this.tables.layerTable.has("0")){const e=new tt;e.colorIndex=7,this.tables.layerTable.add(new Yi({name:"0",standardFlags:0,linetype:$e,lineWeight:0,isOff:!1,color:e,isPlottable:!0}))}if(this.tables.linetypeTable.has(yi)||this.tables.linetypeTable.add(new pe({name:yi,standardFlag:0,description:"",totalPatternLength:0})),this.tables.linetypeTable.has(qe)||this.tables.linetypeTable.add(new pe({name:qe,standardFlag:0,description:"",totalPatternLength:0})),this.tables.linetypeTable.has($e)||this.tables.linetypeTable.add(new pe({name:$e,standardFlag:0,description:"Solid line",totalPatternLength:0})),this.tables.textStyleTable.has(J)||this.tables.textStyleTable.add(new $i({name:J,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"})),this.tables.dimStyleTable.has(J)||this.tables.dimStyleTable.add(new je({name:J,dimtxsty:J})),!this.tables.viewportTable.has("*Active")){const e=new Yn;e.name="*Active",this.tables.viewportTable.add(e)}const t=this.tables.blockTable.modelSpace;if(!this.objects.layout.getAt("Model")){const e=new Hs;e.layoutName="Model",e.tabOrder=0,e.blockTableRecordId=t.objectId,e.limits.min.copy({x:0,y:0}),e.limits.max.copy({x:1e6,y:1e6}),e.extents.min.copy({x:0,y:0,z:0}),e.extents.max.copy({x:1e6,y:1e6,z:0}),this.objects.layout.setAt(e.layoutName,e),t.layoutId=e.objectId}this.tables.appIdTable.has(gn)||this.tables.appIdTable.add(new Pn(gn)),this.tables.appIdTable.has(pn)||this.tables.appIdTable.add(new Pn(pn))}writeDxfHeaderSection(t){var e;t.startSection("HEADER"),t.writeString(9,"$ACADVER"),t.writeString(1,((e=t.version)==null?void 0:e.name)??this.version.name),t.writeString(9,"$HANDSEED"),t.writeString(5,t.nextHandle.toString(16).toUpperCase()),t.version!=null&&t.version.value>=27&&(t.writeString(9,"$DWGCODEPAGE"),t.writeString(3,"UTF-8")),t.writeString(9,"$INSUNITS"),t.writeInt16(70,this.insunits),t.writeString(9,"$LTSCALE"),t.writeDouble(40,this.ltscale),t.writeString(9,"$LWDISPLAY"),t.writeInt16(70,this.lwdisplay?1:0),t.writeString(9,"$CLAYER"),t.writeString(8,this.clayer),t.writeString(9,"$TEXTSTYLE"),t.writeString(7,this.textstyle),t.writeString(9,"$ANGBASE"),t.writeAngle(50,this.angBase),t.writeString(9,"$ANGDIR"),t.writeInt16(70,this.angDir),t.writeString(9,"$EXTMIN"),t.writePoint3d(10,this.extmin),t.writeString(9,"$EXTMAX"),t.writePoint3d(10,this.extmax),t.writeString(9,"$PDMODE"),t.writeInt32(70,this.pdmode),t.writeString(9,"$PDSIZE"),t.writeDouble(40,this.pdsize),t.writeString(9,"$OSMODE"),t.writeInt32(70,this.osmode),t.endSection()}writeDxfTablesSection(t,e){t.startSection("TABLES"),this.writeDxfTable(t,"VPORT",this.tables.viewportTable,this.tables.viewportTable.newIterator(),"VPORT"),this.writeDxfTable(t,"VIEW",this.tables.viewTable,this.tables.viewTable.newIterator(),"VIEW"),this.writeDxfTable(t,"LTYPE",this.tables.linetypeTable,this.tables.linetypeTable.newIterator(),"LTYPE"),this.writeDxfTable(t,"LAYER",this.tables.layerTable,this.tables.layerTable.newIterator(),"LAYER"),this.writeDxfTable(t,"STYLE",this.tables.textStyleTable,this.tables.textStyleTable.newIterator(),"STYLE"),this.writeDxfTable(t,"APPID",this.tables.appIdTable,this.tables.appIdTable.newIterator(),"APPID"),this.writeDxfTable(t,"DIMSTYLE",this.tables.dimStyleTable,this.tables.dimStyleTable.newIterator(),"DIMSTYLE"),e.value>=19&&this.writeDxfTable(t,"BLOCK_RECORD",this.tables.blockTable,this.tables.blockTable.newIterator(),"BLOCK_RECORD"),t.endSection()}writeDxfBlocksSection(t){t.startSection("BLOCKS");for(const e of this.tables.blockTable.newIterator()){if(e.dxfOutBlockBegin(t),!e.isModelSapce&&!e.isPaperSapce)for(const s of e.newIterator())this.writeDxfEntity(t,s);e.dxfOutBlockEnd(t)}t.endSection()}writeDxfEntitiesSection(t){t.startSection("ENTITIES");for(const e of this.tables.blockTable.newIterator())if(!(!e.isModelSapce&&!e.isPaperSapce))for(const s of e.newIterator())this.writeDxfEntity(t,s);t.endSection()}writeDxfObjectsSection(t){t.startSection("OBJECTS");const e=this.objects.dictionary;e.ownerId="0";const s=a=>{t.writeStart("DICTIONARY"),a.dxfOut(t)},n=(a,o)=>{e.getAt(a)!==o&&e.setAt(a,o)},r=a=>{e.getAt(a)&&e.remove(a)};n("ACAD_LAYOUT",this.objects.layout),this.objects.imageDefinition.numEntries>0?n("ISM_RASTER_IMAGE_DICT",this.objects.imageDefinition):r("ISM_RASTER_IMAGE_DICT"),this.objects.xrecord.numEntries>0?n("MLIGHT_XRECORD",this.objects.xrecord):r("MLIGHT_XRECORD"),s(e),s(this.objects.layout),this.objects.imageDefinition.numEntries>0&&s(this.objects.imageDefinition),this.objects.xrecord.numEntries>0&&s(this.objects.xrecord);for(const[a,o]of this.objects.layout.entries())t.writeStart("LAYOUT"),o.dxfOut(t);for(const[a,o]of this.objects.imageDefinition.entries())t.writeStart("IMAGEDEF"),o.dxfOut(t);for(const[a,o]of this.objects.xrecord.entries())t.writeStart("XRECORD"),o.dxfOut(t);t.endSection()}writeDxfTable(t,e,s,n,r){const a=[...n];t.startTable(e),s.dxfOut(t);for(const o of a){if(r==="BLOCK_RECORD"&&o instanceof Z){o.dxfOutBlockRecord(t);continue}t.writeStart(r),o.dxfOut(t)}t.endTable()}writeDxfEntity(t,e){t.writeStart(e.dxfTypeName),e.dxfOut(t)}clear(){this._tables.blockTable.removeAll(),this._tables.dimStyleTable.removeAll(),this._tables.linetypeTable.removeAll(),this._tables.textStyleTable.removeAll(),this._tables.viewTable.removeAll(),this._tables.layerTable.removeAll(),this._tables.viewportTable.removeAll(),this._objects.layout.removeAll(),this._currentSpace=void 0,this._extents.makeEmpty()}updateSysVar(t,e,s,n){this.hasSysVarValueChanged(e,s)&&(n(s),this.triggerSysVarChangedEvent(t,e,s))}hasSysVarValueChanged(t,e){return t instanceof tt&&e instanceof tt?!t.equals(e):t instanceof At&&e instanceof At?t.value!==e.value:!Object.is(t,e)}triggerSysVarChangedEvent(t,e,s){const n=zs.instance(),r=t.toLowerCase();n.getDescriptor(r)!=null&&n.events.sysVarChanged.dispatch({database:this,name:r,oldVal:e,newVal:s})}getFileNameFromUri(t){try{const s=new URL(t).pathname.split("/");return s[s.length-1]||""}catch{return""}}}const Do="Load Database",qr=3e4,Ul=12e4,Xl=1024*1024;class mt extends ca{constructor(t,e){super(t.stage),this.data=t,this.progress=e}async run(t){const e=Sn.getInstance().getEntry(Do),s=Date.now();this.progress&&await this.progress(this.data.progress.value,this.data.stage,"START");const n=await this.data.task(t);return this.progress&&(await this.progress(this.data.progress.value,this.data.stage,"END",n?n.data:null),this.data.progress.value+=this.data.step,this.data.progress.value>100&&(this.data.progress.value=100)),e&&(e.data[this.name]=Date.now()-s),n}}class $n{constructor(t={}){this.config=t}async read(t,e,s,n,r,a){const o={name:Do,data:{total:0},format(){let u="";return Object.keys(this.data).forEach(g=>{g!=="total"&&(u+=`- ${g}: ${this.data[g]} ms
4
+ `)}),u+=`- total: ${this.data.total} ms`,u}};Sn.getInstance().collect(o),this.progress=n;const l={value:0},c=new da;c.setCompleteCallback(()=>this.onFinished()),c.setErrorCallback(u=>this.onError(u)),c.addTask(new mt({stage:"START",step:1,progress:l,task:async u=>u},n)),c.addTask(new mt({stage:"PARSE",step:5,progress:l,task:async u=>await this.parse(u,r)},n)),c.addTask(new mt({stage:"FONT",step:5,progress:l,task:async u=>{const g=this.getFonts(u.model);return{model:u.model,data:g}}},n)),c.addTask(new mt({stage:"LTYPE",step:1,progress:l,task:async u=>(this.processLineTypes(u.model,e),u)},n)),c.addTask(new mt({stage:"STYLE",step:1,progress:l,task:async u=>(this.processTextStyles(u.model,e),u)},n)),c.addTask(new mt({stage:"DIMSTYLE",step:1,progress:l,task:async u=>(this.processDimStyles(u.model,e),u)},n)),c.addTask(new mt({stage:"LAYER",step:1,progress:l,task:async u=>(this.processLayers(u.model,e),e.tables.layerTable.numEntries===0&&e.createDefaultData({layer:!0}),u)},n)),c.addTask(new mt({stage:"VPORT",step:1,progress:l,task:async u=>(this.processViewports(u.model,e),u)},n)),c.addTask(new mt({stage:"HEADER",step:1,progress:l,task:async u=>{if(this.processHeader(u.model,e),a){const g=zs.instance();for(const[p,m]of Object.entries(a))g.setVar(p,m,e)}return u}},n)),c.addTask(new mt({stage:"BLOCK_RECORD",step:5,progress:l,task:async u=>(this.processBlockTables(u.model,e),u)},n)),c.addTask(new mt({stage:"OBJECT",step:5,progress:l,task:async u=>(this.processObjects(u.model,e),e.objects.layout.numEntries===0&&e.createDefaultData({layout:!0}),u)},n)),c.addTask(new mt({stage:"BLOCK",step:5,progress:l,task:async u=>(await this.processBlocks(u.model,e),u)},n)),c.addTask(new mt({stage:"ENTITY",step:100,progress:l,task:async u=>(await this.processEntities(u.model,e,s,l,n),u)},n)),c.addTask(new mt({stage:"END",step:0,progress:l,task:async u=>u},n));const d=Date.now();await c.run(t),o.data.total=Date.now()-d}onError(t){if(this.progress){const e=t.task;this.progress(e.data.progress.value,e.data.stage,"ERROR",void 0,t)}return t.task.name==="ENTITY"?!1:(this.onFinished(),!0)}onFinished(){this.progress&&(this.progress(100,"END","END"),Je.instance.clear())}getParserWorkerTimeout(t,e){const s=e??this.config.timeout;if(s!=null)return s;const n=Math.ceil(t.byteLength/Xl),r=qr+n*1e3;return Math.min(Ul,Math.max(qr,r))}async parse(t,e){throw new Error("Not impelemented yet!")}getFonts(t){throw new Error("Not impelemented yet!")}processLineTypes(t,e){throw new Error("Not impelemented yet!")}processTextStyles(t,e){throw new Error("Not impelemented yet!")}processDimStyles(t,e){throw new Error("Not impelemented yet!")}processLayers(t,e){throw new Error("Not impelemented yet!")}processViewports(t,e){throw new Error("Not impelemented yet!")}processHeader(t,e){throw new Error("Not impelemented yet!")}processBlockTables(t,e){throw new Error("Not impelemented yet!")}processObjects(t,e){throw new Error("Not impelemented yet!")}processBlocks(t,e){throw new Error("Not impelemented yet!")}processEntities(t,e,s,n,r){throw new Error("Not impelemented yet!")}}class Yl extends Xn{constructor(){super(),this._standardFlags=0,this._viewWidth=this.viewHeight,this._ucsAssociated=!1,this._cameraPlottable=!1,this._ucsElevation=0}get standardFlags(){return this._standardFlags}set standardFlags(t){this._standardFlags=t}get viewWidth(){return this._viewWidth}set viewWidth(t){this._viewWidth=t}get ucsAssociated(){return this._ucsAssociated}set ucsAssociated(t){this._ucsAssociated=t}get cameraPlottable(){return this._cameraPlottable}set cameraPlottable(t){this._cameraPlottable=t}get ucsElevation(){return this._ucsElevation}set ucsElevation(t){this._ucsElevation=t}get ucsObjectId(){return this._ucsObjectId}set ucsObjectId(t){this._ucsObjectId=t}get ucsBaseObjectId(){return this._ucsBaseObjectId}set ucsBaseObjectId(t){this._ucsBaseObjectId=t}get backgroundObjectId(){return this._backgroundObjectId}set backgroundObjectId(t){this._backgroundObjectId=t}get liveSectionObjectId(){return this._liveSectionObjectId}set liveSectionObjectId(t){this._liveSectionObjectId=t}dxfOutFields(t){return super.dxfOutFields(t),t.writeSubclassMarker("AcDbViewTableRecord"),t.writeString(2,this.name),t.writeInt16(70,this.standardFlags),t.writeDouble(40,this.gsView.viewHeight),t.writePoint2d(10,this.centerPoint),t.writeDouble(41,this.viewWidth),t.writePoint3d(11,this.gsView.viewDirectionFromTarget),t.writePoint3d(12,this.gsView.viewTarget),t.writeDouble(42,this.gsView.lensLength),t.writeDouble(43,this.gsView.frontClippingPlane),t.writeDouble(44,this.gsView.backClippingPlane),t.writeAngle(50,this.gsView.viewTwistAngle),t.writeInt16(71,this.gsView.viewMode),t.writeInt16(281,this.gsView.renderMode),t.writeInt16(72,this.ucsAssociated?1:0),t.writeInt16(73,this.cameraPlottable?1:0),t.writeObjectId(332,this.backgroundObjectId),t.writeObjectId(334,this.liveSectionObjectId),t.writeObjectId(348,this.gsView.visualStyleObjectId),this.ucsAssociated&&(t.writePoint3d(110,this.gsView.ucsOrigin),t.writePoint3d(111,this.gsView.ucsXAxis),t.writePoint3d(112,this.gsView.ucsYAxis),t.writeInt16(79,this.gsView.orthographicType),t.writeDouble(146,this.ucsElevation),t.writeObjectId(345,this.ucsObjectId),t.writeObjectId(346,this.ucsBaseObjectId)),this}}var st,es,X,$,ss,Tt,be,jt,ht,Wt,vt,fe,Ie,Pe,wt,Gt,is,ns,Ee,Se,rs,as,os,xt,Ht,G,Ae,hs,k,lt,ls,ct,cs,Ut,D,ds,Xt,Me,sn,nn,kt,us,Te,bt,Yt,$t,qt,ps,gs,Zt,ve,ke,rn,ms,Le,Kt,Oe,it,Qt,ft,an,nt,on,Jt,It,Ne,ys,Ce,Pt,te,Et,ee,hn,Be,St;(st={})[st.None=0]="None",st[st.Anonymous=1]="Anonymous",st[st.NonConstant=2]="NonConstant",st[st.Xref=4]="Xref",st[st.XrefOverlay=8]="XrefOverlay",st[st.ExternallyDependent=16]="ExternallyDependent",st[st.ResolvedOrDependent=32]="ResolvedOrDependent",st[st.ReferencedXref=64]="ReferencedXref";(es={})[es.BYBLOCK=0]="BYBLOCK",es[es.BYLAYER=256]="BYLAYER";(X={})[X.Rotated=0]="Rotated",X[X.Aligned=1]="Aligned",X[X.Angular=2]="Angular",X[X.Diameter=3]="Diameter",X[X.Radius=4]="Radius",X[X.Angular3Point=5]="Angular3Point",X[X.Ordinate=6]="Ordinate",X[X.ReferenceIsExclusive=32]="ReferenceIsExclusive",X[X.IsOrdinateXTypeFlag=64]="IsOrdinateXTypeFlag",X[X.IsCustomTextPositionFlag=128]="IsCustomTextPositionFlag";($={})[$.TopLeft=1]="TopLeft",$[$.TopCenter=2]="TopCenter",$[$.TopRight=3]="TopRight",$[$.MiddleLeft=4]="MiddleLeft",$[$.MiddleCenter=5]="MiddleCenter",$[$.MiddleRight=6]="MiddleRight",$[$.BottomLeft=7]="BottomLeft",$[$.BottomCenter=8]="BottomCenter",$[$.BottomRight=9]="BottomRight";(ss={})[ss.AtLeast=1]="AtLeast",ss[ss.Exact=2]="Exact";var Zr=((Tt={})[Tt.Center=0]="Center",Tt[Tt.Above=1]="Above",Tt[Tt.Outside=2]="Outside",Tt[Tt.JIS=3]="JIS",Tt[Tt.Below=4]="Below",Tt);(be={})[be.WithDimension=0]="WithDimension",be[be.AddLeader=1]="AddLeader",be[be.Independent=2]="Independent";(jt={})[jt.BothOutside=0]="BothOutside",jt[jt.ArrowFirst=1]="ArrowFirst",jt[jt.TextFirst=2]="TextFirst",jt[jt.Auto=3]="Auto";var He=((ht={})[ht.Feet=0]="Feet",ht[ht.None=1]="None",ht[ht.Inch=2]="Inch",ht[ht.FeetAndInch=3]="FeetAndInch",ht[ht.Leading=4]="Leading",ht[ht.Trailing=8]="Trailing",ht[ht.LeadingAndTrailing=12]="LeadingAndTrailing",ht),$l=((Wt={})[Wt.None=0]="None",Wt[Wt.Leading=1]="Leading",Wt[Wt.Trailing=2]="Trailing",Wt[Wt.LeadingAndTrailing=3]="LeadingAndTrailing",Wt),ql=((vt={})[vt.Center=0]="Center",vt[vt.First=1]="First",vt[vt.Second=2]="Second",vt[vt.OverFirst=3]="OverFirst",vt[vt.OverSecond=4]="OverSecond",vt),Zl=((fe={})[fe.Bottom=0]="Bottom",fe[fe.Center=1]="Center",fe[fe.Top=2]="Top",fe);(Ie={})[Ie.None=0]="None",Ie[Ie.UseDrawingBackground=1]="UseDrawingBackground",Ie[Ie.Custom=2]="Custom";(Pe={})[Pe.Horizontal=0]="Horizontal",Pe[Pe.Diagonal=1]="Diagonal",Pe[Pe.NotStacked=2]="NotStacked";(wt={})[wt.Scientific=1]="Scientific",wt[wt.Decimal=2]="Decimal",wt[wt.Engineering=3]="Engineering",wt[wt.Architectural=4]="Architectural",wt[wt.Fractional=5]="Fractional",wt[wt.WindowDesktop=6]="WindowDesktop";(Gt={})[Gt.Decimal=0]="Decimal",Gt[Gt.DegreesMinutesSecond=1]="DegreesMinutesSecond",Gt[Gt.Gradian=2]="Gradian",Gt[Gt.Radian=3]="Radian";var Kl=((is={})[is.PatternFill=0]="PatternFill",is[is.SolidFill=1]="SolidFill",is);(ns={})[ns.NonAssociative=0]="NonAssociative",ns[ns.Associative=1]="Associative";(Ee={})[Ee.Normal=0]="Normal",Ee[Ee.Outer=1]="Outer",Ee[Ee.Ignore=2]="Ignore";(Se={})[Se.UserDefined=0]="UserDefined",Se[Se.Predefined=1]="Predefined",Se[Se.Custom=2]="Custom";(rs={})[rs.NotAnnotated=0]="NotAnnotated",rs[rs.Annotated=1]="Annotated";(as={})[as.Solid=0]="Solid",as[as.Gradient=1]="Gradient";(os={})[os.TwoColor=0]="TwoColor",os[os.OneColor=1]="OneColor";var Ql=((xt={})[xt.Default=0]="Default",xt[xt.External=1]="External",xt[xt.Polyline=2]="Polyline",xt[xt.Derived=4]="Derived",xt[xt.Textbox=8]="Textbox",xt[xt.Outermost=16]="Outermost",xt),ni=((Ht={})[Ht.Line=1]="Line",Ht[Ht.Circular=2]="Circular",Ht[Ht.Elliptic=3]="Elliptic",Ht[Ht.Spline=4]="Spline",Ht),Jl=((G={})[G.Off=0]="Off",G[G.Solid=1]="Solid",G[G.Dashed=2]="Dashed",G[G.Dotted=3]="Dotted",G[G.ShotDash=4]="ShotDash",G[G.MediumDash=5]="MediumDash",G[G.LongDash=6]="LongDash",G[G.DoubleShortDash=7]="DoubleShortDash",G[G.DoubleMediumDash=8]="DoubleMediumDash",G[G.DoubleLongDash=9]="DoubleLongDash",G[G.DoubleMediumLongDash=10]="DoubleMediumLongDash",G[G.SparseDot=11]="SparseDot",G);Jl.Off;(Ae={})[Ae.Standard=-3]="Standard",Ae[Ae.ByLayer=-2]="ByLayer",Ae[Ae.ByBlock=-1]="ByBlock";(hs={})[hs.English=0]="English",hs[hs.Metric=1]="Metric";(k={})[k.PERSPECTIVE_MODE=1]="PERSPECTIVE_MODE",k[k.FRONT_CLIPPING=2]="FRONT_CLIPPING",k[k.BACK_CLIPPING=4]="BACK_CLIPPING",k[k.UCS_FOLLOW=8]="UCS_FOLLOW",k[k.FRONT_CLIP_NOT_AT_EYE=16]="FRONT_CLIP_NOT_AT_EYE",k[k.UCS_ICON_VISIBILITY=32]="UCS_ICON_VISIBILITY",k[k.UCS_ICON_AT_ORIGIN=64]="UCS_ICON_AT_ORIGIN",k[k.FAST_ZOOM=128]="FAST_ZOOM",k[k.SNAP_MODE=256]="SNAP_MODE",k[k.GRID_MODE=512]="GRID_MODE",k[k.ISOMETRIC_SNAP_STYLE=1024]="ISOMETRIC_SNAP_STYLE",k[k.HIDE_PLOT_MODE=2048]="HIDE_PLOT_MODE",k[k.K_ISO_PAIR_TOP=4096]="K_ISO_PAIR_TOP",k[k.K_ISO_PAIR_RIGHT=8192]="K_ISO_PAIR_RIGHT",k[k.VIEWPORT_ZOOM_LOCKING=16384]="VIEWPORT_ZOOM_LOCKING",k[k.UNUSED=32768]="UNUSED",k[k.NON_RECTANGULAR_CLIPPING=65536]="NON_RECTANGULAR_CLIPPING",k[k.VIEWPORT_OFF=131072]="VIEWPORT_OFF",k[k.GRID_BEYOND_DRAWING_LIMITS=262144]="GRID_BEYOND_DRAWING_LIMITS",k[k.ADAPTIVE_GRID_DISPLAY=524288]="ADAPTIVE_GRID_DISPLAY",k[k.SUBDIVISION_BELOW_SPACING=1048576]="SUBDIVISION_BELOW_SPACING",k[k.GRID_FOLLOWS_WORKPLANE=2097152]="GRID_FOLLOWS_WORKPLANE";(lt={})[lt.OPTIMIZED_2D=0]="OPTIMIZED_2D",lt[lt.WIREFRAME=1]="WIREFRAME",lt[lt.HIDDEN_LINE=2]="HIDDEN_LINE",lt[lt.FLAT_SHADED=3]="FLAT_SHADED",lt[lt.GOURAUD_SHADED=4]="GOURAUD_SHADED",lt[lt.FLAT_SHADED_WITH_WIREFRAME=5]="FLAT_SHADED_WITH_WIREFRAME",lt[lt.GOURAUD_SHADED_WITH_WIREFRAME=6]="GOURAUD_SHADED_WITH_WIREFRAME";(ls={})[ls.UCS_UNCHANGED=0]="UCS_UNCHANGED",ls[ls.HAS_OWN_UCS=1]="HAS_OWN_UCS";(ct={})[ct.NON_ORTHOGRAPHIC=0]="NON_ORTHOGRAPHIC",ct[ct.TOP=1]="TOP",ct[ct.BOTTOM=2]="BOTTOM",ct[ct.FRONT=3]="FRONT",ct[ct.BACK=4]="BACK",ct[ct.LEFT=5]="LEFT",ct[ct.RIGHT=6]="RIGHT";(cs={})[cs.ONE_DISTANT_LIGHT=0]="ONE_DISTANT_LIGHT",cs[cs.TWO_DISTANT_LIGHTS=1]="TWO_DISTANT_LIGHTS";(Ut={})[Ut.ByLayer=0]="ByLayer",Ut[Ut.ByBlock=1]="ByBlock",Ut[Ut.ByDictionaryDefault=2]="ByDictionaryDefault",Ut[Ut.ByObject=3]="ByObject";(D={})[D.NotAllowed=0]="NotAllowed",D[D.AllowErase=1]="AllowErase",D[D.AllowTransform=2]="AllowTransform",D[D.AllowChangeColor=4]="AllowChangeColor",D[D.AllowChangeLayer=8]="AllowChangeLayer",D[D.AllowChangeLinetype=16]="AllowChangeLinetype",D[D.AllowChangeLinetypeScale=32]="AllowChangeLinetypeScale",D[D.AllowChangeVisibility=64]="AllowChangeVisibility",D[D.AllowClone=128]="AllowClone",D[D.AllowChangeLineweight=256]="AllowChangeLineweight",D[D.AllowChangePlotStyleName=512]="AllowChangePlotStyleName",D[D.AllowAllExceptClone=895]="AllowAllExceptClone",D[D.AllowAll=1023]="AllowAll",D[D.DisableProxyWarning=1024]="DisableProxyWarning",D[D.R13FormatProxy=32768]="R13FormatProxy";function N(i,t,e){return i.code===t&&(e==null||i.value===e)}function me(i){let t={};i.rewind();let e=i.next(),s=e.code;if(t.x=e.value,(e=i.next()).code!==s+10)throw Error("Expected code for point value to be 20 but got "+e.code+".");return t.y=e.value,(e=i.next()).code!==s+20?i.rewind():t.z=e.value,t}let Xs=Symbol();function P(i,t){return(e,s,n)=>{let r=function(l,c=!1){return l.reduce((d,u)=>{u.pushContext&&d.push({});let g=d[d.length-1];for(let p of typeof u.code=="number"?[u.code]:u.code){let m=g[p]??(g[p]=[]);u.isMultiple&&m.length,m.push(u)}return d},[{}])}(i,s.debug),a=!1,o=r.length-1;for(;!N(e,0,"EOF");){let l=function(w,b,E){return w.find((I,T)=>{var A;return T>=E&&((A=I[b])==null?void 0:A.length)})}(r,e.code,o),c=l==null?void 0:l[e.code],d=c==null?void 0:c[c.length-1];if(!l||!d){s.rewind();break}d.isMultiple||l[e.code].pop();let{name:u,parser:g,isMultiple:p,isReducible:m}=d,y=g==null?void 0:g(e,s,n);if(y===Xs){s.rewind();break}if(u){let[w,b]=tc(n,u);p&&!m?(Object.prototype.hasOwnProperty.call(w,b)||(w[b]=[]),w[b].push(y)):w[b]=y}d.pushContext&&(o-=1),a=!0,e=s.next()}return t&&Object.setPrototypeOf(n,t),a}}function tc(i,t){let e=t.split(".");if(!e.length)throw Error("[parserGenerator::getObjectByPath] Invalid empty path");let s=i;for(let n=0;n<e.length-1;++n){let r=ln(e[n]),a=ln(e[n+1]);Object.prototype.hasOwnProperty.call(s,r)||(typeof a=="number"?s[r]=[]:s[r]={}),s=s[r]}return[s,ln(e[e.length-1])]}function ln(i){let t=Number.parseInt(i);return Number.isNaN(t)?i:t}function h({value:i}){return i}function _(i,t){return me(t)}function O({value:i}){return!!i}function ec({value:i}){return i.trim()}let sc=[{code:281,name:"isEntity",parser:O},{code:280,name:"wasProxy",parser:O},{code:91,name:"instanceCount",parser:h},{code:90,name:"proxyFlag",parser:h},{code:3,name:"appName",parser:h},{code:2,name:"cppClassName",parser:h},{code:1,name:"name",parser:h}],ic=P(sc),nc=[{code:0,name:"classes",isMultiple:!0,parser(i,t){if(i.value!=="CLASS")return Xs;i=t.next();let e={};return ic(i,t,e),e}}],rc=P(nc);(ds={})[ds.RayTrace=0]="RayTrace",ds[ds.ShadowMap=1]="ShadowMap";function zt(i,t,e){for(;N(i,102);){var s;let n=i.value;if(i=t.next(),!n.startsWith("{")){t.debug,function(a,o){for(;!N(a,102)&&!N(a,0,"EOF");)a=o.next()}(i,t),i=t.next();continue}let r=n.slice(1).trim();e.extensions??(e.extensions={}),(s=e.extensions)[r]??(s[r]=[]),function(a,o,l){for(;!N(a,102,"}")&&!N(a,0,"EOF");)l.push(a),a=o.next()}(i,t,e.extensions[r]),i=t.next()}t.rewind()}let ac=[{code:1001,name:"xdata",isMultiple:!0,parser:jo}],oc=new Set([1010,1011,1012,1013]);function jo(i,t){var n;if(!N(i,1001))throw Error("XData must starts with code 1001");let e={appName:i.value,value:[]};i=t.next();let s=[e.value];for(;!N(i,0,"EOF")&&!N(i,1001)&&i.code>=1e3;){let r=s[s.length-1];if(i.code===1002){i.value==="{"?s.push([]):(s.pop(),(n=s[s.length-1])==null||n.push(r)),i=t.next();continue}oc.has(i.code)?r.push(me(t)):r.push(i.value),i=t.next()}return t.rewind(),e}(Xt={})[Xt.CAST_AND_RECEIVE=0]="CAST_AND_RECEIVE",Xt[Xt.CAST=1]="CAST",Xt[Xt.RECEIVE=2]="RECEIVE",Xt[Xt.IGNORE=3]="IGNORE";let z=[...ac,{code:284,name:"shadowMode",parser:h},{code:390,name:"plotStyleHardId",parser:h},{code:380,name:"plotStyleType",parser:h},{code:440,name:"transparency",parser:h},{code:430,name:"colorName",parser:h},{code:420,name:"color",parser:h},{code:310,name:"proxyEntity",isMultiple:!0,isReducible:!0,parser:(i,t,e)=>(e.proxyEntity??"")+i.value},{code:[92,160],name:"proxyByte",parser:h},{code:60,name:"isVisible",parser:O},{code:48,name:"lineTypeScale",parser:h},{code:370,name:"lineweight",parser:h},{code:62,name:"colorIndex",parser:h},{code:347,name:"materialObjectHardId",parser:h},{code:6,name:"lineType",parser:h},{code:8,name:"layer",parser:h},{code:410,name:"layoutTabName",parser:h},{code:67,name:"isInPaperSpace",parser:O},{code:100},{code:330,name:"ownerBlockRecordSoftId",parser:h},{code:102,parser:zt},{code:102,parser:zt},{code:102,parser:zt},{code:5,name:"handle",parser:h}];function qi(i){return[{code:3,name:i,parser:(t,e,s)=>(s._code3text=(s._code3text??"")+t.value,s._code3text+(s._code1text??"")),isMultiple:!0,isReducible:!0},{code:1,name:i,parser:(t,e,s)=>(s._code1text=t.value,(s._code3text??"")+s._code1text)}]}function Wo(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let hc={extrusionDirection:{x:0,y:0,z:1}},lc=[{code:210,name:"extrusionDirection",parser:_},{code:51,name:"endAngle",parser:h},{code:50,name:"startAngle",parser:h},{code:100,name:"subclassMarker",parser:h},{code:40,name:"radius",parser:h},{code:10,name:"center",parser:_},{code:39,name:"thickness",parser:h},{code:100},...z];class Go{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Wo(this,"parser",P(lc,hc))}}Wo(Go,"ForEntityName","ARC");(Me={})[Me.BeforeText=0]="BeforeText",Me[Me.AboveText=1]="AboveText",Me[Me.None=2]="None";let qn=[{name:"DIMPOST",code:3},{name:"DIMAPOST",code:4,defaultValue:""},{name:"DIMBLK_OBSOLETE",code:5},{name:"DIMBLK1_OBSOLETE",code:6},{name:"DIMBLK2_OBSOLETE",code:7},{name:"DIMSCALE",code:40,defaultValue:1},{name:"DIMASZ",code:41,defaultValue:.25},{name:"DIMEXO",code:42,defaultValue:.625,defaultValueImperial:.0625},{name:"DIMDLI",code:43,defaultValue:3.75,defaultValueImperial:.38},{name:"DIMEXE",code:44,defaultValue:2.25,defaultValueImperial:.28},{name:"DIMRND",code:45,defaultValue:0},{name:"DIMDLE",code:46,defaultValue:0},{name:"DIMTP",code:47,defaultValue:0},{name:"DIMTM",code:48,defaultValue:0},{name:"DIMFXL",code:49,defaultValue:1},{name:"DIMJOGANG",code:50,defaultValue:45},{name:"DIMTFILL",code:69,defaultValue:0},{name:"DIMTFILLCLR",code:70,defaultValue:0},{name:"DIMTOL",code:71,defaultValue:0,defaultValueImperial:1},{name:"DIMLIM",code:72,defaultValue:0},{name:"DIMTIH",code:73,defaultValue:0,defaultValueImperial:1},{name:"DIMTOH",code:74,defaultValue:0,defaultValueImperial:1},{name:"DIMSE1",code:75,defaultValue:0},{name:"DIMSE2",code:76,defaultValue:0},{name:"DIMTAD",code:77,defaultValue:Zr.Above,defaultValueImperial:Zr.Center},{name:"DIMZIN",code:78,defaultValue:He.Trailing,defaultValueImperial:He.Feet},{name:"DIMAZIN",code:79,defaultValue:$l.None},{name:"DIMARCSYM",code:90,defaultValue:0},{name:"DIMTXT",code:140,defaultValue:2.5,defaultValueImperial:.28},{name:"DIMCEN",code:141,defaultValue:2.5,defaultValueImperial:.09},{name:"DIMTSZ",code:142,defaultValue:0},{name:"DIMALTF",code:143,defaultValue:25.4},{name:"DIMLFAC",code:144,defaultValue:1},{name:"DIMTVP",code:145,defaultValue:0},{name:"DIMTFAC",code:146,defaultValue:1},{name:"DIMGAP",code:147,defaultValue:.625,defaultValueImperial:.09},{name:"DIMALTRND",code:148,defaultValue:0},{name:"DIMALT",code:170,defaultValue:0},{name:"DIMALTD",code:171,defaultValue:3,defaultValueImperial:2},{name:"DIMTOFL",code:172,defaultValue:1,defaultValueImperial:0},{name:"DIMSAH",code:173,defaultValue:0},{name:"DIMTIX",code:174,defaultValue:0},{name:"DIMSOXD",code:175,defaultValue:0},{name:"DIMCLRD",code:176,defaultValue:0},{name:"DIMCLRE",code:177,defaultValue:0},{name:"DIMCLRT",code:178,defaultValue:0},{name:"DIMADEC",code:179,defaultValue:0},{name:"DIMUNIT",code:270},{name:"DIMDEC",code:271,defaultValue:2,defaultValueImperial:4},{name:"DIMTDEC",code:272,defaultValue:2,defaultValueImperial:4},{name:"DIMALTU",code:273,defaultValue:2},{name:"DIMALTTD",code:274,defaultValue:3,defaultValueImperial:2},{name:"DIMAUNIT",code:275,defaultValue:0},{name:"DIMFRAC",code:276,defaultValue:0},{name:"DIMLUNIT",code:277,defaultValue:2},{name:"DIMDSEP",code:278,defaultValue:44,defaultValueImperial:46},{name:"DIMTMOVE",code:279,defaultValue:0},{name:"DIMJUST",code:280,defaultValue:ql.Center},{name:"DIMSD1",code:281,defaultValue:0},{name:"DIMSD2",code:282,defaultValue:0},{name:"DIMTOLJ",code:283,defaultValue:Zl.Center},{name:"DIMTZIN",code:284,defaultValue:He.Trailing,defaultValueImperial:He.Feet},{name:"DIMALTZ",code:285,defaultValue:He.Trailing},{name:"DIMALTTZ",code:286,defaultValue:He.Trailing},{name:"DIMFIT",code:287},{name:"DIMUPT",code:288,defaultValue:0},{name:"DIMATFIT",code:289,defaultValue:3},{name:"DIMFXLON",code:290,defaultValue:0},{name:"DIMTXTDIRECTION",code:294,defaultValue:0},{name:"DIMTXSTY",code:340,defaultValue:"Standard"},{name:"DIMLDRBLK",code:341,defaultValue:""},{name:"DIMBLK",code:342,defaultValue:""},{name:"DIMBLK1",code:343,defaultValue:""},{name:"DIMBLK2",code:344,defaultValue:""},{name:"DIMLTYPE",code:345,defaultValue:""},{name:"DIMLTEX1",code:346,defaultValue:""},{name:"DIMLTEX2",code:347,defaultValue:""},{name:"DIMLWD",code:371,defaultValue:-2},{name:"DIMLWE",code:372,defaultValue:-2}],Ho=[{code:3,name:"styleName",parser:h},{code:210,name:"extrusionDirection",parser:_},{code:51,name:"ocsRotation",parser:h},{code:53,name:"textRotation",parser:h},{code:1,name:"text",parser:h},{code:42,name:"measurement",parser:h},{code:72,name:"textLineSpacingStyle",parser:h},{code:71,name:"attachmentPoint",parser:h},{code:70,name:"dimensionType",parser:h},{code:11,name:"textPoint",parser:_},{code:10,name:"definitionPoint",parser:_},{code:2,name:"name",parser:h},{code:280,name:"version",parser:h},{code:100}],cc=[{code:100},{code:52,name:"obliqueAngle",parser:h},{code:50,name:"rotationAngle",parser:h},{code:14,name:"subDefinitionPoint2",parser:_},{code:13,name:"subDefinitionPoint1",parser:_},{code:12,name:"insertionPoint",parser:_},{code:100,name:"subclassMarker",parser:h}],dc=[{code:16,name:"arcPoint",parser:_},{code:15,name:"centerPoint",parser:_},{code:14,name:"subDefinitionPoint2",parser:_},{code:13,name:"subDefinitionPoint1",parser:_},{code:100,name:"subclassMarker",parser:h}],uc=[{code:14,name:"subDefinitionPoint2",parser:_},{code:13,name:"subDefinitionPoint1",parser:_},{code:100,name:"subclassMarker",parser:h}],pc=[{code:40,name:"leaderLength",parser:h},{code:15,name:"subDefinitionPoint",parser:_},{code:100,name:"subclassMarker",parser:h}],gc=[{code:100,parser(i,t,e){let s=function(n){switch(n){case"AcDbAlignedDimension":return P(cc);case"AcDb3PointAngularDimension":case"AcDb2LineAngularDimension":return P(dc);case"AcDbOrdinateDimension":return P(uc);case"AcDbRadialDimension":case"AcDbDiametricDimension":return P(pc)}return null}(i.value);if(!s)return Xs;s(i,t,e)},pushContext:!0},...qn.map(i=>({...i,parser:h})),...Ho,...z];class li{parseEntity(t,e){let s={};return P(gc)(e,t,s),s}}(sn="ForEntityName")in li?Object.defineProperty(li,sn,{value:"DIMENSION",enumerable:!0,configurable:!0,writable:!0}):li[sn]="DIMENSION";let mc=[{code:73},{code:17,name:"leaderEnd",parser:_},{code:16,name:"leaderStart",parser:_},{code:71,name:"hasLeader",parser:O},{code:41,name:"endAngle",parser:h},{code:40,name:"startAngle",parser:h},{code:70,name:"isPartial",parser:O},{code:15,name:"centerPoint",parser:_},{code:14,name:"xline2Point",parser:_},{code:13,name:"xline1Point",parser:_},{code:100,name:"subclassMarker",parser:h,pushContext:!0},...qn.map(i=>({...i,parser:h})),...Ho,...z];class ci{parseEntity(t,e){let s={};return P(mc)(e,t,s),s}}(nn="ForEntityName")in ci?Object.defineProperty(ci,nn,{value:"ARC_DIMENSION",enumerable:!0,configurable:!0,writable:!0}):ci[nn]="ARC_DIMENSION";(kt={})[kt.NONE=0]="NONE",kt[kt.INVISIBLE=1]="INVISIBLE",kt[kt.CONSTANT=2]="CONSTANT",kt[kt.VERIFICATION_REQUIRED=4]="VERIFICATION_REQUIRED",kt[kt.PRESET=8]="PRESET";(us={})[us.MULTILINE=2]="MULTILINE",us[us.CONSTANT_MULTILINE=4]="CONSTANT_MULTILINE";(Te={})[Te.NONE=0]="NONE",Te[Te.MIRRORED_X=2]="MIRRORED_X",Te[Te.MIRRORED_Y=4]="MIRRORED_Y";var yc=((bt={})[bt.LEFT=0]="LEFT",bt[bt.CENTER=1]="CENTER",bt[bt.RIGHT=2]="RIGHT",bt[bt.ALIGNED=3]="ALIGNED",bt[bt.MIDDLE=4]="MIDDLE",bt[bt.FIT=5]="FIT",bt),_c=((Yt={})[Yt.BASELINE=0]="BASELINE",Yt[Yt.BOTTOM=1]="BOTTOM",Yt[Yt.MIDDLE=2]="MIDDLE",Yt[Yt.TOP=3]="TOP",Yt);function Uo(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let Xo={thickness:0,rotation:0,xScale:1,obliqueAngle:0,styleName:"STANDARD",generationFlag:0,halign:yc.LEFT,valign:_c.BASELINE,extrusionDirection:{x:0,y:0,z:1}},Yo=[{code:73,name:"valign",parser:h},{code:100},{code:210,name:"extrusionDirection",parser:_},{code:11,name:"endPoint",parser:_},{code:72,name:"valign",parser:h},{code:72,name:"halign",parser:h},{code:71,name:"generationFlag",parser:h},{code:7,name:"styleName",parser:h},{code:51,name:"obliqueAngle",parser:h},{code:41,name:"xScale",parser:h},{code:50,name:"rotation",parser:h},{code:1,name:"text",parser:h},{code:40,name:"textHeight",parser:h},{code:10,name:"startPoint",parser:_},{code:39,name:"thickness",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class $o{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Uo(this,"parser",P(Yo,Xo))}}function qo(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Uo($o,"ForEntityName","TEXT");let wc={...Xo},xc=[{code:2},{code:40,name:"annotationScale",parser:h},{code:10,name:"alignmentPoint",parser:_},{code:340,name:"secondaryAttributesHardIds",isMultiple:!0,parser:h},{code:70,name:"numberOfSecondaryAttributes",parser:h},{code:70,name:"isReallyLocked",parser:O},{code:70,name:"mtextFlag",parser:h},{code:280,name:"isDuplicatedRecord",parser:O},{code:100},{code:280,name:"isLocked",parser:O},{code:74,name:"valign",parser:h},{code:73},{code:70,name:"attributeFlag",parser:h},{code:2,name:"tag",parser:h},{code:3,name:"prompt",parser:h},{code:280},{code:100,name:"subclassMarker",parser:h},...Yo.slice(2)];class Zo{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){qo(this,"parser",P(xc,wc))}}function bc(i,t){let e={};for(let s of i){let n=t(s);n!=null&&(e[n]??(e[n]=[]),e[n].push(s))}return e}function*ji(i,t=1/0,e=1){for(let s=i;s!==t;s+=e)yield s}function Kr(i){return{x:i.x??0,y:i.y??0,z:i.z??0}}qo(Zo,"ForEntityName","ATTDEF");var fc=[0,16711680,16776960,65280,65535,255,16711935,16777215,8421504,12632256,16711680,16744319,13369344,13395558,10027008,10046540,8323072,8339263,4980736,4990502,16727808,16752511,13382400,13401958,10036736,10051404,8331008,8343359,4985600,4992806,16744192,16760703,13395456,13408614,10046464,10056268,8339200,8347455,4990464,4995366,16760576,16768895,13408512,13415014,10056192,10061132,8347392,8351551,4995328,4997670,16776960,16777087,13421568,13421670,10000384,10000460,8355584,8355647,5000192,5000230,12582656,14679935,10079232,11717734,7510016,8755276,6258432,7307071,3755008,4344870,8388352,12582783,6736896,10079334,5019648,7510092,4161280,6258495,2509824,3755046,4194048,10485631,3394560,8375398,2529280,6264908,2064128,5209919,1264640,3099686,65280,8388479,52224,6736998,38912,5019724,32512,4161343,19456,2509862,65343,8388511,52275,6737023,38950,5019743,32543,4161359,19475,2509871,65407,8388543,52326,6737049,38988,5019762,32575,4161375,19494,2509881,65471,8388575,52377,6737074,39026,5019781,32607,4161391,19513,2509890,65535,8388607,52428,6737100,39064,5019800,32639,4161407,19532,2509900,49151,8380415,39372,6730444,29336,5014936,24447,4157311,14668,2507340,32767,8372223,26316,6724044,19608,5010072,16255,4153215,9804,2505036,16383,8364031,13260,6717388,9880,5005208,8063,4149119,4940,2502476,255,8355839,204,6710988,152,5000344,127,4145023,76,2500172,4129023,10452991,3342540,8349388,2490520,6245528,2031743,5193599,1245260,3089996,8323327,12550143,6684876,10053324,4980888,7490712,4128895,6242175,2490444,3745356,12517631,14647295,10027212,11691724,7471256,8735896,6226047,7290751,3735628,4335180,16711935,16744447,13369548,13395660,9961624,9981080,8323199,8339327,4980812,4990540,16711871,16744415,13369497,13395634,9961586,9981061,8323167,8339311,4980793,4990530,16711807,16744383,13369446,13395609,9961548,9981042,8323135,8339295,4980774,4990521,16711743,16744351,13369395,13395583,9961510,9981023,8323103,8339279,4980755,4990511,3355443,5987163,8684676,11382189,14079702,16777215];function Ic(i){return fc[i]}function Pc(i){i.rewind();let t=i.next();if(t.code!==101)throw Error("Bad call for skipEmbeddedObject()");do t=i.next();while(t.code!==0);i.rewind()}function Ec(i,t,e){if(N(t,102))return zt(t,e,i),!0;switch(t.code){case 0:i.type=t.value;break;case 5:i.handle=t.value;break;case 330:i.ownerBlockRecordSoftId=t.value;break;case 67:i.isInPaperSpace=!!t.value;break;case 8:i.layer=t.value;break;case 6:i.lineType=t.value;break;case 347:i.materialObjectHardId=t.value;break;case 62:i.colorIndex=t.value,i.color=Ic(Math.abs(t.value));break;case 370:i.lineweight=t.value;break;case 48:i.lineTypeScale=t.value;break;case 60:i.isVisible=!!t.value;break;case 92:i.proxyByte=t.value;break;case 310:i.proxyEntity=t.value;break;case 100:break;case 420:i.color=t.value;break;case 430:i.transparency=t.value;break;case 390:i.plotStyleHardId=t.value;break;case 284:i.shadowMode=t.value;break;case 1001:(i.xdata??(i.xdata=[])).push(jo(t,e));break;default:return!1}return!0}function Ko(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let Sc={textStyle:"STANDARD",extrusionDirection:{x:0,y:0,z:1},rotation:0},di=[{code:46,name:"annotationHeight",parser:h},{code:101,parser(i,t){Pc(t)}},{code:50,name:"columnHeight",parser:h},{code:49,name:"columnGutter",parser:h},{code:48,name:"columnWidth",parser:h},{code:79,name:"columnAutoHeight",parser:h},{code:78,name:"columnFlowReversed",parser:h},{code:76,name:"columnCount",parser:h},{code:75,name:"columnType",parser:h},{code:441,name:"backgroundFillTransparency",parser:h},{code:63,name:"backgroundFillColor",parser:h},{code:45,name:"fillBoxScale",parser:h},{code:[...ji(430,440)],name:"backgroundColor",parser:h},{code:[...ji(420,430)],name:"backgroundColor",parser:h},{code:90,name:"backgroundFill",parser:h},{code:44,name:"lineSpacing",parser:h},{code:73,name:"lineSpacingStyle",parser:h},{code:50,name:"rotation",parser:h},{code:43},{code:42},{code:11,name:"direction",parser:_},{code:210,name:"extrusionDirection",parser:_},{code:7,name:"styleName",parser:h},...qi("text"),{code:72,name:"drawingDirection",parser:h},{code:71,name:"attachmentPoint",parser:h},{code:41,name:"width",parser:h},{code:40,name:"height",parser:h},{code:10,name:"insertionPoint",parser:_},{code:100,name:"subclassMarker",parser:h},...z];class Qo{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Ko(this,"parser",P(di,Sc))}}function Jo(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Ko(Qo,"ForEntityName","MTEXT");let Ac={thickness:0,rotation:0,scale:1,obliqueAngle:0,textStyle:"STANDARD",textGenerationFlag:0,horizontalJustification:0,verticalJustification:0,extrusionDirection:{x:0,y:0,z:1}},Mc=[...di.slice(di.findIndex(({name:i})=>i==="columnType"),di.findIndex(({name:i})=>i==="subclassMarker")+1),{code:100},{code:0,parser(i){if(!N(i,0,"MTEXT"))return Xs}},{code:2,name:"definitionTag",parser:h},{code:40,name:"annotationScale",parser:h},{code:10,name:"alignmentPoint",parser:_},{code:340,name:"secondaryAttributesHardId",parser:h},{code:70,name:"numberOfSecondaryAttributes",parser:h},{code:70,name:"isReallyLocked",parser:O},{code:70,name:"mtextFlag",parser:h},{code:280,name:"isDuplicatedEntriesKeep",parser:O},{code:100},{code:280,name:"lockPositionFlag",parser:O},{code:210,name:"extrusionDirection",parser:_},{code:11,name:"alignmentPoint",parser:_},{code:74,name:"verticalJustification",parser:h},{code:72,name:"horizontalJustification",parser:h},{code:71,name:"textGenerationFlag",parser:h},{code:7,name:"textStyle",parser:h},{code:51,name:"obliqueAngle",parser:h},{code:41,name:"scale",parser:h},{code:50,name:"rotation",parser:h},{code:73},{code:70,name:"attributeFlag",parser:h},{code:2,name:"tag",parser:h},{code:280},{code:100,name:"subclassMarker",parser:h},{code:1,name:"text",parser:h},{code:40,name:"textHeight",parser:h},{code:10,name:"startPoint",parser:_},{code:39,name:"thickness",parser:h},{code:100},...z];class th{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Jo(this,"parser",P(Mc,Ac))}}function eh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Jo(th,"ForEntityName","ATTRIB");let Tc=[...qi("data"),{code:70,name:"version",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class sh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){eh(this,"parser",P(Tc))}}function ih(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}eh(sh,"ForEntityName","BODY");let vc={thickness:0,extrusionDirection:{x:0,y:0,z:1}},kc=[{code:210,name:"extrusionDirection",parser:_},{code:40,name:"radius",parser:h},{code:10,name:"center",parser:_},{code:39,name:"thickness",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class nh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){ih(this,"parser",P(kc,vc))}}function rh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}ih(nh,"ForEntityName","CIRCLE");let Lc={extrusionDirection:{x:0,y:0,z:1}},Oc=[{code:42,name:"endAngle",parser:h},{code:41,name:"startAngle",parser:h},{code:40,name:"axisRatio",parser:h},{code:210,name:"extrusionDirection",parser:_},{code:11,name:"majorAxisEndPoint",parser:_},{code:10,name:"center",parser:_},{code:100,name:"subclassMarker",parser:h},...z];class ah{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){rh(this,"parser",P(Oc,Lc))}}function oh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}rh(ah,"ForEntityName","ELLIPSE");let Nc=[{code:13,name:"vertices.3",parser:_},{code:12,name:"vertices.2",parser:_},{code:11,name:"vertices.1",parser:_},{code:10,name:"vertices.0",parser:_},{code:100,name:"subclassMarker",parser:h},...z];class hh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){oh(this,"parser",P(Nc))}}oh(hh,"ForEntityName","3DFACE");($t={})[$t.First=1]="First",$t[$t.Second=2]="Second",$t[$t.Third=4]="Third",$t[$t.Fourth=8]="Fourth";let lh=[{code:330,name:"sourceBoundaryObjects",parser:h,isMultiple:!0},{code:97,name:"numberOfSourceBoundaryObjects",parser:h}],Cc=[{code:11,name:"end",parser:_},{code:10,name:"start",parser:_}],Bc=[{code:73,name:"isCCW",parser:O},{code:51,name:"endAngle",parser:h},{code:50,name:"startAngle",parser:h},{code:40,name:"radius",parser:h},{code:10,name:"center",parser:_}],Fc=[{code:73,name:"isCCW",parser:O},{code:51,name:"endAngle",parser:h},{code:50,name:"startAngle",parser:h},{code:40,name:"lengthOfMinorAxis",parser:h},{code:11,name:"end",parser:_},{code:10,name:"center",parser:_}],Rc=[{code:13,name:"endTangent",parser:_},{code:12,name:"startTangent",parser:_},{code:11,name:"fitDatum",isMultiple:!0,parser:_},{code:97,name:"numberOfFitData",parser:h},{code:10,name:"controlPoints",isMultiple:!0,parser(i,t){let e={...me(t),weight:1};return(i=t.next()).code===42?e.weight=i.value:t.rewind(),e}},{code:40,name:"knots",isMultiple:!0,parser:h},{code:96,name:"numberOfControlPoints",parser:h},{code:95,name:"numberOfKnots",parser:h},{code:74,name:"isPeriodic",parser:O},{code:73,name:"splineFlag",parser:h},{code:94,name:"degree",parser:h}],zc={[ni.Line]:Cc,[ni.Circular]:Bc,[ni.Elliptic]:Fc,[ni.Spline]:Rc},Vc=[...lh,{code:72,name:"edges",parser(i,t){let e={type:i.value},s=P(zc[e.type]);if(!s)throw Error(`Invalid edge type ${e.type}`);return s(i=t.next(),t,e),e},isMultiple:!0},{code:93,name:"numberOfEdges",parser:h}],Dc=[...lh,{code:10,name:"vertices",parser(i,t){let e={...me(t),bulge:0};return(i=t.next()).code===42?e.bulge=i.value:t.rewind(),e},isMultiple:!0},{code:93,name:"numberOfVertices",parser:h},{code:73,name:"isClosed",parser:O},{code:72,name:"hasBulge",parser:O}];function jc(i,t){let e={boundaryPathTypeFlag:i.value},s=e.boundaryPathTypeFlag&Ql.Polyline;return i=t.next(),s?P(Dc)(i,t,e):P(Vc)(i,t,e),e}let Wc=[{code:49,name:"dashLengths",parser:h,isMultiple:!0},{code:79,name:"numberOfDashLengths",parser:h},{code:45,name:"offset",parser:Qr},{code:43,name:"base",parser:Qr},{code:53,name:"angle",parser:h}];function Qr(i,t){let e=i.code+1,s={x:i.value,y:1};return(i=t.next()).code===e?s.y=i.value:t.rewind(),s}function Gc(i,t){let e={};return P(Wc)(i,t,e),e}function ch(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let Hc={extrusionDirection:{x:0,y:0,z:1},gradientRotation:0,colorTint:0},Uc=[{code:470},{code:463},{code:462,name:"colorTint",parser:h},{code:461,name:"gradientDefinition",parser:h},{code:460,name:"gradientRotation",parser:h},{code:453,name:"numberOfColors",parser:h},{code:452,name:"gradientColorFlag",parser:h},{code:451},{code:450,name:"gradientFlag",parser:h},{code:10,name:"seedPoints",parser:_,isMultiple:!0},{code:99},{code:11,name:"offsetVector",parser:_},{code:98,name:"numberOfSeedPoints",parser:h},{code:47,name:"pixelSize",parser:h},{code:53,name:"definitionLines",parser:Gc,isMultiple:!0},{code:78,name:"numberOfDefinitionLines",parser:h},{code:77,name:"isDouble",parser:O},{code:73,name:"isAnnotated",parser:O},{code:41,name:"patternScale",parser:h},{code:52,name:"patternAngle",parser:h},{code:76,name:"patternType",parser:h},{code:75,name:"hatchStyle",parser:h},{code:92,name:"boundaryPaths",parser:jc,isMultiple:!0},{code:91,name:"numberOfBoundaryPaths",parser:h},{code:71,name:"associativity",parser:h},{code:63,name:"patternFillColor",parser:h},{code:70,name:"solidFill",parser:h},{code:2,name:"patternName",parser:h},{code:210,name:"extrusionDirection",parser:_},{code:10,name:"elevationPoint",parser:_},{code:100,name:"subclassMarker",parser:h,pushContext:!0},...z];class dh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){ch(this,"parser",P(Uc,Hc))}}function uh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}ch(dh,"ForEntityName","HATCH");let Xc={brightness:50,contrast:50,fade:0,clippingBoundaryPath:[]},Yc=[{code:290,name:"clipMode",parser:h},{code:14,name:"clippingBoundaryPath",isMultiple:!0,parser:_},{code:91,name:"countBoundaryPoints",parser:h},{code:71,name:"clippingBoundaryType",parser:h},{code:360,name:"imageDefReactorHandle",parser:h},{code:283,name:"fade",parser:h},{code:282,name:"contrast",parser:h},{code:281,name:"brightness",parser:h},{code:280,name:"isClipped",parser:O},{code:70,name:"flags",parser:h},{code:340,name:"imageDefHandle",parser:h},{code:13,name:"imageSize",parser:_},{code:12,name:"vPixel",parser:_},{code:11,name:"uPixel",parser:_},{code:10,name:"position",parser:_},{code:90,name:"version",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class ph{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){uh(this,"parser",P(Yc,Xc))}}uh(ph,"ForEntityName","IMAGE");(qt={})[qt.ShowImage=1]="ShowImage",qt[qt.ShowImageWhenNotAlignedWithScreen=2]="ShowImageWhenNotAlignedWithScreen",qt[qt.UseClippingBoundary=4]="UseClippingBoundary",qt[qt.TransparencyIsOn=8]="TransparencyIsOn";(ps={})[ps.Rectangular=1]="Rectangular",ps[ps.Polygonal=2]="Polygonal";(gs={})[gs.Outside=0]="Outside",gs[gs.Inside=1]="Inside";function gh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let $c={xScale:1,yScale:1,zScale:1,rotation:0,columnCount:0,rowCount:0,columnSpacing:0,rowSpacing:0,extrusionDirection:{x:0,y:0,z:1}},qc=[{code:210,name:"extrusionDirection",parser:_},{code:45,name:"rowSpacing",parser:h},{code:44,name:"columnSpacing",parser:h},{code:71,name:"rowCount",parser:h},{code:70,name:"columnCount",parser:h},{code:50,name:"rotation",parser:h},{code:43,name:"zScale",parser:h},{code:42,name:"yScale",parser:h},{code:41,name:"xScale",parser:h},{code:10,name:"insertionPoint",parser:_},{code:2,name:"name",parser:h},{code:66,name:"isVariableAttributes",parser:O},{code:100,name:"subclassMarker",parser:h},...z];class mh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){gh(this,"parser",P(qc,$c))}}function yh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}gh(mh,"ForEntityName","INSERT");let Zc={isArrowheadEnabled:!0},Kc=[{code:213,name:"offsetFromAnnotation",parser:_},{code:212,name:"offsetFromBlock",parser:_},{code:211,name:"horizontalDirection",parser:_},{code:210,name:"normal",parser:_},{code:340,name:"associatedAnnotation",parser:h},{code:77,name:"byBlockColor",parser:h},{code:10,name:"vertices",parser:_,isMultiple:!0},{code:76,name:"numberOfVertices",parser:h},{code:41,name:"textWidth",parser:h},{code:40,name:"textHeight",parser:h},{code:75,name:"isHooklineExists",parser:O},{code:74,name:"isHooklineSameDirection",parser:O},{code:73,name:"leaderCreationFlag",parser:h},{code:72,name:"isSpline",parser:O},{code:71,name:"isArrowheadEnabled",parser:O},{code:3,name:"styleName",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class _h{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){yh(this,"parser",P(Kc,Zc))}}yh(_h,"ForEntityName","LEADER");(Zt={})[Zt.TextAnnotation=0]="TextAnnotation",Zt[Zt.ToleranceAnnotation=1]="ToleranceAnnotation",Zt[Zt.BlockReferenceAnnotation=2]="BlockReferenceAnnotation",Zt[Zt.NoAnnotation=3]="NoAnnotation";function wh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let Qc={thickness:0,extrusionDirection:{x:0,y:0,z:1}},Jc=[{code:210,name:"extrusionDirection",parser:_},{code:11,name:"endPoint",parser:_},{code:10,name:"startPoint",parser:_},{code:39,name:"thickness",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class xh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){wh(this,"parser",P(Jc,Qc))}}function bh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}wh(xh,"ForEntityName","LINE");let td=[{code:280,name:"shadowMapSoftness",parser:h},{code:91,name:"shadowMapSize",parser:h},{code:73,name:"shadowType",parser:h},{code:293,name:"isShadowCast",parser:O},{code:51,name:"falloffAngle",parser:h},{code:50,name:"hotspotAngle",parser:h},{code:42,name:"limitEnd",parser:h},{code:41,name:"limitStart",parser:h},{code:292,name:"isAttenuationLimited",parser:O},{code:72,name:"attenuationType",parser:h},{code:11,name:"target",parser:_},{code:10,name:"position",parser:_},{code:40,name:"intensity",parser:h},{code:291,name:"isPlotGlyph",parser:O},{code:290,name:"isOn",parser:O},{code:421,name:"lightColorInstance",parser:h},{code:63,name:"lightColorIndex",parser:h},{code:70,name:"lightType",parser:h},{code:1,name:"name",parser:h},{code:90,name:"version",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class fh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){bh(this,"parser",P(td))}}bh(fh,"ForEntityName","LIGHT");(ve={})[ve.Distant=1]="Distant",ve[ve.Point=2]="Point",ve[ve.Spot=3]="Spot";(ke={})[ke.None=0]="None",ke[ke.InverseLinear=1]="InverseLinear",ke[ke.InverseSquare=2]="InverseSquare";let ed={flag:0,elevation:0,thickness:0,extrusionDirection:{x:0,y:0,z:1},vertices:[]},sd={bulge:0},id=[{code:42,name:"bulge",parser:h},{code:41,name:"endWidth",parser:h},{code:40,name:"startWidth",parser:h},{code:91,name:"id",parser:h},{code:20,name:"y",parser:h},{code:10,name:"x",parser:h}],nd=[{code:210,name:"extrusionDirection",parser:_},{code:10,name:"vertices",isMultiple:!0,parser(i,t){let e={};return P(id,sd)(i,t,e),e}},{code:39,name:"thickness",parser:h},{code:38,name:"elevation",parser:h},{code:43,name:"constantWidth",parser:h},{code:70,name:"flag",parser:h},{code:90,name:"numberOfVertices",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class ui{parseEntity(t,e){let s={};return P(nd,ed)(e,t,s),s}}(rn="ForEntityName")in ui?Object.defineProperty(ui,rn,{value:"LWPOLYLINE",enumerable:!0,configurable:!0,writable:!0}):ui[rn]="LWPOLYLINE";(ms={})[ms.IS_CLOSED=1]="IS_CLOSED",ms[ms.PLINE_GEN=128]="PLINE_GEN";function Ih(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let rd=[{code:90,name:"overridenSubEntityCount",parser:h},{code:140,name:"edgeCreaseWeights",parser:h,isMultiple:!0},{code:95,name:"edgeCreaseCount",parser:h},{code:94,parser(i,t,e){e.edgeCount=i.value,e.edgeIndices=[];for(let s=0;s<e.edgeCount;++s){let n=[];i=t.next(),n[0]=i.value,i=t.next(),n[1]=i.value,e.edgeIndices.push(n)}}},{code:93,parser(i,t,e){e.totalFaceIndices=i.value,e.faceIndices=[];let s=[];for(let r=0;r<e.totalFaceIndices&&!N(i,0);++r)i=t.next(),s.push(i.value);let n=0;for(;n<s.length;){let r=s[n++],a=[];for(let o=0;o<r;++o)a.push(s[n++]);e.faceIndices.push(a)}}},{code:10,name:"vertices",parser:_,isMultiple:!0},{code:92,name:"verticesCount",parser:h},{code:91,name:"subdivisionLevel",parser:h},{code:40,name:"blendCrease",parser:h},{code:72,name:"isBlendCreased",parser:O},{code:71,name:"version",parser:h},{code:100,name:"subclassMarker",parser:ec,pushContext:!0},...z];class Ph{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Ih(this,"parser",P(rd))}}function Eh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Ih(Ph,"ForEntityName","MESH");let ad=[{code:42,name:"fillParameters",parser:h,isMultiple:!0},{code:75,name:"fillCount",parser:h},{code:41,name:"parameters",parser:h,isMultiple:!0},{code:74,name:"parameterCount",parser:h}],od=[{code:[74,41,75,42],name:"elements",parser(i,t){let e=P(ad),s={};return e(i,t,s),s},isMultiple:!0},{code:13,name:"miterDirection",parser:_},{code:12,name:"direction",parser:_},{code:11,name:"position",parser:_}],hd=[{code:[11,12,13],name:"segments",parser(i,t){let e=P(od),s={};return e(i,t,s),s},isMultiple:!0},{code:210,name:"extrusionDirection",parser:_},{code:10,name:"startPosition",parser:_},{code:73,name:"styleCount",parser:h},{code:72,name:"vertexCount",parser:h},{code:71,name:"flags",parser:h},{code:70,name:"justification",parser:h},{code:40,name:"scale",parser:h},{code:340,name:"styleObjectHandle",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h,pushContext:!0},...z];class Sh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Eh(this,"parser",P(hd))}}Eh(Sh,"ForEntityName","MLINE");(Le={})[Le.Top=0]="Top",Le[Le.Zero=1]="Zero",Le[Le.Bottom=2]="Bottom";(Kt={})[Kt.HasVertex=1]="HasVertex",Kt[Kt.Closed=2]="Closed",Kt[Kt.SuppressStartCaps=4]="SuppressStartCaps",Kt[Kt.SuppressEndCaps=8]="SuppressEndCaps";(Oe={})[Oe.LEFT_TO_RIGHT=1]="LEFT_TO_RIGHT",Oe[Oe.TOP_TO_BOTTOM=3]="TOP_TO_BOTTOM",Oe[Oe.BY_STYLE=5]="BY_STYLE";function Ah(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let ld={},cd=[{code:170,name:"multileaderType",parser:h},{code:291,name:"doglegEnabled",parser:O},{code:40,name:"doglegLength",parser:h},{code:172,name:"contentType",parser:h},{code:3,name:"textContent",parser:h},{code:12,name:"textAnchor",parser:_},{code:344,name:"blockHandle",parser:h},{code:15,name:"blockPosition",parser:_},{code:302,name:"leaderSections",parser:function(i,t,e){let s,n={leaderLines:[]};for(;t.hasNext()&&(s=t.next()).code!==303;)switch(s.code){case 10:n.landingPoint=_(s.value,t);break;case 11:n.doglegVector=_(s.value,t);break;case 40:n.doglegLength=s.value;break;case 304:n.leaderLines.push(function(r){let a,o={vertices:[]};for(;r.hasNext()&&(a=r.next()).code!==305;)a.code===10&&o.vertices.push(_(a.value,r));return o}(t))}return n},isMultiple:!0},...z];class Mh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Ah(this,"parser",P(cd,ld))}}function Th(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Ah(Mh,"ForEntityName","MULTILEADER");let dd={thickness:0,extrusionDirection:{x:0,y:0,z:1},angle:0},ud=[{code:50,name:"angle",parser:h},{code:210,name:"extrusionDirection",parser:_},{code:39,name:"thickness",parser:h},{code:10,name:"position",parser:_},{code:100,name:"subclassMarker",parser:h},...z];class vh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Th(this,"parser",P(ud,dd))}}function kh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Th(vh,"ForEntityName","POINT");let pd={startWidth:0,endWidth:0,bulge:0},gd=[{code:91,name:"id",parser:h},{code:[...ji(71,75)],name:"faces",isMultiple:!0,parser:h},{code:50,name:"tangentDirection",parser:h},{code:70,name:"flag",parser:h},{code:42,name:"bulge",parser:h},{code:41,name:"endWidth",parser:h},{code:40,name:"startWidth",parser:h},{code:30,name:"z",parser:h},{code:20,name:"y",parser:h},{code:10,name:"x",parser:h},{code:100,name:"subclassMarker",parser:h},{code:100},...z];class Zn{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){kh(this,"parser",P(gd,pd))}}function Lh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}kh(Zn,"ForEntityName","VERTEX");let md={thickness:0,flag:0,startWidth:0,endWidth:0,meshMVertexCount:0,meshNVertexCount:0,surfaceMDensity:0,surfaceNDensity:0,smoothType:0,extrusionDirection:{x:0,y:0,z:1},vertices:[]},yd=[{code:0,name:"vertices",isMultiple:!0,parser:(i,t)=>N(i,0,"VERTEX")?(i=t.next(),new Zn().parseEntity(t,i)):Xs},{code:210,name:"extrusionDirection",parser:_},{code:75,name:"smoothType",parser:h},{code:74,name:"surfaceNDensity",parser:h},{code:73,name:"surfaceMDensity",parser:h},{code:72,name:"meshNVertexCount",parser:h},{code:71,name:"meshMVertexCount",parser:h},{code:41,name:"endWidth",parser:h},{code:40,name:"startWidth",parser:h},{code:70,name:"flag",parser:h},{code:39,name:"thickness",parser:h},{code:30,name:"elevation",parser:h},{code:20},{code:10},{code:66},{code:100,name:"subclassMarker",parser:h},...z];class Oh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Lh(this,"parser",P(yd,md))}}Lh(Oh,"ForEntityName","POLYLINE");(it={})[it.CLOSED_POLYLINE=1]="CLOSED_POLYLINE",it[it.CURVE_FIT=2]="CURVE_FIT",it[it.SPLINE_FIT=4]="SPLINE_FIT",it[it.POLYLINE_3D=8]="POLYLINE_3D",it[it.POLYGON_3D=16]="POLYGON_3D",it[it.CLOSED_POLYGON=32]="CLOSED_POLYGON",it[it.POLYFACE=64]="POLYFACE",it[it.CONTINUOUS=128]="CONTINUOUS";var ri=((Qt={})[Qt.NONE=0]="NONE",Qt[Qt.QUADRATIC=5]="QUADRATIC",Qt[Qt.CUBIC=6]="CUBIC",Qt[Qt.BEZIER=8]="BEZIER",Qt);function Nh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let _d=[{code:11,name:"direction",parser:_},{code:10,name:"position",parser:_},{code:100,name:"subclassMarker",parser:h},...z];class Ch{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Nh(this,"parser",P(_d))}}function Bh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Nh(Ch,"ForEntityName","RAY");let wd=[...qi("data"),{code:70,name:"version",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class Fh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Bh(this,"parser",P(wd))}}function Rh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Bh(Fh,"ForEntityName","REGION");let xd={vertices:[],backLineVertices:[]},bd=[{code:360,name:"geometrySettingHardId",parser:h},{code:12,name:"backLineVertices",isMultiple:!0,parser:_},{code:93,name:"numberOfBackLineVertices",parser:h},{code:11,name:"vertices",isMultiple:!0,parser:_},{code:92,name:"verticesCount",parser:h},{code:[63,411],name:"indicatorColor",parser:h},{code:70,name:"indicatorTransparency",parser:h},{code:41,name:"bottomHeight",parser:h},{code:40,name:"topHeight",parser:h},{code:10,name:"verticalDirection",parser:_},{code:1,name:"name",parser:h},{code:91,name:"flag",parser:h},{code:90,name:"state",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class zh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Rh(this,"parser",P(bd,xd))}}function Vh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Rh(zh,"ForEntityName","SECTION");let fd={points:[],thickness:0,extrusionDirection:{x:0,y:0,z:1}},Id=[{code:210,name:"extrusionDirection",parser:_},{code:39,name:"thickness",parser:h},{code:[...ji(10,14)],name:"points",isMultiple:!0,parser:_},{code:100,name:"subclassMarker",parser:h},...z];class Dh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Vh(this,"parser",P(Id,fd))}}function jh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}Vh(Dh,"ForEntityName","SOLID");let Pd=[{code:350,name:"historyObjectSoftId",parser:h},{code:100,name:"subclassMarker",parser:h},...qi("data"),{code:70,name:"version",parser:h},{code:100},...z];class Wh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){jh(this,"parser",P(Pd))}}function Gh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}jh(Wh,"ForEntityName","3DSOLID");let Ed={knotTolerance:1e-6,controlTolerance:1e-6,fitTolerance:1e-9,knotValues:[],controlPoints:[],fitPoints:[]},Sd=[{code:11,name:"fitPoints",isMultiple:!0,parser:_},{code:10,name:"controlPoints",isMultiple:!0,parser:_},{code:41,name:"weights",isMultiple:!0,parser:h},{code:40,name:"knots",isMultiple:!0,parser:h},{code:13,name:"endTangent",parser:_},{code:12,name:"startTangent",parser:_},{code:44,name:"fitTolerance",parser:h},{code:43,name:"controlTolerance",parser:h},{code:42,name:"knotTolerance",parser:h},{code:74,name:"numberOfFitPoints",parser:h},{code:73,name:"numberOfControlPoints",parser:h},{code:72,name:"numberOfKnots",parser:h},{code:71,name:"degree",parser:h},{code:70,name:"flag",parser:h},{code:210,name:"normal",parser:_},{code:100,name:"subclassMarker",parser:h},...z];class Hh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Gh(this,"parser",P(Sd,Ed))}}Gh(Hh,"ForEntityName","SPLINE");(ft={})[ft.NONE=0]="NONE",ft[ft.CLOSED=1]="CLOSED",ft[ft.PERIODIC=2]="PERIODIC",ft[ft.RATIONAL=4]="RATIONAL",ft[ft.PLANAR=8]="PLANAR",ft[ft.LINEAR=16]="LINEAR";function Uh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let Ad=[{code:280,name:"shadowMapSoftness",parser:h},{code:71,name:"shadowMapSize",parser:h},{code:70,name:"shadowType",parser:h},{code:292,name:"isSummerTime",parser:O},{code:92,name:"time",parser:h},{code:91,name:"julianDay",parser:h},{code:291,name:"hasShadow",parser:O},{code:40,name:"intensity",parser:h},{code:421,name:"lightColorInstance",parser:h},{code:63,name:"lightColorIndex",parser:h},{code:290,name:"isOn",parser:O},{code:90,name:"version",parser:h},{code:100,name:"subclassMarker",parser:h,pushContext:!0},...z.filter(i=>i.code!==100)];class Xh{parseEntity(t,e){let s={layer:""};return this.parser(e,t,s),s}constructor(){Uh(this,"parser",P(Ad))}}Uh(Xh,"ForEntityName","SUN");class pi{parseEntity(t,e){let s={};for(;!t.isEOF();){if(e.code===0){t.rewind();break}switch(e.code){case 100:s.subclassMarker=e.value,e=t.next();break;case 2:s.name=e.value,e=t.next();break;case 5:s.handle=e.value,e=t.next();break;case 10:s.startPoint=Kr(me(t)),e=t.lastReadGroup;break;case 11:s.directionVector=Kr(me(t)),e=t.lastReadGroup;break;case 90:s.tableValue=e.value,e=t.next();break;case 91:s.rowCount=e.value,e=t.next();break;case 92:s.columnCount=e.value,e=t.next();break;case 93:s.overrideFlag=e.value,e=t.next();break;case 94:s.borderColorOverrideFlag=e.value,e=t.next();break;case 95:s.borderLineWeightOverrideFlag=e.value,e=t.next();break;case 96:s.borderVisibilityOverrideFlag=e.value,e=t.next();break;case 141:s.rowHeightArr??(s.rowHeightArr=[]),s.rowHeightArr.push(e.value),e=t.next();break;case 142:s.columnWidthArr??(s.columnWidthArr=[]),s.columnWidthArr.push(e.value),e=t.next();break;case 280:s.version=e.value,e=t.next();break;case 310:s.bmpPreview??(s.bmpPreview=""),s.bmpPreview+=e.value,e=t.next();break;case 330:s.ownerDictionaryId=e.value,e=t.next();break;case 342:s.tableStyleId=e.value,e=t.next();break;case 343:s.blockRecordHandle=e.value,e=t.next();break;case 170:s.attachmentPoint=e.value,e=t.next();break;case 171:s.cells??(s.cells=[]),s.cells.push(function(n,r){let a=!1,o=!1,l={};for(;!n.isEOF()&&r.code!==0&&!o;)switch(r.code){case 171:if(a){o=!0;continue}l.cellType=r.value,a=!0,r=n.next();break;case 172:l.flagValue=r.value,r=n.next();break;case 173:l.mergedValue=r.value,r=n.next();break;case 174:l.autoFit=r.value,r=n.next();break;case 175:l.borderWidth=r.value,r=n.next();break;case 176:l.borderHeight=r.value,r=n.next();break;case 91:l.overrideFlag=r.value,r=n.next();break;case 178:l.virtualEdgeFlag=r.value,r=n.next();break;case 145:l.rotation=r.value,r=n.next();break;case 345:l.fieldObjetId=r.value,r=n.next();break;case 340:l.blockTableRecordId=r.value,r=n.next();break;case 146:l.blockScale=r.value,r=n.next();break;case 177:l.blockAttrNum=r.value,r=n.next();break;case 7:l.textStyle=r.value,r=n.next();break;case 140:l.textHeight=r.value,r=n.next();break;case 170:l.attachmentPoint=r.value,r=n.next();break;case 92:l.extendedCellFlags=r.value,r=n.next();break;case 285:l.rightBorderVisibility=!!(r.value??!0),r=n.next();break;case 286:l.bottomBorderVisibility=!!(r.value??!0),r=n.next();break;case 288:l.leftBorderVisibility=!!(r.value??!0),r=n.next();break;case 289:l.topBorderVisibility=!!(r.value??!0),r=n.next();break;case 301:(function(c,d,u){for(;u.code!==304;)switch(u.code){case 301:case 93:case 90:case 94:u=d.next();break;case 1:c.text=u.value,u=d.next();break;case 300:c.attrText=u.value,u=d.next();break;case 302:c.text=u.value?u.value:c.text,u=d.next();break;default:u=d.next()}})(l,n,r),r=n.next();break;default:return l}return a=!1,o=!1,l}(t,e)),e=t.lastReadGroup;break;default:Ec(s,e,t),e=t.next()}}return s}}function Yh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}(an="ForEntityName")in pi?Object.defineProperty(pi,an,{value:"ACAD_TABLE",enumerable:!0,configurable:!0,writable:!0}):pi[an]="ACAD_TABLE";let Md=[{code:11,name:"xAxisDirection",parser:_},{code:210,name:"extrusionDirection",parser:_},{code:1,name:"text",parser:h},{code:10,name:"position",parser:_},{code:3,name:"styleName",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class $h{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Yh(this,"parser",P(Md))}}Yh($h,"ForEntityName","TOLERANCE");var Td=((nt={})[nt.CREATED_BY_CURVE_FIT=1]="CREATED_BY_CURVE_FIT",nt[nt.TANGENT_DEFINED=2]="TANGENT_DEFINED",nt[nt.NOT_USED=4]="NOT_USED",nt[nt.CREATED_BY_SPLINE_FIT=8]="CREATED_BY_SPLINE_FIT",nt[nt.SPLINE_CONTROL_POINT=16]="SPLINE_CONTROL_POINT",nt[nt.FOR_POLYLINE=32]="FOR_POLYLINE",nt[nt.FOR_POLYGON=64]="FOR_POLYGON",nt[nt.POLYFACE=128]="POLYFACE",nt);let vd=[{code:[335,343,344,91],name:"softPointers",isMultiple:!0,parser:h},{code:361,name:"sunId",parser:h},{code:431,name:"ambientLightColorName",parser:h},{code:421,name:"ambientLightColorInstance",parser:h},{code:63,name:"ambientLightColorIndex",parser:h},{code:142,name:"contrast",parser:h},{code:141,name:"brightness",parser:h},{code:282,name:"defaultLightingType",parser:h},{code:292,name:"isDefaultLighting",parser:O},{code:348,name:"visualStyleId",parser:h},{code:333,name:"shadePlotId",parser:h},{code:332,name:"backgroundId",parser:h},{code:61,name:"majorGridFrequency",parser:h},{code:170,name:"shadePlotMode",parser:h},{code:146,name:"elevation",parser:h},{code:79,name:"orthographicType",parser:h},{code:346,name:"ucsBaseId",parser:h},{code:345,name:"ucsId",parser:h},{code:112,name:"ucsYAxis",parser:_},{code:111,name:"ucsXAxis",parser:_},{code:110,name:"ucsOrigin",parser:_},{code:74,name:"iconFlag",parser:h},{code:71,name:"ucsPerViewport",parser:h},{code:281,name:"renderMode",parser:h},{code:1,name:"sheetName",parser:h},{code:340,name:"clippingBoundaryId",parser:h},{code:90,name:"statusBitFlags",parser:h},{code:331,name:"frozenLayerIds",isMultiple:!0,parser:h},{code:72,name:"circleZoomPercent",parser:h},{code:51,name:"viewTwistAngle",parser:h},{code:50,name:"snapAngle",parser:h},{code:45,name:"viewHeight",parser:h},{code:44,name:"backClipZ",parser:h},{code:43,name:"frontClipZ",parser:h},{code:42,name:"perspectiveLensLength",parser:h},{code:17,name:"targetPoint",parser:_},{code:16,name:"viewDirection",parser:_},{code:15,name:"gridSpacing",parser:_},{code:14,name:"snapSpacing",parser:_},{code:13,name:"snapBase",parser:_},{code:12,name:"displayCenter",parser:_},{code:69,name:"viewportId",parser:h},{code:68,name:"status",parser:h},{code:41,name:"height",parser:h},{code:40,name:"width",parser:h},{code:10,name:"viewportCenter",parser:_},{code:100,name:"subclassMarker",parser:h,pushContext:!0},...z];class gi{parseEntity(t,e){let s={};return P(vd)(e,t,s),s}}function qh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}(on="ForEntityName")in gi?Object.defineProperty(gi,on,{value:"VIEWPORT",enumerable:!0,configurable:!0,writable:!0}):gi[on]="VIEWPORT";let kd={brightness:50,constrast:50,fade:0},Ld=[{code:14,name:"boundary",isMultiple:!0,parser:_},{code:91,name:"numberOfVertices",parser:h},{code:71,name:"boundaryType",parser:h},{code:360,name:"imageDefReactorHardId",parser:h},{code:283,name:"fade",parser:h},{code:282,name:"contrast",parser:h},{code:281,name:"brightness",parser:h},{code:280,name:"isClipping",parser:O},{code:70,name:"displayFlag",parser:h},{code:340,name:"imageDefHardId",parser:h},{code:13,name:"imageSize",parser:_},{code:12,name:"vDirection",parser:_},{code:11,name:"uDirection",parser:_},{code:10,name:"position",parser:_},{code:90,name:"classVersion",parser:h},{code:100,name:"subclassMarker",parser:h},...z];class Zh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){qh(this,"parser",P(Ld,kd))}}qh(Zh,"ForEntityName","WIPEOUT");(Jt={})[Jt.ShowImage=1]="ShowImage",Jt[Jt.ShowImageWhenNotAligned=2]="ShowImageWhenNotAligned",Jt[Jt.UseClippingBoundary=4]="UseClippingBoundary",Jt[Jt.Transparency=8]="Transparency";function Kh(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}let Od=[{code:11,name:"direction",parser:_},{code:10,name:"position",parser:_},{code:100,name:"subclassMarker",parser:h},...z];class Qh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Kh(this,"parser",P(Od))}}Kh(Qh,"ForEntityName","XLINE");let Nd=0;function Jh(i){if(!i)throw TypeError("entity cannot be undefined or null");i.handle||(i.handle=Nd++)}let Cd=Object.fromEntries([Go,ci,Zo,th,sh,nh,li,ah,hh,ph,mh,_h,xh,fh,ui,Ph,Sh,Qo,Mh,vh,Oh,Ch,Fh,zh,Dh,Wh,Hh,Xh,pi,$o,$h,dh,Zn,gi,Zh,Qh].map(i=>[i.ForEntityName,new i]));function tl(i,t){let e=[];for(;!N(i,0,"EOF");){if(i.code===0){if(i.value==="ENDBLK"||i.value==="ENDSEC"){t.rewind();break}let s=Cd[i.value];if(s){let n=i.value;i=t.next();let r=s.parseEntity(t,i);r.type=n,Jh(r),e.push(r)}else t.debug}i=t.next()}return e}function _s(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}class Jr{next(){if(!this.hasNext())return this._eof?this.debug:this.debug,{code:0,value:"EOF"};let t=parseInt(this._data[this._pointer++],10),e=ta(t,this._data[this._pointer++],this.debug),s={code:t,value:e};return N(s,0,"EOF")&&(this._eof=!0),this.lastReadGroup=s,s}peek(){if(!this.hasNext())throw this._eof?Error("Cannot call 'next' after EOF group has been read"):Error("Unexpected end of input: EOF group not read before end of file. Ended on code "+this._data[this._pointer]);let t={code:parseInt(this._data[this._pointer]),value:0};return t.value=ta(t.code,this._data[this._pointer+1],this.debug),t}rewind(t){t=t||1,this._pointer=this._pointer-2*t}hasNext(){return!this._eof&&!(this._pointer>this._data.length-2)}isEOF(){return this._eof}constructor(t,e=!1){_s(this,"_data",void 0),_s(this,"debug",void 0),_s(this,"_pointer",void 0),_s(this,"_eof",void 0),_s(this,"lastReadGroup",void 0),this._data=t,this.debug=e,this.lastReadGroup={code:0,value:0},this._pointer=0,this._eof=!1}}function ta(i,t,e=!1){return i<=9?t:i>=10&&i<=59?parseFloat(t.trim()):i>=60&&i<=99?parseInt(t.trim()):i>=100&&i<=109?t:i>=110&&i<=149?parseFloat(t.trim()):i>=160&&i<=179?parseInt(t.trim()):i>=210&&i<=239?parseFloat(t.trim()):i>=270&&i<=289?parseInt(t.trim()):i>=290&&i<=299?function(s){if(s==="0")return!1;if(s==="1")return!0;throw TypeError("String '"+s+"' cannot be cast to Boolean type")}(t.trim()):i>=300&&i<=369?t:i>=370&&i<=389?parseInt(t.trim()):i>=390&&i<=399?t:i>=400&&i<=409?parseInt(t.trim()):i>=410&&i<=419?t:i>=420&&i<=429?parseInt(t.trim()):i>=430&&i<=439?t:i>=440&&i<=459?parseInt(t.trim()):i>=460&&i<=469?parseFloat(t.trim()):i>=470&&i<=481||i===999||i>=1e3&&i<=1009?t:i>=1010&&i<=1059?parseFloat(t.trim()):i>=1060&&i<=1071?parseInt(t.trim()):t}function Bd(i,t){let e=null,s={};for(;!N(i,0,"EOF")&&!N(i,0,"ENDSEC");)i.code===9?e=i.value:i.code===10?s[e]=me(t):s[e]=i.value,i=t.next();return s}let he=[{code:100,name:"subclassMarker",parser:h},{code:330,name:"ownerObjectId",parser:h},{code:102,isMultiple:!0,parser(i,t){for(;!N(i,0,"EOF")&&!N(i,102,"}");)i=t.next()}},{code:5,name:"handle",parser:h}],Fd=[{code:70,name:"flag",parser:h},{code:2,name:"appName",parser:h},{code:100,name:"subclassMarker",parser:h},...he],Rd=P(Fd),zd=P([{code:310,name:"bmpPreview",parser:h},{code:281,name:"scalability",parser:h},{code:280,name:"explodability",parser:h},{code:70,name:"insertionUnits",parser:h},{code:340,name:"layoutObjects",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h},...he]),Vd=P([...qn.map(i=>({...i,parser:h})),{code:70,name:"standardFlag",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h},{code:105,name:"handle",parser:h},...he.filter(i=>i.code!==5)]),Dd=P([{code:347,name:"materialObjectId",parser:h},{code:390,name:"plotStyleNameObjectId",parser:h},{code:370,name:"lineweight",parser:h},{code:290,name:"isPlotting",parser:O},{code:6,name:"lineType",parser:h},{code:62,name:"colorIndex",parser:h},{code:70,name:"standardFlag",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h},...he]),jd=P([{code:9,name:"text",parser:h},{code:45,name:"offsetY",parser:h},{code:44,name:"offsetX",parser:h},{code:50,name:"rotation",parser:h},{code:46,name:"scale",parser:h},{code:340,name:"styleObjectId",parser:h},{code:75,name:"shapeNumber",parser:h},{code:74,name:"elementTypeFlag",parser:h},{code:49,name:"elementLength",parser:h}],{elementTypeFlag:0,elementLength:0}),Wd=P([{code:49,name:"pattern",parser(i,t){let e={};return jd(i,t,e),e},isMultiple:!0},{code:40,name:"totalPatternLength",parser:h},{code:73,name:"numberOfLineTypes",parser:h},{code:72,parser:h},{code:3,name:"description",parser:h},{code:70,name:"standardFlag",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h},...he]),Gd=P([{code:1e3,name:"extendedFont",parser:h},{code:1001},{code:4,name:"bigFont",parser:h},{code:3,name:"font",parser:h},{code:42,name:"lastHeight",parser:h},{code:71,name:"textGenerationFlag",parser:h},{code:50,name:"obliqueAngle",parser:h},{code:41,name:"widthFactor",parser:h},{code:40,name:"fixedTextHeight",parser:h},{code:70,name:"standardFlag",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h},...he]),Hd=[{code:13,name:"orthographicOrigin",parser:_},{code:71,name:"orthographicType",parser:h},{code:346,name:"baseUcsHandle",parser:h},{code:146,name:"elevation",parser:h},{code:79,name:"isOrthographic",parser:O},{code:12,name:"yAxis",parser:_},{code:11,name:"xAxis",parser:_},{code:10,name:"origin",parser:_},{code:70,name:"flag",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h},...he],Ud=P(Hd),Xd=[{code:346,name:"baseUcsId",parser:h},{code:345,name:"ucsId",parser:h},{code:146,name:"elevation",parser:h},{code:79,name:"orthographicType",parser:h},{code:112,name:"ucsYAxis",parser:_},{code:111,name:"ucsXAxis",parser:_},{code:110,name:"ucsOrigin",parser:_},{code:361,name:"sunHardId",parser:h},{code:348,name:"styleHardId",parser:h},{code:334,name:"liveSectionSoftId",parser:h},{code:332,name:"backgroundSoftId",parser:h},{code:73,name:"isPlottable",parser:O},{code:72,name:"isUcsAssociated",parser:O},{code:281,name:"renderMode",parser:h},{code:71,name:"viewMode",parser:h},{code:50,name:"twistAngle",parser:h},{code:44,name:"backClippingPlane",parser:h},{code:43,name:"frontClippingPlane",parser:h},{code:42,name:"lensLength",parser:h},{code:12,name:"target",parser:_},{code:11,name:"direction",parser:_},{code:10,name:"center",parser:_},{code:41,name:"width",parser:h},{code:40,name:"height",parser:h},{code:70,name:"flag",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h},...he],Yd=P(Xd),$d=P([{code:[63,421,431],name:"ambientColor",parser:h},{code:142,name:"contrast",parser:h},{code:141,name:"brightness",parser:h},{code:282,name:"defaultLightingType",parser:h},{code:292,name:"isDefaultLightingOn",parser:O},{code:348,name:"visualStyleObjectId",parser:h},{code:333,name:"shadePlotObjectId",parser:h},{code:332,name:"backgroundObjectId",parser:h},{code:61,name:"majorGridLines",parser:h},{code:170,name:"shadePlotSetting",parser:h},{code:146,name:"elevation",parser:h},{code:79,name:"orthographicType",parser:h},{code:112,name:"ucsYAxis",parser:_},{code:111,name:"ucsXAxis",parser:_},{code:110,name:"ucsOrigin",parser:_},{code:74,name:"ucsIconSetting",parser:h},{code:71,name:"viewMode",parser:h},{code:281,name:"renderMode",parser:h},{code:1,name:"styleSheet",parser:h},{code:[331,441],name:"frozenLayers",parser:h,isMultiple:!0},{code:72,name:"circleSides",parser:h},{code:51,name:"viewTwistAngle",parser:h},{code:50,name:"snapRotationAngle",parser:h},{code:45,name:"viewHeight",parser:h},{code:44,name:"backClippingPlane",parser:h},{code:43,name:"frontClippingPlane",parser:h},{code:42,name:"lensLength",parser:h},{code:17,name:"viewTarget",parser:_},{code:16,name:"viewDirectionFromTarget",parser:_},{code:15,name:"gridSpacing",parser:_},{code:14,name:"snapSpacing",parser:_},{code:13,name:"snapBasePoint",parser:_},{code:12,name:"center",parser:_},{code:11,name:"upperRightCorner",parser:_},{code:10,name:"lowerLeftCorner",parser:_},{code:70,name:"standardFlag",parser:h},{code:2,name:"name",parser:h},{code:100,name:"subclassMarker",parser:h},...he]),qd={APPID:Rd,BLOCK_RECORD:zd,DIMSTYLE:Vd,LAYER:Dd,LTYPE:Wd,STYLE:Gd,UCS:Ud,VIEW:Yd,VPORT:$d},Zd=P([{code:70,name:"maxNumberOfEntries",parser:h},{code:100,name:"subclassMarker",parser:h},{code:330,name:"ownerObjectId",parser:h},{code:102,parser:zt},{code:102,parser:zt},{code:102,parser:zt},{code:360,isMultiple:!0},{code:5,name:"handle",parser:h},{code:2,name:"name",parser:h}]);function Kd(i,t){var s;let e={};for(;!N(i,0,"EOF")&&!N(i,0,"ENDSEC");){if(N(i,0,"TABLE")){i=t.next();let n={entries:[]};Zd(i,t,n),e[n.name]=n}if(N(i,0)&&!N(i,0,"ENDTAB")){let n=i.value;i=t.next();let r=qd[n];if(!r){t.debug,i=t.next();continue}let a={};r(i,t,a),(s=e[n])==null||s.entries.push(a)}i=t.next()}return e}function Qd(i,t){let e={};for(;!N(i,0,"EOF")&&!N(i,0,"ENDSEC");){if(N(i,0,"BLOCK")){let s=Jd(i=t.next(),t);Jh(s),s.name&&(e[s.name]=s)}i=t.next()}return e}function Jd(i,t){let e={};for(;!N(i,0,"EOF");){if(N(i,0,"ENDBLK")){for(i=t.next();!N(i,0,"EOF");){if(N(i,100,"AcDbBlockEnd"))return e;i=t.next()}break}switch(i.code){case 1:e.xrefPath=i.value;break;case 2:e.name=i.value;break;case 3:e.name2=i.value;break;case 5:e.handle=i.value;break;case 8:e.layer=i.value;break;case 10:e.position=me(t);break;case 67:e.paperSpace=!!i.value&&i.value==1;break;case 70:i.value!==0&&(e.type=i.value);break;case 100:break;case 330:e.ownerHandle=i.value;break;case 0:e.entities=tl(i,t)}i=t.next()}return e}let Kn=[{code:330,name:"ownerObjectId",parser:h},{code:102,parser:zt},{code:102,parser:zt},{code:102,parser:zt},{code:5,name:"handle",parser:h}],el=[{code:333,name:"shadePlotId",parser:h},{code:149,name:"imageOriginY",parser:h},{code:148,name:"imageOriginX",parser:h},{code:147,name:"scaleFactor",parser:h},{code:78,name:"shadePlotCustomDPI",parser:h},{code:77,name:"shadePlotResolution",parser:h},{code:76,name:"shadePlotMode",parser:h},{code:75,name:"standardScaleType",parser:h},{code:7,name:"currentStyleSheet",parser:h},{code:74,name:"plotType",parser:h},{code:73,name:"plotRotation",parser:h},{code:72,name:"plotPaperUnit",parser:h},{code:70,name:"layoutFlag",parser:h},{code:143,name:"printScaleDenominator",parser:h},{code:142,name:"printScaleNumerator",parser:h},{code:141,name:"windowAreaYMax",parser:h},{code:140,name:"windowAreaXMax",parser:h},{code:49,name:"windowAreaYMin",parser:h},{code:48,name:"windowAreaXMin",parser:h},{code:47,name:"plotOriginY",parser:h},{code:46,name:"plotOriginX",parser:h},{code:45,name:"paperHeight",parser:h},{code:44,name:"paperWidth",parser:h},{code:43,name:"marginTop",parser:h},{code:42,name:"marginRight",parser:h},{code:41,name:"marginBottom",parser:h},{code:40,name:"marginLeft",parser:h},{code:6,name:"plotViewName",parser:h},{code:4,name:"paperSize",parser:h},{code:2,name:"configName",parser:h},{code:1,name:"pageSetupName",parser:h},{code:100,name:"subclassMarker",parser:h},...Kn],tu=[{code:346,name:"orthographicUcsId",parser:h},{code:345,name:"namedUcsId",parser:h},{code:331,name:"viewportId",parser:h},{code:330,name:"paperSpaceTableId",parser:h},{code:76,name:"orthographicType",parser:h},{code:17,name:"ucsYAxis",parser:_},{code:16,name:"ucsXAxis",parser:_},{code:13,name:"ucsOrigin",parser:_},{code:146,name:"elevation",parser:h},{code:15,name:"maxExtent",parser:_},{code:14,name:"minExtent",parser:_},{code:12,name:"insertionPoint",parser:_},{code:11,name:"maxLimit",parser:_},{code:10,name:"minLimit",parser:_},{code:71,name:"tabOrder",parser:h},{code:70,name:"controlFlag",parser:h},{code:1,name:"layoutName",parser:h},{code:100,name:"subclassMarker",parser:h},...el],eu=[{code:3,name:"entries",parser:(i,t)=>{let e={name:i.value};return(i=t.next()).code===350?e.objectSoftId=i.value:i.code===360?e.objectHardId=i.value:t.rewind(),e},isMultiple:!0},{code:281,name:"recordCloneFlag",parser:h},{code:280,name:"isHardOwned",parser:O},{code:100,name:"subclassMarker",parser:h},...Kn],su=[{code:40,name:"wcsToOCSTransform",parser:ea},{code:40,name:"ocsToWCSTransform",parser:ea},{code:41,name:"backClippingDistance",parser:h},{code:73,name:"isBackClipping",parser:O,pushContext:!0},{code:40,name:"frontClippingDistance",parser:h},{code:72,name:"isFrontClipping",parser:O,pushContext:!0},{code:71,name:"isClipBoundaryDisplayed",parser:O},{code:11,name:"position",parser:_},{code:210,name:"normal",parser:_},{code:10,name:"boundaryVertices",parser:_,isMultiple:!0},{code:70,name:"boundaryCount",parser:h},{code:100,name:"subclassMarker",parser:h},{code:100},...Kn];function ea(i,t){let e=[];for(let s=0;s<3&&N(i,40);++s){let n=[];for(let r=0;r<4&&N(i,40);++r)n.push(i.value),i=t.next();e.push(n)}return t.rewind(),e}let iu=[{code:330,name:"imageDefReactorIdSoft",isMultiple:!0,parser:h},{code:90,name:"version",parser:h},{code:1,name:"fileName",parser:h},{code:10,name:"size",parser:_},{code:11,name:"sizeOfOnePixel",parser:_},{code:280,name:"isLoaded",parser:h},{code:281,name:"resolutionUnits",parser:h},{code:100,name:"subclassMarker",parser:h}],nu={LAYOUT:tu,PLOTSETTINGS:el,DICTIONARY:eu,SPATIAL_FILTER:su,IMAGEDEF:iu};function ru(i,t){let e=[];for(;i.code!==0||!["EOF","ENDSEC"].includes(i.value);){let s=i.value,n=nu[s];if(i.code===0&&(n!=null&&n.length)){let r=P(n),a={name:s};r(i=t.next(),t,a)?(e.push(a),i=t.peek()):i=t.next()}else i=t.next()}return{byName:bc(e,({name:s})=>s)}}function Ts(i,t,e){return t in i?Object.defineProperty(i,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):i[t]=e,i}class au{constructor(){Ts(this,"encoding","utf-8"),Ts(this,"encodingFailureFatal",!1),Ts(this,"thumbnailImageFormat","base64")}}class ou extends EventTarget{parseSync(t,e=!1){let s=new Jr(t.split(/\r\n|\r|\n/g),e);if(!s.hasNext())throw Error("Empty file");return this.parseAll(s)}parseStream(t){let e="",s=this;return new Promise((n,r)=>{t.on("data",a=>{e+=a}),t.on("end",()=>{try{let a=e.split(/\r\n|\r|\n/g),o=new Jr(a);if(!o.hasNext())throw Error("Empty file");n(s.parseAll(o))}catch(a){r(a)}}),t.on("error",a=>{r(a)})})}async parseFromUrl(t,e){let s=await fetch(t,e);if(!s.body)return null;let n=s.body.getReader(),r="";for(;;){let{done:a,value:o}=await n.read();if(a){r+=this._decoder.decode(new ArrayBuffer(0),{stream:!1});break}r+=this._decoder.decode(o,{stream:!0})}return this.parseSync(r)}parseAll(t){let e={header:{},blocks:{},entities:[],tables:{},objects:{byName:{},byTree:void 0}},s=t.next();for(;!N(s,0,"EOF");)N(s,0,"SECTION")&&(N(s=t.next(),2,"HEADER")?e.header=Bd(s=t.next(),t):N(s,2,"CLASSES")?rc(s=t.next(),t,e):N(s,2,"BLOCKS")?e.blocks=Qd(s=t.next(),t):N(s,2,"ENTITIES")?e.entities=tl(s=t.next(),t):N(s,2,"TABLES")?e.tables=Kd(s=t.next(),t):N(s,2,"OBJECTS")?e.objects=ru(s=t.next(),t):N(s,2,"THUMBNAILIMAGE")&&(e.thumbnailImage=function(n,r,a="base64"){let o,l="",c=0;for(;!N(n,0,"EOF")&&!N(n,0,"ENDSEC");)n.code===90?c=n.value:n.code===310&&(l+=n.value),n=r.next();if(a==="hex")o=l;else{let d=function(u){let g=u.length/2,p=new Uint8Array(g);for(let m=0;m<g;m++)p[m]=parseInt(u.substr(2*m,2),16);return p}(l);o=a==="buffer"?d:function(u){let g="";for(let p=0;p<u.length;p++)g+=String.fromCharCode(u[p]);return btoa(g)}(d)}return{size:c,data:o}}(s=t.next(),t,this._options.thumbnailImageFormat))),s=t.next();return e}constructor(t={}){super(),Ts(this,"_decoder",void 0),Ts(this,"_options",void 0);let e=new au;this._options=Object.assign(e,t),this._decoder=new TextDecoder(this._options.encoding,{fatal:this._options.encodingFailureFatal})}}(It={})[It.NOT_APPLICABLE=0]="NOT_APPLICABLE",It[It.KEEP_EXISTING=1]="KEEP_EXISTING",It[It.USE_CLONE=2]="USE_CLONE",It[It.XREF_VALUE_NAME=3]="XREF_VALUE_NAME",It[It.VALUE_NAME=4]="VALUE_NAME",It[It.UNMANGLE_NAME=5]="UNMANGLE_NAME";(Ne={})[Ne.NOUNIT=0]="NOUNIT",Ne[Ne.CENTIMETERS=2]="CENTIMETERS",Ne[Ne.INCH=5]="INCH";(ys={})[ys.PSLTSCALE=1]="PSLTSCALE",ys[ys.LIMCHECK=2]="LIMCHECK";(Ce={})[Ce.INCHES=0]="INCHES",Ce[Ce.MILLIMETERS=1]="MILLIMETERS",Ce[Ce.PIXELS=2]="PIXELS";(Pt={})[Pt.LAST_SCREEN_DISPLAY=0]="LAST_SCREEN_DISPLAY",Pt[Pt.DRAWING_EXTENTS=1]="DRAWING_EXTENTS",Pt[Pt.DRAWING_LIMITS=2]="DRAWING_LIMITS",Pt[Pt.VIEW_SPECIFIED=3]="VIEW_SPECIFIED",Pt[Pt.WINDOW_SPECIFIED=4]="WINDOW_SPECIFIED",Pt[Pt.LAYOUT_INFORMATION=5]="LAYOUT_INFORMATION";(te={})[te.AS_DISPLAYED=0]="AS_DISPLAYED",te[te.WIREFRAME=1]="WIREFRAME",te[te.HIDDEN=2]="HIDDEN",te[te.RENDERED=3]="RENDERED";(Et={})[Et.DRAFT=0]="DRAFT",Et[Et.PREVIEW=1]="PREVIEW",Et[Et.NORMAL=2]="NORMAL",Et[Et.PRESENTATION=3]="PRESENTATION",Et[Et.MAXIMUM=4]="MAXIMUM",Et[Et.CUSTOM=5]="CUSTOM";(ee={})[ee.NONE=0]="NONE",ee[ee.AbsoluteRotation=1]="AbsoluteRotation",ee[ee.TextEmbedded=2]="TextEmbedded",ee[ee.ShapeEmbedded=4]="ShapeEmbedded";(hn={})[hn.PaperSpace=1]="PaperSpace";(Be={})[Be.XrefDependent=16]="XrefDependent",Be[Be.XrefResolved=32]="XrefResolved",Be[Be.Referenced=64]="Referenced";(St={})[St.Off=0]="Off",St[St.Perspective=1]="Perspective",St[St.ClipFront=2]="ClipFront",St[St.ClipBack=4]="ClipBack",St[St.UcsFollow=8]="UcsFollow",St[St.ClipFrontByFrontZ=16]="ClipFrontByFrontZ";class hu{parse(t){const e=new ou,s=this.getDxfInfoFromBuffer(t);let n="";return s.version&&s.version.value<=23&&s.encoding?n=new TextDecoder(s.encoding).decode(t):n=new TextDecoder().decode(t),e.parseSync(n)}getDxfInfoFromBuffer(t){var c,d,u;const s=new TextDecoder("utf-8");let n=0,r="",a=null,o=null,l=!1;for(;n<t.byteLength;){const g=Math.min(n+65536,t.byteLength),p=t.slice(n,g);n=g;const y=(r+s.decode(p,{stream:!0})).split(/\r?\n/);r=y.pop()??"";for(let w=0;w<y.length;w++){const b=y[w].trim();if(b==="SECTION"&&((c=y[w+2])==null?void 0:c.trim())==="HEADER")l=!0;else if(b==="ENDSEC"&&l)return{version:a,encoding:o};if(l&&b==="$ACADVER"){const E=(d=y[w+2])==null?void 0:d.trim();E&&(a=new At(E))}else if(l&&b==="$DWGCODEPAGE"){const E=(u=y[w+2])==null?void 0:u.trim();if(E){const I=kn[E];o=wa(I)}}if(a&&o)return{version:a,encoding:o}}}return{version:a,encoding:o}}}class sa{convert(t){const e=this.createEntity(t);return e&&this.processCommonAttrs(t,e),e}createEntity(t){return t.type=="3DFACE"?this.convertFace(t):t.type=="ARC"?this.convertArc(t):t.type=="ATTDEF"?this.convertAttributeDefinition(t):t.type=="ATTRIB"?this.convertAttribute(t):t.type=="CIRCLE"?this.convertCirle(t):t.type=="DIMENSION"?this.convertDimension(t):t.type=="ELLIPSE"?this.convertEllipse(t):t.type=="HATCH"?this.convertHatch(t):t.type=="IMAGE"?this.convertImage(t):t.type=="LEADER"?this.convertLeader(t):t.type=="LINE"?this.convertLine(t):t.type=="LWPOLYLINE"?this.convertLWPolyline(t):t.type=="MTEXT"?this.convertMText(t):t.type=="POLYLINE"?this.convertPolyline(t):t.type=="POINT"?this.convertPoint(t):t.type=="RAY"?this.convertRay(t):t.type=="SPLINE"?this.convertSpline(t):t.type=="ACAD_TABLE"?this.convertTable(t):t.type=="TEXT"?this.convertText(t):t.type=="SOLID"?this.convertSolid(t):t.type=="VIEWPORT"?this.convertViewport(t):t.type=="WIPEOUT"?this.convertWipeout(t):t.type=="XLINE"?this.convertXline(t):t.type=="INSERT"?this.convertBlockReference(t):null}convertFace(t){const e=new Ei;return t.vertices.forEach((s,n)=>e.setVertexAt(n,s)),e}convertArc(t){return new xi(t.center,t.radius,L.degToRad(t.startAngle),L.degToRad(t.endAngle),t.extrusionDirection??f.Z_AXIS)}convertAttributeCommon(t,e){e.textString=t.text,e.height=t.textHeight,e.position.copy(t.startPoint),e.rotation=t.rotation,e.oblique=t.obliqueAngle??0,e.thickness=t.thickness,e.tag=t.tag,e.fieldLength=0,e.isInvisible=(t.attributeFlag&K.Invisible)!==0,e.isConst=(t.attributeFlag&K.Const)!==0,e.isVerifiable=(t.attributeFlag&K.Verifiable)!==0,e.isPreset=(t.attributeFlag&K.Preset)!==0,e.isReallyLocked=!!t.isReallyLocked,e.isMTextAttribute=(t.mtextFlag&Bt.MultiLine)!==0,e.isConstMTextAttribute=(t.mtextFlag&Bt.ConstMultiLine)!==0}convertAttribute(t){const e=new fi;return this.convertAttributeCommon(t,e),e.styleName=t.textStyle,e.horizontalMode=t.horizontalJustification,e.verticalMode=t.verticalJustification,e.widthFactor=t.scale??1,e.lockPositionInBlock=t.lockPositionFlag,e}convertAttributeDefinition(t){const e=new bi;return this.convertAttributeCommon(t,e),e.styleName=t.styleName,e.horizontalMode=t.halign,e.verticalMode=t.valign,e.widthFactor=t.xScale??1,e.prompt=t.prompt,e}convertCirle(t){return new Ii(t.center,t.radius,t.extrusionDirection??f.Z_AXIS)}convertEllipse(t){const e=new f(t.majorAxisEndPoint),s=e.length();return new Pi(t.center,t.extrusionDirection??f.Z_AXIS,e,s,s*t.axisRatio,t.startAngle,t.endAngle)}convertLine(t){const e=t.startPoint,s=t.endPoint;return new Cs(new x(e.x,e.y,e.z||0),new x(s.x,s.y,s.z||0))}convertSpline(t){try{if(t.numberOfControlPoints>0&&t.numberOfKnots>0)return new Fs(t.controlPoints,t.knots,t.weights,t.degree,!!(t.flag&1));if(t.numberOfFitPoints>0)return new Fs(t.fitPoints,"Uniform",t.degree,!!(t.flag&1))}catch{}return null}convertPoint(t){const e=new vi;return e.position=t.position,e}convertSolid(t){const e=new Mi;return t.points.forEach((s,n)=>e.setPointAt(n,s)),e.thickness=t.thickness,e}convertPolyline(t){const e=!!(t.flag&1),s=!!(t.flag&8),n=!!(t.flag&16),r=!!(t.flag&64),a=!!(t.flag&32),o=[],l=[],c=[];if(t.vertices.map(d=>{d.flag&Td.SPLINE_CONTROL_POINT||(r&&d.flag&128?d.flag&64?(o.push({x:d.x,y:d.y,z:d.z}),l.push(d.bulge??0)):d.faces&&d.faces.length>=3&&c.push([...d.faces]):(o.push({x:d.x,y:d.y,z:d.z}),l.push(d.bulge??0)))}),n){const d=t.meshMVertexCount,u=t.meshNVertexCount;return new Ci(d,u,o,e,a)}else{if(r)return new Bi(o,c);if(s){let d=Ss.SimplePoly;return t.flag&4&&(t.smoothType==ri.CUBIC?d=Ss.CubicSplinePoly:t.smoothType==ri.QUADRATIC&&(d=Ss.QuadSplinePoly)),new wi(d,o,e)}else{let d=Ue.SimplePoly;return t.flag&2?d=Ue.FitCurvePoly:t.flag&4&&(t.smoothType==ri.CUBIC?d=Ue.CubicSplinePoly:t.smoothType==ri.QUADRATIC&&(d=Ue.QuadSplinePoly)),new _i(d,o,0,e,t.startWidth,t.endWidth,l)}}}convertLWPolyline(t){const e=new Ti;return e.closed=!!(t.flag&1),t.vertices.forEach((s,n)=>{e.addVertexAt(n,new v(s.x,s.y),s.bulge,s.startWidth,s.endWidth)}),e}convertHatch(t){var n;const e=new Ns;return(n=t.definitionLines)==null||n.forEach(r=>{e.definitionLines.push({angle:r.angle,base:r.base,offset:r.offset,dashLengths:r.numberOfDashLengths>0?r.dashLengths:[]})}),e.isSolidFill=t.solidFill==Kl.SolidFill,e.hatchStyle=t.hatchStyle,e.patternName=t.patternName,e.patternType=t.patternType,e.patternAngle=t.patternAngle==null?0:t.patternAngle,e.patternScale=t.patternScale==null?0:t.patternScale,t.boundaryPaths.forEach(r=>{if(r.boundaryPathTypeFlag&2){const o=r,l=new Vt;l.closed=o.isClosed,o.vertices.forEach((c,d)=>{l.addVertexAt(d,{x:c.x,y:c.y,bulge:c.bulge})}),e.add(l)}else{const o=r,l=[];o.edges.forEach(d=>{if(d.type==1){const u=d;l.push(new Ft(u.start,u.end))}else if(d.type==2){const u=d;l.push(new Ve(u.center,u.radius,L.degToRad(u.startAngle||0),L.degToRad(u.endAngle||0),!u.isCCW))}else if(d.type==3){const u=d;new U().subVectors(u.end,u.center);const p=Math.sqrt(Math.pow(u.end.x,2)+Math.pow(u.end.y,2)),m=p*u.lengthOfMinorAxis;let y=L.degToRad(u.startAngle||0),w=L.degToRad(u.endAngle||0);const b=Math.atan2(u.end.y,u.end.x);u.isCCW||(y=Math.PI*2-y,w=Math.PI*2-w),l.push(new Ls({...u.center,z:0},p,m,y,w,!u.isCCW,b))}else if(d.type==4){const u=d;if(u.numberOfControlPoints>0&&u.numberOfKnots>0){const g=u.controlPoints.map(y=>({x:y.x,y:y.y,z:0}));let p=!0;const m=u.controlPoints.map(y=>(y.weight==null&&(p=!1),y.weight||1));l.push(new Rt(g,u.knots,p?m:void 0))}else if(u.numberOfFitData>0){const g=u.fitDatum.map(p=>({x:p.x,y:p.y,z:0}));l.push(new Rt(g,"Uniform"))}}});const c=Os.buildFromEdges(l);c.length==0&&l.length>0?e.add(new Os(l)):c.forEach(d=>e.add(d))}}),e}convertTable(t){const e=new Ai(t.name,t.rowCount,t.columnCount);return e.tableDataVersion=t.version,e.tableStyleId=t.tableStyleId,e.owningBlockRecordId=t.blockRecordHandle,t.directionVector&&(e.horizontalDirection=new f(t.directionVector)),e.attachmentPoint=t.attachmentPoint,e.position.copy(t.startPoint),e.tableValueFlag=t.tableValue,e.tableOverrideFlag=t.overrideFlag,e.borderColorOverrideFlag=t.borderColorOverrideFlag,e.borderLineweightOverrideFlag=t.borderLineWeightOverrideFlag,e.borderVisibilityOverrideFlag=t.borderVisibilityOverrideFlag,t.columnWidthArr.forEach((s,n)=>e.setColumnWidth(n,s)),t.rowHeightArr.forEach((s,n)=>e.setRowHeight(n,s)),t.cells.forEach((s,n)=>{e.setCell(n,s)}),e}convertText(t){const e=new Ke;return e.textString=t.text,e.styleName=t.styleName,e.height=t.textHeight,e.position.copy(t.startPoint),e.rotation=L.degToRad(t.rotation||0),e.oblique=t.obliqueAngle??0,e.thickness=t.thickness,e.horizontalMode=t.halign,e.verticalMode=t.valign,e.widthFactor=t.xScale??1,e}convertMText(t){const e=new Bs;return e.contents=t.text,t.styleName!=null&&(e.styleName=t.styleName),e.height=t.height,e.width=t.width,e.rotation=L.degToRad(t.rotation||0),e.location=t.insertionPoint,e.attachmentPoint=t.attachmentPoint,t.direction&&(e.direction=new f(t.direction)),e.drawingDirection=t.drawingDirection,e}convertLeader(t){const e=new Si;return t.vertices.forEach(s=>{e.appendVertex(s)}),e.hasArrowHead=t.isArrowheadEnabled,e.hasHookLine=t.isHooklineExists,e.isSplined=t.isSpline,e.dimensionStyle=t.styleName,e.annoType=t.leaderCreationFlag,e}convertDimension(t){if(t.subclassMarker=="AcDbAlignedDimension"||t.subclassMarker=="AcDbRotatedDimension"){const e=t,s=new Ri(e.subDefinitionPoint1,e.subDefinitionPoint2,e.definitionPoint);return e.insertionPoint&&(s.dimBlockPosition={...e.insertionPoint,z:0}),s.rotation=L.degToRad(e.rotationAngle||0),this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDb3PointAngularDimension"){const e=t,s=new Fi(e.centerPoint,e.subDefinitionPoint1,e.subDefinitionPoint2,e.definitionPoint);return this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDbOrdinateDimension"){const e=t,s=new Vi(e.subDefinitionPoint1,e.subDefinitionPoint2);return this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDbRadialDimension"){const e=t,s=new Di(e.definitionPoint,e.subDefinitionPoint,e.leaderLength);return this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDbDiametricDimension"){const e=t,s=new zi(e.definitionPoint,e.subDefinitionPoint,e.leaderLength);return this.processDimensionCommonAttrs(t,s),s}return null}processImage(t,e){e.position.copy(t.position),e.brightness=t.brightness,e.contrast=t.contrast,e.fade=t.fade,e.imageSize.copy(t.imageSize),e.isShownClipped=(t.flags|4)>0,e.isImageShown=(t.flags|3)>0,e.isImageTransparent=(t.flags|8)>0,e.imageDefId=t.imageDefHandle,e.isClipped=t.isClipped,t.clippingBoundaryPath.forEach(s=>{e.clipBoundary.push(new v(s))}),e.width=Math.sqrt(t.uPixel.x**2+t.uPixel.y**2+t.uPixel.z**2)*t.imageSize.x,e.height=Math.sqrt(t.vPixel.x**2+t.vPixel.y**2+t.vPixel.z**2)*t.imageSize.y,e.rotation=Math.atan2(t.uPixel.y,t.uPixel.x)}convertImage(t){const e=new Rs;return this.processImage(t,e),e.clipBoundaryType=t.clippingBoundaryType,e}processWipeout(t,e){e.position.copy(t.position),e.brightness=t.brightness,e.contrast=t.contrast,e.fade=t.fade,e.imageSize.copy(t.imageSize),e.isShownClipped=(t.displayFlag|4)>0,e.isImageShown=(t.displayFlag|3)>0,e.isImageTransparent=(t.displayFlag|8)>0,e.imageDefId=t.imageDefHardId,e.isClipped=t.isClipping,t.boundary.forEach(s=>{e.clipBoundary.push(new v(s))}),e.clipBoundaryType=t.boundaryType,e.width=Math.sqrt(t.uDirection.x**2+t.uDirection.y**2+t.uDirection.z**2)*t.imageSize.x,e.height=Math.sqrt(t.vDirection.x**2+t.vDirection.y**2+t.vDirection.z**2)*t.imageSize.y,e.rotation=Math.atan2(t.uDirection.y,t.uDirection.x)}convertWipeout(t){const e=new Oi;return this.processWipeout(t,e),e}convertViewport(t){const e=new Li;return e.number=t.viewportId,e.centerPoint.copy(t.viewportCenter),e.height=t.height,e.width=t.width,e.viewCenter.copy(t.displayCenter),e.viewHeight=t.viewHeight,e}convertRay(t){const e=new ki;return e.basePoint.copy(t.position),e.unitDir.copy(t.direction),e}convertXline(t){const e=new Ni;return e.basePoint.copy(t.position),e.unitDir.copy(t.direction),e}convertBlockReference(t){const e=new Qe(t.name);return t.insertionPoint&&e.position.copy(t.insertionPoint),e.scaleFactors.x=t.xScale||1,e.scaleFactors.y=t.yScale||1,e.scaleFactors.z=t.zScale||1,e.rotation=t.rotation!=null?L.degToRad(t.rotation):0,e.normal.copy(t.extrusionDirection??{x:0,y:0,z:1}),e}processDimensionCommonAttrs(t,e){e.dimBlockId=t.name,e.textPosition.copy(t.textPoint),e.textRotation=t.textRotation||0,t.textLineSpacingFactor&&(e.textLineSpacingFactor=t.textLineSpacingFactor),t.textLineSpacingStyle&&(e.textLineSpacingStyle=t.textLineSpacingStyle),e.dimensionStyleName=t.styleName,e.dimensionText=t.text||"",e.measurement=t.measurement,e.normal.copy(t.extrusionDirection??{x:0,y:0,z:1})}processCommonAttrs(t,e){e.layer=t.layer||"0",t.handle&&(e.objectId=t.handle.toString()),e.ownerId=t.ownerBlockRecordSoftId||"",t.lineType!=null&&(e.lineType=t.lineType),t.lineweight!=null&&(e.lineWeight=t.lineweight),t.lineTypeScale!=null&&(e.linetypeScale=t.lineTypeScale),t.color!=null&&e.color.setRGBValue(t.color),t.colorIndex!=null&&(e.color.colorIndex=t.colorIndex),t.colorName&&(e.color.colorName=t.colorName),t.isVisible!=null&&(e.visibility=t.isVisible),t.transparency!=null&&(e.transparency=Ui.deserialize(t.transparency))}}class lu{convertLayout(t,e){var r,a;const s=new Hs;s.layoutName=t.layoutName,s.tabOrder=t.tabOrder,s.plotSettingsName=t.pageSetupName,s.plotCfgName=t.configName,s.canonicalMediaName=t.paperSize,s.plotViewName=t.plotViewName,s.currentStyleSheet=t.currentStyleSheet,s.plotPaperMargins={left:t.marginLeft,right:t.marginRight,top:t.marginTop,bottom:t.marginBottom},s.plotPaperSize.copy({x:t.paperWidth,y:t.paperHeight}),s.plotOrigin.copy({x:t.plotOriginX,y:t.plotOriginY}),s.plotWindowArea.min.copy({x:t.windowAreaXMin,y:t.windowAreaYMin}),s.plotWindowArea.max.copy({x:t.windowAreaXMax,y:t.windowAreaYMax}),s.customPrintScale={numerator:t.printScaleNumerator,denominator:t.printScaleDenominator},s.plotPaperUnits=t.plotPaperUnit,s.plotRotation=t.plotRotation,s.plotType=t.plotType,s.stdScaleType=t.standardScaleType,s.shadePlot=(()=>{switch(t.shadePlotMode){case 1:return Xe.kWireframe;case 2:return Xe.kHidden;case 3:return Xe.kRendered;default:return Xe.kAsDisplayed}})(),s.shadePlotResLevel=(()=>{switch(t.shadePlotResolution){case 1:return de.kPreview;case 2:return de.kNormal;case 3:return de.kPresentation;case 4:return de.kMaximum;case 5:return de.kCustom;default:return de.kDraft}})(),t.shadePlotCustomDPI!=null&&(s.shadePlotCustomDPI=t.shadePlotCustomDPI),t.shadePlotId&&(s.shadePlotId=t.shadePlotId);const n=t.layoutFlag??0;if(s.plotViewportBorders=(n&1)!==0,s.showPlotStyles=(n&2)!==0,s.plotCentered=(n&4)!==0,s.plotHidden=(n&8)!==0,s.useStandardScale=(n&16)!==0,s.plotPlotStyles=(n&32)!==0,s.scaleLineweights=(n&64)!==0,s.printLineweights=(n&128)!==0,s.drawViewportsFirst=(n&512)!==0,s.modelType=(n&1024)!==0,t.viewportId&&s.viewportArray.push(t.viewportId),t.layoutName==="Model"){const o=Z.MODEL_SPACE_NAME.toUpperCase();(r=e.tables.BLOCK_RECORD)==null||r.entries.some(l=>l.name.toUpperCase()===o?(s.blockTableRecordId=l.handle,!0):!1)}else(a=e.tables.BLOCK_RECORD)==null||a.entries.some(o=>o.layoutObjects===t.handle?(s.blockTableRecordId=o.handle,!0):!1),s.blockTableRecordId||(s.blockTableRecordId=t.paperSpaceTableId);return t.minLimit&&s.limits.min.copy(t.minLimit),t.maxLimit&&s.limits.max.copy(t.maxLimit),t.minExtent&&s.extents.min.copy(t.minExtent),t.maxExtent&&s.extents.max.copy(t.maxExtent),this.processCommonAttrs(t,s),s}convertImageDef(t){const e=new Po;return e.sourceFileName=t.fileName,this.processCommonAttrs(t,e),e}processCommonAttrs(t,e){e.objectId=t.handle,e.ownerId=t.ownerObjectId}}class sl{constructor(t){this.taskId=0,this.workers=new Map,this.pendingTasks=new Map,this.config={workerUrl:t.workerUrl,timeout:t.timeout??3e4,maxConcurrentWorkers:t.maxConcurrentWorkers??4}}async execute(t,e){const s=Date.now(),n=this.generateTaskId();try{return await this.executeInWorker(n,t,e||this.config.workerUrl)}catch(r){const a=Date.now()-s;return{success:!1,error:r instanceof Error?r.message:String(r),duration:a}}}async executeInWorker(t,e,s){const n=Date.now();return new Promise((r,a)=>{const o=this.getAvailableWorker(s),l=setTimeout(()=>{this.cleanupTask(t),this.releaseWorker(o),a(new Error(`Worker operation timed out after ${this.config.timeout}ms`))},this.config.timeout);this.pendingTasks.set(t,{resolve:u=>{clearTimeout(l),this.releaseWorker(o),r(u)},reject:u=>{clearTimeout(l),this.releaseWorker(o),a(u)},timeout:l});const c=u=>{const{id:g,success:p,data:m,error:y}=u.data;if(g!==t)return;this.cleanupTask(t);const w=Date.now()-n;r(p?{success:!0,data:m,duration:w}:{success:!1,error:y,duration:w})},d=u=>{this.cleanupTask(t),a(new Error(`Worker error: ${u.message}`))};o.addEventListener("message",c),o.addEventListener("error",d),o.postMessage({id:t,input:e})})}cleanupTask(t){const e=this.pendingTasks.get(t);e&&(clearTimeout(e.timeout),this.pendingTasks.delete(t))}generateTaskId(){return`task_${++this.taskId}_${Date.now()}`}detectWorkerSupport(){return typeof Worker<"u"}getAvailableWorker(t){for(const[s,n]of this.workers)if(!n.isBusy)return n.isBusy=!0,n.worker;if(this.workers.size<this.config.maxConcurrentWorkers){const s=new Worker(t,{type:"module"}),n=this.generateWorkerId(),r={worker:s,isBusy:!0,id:n,createdAt:new Date};return this.workers.set(n,r),s}const e=Array.from(this.workers.values()).sort((s,n)=>s.createdAt.getTime()-n.createdAt.getTime())[0];return e.isBusy=!0,e.worker}releaseWorker(t){for(const[e,s]of this.workers)if(s.worker===t){s.isBusy=!1;break}}generateWorkerId(){return`worker_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}getStats(){return{totalWorkers:this.workers.size,busyWorkers:Array.from(this.workers.values()).filter(t=>t.isBusy).length,pendingTasks:this.pendingTasks.size,config:this.config}}destroy(){for(const[t,e]of this.pendingTasks)clearTimeout(e.timeout),e.reject(new Error("Framework destroyed"));this.pendingTasks.clear();for(const[t,e]of this.workers)e.worker.terminate();this.workers.clear()}}class il{constructor(t){this.framework=new sl(t)}async execute(t,e){return this.framework.execute(t,e)}getStats(){return this.framework.getStats()}destroy(){this.framework.destroy()}}function nl(i){return new il(i)}class cu{constructor(){this.setupMessageHandler()}setupMessageHandler(){self.onmessage=async t=>{const{id:e,input:s}=t.data;try{const n=await this.executeTask(s);this.sendResponse(e,!0,n)}catch(n){this.sendResponse(e,!1,void 0,n instanceof Error?n.message:String(n))}}}sendResponse(t,e,s,n){const r={id:t,success:e,data:s,error:n};self.postMessage(r)}}class rl extends $n{constructor(t={}){super(t),t.parserWorkerUrl||(t.parserWorkerUrl="/assets/dxf-parser-worker.js")}async parse(t,e){const s=this.config,n=this.getParserWorkerTimeout(t,e);if(s.useWorker&&s.parserWorkerUrl){const r=nl({workerUrl:s.parserWorkerUrl,timeout:n,maxConcurrentWorkers:1}),a=await r.execute(t);if(r.destroy(),a.success)return{model:a.data,data:{unknownEntityCount:0}};throw new Error(`Failed to parse drawing due to error: '${a.error}'`)}else return{model:new hu().parse(t),data:{unknownEntityCount:0}}}getFonts(t){var r;const e=new Map,s=a=>{if(a){const o=a.lastIndexOf(".");return o>=0?a.substring(0,o).toLowerCase():a.toLowerCase()}};(r=t.tables.STYLE)==null||r.entries.forEach(a=>{const o=[];if(a.font){const l=s(a.font);l&&o.push(l)}if(a.bigFont){const l=s(a.bigFont);l&&o.push(l)}if(a.extendedFont){const l=s(a.extendedFont);l&&o.push(l)}e.set(a.name,o)});const n=new Set;return this.getFontsInBlock(t.entities,t.blocks,e,n),Array.from(n)}getFontsInBlock(t,e,s,n){const r=/\\f(.*?)\|/g;t.forEach(a=>{if(a.type=="MTEXT"){const o=a;[...o.text.matchAll(r)].forEach(d=>{n.add(d[1].toLowerCase())});const c=s.get(o.styleName);c==null||c.forEach(d=>n.add(d))}else if(a.type=="TEXT"){const o=a,l=s.get(o.styleName);l==null||l.forEach(c=>n.add(c))}else if(a.type=="INSERT"){const l=e[a.name];l&&l.entities&&this.getFontsInBlock(l.entities,e,s,n)}})}async processEntities(t,e,s,n,r){const a=new sa;let o=t.entities;const l=o.length,c=new Tn(l,100-n.value,s);this.config.convertByEntityType&&(o=this.groupAndFlattenByType(o));const d=new Map;for(let g=0;g<l;g++){const p=o[g];if(p.type==="ATTRIB"){const m=a.convert(p);if(m&&m.ownerId&&m.ownerId!=="0"){let y=d.get(m==null?void 0:m.ownerId);y==null&&(y=[],d.set(m.ownerId,y)),y.push(m)}}}const u=e.tables.blockTable.modelSpace;await c.processChunk(async(g,p)=>{let m=[],y=g<p?o[g].type:"";for(let b=g;b<p;b++){const E=o[b];if(!(E.ownerBlockRecordSoftId&&E.ownerBlockRecordSoftId!==u.objectId)&&E.type!=="ATTRIB"){const I=a.convert(E);if(I){if(this.config.convertByEntityType&&E.type!==y&&(u.appendEntity(m),m=[],y=E.type),E.type==="INSERT"){const T=d.get(I.objectId);T&&T.length>0&&T.forEach(A=>{I.appendAttributes(A)})}m.push(I)}}}u.appendEntity(m);let w=n.value+p/l*(100-n.value);w>100&&(w=100),r&&await r(w,"ENTITY","IN-PROGRESS")})}async processEntitiesInBlock(t,e,s=!1){const n=new sa,r=t.length,a=[],o=e.objectId,l=[];for(let c=0;c<r;c++){const d=t[c],u=n.convert(d);u&&(d.type==="ATTRIB"?l.push(u):(!s||d.ownerBlockRecordSoftId===o)&&a.push(u))}l.forEach(c=>{const d=e.getIdAt(c.ownerId);d&&d.appendAttributes(c)}),e.appendEntity(a)}processBlocks(t,e){const s=t.blocks;for(const[n,r]of Object.entries(s)){let a=e.tables.blockTable.getAt(r.name);a||(a=new Z,a.objectId=r.handle,a.name=n,a.origin.copy(r.position),e.tables.blockTable.add(a)),r.entities?this.processEntitiesInBlock(r.entities,a):a.isPaperSapce&&this.processEntitiesInBlock(t.entities,a,!0)}}processHeader(t,e){const s=t.header;s.$ACADVER&&(e.version=s.$ACADVER),e.cecolor.colorIndex=s.$CECOLOR||256,e.angBase=s.$ANGBASE||0,e.angDir=s.$ANGDIR||0,s.$AUNITS!=null&&(e.aunits=s.$AUNITS),e.celtscale=s.$CELTSCALE||1,e.ltscale=s.$LTSCALE||1,s.$EXTMAX&&(e.extmax=s.$EXTMAX),s.$EXTMIN&&(e.extmin=s.$EXTMIN),s.$INSUNITS!=null&&(e.insunits=s.$INSUNITS),e.osmode=s.$OSMODE||0,e.pdmode=s.$PDMODE||0,e.pdsize=s.$PDSIZE||0,e.textstyle=s.$TEXTSTYLE||J}processBlockTables(t,e){var n;const s=(n=t.tables.BLOCK_RECORD)==null?void 0:n.entries;s&&s.length>0&&(e.tables.blockTable.removeAll(),s.forEach(r=>{const a=new Z;a.objectId=r.handle,a.name=r.name,a.layoutId=r.layoutObjects,a.blockInsertUnits=r.insertionUnits,a.explodability=r.explodability,a.blockScaling=r.scalability,r.bmpPreview&&(a.bmpPreview=r.bmpPreview),e.tables.blockTable.add(a)}))}processObjects(t,e){const s=t.objects.byName,n=new lu;if("LAYOUT"in s){const r=e.objects.layout;s.LAYOUT.forEach(a=>{const o=n.convertLayout(a,t);r.setAt(o.layoutName,o)})}if("IMAGEDEF"in s){const r=e.objects.imageDefinition;s.IMAGEDEF.forEach(a=>{const o=n.convertImageDef(a);r.setAt(o.objectId,o)})}}processViewports(t,e){var n;const s=(n=t.tables)==null?void 0:n.VPORT;if(s){this.processCommonTableAttrs(s,e.tables.viewportTable);const r=s.entries;r&&r.length>0&&r.forEach(a=>{const o=new Yn;this.processCommonTableEntryAttrs(a,o),a.circleSides&&(o.circleSides=a.circleSides),o.standardFlag=a.standardFlag,o.center.copy(a.center),o.lowerLeftCorner.copy(a.lowerLeftCorner),o.upperRightCorner.copy(a.upperRightCorner),a.snapBasePoint&&o.snapBase.copy(a.snapBasePoint),a.snapRotationAngle&&(o.snapAngle=a.snapRotationAngle),a.snapSpacing&&o.snapIncrements.copy(a.snapSpacing),a.majorGridLines&&(o.gridMajor=a.majorGridLines),a.gridSpacing&&o.gridIncrements.copy(a.gridSpacing),a.backgroundObjectId&&(o.backgroundObjectId=a.backgroundObjectId),o.gsView.center.copy(a.center),o.gsView.viewDirectionFromTarget.copy(a.viewDirectionFromTarget),o.gsView.viewTarget.copy(a.viewTarget),a.lensLength&&(o.gsView.lensLength=a.lensLength),a.frontClippingPlane&&(o.gsView.frontClippingPlane=a.frontClippingPlane),a.backClippingPlane&&(o.gsView.backClippingPlane=a.backClippingPlane),a.viewHeight&&(o.gsView.viewHeight=a.viewHeight),a.viewTwistAngle&&(o.gsView.viewTwistAngle=a.viewTwistAngle),a.frozenLayers&&(o.gsView.frozenLayers=a.frozenLayers),a.styleSheet&&(o.gsView.styleSheet=a.styleSheet),a.renderMode&&(o.gsView.renderMode=a.renderMode),a.viewMode&&(o.gsView.viewMode=a.viewMode),a.ucsIconSetting&&(o.gsView.ucsIconSetting=a.ucsIconSetting),a.ucsOrigin&&o.gsView.ucsOrigin.copy(a.ucsOrigin),a.ucsXAxis&&o.gsView.ucsXAxis.copy(a.ucsXAxis),a.ucsYAxis&&o.gsView.ucsYAxis.copy(a.ucsYAxis),a.orthographicType&&(o.gsView.orthographicType=a.orthographicType),a.shadePlotSetting&&(o.gsView.shadePlotSetting=a.shadePlotSetting),a.shadePlotObjectId&&(o.gsView.shadePlotObjectId=a.shadePlotObjectId),a.visualStyleObjectId&&(o.gsView.visualStyleObjectId=a.visualStyleObjectId),a.isDefaultLightingOn&&(o.gsView.isDefaultLightingOn=a.isDefaultLightingOn),a.defaultLightingType&&(o.gsView.defaultLightingType=a.defaultLightingType),a.brightness&&(o.gsView.brightness=a.brightness),a.contrast&&(o.gsView.contrast=a.contrast),a.ambientColor&&(o.gsView.ambientColor=a.ambientColor),e.tables.viewportTable.add(o)})}}processLayers(t,e){var n;const s=(n=t.tables)==null?void 0:n.LAYER;if(s){this.processCommonTableAttrs(s,e.tables.layerTable);const r=s.entries;r&&r.length>0&&r.forEach(a=>{const o=new tt;o.colorIndex=a.colorIndex;const l=new Yi({name:a.name,standardFlags:a.standardFlag,linetype:a.lineType,lineWeight:a.lineweight,isOff:a.colorIndex<0,color:o,isPlottable:a.isPlotting});this.processCommonTableEntryAttrs(a,l),e.tables.layerTable.add(l)})}}processLineTypes(t,e){var n;const s=(n=t.tables)==null?void 0:n.LTYPE;if(s){this.processCommonTableAttrs(s,e.tables.linetypeTable);const r=s.entries;r&&r.length>0&&r.forEach(a=>{const o=new pe(a);this.processCommonTableEntryAttrs(a,o),o.name=a.name,e.tables.linetypeTable.add(o)})}}processTextStyles(t,e){var n;const s=(n=t.tables)==null?void 0:n.STYLE;if(s){this.processCommonTableAttrs(s,e.tables.textStyleTable);const r=s.entries;r&&r.length>0&&r.forEach(a=>{const o=new $i(a);this.processCommonTableEntryAttrs(a,o),e.tables.textStyleTable.add(o)})}}processDimStyles(t,e){var n;const s=(n=t.tables)==null?void 0:n.DIMSTYLE;if(s){this.processCommonTableAttrs(s,e.tables.dimStyleTable);const r=s.entries;r&&r.length>0&&r.forEach(a=>{const o={name:a.name,ownerId:a.ownerObjectId,dimpost:a.DIMPOST||"",dimapost:a.DIMAPOST||"",dimscale:a.DIMSCALE,dimasz:a.DIMASZ,dimexo:a.DIMEXO,dimdli:a.DIMDLI,dimexe:a.DIMEXE,dimrnd:a.DIMRND,dimdle:a.DIMDLE,dimtp:a.DIMTP,dimtm:a.DIMTM,dimtxt:a.DIMTXT,dimcen:a.DIMCEN,dimtsz:a.DIMTSZ,dimaltf:a.DIMALTF,dimlfac:a.DIMLFAC,dimtvp:a.DIMTVP,dimtfac:a.DIMTFAC,dimgap:a.DIMGAP,dimaltrnd:a.DIMALTRND,dimtol:a.DIMTOL==null||a.DIMTOL==0?0:1,dimlim:a.DIMLIM==null||a.DIMLIM==0?0:1,dimtih:a.DIMTIH==null||a.DIMTIH==0?0:1,dimtoh:a.DIMTOH==null||a.DIMTOH==0?0:1,dimse1:a.DIMSE1==null||a.DIMSE1==0?0:1,dimse2:a.DIMSE2==null||a.DIMSE2==0?0:1,dimtad:a.DIMTAD,dimzin:a.DIMZIN,dimazin:a.DIMAZIN,dimalt:a.DIMALT,dimaltd:a.DIMALTD,dimtofl:a.DIMTOFL,dimsah:a.DIMSAH,dimtix:a.DIMTIX,dimsoxd:a.DIMSOXD,dimclrd:a.DIMCLRD,dimclre:a.DIMCLRE,dimclrt:a.DIMCLRT,dimadec:a.DIMADEC||0,dimunit:a.DIMUNIT||2,dimdec:a.DIMDEC,dimtdec:a.DIMTDEC,dimaltu:a.DIMALTU,dimalttd:a.DIMALTTD,dimaunit:a.DIMAUNIT,dimfrac:a.DIMFRAC,dimlunit:a.DIMLUNIT,dimdsep:a.DIMDSEP?a.DIMDSEP.toString():".",dimtmove:a.DIMTMOVE||0,dimjust:a.DIMJUST,dimsd1:a.DIMSD1,dimsd2:a.DIMSD2,dimtolj:a.DIMTOLJ,dimtzin:a.DIMTZIN,dimaltz:a.DIMALTZ,dimalttz:a.DIMALTTZ,dimfit:a.DIMFIT||0,dimupt:a.DIMUPT,dimatfit:a.DIMATFIT,dimtxsty:a.DIMTXSTY||J,dimldrblk:a.DIMLDRBLK||"",dimblk:a.DIMBLK||"",dimblk1:a.DIMBLK1||"",dimblk2:a.DIMBLK2||"",dimlwd:a.DIMLWD,dimlwe:a.DIMLWE},l=new je(o);this.processCommonTableEntryAttrs(a,l),e.tables.dimStyleTable.add(l)})}}processCommonTableAttrs(t,e){t.handle!=null&&(e.objectId=t.handle),e.ownerId=t.ownerObjectId}processCommonTableEntryAttrs(t,e){e.name="name"in t?t.name:"",t.handle!=null&&(e.objectId=t.handle),e.ownerId=t.ownerObjectId}groupAndFlattenByType(t){const e={},s=[];for(const n of t)e[n.type]||(e[n.type]=[],s.push(n.type)),e[n.type].push(n);return s.flatMap(n=>e[n])}}class al extends $n{constructor(t){super({}),this._database=t}async parse(){return{model:this._database,data:{unknownEntityCount:0}}}getFonts(){return[]}async processEntities(t,e,s,n,r){let a=t.tables.blockTable.modelSpace.newIterator().toArray();const o=a.length,l=new Tn(o,100-n.value,s);this.config.convertByEntityType&&(a=this.groupAndFlattenByType(a));const c=e.tables.blockTable.modelSpace;await l.processChunk(async(d,u)=>{let g=[],p=d<u?a[d].type:"";for(let m=d;m<u;m++){const y=a[m];this.config.convertByEntityType&&y.type!==p&&(this.triggerEvents(c,g),g=[],p=y.type),g.push(y)}if(this.triggerEvents(c,g),r){let m=n.value+u/o*(100-n.value);m>100&&(m=100),await r(m,"ENTITY","IN-PROGRESS")}})}processBlocks(){const t=this._database.tables.blockTable.newIterator();for(const e of t){const s=e.newIterator().toArray();this.triggerEvents(e,s)}}processHeader(){}processBlockTables(){}processObjects(){const t=this._database.objects.layout.newIterator();for(const s of t)this._database.events.dictObjetSet.dispatch({database:this._database,object:s,key:s.layoutName});const e=this._database.objects.imageDefinition.newIterator();for(const s of e)this._database.events.dictObjetSet.dispatch({database:this._database,object:s,key:s.objectId})}processViewports(){}processLayers(){this._database.tables.layerTable.newIterator().toArray().forEach(e=>{this._database.events.layerAppended.dispatch({database:this._database,layer:e})})}processLineTypes(){}processTextStyles(){}processDimStyles(){}groupAndFlattenByType(t){const e={},s=[];for(const n of t)e[n.type]||(e[n.type]=[],s.push(n.type)),e[n.type].push(n);return s.flatMap(n=>e[n])}triggerEvents(t,e){(t.isModelSapce||t.isPaperSapce)&&t.database.events.entityAppended.dispatch({database:t.database,entity:e})}}exports.ACAD_APPID=gn;exports.AC_DB_SYSTEM_VARIABLE_NAMES=Gl;exports.AcCmColor=tt;exports.AcCmColorMethod=S;exports.AcCmColorUtil=ce;exports.AcCmEntityColor=hl;exports.AcCmErrors=yt;exports.AcCmEventDispatcher=ll;exports.AcCmEventManager=q;exports.AcCmLoader=_l;exports.AcCmLoadingManager=ua;exports.AcCmObject=ha;exports.AcCmPerformanceCollector=Sn;exports.AcCmTask=ca;exports.AcCmTaskScheduler=da;exports.AcCmTransparency=Ui;exports.AcCmTransparencyMethod=ut;exports.AcDb2dPolyline=_i;exports.AcDb2dVertex=bn;exports.AcDb2dVertexType=so;exports.AcDb3PointAngularDimension=Fi;exports.AcDb3dPolyline=wi;exports.AcDb3dVertex=fn;exports.AcDb3dVertexType=io;exports.AcDbAbstractViewTableRecord=Xn;exports.AcDbAlignedDimension=Ri;exports.AcDbAngleUnits=vn;exports.AcDbArc=xi;exports.AcDbArcDimension=In;exports.AcDbAttribute=fi;exports.AcDbAttributeDefinition=bi;exports.AcDbAttributeFlags=K;exports.AcDbAttributeMTextFlag=Bt;exports.AcDbBaseWorker=cu;exports.AcDbBatchProcessing=Tn;exports.AcDbBlockReference=Qe;exports.AcDbBlockScaling=fo;exports.AcDbBlockTable=Mo;exports.AcDbBlockTableRecord=Z;exports.AcDbCircle=Ii;exports.AcDbCodePage=kn;exports.AcDbCurve=rt;exports.AcDbDataGenerator=So;exports.AcDbDatabase=Hl;exports.AcDbDatabaseConverter=$n;exports.AcDbDatabaseConverterManager=Ct;exports.AcDbDiametricDimension=zi;exports.AcDbDictionary=Ms;exports.AcDbDimArrowType=Ao;exports.AcDbDimStyleTable=To;exports.AcDbDimStyleTableRecord=je;exports.AcDbDimTextHorizontal=vo;exports.AcDbDimTextVertical=ko;exports.AcDbDimVerticalJustification=No;exports.AcDbDimZeroSuppression=Lo;exports.AcDbDimZeroSuppressionAngular=Oo;exports.AcDbDimension=re;exports.AcDbDuplicateRecordCloning=Eo;exports.AcDbDwgVersion=At;exports.AcDbDxfCode=En;exports.AcDbDxfConverter=rl;exports.AcDbDxfFiler=ia;exports.AcDbEllipse=Pi;exports.AcDbEntity=gt;exports.AcDbFace=Ei;exports.AcDbFileType=Is;exports.AcDbHatch=Ns;exports.AcDbHatchPatternType=As;exports.AcDbHatchStyle=ao;exports.AcDbHostApplicationServices=mi;exports.AcDbLayerTable=Co;exports.AcDbLayerTableRecord=Yi;exports.AcDbLayout=Hs;exports.AcDbLayoutDictionary=bo;exports.AcDbLayoutManager=Io;exports.AcDbLeader=Si;exports.AcDbLeaderAnnotationType=oo;exports.AcDbLine=Cs;exports.AcDbLineSpacingStyle=go;exports.AcDbLinetypeTable=Bo;exports.AcDbLinetypeTableRecord=pe;exports.AcDbMText=Bs;exports.AcDbObject=ae;exports.AcDbObjectIterator=Us;exports.AcDbOpenMode=_a;exports.AcDbOrdinateDimension=Vi;exports.AcDbOsnapMode=R;exports.AcDbPlotPaperUnits=mo;exports.AcDbPlotRotation=yo;exports.AcDbPlotSettings=xo;exports.AcDbPlotShadePlotResLevel=de;exports.AcDbPlotShadePlotType=Xe;exports.AcDbPlotStdScaleType=wo;exports.AcDbPlotType=_o;exports.AcDbPoint=vi;exports.AcDbPoly2dType=Ue;exports.AcDbPoly3dType=Ss;exports.AcDbPolyFaceMesh=Bi;exports.AcDbPolyFaceMeshFace=po;exports.AcDbPolyFaceMeshVertex=uo;exports.AcDbPolygonMesh=Ci;exports.AcDbPolygonMeshVertex=co;exports.AcDbPolyline=Ti;exports.AcDbRadialDimension=Di;exports.AcDbRasterImage=Rs;exports.AcDbRasterImageClipBoundaryType=ho;exports.AcDbRasterImageDef=Po;exports.AcDbRasterImageImageDisplayOpt=lo;exports.AcDbRay=ki;exports.AcDbRegAppTable=Vo;exports.AcDbRegAppTableRecord=Pn;exports.AcDbRegenerator=al;exports.AcDbRenderingCache=Je;exports.AcDbResultBuffer=Mn;exports.AcDbSpline=Fs;exports.AcDbSymbolTable=oe;exports.AcDbSymbolTableRecord=ye;exports.AcDbSysVarManager=zs;exports.AcDbSystemVariables=V;exports.AcDbTable=Ai;exports.AcDbText=Ke;exports.AcDbTextHorizontalMode=no;exports.AcDbTextStyleTable=Fo;exports.AcDbTextStyleTableRecord=$i;exports.AcDbTextVerticalMode=ro;exports.AcDbTrace=Mi;exports.AcDbUnitsValue=Un;exports.AcDbViewTable=Ro;exports.AcDbViewTableRecord=Yl;exports.AcDbViewport=Li;exports.AcDbViewportTable=zo;exports.AcDbViewportTableRecord=Yn;exports.AcDbWipeout=Oi;exports.AcDbWorkerApi=il;exports.AcDbWorkerManager=sl;exports.AcDbXline=Ni;exports.AcDbXrecord=Vl;exports.AcGeArea2d=ks;exports.AcGeBox2d=pt;exports.AcGeBox3d=C;exports.AcGeCatmullRomCurve3d=Xi;exports.AcGeCircArc2d=Ve;exports.AcGeCircArc3d=ze;exports.AcGeCurve2d=ts;exports.AcGeEllipseArc2d=Ls;exports.AcGeEllipseArc3d=Ze;exports.AcGeEuler=vl;exports.AcGeGeometryUtil=ja;exports.AcGeLine2d=Ft;exports.AcGeLine3d=ge;exports.AcGeLoop2d=Os;exports.AcGeMathUtil=L;exports.AcGeMatrix2d=Ds;exports.AcGeMatrix3d=Q;exports.AcGeNurbsCurve=Ot;exports.AcGePlane=Ws;exports.AcGePoint2d=v;exports.AcGePoint3d=x;exports.AcGePolyline2d=Vt;exports.AcGeQuaternion=We;exports.AcGeShape2d=Dn;exports.AcGeSpline3d=Rt;exports.AcGeTol=js;exports.AcGeVector2d=U;exports.AcGeVector3d=f;exports.AcGiArrowType=jn;exports.AcGiDefaultLightingType=Hn;exports.AcGiLineWeight=De;exports.AcGiMTextAttachmentPoint=ot;exports.AcGiMTextFlowDirection=ne;exports.AcGiOrthographicType=Gn;exports.AcGiRenderMode=Wn;exports.AcGiViewport=to;exports.AcTrStringUtil=yl;exports.ByBlock=yi;exports.ByLayer=qe;exports.DEBUG_MODE=gl;exports.DEFAULT_LINE_TYPE=$e;exports.DEFAULT_TEXT_STYLE=J;exports.DEFAULT_TOL=Rn;exports.DEG2RAD=Ln;exports.DefaultLoadingManager=pa;exports.FLOAT_TOL=Fe;exports.MLIGHTCAD_APPID=pn;exports.ORIGIN_POINT_2D=bl;exports.ORIGIN_POINT_3D=Fn;exports.RAD2DEG=On;exports.TAU=j;exports.TEMP_OBJECT_ID_PREFIX=ai;exports.acdbDisableOsnapMode=Fl;exports.acdbEnableOsnapMode=Bl;exports.acdbHasOsnapMode=Cl;exports.acdbHostApplicationServices=An;exports.acdbMaskToOsnapModes=Ol;exports.acdbOsnapModesToMask=Ll;exports.acdbToggleOsnapMode=Nl;exports.basisFunction=vs;exports.calculateCurveLength=Ha;exports.ceilPowerOfTwo=Na;exports.clamp=ie;exports.clone=ws;exports.computeParameterValues=Wa;exports.createWorkerApi=nl;exports.damp=Ia;exports.deepClone=cn;exports.defaults=Vs;exports.degToRad=ka;exports.dwgCodePageToEncoding=wa;exports.euclideanModulo=Nn;exports.evaluateNurbsPoint=Es;exports.floorPowerOfTwo=Ca;exports.generateAveragedKnots=Ga;exports.generateChordKnots=Il;exports.generateSqrtChordKnots=Pl;exports.generateUUID=xa;exports.generateUniformKnots=fl;exports.has=na;exports.intPartLength=Bn;exports.interpolateControlPoints=El;exports.interpolateNurbsCurve=Vn;exports.inverseLerp=fa;exports.isBetween=Ba;exports.isBetweenAngle=Fa;exports.isEmpty=ra;exports.isEqual=Ye;exports.isImperialUnits=jl;exports.isMetricUnits=Dl;exports.isPointInPolygon=zn;exports.isPolygonIntersect=Da;exports.isPowerOfTwo=Oa;exports.lerp=Cn;exports.log=fs;exports.mapLinear=ba;exports.normalizeAngle=Ps;exports.pingpong=Pa;exports.radToDeg=La;exports.randFloat=Ma;exports.randFloatSpread=Ta;exports.randInt=Aa;exports.relativeEps=Ra;exports.seededRandom=va;exports.setAcDbHostApplicationServicesProvider=ma;exports.setAcDbLayoutManagerFactory=ya;exports.setLogLevel=ml;exports.smootherstep=Sa;exports.smoothstep=Ea;