@mlightcad/data-model 1.7.4 → 1.7.5

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.
Files changed (37) hide show
  1. package/dist/data-model.cjs +3 -3
  2. package/dist/data-model.js +2021 -1964
  3. package/lib/converter/AcDbDxfConverter.d.ts.map +1 -1
  4. package/lib/converter/AcDbDxfConverter.js +4 -1
  5. package/lib/converter/AcDbDxfConverter.js.map +1 -1
  6. package/lib/database/AcDbDatabase.d.ts +14 -0
  7. package/lib/database/AcDbDatabase.d.ts.map +1 -1
  8. package/lib/database/AcDbDatabase.js +36 -2
  9. package/lib/database/AcDbDatabase.js.map +1 -1
  10. package/lib/database/AcDbDimStyleTableRecord.d.ts.map +1 -1
  11. package/lib/database/AcDbDimStyleTableRecord.js +2 -1
  12. package/lib/database/AcDbDimStyleTableRecord.js.map +1 -1
  13. package/lib/database/AcDbSysVarManager.d.ts.map +1 -1
  14. package/lib/database/AcDbSysVarManager.js +31 -0
  15. package/lib/database/AcDbSysVarManager.js.map +1 -1
  16. package/lib/database/AcDbSystemVariables.d.ts +7 -1
  17. package/lib/database/AcDbSystemVariables.d.ts.map +1 -1
  18. package/lib/database/AcDbSystemVariables.js +6 -0
  19. package/lib/database/AcDbSystemVariables.js.map +1 -1
  20. package/lib/entity/AcDbMText.d.ts.map +1 -1
  21. package/lib/entity/AcDbMText.js +3 -3
  22. package/lib/entity/AcDbMText.js.map +1 -1
  23. package/lib/entity/AcDbTable.d.ts.map +1 -1
  24. package/lib/entity/AcDbTable.js +3 -2
  25. package/lib/entity/AcDbTable.js.map +1 -1
  26. package/lib/entity/AcDbText.d.ts +1 -1
  27. package/lib/entity/AcDbText.d.ts.map +1 -1
  28. package/lib/entity/AcDbText.js +4 -4
  29. package/lib/entity/AcDbText.js.map +1 -1
  30. package/lib/misc/AcDbConstants.d.ts +6 -0
  31. package/lib/misc/AcDbConstants.d.ts.map +1 -1
  32. package/lib/misc/AcDbConstants.js +6 -0
  33. package/lib/misc/AcDbConstants.js.map +1 -1
  34. package/lib/misc/AcDbDataGenerator.d.ts.map +1 -1
  35. package/lib/misc/AcDbDataGenerator.js +4 -3
  36. package/lib/misc/AcDbDataGenerator.js.map +1 -1
  37. package/package.json +4 -4
@@ -1,5 +1,5 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var Fa=(n=>(n[n.Invalid=-9999]="Invalid",n[n.Start=0]="Start",n[n.Text=1]="Text",n[n.AttributeTag=2]="AttributeTag",n[n.BlockName=2]="BlockName",n[n.ShapeName=2]="ShapeName",n[n.SymbolTableName=2]="SymbolTableName",n[n.SymbolTableRecordName=2]="SymbolTableRecordName",n[n.MlineStyleName=2]="MlineStyleName",n[n.AttributePrompt=3]="AttributePrompt",n[n.Description=3]="Description",n[n.DimPostString=3]="DimPostString",n[n.DimStyleName=3]="DimStyleName",n[n.LinetypeProse=3]="LinetypeProse",n[n.TextFontFile=3]="TextFontFile",n[n.CLShapeName=4]="CLShapeName",n[n.DimensionAlternativePrefixSuffix=4]="DimensionAlternativePrefixSuffix",n[n.SymbolTableRecordComments=4]="SymbolTableRecordComments",n[n.TextBigFontFile=4]="TextBigFontFile",n[n.Handle=5]="Handle",n[n.DimensionBlock=5]="DimensionBlock",n[n.LinetypeName=6]="LinetypeName",n[n.DimBlk1=6]="DimBlk1",n[n.TextStyleName=7]="TextStyleName",n[n.DimBlk2=7]="DimBlk2",n[n.LayerName=8]="LayerName",n[n.CLShapeText=9]="CLShapeText",n[n.XCoordinate=10]="XCoordinate",n[n.YCoordinate=20]="YCoordinate",n[n.ZCoordinate=30]="ZCoordinate",n[n.Real=40]="Real",n[n.TxtSize=40]="TxtSize",n[n.ViewportHeight=40]="ViewportHeight",n[n.Angle=50]="Angle",n[n.ViewportSnapAngle=50]="ViewportSnapAngle",n[n.Visibility=60]="Visibility",n[n.Int16=70]="Int16",n[n.Int32=90]="Int32",n[n.Int64=160]="Int64",n[n.Int8=280]="Int8",n[n.Thickness=39]="Thickness",n[n.Elevation=38]="Elevation",n[n.LinetypeScale=48]="LinetypeScale",n[n.DashLength=49]="DashLength",n[n.MlineOffset=49]="MlineOffset",n[n.LinetypeElement=49]="LinetypeElement",n[n.NormalX=210]="NormalX",n[n.NormalY=220]="NormalY",n[n.NormalZ=230]="NormalZ",n[n.UcsOrg=110]="UcsOrg",n[n.UcsOrientationX=111]="UcsOrientationX",n[n.UcsOrientationY=112]="UcsOrientationY",n[n.ViewHeight=45]="ViewHeight",n[n.ViewWidth=41]="ViewWidth",n[n.ViewLensLength=42]="ViewLensLength",n[n.ViewFrontClip=43]="ViewFrontClip",n[n.ViewBackClip=44]="ViewBackClip",n[n.ViewBrightness=141]="ViewBrightness",n[n.ViewContrast=142]="ViewContrast",n[n.ViewMode=71]="ViewMode",n[n.ViewportActive=68]="ViewportActive",n[n.ViewportAspect=41]="ViewportAspect",n[n.ViewportGrid=76]="ViewportGrid",n[n.ViewportIcon=74]="ViewportIcon",n[n.ViewportNumber=69]="ViewportNumber",n[n.ViewportSnap=75]="ViewportSnap",n[n.ViewportSnapPair=78]="ViewportSnapPair",n[n.ViewportSnapStyle=77]="ViewportSnapStyle",n[n.ViewportTwist=51]="ViewportTwist",n[n.ViewportVisibility=67]="ViewportVisibility",n[n.ViewportZoom=73]="ViewportZoom",n[n.Color=62]="Color",n[n.ColorRgb=420]="ColorRgb",n[n.ColorName=430]="ColorName",n[n.LineWeight=370]="LineWeight",n[n.PlotStyleNameType=380]="PlotStyleNameType",n[n.PlotStyleNameId=390]="PlotStyleNameId",n[n.GradientObjType=450]="GradientObjType",n[n.GradientAngle=460]="GradientAngle",n[n.GradientName=470]="GradientName",n[n.GradientColCount=453]="GradientColCount",n[n.GradientPatType=451]="GradientPatType",n[n.GradientTintType=452]="GradientTintType",n[n.GradientShift=461]="GradientShift",n[n.GradientColVal=463]="GradientColVal",n[n.GradientTintVal=462]="GradientTintVal",n[n.SoftPointerId=330]="SoftPointerId",n[n.HardPointerId=340]="HardPointerId",n[n.SoftOwnershipId=350]="SoftOwnershipId",n[n.HardOwnershipId=360]="HardOwnershipId",n[n.ArbitraryHandle=320]="ArbitraryHandle",n[n.ExtendedDataAsciiString=1e3]="ExtendedDataAsciiString",n[n.ExtendedDataRegAppName=1001]="ExtendedDataRegAppName",n[n.ExtendedDataControlString=1002]="ExtendedDataControlString",n[n.ExtendedDataLayerName=1003]="ExtendedDataLayerName",n[n.ExtendedDataBinaryChunk=1004]="ExtendedDataBinaryChunk",n[n.ExtendedDataHandle=1005]="ExtendedDataHandle",n[n.ExtendedDataXCoordinate=1010]="ExtendedDataXCoordinate",n[n.ExtendedDataWorldXCoordinate=1011]="ExtendedDataWorldXCoordinate",n[n.ExtendedDataWorldXDisp=1012]="ExtendedDataWorldXDisp",n[n.ExtendedDataWorldXDir=1013]="ExtendedDataWorldXDir",n[n.ExtendedDataYCoordinate=1020]="ExtendedDataYCoordinate",n[n.ExtendedDataWorldYCoordinate=1021]="ExtendedDataWorldYCoordinate",n[n.ExtendedDataWorldYDisp=1022]="ExtendedDataWorldYDisp",n[n.ExtendedDataWorldYDir=1023]="ExtendedDataWorldYDir",n[n.ExtendedDataZCoordinate=1030]="ExtendedDataZCoordinate",n[n.ExtendedDataWorldZCoordinate=1031]="ExtendedDataWorldZCoordinate",n[n.ExtendedDataWorldZDisp=1032]="ExtendedDataWorldZDisp",n[n.ExtendedDataWorldZDir=1033]="ExtendedDataWorldZDir",n[n.ExtendedDataReal=1040]="ExtendedDataReal",n[n.ExtendedDataDist=1041]="ExtendedDataDist",n[n.ExtendedDataScale=1042]="ExtendedDataScale",n[n.ExtendedDataInteger16=1070]="ExtendedDataInteger16",n[n.ExtendedDataInteger32=1071]="ExtendedDataInteger32",n[n.XTextString=300]="XTextString",n[n.XReal=140]="XReal",n[n.XInt16=170]="XInt16",n[n.XXInt16=270]="XXInt16",n[n.Subclass=100]="Subclass",n[n.ControlString=102]="ControlString",n[n.EmbeddedObjectStart=101]="EmbeddedObjectStart",n[n.End=-1]="End",n[n.FirstEntityId=-2]="FirstEntityId",n[n.HeaderId=-2]="HeaderId",n[n.XDataStart=-3]="XDataStart",n[n.Operator=-4]="Operator",n[n.PReactors=-5]="PReactors",n[n.XDictionary=-6]="XDictionary",n))(Fa||{});function Rc(n,t){for(var e=0;e<t.length;e++){const s=t[e];if(typeof s!="string"&&!Array.isArray(s)){for(const a in s)if(a!=="default"&&!(a in n)){const h=Object.getOwnPropertyDescriptor(s,a);h&&Object.defineProperty(n,a,h.get?h:{enumerable:!0,get:()=>s[a]})}}}return Object.freeze(Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}))}var ct=(n=>(n[n.ByColor=1]="ByColor",n[n.ByACI=2]="ByACI",n[n.ByLayer=3]="ByLayer",n[n.ByBlock=4]="ByBlock",n[n.None=0]="None",n))(ct||{});const pl={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},pa=[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 tn=class{static getColorByIndex(t){return pa[t]}static getIndexByColor(t){const e=pa.length-1;for(let s=1;s<e;++s)if(pa[s]===t)return s}static getColorByName(t){return pl[t.toLowerCase()]}static getNameByColor(t){for(const[e,s]of Object.entries(pl))if(s===t)return e}static getNameByIndex(t){const e=this.getColorByIndex(t);return this.getNameByColor(e)}},_e=class Fr{constructor(t=ct.ByLayer,e){this._colorMethod=t,this._colorMethod==ct.ByColor&&e==null?this._value=16777215:this._colorMethod==ct.ByACI?e==null?this._value=8:e===0?this._colorMethod=ct.ByBlock:e===256?this._colorMethod=ct.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 ct.ByColor:case ct.ByBlock:case ct.ByLayer:return this._value;case ct.ByACI:return this._value?tn.getColorByIndex(this._value):this._value;default:return}}setRGB(t,e,s){const a=Math.max(0,Math.min(255,Math.round(t))),h=Math.max(0,Math.min(255,Math.round(e))),u=Math.max(0,Math.min(255,Math.round(s)));return this._value=a<<16|h<<8|u,this._colorMethod=ct.ByColor,this}setRGBValue(t){return t==null||!Number.isFinite(t)?(console.warn("Invalid RGB value:",t),this):(this._value=t&16777215,this._colorMethod=ct.ByColor,this)}setRGBFromCss(t){if(!t)return this;const e=t.trim().toLowerCase();if(e.startsWith("#")){let h=0,u=0,m=0;if(e.length===7)h=parseInt(e.substr(1,2),16),u=parseInt(e.substr(3,2),16),m=parseInt(e.substr(5,2),16);else if(e.length===4)h=parseInt(e[1]+e[1],16),u=parseInt(e[2]+e[2],16),m=parseInt(e[3]+e[3],16);else return console.warn("Invalid hex color:",t),this;return this.setRGB(h,u,m)}const s=e.match(/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);if(s){const h=parseInt(s[1],10),u=parseInt(s[2],10),m=parseInt(s[3],10);return this.setRGB(h,u,m)}const a=tn.getColorByName(t);return a!==void 0?this.setRGBValue(a):(console.warn("Unknown CSS color string:",t),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})`}get colorIndex(){return this._colorMethod===ct.ByACI?this._value:this._colorMethod===ct.ByLayer?256:this._colorMethod===ct.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=ct.ByBlock,this._value=void 0):e===256?(this._colorMethod=ct.ByLayer,this._value=void 0):(this._colorMethod=ct.ByACI,this._value=e)}get isByColor(){return this._colorMethod===ct.ByColor}get isByACI(){return this._colorMethod===ct.ByACI}get isByLayer(){return this._colorMethod===ct.ByLayer}setByLayer(t){return this._colorMethod=ct.ByLayer,t==null?this._value=256:this._value=t,this}get isByBlock(){return this._colorMethod===ct.ByBlock}setByBlock(t){return this._colorMethod=ct.ByBlock,t==null?this._value=0:this._value=t,this}get colorName(){switch(this._colorMethod){case ct.ByLayer:return"ByLayer";case ct.ByBlock:return"ByBlock";case ct.ByColor:return this._value?tn.getNameByColor(this._value):"";case ct.ByACI:return this._value?tn.getNameByIndex(this._value):"";default:return}}set colorName(t){if(!t)return;const e=tn.getColorByName(t);e!==void 0?(this._value=e,this._colorMethod=ct.ByColor):console.warn("Unknown color name:",t)}clone(){const t=new Fr;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 ct.ByLayer:return"ByLayer";case ct.ByBlock:return"ByBlock";case ct.ByACI:return this._value!==void 0?String(this._value):"";case ct.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 Fr(ct.ByLayer);if(/^byblock$/i.test(e))return new Fr(ct.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 h=Number(s[1]),u=Number(s[2]),m=Number(s[3]),b=new Fr(ct.ByColor);return b.setRGB(h,u,m),b}if(/^\d{1,3},\d{1,3},\d{1,3}$/.test(e)){const[h,u,m]=e.split(",").map(Number),b=new Fr(ct.ByColor);return b.setRGB(h,u,m),b}if(/^\d+$/.test(e)){const h=parseInt(e,10);return new Fr(ct.ByACI,h)}if(/^book\$/i.test(e)){const h=e.substring(e.indexOf("$")+1),u=tn.getColorByName(h);if(u!=null)return new Fr(ct.ByColor,u);console.warn("Unknown color book entry:",t);return}const a=tn.getColorByName(e);if(a!=null)return new Fr(ct.ByColor,a);console.warn("Unknown color name:",t)}};class zc{constructor(t=ct.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=ct.ByColor,this._value=this._value&65535|(t&255)<<16}get green(){return this._value>>8&255}set green(t){this._colorMethod=ct.ByColor,this._value=this._value&16711935|(t&255)<<8}get blue(){return this._value&255}set blue(t){this._colorMethod=ct.ByColor,this._value=this._value&16776960|t&255}setRGB(t,e,s){this._colorMethod=ct.ByColor,this._value=(t&255)<<16|(e&255)<<8|s&255}get colorIndex(){return this._value}set colorIndex(t){this._colorMethod=ct.ByACI,this._value=t}get layerIndex(){return this._value}set layerIndex(t){this._colorMethod=ct.ByLayer,this._value=t}isByColor(){return this._colorMethod===ct.ByColor}isByLayer(){return this._colorMethod===ct.ByLayer}isByBlock(){return this._colorMethod===ct.ByBlock}isByACI(){return this._colorMethod===ct.ByACI}isNone(){return this._colorMethod===ct.None}get rawValue(){return this._value}set rawValue(t){this._value=t}}const $e={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")}};class Fc{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 a=s.indexOf(e);a!==-1&&s.splice(a,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 a=0,h=s.length;a<h;a++)s[a].call(this,t)}}}let le=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 Vs(n){return n===null||typeof n!="object"?n:Array.isArray(n)?[...n]:{...n}}function Ta(n){if(n===null||typeof n!="object")return n;if(n instanceof Date)return new Date(n.getTime());if(n instanceof RegExp)return new RegExp(n.source,n.flags);if(Array.isArray(n))return n.map(Ta);const t={};for(const e in n)Object.prototype.hasOwnProperty.call(n,e)&&(t[e]=Ta(n[e]));return t}function Qn(n,...t){for(const e of t)if(e)for(const s in e)Object.prototype.hasOwnProperty.call(e,s)&&n[s]===void 0&&(n[s]=e[s]);return n}function Cl(n,t){return n!=null&&Object.prototype.hasOwnProperty.call(n,t)}function Ol(n){return n==null?!0:Array.isArray(n)||typeof n=="string"?n.length===0:n instanceof Map||n instanceof Set?n.size===0:typeof n=="object"?Object.keys(n).length===0:!1}function qn(n,t){if(n===t)return!0;if(n==null||t==null)return n===t;if(typeof n!=typeof t)return!1;if(typeof n!="object")return n===t;if(Array.isArray(n)!==Array.isArray(t))return!1;if(Array.isArray(n)){if(n.length!==t.length)return!1;for(let a=0;a<n.length;a++)if(!qn(n[a],t[a]))return!1;return!0}const e=Object.keys(n),s=Object.keys(t);if(e.length!==s.length)return!1;for(const a of e)if(!Object.prototype.hasOwnProperty.call(t,a)||!qn(n[a],t[a]))return!1;return!0}var Vc=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Uc(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Bl={exports:{}};(function(n){(function(t,e){n.exports?n.exports=e():t.log=e()})(Vc,function(){var t=function(){},e="undefined",s=typeof window!==e&&typeof window.navigator!==e&&/Trident\/|MSIE /.test(window.navigator.userAgent),a=["trace","debug","info","warn","error"],h={},u=null;function m(O,V){var F=O[V];if(typeof F.bind=="function")return F.bind(O);try{return Function.prototype.bind.call(F,O)}catch{return function(){return Function.prototype.apply.apply(F,[O,arguments])}}}function b(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function _(O){return O==="debug"&&(O="log"),typeof console===e?!1:O==="trace"&&s?b:console[O]!==void 0?m(console,O):console.log!==void 0?m(console,"log"):t}function w(){for(var O=this.getLevel(),V=0;V<a.length;V++){var F=a[V];this[F]=V<O?t:this.methodFactory(F,O,this.name)}if(this.log=this.debug,typeof console===e&&O<this.levels.SILENT)return"No console available for logging"}function x(O){return function(){typeof console!==e&&(w.call(this),this[O].apply(this,arguments))}}function A(O,V,F){return _(O)||x.apply(this,arguments)}function T(O,V){var F=this,at,ft,st,H="loglevel";typeof O=="string"?H+=":"+O:typeof O=="symbol"&&(H=void 0);function dt(wt){var Bt=(a[wt]||"silent").toUpperCase();if(!(typeof window===e||!H)){try{window.localStorage[H]=Bt;return}catch{}try{window.document.cookie=encodeURIComponent(H)+"="+Bt+";"}catch{}}}function it(){var wt;if(!(typeof window===e||!H)){try{wt=window.localStorage[H]}catch{}if(typeof wt===e)try{var Bt=window.document.cookie,ye=encodeURIComponent(H),ve=Bt.indexOf(ye+"=");ve!==-1&&(wt=/^([^;]+)/.exec(Bt.slice(ve+ye.length+1))[1])}catch{}return F.levels[wt]===void 0&&(wt=void 0),wt}}function Wt(){if(!(typeof window===e||!H)){try{window.localStorage.removeItem(H)}catch{}try{window.document.cookie=encodeURIComponent(H)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function $t(wt){var Bt=wt;if(typeof Bt=="string"&&F.levels[Bt.toUpperCase()]!==void 0&&(Bt=F.levels[Bt.toUpperCase()]),typeof Bt=="number"&&Bt>=0&&Bt<=F.levels.SILENT)return Bt;throw new TypeError("log.setLevel() called with invalid level: "+wt)}F.name=O,F.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},F.methodFactory=V||A,F.getLevel=function(){return st??ft??at},F.setLevel=function(wt,Bt){return st=$t(wt),Bt!==!1&&dt(st),w.call(F)},F.setDefaultLevel=function(wt){ft=$t(wt),it()||F.setLevel(wt,!1)},F.resetLevel=function(){st=null,Wt(),w.call(F)},F.enableAll=function(wt){F.setLevel(F.levels.TRACE,wt)},F.disableAll=function(wt){F.setLevel(F.levels.SILENT,wt)},F.rebuild=function(){if(u!==F&&(at=$t(u.getLevel())),w.call(F),u===F)for(var wt in h)h[wt].rebuild()},at=$t(u?u.getLevel():"WARN");var qt=it();qt!=null&&(st=$t(qt)),w.call(F)}u=new T,u.getLogger=function(O){if(typeof O!="symbol"&&typeof O!="string"||O==="")throw new TypeError("You must supply a name when creating a logger.");var V=h[O];return V||(V=h[O]=new T(O,u.methodFactory)),V};var L=typeof window!==e?window.log:void 0;return u.noConflict=function(){return typeof window!==e&&window.log===u&&(window.log=L),u},u.getLoggers=function(){return h},u.default=u,u})})(Bl);var Rl=Bl.exports;const jc=Uc(Rl),Gc=Rc({__proto__:null,default:jc},[Rl]),Wc=!0,js=Gc;js.setLevel("debug");const Dc=n=>{try{js.setLevel(n)}catch(t){js.setLevel("error"),js.error(t)}};let zl=class Fl{constructor(t,e){this.events={attrChanged:new le,modelChanged:new le},this._changing=!1,this._previousAttributes={},this._pending=!1;const s=t||{};e&&Qn(s,e),this.attributes=s,this.changed={}}get(t){return this.attributes[t]}set(t,e,s){if(t==null)return this;let a;typeof t=="object"?(a=t,s=e):(a={},a[t]=e),s||(s={});const h=s.unset,u=s.silent,m=[],b=this._changing;this._changing=!0,b||(this._previousAttributes=Vs(this.attributes),this.changed={});const _=this.attributes,w=this.changed,x=this._previousAttributes;for(const A in a)e=a[A],qn(_[A],e)||m.push(A),qn(x[A],e)?delete w[A]:w[A]=e,h?delete _[A]:_[A]=e;if(!u){m.length&&(this._pending=s);for(let A=0;A<m.length;A++)this.events.attrChanged.dispatch({object:this,attrName:m[A],attrValue:_[m[A]],options:s})}if(b)return this;if(!u)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?!Ol(this.changed):Cl(this.changed,t)}changedAttributes(t){if(!t)return this.hasChanged()?Vs(this.changed):{};const e=this._changing?this._previousAttributes:this.attributes,s={};for(const a in t){const h=t[a];qn(e[a],h)||(s[a]=h)}return s}previous(t){return t==null||!this._previousAttributes?null:this._previousAttributes[t]}previousAttributes(){return Vs(this._previousAttributes)}clone(){const t=Vs(this.attributes);return new Fl(t)}},Va=class Us{constructor(){this.entries=new Map}static getInstance(){return Us.instance||(Us.instance=new Us),Us.instance}collect(t){this.entries.set(t.name,t)}printAll(){for(const[t,e]of this.entries)console.log(`${t}:`),console.log(e.format())}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 Hc{static formatBytes(t,e=2){if(t===0)return"0 B";const s=1024,a=Math.max(0,e),h=["B","KB","MB","GB","TB"],u=Math.floor(Math.log(t)/Math.log(s)),m=t/Math.pow(s,u);return`${parseFloat(m.toFixed(a))} ${h[u]}`}}var ke=(n=>(n[n.ByLayer=0]="ByLayer",n[n.ByBlock=1]="ByBlock",n[n.ByAlpha=2]="ByAlpha",n[n.ErrorValue=3]="ErrorValue",n))(ke||{});let Zi=class fr{constructor(t){t!==void 0?(this._method=ke.ByAlpha,this._alpha=fr.clampAlpha(t)):(this._method=ke.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=fr.clampAlpha(t),this._method=ke.ByAlpha}get percentage(){if(this._method===ke.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===ke.ByAlpha}get isByBlock(){return this._method===ke.ByBlock}get isByLayer(){return this._method===ke.ByLayer}get isClear(){return this.isByAlpha&&this._alpha===0}get isSolid(){return this.isByAlpha&&this._alpha===255}get isInvalid(){return this._method===ke.ErrorValue}serialize(){return this._method<<24|this._alpha}clone(){const t=new fr;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 h=new fr;return h._method=ke.ByLayer,h}if(/^byblock$/i.test(e)){const h=new fr;return h._method=ke.ByBlock,h}const s=Number(e);if(Number.isInteger(s)&&s>=0&&s<=255)return new fr(s);const a=new fr;return a._method=ke.ErrorValue,a}static deserialize(t){const e=t>>>24&255,s=t&255,a=Object.values(ke)[e]??ke.ErrorValue,h=new fr;return h._method=a,h._alpha=fr.clampAlpha(s),h}};class Vl{constructor(t){this.name=t}run(t){throw new Error("run() must be implemented by subclass")}}let Ul=class{constructor(){this.tasks=[],this.onProgress=()=>{},this.onComplete=()=>{},this.onError=()=>!1}scheduleTask(t){return new Promise((e,s)=>{const a=()=>{Promise.resolve(t()).then(e).catch(s)};typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(a):setTimeout(a,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 a=0;a<e;a++){const h=this.tasks[a];try{s=await this.scheduleTask(async()=>{const u=await h.run(s);return this.onProgress((a+1)/e,h),u})}catch(u){if(this.onError({error:u,taskIndex:a,task:h}))return Promise.reject(u)}}this.onComplete(s)}},jl=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 a=this.handlers[e],h=this.handlers[e+1];if(a.global&&(a.lastIndex=0),a.test(t))return h}return null}};const Gl=new jl;class qc{constructor(t){this.manager=t!==void 0?t:Gl,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}loadAsync(t,e){return new Promise((s,a)=>{this.load(t,s,e,a)})}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}}class Ua{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 a=()=>{Promise.resolve(t()).then(e).catch(s)};typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(a):setTimeout(a,0)})}async processChunk(t,e){if(this._count<=0){await(e==null?void 0:e());return}let s=0;const a=async()=>{const h=s,u=Math.min(s+this._chunkSize,this._count);await t(h,u),s=u,s<this._count&&await this.scheduleTask(a)};await a(),await(e==null?void 0:e())}}var ja=(n=>(n[n.DecimalDegrees=0]="DecimalDegrees",n[n.DegreesMinutesSeconds=1]="DegreesMinutesSeconds",n[n.Gradians=2]="Gradians",n[n.Radians=3]="Radians",n[n.SurveyorsUnits=4]="SurveyorsUnits",n))(ja||{});class Jn{static get instance(){return this._instance||(this._instance=new Jn),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,a=[],h=!0,u,m){var _;const b=[];if(e!=null){const w=this.createKey(e.name,s);let x;if(this.has(w))x=this.get(w);else{const A=(_=t.basePoint)==null?void 0:_.clone();t.basePoint=void 0;const T=e.newIterator();let L=!0;for(const O of T)if(O.color.isByBlock&&s?(ml.copy(O.color),O.color.setRGBValue(s),this.addEntity(O,b,t),O.color.copy(ml)):this.addEntity(O,b,t),L&&b.length>0){const V=b[0];t.basePoint=V.basePoint,L=!1}x=t.group(b),x&&h&&ue.name&&!ue.name.startsWith("*U")&&this.set(w,x),t.basePoint=A}return x&&u&&(x.applyMatrix(u),m&&(m.x!=0||m.y!=0||m.z!=1)&&(u.setFromExtrusionDirection(m),x.applyMatrix(u))),x&&a&&a.length>0&&(x.bakeTransformToChildren(),a.forEach(A=>x.addChild(A))),x}else return t.group(b)}addEntity(t,e,s){const a=t.worldDraw(s);a&&(this.attachEntityInfo(a,t),e.push(a))}attachEntityInfo(t,e){t.objectId=e.objectId,t.ownerId=e.ownerId,t.layerName=e.layer,t.visible=e.visibility}}const ml=new _e;var Ga=(n=>(n[n.UTF8=0]="UTF8",n[n.US_ASCII=1]="US_ASCII",n[n.ISO_8859_1=2]="ISO_8859_1",n[n.ISO_8859_2=3]="ISO_8859_2",n[n.ISO_8859_3=4]="ISO_8859_3",n[n.ISO_8859_4=5]="ISO_8859_4",n[n.ISO_8859_5=6]="ISO_8859_5",n[n.ISO_8859_6=7]="ISO_8859_6",n[n.ISO_8859_7=8]="ISO_8859_7",n[n.ISO_8859_8=9]="ISO_8859_8",n[n.ISO_8859_9=10]="ISO_8859_9",n[n.CP437=11]="CP437",n[n.CP850=12]="CP850",n[n.CP852=13]="CP852",n[n.CP855=14]="CP855",n[n.CP857=15]="CP857",n[n.CP860=16]="CP860",n[n.CP861=17]="CP861",n[n.CP863=18]="CP863",n[n.CP864=19]="CP864",n[n.CP865=20]="CP865",n[n.CP869=21]="CP869",n[n.CP932=22]="CP932",n[n.MACINTOSH=23]="MACINTOSH",n[n.BIG5=24]="BIG5",n[n.CP949=25]="CP949",n[n.JOHAB=26]="JOHAB",n[n.CP866=27]="CP866",n[n.ANSI_1250=28]="ANSI_1250",n[n.ANSI_1251=29]="ANSI_1251",n[n.ANSI_1252=30]="ANSI_1252",n[n.GB2312=31]="GB2312",n[n.ANSI_1253=32]="ANSI_1253",n[n.ANSI_1254=33]="ANSI_1254",n[n.ANSI_1255=34]="ANSI_1255",n[n.ANSI_1256=35]="ANSI_1256",n[n.ANSI_1257=36]="ANSI_1257",n[n.ANSI_874=37]="ANSI_874",n[n.ANSI_932=38]="ANSI_932",n[n.ANSI_936=39]="ANSI_936",n[n.ANSI_949=40]="ANSI_949",n[n.ANSI_950=41]="ANSI_950",n[n.ANSI_1361=42]="ANSI_1361",n[n.UTF16=43]="UTF16",n[n.ANSI_1258=44]="ANSI_1258",n[n.UNDEFINED=255]="UNDEFINED",n))(Ga||{});const Xc=["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"],Wl=n=>Xc[n],bi="Continuous",pi="ByLayer",Dl="ByBlock",we=["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 gl=1234567;const Wa=Math.PI/180,Da=180/Math.PI;function Hl(){const n=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,s=Math.random()*4294967295|0;return(we[n&255]+we[n>>8&255]+we[n>>16&255]+we[n>>24&255]+"-"+we[t&255]+we[t>>8&255]+"-"+we[t>>16&15|64]+we[t>>24&255]+"-"+we[e&63|128]+we[e>>8&255]+"-"+we[e>>16&255]+we[e>>24&255]+we[s&255]+we[s>>8&255]+we[s>>16&255]+we[s>>24&255]).toLowerCase()}function Vr(n,t,e){return Math.max(t,Math.min(e,n))}function Ha(n,t){return(n%t+t)%t}function ql(n,t,e,s,a){return s+(n-t)*(a-s)/(e-t)}function Xl(n,t,e){return n!==t?(e-n)/(t-n):0}function qa(n,t,e){return(1-e)*n+e*t}function Yl(n,t,e,s){return qa(n,t,1-Math.exp(-e*s))}function Kl(n,t=1){return t-Math.abs(Ha(n,t*2)-t)}function $l(n,t,e){return n<=t?0:n>=e?1:(n=(n-t)/(e-t),n*n*(3-2*n))}function Zl(n,t,e){return n<=t?0:n>=e?1:(n=(n-t)/(e-t),n*n*n*(n*(n*6-15)+10))}function Ql(n,t){return n+Math.floor(Math.random()*(t-n+1))}function Jl(n,t){return n+Math.random()*(t-n)}function th(n){return n*(.5-Math.random())}function eh(n){n!==void 0&&(gl=n);let t=gl+=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 rh(n){return n*Wa}function nh(n){return n*Da}function sh(n){return(n&n-1)===0&&n!==0}function ih(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function ah(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function Gs(n){const t=Math.PI*2;return(n%t+t)%t}function oh(n,t,e){return n>t&&n<e||n>e&&n<t}function lh(n,t,e,s=!1){return n=Gs(n),t=Gs(t),e=Gs(e),s?t>e?n<=t&&n>=e:n<=t||n>=e:t<e?n>=t&&n<=e:n>=t||n<=e}function Xa(n){return n=Math.abs(n),n<1?0:Math.ceil(Math.log10(Math.abs(n)+1))}function hh(n,t=1e-7){const e=Xa(n);return Math.max(Math.pow(10,e)*t,t)}const It={DEG2RAD:Wa,RAD2DEG:Da,generateUUID:Hl,clamp:Vr,euclideanModulo:Ha,mapLinear:ql,inverseLerp:Xl,lerp:qa,damp:Yl,pingpong:Kl,smoothstep:$l,smootherstep:Zl,randInt:Ql,randFloat:Jl,randFloatSpread:th,seededRandom:eh,degToRad:rh,radToDeg:nh,isPowerOfTwo:sh,ceilPowerOfTwo:ih,floorPowerOfTwo:ah,normalizeAngle:Gs,isBetween:oh,isBetweenAngle:lh,intPartLength:Xa,relativeEps:hh},Ma=class uh{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:a,y:h}=t;this.x=a,this.y=h;return}if(s===2){this.x=t,this.y=e;return}throw $e.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 uh(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,a=t.elements;return this.x=a[0]*e+a[3]*s+a[6],this.y=a[1]*e+a[4]*s+a[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),a=Math.sin(e),h=this.x-t.x,u=this.y-t.y;return this.x=h*s-u*a+t.x,this.y=h*a+u*s+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}relativeEps(t=1e-7){return Math.min(It.relativeEps(this.x,t),It.relativeEps(this.y,t))}*[Symbol.iterator](){yield this.x,yield this.y}};Ma.EMPTY=Object.freeze(new Ma(0,0));let te=Ma;const ka=class ch{constructor(t,e,s,a,h,u,m,b,_){this.elements=[1,0,0,0,1,0,0,0,1],t!=null&&e!=null&&s!=null&&a!=null&&h!=null&&u!=null&&m!=null&&b!=null&&_!=null&&this.set(t,e,s,a,h,u,m,b,_)}set(t,e,s,a,h,u,m,b,_){const w=this.elements;return w[0]=t,w[1]=a,w[2]=m,w[3]=e,w[4]=h,w[5]=b,w[6]=s,w[7]=u,w[8]=_,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,a=e.elements,h=this.elements,u=s[0],m=s[3],b=s[6],_=s[1],w=s[4],x=s[7],A=s[2],T=s[5],L=s[8],O=a[0],V=a[3],F=a[6],at=a[1],ft=a[4],st=a[7],H=a[2],dt=a[5],it=a[8];return h[0]=u*O+m*at+b*H,h[3]=u*V+m*ft+b*dt,h[6]=u*F+m*st+b*it,h[1]=_*O+w*at+x*H,h[4]=_*V+w*ft+x*dt,h[7]=_*F+w*st+x*it,h[2]=A*O+T*at+L*H,h[5]=A*V+T*ft+L*dt,h[8]=A*F+T*st+L*it,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],a=t[2],h=t[3],u=t[4],m=t[5],b=t[6],_=t[7],w=t[8];return e*u*w-e*m*_-s*h*w+s*m*b+a*h*_-a*u*b}invert(){const t=this.elements,e=t[0],s=t[1],a=t[2],h=t[3],u=t[4],m=t[5],b=t[6],_=t[7],w=t[8],x=w*u-m*_,A=m*b-w*h,T=_*h-u*b,L=e*x+s*A+a*T;if(L===0)return this.set(0,0,0,0,0,0,0,0,0);const O=1/L;return t[0]=x*O,t[1]=(a*_-w*s)*O,t[2]=(m*s-a*u)*O,t[3]=A*O,t[4]=(w*e-a*b)*O,t[5]=(a*h-m*e)*O,t[6]=T*O,t[7]=(s*b-_*e)*O,t[8]=(u*e-s*h)*O,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,a,h,u,m){const b=Math.cos(h),_=Math.sin(h);return this.set(s*b,s*_,-s*(b*u+_*m)+u+t,-a*_,a*b,-a*(-_*u+b*m)+m+e,0,0,1),this}scale(t,e){return this.premultiply(ma.makeScale(t,e)),this}rotate(t){return this.premultiply(ma.makeRotation(-t)),this}translate(t,e){return this.premultiply(ma.makeTranslation(t,e)),this}makeTranslation(t,e){return t instanceof te?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 a=0;a<9;a++)if(e[a]!==s[a])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 ch().fromArray(this.elements)}};ka.IDENTITY=Object.freeze(new ka);let Qi=ka;const ma=new Qi,wn=1e-6,Qt=2*Math.PI,Yc={x:0,y:0},Ya={x:0,y:0,z:0};class Ka{constructor(){this.equalPointTol=wn,this.equalVectorTol=wn}equalPoint2d(t,e){return new te(t).sub(e).length()<this.equalPointTol}equalPoint3d(t,e){return new Y(t).sub(e).length()<this.equalPointTol}static equalToZero(t,e=wn){return t<e&&t>-e}static equal(t,e,s=wn){return Math.abs(t-e)<s}static great(t,e,s=wn){return t-e>s}static less(t,e,s=wn){return t-e<s}}const $a=new Ka;function Za(n,t,e=!1){const s=n.x,a=n.y;let h=!1;const u=t.length;for(let m=0,b=u-1;m<u;b=m++){const _=t[m].x,w=t[m].y,x=t[b].x,A=t[b].y;let T=w>a!=A>a;e&&(T=w>=a!=A>=a),T&&s<(x-_)*(a-w)/(A-w)+_&&(h=!h)}return h}function dh(n,t){if(n.length===0||t.length===0)return!1;const e=new Ie().setFromPoints(n),s=new Ie().setFromPoints(t);if(!e.intersectsBox(s))return!1;for(let a=0;a<n.length;){if(Za(n[a],t,!0))return!0;a<n.length-1&&$a.equalPoint2d(n[a+1],n[a])&&++a,++a}return!1}const ph={isPointInPolygon:Za,isPolygonIntersect:dh};function mh(n,t){const e=[],s=t-1,a=n;for(let h=0;h<=a;h++)e.push(0);for(let h=1;h<=s-a;h++)e.push(h);for(let h=0;h<=a;h++)e.push(s-a+1);return e}function gh(n,t){const e=t.length-1,s=n,a=[0];let h=0;for(let m=1;m<=e;m++){const b=t[m][0]-t[m-1][0],_=t[m][1]-t[m-1][1],w=t[m][2]-t[m-1][2],x=Math.sqrt(b*b+_*_+w*w);h+=x,a.push(h)}const u=[];for(let m=0;m<=s;m++)u.push(0);for(let m=1;m<=e-s;m++){const b=a[m]/h;u.push(b*(e-s+1))}for(let m=0;m<=s;m++)u.push(e-s+1);return u}function fh(n,t){const e=t.length-1,s=n,a=[0];let h=0;for(let m=1;m<=e;m++){const b=t[m][0]-t[m-1][0],_=t[m][1]-t[m-1][1],w=t[m][2]-t[m-1][2],x=Math.sqrt(b*b+_*_+w*w),A=Math.sqrt(x);h+=A,a.push(h)}const u=[];for(let m=0;m<=s;m++)u.push(0);for(let m=1;m<=e-s;m++){const b=a[m]/h;u.push(b*(e-s+1))}for(let m=0;m<=s;m++)u.push(e-s+1);return u}function xi(n,t,e,s){if(t===0)return e>=s[n]&&e<s[n+1]?1:0;const a=s[n+t]-s[n],h=s[n+t+1]-s[n+1],u=a>1e-10?(e-s[n])/a:0,m=h>1e-10?(s[n+t+1]-e)/h:0;return u*xi(n,t-1,e,s)+m*xi(n+1,t-1,e,s)}function Ws(n,t,e,s,a){const h=s.length-1,u=t;if(n=Math.max(e[u],Math.min(e[h+1],n)),Math.abs(n-e[h+1])<1e-8)return[...s[h]];if(Math.abs(n-e[u])<1e-8)return[...s[0]];const m=[0,0,0];let b=0;for(let _=0;_<=h;_++){const w=xi(_,u,n,e),x=a[_]*w;m[0]+=s[_][0]*x,m[1]+=s[_][1]*x,m[2]+=s[_][2]*x,b+=x}if(b<1e-10){const _=e[e.length-u-1];if(Math.abs(n-_)<1e-8)return[...s[h]];if(Math.abs(n-e[u])<1e-8)return[...s[0]]}return b>1e-10&&(m[0]/=b,m[1]/=b,m[2]/=b),m}function _h(n,t,e,s){const a=n,h=t[a],u=t[t.length-a-1];let m=0;const b=1e3,_=(u-h)/b;let w=Ws(h,n,t,e,s);for(let O=1;O<=b;O++){const V=h+O*_,F=Ws(V,n,t,e,s),at=F[0]-w[0],ft=F[1]-w[1],st=F[2]-w[2];m+=Math.sqrt(at*at+ft*ft+st*st),w=F}const x=Ws(u,n,t,e,s),A=x[0]-w[0],T=x[1]-w[1],L=x[2]-w[2];return m+=Math.sqrt(A*A+T*T+L*L),m}function Kc(n){return n.map(t=>[...t])}class An{constructor(t=0,e=0,s=0,a=1){this._x=t,this._y=e,this._z=s,this._w=a}static slerpFlat(t,e,s,a,h,u,m){let b=s[a+0],_=s[a+1],w=s[a+2],x=s[a+3];const A=h[u+0],T=h[u+1],L=h[u+2],O=h[u+3];if(m===0){t[e+0]=b,t[e+1]=_,t[e+2]=w,t[e+3]=x;return}if(m===1){t[e+0]=A,t[e+1]=T,t[e+2]=L,t[e+3]=O;return}if(x!==O||b!==A||_!==T||w!==L){let V=1-m;const F=b*A+_*T+w*L+x*O,at=F>=0?1:-1,ft=1-F*F;if(ft>Number.EPSILON){const H=Math.sqrt(ft),dt=Math.atan2(H,F*at);V=Math.sin(V*dt)/H,m=Math.sin(m*dt)/H}const st=m*at;if(b=b*V+A*st,_=_*V+T*st,w=w*V+L*st,x=x*V+O*st,V===1-m){const H=1/Math.sqrt(b*b+_*_+w*w+x*x);b*=H,_*=H,w*=H,x*=H}}t[e]=b,t[e+1]=_,t[e+2]=w,t[e+3]=x}static multiplyQuaternionsFlat(t,e,s,a,h,u){const m=s[a],b=s[a+1],_=s[a+2],w=s[a+3],x=h[u],A=h[u+1],T=h[u+2],L=h[u+3];return t[e]=m*L+w*x+b*T-_*A,t[e+1]=b*L+w*A+_*x-m*T,t[e+2]=_*L+w*T+m*A-b*x,t[e+3]=w*L-m*x-b*A-_*T,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,a){return this._x=t,this._y=e,this._z=s,this._w=a,this._onChangeCallback(),this}clone(){return new An(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,a=t.y,h=t.z,u=t.order,m=Math.cos,b=Math.sin,_=m(s/2),w=m(a/2),x=m(h/2),A=b(s/2),T=b(a/2),L=b(h/2);switch(u){case"XYZ":this._x=A*w*x+_*T*L,this._y=_*T*x-A*w*L,this._z=_*w*L+A*T*x,this._w=_*w*x-A*T*L;break;case"YXZ":this._x=A*w*x+_*T*L,this._y=_*T*x-A*w*L,this._z=_*w*L-A*T*x,this._w=_*w*x+A*T*L;break;case"ZXY":this._x=A*w*x-_*T*L,this._y=_*T*x+A*w*L,this._z=_*w*L+A*T*x,this._w=_*w*x-A*T*L;break;case"ZYX":this._x=A*w*x-_*T*L,this._y=_*T*x+A*w*L,this._z=_*w*L-A*T*x,this._w=_*w*x+A*T*L;break;case"YZX":this._x=A*w*x+_*T*L,this._y=_*T*x+A*w*L,this._z=_*w*L-A*T*x,this._w=_*w*x-A*T*L;break;case"XZY":this._x=A*w*x-_*T*L,this._y=_*T*x-A*w*L,this._z=_*w*L+A*T*x,this._w=_*w*x+A*T*L;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+u)}return e===!0&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const s=e/2,a=Math.sin(s);return this._x=t.x*a,this._y=t.y*a,this._z=t.z*a,this._w=Math.cos(s),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,s=e[0],a=e[4],h=e[8],u=e[1],m=e[5],b=e[9],_=e[2],w=e[6],x=e[10],A=s+m+x;if(A>0){const T=.5/Math.sqrt(A+1);this._w=.25/T,this._x=(w-b)*T,this._y=(h-_)*T,this._z=(u-a)*T}else if(s>m&&s>x){const T=2*Math.sqrt(1+s-m-x);this._w=(w-b)/T,this._x=.25*T,this._y=(a+u)/T,this._z=(h+_)/T}else if(m>x){const T=2*Math.sqrt(1+m-s-x);this._w=(h-_)/T,this._x=(a+u)/T,this._y=.25*T,this._z=(b+w)/T}else{const T=2*Math.sqrt(1+x-s-m);this._w=(u-a)/T,this._x=(h+_)/T,this._y=(b+w)/T,this._z=.25*T}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(Vr(this.dot(t),-1,1)))}rotateTowards(t,e){const s=this.angleTo(t);if(s===0)return this;const a=Math.min(1,e/s);return this.slerp(t,a),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,a=t._y,h=t._z,u=t._w,m=e._x,b=e._y,_=e._z,w=e._w;return this._x=s*w+u*m+a*_-h*b,this._y=a*w+u*b+h*m-s*_,this._z=h*w+u*_+s*b-a*m,this._w=u*w-s*m-a*b-h*_,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);const s=this._x,a=this._y,h=this._z,u=this._w;let m=u*t._w+s*t._x+a*t._y+h*t._z;if(m<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,m=-m):this.copy(t),m>=1)return this._w=u,this._x=s,this._y=a,this._z=h,this;const b=1-m*m;if(b<=Number.EPSILON){const T=1-e;return this._w=T*u+e*this._w,this._x=T*s+e*this._x,this._y=T*a+e*this._y,this._z=T*h+e*this._z,this.normalize(),this}const _=Math.sqrt(b),w=Math.atan2(_,m),x=Math.sin((1-e)*w)/_,A=Math.sin(e*w)/_;return this._w=u*x+this._w*A,this._x=s*x+this._x*A,this._y=a*x+this._y*A,this._z=h*x+this._z*A,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(),a=Math.sqrt(1-s),h=Math.sqrt(s);return this.set(a*Math.sin(t),a*Math.cos(t),h*Math.sin(e),h*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 Me=class yh{constructor(t,e,s){this.x=0,this.y=0,this.z=0;const a=+(t!==void 0)+ +(e!==void 0)+ +(s!==void 0);if(a!==0){if(a===1&&t instanceof Array){this.x=t[0],this.y=t[1],this.z=t[2];return}if(a===1){const{x:h,y:u,z:m}=t;this.x=h,this.y=u,this.z=m||0;return}if(a===3){this.x=t,this.y=e,this.z=s;return}throw $e.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 yh(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(fl.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(fl.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,s=this.y,a=this.z,h=t.elements;return this.x=h[0]*e+h[3]*s+h[6]*a,this.y=h[1]*e+h[4]*s+h[7]*a,this.z=h[2]*e+h[5]*s+h[8]*a,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,s=this.y,a=this.z,h=t.elements,u=1/(h[3]*e+h[7]*s+h[11]*a+h[15]);return this.x=(h[0]*e+h[4]*s+h[8]*a+h[12])*u,this.y=(h[1]*e+h[5]*s+h[9]*a+h[13])*u,this.z=(h[2]*e+h[6]*s+h[10]*a+h[14])*u,this}applyQuaternion(t){const e=this.x,s=this.y,a=this.z,h=t.x,u=t.y,m=t.z,b=t.w,_=2*(u*a-m*s),w=2*(m*e-h*a),x=2*(h*s-u*e);return this.x=e+b*_+u*x-m*w,this.y=s+b*w+m*_-h*x,this.z=a+b*x+h*w-u*_,this}transformDirection(t){const e=this.x,s=this.y,a=this.z,h=t.elements;return this.x=h[0]*e+h[4]*s+h[8]*a,this.y=h[1]*e+h[5]*s+h[9]*a,this.z=h[2]*e+h[6]*s+h[10]*a,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(),a=t.length();return Math.abs(e)===s*a}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,a=t.y,h=t.z,u=e.x,m=e.y,b=e.z;return this.x=a*b-h*m,this.y=h*u-s*b,this.z=s*m-a*u,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 ga.copy(this).projectOnVector(t),this.sub(ga)}reflect(t){return this.sub(ga.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,a=this.z-t.z;return e*e+s*s+a*a}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(),a=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=s,this.z=a,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}};Me.ORIGIN=Object.freeze(new Me(0,0,0)),Me.X_AXIS=Object.freeze(new Me(1,0,0)),Me.NEGATIVE_X_AXIS=Object.freeze(new Me(-1,0,0)),Me.Y_AXIS=Object.freeze(new Me(0,1,0)),Me.NEGATIVE_Y_AXIS=Object.freeze(new Me(0,-1,0)),Me.Z_AXIS=Object.freeze(new Me(0,0,1)),Me.NEGATIVE_Z_AXIS=Object.freeze(new Me(0,0,-1));let Y=Me;const ga=new Y,fl=new An,Na=class vh{constructor(t,e,s,a,h,u,m,b,_,w,x,A,T,L,O,V){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!=null&&e!=null&&s!=null&&a!=null&&h!=null&&u!=null&&m!=null&&b!=null&&_!=null&&w!=null&&x!=null&&A!=null&&T!=null&&L!=null&&O!=null&&V!=null&&this.set(t,e,s,a,h,u,m,b,_,w,x,A,T,L,O,V)}set(t,e,s,a,h,u,m,b,_,w,x,A,T,L,O,V){const F=this.elements;return F[0]=t,F[4]=e,F[8]=s,F[12]=a,F[1]=h,F[5]=u,F[9]=m,F[13]=b,F[2]=_,F[6]=w,F[10]=x,F[14]=A,F[3]=T,F[7]=L,F[11]=O,F[15]=V,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 vh().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($a.equalPoint3d(t,Y.Z_AXIS))this.identity();else{const e=new Y(1,0,0);Math.abs(t.x)<1/64&&Math.abs(t.y)<1/64?e.crossVectors(Y.Y_AXIS,t).normalize():e.crossVectors(Y.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,a=1/jn.setFromMatrixColumn(t,0).length(),h=1/jn.setFromMatrixColumn(t,1).length(),u=1/jn.setFromMatrixColumn(t,2).length();return e[0]=s[0]*a,e[1]=s[1]*a,e[2]=s[2]*a,e[3]=0,e[4]=s[4]*h,e[5]=s[5]*h,e[6]=s[6]*h,e[7]=0,e[8]=s[8]*u,e[9]=s[9]*u,e[10]=s[10]*u,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose($c,t,Zc)}lookAt(t,e,s){const a=this.elements;return Ge.subVectors(t,e),Ge.lengthSq()===0&&(Ge.z=1),Ge.normalize(),Jr.crossVectors(s,Ge),Jr.lengthSq()===0&&(Math.abs(s.z)===1?Ge.x+=1e-4:Ge.z+=1e-4,Ge.normalize(),Jr.crossVectors(s,Ge)),Jr.normalize(),oi.crossVectors(Ge,Jr),a[0]=Jr.x,a[4]=oi.x,a[8]=Ge.x,a[1]=Jr.y,a[5]=oi.y,a[9]=Ge.y,a[2]=Jr.z,a[6]=oi.z,a[10]=Ge.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const s=t.elements,a=e.elements,h=this.elements,u=s[0],m=s[4],b=s[8],_=s[12],w=s[1],x=s[5],A=s[9],T=s[13],L=s[2],O=s[6],V=s[10],F=s[14],at=s[3],ft=s[7],st=s[11],H=s[15],dt=a[0],it=a[4],Wt=a[8],$t=a[12],qt=a[1],wt=a[5],Bt=a[9],ye=a[13],ve=a[2],ze=a[6],ne=a[10],ce=a[14],Q=a[3],Lt=a[7],de=a[11],vr=a[15];return h[0]=u*dt+m*qt+b*ve+_*Q,h[4]=u*it+m*wt+b*ze+_*Lt,h[8]=u*Wt+m*Bt+b*ne+_*de,h[12]=u*$t+m*ye+b*ce+_*vr,h[1]=w*dt+x*qt+A*ve+T*Q,h[5]=w*it+x*wt+A*ze+T*Lt,h[9]=w*Wt+x*Bt+A*ne+T*de,h[13]=w*$t+x*ye+A*ce+T*vr,h[2]=L*dt+O*qt+V*ve+F*Q,h[6]=L*it+O*wt+V*ze+F*Lt,h[10]=L*Wt+O*Bt+V*ne+F*de,h[14]=L*$t+O*ye+V*ce+F*vr,h[3]=at*dt+ft*qt+st*ve+H*Q,h[7]=at*it+ft*wt+st*ze+H*Lt,h[11]=at*Wt+ft*Bt+st*ne+H*de,h[15]=at*$t+ft*ye+st*ce+H*vr,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],a=t[8],h=t[12],u=t[1],m=t[5],b=t[9],_=t[13],w=t[2],x=t[6],A=t[10],T=t[14],L=t[3],O=t[7],V=t[11],F=t[15];return L*(+h*b*x-a*_*x-h*m*A+s*_*A+a*m*T-s*b*T)+O*(+e*b*T-e*_*A+h*u*A-a*u*T+a*_*w-h*b*w)+V*(+e*_*x-e*m*T-h*u*x+s*u*T+h*m*w-s*_*w)+F*(-a*m*w-e*b*x+e*m*A+a*u*x-s*u*A+s*b*w)}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 a=this.elements;return t instanceof Y?(a[12]=t.x,a[13]=t.y,a[14]=t.z):(a[12]=t,a[13]=e,a[14]=s),this}invert(){const t=this.elements,e=t[0],s=t[1],a=t[2],h=t[3],u=t[4],m=t[5],b=t[6],_=t[7],w=t[8],x=t[9],A=t[10],T=t[11],L=t[12],O=t[13],V=t[14],F=t[15],at=x*V*_-O*A*_+O*b*T-m*V*T-x*b*F+m*A*F,ft=L*A*_-w*V*_-L*b*T+u*V*T+w*b*F-u*A*F,st=w*O*_-L*x*_+L*m*T-u*O*T-w*m*F+u*x*F,H=L*x*b-w*O*b-L*m*A+u*O*A+w*m*V-u*x*V,dt=e*at+s*ft+a*st+h*H;if(dt===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const it=1/dt;return t[0]=at*it,t[1]=(O*A*h-x*V*h-O*a*T+s*V*T+x*a*F-s*A*F)*it,t[2]=(m*V*h-O*b*h+O*a*_-s*V*_-m*a*F+s*b*F)*it,t[3]=(x*b*h-m*A*h-x*a*_+s*A*_+m*a*T-s*b*T)*it,t[4]=ft*it,t[5]=(w*V*h-L*A*h+L*a*T-e*V*T-w*a*F+e*A*F)*it,t[6]=(L*b*h-u*V*h-L*a*_+e*V*_+u*a*F-e*b*F)*it,t[7]=(u*A*h-w*b*h+w*a*_-e*A*_-u*a*T+e*b*T)*it,t[8]=st*it,t[9]=(L*x*h-w*O*h-L*s*T+e*O*T+w*s*F-e*x*F)*it,t[10]=(u*O*h-L*m*h+L*s*_-e*O*_-u*s*F+e*m*F)*it,t[11]=(w*m*h-u*x*h-w*s*_+e*x*_+u*s*T-e*m*T)*it,t[12]=H*it,t[13]=(w*O*a-L*x*a+L*s*A-e*O*A-w*s*V+e*x*V)*it,t[14]=(L*m*a-u*O*a-L*s*b+e*O*b+u*s*V-e*m*V)*it,t[15]=(u*x*a-w*m*a+w*s*b-e*x*b-u*s*A+e*m*A)*it,this}scale(t){const e=this.elements,s=t.x,a=t.y,h=t.z;return e[0]*=s,e[4]*=a,e[8]*=h,e[1]*=s,e[5]*=a,e[9]*=h,e[2]*=s,e[6]*=a,e[10]*=h,e[3]*=s,e[7]*=a,e[11]*=h,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],a=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,s,a))}makeTranslation(t,e,s){return t instanceof Y?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),a=Math.sin(e),h=1-s,u=t.x,m=t.y,b=t.z,_=h*u,w=h*m;return this.set(_*u+s,_*m-a*b,_*b+a*m,0,_*m+a*b,w*m+s,w*b-a*u,0,_*b-a*m,w*b+a*u,h*b*b+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,a,h,u){return this.set(1,s,h,0,t,1,u,0,e,a,1,0,0,0,0,1),this}compose(t,e,s){const a=this.elements,h=e.x,u=e.y,m=e.z,b=e.w,_=h+h,w=u+u,x=m+m,A=h*_,T=h*w,L=h*x,O=u*w,V=u*x,F=m*x,at=b*_,ft=b*w,st=b*x,H=s.x,dt=s.y,it=s.z;return a[0]=(1-(O+F))*H,a[1]=(T+st)*H,a[2]=(L-ft)*H,a[3]=0,a[4]=(T-st)*dt,a[5]=(1-(A+F))*dt,a[6]=(V+at)*dt,a[7]=0,a[8]=(L+ft)*it,a[9]=(V-at)*it,a[10]=(1-(A+O))*it,a[11]=0,a[12]=t.x,a[13]=t.y,a[14]=t.z,a[15]=1,this}decompose(t,e,s){const a=this.elements;let h=jn.set(a[0],a[1],a[2]).length();const u=jn.set(a[4],a[5],a[6]).length(),m=jn.set(a[8],a[9],a[10]).length();this.determinant()<0&&(h=-h),t.x=a[12],t.y=a[13],t.z=a[14],or.copy(this);const b=1/h,_=1/u,w=1/m;return or.elements[0]*=b,or.elements[1]*=b,or.elements[2]*=b,or.elements[4]*=_,or.elements[5]*=_,or.elements[6]*=_,or.elements[8]*=w,or.elements[9]*=w,or.elements[10]*=w,e.setFromRotationMatrix(or),s.x=h,s.y=u,s.z=m,this}equals(t){const e=this.elements,s=t.elements;for(let a=0;a<16;a++)if(e[a]!==s[a])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}};Na.IDENTITY=Object.freeze(new Na);let Ke=Na;const jn=new Y,or=new Ke,$c=new Y(0,0,0),Zc=new Y(1,1,1),Jr=new Y,oi=new Y,Ge=new Y;class Nt{constructor(t=void 0,e=void 0){this.min=t==null?new Y(1/0,1/0,1/0):new Y(t.x,t.y,t.z),this.max=e==null?new Y(-1/0,-1/0,-1/0):new Y(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(fa.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=fa.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(s),this.max.copy(t).add(s),this}clone(){return new Nt().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 Y(0,0,0):new Y(0,0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new Y(0,0,0):new Y(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,fa).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:(Ir[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Ir[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Ir[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Ir[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Ir[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Ir[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Ir[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Ir[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Ir),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 Ir=[new Y,new Y,new Y,new Y,new Y,new Y,new Y,new Y],fa=new Y,_l=new te;class Ie{constructor(t=void 0,e=void 0){this.min=t==null?new te(1/0,1/0):new te(t.x,t.y),this.max=e==null?new te(-1/0,-1/0):new te(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=_l.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(s),this.max.copy(t).add(s),this}clone(){return new Ie().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 te(0,0):new te(0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new te(0,0):new te(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,_l).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 yl=new Y,Qc=new Y,Jc=new Qi;class ei{constructor(t=new Y(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,a){return this.normal.set(t,e,s),this.constant=a,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,s){const a=yl.subVectors(s,e).cross(Qc.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(a,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||Jc.getNormalMatrix(t),a=this.coplanarPoint(yl).applyMatrix4(t),h=this.normal.applyMatrix3(s).normalize();return this.constant=-a.dot(h),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 ei().copy(this)}}class kt extends te{static pointArrayToNumberArray(t){const e=new Array(t.length*2);return t.forEach((s,a)=>{s.toArray(e,a*2)}),e}}class W extends Y{static pointArrayToNumberArray(t,e=!0){const s=e?3:2,a=new Array(t.length*s);return t.forEach((h,u)=>{h.toArray(a,u*s)}),a}}const vl=new Ke,bl=new An,bh=class La{constructor(t=0,e=0,s=0,a=La.DEFAULT_ORDER){this._x=t,this._y=e,this._z=s,this._order=a}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,a=this._order){return this._x=t,this._y=e,this._z=s,this._order=a,this._onChangeCallback(),this}clone(){return new La(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 a=t.elements,h=a[0],u=a[4],m=a[8],b=a[1],_=a[5],w=a[9],x=a[2],A=a[6],T=a[10];switch(e){case"XYZ":this._y=Math.asin(Vr(m,-1,1)),Math.abs(m)<.9999999?(this._x=Math.atan2(-w,T),this._z=Math.atan2(-u,h)):(this._x=Math.atan2(A,_),this._z=0);break;case"YXZ":this._x=Math.asin(-Vr(w,-1,1)),Math.abs(w)<.9999999?(this._y=Math.atan2(m,T),this._z=Math.atan2(b,_)):(this._y=Math.atan2(-x,h),this._z=0);break;case"ZXY":this._x=Math.asin(Vr(A,-1,1)),Math.abs(A)<.9999999?(this._y=Math.atan2(-x,T),this._z=Math.atan2(-u,_)):(this._y=0,this._z=Math.atan2(b,h));break;case"ZYX":this._y=Math.asin(-Vr(x,-1,1)),Math.abs(x)<.9999999?(this._x=Math.atan2(A,T),this._z=Math.atan2(b,h)):(this._x=0,this._z=Math.atan2(-u,_));break;case"YZX":this._z=Math.asin(Vr(b,-1,1)),Math.abs(b)<.9999999?(this._x=Math.atan2(-w,_),this._y=Math.atan2(-x,h)):(this._x=0,this._y=Math.atan2(m,T));break;case"XZY":this._z=Math.asin(-Vr(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(A,_),this._y=Math.atan2(m,h)):(this._x=Math.atan2(-w,T),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,s===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,s=!0){return vl.makeRotationFromQuaternion(t),this.setFromRotationMatrix(vl,e,s)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return bl.setFromEuler(this),this.setFromQuaternion(bl,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}};bh.DEFAULT_ORDER="XYZ";let td=bh;class xh{constructor(){this._boundingBoxNeedsUpdate=!1}get boundingBoxNeedUpdate(){return this._boundingBoxNeedsUpdate}}let Qa=class extends xh{translate(t){return this.transform(new Qi().makeTranslation(t.x,t.y))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}};class Ji extends Qa{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 Ie}transform(t){return this._boundingBoxNeedsUpdate=!0,this}getPoints(t){const e=[];for(let s=0;s<this.loops.length;++s){const a=this.loops[s].getPoints(t);e.push(a)}return e}buildHierarchy(){var t;const e=this.getPoints(100),s=this.calculateBoundaryBoxes(e),a=this.sortBoundaryBoxesByAreas(s),h=new Map,u=a.length;for(let b=0;b<u;b++)h.set(a[b],{index:a[b],children:[]});const m={index:-1,children:[]};for(let b=0;b<u;b++){const _=a[b],w=e[_],x=s[_];let A=b+1;for(;A<u;A++){const T=a[A],L=e[T];if(s[T].containsBox(x)&&ph.isPointInPolygon(w[It.randInt(0,w.length-1)],L)){(t=h.get(T))==null||t.children.push(h.get(_));break}}A===u&&m.children.push(h.get(_))}return m}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),a=this.polygonArea(s);e===0?t+=Math.abs(a):t-=Math.abs(a)}return t}polygonArea(t){const e=t.length;if(e<3)return 0;let s=0;for(let a=0,h=e-1;a<e;h=a++){const u=t[h],m=t[a];s+=u.x*m.y-m.x*u.y}return s*.5}calculateBoundaryBoxes(t){const e=[];return t.forEach(s=>{e.push(new Ie().setFromPoints(s))}),e}sortBoundaryBoxesByAreas(t){const e=[];t.forEach((a,h)=>{const u=a.size,m=u.width*u.height;e.push({area:m,index:h})}),e.sort((a,h)=>a.area-h.area);const s=[];return e.forEach(a=>{s.push(a.index)}),s}}class ts extends Qa{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,a=this.getPoint(0),h=0;e.push(0);for(let u=1;u<=t;u++)s=this.getPoint(u/t),h+=s.distanceTo(a),e.push(h),a=s;return e}getUtoTmapping(t,e){const s=this.getLengths();let a=0;const h=s.length;let u;e?u=e:u=t*s[h-1];let m=0,b=h-1,_;for(;m<=b;)if(a=Math.floor(m+(b-m)/2),_=s[a]-u,_<0)m=a+1;else if(_>0)b=a-1;else{b=a;break}if(a=b,s[a]===u)return a/(h-1);const w=s[a],x=s[a+1]-w,A=(u-w)/x;return(a+A)/(h-1)}getTangent(t){let e=t-1e-4,s=t+1e-4;e<0&&(e=0),s>1&&(s=1);const a=this.getPoint(e),h=this.getPoint(s),u=new kt;return u.copy(h).sub(a).normalize(),u}getTangentAt(t){const e=this.getUtoTmapping(t);return this.getTangent(e)}}class Xn extends ts{constructor(t,e,s,a,h){super();const u=+(t!==void 0)+ +(e!==void 0)+ +(s!==void 0)+ +(a!==void 0)+ +(h!==void 0);if(u==3)typeof t=="object"&&typeof e=="object"&&typeof s=="object"?this.createByThreePoints(t,e,s):this.createByStartEndPointsAndBulge(t,e,s);else if(u==5){const m=t;this.center=new kt(m.x,m.y),this.radius=e,this._clockwise=h,this._startAngle=this._clockwise?this._mirrorAngle(It.normalizeAngle(s)):It.normalizeAngle(s),this._endAngle=this._clockwise?this._mirrorAngle(It.normalizeAngle(a)):It.normalizeAngle(a)}else throw $e.ILLEGAL_PARAMETERS}createByThreePoints(t,e,s){const a=(it,Wt)=>({x:(it.x+Wt.x)/2,y:(it.y+Wt.y)/2}),h=(it,Wt)=>(Wt.y-it.y)/(Wt.x-it.x),u=it=>-1/it,m=a(t,e),b=a(e,s),_=h(t,e),w=h(e,s),x=u(_),A=u(w),T=(it,Wt,$t,qt)=>{const wt=(qt-Wt)/(it-$t),Bt=it*wt+Wt;return{x:wt,y:Bt}},L=m.y-x*m.x,O=b.y-A*b.x,V=T(x,L,A,O),F=Math.sqrt(Math.pow(t.x-V.x,2)+Math.pow(t.y-V.y,2)),at=(it,Wt)=>Math.atan2(it.y-Wt.y,it.x-Wt.x),ft=at(t,V),st=at(e,V),H=at(s,V),dt=H>ft&&H<st||ft>H&&ft<st||st>H&&st<ft;this.center=V,this.radius=F,this._clockwise=!dt,this._startAngle=ft,this._endAngle=H}createByStartEndPointsAndBulge(t,e,s){let a,h,u;s<0?(a=Math.atan(-s)*4,h=new te(t),u=new te(e)):(a=Math.atan(s)*4,h=new te(e),u=new te(t));const m=new te().subVectors(u,h),b=m.length(),_=new te().addVectors(h,m.multiplyScalar(.5)),w=Math.abs(b/2/Math.tan(a/2)),x=m.normalize();let A;if(a<Math.PI){const T=new te(x.x*Math.cos(Math.PI/2)-x.y*Math.sin(Math.PI/2),x.y*Math.cos(Math.PI/2)+x.x*Math.sin(Math.PI/2));A=_.add(T.multiplyScalar(-w))}else{const T=new te(x.x*Math.cos(Math.PI/2)-x.y*Math.sin(Math.PI/2),x.y*Math.cos(Math.PI/2)+x.x*Math.sin(Math.PI/2));A=_.add(T.multiplyScalar(w))}s<0?(this._startAngle=Math.atan2(h.y-A.y,h.x-A.x),this._endAngle=Math.atan2(u.y-A.y,u.x-A.x)):(this._startAngle=Math.atan2(u.y-A.y,u.x-A.x),this._endAngle=Math.atan2(h.y-A.y,h.x-A.x)),this._clockwise=s<0,this.center=A,this.radius=u.sub(A).length()}get center(){return this._center}set center(t){this._center=new kt(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(It.normalizeAngle(t)):It.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==Qt?t:It.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?It.normalizeAngle(t-e):It.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._getInternalAngle(this.endAngle),s=It.normalizeAngle((t+e)/2),a=this._clockwise?this._mirrorAngle(s):s;return this.getPointAtAngle(a)}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 h of e){const u=this._getInternalAngle(h);It.isBetweenAngle(u,this._getInternalAngle(this.startAngle),this._getInternalAngle(this.endAngle),this.clockwise)&&t.push(this.getPointAtAngle(h))}const s=t.map(h=>h.x),a=t.map(h=>h.y);return new Ie(new kt(Math.min(...s),Math.min(...a)),new kt(Math.max(...s),Math.max(...a)))}get length(){return Math.abs(this.deltaAngle*this.radius)}transform(t){return 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),a=this.center.y+this.radius*Math.sin(e);return new kt(s,a)}getPoints(t=100){const e=[];let s=this.deltaAngle,a=this._getInternalAngle(this.startAngle);if(this.closed&&(s=Qt,a=0),this.clockwise)for(let h=0;h<=t;h++){const u=a-s*(h/t),m=this._clockwise?this._mirrorAngle(u):u,b=this.getPointAtAngle(m);e.push(new kt(b.x,b.y))}else for(let h=0;h<=t;h++){const u=a+s*(h/t),m=this._clockwise?this._mirrorAngle(u):u,b=this.getPointAtAngle(m);e.push(new kt(b.x,b.y))}return e}}class ed extends xh{translate(t){return this.transform(new Ke().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 ri extends ed{}let Yn=class wh extends ri{constructor(t,e){super(),this._start=new W(t),this._end=new W(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 Y().subVectors(this.endPoint,this.startPoint).normalize()}get midPoint(){return new W((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(pn).normalize();return new W(this._start).addScaledVector(s,t)}else{const s=this.delta(pn).normalize();return new W(this._end).addScaledVector(s,t)}}extend(t,e=!1){if(e){const s=pn.subVectors(this._start,this._end).normalize();this._start=new W(this._start).addScaledVector(s,t)}else{const s=this.delta(pn).normalize();this._end=new W(this._end).addScaledVector(s,t)}return this._boundingBoxNeedsUpdate=!0,this}closestPointToPointParameter(t,e){xl.subVectors(t,this._start),li.subVectors(this.endPoint,this.startPoint);const s=li.dot(li);let a=li.dot(xl)/s;return e&&(a=It.clamp(a,0,1)),a}closestPointToPoint(t,e,s){const a=this.closestPointToPointParameter(t,e);return this.delta(s).multiplyScalar(a).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=pn.subVectors(t,this.startPoint).dot(e);return new W().copy(e).multiplyScalar(s).add(this.startPoint)}perpPoint(t){const e=this.direction,s=this.startPoint,a=pn.subVectors(t,s).dot(e),h=pn.copy(e).multiplyScalar(a);return new W().addVectors(s,h)}calculateBoundingBox(){const t=new W(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 W(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 Nt(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 wh(this._start.clone(),this._end.clone())}};const pn=new Y,xl=new Y,li=new Y;let Ja=class mi extends ri{static computeCenterPoint(t,e,s){const a=new Y().addVectors(t,e).multiplyScalar(.5),h=new Y().addVectors(t,s).multiplyScalar(.5),u=new Y().subVectors(e,t),m=new Y().subVectors(s,t),b=new Y().crossVectors(u,m).normalize();if(b.lengthSq()===0)return console.error("Points are collinear and cannot form a valid arc."),null;const _=new Y().crossVectors(u,b).normalize(),w=new Y().crossVectors(m,b).normalize(),x=_.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),A=w.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),T=new Yn(a,a.clone().add(x)),L=new Yn(h,h.clone().add(A)),O=new Y;return T.closestPointToPoint(L.startPoint,!0,O)?O:(console.error("Cannot find a valid center for the arc."),null)}static createByThreePoints(t,e,s){const a=mi.computeCenterPoint(t,e,s);if(a){const h=a.distanceTo(t),u=new Y().subVectors(t,a),m=new Y().subVectors(e,a),b=Math.atan2(u.y,u.x),_=Math.atan2(m.y,m.x);return new mi(a,h,b,_,Y.Z_AXIS)}}constructor(t,e,s,a,h,u=Y.X_AXIS){super(),this.center=t,this.radius=e,this.startAngle=s,this.endAngle=a,this.normal=h,this.refVec=u,(a-s)%Qt==0?(this.startAngle=0,this.endAngle=Qt):(this.startAngle=s,this.endAngle=a)}get center(){return this._center}set center(t){this._center=new W(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(t){if(t<0)throw $e.ILLEGAL_PARAMETERS;this._radius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=It.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==Qt?t:It.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return It.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 Y(t.x,t.y,t.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get refVec(){return this._refVec}set refVec(t){this._refVec=new Y(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=Qt);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 Y(t.x,t.y,t.z||0),s=this.center,a=this.normal,h=e.clone().sub(s).dot(a),u=e.clone().sub(a.clone().multiplyScalar(h)).clone().sub(s);if(u.lengthSq()===0)return this.startPoint.clone();u.normalize().multiplyScalar(this.radius);const m=s.clone().add(u),b=this.getAngle(m.clone()),_=this.startAngle,w=this.deltaAngle;let x=It.normalizeAngle(b-_);x<0&&(x=0),x>w&&(x=w);const A=this.getPointAtAngle(_+x),T=A.distanceTo(e),L=this.startPoint.distanceTo(e),O=this.endPoint.distanceTo(e);return L<T&&L<=O?this.startPoint.clone():O<T&&O<L?this.endPoint.clone():A}tangentPoints(t){const e=[],s=new Y(t.x,t.y,t.z||0),a=this.center,h=this.normal,u=this.radius,m=s.clone().sub(a).dot(h),b=s.clone().sub(h.clone().multiplyScalar(m)),_=a.clone(),w=b.clone().sub(_).length();if(w<u)return e;const x=Math.acos(u/w),A=this.getAngle(b.clone()),T=[A+x,A-x];for(const L of T){const O=It.normalizeAngle(L-this.startAngle);O>=0&&O<=this.deltaAngle&&e.push(this.getPointAtAngle(this.startAngle+O))}return e}nearestTangentPoint(t){const e=this.tangentPoints(t);if(e.length===0)return null;const s=new W(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 b=0;b<2*Math.PI;b+=Math.PI/2)It.isBetweenAngle(b,this.startAngle,this.endAngle)&&t.push(b);let e=1/0,s=1/0,a=1/0,h=-1/0,u=-1/0,m=-1/0;for(const b of t){const _=this.getPointAtAngle(b);_.x<e&&(e=_.x),_.y<s&&(s=_.y),_.z<a&&(a=_.z),_.x>h&&(h=_.x),_.y>u&&(u=_.y),_.z>m&&(m=_.z)}return new Nt({x:e,y:s,z:a},{x:h,y:u,z:m})}get closed(){return Math.abs(this.endAngle-this.startAngle)/Math.PI%2==0}getPoints(t){const e=[];let s=this.deltaAngle,a=this.startAngle;this.closed&&(s=Qt,a=0);for(let h=0;h<=t;h++){const u=a+s*(h/t),m=this.getPointAtAngle(u);e.push(m)}return e}transform(t){const e=_a.copy(this.refVec).applyAxisAngle(this.normal,this.startAngle).multiplyScalar(this.radius),s=_a.copy(this.refVec).applyAxisAngle(this.normal,this.endAngle).multiplyScalar(this.radius);return this.center.applyMatrix4(t),e.applyMatrix4(t),s.applyMatrix4(t),this.normal.applyMatrix4(t).normalize(),this.refVec.applyMatrix4(t).normalize(),this.startAngle=this.getAngle(e),this.endAngle=this.getAngle(s),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 mi(this.center.clone(),this.radius,this.startAngle,this.endAngle,this.normal,this.refVec)}getAngle(t){return t.sub(this.center),Math.atan2(t.dot(_a.crossVectors(this.refVec,this.normal)),t.dot(this.refVec))}getPointAtAngle(t){const e=this.normal,s=this.refVec,a={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},h=this.center,u=this.radius;return new W(h.x+u*(s.x*Math.cos(t)+a.x*Math.sin(t)),h.y+u*(s.y*Math.cos(t)+a.y*Math.sin(t)),h.z+u*(s.z*Math.cos(t)+a.z*Math.sin(t)))}get plane(){const t=new Y(this.center).distanceTo(Ya);return new ei(this.normal,t)}};const _a=new Y;class ta extends ts{constructor(t,e,s,a=0,h=Qt,u=!1,m=0){super(),this.center=t,this.majorAxisRadius=e,this.minorAxisRadius=s,(h-a)%Qt==0?(this.startAngle=0,this.endAngle=Qt):(this.startAngle=a,this.endAngle=h),this.clockwise=u,this.rotation=m}get center(){return this._center}set center(t){this._center=new W(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(t){if(t<0)throw $e.ILLEGAL_PARAMETERS;this._majorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(t){if(t<0)throw $e.ILLEGAL_PARAMETERS;this._minorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=It.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==Qt?t:It.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 It.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,a=-1/0;for(let h=0;h<=100;h++){const u=this.getPoint(h/100);t=Math.min(t,u.x),e=Math.min(e,u.y),s=Math.max(s,u.x),a=Math.max(a,u.y)}return new Ie({x:t,y:e},{x:s,y:a})}get closed(){return this.deltaAngle==0}getPoint(t){const e=Math.PI*2;let s=this.endAngle-this.startAngle;const a=Math.abs(s)<Number.EPSILON;for(;s<0;)s+=e;for(;s>e;)s-=e;s<Number.EPSILON&&(a?s=0:s=e),this.clockwise===!0&&!a&&(s===e?s=-e:s=s-e);const h=this.startAngle+t*s;let u=this.center.x+this.majorAxisRadius*Math.cos(h),m=this.center.y+this.minorAxisRadius*Math.sin(h);if(this.rotation!==0){const b=Math.cos(this.rotation),_=Math.sin(this.rotation),w=u-this.center.x,x=m-this.center.y;u=w*b-x*_+this.center.x,m=w*_+x*b+this.center.y}return new kt(u,m)}transform(t){return this._boundingBoxNeedsUpdate=!0,this}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 ta(this.center,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle,this.clockwise,this.rotation)}}class ea extends ri{constructor(t,e,s,a,h,u=0,m=Qt){super(),this.center=t,this.normal=e,this.majorAxis=s,this.majorAxisRadius=a,this.minorAxisRadius=h;const b=Math.abs(m-u);Math.abs(b-Qt)<1e-10||Math.abs(b-2*Qt)<1e-10?(this.startAngle=0,this.endAngle=Qt):(this.startAngle=u,this.endAngle=m)}get center(){return this._center}set center(t){this._center=new W(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(t){if(t<0)throw $e.ILLEGAL_PARAMETERS;this._majorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(t){if(t<0)throw $e.ILLEGAL_PARAMETERS;this._minorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=It.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==Qt?t:It.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){const t=this.endAngle-this.startAngle;return Math.abs(t-Qt)<1e-10?Qt:It.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 Y(t.x,t.y,t.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get majorAxis(){return this._majorAxis}set majorAxis(t){this._majorAxis=new Y(t.x,t.y,t.z),this._majorAxis.normalize(),this._boundingBoxNeedsUpdate=!0}get minorAxis(){return new Y().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-Qt)<1e-10)&&(t=0,e=Qt);const s=t+e/2;return this.getPointAtAngle(s)}get isCircular(){return Ka.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,a=this.getPointAtAngle(this.startAngle);for(let h=1;h<=t;h++){const u=this.startAngle+h*e,m=this.getPointAtAngle(u),b=m.x-a.x,_=m.y-a.y,w=m.z-a.z;s+=Math.sqrt(b*b+_*_+w*w),a=m}return s}get area(){const t=this.majorAxisRadius,e=this.minorAxisRadius,s=this.startAngle,a=s+this.deltaAngle;if(Math.abs(this.deltaAngle-Qt)<1e-10)return Math.PI*t*e;const h=t*e/2*(a-s-(Math.sin(a)*Math.cos(a)-Math.sin(s)*Math.cos(s)));return Math.abs(h)}calculateBoundingBox(){if(this.majorAxis.equals(Y.X_AXIS)||this.majorAxis.equals(Y.Y_AXIS)||this.majorAxis.isParallelTo(Y.X_AXIS)||this.majorAxis.isParallelTo(Y.Y_AXIS)){const t=[this.startAngle,this.endAngle];for(let b=0;b<2*Math.PI;b+=Math.PI/2)It.isBetweenAngle(b,this.startAngle,this.endAngle)&&t.push(b);let e=1/0,s=1/0,a=1/0,h=-1/0,u=-1/0,m=-1/0;for(const b of t){const _=this.getPointAtAngle(b);_.x<e&&(e=_.x),_.y<s&&(s=_.y),_.z<a&&(a=_.z),_.x>h&&(h=_.x),_.y>u&&(u=_.y),_.z>m&&(m=_.z)}return new Nt({x:e,y:s,z:a},{x:h,y:u,z:m})}else{let t=1/0,e=1/0,s=1/0,a=-1/0,h=-1/0,u=-1/0;for(let m=0;m<=100;m++){const b=this.startAngle+this.deltaAngle*(m/100),_=this.getPointAtAngle(b);t=Math.min(t,_.x),e=Math.min(e,_.y),s=Math.min(s,_.z),a=Math.max(a,_.x),h=Math.max(h,_.y),u=Math.max(u,_.z)}return new Nt({x:t,y:e,z:s},{x:a,y:h,z:u})}}get closed(){return this.deltaAngle==0}getPoints(t=100){const e=[];let s=this.deltaAngle,a=this.startAngle;this.closed&&(s=Qt,a=0);for(let h=0;h<=t;h++){const u=a+s*(h/t),m=this.getPointAtAngle(u);e.push(m)}return e}getPointAtAngle(t){const e=Math.cos(t),s=Math.sin(t),a=this.minorAxis.clone().multiplyScalar(this.minorAxisRadius).multiplyScalar(s),h=this.majorAxis.clone().multiplyScalar(e*this.majorAxisRadius).add(a);return new W(this.center.x+h.x,this.center.y+h.y,this.center.z+h.z)}contains(t){const e=new Y(t).sub(this.center),s=e.dot(this.majorAxis),a=e.dot(this.minorAxis),h=s/this.majorAxisRadius,u=a/this.minorAxisRadius;return h*h+u*u<=1}transform(t){return 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 ea(this.center,this.normal,this.majorAxis,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle)}get plane(){const t=new Y(this.center).distanceTo(Ya);return new ei(this.normal,t)}}class En 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 kt(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 kt(e.x,e.y)}else{const e=this._vertices[t-1];return new kt(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 a=this._vertices[s];let h=null;if(s<e-1?h=this._vertices[s+1]:s==e-1&&this.closed&&(h=this._vertices[0]),h)if(a.bulge){const u=new Xn(a,h,a.bulge);t+=u.length}else t+=new kt(a.x,a.y).distanceTo(h)}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 kt(e.x,e.y)}calculateBoundingBox(){const t=this.getPoints(100);return new Ie().setFromPoints(t)}transform(t){return this._boundingBoxNeedsUpdate=!0,this}getPoints3d(t,e){const s=[];return this.getPoints(t).forEach(a=>s.push(new W().set(a.x,a.y,e))),s}getPoints(t){const e=[],s=this._vertices.length;for(let a=0;a<s;++a){const h=this._vertices[a];if(h.bulge){let u=null;if(a<s-1?u=this._vertices[a+1]:a==s-1&&this.closed&&(u=this._vertices[0]),u){const m=new Xn(h,u,h.bulge).getPoints(t),b=m.length;for(let _=0;_<b;++_){const w=m[_];e.push(new kt(w.x,w.y))}}}else e.push(new kt(h.x,h.y)),a==s-1&&this.closed&&e.push(e[0])}return e}}let Ds=class Sh extends ts{constructor(t,e){super(),this._start=new kt(t),this._end=new kt(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 kt(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y)),e=new kt(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y));return new Ie(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 Sh(this._start.clone(),this._end.clone())}},to=class extends ts{constructor(t=[]){super(),this._curves=t}get curves(){return this._curves}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 kt(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 Ie;return e.setFromPoints(t),e}transform(t){return this._boundingBoxNeedsUpdate=!0,this}get closed(){return!0}getPoints(t){const e=[];return this.curves.forEach(s=>{s.getPoints(t).forEach(a=>{e.push(new kt(a.x,a.y))})}),e}};function rd(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Ih={exports:{}};(function(n,t){(function(e){n.exports=e()})(function(){var e={},s=this;new Function("try {return this===window;}catch(e){ return false;}");var a=new Function("try {return this===global;}catch(e){return false;}"),h=new Function("try {return typeof importScripts === 'function';}catch(e){return false;}");if(a()&&h(),a()||h()){var u=s;if(h()){var m=function(b,_){var w=s;return b.split(".").forEach(function(x){w&&(w=w[x])}),w?w[_]:null};onmessage=function(b){if(!(!b.data.className||!b.data.methodName)){var _=m(b.data.className,b.data.methodName);if(!_)return console.error("could not find "+b.data.className+"."+b.data.methodName);postMessage({result:_.apply(null,b.data.args),id:b.data.id})}}}}return function(b,_,w){_.geom=_.geom||{},_.exe=_.exe||{},_.eval=_.eval||{},_.core=_.core||{},_.promhx=_.promhx||{};var x={},A=function(){return Lt.__string_rec(this,"")};function T(r,i){function o(){}o.prototype=r;var l=new o;for(var c in i)l[c]=i[c];return i.toString!==Object.prototype.toString&&(l.toString=i.toString),l}var L=function(){};x.HxOverrides=L,L.__name__=["HxOverrides"],L.strDate=function(r){var i=r.length;switch(i){case 8:var o=r.split(":"),l=new Date;return l.setTime(0),l.setUTCHours(o[0]),l.setUTCMinutes(o[1]),l.setUTCSeconds(o[2]),l;case 10:var c=r.split("-");return new Date(c[0],c[1]-1,c[2],0,0,0);case 19:var d=r.split(" "),g=d[0].split("-"),f=d[1].split(":");return new Date(g[0],g[1]-1,g[2],f[0],f[1],f[2]);default:throw new Q("Invalid date format : "+r)}},L.cca=function(r,i){var o=r.charCodeAt(i);if(o==o)return o},L.substr=function(r,i,o){return i!=null&&i!=0&&o!=null&&o<0?"":(o==null&&(o=r.length),i<0?(i=r.length+i,i<0&&(i=0)):o<0&&(o=r.length+o-i),r.substr(i,o))},L.iter=function(r){return{cur:0,arr:r,hasNext:function(){return this.cur<this.arr.length},next:function(){return this.arr[this.cur++]}}};var O=function(){};x.Lambda=O,O.__name__=["Lambda"],O.fold=function(r,i,o){for(var l=rr(r)();l.hasNext();){var c=l.next();o=i(c,o)}return o};var V=function(){this.length=0};x.List=V,V.__name__=["List"],V.prototype={add:function(r){var i=[r];this.h==null?this.h=i:this.q[1]=i,this.q=i,this.length++},pop:function(){if(this.h==null)return null;var r=this.h[0];return this.h=this.h[1],this.h==null&&(this.q=null),this.length--,r},isEmpty:function(){return this.h==null},__class__:V},Math.__name__=["Math"];var F=function(){};x.Reflect=F,F.__name__=["Reflect"],F.field=function(r,i){try{return r[i]}catch(o){return o instanceof Q&&(o=o.val),null}},F.callMethod=function(r,i,o){return i.apply(r,o)},F.fields=function(r){var i=[];if(r!=null){var o=Object.prototype.hasOwnProperty;for(var l in r)l!="__id__"&&l!="hx__closures__"&&o.call(r,l)&&i.push(l)}return i},F.isFunction=function(r){return typeof r=="function"&&!(r.__name__||r.__ename__)},F.deleteField=function(r,i){return Object.prototype.hasOwnProperty.call(r,i)?(delete r[i],!0):!1};var at=function(){};x.Std=at,at.__name__=["Std"],at.string=function(r){return Lt.__string_rec(r,"")},at.parseFloat=function(r){return parseFloat(r)};var ft=function(){this.b=""};x.StringBuf=ft,ft.__name__=["StringBuf"],ft.prototype={add:function(r){this.b+=at.string(r)},__class__:ft};var st=function(){};x.StringTools=st,st.__name__=["StringTools"],st.fastCodeAt=function(r,i){return r.charCodeAt(i)};var H=x.ValueType={__ename__:["ValueType"],__constructs__:["TNull","TInt","TFloat","TBool","TObject","TFunction","TClass","TEnum","TUnknown"]};H.TNull=["TNull",0],H.TNull.toString=A,H.TNull.__enum__=H,H.TInt=["TInt",1],H.TInt.toString=A,H.TInt.__enum__=H,H.TFloat=["TFloat",2],H.TFloat.toString=A,H.TFloat.__enum__=H,H.TBool=["TBool",3],H.TBool.toString=A,H.TBool.__enum__=H,H.TObject=["TObject",4],H.TObject.toString=A,H.TObject.__enum__=H,H.TFunction=["TFunction",5],H.TFunction.toString=A,H.TFunction.__enum__=H,H.TClass=function(r){var i=["TClass",6,r];return i.__enum__=H,i.toString=A,i},H.TEnum=function(r){var i=["TEnum",7,r];return i.__enum__=H,i.toString=A,i},H.TUnknown=["TUnknown",8],H.TUnknown.toString=A,H.TUnknown.__enum__=H;var dt=function(){};x.Type=dt,dt.__name__=["Type"],dt.getClassName=function(r){var i=r.__name__;return i==null?null:i.join(".")},dt.getEnumName=function(r){var i=r.__ename__;return i.join(".")},dt.resolveClass=function(r){var i=x[r];return i==null||!i.__name__?null:i},dt.resolveEnum=function(r){var i=x[r];return i==null||!i.__ename__?null:i},dt.createEmptyInstance=function(r){function i(){}return i.prototype=r.prototype,new i},dt.createEnum=function(r,i,o){var l=F.field(r,i);if(l==null)throw new Q("No such constructor "+i);if(F.isFunction(l)){if(o==null)throw new Q("Constructor "+i+" need parameters");return F.callMethod(r,l,o)}if(o!=null&&o.length!=0)throw new Q("Constructor "+i+" does not need parameters");return l},dt.getEnumConstructs=function(r){var i=r.__constructs__;return i.slice()},dt.typeof=function(r){var i=typeof r;switch(i){case"boolean":return H.TBool;case"string":return H.TClass(String);case"number":return Math.ceil(r)==r%2147483648?H.TInt:H.TFloat;case"object":if(r==null)return H.TNull;var o=r.__enum__;if(o!=null)return H.TEnum(o);var l=Lt.getClass(r);return l!=null?H.TClass(l):H.TObject;case"function":return r.__name__||r.__ename__?H.TObject:H.TFunction;case"undefined":return H.TNull;default:return H.TUnknown}};var it=function(){};x["haxe.IMap"]=it,it.__name__=["haxe","IMap"];var Wt=function(r,i){this.high=r,this.low=i};x["haxe._Int64.___Int64"]=Wt,Wt.__name__=["haxe","_Int64","___Int64"],Wt.prototype={__class__:Wt};var $t=function(){this.buf=new ft,this.cache=[],this.useCache=$t.USE_CACHE,this.useEnumIndex=$t.USE_ENUM_INDEX,this.shash=new ve,this.scount=0};x["haxe.Serializer"]=$t,$t.__name__=["haxe","Serializer"],$t.prototype={toString:function(){return this.buf.b},serializeString:function(r){var i=this.shash.get(r);if(i!=null){this.buf.b+="R",i==null?this.buf.b+="null":this.buf.b+=""+i;return}this.shash.set(r,this.scount++),this.buf.b+="y",r=encodeURIComponent(r),r.length==null?this.buf.b+="null":this.buf.b+=""+r.length,this.buf.b+=":",r==null?this.buf.b+="null":this.buf.b+=""+r},serializeRef:function(r){for(var i=typeof r,o=0,l=this.cache.length;o<l;){var c=o++,d=this.cache[c];if(typeof d==i&&d==r)return this.buf.b+="r",c==null?this.buf.b+="null":this.buf.b+=""+c,!0}return this.cache.push(r),!1},serializeFields:function(r){for(var i=0,o=F.fields(r);i<o.length;){var l=o[i];++i,this.serializeString(l),this.serialize(F.field(r,l))}this.buf.b+="g"},serialize:function(r){{var i=dt.typeof(r);switch(i[1]){case 0:this.buf.b+="n";break;case 1:var o=r;if(o==0){this.buf.b+="z";return}this.buf.b+="i",o==null?this.buf.b+="null":this.buf.b+=""+o;break;case 2:var l=r;isNaN(l)?this.buf.b+="k":isFinite(l)?(this.buf.b+="d",l==null?this.buf.b+="null":this.buf.b+=""+l):l<0?this.buf.b+="m":this.buf.b+="p";break;case 3:r?this.buf.b+="t":this.buf.b+="f";break;case 6:var c=i[2];if(c==String){this.serializeString(r);return}if(this.useCache&&this.serializeRef(r))return;switch(c){case Array:var d=0;this.buf.b+="a";for(var g=r.length,f=0;f<g;){var y=f++;r[y]==null?d++:(d>0&&(d==1?this.buf.b+="n":(this.buf.b+="u",d==null?this.buf.b+="null":this.buf.b+=""+d),d=0),this.serialize(r[y]))}d>0&&(d==1?this.buf.b+="n":(this.buf.b+="u",d==null?this.buf.b+="null":this.buf.b+=""+d)),this.buf.b+="h";break;case V:this.buf.b+="l";for(var S=r,P=S.h,I=null;P!=null;){var E;I=P[0],P=P[1],E=I,this.serialize(E)}this.buf.b+="h";break;case Date:var M=r;this.buf.b+="v",this.buf.add(M.getTime());break;case ve:this.buf.b+="b";for(var k=r,B=k.keys();B.hasNext();){var C=B.next();this.serializeString(C),this.serialize(oa[C]!=null?k.getReserved(C):k.h[C])}this.buf.b+="h";break;case wt:this.buf.b+="q";for(var z=r,R=z.keys();R.hasNext();){var U=R.next();this.buf.b+=":",U==null?this.buf.b+="null":this.buf.b+=""+U,this.serialize(z.h[U])}this.buf.b+="h";break;case Bt:this.buf.b+="M";for(var j=r,X=j.keys();X.hasNext();){var J=X.next(),q=F.field(J,"__id__");F.deleteField(J,"__id__"),this.serialize(J),J.__id__=q,this.serialize(j.h[J.__id__])}this.buf.b+="h";break;case ze:for(var G=r,$=0,tt=G.length-2,et=new ft,ot=$t.BASE64;$<tt;){var ut=G.get($++),lt=G.get($++),pt=G.get($++);et.add(ot.charAt(ut>>2)),et.add(ot.charAt((ut<<4|lt>>4)&63)),et.add(ot.charAt((lt<<2|pt>>6)&63)),et.add(ot.charAt(pt&63))}if($==tt){var nt=G.get($++),mt=G.get($++);et.add(ot.charAt(nt>>2)),et.add(ot.charAt((nt<<4|mt>>4)&63)),et.add(ot.charAt(mt<<2&63))}else if($==tt+1){var K=G.get($++);et.add(ot.charAt(K>>2)),et.add(ot.charAt(K<<4&63))}var _t=et.b;this.buf.b+="s",_t.length==null?this.buf.b+="null":this.buf.b+=""+_t.length,this.buf.b+=":",_t==null?this.buf.b+="null":this.buf.b+=""+_t;break;default:this.useCache&&this.cache.pop(),r.hxSerialize!=null?(this.buf.b+="C",this.serializeString(dt.getClassName(c)),this.useCache&&this.cache.push(r),r.hxSerialize(this),this.buf.b+="g"):(this.buf.b+="c",this.serializeString(dt.getClassName(c)),this.useCache&&this.cache.push(r),this.serializeFields(r))}break;case 4:if(Lt.__instanceof(r,Jo)){var Et=dt.getClassName(r);this.buf.b+="A",this.serializeString(Et)}else if(Lt.__instanceof(r,tl))this.buf.b+="B",this.serializeString(dt.getEnumName(r));else{if(this.useCache&&this.serializeRef(r))return;this.buf.b+="o",this.serializeFields(r)}break;case 7:var Ht=i[2];if(this.useCache){if(this.serializeRef(r))return;this.cache.pop()}this.useEnumIndex?this.buf.b+="j":this.buf.b+="w",this.serializeString(dt.getEnumName(Ht)),this.useEnumIndex?(this.buf.b+=":",this.buf.b+=at.string(r[1])):this.serializeString(r[0]),this.buf.b+=":";var Zt=r.length;this.buf.b+=at.string(Zt-2);for(var jt=2;jt<Zt;){var Jt=jt++;this.serialize(r[Jt])}this.useCache&&this.cache.push(r);break;case 5:throw new Q("Cannot serialize function");default:throw new Q("Cannot serialize "+at.string(r))}}},__class__:$t};var qt=function(r){this.buf=r,this.length=r.length,this.pos=0,this.scache=[],this.cache=[];var i=qt.DEFAULT_RESOLVER;i==null&&(i=dt,qt.DEFAULT_RESOLVER=i),this.setResolver(i)};x["haxe.Unserializer"]=qt,qt.__name__=["haxe","Unserializer"],qt.initCodes=function(){for(var r=[],i=0,o=qt.BASE64.length;i<o;){var l=i++;r[qt.BASE64.charCodeAt(l)]=l}return r},qt.prototype={setResolver:function(r){r==null?this.resolver={resolveClass:function(i){return null},resolveEnum:function(i){return null}}:this.resolver=r},get:function(r){return this.buf.charCodeAt(r)},readDigits:function(){for(var r=0,i=!1,o=this.pos;;){var l=this.buf.charCodeAt(this.pos);if(l!=l)break;if(l==45){if(this.pos!=o)break;i=!0,this.pos++;continue}if(l<48||l>57)break;r=r*10+(l-48),this.pos++}return i&&(r*=-1),r},readFloat:function(){for(var r=this.pos;;){var i=this.buf.charCodeAt(this.pos);if(i>=43&&i<58||i==101||i==69)this.pos++;else break}return at.parseFloat(L.substr(this.buf,r,this.pos-r))},unserializeObject:function(r){for(;;){if(this.pos>=this.length)throw new Q("Invalid object");if(this.buf.charCodeAt(this.pos)==103)break;var i=this.unserialize();if(typeof i!="string")throw new Q("Invalid object key");var o=this.unserialize();r[i]=o}this.pos++},unserializeEnum:function(r,i){if(this.get(this.pos++)!=58)throw new Q("Invalid enum format");var o=this.readDigits();if(o==0)return dt.createEnum(r,i);for(var l=[];o-- >0;)l.push(this.unserialize());return dt.createEnum(r,i,l)},unserialize:function(){var r=this.get(this.pos++);switch(r){case 110:return null;case 116:return!0;case 102:return!1;case 122:return 0;case 105:return this.readDigits();case 100:return this.readFloat();case 121:var i=this.readDigits();if(this.get(this.pos++)!=58||this.length-this.pos<i)throw new Q("Invalid string length");var o=L.substr(this.buf,this.pos,i);return this.pos+=i,o=decodeURIComponent(o.split("+").join(" ")),this.scache.push(o),o;case 107:return NaN;case 109:return-1/0;case 112:return 1/0;case 97:this.buf;var l=[];for(this.cache.push(l);;){var c=this.buf.charCodeAt(this.pos);if(c==104){this.pos++;break}if(c==117){this.pos++;var d=this.readDigits();l[l.length+d-1]=null}else l.push(this.unserialize())}return l;case 111:var g={};return this.cache.push(g),this.unserializeObject(g),g;case 114:var f=this.readDigits();if(f<0||f>=this.cache.length)throw new Q("Invalid reference");return this.cache[f];case 82:var y=this.readDigits();if(y<0||y>=this.scache.length)throw new Q("Invalid string reference");return this.scache[y];case 120:throw new Q(this.unserialize());case 99:var S=this.unserialize(),P=this.resolver.resolveClass(S);if(P==null)throw new Q("Class not found "+S);var I=dt.createEmptyInstance(P);return this.cache.push(I),this.unserializeObject(I),I;case 119:var E=this.unserialize(),M=this.resolver.resolveEnum(E);if(M==null)throw new Q("Enum not found "+E);var k=this.unserializeEnum(M,this.unserialize());return this.cache.push(k),k;case 106:var B=this.unserialize(),C=this.resolver.resolveEnum(B);if(C==null)throw new Q("Enum not found "+B);this.pos++;var z=this.readDigits(),R=dt.getEnumConstructs(C)[z];if(R==null)throw new Q("Unknown enum index "+B+"@"+z);var U=this.unserializeEnum(C,R);return this.cache.push(U),U;case 108:var j=new V;for(this.cache.push(j),this.buf;this.buf.charCodeAt(this.pos)!=104;)j.add(this.unserialize());return this.pos++,j;case 98:var X=new ve;for(this.cache.push(X),this.buf;this.buf.charCodeAt(this.pos)!=104;){var J=this.unserialize();X.set(J,this.unserialize())}return this.pos++,X;case 113:var q=new wt;this.cache.push(q),this.buf;for(var G=this.get(this.pos++);G==58;){var $=this.readDigits();q.set($,this.unserialize()),G=this.get(this.pos++)}if(G!=104)throw new Q("Invalid IntMap format");return q;case 77:var tt=new Bt;for(this.cache.push(tt),this.buf;this.buf.charCodeAt(this.pos)!=104;){var et=this.unserialize();tt.set(et,this.unserialize())}return this.pos++,tt;case 118:var ot;if(this.buf.charCodeAt(this.pos)>=48&&this.buf.charCodeAt(this.pos)<=57&&this.buf.charCodeAt(this.pos+1)>=48&&this.buf.charCodeAt(this.pos+1)<=57&&this.buf.charCodeAt(this.pos+2)>=48&&this.buf.charCodeAt(this.pos+2)<=57&&this.buf.charCodeAt(this.pos+3)>=48&&this.buf.charCodeAt(this.pos+3)<=57&&this.buf.charCodeAt(this.pos+4)==45){var ut=L.substr(this.buf,this.pos,19);ot=L.strDate(ut),this.pos+=19}else{var lt=this.readFloat(),pt=new Date;pt.setTime(lt),ot=pt}return this.cache.push(ot),ot;case 115:var nt=this.readDigits(),mt=this.buf;if(this.get(this.pos++)!=58||this.length-this.pos<nt)throw new Q("Invalid bytes length");var K=qt.CODES;K==null&&(K=qt.initCodes(),qt.CODES=K);var _t=this.pos,Et=nt&3,Ht;Ht=(nt>>2)*3+(Et>=2?Et-1:0);for(var Zt=_t+(nt-Et),jt=ze.alloc(Ht),Jt=0;_t<Zt;){var Oe=K[st.fastCodeAt(mt,_t++)],Je=K[st.fastCodeAt(mt,_t++)];jt.set(Jt++,Oe<<2|Je>>4);var Pe=K[st.fastCodeAt(mt,_t++)];jt.set(Jt++,Je<<4|Pe>>2);var xe=K[st.fastCodeAt(mt,_t++)];jt.set(Jt++,Pe<<6|xe)}if(Et>=2){var Be=K[st.fastCodeAt(mt,_t++)],je=K[st.fastCodeAt(mt,_t++)];if(jt.set(Jt++,Be<<2|je>>4),Et==3){var nr=K[st.fastCodeAt(mt,_t++)];jt.set(Jt++,je<<4|nr>>2)}}return this.pos+=nt,this.cache.push(jt),jt;case 67:var gr=this.unserialize(),sr=this.resolver.resolveClass(gr);if(sr==null)throw new Q("Class not found "+gr);var ir=dt.createEmptyInstance(sr);if(this.cache.push(ir),ir.hxUnserialize(this),this.get(this.pos++)!=103)throw new Q("Invalid custom data");return ir;case 65:var ar=this.unserialize(),wr=this.resolver.resolveClass(ar);if(wr==null)throw new Q("Class not found "+ar);return wr;case 66:var Vn=this.unserialize(),un=this.resolver.resolveEnum(Vn);if(un==null)throw new Q("Enum not found "+Vn);return un}throw this.pos--,new Q("Invalid char "+this.buf.charAt(this.pos)+" at position "+this.pos)},__class__:qt};var wt=function(){this.h={}};x["haxe.ds.IntMap"]=wt,wt.__name__=["haxe","ds","IntMap"],wt.__interfaces__=[it],wt.prototype={set:function(r,i){this.h[r]=i},remove:function(r){return this.h.hasOwnProperty(r)?(delete this.h[r],!0):!1},keys:function(){var r=[];for(var i in this.h)this.h.hasOwnProperty(i)&&r.push(i|0);return L.iter(r)},__class__:wt};var Bt=function(){this.h={},this.h.__keys__={}};x["haxe.ds.ObjectMap"]=Bt,Bt.__name__=["haxe","ds","ObjectMap"],Bt.__interfaces__=[it],Bt.prototype={set:function(r,i){var o=r.__id__||(r.__id__=++Bt.count);this.h[o]=i,this.h.__keys__[o]=r},keys:function(){var r=[];for(var i in this.h.__keys__)this.h.hasOwnProperty(i)&&r.push(this.h.__keys__[i]);return L.iter(r)},__class__:Bt};var ye=x["haxe.ds.Option"]={__ename__:["haxe","ds","Option"],__constructs__:["Some","None"]};ye.Some=function(r){var i=["Some",0,r];return i.__enum__=ye,i.toString=A,i},ye.None=["None",1],ye.None.toString=A,ye.None.__enum__=ye;var ve=function(){this.h={}};x["haxe.ds.StringMap"]=ve,ve.__name__=["haxe","ds","StringMap"],ve.__interfaces__=[it],ve.prototype={set:function(r,i){oa[r]!=null?this.setReserved(r,i):this.h[r]=i},get:function(r){return oa[r]!=null?this.getReserved(r):this.h[r]},setReserved:function(r,i){this.rh==null&&(this.rh={}),this.rh["$"+r]=i},getReserved:function(r){return this.rh==null?null:this.rh["$"+r]},keys:function(){var r=this.arrayKeys();return L.iter(r)},arrayKeys:function(){var r=[];for(var i in this.h)this.h.hasOwnProperty(i)&&r.push(i);if(this.rh!=null)for(var i in this.rh)i.charCodeAt(0)==36&&r.push(i.substr(1));return r},__class__:ve};var ze=function(r){this.length=r.byteLength,this.b=new la(r),this.b.bufferValue=r,r.hxBytes=this,r.bytes=this.b};x["haxe.io.Bytes"]=ze,ze.__name__=["haxe","io","Bytes"],ze.alloc=function(r){return new ze(new ai(r))},ze.prototype={get:function(r){return this.b[r]},set:function(r,i){this.b[r]=i&255},__class__:ze};var ne=x["haxe.io.Error"]={__ename__:["haxe","io","Error"],__constructs__:["Blocked","Overflow","OutsideBounds","Custom"]};ne.Blocked=["Blocked",0],ne.Blocked.toString=A,ne.Blocked.__enum__=ne,ne.Overflow=["Overflow",1],ne.Overflow.toString=A,ne.Overflow.__enum__=ne,ne.OutsideBounds=["OutsideBounds",2],ne.OutsideBounds.toString=A,ne.OutsideBounds.__enum__=ne,ne.Custom=function(r){var i=["Custom",3,r];return i.__enum__=ne,i.toString=A,i};var ce=function(){};x["haxe.io.FPHelper"]=ce,ce.__name__=["haxe","io","FPHelper"],ce.i32ToFloat=function(r){var i=1-(r>>>31<<1),o=r>>>23&255,l=r&8388607;return l==0&&o==0?0:i*(1+Math.pow(2,-23)*l)*Math.pow(2,o-127)},ce.floatToI32=function(r){if(r==0)return 0;var i;r<0?i=-r:i=r;var o=Math.floor(Math.log(i)/.6931471805599453);o<-127?o=-127:o>128&&(o=128);var l=Math.round((i/Math.pow(2,o)-1)*8388608)&8388607;return(r<0?-2147483648:0)|o+127<<23|l},ce.i64ToDouble=function(r,i){var o=1-(i>>>31<<1),l=(i>>20&2047)-1023,c=(i&1048575)*4294967296+(r>>>31)*2147483648+(r&2147483647);return c==0&&l==-1023?0:o*(1+Math.pow(2,-52)*c)*Math.pow(2,l)},ce.doubleToI64=function(r){var i=ce.i64tmp;if(r==0)i.low=0,i.high=0;else{var o;r<0?o=-r:o=r;var l=Math.floor(Math.log(o)/.6931471805599453),c,d=(o/Math.pow(2,l)-1)*4503599627370496;c=Math.round(d);var g=c|0,f=c/4294967296|0;i.low=g,i.high=(r<0?-2147483648:0)|l+1023<<20|f}return i};var Q=function(r){Error.call(this),this.val=r,this.message=String(r),Error.captureStackTrace&&Error.captureStackTrace(this,Q)};x["js._Boot.HaxeError"]=Q,Q.__name__=["js","_Boot","HaxeError"],Q.__super__=Error,Q.prototype=T(Error.prototype,{__class__:Q});var Lt=function(){};x["js.Boot"]=Lt,Lt.__name__=["js","Boot"],Lt.getClass=function(r){if(r instanceof Array&&r.__enum__==null)return Array;var i=r.__class__;if(i!=null)return i;var o=Lt.__nativeClassName(r);return o!=null?Lt.__resolveNativeClass(o):null},Lt.__string_rec=function(r,i){if(r==null)return"null";if(i.length>=5)return"<...>";var o=typeof r;switch(o=="function"&&(r.__name__||r.__ename__)&&(o="object"),o){case"object":if(r instanceof Array){if(r.__enum__){if(r.length==2)return r[0];var l=r[0]+"(";i+=" ";for(var c=2,d=r.length;c<d;){var g=c++;g!=2?l+=","+Lt.__string_rec(r[g],i):l+=Lt.__string_rec(r[g],i)}return l+")"}var f=r.length,y="[";i+=" ";for(var S=0;S<f;){var P=S++;y+=(P>0?",":"")+Lt.__string_rec(r[P],i)}return y+="]",y}var I;try{I=r.toString}catch(C){return C instanceof Q&&(C=C.val),"???"}if(I!=null&&I!=Object.toString&&typeof I=="function"){var E=r.toString();if(E!="[object Object]")return E}var M=null,k=`{
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var Va=(n=>(n[n.Invalid=-9999]="Invalid",n[n.Start=0]="Start",n[n.Text=1]="Text",n[n.AttributeTag=2]="AttributeTag",n[n.BlockName=2]="BlockName",n[n.ShapeName=2]="ShapeName",n[n.SymbolTableName=2]="SymbolTableName",n[n.SymbolTableRecordName=2]="SymbolTableRecordName",n[n.MlineStyleName=2]="MlineStyleName",n[n.AttributePrompt=3]="AttributePrompt",n[n.Description=3]="Description",n[n.DimPostString=3]="DimPostString",n[n.DimStyleName=3]="DimStyleName",n[n.LinetypeProse=3]="LinetypeProse",n[n.TextFontFile=3]="TextFontFile",n[n.CLShapeName=4]="CLShapeName",n[n.DimensionAlternativePrefixSuffix=4]="DimensionAlternativePrefixSuffix",n[n.SymbolTableRecordComments=4]="SymbolTableRecordComments",n[n.TextBigFontFile=4]="TextBigFontFile",n[n.Handle=5]="Handle",n[n.DimensionBlock=5]="DimensionBlock",n[n.LinetypeName=6]="LinetypeName",n[n.DimBlk1=6]="DimBlk1",n[n.TextStyleName=7]="TextStyleName",n[n.DimBlk2=7]="DimBlk2",n[n.LayerName=8]="LayerName",n[n.CLShapeText=9]="CLShapeText",n[n.XCoordinate=10]="XCoordinate",n[n.YCoordinate=20]="YCoordinate",n[n.ZCoordinate=30]="ZCoordinate",n[n.Real=40]="Real",n[n.TxtSize=40]="TxtSize",n[n.ViewportHeight=40]="ViewportHeight",n[n.Angle=50]="Angle",n[n.ViewportSnapAngle=50]="ViewportSnapAngle",n[n.Visibility=60]="Visibility",n[n.Int16=70]="Int16",n[n.Int32=90]="Int32",n[n.Int64=160]="Int64",n[n.Int8=280]="Int8",n[n.Thickness=39]="Thickness",n[n.Elevation=38]="Elevation",n[n.LinetypeScale=48]="LinetypeScale",n[n.DashLength=49]="DashLength",n[n.MlineOffset=49]="MlineOffset",n[n.LinetypeElement=49]="LinetypeElement",n[n.NormalX=210]="NormalX",n[n.NormalY=220]="NormalY",n[n.NormalZ=230]="NormalZ",n[n.UcsOrg=110]="UcsOrg",n[n.UcsOrientationX=111]="UcsOrientationX",n[n.UcsOrientationY=112]="UcsOrientationY",n[n.ViewHeight=45]="ViewHeight",n[n.ViewWidth=41]="ViewWidth",n[n.ViewLensLength=42]="ViewLensLength",n[n.ViewFrontClip=43]="ViewFrontClip",n[n.ViewBackClip=44]="ViewBackClip",n[n.ViewBrightness=141]="ViewBrightness",n[n.ViewContrast=142]="ViewContrast",n[n.ViewMode=71]="ViewMode",n[n.ViewportActive=68]="ViewportActive",n[n.ViewportAspect=41]="ViewportAspect",n[n.ViewportGrid=76]="ViewportGrid",n[n.ViewportIcon=74]="ViewportIcon",n[n.ViewportNumber=69]="ViewportNumber",n[n.ViewportSnap=75]="ViewportSnap",n[n.ViewportSnapPair=78]="ViewportSnapPair",n[n.ViewportSnapStyle=77]="ViewportSnapStyle",n[n.ViewportTwist=51]="ViewportTwist",n[n.ViewportVisibility=67]="ViewportVisibility",n[n.ViewportZoom=73]="ViewportZoom",n[n.Color=62]="Color",n[n.ColorRgb=420]="ColorRgb",n[n.ColorName=430]="ColorName",n[n.LineWeight=370]="LineWeight",n[n.PlotStyleNameType=380]="PlotStyleNameType",n[n.PlotStyleNameId=390]="PlotStyleNameId",n[n.GradientObjType=450]="GradientObjType",n[n.GradientAngle=460]="GradientAngle",n[n.GradientName=470]="GradientName",n[n.GradientColCount=453]="GradientColCount",n[n.GradientPatType=451]="GradientPatType",n[n.GradientTintType=452]="GradientTintType",n[n.GradientShift=461]="GradientShift",n[n.GradientColVal=463]="GradientColVal",n[n.GradientTintVal=462]="GradientTintVal",n[n.SoftPointerId=330]="SoftPointerId",n[n.HardPointerId=340]="HardPointerId",n[n.SoftOwnershipId=350]="SoftOwnershipId",n[n.HardOwnershipId=360]="HardOwnershipId",n[n.ArbitraryHandle=320]="ArbitraryHandle",n[n.ExtendedDataAsciiString=1e3]="ExtendedDataAsciiString",n[n.ExtendedDataRegAppName=1001]="ExtendedDataRegAppName",n[n.ExtendedDataControlString=1002]="ExtendedDataControlString",n[n.ExtendedDataLayerName=1003]="ExtendedDataLayerName",n[n.ExtendedDataBinaryChunk=1004]="ExtendedDataBinaryChunk",n[n.ExtendedDataHandle=1005]="ExtendedDataHandle",n[n.ExtendedDataXCoordinate=1010]="ExtendedDataXCoordinate",n[n.ExtendedDataWorldXCoordinate=1011]="ExtendedDataWorldXCoordinate",n[n.ExtendedDataWorldXDisp=1012]="ExtendedDataWorldXDisp",n[n.ExtendedDataWorldXDir=1013]="ExtendedDataWorldXDir",n[n.ExtendedDataYCoordinate=1020]="ExtendedDataYCoordinate",n[n.ExtendedDataWorldYCoordinate=1021]="ExtendedDataWorldYCoordinate",n[n.ExtendedDataWorldYDisp=1022]="ExtendedDataWorldYDisp",n[n.ExtendedDataWorldYDir=1023]="ExtendedDataWorldYDir",n[n.ExtendedDataZCoordinate=1030]="ExtendedDataZCoordinate",n[n.ExtendedDataWorldZCoordinate=1031]="ExtendedDataWorldZCoordinate",n[n.ExtendedDataWorldZDisp=1032]="ExtendedDataWorldZDisp",n[n.ExtendedDataWorldZDir=1033]="ExtendedDataWorldZDir",n[n.ExtendedDataReal=1040]="ExtendedDataReal",n[n.ExtendedDataDist=1041]="ExtendedDataDist",n[n.ExtendedDataScale=1042]="ExtendedDataScale",n[n.ExtendedDataInteger16=1070]="ExtendedDataInteger16",n[n.ExtendedDataInteger32=1071]="ExtendedDataInteger32",n[n.XTextString=300]="XTextString",n[n.XReal=140]="XReal",n[n.XInt16=170]="XInt16",n[n.XXInt16=270]="XXInt16",n[n.Subclass=100]="Subclass",n[n.ControlString=102]="ControlString",n[n.EmbeddedObjectStart=101]="EmbeddedObjectStart",n[n.End=-1]="End",n[n.FirstEntityId=-2]="FirstEntityId",n[n.HeaderId=-2]="HeaderId",n[n.XDataStart=-3]="XDataStart",n[n.Operator=-4]="Operator",n[n.PReactors=-5]="PReactors",n[n.XDictionary=-6]="XDictionary",n))(Va||{});function zc(n,t){for(var e=0;e<t.length;e++){const s=t[e];if(typeof s!="string"&&!Array.isArray(s)){for(const a in s)if(a!=="default"&&!(a in n)){const h=Object.getOwnPropertyDescriptor(s,a);h&&Object.defineProperty(n,a,h.get?h:{enumerable:!0,get:()=>s[a]})}}}return Object.freeze(Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}))}var ct=(n=>(n[n.ByColor=1]="ByColor",n[n.ByACI=2]="ByACI",n[n.ByLayer=3]="ByLayer",n[n.ByBlock=4]="ByBlock",n[n.None=0]="None",n))(ct||{});const ml={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},ma=[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 en=class{static getColorByIndex(t){return ma[t]}static getIndexByColor(t){const e=ma.length-1;for(let s=1;s<e;++s)if(ma[s]===t)return s}static getColorByName(t){return ml[t.toLowerCase()]}static getNameByColor(t){for(const[e,s]of Object.entries(ml))if(s===t)return e}static getNameByIndex(t){const e=this.getColorByIndex(t);return this.getNameByColor(e)}},ce=class Vr{constructor(t=ct.ByLayer,e){this._colorMethod=t,this._colorMethod==ct.ByColor&&e==null?this._value=16777215:this._colorMethod==ct.ByACI?e==null?this._value=8:e===0?this._colorMethod=ct.ByBlock:e===256?this._colorMethod=ct.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 ct.ByColor:case ct.ByBlock:case ct.ByLayer:return this._value;case ct.ByACI:return this._value?en.getColorByIndex(this._value):this._value;default:return}}setRGB(t,e,s){const a=Math.max(0,Math.min(255,Math.round(t))),h=Math.max(0,Math.min(255,Math.round(e))),u=Math.max(0,Math.min(255,Math.round(s)));return this._value=a<<16|h<<8|u,this._colorMethod=ct.ByColor,this}setRGBValue(t){return t==null||!Number.isFinite(t)?(console.warn("Invalid RGB value:",t),this):(this._value=t&16777215,this._colorMethod=ct.ByColor,this)}setRGBFromCss(t){if(!t)return this;const e=t.trim().toLowerCase();if(e.startsWith("#")){let h=0,u=0,m=0;if(e.length===7)h=parseInt(e.substr(1,2),16),u=parseInt(e.substr(3,2),16),m=parseInt(e.substr(5,2),16);else if(e.length===4)h=parseInt(e[1]+e[1],16),u=parseInt(e[2]+e[2],16),m=parseInt(e[3]+e[3],16);else return console.warn("Invalid hex color:",t),this;return this.setRGB(h,u,m)}const s=e.match(/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);if(s){const h=parseInt(s[1],10),u=parseInt(s[2],10),m=parseInt(s[3],10);return this.setRGB(h,u,m)}const a=en.getColorByName(t);return a!==void 0?this.setRGBValue(a):(console.warn("Unknown CSS color string:",t),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})`}get colorIndex(){return this._colorMethod===ct.ByACI?this._value:this._colorMethod===ct.ByLayer?256:this._colorMethod===ct.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=ct.ByBlock,this._value=void 0):e===256?(this._colorMethod=ct.ByLayer,this._value=void 0):(this._colorMethod=ct.ByACI,this._value=e)}get isByColor(){return this._colorMethod===ct.ByColor}get isByACI(){return this._colorMethod===ct.ByACI}get isByLayer(){return this._colorMethod===ct.ByLayer}setByLayer(t){return this._colorMethod=ct.ByLayer,t==null?this._value=256:this._value=t,this}get isByBlock(){return this._colorMethod===ct.ByBlock}setByBlock(t){return this._colorMethod=ct.ByBlock,t==null?this._value=0:this._value=t,this}get colorName(){switch(this._colorMethod){case ct.ByLayer:return"ByLayer";case ct.ByBlock:return"ByBlock";case ct.ByColor:return this._value?en.getNameByColor(this._value):"";case ct.ByACI:return this._value?en.getNameByIndex(this._value):"";default:return}}set colorName(t){if(!t)return;const e=en.getColorByName(t);e!==void 0?(this._value=e,this._colorMethod=ct.ByColor):console.warn("Unknown color name:",t)}clone(){const t=new Vr;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 ct.ByLayer:return"ByLayer";case ct.ByBlock:return"ByBlock";case ct.ByACI:return this._value!==void 0?String(this._value):"";case ct.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 Vr(ct.ByLayer);if(/^byblock$/i.test(e))return new Vr(ct.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 h=Number(s[1]),u=Number(s[2]),m=Number(s[3]),b=new Vr(ct.ByColor);return b.setRGB(h,u,m),b}if(/^\d{1,3},\d{1,3},\d{1,3}$/.test(e)){const[h,u,m]=e.split(",").map(Number),b=new Vr(ct.ByColor);return b.setRGB(h,u,m),b}if(/^\d+$/.test(e)){const h=parseInt(e,10);return new Vr(ct.ByACI,h)}if(/^book\$/i.test(e)){const h=e.substring(e.indexOf("$")+1),u=en.getColorByName(h);if(u!=null)return new Vr(ct.ByColor,u);console.warn("Unknown color book entry:",t);return}const a=en.getColorByName(e);if(a!=null)return new Vr(ct.ByColor,a);console.warn("Unknown color name:",t)}};class Fc{constructor(t=ct.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=ct.ByColor,this._value=this._value&65535|(t&255)<<16}get green(){return this._value>>8&255}set green(t){this._colorMethod=ct.ByColor,this._value=this._value&16711935|(t&255)<<8}get blue(){return this._value&255}set blue(t){this._colorMethod=ct.ByColor,this._value=this._value&16776960|t&255}setRGB(t,e,s){this._colorMethod=ct.ByColor,this._value=(t&255)<<16|(e&255)<<8|s&255}get colorIndex(){return this._value}set colorIndex(t){this._colorMethod=ct.ByACI,this._value=t}get layerIndex(){return this._value}set layerIndex(t){this._colorMethod=ct.ByLayer,this._value=t}isByColor(){return this._colorMethod===ct.ByColor}isByLayer(){return this._colorMethod===ct.ByLayer}isByBlock(){return this._colorMethod===ct.ByBlock}isByACI(){return this._colorMethod===ct.ByACI}isNone(){return this._colorMethod===ct.None}get rawValue(){return this._value}set rawValue(t){this._value=t}}const Ze={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")}};class Vc{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 a=s.indexOf(e);a!==-1&&s.splice(a,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 a=0,h=s.length;a<h;a++)s[a].call(this,t)}}}let le=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 Us(n){return n===null||typeof n!="object"?n:Array.isArray(n)?[...n]:{...n}}function Ma(n){if(n===null||typeof n!="object")return n;if(n instanceof Date)return new Date(n.getTime());if(n instanceof RegExp)return new RegExp(n.source,n.flags);if(Array.isArray(n))return n.map(Ma);const t={};for(const e in n)Object.prototype.hasOwnProperty.call(n,e)&&(t[e]=Ma(n[e]));return t}function Jn(n,...t){for(const e of t)if(e)for(const s in e)Object.prototype.hasOwnProperty.call(e,s)&&n[s]===void 0&&(n[s]=e[s]);return n}function Ol(n,t){return n!=null&&Object.prototype.hasOwnProperty.call(n,t)}function Bl(n){return n==null?!0:Array.isArray(n)||typeof n=="string"?n.length===0:n instanceof Map||n instanceof Set?n.size===0:typeof n=="object"?Object.keys(n).length===0:!1}function Xn(n,t){if(n===t)return!0;if(n==null||t==null)return n===t;if(typeof n!=typeof t)return!1;if(typeof n!="object")return n===t;if(Array.isArray(n)!==Array.isArray(t))return!1;if(Array.isArray(n)){if(n.length!==t.length)return!1;for(let a=0;a<n.length;a++)if(!Xn(n[a],t[a]))return!1;return!0}const e=Object.keys(n),s=Object.keys(t);if(e.length!==s.length)return!1;for(const a of e)if(!Object.prototype.hasOwnProperty.call(t,a)||!Xn(n[a],t[a]))return!1;return!0}var Uc=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function jc(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Rl={exports:{}};(function(n){(function(t,e){n.exports?n.exports=e():t.log=e()})(Uc,function(){var t=function(){},e="undefined",s=typeof window!==e&&typeof window.navigator!==e&&/Trident\/|MSIE /.test(window.navigator.userAgent),a=["trace","debug","info","warn","error"],h={},u=null;function m(O,V){var F=O[V];if(typeof F.bind=="function")return F.bind(O);try{return Function.prototype.bind.call(F,O)}catch{return function(){return Function.prototype.apply.apply(F,[O,arguments])}}}function b(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function _(O){return O==="debug"&&(O="log"),typeof console===e?!1:O==="trace"&&s?b:console[O]!==void 0?m(console,O):console.log!==void 0?m(console,"log"):t}function w(){for(var O=this.getLevel(),V=0;V<a.length;V++){var F=a[V];this[F]=V<O?t:this.methodFactory(F,O,this.name)}if(this.log=this.debug,typeof console===e&&O<this.levels.SILENT)return"No console available for logging"}function x(O){return function(){typeof console!==e&&(w.call(this),this[O].apply(this,arguments))}}function A(O,V,F){return _(O)||x.apply(this,arguments)}function T(O,V){var F=this,at,ft,st,H="loglevel";typeof O=="string"?H+=":"+O:typeof O=="symbol"&&(H=void 0);function dt(wt){var Bt=(a[wt]||"silent").toUpperCase();if(!(typeof window===e||!H)){try{window.localStorage[H]=Bt;return}catch{}try{window.document.cookie=encodeURIComponent(H)+"="+Bt+";"}catch{}}}function it(){var wt;if(!(typeof window===e||!H)){try{wt=window.localStorage[H]}catch{}if(typeof wt===e)try{var Bt=window.document.cookie,ye=encodeURIComponent(H),ve=Bt.indexOf(ye+"=");ve!==-1&&(wt=/^([^;]+)/.exec(Bt.slice(ve+ye.length+1))[1])}catch{}return F.levels[wt]===void 0&&(wt=void 0),wt}}function Dt(){if(!(typeof window===e||!H)){try{window.localStorage.removeItem(H)}catch{}try{window.document.cookie=encodeURIComponent(H)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function $t(wt){var Bt=wt;if(typeof Bt=="string"&&F.levels[Bt.toUpperCase()]!==void 0&&(Bt=F.levels[Bt.toUpperCase()]),typeof Bt=="number"&&Bt>=0&&Bt<=F.levels.SILENT)return Bt;throw new TypeError("log.setLevel() called with invalid level: "+wt)}F.name=O,F.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},F.methodFactory=V||A,F.getLevel=function(){return st??ft??at},F.setLevel=function(wt,Bt){return st=$t(wt),Bt!==!1&&dt(st),w.call(F)},F.setDefaultLevel=function(wt){ft=$t(wt),it()||F.setLevel(wt,!1)},F.resetLevel=function(){st=null,Dt(),w.call(F)},F.enableAll=function(wt){F.setLevel(F.levels.TRACE,wt)},F.disableAll=function(wt){F.setLevel(F.levels.SILENT,wt)},F.rebuild=function(){if(u!==F&&(at=$t(u.getLevel())),w.call(F),u===F)for(var wt in h)h[wt].rebuild()},at=$t(u?u.getLevel():"WARN");var Xt=it();Xt!=null&&(st=$t(Xt)),w.call(F)}u=new T,u.getLogger=function(O){if(typeof O!="symbol"&&typeof O!="string"||O==="")throw new TypeError("You must supply a name when creating a logger.");var V=h[O];return V||(V=h[O]=new T(O,u.methodFactory)),V};var L=typeof window!==e?window.log:void 0;return u.noConflict=function(){return typeof window!==e&&window.log===u&&(window.log=L),u},u.getLoggers=function(){return h},u.default=u,u})})(Rl);var zl=Rl.exports;const Gc=jc(zl),Wc=zc({__proto__:null,default:Gc},[zl]),Dc=!0,Gs=Wc;Gs.setLevel("debug");const Hc=n=>{try{Gs.setLevel(n)}catch(t){Gs.setLevel("error"),Gs.error(t)}};let Fl=class Vl{constructor(t,e){this.events={attrChanged:new le,modelChanged:new le},this._changing=!1,this._previousAttributes={},this._pending=!1;const s=t||{};e&&Jn(s,e),this.attributes=s,this.changed={}}get(t){return this.attributes[t]}set(t,e,s){if(t==null)return this;let a;typeof t=="object"?(a=t,s=e):(a={},a[t]=e),s||(s={});const h=s.unset,u=s.silent,m=[],b=this._changing;this._changing=!0,b||(this._previousAttributes=Us(this.attributes),this.changed={});const _=this.attributes,w=this.changed,x=this._previousAttributes;for(const A in a)e=a[A],Xn(_[A],e)||m.push(A),Xn(x[A],e)?delete w[A]:w[A]=e,h?delete _[A]:_[A]=e;if(!u){m.length&&(this._pending=s);for(let A=0;A<m.length;A++)this.events.attrChanged.dispatch({object:this,attrName:m[A],attrValue:_[m[A]],options:s})}if(b)return this;if(!u)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?!Bl(this.changed):Ol(this.changed,t)}changedAttributes(t){if(!t)return this.hasChanged()?Us(this.changed):{};const e=this._changing?this._previousAttributes:this.attributes,s={};for(const a in t){const h=t[a];Xn(e[a],h)||(s[a]=h)}return s}previous(t){return t==null||!this._previousAttributes?null:this._previousAttributes[t]}previousAttributes(){return Us(this._previousAttributes)}clone(){const t=Us(this.attributes);return new Vl(t)}},Ua=class js{constructor(){this.entries=new Map}static getInstance(){return js.instance||(js.instance=new js),js.instance}collect(t){this.entries.set(t.name,t)}printAll(){for(const[t,e]of this.entries)console.log(`${t}:`),console.log(e.format())}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 qc{static formatBytes(t,e=2){if(t===0)return"0 B";const s=1024,a=Math.max(0,e),h=["B","KB","MB","GB","TB"],u=Math.floor(Math.log(t)/Math.log(s)),m=t/Math.pow(s,u);return`${parseFloat(m.toFixed(a))} ${h[u]}`}}var Ne=(n=>(n[n.ByLayer=0]="ByLayer",n[n.ByBlock=1]="ByBlock",n[n.ByAlpha=2]="ByAlpha",n[n.ErrorValue=3]="ErrorValue",n))(Ne||{});let Qi=class _r{constructor(t){t!==void 0?(this._method=Ne.ByAlpha,this._alpha=_r.clampAlpha(t)):(this._method=Ne.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=_r.clampAlpha(t),this._method=Ne.ByAlpha}get percentage(){if(this._method===Ne.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===Ne.ByAlpha}get isByBlock(){return this._method===Ne.ByBlock}get isByLayer(){return this._method===Ne.ByLayer}get isClear(){return this.isByAlpha&&this._alpha===0}get isSolid(){return this.isByAlpha&&this._alpha===255}get isInvalid(){return this._method===Ne.ErrorValue}serialize(){return this._method<<24|this._alpha}clone(){const t=new _r;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 h=new _r;return h._method=Ne.ByLayer,h}if(/^byblock$/i.test(e)){const h=new _r;return h._method=Ne.ByBlock,h}const s=Number(e);if(Number.isInteger(s)&&s>=0&&s<=255)return new _r(s);const a=new _r;return a._method=Ne.ErrorValue,a}static deserialize(t){const e=t>>>24&255,s=t&255,a=Object.values(Ne)[e]??Ne.ErrorValue,h=new _r;return h._method=a,h._alpha=_r.clampAlpha(s),h}};class Ul{constructor(t){this.name=t}run(t){throw new Error("run() must be implemented by subclass")}}let jl=class{constructor(){this.tasks=[],this.onProgress=()=>{},this.onComplete=()=>{},this.onError=()=>!1}scheduleTask(t){return new Promise((e,s)=>{const a=()=>{Promise.resolve(t()).then(e).catch(s)};typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(a):setTimeout(a,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 a=0;a<e;a++){const h=this.tasks[a];try{s=await this.scheduleTask(async()=>{const u=await h.run(s);return this.onProgress((a+1)/e,h),u})}catch(u){if(this.onError({error:u,taskIndex:a,task:h}))return Promise.reject(u)}}this.onComplete(s)}},Gl=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 a=this.handlers[e],h=this.handlers[e+1];if(a.global&&(a.lastIndex=0),a.test(t))return h}return null}};const Wl=new Gl;class Xc{constructor(t){this.manager=t!==void 0?t:Wl,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}loadAsync(t,e){return new Promise((s,a)=>{this.load(t,s,e,a)})}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}}class ja{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 a=()=>{Promise.resolve(t()).then(e).catch(s)};typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(a):setTimeout(a,0)})}async processChunk(t,e){if(this._count<=0){await(e==null?void 0:e());return}let s=0;const a=async()=>{const h=s,u=Math.min(s+this._chunkSize,this._count);await t(h,u),s=u,s<this._count&&await this.scheduleTask(a)};await a(),await(e==null?void 0:e())}}var Ga=(n=>(n[n.DecimalDegrees=0]="DecimalDegrees",n[n.DegreesMinutesSeconds=1]="DegreesMinutesSeconds",n[n.Gradians=2]="Gradians",n[n.Radians=3]="Radians",n[n.SurveyorsUnits=4]="SurveyorsUnits",n))(Ga||{});class ts{static get instance(){return this._instance||(this._instance=new ts),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,a=[],h=!0,u,m){var _;const b=[];if(e!=null){const w=this.createKey(e.name,s);let x;if(this.has(w))x=this.get(w);else{const A=(_=t.basePoint)==null?void 0:_.clone();t.basePoint=void 0;const T=e.newIterator();let L=!0;for(const O of T)if(O.color.isByBlock&&s?(gl.copy(O.color),O.color.setRGBValue(s),this.addEntity(O,b,t),O.color.copy(gl)):this.addEntity(O,b,t),L&&b.length>0){const V=b[0];t.basePoint=V.basePoint,L=!1}x=t.group(b),x&&h&&ue.name&&!ue.name.startsWith("*U")&&this.set(w,x),t.basePoint=A}return x&&u&&(x.applyMatrix(u),m&&(m.x!=0||m.y!=0||m.z!=1)&&(u.setFromExtrusionDirection(m),x.applyMatrix(u))),x&&a&&a.length>0&&(x.bakeTransformToChildren(),a.forEach(A=>x.addChild(A))),x}else return t.group(b)}addEntity(t,e,s){const a=t.worldDraw(s);a&&(this.attachEntityInfo(a,t),e.push(a))}attachEntityInfo(t,e){t.objectId=e.objectId,t.ownerId=e.ownerId,t.layerName=e.layer,t.visible=e.visibility}}const gl=new ce;var Wa=(n=>(n[n.UTF8=0]="UTF8",n[n.US_ASCII=1]="US_ASCII",n[n.ISO_8859_1=2]="ISO_8859_1",n[n.ISO_8859_2=3]="ISO_8859_2",n[n.ISO_8859_3=4]="ISO_8859_3",n[n.ISO_8859_4=5]="ISO_8859_4",n[n.ISO_8859_5=6]="ISO_8859_5",n[n.ISO_8859_6=7]="ISO_8859_6",n[n.ISO_8859_7=8]="ISO_8859_7",n[n.ISO_8859_8=9]="ISO_8859_8",n[n.ISO_8859_9=10]="ISO_8859_9",n[n.CP437=11]="CP437",n[n.CP850=12]="CP850",n[n.CP852=13]="CP852",n[n.CP855=14]="CP855",n[n.CP857=15]="CP857",n[n.CP860=16]="CP860",n[n.CP861=17]="CP861",n[n.CP863=18]="CP863",n[n.CP864=19]="CP864",n[n.CP865=20]="CP865",n[n.CP869=21]="CP869",n[n.CP932=22]="CP932",n[n.MACINTOSH=23]="MACINTOSH",n[n.BIG5=24]="BIG5",n[n.CP949=25]="CP949",n[n.JOHAB=26]="JOHAB",n[n.CP866=27]="CP866",n[n.ANSI_1250=28]="ANSI_1250",n[n.ANSI_1251=29]="ANSI_1251",n[n.ANSI_1252=30]="ANSI_1252",n[n.GB2312=31]="GB2312",n[n.ANSI_1253=32]="ANSI_1253",n[n.ANSI_1254=33]="ANSI_1254",n[n.ANSI_1255=34]="ANSI_1255",n[n.ANSI_1256=35]="ANSI_1256",n[n.ANSI_1257=36]="ANSI_1257",n[n.ANSI_874=37]="ANSI_874",n[n.ANSI_932=38]="ANSI_932",n[n.ANSI_936=39]="ANSI_936",n[n.ANSI_949=40]="ANSI_949",n[n.ANSI_950=41]="ANSI_950",n[n.ANSI_1361=42]="ANSI_1361",n[n.UTF16=43]="UTF16",n[n.ANSI_1258=44]="ANSI_1258",n[n.UNDEFINED=255]="UNDEFINED",n))(Wa||{});const Yc=["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"],Dl=n=>Yc[n],xi="Continuous",Ie="Standard",mi="ByLayer",Hl="ByBlock",we=["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 fl=1234567;const Da=Math.PI/180,Ha=180/Math.PI;function ql(){const n=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,s=Math.random()*4294967295|0;return(we[n&255]+we[n>>8&255]+we[n>>16&255]+we[n>>24&255]+"-"+we[t&255]+we[t>>8&255]+"-"+we[t>>16&15|64]+we[t>>24&255]+"-"+we[e&63|128]+we[e>>8&255]+"-"+we[e>>16&255]+we[e>>24&255]+we[s&255]+we[s>>8&255]+we[s>>16&255]+we[s>>24&255]).toLowerCase()}function Ur(n,t,e){return Math.max(t,Math.min(e,n))}function qa(n,t){return(n%t+t)%t}function Xl(n,t,e,s,a){return s+(n-t)*(a-s)/(e-t)}function Yl(n,t,e){return n!==t?(e-n)/(t-n):0}function Xa(n,t,e){return(1-e)*n+e*t}function Kl(n,t,e,s){return Xa(n,t,1-Math.exp(-e*s))}function $l(n,t=1){return t-Math.abs(qa(n,t*2)-t)}function Zl(n,t,e){return n<=t?0:n>=e?1:(n=(n-t)/(e-t),n*n*(3-2*n))}function Ql(n,t,e){return n<=t?0:n>=e?1:(n=(n-t)/(e-t),n*n*n*(n*(n*6-15)+10))}function Jl(n,t){return n+Math.floor(Math.random()*(t-n+1))}function th(n,t){return n+Math.random()*(t-n)}function eh(n){return n*(.5-Math.random())}function rh(n){n!==void 0&&(fl=n);let t=fl+=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 nh(n){return n*Da}function sh(n){return n*Ha}function ih(n){return(n&n-1)===0&&n!==0}function ah(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function oh(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function Ws(n){const t=Math.PI*2;return(n%t+t)%t}function lh(n,t,e){return n>t&&n<e||n>e&&n<t}function hh(n,t,e,s=!1){return n=Ws(n),t=Ws(t),e=Ws(e),s?t>e?n<=t&&n>=e:n<=t||n>=e:t<e?n>=t&&n<=e:n>=t||n<=e}function Ya(n){return n=Math.abs(n),n<1?0:Math.ceil(Math.log10(Math.abs(n)+1))}function uh(n,t=1e-7){const e=Ya(n);return Math.max(Math.pow(10,e)*t,t)}const It={DEG2RAD:Da,RAD2DEG:Ha,generateUUID:ql,clamp:Ur,euclideanModulo:qa,mapLinear:Xl,inverseLerp:Yl,lerp:Xa,damp:Kl,pingpong:$l,smoothstep:Zl,smootherstep:Ql,randInt:Jl,randFloat:th,randFloatSpread:eh,seededRandom:rh,degToRad:nh,radToDeg:sh,isPowerOfTwo:ih,ceilPowerOfTwo:ah,floorPowerOfTwo:oh,normalizeAngle:Ws,isBetween:lh,isBetweenAngle:hh,intPartLength:Ya,relativeEps:uh},ka=class ch{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:a,y:h}=t;this.x=a,this.y=h;return}if(s===2){this.x=t,this.y=e;return}throw Ze.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 ch(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,a=t.elements;return this.x=a[0]*e+a[3]*s+a[6],this.y=a[1]*e+a[4]*s+a[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),a=Math.sin(e),h=this.x-t.x,u=this.y-t.y;return this.x=h*s-u*a+t.x,this.y=h*a+u*s+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}relativeEps(t=1e-7){return Math.min(It.relativeEps(this.x,t),It.relativeEps(this.y,t))}*[Symbol.iterator](){yield this.x,yield this.y}};ka.EMPTY=Object.freeze(new ka(0,0));let te=ka;const Na=class dh{constructor(t,e,s,a,h,u,m,b,_){this.elements=[1,0,0,0,1,0,0,0,1],t!=null&&e!=null&&s!=null&&a!=null&&h!=null&&u!=null&&m!=null&&b!=null&&_!=null&&this.set(t,e,s,a,h,u,m,b,_)}set(t,e,s,a,h,u,m,b,_){const w=this.elements;return w[0]=t,w[1]=a,w[2]=m,w[3]=e,w[4]=h,w[5]=b,w[6]=s,w[7]=u,w[8]=_,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,a=e.elements,h=this.elements,u=s[0],m=s[3],b=s[6],_=s[1],w=s[4],x=s[7],A=s[2],T=s[5],L=s[8],O=a[0],V=a[3],F=a[6],at=a[1],ft=a[4],st=a[7],H=a[2],dt=a[5],it=a[8];return h[0]=u*O+m*at+b*H,h[3]=u*V+m*ft+b*dt,h[6]=u*F+m*st+b*it,h[1]=_*O+w*at+x*H,h[4]=_*V+w*ft+x*dt,h[7]=_*F+w*st+x*it,h[2]=A*O+T*at+L*H,h[5]=A*V+T*ft+L*dt,h[8]=A*F+T*st+L*it,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],a=t[2],h=t[3],u=t[4],m=t[5],b=t[6],_=t[7],w=t[8];return e*u*w-e*m*_-s*h*w+s*m*b+a*h*_-a*u*b}invert(){const t=this.elements,e=t[0],s=t[1],a=t[2],h=t[3],u=t[4],m=t[5],b=t[6],_=t[7],w=t[8],x=w*u-m*_,A=m*b-w*h,T=_*h-u*b,L=e*x+s*A+a*T;if(L===0)return this.set(0,0,0,0,0,0,0,0,0);const O=1/L;return t[0]=x*O,t[1]=(a*_-w*s)*O,t[2]=(m*s-a*u)*O,t[3]=A*O,t[4]=(w*e-a*b)*O,t[5]=(a*h-m*e)*O,t[6]=T*O,t[7]=(s*b-_*e)*O,t[8]=(u*e-s*h)*O,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,a,h,u,m){const b=Math.cos(h),_=Math.sin(h);return this.set(s*b,s*_,-s*(b*u+_*m)+u+t,-a*_,a*b,-a*(-_*u+b*m)+m+e,0,0,1),this}scale(t,e){return this.premultiply(ga.makeScale(t,e)),this}rotate(t){return this.premultiply(ga.makeRotation(-t)),this}translate(t,e){return this.premultiply(ga.makeTranslation(t,e)),this}makeTranslation(t,e){return t instanceof te?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 a=0;a<9;a++)if(e[a]!==s[a])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 dh().fromArray(this.elements)}};Na.IDENTITY=Object.freeze(new Na);let Ji=Na;const ga=new Ji,Sn=1e-6,Qt=2*Math.PI,Kc={x:0,y:0},Ka={x:0,y:0,z:0};class $a{constructor(){this.equalPointTol=Sn,this.equalVectorTol=Sn}equalPoint2d(t,e){return new te(t).sub(e).length()<this.equalPointTol}equalPoint3d(t,e){return new Y(t).sub(e).length()<this.equalPointTol}static equalToZero(t,e=Sn){return t<e&&t>-e}static equal(t,e,s=Sn){return Math.abs(t-e)<s}static great(t,e,s=Sn){return t-e>s}static less(t,e,s=Sn){return t-e<s}}const Za=new $a;function Qa(n,t,e=!1){const s=n.x,a=n.y;let h=!1;const u=t.length;for(let m=0,b=u-1;m<u;b=m++){const _=t[m].x,w=t[m].y,x=t[b].x,A=t[b].y;let T=w>a!=A>a;e&&(T=w>=a!=A>=a),T&&s<(x-_)*(a-w)/(A-w)+_&&(h=!h)}return h}function ph(n,t){if(n.length===0||t.length===0)return!1;const e=new Pe().setFromPoints(n),s=new Pe().setFromPoints(t);if(!e.intersectsBox(s))return!1;for(let a=0;a<n.length;){if(Qa(n[a],t,!0))return!0;a<n.length-1&&Za.equalPoint2d(n[a+1],n[a])&&++a,++a}return!1}const mh={isPointInPolygon:Qa,isPolygonIntersect:ph};function gh(n,t){const e=[],s=t-1,a=n;for(let h=0;h<=a;h++)e.push(0);for(let h=1;h<=s-a;h++)e.push(h);for(let h=0;h<=a;h++)e.push(s-a+1);return e}function fh(n,t){const e=t.length-1,s=n,a=[0];let h=0;for(let m=1;m<=e;m++){const b=t[m][0]-t[m-1][0],_=t[m][1]-t[m-1][1],w=t[m][2]-t[m-1][2],x=Math.sqrt(b*b+_*_+w*w);h+=x,a.push(h)}const u=[];for(let m=0;m<=s;m++)u.push(0);for(let m=1;m<=e-s;m++){const b=a[m]/h;u.push(b*(e-s+1))}for(let m=0;m<=s;m++)u.push(e-s+1);return u}function _h(n,t){const e=t.length-1,s=n,a=[0];let h=0;for(let m=1;m<=e;m++){const b=t[m][0]-t[m-1][0],_=t[m][1]-t[m-1][1],w=t[m][2]-t[m-1][2],x=Math.sqrt(b*b+_*_+w*w),A=Math.sqrt(x);h+=A,a.push(h)}const u=[];for(let m=0;m<=s;m++)u.push(0);for(let m=1;m<=e-s;m++){const b=a[m]/h;u.push(b*(e-s+1))}for(let m=0;m<=s;m++)u.push(e-s+1);return u}function wi(n,t,e,s){if(t===0)return e>=s[n]&&e<s[n+1]?1:0;const a=s[n+t]-s[n],h=s[n+t+1]-s[n+1],u=a>1e-10?(e-s[n])/a:0,m=h>1e-10?(s[n+t+1]-e)/h:0;return u*wi(n,t-1,e,s)+m*wi(n+1,t-1,e,s)}function Ds(n,t,e,s,a){const h=s.length-1,u=t;if(n=Math.max(e[u],Math.min(e[h+1],n)),Math.abs(n-e[h+1])<1e-8)return[...s[h]];if(Math.abs(n-e[u])<1e-8)return[...s[0]];const m=[0,0,0];let b=0;for(let _=0;_<=h;_++){const w=wi(_,u,n,e),x=a[_]*w;m[0]+=s[_][0]*x,m[1]+=s[_][1]*x,m[2]+=s[_][2]*x,b+=x}if(b<1e-10){const _=e[e.length-u-1];if(Math.abs(n-_)<1e-8)return[...s[h]];if(Math.abs(n-e[u])<1e-8)return[...s[0]]}return b>1e-10&&(m[0]/=b,m[1]/=b,m[2]/=b),m}function yh(n,t,e,s){const a=n,h=t[a],u=t[t.length-a-1];let m=0;const b=1e3,_=(u-h)/b;let w=Ds(h,n,t,e,s);for(let O=1;O<=b;O++){const V=h+O*_,F=Ds(V,n,t,e,s),at=F[0]-w[0],ft=F[1]-w[1],st=F[2]-w[2];m+=Math.sqrt(at*at+ft*ft+st*st),w=F}const x=Ds(u,n,t,e,s),A=x[0]-w[0],T=x[1]-w[1],L=x[2]-w[2];return m+=Math.sqrt(A*A+T*T+L*L),m}function $c(n){return n.map(t=>[...t])}class En{constructor(t=0,e=0,s=0,a=1){this._x=t,this._y=e,this._z=s,this._w=a}static slerpFlat(t,e,s,a,h,u,m){let b=s[a+0],_=s[a+1],w=s[a+2],x=s[a+3];const A=h[u+0],T=h[u+1],L=h[u+2],O=h[u+3];if(m===0){t[e+0]=b,t[e+1]=_,t[e+2]=w,t[e+3]=x;return}if(m===1){t[e+0]=A,t[e+1]=T,t[e+2]=L,t[e+3]=O;return}if(x!==O||b!==A||_!==T||w!==L){let V=1-m;const F=b*A+_*T+w*L+x*O,at=F>=0?1:-1,ft=1-F*F;if(ft>Number.EPSILON){const H=Math.sqrt(ft),dt=Math.atan2(H,F*at);V=Math.sin(V*dt)/H,m=Math.sin(m*dt)/H}const st=m*at;if(b=b*V+A*st,_=_*V+T*st,w=w*V+L*st,x=x*V+O*st,V===1-m){const H=1/Math.sqrt(b*b+_*_+w*w+x*x);b*=H,_*=H,w*=H,x*=H}}t[e]=b,t[e+1]=_,t[e+2]=w,t[e+3]=x}static multiplyQuaternionsFlat(t,e,s,a,h,u){const m=s[a],b=s[a+1],_=s[a+2],w=s[a+3],x=h[u],A=h[u+1],T=h[u+2],L=h[u+3];return t[e]=m*L+w*x+b*T-_*A,t[e+1]=b*L+w*A+_*x-m*T,t[e+2]=_*L+w*T+m*A-b*x,t[e+3]=w*L-m*x-b*A-_*T,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,a){return this._x=t,this._y=e,this._z=s,this._w=a,this._onChangeCallback(),this}clone(){return new En(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,a=t.y,h=t.z,u=t.order,m=Math.cos,b=Math.sin,_=m(s/2),w=m(a/2),x=m(h/2),A=b(s/2),T=b(a/2),L=b(h/2);switch(u){case"XYZ":this._x=A*w*x+_*T*L,this._y=_*T*x-A*w*L,this._z=_*w*L+A*T*x,this._w=_*w*x-A*T*L;break;case"YXZ":this._x=A*w*x+_*T*L,this._y=_*T*x-A*w*L,this._z=_*w*L-A*T*x,this._w=_*w*x+A*T*L;break;case"ZXY":this._x=A*w*x-_*T*L,this._y=_*T*x+A*w*L,this._z=_*w*L+A*T*x,this._w=_*w*x-A*T*L;break;case"ZYX":this._x=A*w*x-_*T*L,this._y=_*T*x+A*w*L,this._z=_*w*L-A*T*x,this._w=_*w*x+A*T*L;break;case"YZX":this._x=A*w*x+_*T*L,this._y=_*T*x+A*w*L,this._z=_*w*L-A*T*x,this._w=_*w*x-A*T*L;break;case"XZY":this._x=A*w*x-_*T*L,this._y=_*T*x-A*w*L,this._z=_*w*L+A*T*x,this._w=_*w*x+A*T*L;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+u)}return e===!0&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const s=e/2,a=Math.sin(s);return this._x=t.x*a,this._y=t.y*a,this._z=t.z*a,this._w=Math.cos(s),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,s=e[0],a=e[4],h=e[8],u=e[1],m=e[5],b=e[9],_=e[2],w=e[6],x=e[10],A=s+m+x;if(A>0){const T=.5/Math.sqrt(A+1);this._w=.25/T,this._x=(w-b)*T,this._y=(h-_)*T,this._z=(u-a)*T}else if(s>m&&s>x){const T=2*Math.sqrt(1+s-m-x);this._w=(w-b)/T,this._x=.25*T,this._y=(a+u)/T,this._z=(h+_)/T}else if(m>x){const T=2*Math.sqrt(1+m-s-x);this._w=(h-_)/T,this._x=(a+u)/T,this._y=.25*T,this._z=(b+w)/T}else{const T=2*Math.sqrt(1+x-s-m);this._w=(u-a)/T,this._x=(h+_)/T,this._y=(b+w)/T,this._z=.25*T}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(Ur(this.dot(t),-1,1)))}rotateTowards(t,e){const s=this.angleTo(t);if(s===0)return this;const a=Math.min(1,e/s);return this.slerp(t,a),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,a=t._y,h=t._z,u=t._w,m=e._x,b=e._y,_=e._z,w=e._w;return this._x=s*w+u*m+a*_-h*b,this._y=a*w+u*b+h*m-s*_,this._z=h*w+u*_+s*b-a*m,this._w=u*w-s*m-a*b-h*_,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);const s=this._x,a=this._y,h=this._z,u=this._w;let m=u*t._w+s*t._x+a*t._y+h*t._z;if(m<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,m=-m):this.copy(t),m>=1)return this._w=u,this._x=s,this._y=a,this._z=h,this;const b=1-m*m;if(b<=Number.EPSILON){const T=1-e;return this._w=T*u+e*this._w,this._x=T*s+e*this._x,this._y=T*a+e*this._y,this._z=T*h+e*this._z,this.normalize(),this}const _=Math.sqrt(b),w=Math.atan2(_,m),x=Math.sin((1-e)*w)/_,A=Math.sin(e*w)/_;return this._w=u*x+this._w*A,this._x=s*x+this._x*A,this._y=a*x+this._y*A,this._z=h*x+this._z*A,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(),a=Math.sqrt(1-s),h=Math.sqrt(s);return this.set(a*Math.sin(t),a*Math.cos(t),h*Math.sin(e),h*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 ke=class vh{constructor(t,e,s){this.x=0,this.y=0,this.z=0;const a=+(t!==void 0)+ +(e!==void 0)+ +(s!==void 0);if(a!==0){if(a===1&&t instanceof Array){this.x=t[0],this.y=t[1],this.z=t[2];return}if(a===1){const{x:h,y:u,z:m}=t;this.x=h,this.y=u,this.z=m||0;return}if(a===3){this.x=t,this.y=e,this.z=s;return}throw Ze.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 vh(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(_l.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(_l.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,s=this.y,a=this.z,h=t.elements;return this.x=h[0]*e+h[3]*s+h[6]*a,this.y=h[1]*e+h[4]*s+h[7]*a,this.z=h[2]*e+h[5]*s+h[8]*a,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,s=this.y,a=this.z,h=t.elements,u=1/(h[3]*e+h[7]*s+h[11]*a+h[15]);return this.x=(h[0]*e+h[4]*s+h[8]*a+h[12])*u,this.y=(h[1]*e+h[5]*s+h[9]*a+h[13])*u,this.z=(h[2]*e+h[6]*s+h[10]*a+h[14])*u,this}applyQuaternion(t){const e=this.x,s=this.y,a=this.z,h=t.x,u=t.y,m=t.z,b=t.w,_=2*(u*a-m*s),w=2*(m*e-h*a),x=2*(h*s-u*e);return this.x=e+b*_+u*x-m*w,this.y=s+b*w+m*_-h*x,this.z=a+b*x+h*w-u*_,this}transformDirection(t){const e=this.x,s=this.y,a=this.z,h=t.elements;return this.x=h[0]*e+h[4]*s+h[8]*a,this.y=h[1]*e+h[5]*s+h[9]*a,this.z=h[2]*e+h[6]*s+h[10]*a,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(),a=t.length();return Math.abs(e)===s*a}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,a=t.y,h=t.z,u=e.x,m=e.y,b=e.z;return this.x=a*b-h*m,this.y=h*u-s*b,this.z=s*m-a*u,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 fa.copy(this).projectOnVector(t),this.sub(fa)}reflect(t){return this.sub(fa.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,a=this.z-t.z;return e*e+s*s+a*a}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(),a=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=s,this.z=a,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}};ke.ORIGIN=Object.freeze(new ke(0,0,0)),ke.X_AXIS=Object.freeze(new ke(1,0,0)),ke.NEGATIVE_X_AXIS=Object.freeze(new ke(-1,0,0)),ke.Y_AXIS=Object.freeze(new ke(0,1,0)),ke.NEGATIVE_Y_AXIS=Object.freeze(new ke(0,-1,0)),ke.Z_AXIS=Object.freeze(new ke(0,0,1)),ke.NEGATIVE_Z_AXIS=Object.freeze(new ke(0,0,-1));let Y=ke;const fa=new Y,_l=new En,La=class bh{constructor(t,e,s,a,h,u,m,b,_,w,x,A,T,L,O,V){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!=null&&e!=null&&s!=null&&a!=null&&h!=null&&u!=null&&m!=null&&b!=null&&_!=null&&w!=null&&x!=null&&A!=null&&T!=null&&L!=null&&O!=null&&V!=null&&this.set(t,e,s,a,h,u,m,b,_,w,x,A,T,L,O,V)}set(t,e,s,a,h,u,m,b,_,w,x,A,T,L,O,V){const F=this.elements;return F[0]=t,F[4]=e,F[8]=s,F[12]=a,F[1]=h,F[5]=u,F[9]=m,F[13]=b,F[2]=_,F[6]=w,F[10]=x,F[14]=A,F[3]=T,F[7]=L,F[11]=O,F[15]=V,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 bh().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(Za.equalPoint3d(t,Y.Z_AXIS))this.identity();else{const e=new Y(1,0,0);Math.abs(t.x)<1/64&&Math.abs(t.y)<1/64?e.crossVectors(Y.Y_AXIS,t).normalize():e.crossVectors(Y.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,a=1/Gn.setFromMatrixColumn(t,0).length(),h=1/Gn.setFromMatrixColumn(t,1).length(),u=1/Gn.setFromMatrixColumn(t,2).length();return e[0]=s[0]*a,e[1]=s[1]*a,e[2]=s[2]*a,e[3]=0,e[4]=s[4]*h,e[5]=s[5]*h,e[6]=s[6]*h,e[7]=0,e[8]=s[8]*u,e[9]=s[9]*u,e[10]=s[10]*u,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(Zc,t,Qc)}lookAt(t,e,s){const a=this.elements;return We.subVectors(t,e),We.lengthSq()===0&&(We.z=1),We.normalize(),tn.crossVectors(s,We),tn.lengthSq()===0&&(Math.abs(s.z)===1?We.x+=1e-4:We.z+=1e-4,We.normalize(),tn.crossVectors(s,We)),tn.normalize(),li.crossVectors(We,tn),a[0]=tn.x,a[4]=li.x,a[8]=We.x,a[1]=tn.y,a[5]=li.y,a[9]=We.y,a[2]=tn.z,a[6]=li.z,a[10]=We.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const s=t.elements,a=e.elements,h=this.elements,u=s[0],m=s[4],b=s[8],_=s[12],w=s[1],x=s[5],A=s[9],T=s[13],L=s[2],O=s[6],V=s[10],F=s[14],at=s[3],ft=s[7],st=s[11],H=s[15],dt=a[0],it=a[4],Dt=a[8],$t=a[12],Xt=a[1],wt=a[5],Bt=a[9],ye=a[13],ve=a[2],Fe=a[6],ne=a[10],de=a[14],Q=a[3],Lt=a[7],pe=a[11],br=a[15];return h[0]=u*dt+m*Xt+b*ve+_*Q,h[4]=u*it+m*wt+b*Fe+_*Lt,h[8]=u*Dt+m*Bt+b*ne+_*pe,h[12]=u*$t+m*ye+b*de+_*br,h[1]=w*dt+x*Xt+A*ve+T*Q,h[5]=w*it+x*wt+A*Fe+T*Lt,h[9]=w*Dt+x*Bt+A*ne+T*pe,h[13]=w*$t+x*ye+A*de+T*br,h[2]=L*dt+O*Xt+V*ve+F*Q,h[6]=L*it+O*wt+V*Fe+F*Lt,h[10]=L*Dt+O*Bt+V*ne+F*pe,h[14]=L*$t+O*ye+V*de+F*br,h[3]=at*dt+ft*Xt+st*ve+H*Q,h[7]=at*it+ft*wt+st*Fe+H*Lt,h[11]=at*Dt+ft*Bt+st*ne+H*pe,h[15]=at*$t+ft*ye+st*de+H*br,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],a=t[8],h=t[12],u=t[1],m=t[5],b=t[9],_=t[13],w=t[2],x=t[6],A=t[10],T=t[14],L=t[3],O=t[7],V=t[11],F=t[15];return L*(+h*b*x-a*_*x-h*m*A+s*_*A+a*m*T-s*b*T)+O*(+e*b*T-e*_*A+h*u*A-a*u*T+a*_*w-h*b*w)+V*(+e*_*x-e*m*T-h*u*x+s*u*T+h*m*w-s*_*w)+F*(-a*m*w-e*b*x+e*m*A+a*u*x-s*u*A+s*b*w)}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 a=this.elements;return t instanceof Y?(a[12]=t.x,a[13]=t.y,a[14]=t.z):(a[12]=t,a[13]=e,a[14]=s),this}invert(){const t=this.elements,e=t[0],s=t[1],a=t[2],h=t[3],u=t[4],m=t[5],b=t[6],_=t[7],w=t[8],x=t[9],A=t[10],T=t[11],L=t[12],O=t[13],V=t[14],F=t[15],at=x*V*_-O*A*_+O*b*T-m*V*T-x*b*F+m*A*F,ft=L*A*_-w*V*_-L*b*T+u*V*T+w*b*F-u*A*F,st=w*O*_-L*x*_+L*m*T-u*O*T-w*m*F+u*x*F,H=L*x*b-w*O*b-L*m*A+u*O*A+w*m*V-u*x*V,dt=e*at+s*ft+a*st+h*H;if(dt===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const it=1/dt;return t[0]=at*it,t[1]=(O*A*h-x*V*h-O*a*T+s*V*T+x*a*F-s*A*F)*it,t[2]=(m*V*h-O*b*h+O*a*_-s*V*_-m*a*F+s*b*F)*it,t[3]=(x*b*h-m*A*h-x*a*_+s*A*_+m*a*T-s*b*T)*it,t[4]=ft*it,t[5]=(w*V*h-L*A*h+L*a*T-e*V*T-w*a*F+e*A*F)*it,t[6]=(L*b*h-u*V*h-L*a*_+e*V*_+u*a*F-e*b*F)*it,t[7]=(u*A*h-w*b*h+w*a*_-e*A*_-u*a*T+e*b*T)*it,t[8]=st*it,t[9]=(L*x*h-w*O*h-L*s*T+e*O*T+w*s*F-e*x*F)*it,t[10]=(u*O*h-L*m*h+L*s*_-e*O*_-u*s*F+e*m*F)*it,t[11]=(w*m*h-u*x*h-w*s*_+e*x*_+u*s*T-e*m*T)*it,t[12]=H*it,t[13]=(w*O*a-L*x*a+L*s*A-e*O*A-w*s*V+e*x*V)*it,t[14]=(L*m*a-u*O*a-L*s*b+e*O*b+u*s*V-e*m*V)*it,t[15]=(u*x*a-w*m*a+w*s*b-e*x*b-u*s*A+e*m*A)*it,this}scale(t){const e=this.elements,s=t.x,a=t.y,h=t.z;return e[0]*=s,e[4]*=a,e[8]*=h,e[1]*=s,e[5]*=a,e[9]*=h,e[2]*=s,e[6]*=a,e[10]*=h,e[3]*=s,e[7]*=a,e[11]*=h,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],a=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,s,a))}makeTranslation(t,e,s){return t instanceof Y?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),a=Math.sin(e),h=1-s,u=t.x,m=t.y,b=t.z,_=h*u,w=h*m;return this.set(_*u+s,_*m-a*b,_*b+a*m,0,_*m+a*b,w*m+s,w*b-a*u,0,_*b-a*m,w*b+a*u,h*b*b+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,a,h,u){return this.set(1,s,h,0,t,1,u,0,e,a,1,0,0,0,0,1),this}compose(t,e,s){const a=this.elements,h=e.x,u=e.y,m=e.z,b=e.w,_=h+h,w=u+u,x=m+m,A=h*_,T=h*w,L=h*x,O=u*w,V=u*x,F=m*x,at=b*_,ft=b*w,st=b*x,H=s.x,dt=s.y,it=s.z;return a[0]=(1-(O+F))*H,a[1]=(T+st)*H,a[2]=(L-ft)*H,a[3]=0,a[4]=(T-st)*dt,a[5]=(1-(A+F))*dt,a[6]=(V+at)*dt,a[7]=0,a[8]=(L+ft)*it,a[9]=(V-at)*it,a[10]=(1-(A+O))*it,a[11]=0,a[12]=t.x,a[13]=t.y,a[14]=t.z,a[15]=1,this}decompose(t,e,s){const a=this.elements;let h=Gn.set(a[0],a[1],a[2]).length();const u=Gn.set(a[4],a[5],a[6]).length(),m=Gn.set(a[8],a[9],a[10]).length();this.determinant()<0&&(h=-h),t.x=a[12],t.y=a[13],t.z=a[14],lr.copy(this);const b=1/h,_=1/u,w=1/m;return lr.elements[0]*=b,lr.elements[1]*=b,lr.elements[2]*=b,lr.elements[4]*=_,lr.elements[5]*=_,lr.elements[6]*=_,lr.elements[8]*=w,lr.elements[9]*=w,lr.elements[10]*=w,e.setFromRotationMatrix(lr),s.x=h,s.y=u,s.z=m,this}equals(t){const e=this.elements,s=t.elements;for(let a=0;a<16;a++)if(e[a]!==s[a])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}};La.IDENTITY=Object.freeze(new La);let $e=La;const Gn=new Y,lr=new $e,Zc=new Y(0,0,0),Qc=new Y(1,1,1),tn=new Y,li=new Y,We=new Y;class Nt{constructor(t=void 0,e=void 0){this.min=t==null?new Y(1/0,1/0,1/0):new Y(t.x,t.y,t.z),this.max=e==null?new Y(-1/0,-1/0,-1/0):new Y(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(_a.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=_a.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(s),this.max.copy(t).add(s),this}clone(){return new Nt().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 Y(0,0,0):new Y(0,0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new Y(0,0,0):new Y(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,_a).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:(Pr[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Pr[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Pr[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Pr[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Pr[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Pr[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Pr[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Pr[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Pr),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 Pr=[new Y,new Y,new Y,new Y,new Y,new Y,new Y,new Y],_a=new Y,yl=new te;class Pe{constructor(t=void 0,e=void 0){this.min=t==null?new te(1/0,1/0):new te(t.x,t.y),this.max=e==null?new te(-1/0,-1/0):new te(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=yl.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(s),this.max.copy(t).add(s),this}clone(){return new Pe().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 te(0,0):new te(0,0).addVectors(this.min,this.max).multiplyScalar(.5)}get size(){return this.isEmpty()?new te(0,0):new te(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,yl).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 vl=new Y,Jc=new Y,td=new Ji;class ri{constructor(t=new Y(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,a){return this.normal.set(t,e,s),this.constant=a,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,s){const a=vl.subVectors(s,e).cross(Jc.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(a,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||td.getNormalMatrix(t),a=this.coplanarPoint(vl).applyMatrix4(t),h=this.normal.applyMatrix3(s).normalize();return this.constant=-a.dot(h),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 ri().copy(this)}}class kt extends te{static pointArrayToNumberArray(t){const e=new Array(t.length*2);return t.forEach((s,a)=>{s.toArray(e,a*2)}),e}}class W extends Y{static pointArrayToNumberArray(t,e=!0){const s=e?3:2,a=new Array(t.length*s);return t.forEach((h,u)=>{h.toArray(a,u*s)}),a}}const bl=new $e,xl=new En,xh=class Ca{constructor(t=0,e=0,s=0,a=Ca.DEFAULT_ORDER){this._x=t,this._y=e,this._z=s,this._order=a}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,a=this._order){return this._x=t,this._y=e,this._z=s,this._order=a,this._onChangeCallback(),this}clone(){return new Ca(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 a=t.elements,h=a[0],u=a[4],m=a[8],b=a[1],_=a[5],w=a[9],x=a[2],A=a[6],T=a[10];switch(e){case"XYZ":this._y=Math.asin(Ur(m,-1,1)),Math.abs(m)<.9999999?(this._x=Math.atan2(-w,T),this._z=Math.atan2(-u,h)):(this._x=Math.atan2(A,_),this._z=0);break;case"YXZ":this._x=Math.asin(-Ur(w,-1,1)),Math.abs(w)<.9999999?(this._y=Math.atan2(m,T),this._z=Math.atan2(b,_)):(this._y=Math.atan2(-x,h),this._z=0);break;case"ZXY":this._x=Math.asin(Ur(A,-1,1)),Math.abs(A)<.9999999?(this._y=Math.atan2(-x,T),this._z=Math.atan2(-u,_)):(this._y=0,this._z=Math.atan2(b,h));break;case"ZYX":this._y=Math.asin(-Ur(x,-1,1)),Math.abs(x)<.9999999?(this._x=Math.atan2(A,T),this._z=Math.atan2(b,h)):(this._x=0,this._z=Math.atan2(-u,_));break;case"YZX":this._z=Math.asin(Ur(b,-1,1)),Math.abs(b)<.9999999?(this._x=Math.atan2(-w,_),this._y=Math.atan2(-x,h)):(this._x=0,this._y=Math.atan2(m,T));break;case"XZY":this._z=Math.asin(-Ur(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(A,_),this._y=Math.atan2(m,h)):(this._x=Math.atan2(-w,T),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,s===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,s=!0){return bl.makeRotationFromQuaternion(t),this.setFromRotationMatrix(bl,e,s)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return xl.setFromEuler(this),this.setFromQuaternion(xl,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}};xh.DEFAULT_ORDER="XYZ";let ed=xh;class wh{constructor(){this._boundingBoxNeedsUpdate=!1}get boundingBoxNeedUpdate(){return this._boundingBoxNeedsUpdate}}let Ja=class extends wh{translate(t){return this.transform(new Ji().makeTranslation(t.x,t.y))}get box(){return(this._box==null||this._boundingBoxNeedsUpdate)&&(this._box=this.calculateBoundingBox(),this._boundingBoxNeedsUpdate=!1),this._box}};class ta extends Ja{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 Pe}transform(t){return this._boundingBoxNeedsUpdate=!0,this}getPoints(t){const e=[];for(let s=0;s<this.loops.length;++s){const a=this.loops[s].getPoints(t);e.push(a)}return e}buildHierarchy(){var t;const e=this.getPoints(100),s=this.calculateBoundaryBoxes(e),a=this.sortBoundaryBoxesByAreas(s),h=new Map,u=a.length;for(let b=0;b<u;b++)h.set(a[b],{index:a[b],children:[]});const m={index:-1,children:[]};for(let b=0;b<u;b++){const _=a[b],w=e[_],x=s[_];let A=b+1;for(;A<u;A++){const T=a[A],L=e[T];if(s[T].containsBox(x)&&mh.isPointInPolygon(w[It.randInt(0,w.length-1)],L)){(t=h.get(T))==null||t.children.push(h.get(_));break}}A===u&&m.children.push(h.get(_))}return m}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),a=this.polygonArea(s);e===0?t+=Math.abs(a):t-=Math.abs(a)}return t}polygonArea(t){const e=t.length;if(e<3)return 0;let s=0;for(let a=0,h=e-1;a<e;h=a++){const u=t[h],m=t[a];s+=u.x*m.y-m.x*u.y}return s*.5}calculateBoundaryBoxes(t){const e=[];return t.forEach(s=>{e.push(new Pe().setFromPoints(s))}),e}sortBoundaryBoxesByAreas(t){const e=[];t.forEach((a,h)=>{const u=a.size,m=u.width*u.height;e.push({area:m,index:h})}),e.sort((a,h)=>a.area-h.area);const s=[];return e.forEach(a=>{s.push(a.index)}),s}}class es extends Ja{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,a=this.getPoint(0),h=0;e.push(0);for(let u=1;u<=t;u++)s=this.getPoint(u/t),h+=s.distanceTo(a),e.push(h),a=s;return e}getUtoTmapping(t,e){const s=this.getLengths();let a=0;const h=s.length;let u;e?u=e:u=t*s[h-1];let m=0,b=h-1,_;for(;m<=b;)if(a=Math.floor(m+(b-m)/2),_=s[a]-u,_<0)m=a+1;else if(_>0)b=a-1;else{b=a;break}if(a=b,s[a]===u)return a/(h-1);const w=s[a],x=s[a+1]-w,A=(u-w)/x;return(a+A)/(h-1)}getTangent(t){let e=t-1e-4,s=t+1e-4;e<0&&(e=0),s>1&&(s=1);const a=this.getPoint(e),h=this.getPoint(s),u=new kt;return u.copy(h).sub(a).normalize(),u}getTangentAt(t){const e=this.getUtoTmapping(t);return this.getTangent(e)}}class Yn extends es{constructor(t,e,s,a,h){super();const u=+(t!==void 0)+ +(e!==void 0)+ +(s!==void 0)+ +(a!==void 0)+ +(h!==void 0);if(u==3)typeof t=="object"&&typeof e=="object"&&typeof s=="object"?this.createByThreePoints(t,e,s):this.createByStartEndPointsAndBulge(t,e,s);else if(u==5){const m=t;this.center=new kt(m.x,m.y),this.radius=e,this._clockwise=h,this._startAngle=this._clockwise?this._mirrorAngle(It.normalizeAngle(s)):It.normalizeAngle(s),this._endAngle=this._clockwise?this._mirrorAngle(It.normalizeAngle(a)):It.normalizeAngle(a)}else throw Ze.ILLEGAL_PARAMETERS}createByThreePoints(t,e,s){const a=(it,Dt)=>({x:(it.x+Dt.x)/2,y:(it.y+Dt.y)/2}),h=(it,Dt)=>(Dt.y-it.y)/(Dt.x-it.x),u=it=>-1/it,m=a(t,e),b=a(e,s),_=h(t,e),w=h(e,s),x=u(_),A=u(w),T=(it,Dt,$t,Xt)=>{const wt=(Xt-Dt)/(it-$t),Bt=it*wt+Dt;return{x:wt,y:Bt}},L=m.y-x*m.x,O=b.y-A*b.x,V=T(x,L,A,O),F=Math.sqrt(Math.pow(t.x-V.x,2)+Math.pow(t.y-V.y,2)),at=(it,Dt)=>Math.atan2(it.y-Dt.y,it.x-Dt.x),ft=at(t,V),st=at(e,V),H=at(s,V),dt=H>ft&&H<st||ft>H&&ft<st||st>H&&st<ft;this.center=V,this.radius=F,this._clockwise=!dt,this._startAngle=ft,this._endAngle=H}createByStartEndPointsAndBulge(t,e,s){let a,h,u;s<0?(a=Math.atan(-s)*4,h=new te(t),u=new te(e)):(a=Math.atan(s)*4,h=new te(e),u=new te(t));const m=new te().subVectors(u,h),b=m.length(),_=new te().addVectors(h,m.multiplyScalar(.5)),w=Math.abs(b/2/Math.tan(a/2)),x=m.normalize();let A;if(a<Math.PI){const T=new te(x.x*Math.cos(Math.PI/2)-x.y*Math.sin(Math.PI/2),x.y*Math.cos(Math.PI/2)+x.x*Math.sin(Math.PI/2));A=_.add(T.multiplyScalar(-w))}else{const T=new te(x.x*Math.cos(Math.PI/2)-x.y*Math.sin(Math.PI/2),x.y*Math.cos(Math.PI/2)+x.x*Math.sin(Math.PI/2));A=_.add(T.multiplyScalar(w))}s<0?(this._startAngle=Math.atan2(h.y-A.y,h.x-A.x),this._endAngle=Math.atan2(u.y-A.y,u.x-A.x)):(this._startAngle=Math.atan2(u.y-A.y,u.x-A.x),this._endAngle=Math.atan2(h.y-A.y,h.x-A.x)),this._clockwise=s<0,this.center=A,this.radius=u.sub(A).length()}get center(){return this._center}set center(t){this._center=new kt(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(It.normalizeAngle(t)):It.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==Qt?t:It.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?It.normalizeAngle(t-e):It.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._getInternalAngle(this.endAngle),s=It.normalizeAngle((t+e)/2),a=this._clockwise?this._mirrorAngle(s):s;return this.getPointAtAngle(a)}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 h of e){const u=this._getInternalAngle(h);It.isBetweenAngle(u,this._getInternalAngle(this.startAngle),this._getInternalAngle(this.endAngle),this.clockwise)&&t.push(this.getPointAtAngle(h))}const s=t.map(h=>h.x),a=t.map(h=>h.y);return new Pe(new kt(Math.min(...s),Math.min(...a)),new kt(Math.max(...s),Math.max(...a)))}get length(){return Math.abs(this.deltaAngle*this.radius)}transform(t){return 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),a=this.center.y+this.radius*Math.sin(e);return new kt(s,a)}getPoints(t=100){const e=[];let s=this.deltaAngle,a=this._getInternalAngle(this.startAngle);if(this.closed&&(s=Qt,a=0),this.clockwise)for(let h=0;h<=t;h++){const u=a-s*(h/t),m=this._clockwise?this._mirrorAngle(u):u,b=this.getPointAtAngle(m);e.push(new kt(b.x,b.y))}else for(let h=0;h<=t;h++){const u=a+s*(h/t),m=this._clockwise?this._mirrorAngle(u):u,b=this.getPointAtAngle(m);e.push(new kt(b.x,b.y))}return e}}class rd extends wh{translate(t){return this.transform(new $e().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 ni extends rd{}let Kn=class Sh extends ni{constructor(t,e){super(),this._start=new W(t),this._end=new W(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 Y().subVectors(this.endPoint,this.startPoint).normalize()}get midPoint(){return new W((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(mn).normalize();return new W(this._start).addScaledVector(s,t)}else{const s=this.delta(mn).normalize();return new W(this._end).addScaledVector(s,t)}}extend(t,e=!1){if(e){const s=mn.subVectors(this._start,this._end).normalize();this._start=new W(this._start).addScaledVector(s,t)}else{const s=this.delta(mn).normalize();this._end=new W(this._end).addScaledVector(s,t)}return this._boundingBoxNeedsUpdate=!0,this}closestPointToPointParameter(t,e){wl.subVectors(t,this._start),hi.subVectors(this.endPoint,this.startPoint);const s=hi.dot(hi);let a=hi.dot(wl)/s;return e&&(a=It.clamp(a,0,1)),a}closestPointToPoint(t,e,s){const a=this.closestPointToPointParameter(t,e);return this.delta(s).multiplyScalar(a).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=mn.subVectors(t,this.startPoint).dot(e);return new W().copy(e).multiplyScalar(s).add(this.startPoint)}perpPoint(t){const e=this.direction,s=this.startPoint,a=mn.subVectors(t,s).dot(e),h=mn.copy(e).multiplyScalar(a);return new W().addVectors(s,h)}calculateBoundingBox(){const t=new W(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 W(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 Nt(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 Sh(this._start.clone(),this._end.clone())}};const mn=new Y,wl=new Y,hi=new Y;let to=class gi extends ni{static computeCenterPoint(t,e,s){const a=new Y().addVectors(t,e).multiplyScalar(.5),h=new Y().addVectors(t,s).multiplyScalar(.5),u=new Y().subVectors(e,t),m=new Y().subVectors(s,t),b=new Y().crossVectors(u,m).normalize();if(b.lengthSq()===0)return console.error("Points are collinear and cannot form a valid arc."),null;const _=new Y().crossVectors(u,b).normalize(),w=new Y().crossVectors(m,b).normalize(),x=_.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),A=w.clone().multiplyScalar(Number.MAX_SAFE_INTEGER),T=new Kn(a,a.clone().add(x)),L=new Kn(h,h.clone().add(A)),O=new Y;return T.closestPointToPoint(L.startPoint,!0,O)?O:(console.error("Cannot find a valid center for the arc."),null)}static createByThreePoints(t,e,s){const a=gi.computeCenterPoint(t,e,s);if(a){const h=a.distanceTo(t),u=new Y().subVectors(t,a),m=new Y().subVectors(e,a),b=Math.atan2(u.y,u.x),_=Math.atan2(m.y,m.x);return new gi(a,h,b,_,Y.Z_AXIS)}}constructor(t,e,s,a,h,u=Y.X_AXIS){super(),this.center=t,this.radius=e,this.startAngle=s,this.endAngle=a,this.normal=h,this.refVec=u,(a-s)%Qt==0?(this.startAngle=0,this.endAngle=Qt):(this.startAngle=s,this.endAngle=a)}get center(){return this._center}set center(t){this._center=new W(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get radius(){return this._radius}set radius(t){if(t<0)throw Ze.ILLEGAL_PARAMETERS;this._radius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=It.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==Qt?t:It.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){return It.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 Y(t.x,t.y,t.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get refVec(){return this._refVec}set refVec(t){this._refVec=new Y(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=Qt);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 Y(t.x,t.y,t.z||0),s=this.center,a=this.normal,h=e.clone().sub(s).dot(a),u=e.clone().sub(a.clone().multiplyScalar(h)).clone().sub(s);if(u.lengthSq()===0)return this.startPoint.clone();u.normalize().multiplyScalar(this.radius);const m=s.clone().add(u),b=this.getAngle(m.clone()),_=this.startAngle,w=this.deltaAngle;let x=It.normalizeAngle(b-_);x<0&&(x=0),x>w&&(x=w);const A=this.getPointAtAngle(_+x),T=A.distanceTo(e),L=this.startPoint.distanceTo(e),O=this.endPoint.distanceTo(e);return L<T&&L<=O?this.startPoint.clone():O<T&&O<L?this.endPoint.clone():A}tangentPoints(t){const e=[],s=new Y(t.x,t.y,t.z||0),a=this.center,h=this.normal,u=this.radius,m=s.clone().sub(a).dot(h),b=s.clone().sub(h.clone().multiplyScalar(m)),_=a.clone(),w=b.clone().sub(_).length();if(w<u)return e;const x=Math.acos(u/w),A=this.getAngle(b.clone()),T=[A+x,A-x];for(const L of T){const O=It.normalizeAngle(L-this.startAngle);O>=0&&O<=this.deltaAngle&&e.push(this.getPointAtAngle(this.startAngle+O))}return e}nearestTangentPoint(t){const e=this.tangentPoints(t);if(e.length===0)return null;const s=new W(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 b=0;b<2*Math.PI;b+=Math.PI/2)It.isBetweenAngle(b,this.startAngle,this.endAngle)&&t.push(b);let e=1/0,s=1/0,a=1/0,h=-1/0,u=-1/0,m=-1/0;for(const b of t){const _=this.getPointAtAngle(b);_.x<e&&(e=_.x),_.y<s&&(s=_.y),_.z<a&&(a=_.z),_.x>h&&(h=_.x),_.y>u&&(u=_.y),_.z>m&&(m=_.z)}return new Nt({x:e,y:s,z:a},{x:h,y:u,z:m})}get closed(){return Math.abs(this.endAngle-this.startAngle)/Math.PI%2==0}getPoints(t){const e=[];let s=this.deltaAngle,a=this.startAngle;this.closed&&(s=Qt,a=0);for(let h=0;h<=t;h++){const u=a+s*(h/t),m=this.getPointAtAngle(u);e.push(m)}return e}transform(t){const e=ya.copy(this.refVec).applyAxisAngle(this.normal,this.startAngle).multiplyScalar(this.radius),s=ya.copy(this.refVec).applyAxisAngle(this.normal,this.endAngle).multiplyScalar(this.radius);return this.center.applyMatrix4(t),e.applyMatrix4(t),s.applyMatrix4(t),this.normal.applyMatrix4(t).normalize(),this.refVec.applyMatrix4(t).normalize(),this.startAngle=this.getAngle(e),this.endAngle=this.getAngle(s),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 gi(this.center.clone(),this.radius,this.startAngle,this.endAngle,this.normal,this.refVec)}getAngle(t){return t.sub(this.center),Math.atan2(t.dot(ya.crossVectors(this.refVec,this.normal)),t.dot(this.refVec))}getPointAtAngle(t){const e=this.normal,s=this.refVec,a={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},h=this.center,u=this.radius;return new W(h.x+u*(s.x*Math.cos(t)+a.x*Math.sin(t)),h.y+u*(s.y*Math.cos(t)+a.y*Math.sin(t)),h.z+u*(s.z*Math.cos(t)+a.z*Math.sin(t)))}get plane(){const t=new Y(this.center).distanceTo(Ka);return new ri(this.normal,t)}};const ya=new Y;class ea extends es{constructor(t,e,s,a=0,h=Qt,u=!1,m=0){super(),this.center=t,this.majorAxisRadius=e,this.minorAxisRadius=s,(h-a)%Qt==0?(this.startAngle=0,this.endAngle=Qt):(this.startAngle=a,this.endAngle=h),this.clockwise=u,this.rotation=m}get center(){return this._center}set center(t){this._center=new W(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(t){if(t<0)throw Ze.ILLEGAL_PARAMETERS;this._majorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(t){if(t<0)throw Ze.ILLEGAL_PARAMETERS;this._minorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=It.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==Qt?t:It.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 It.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,a=-1/0;for(let h=0;h<=100;h++){const u=this.getPoint(h/100);t=Math.min(t,u.x),e=Math.min(e,u.y),s=Math.max(s,u.x),a=Math.max(a,u.y)}return new Pe({x:t,y:e},{x:s,y:a})}get closed(){return this.deltaAngle==0}getPoint(t){const e=Math.PI*2;let s=this.endAngle-this.startAngle;const a=Math.abs(s)<Number.EPSILON;for(;s<0;)s+=e;for(;s>e;)s-=e;s<Number.EPSILON&&(a?s=0:s=e),this.clockwise===!0&&!a&&(s===e?s=-e:s=s-e);const h=this.startAngle+t*s;let u=this.center.x+this.majorAxisRadius*Math.cos(h),m=this.center.y+this.minorAxisRadius*Math.sin(h);if(this.rotation!==0){const b=Math.cos(this.rotation),_=Math.sin(this.rotation),w=u-this.center.x,x=m-this.center.y;u=w*b-x*_+this.center.x,m=w*_+x*b+this.center.y}return new kt(u,m)}transform(t){return this._boundingBoxNeedsUpdate=!0,this}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 ea(this.center,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle,this.clockwise,this.rotation)}}class ra extends ni{constructor(t,e,s,a,h,u=0,m=Qt){super(),this.center=t,this.normal=e,this.majorAxis=s,this.majorAxisRadius=a,this.minorAxisRadius=h;const b=Math.abs(m-u);Math.abs(b-Qt)<1e-10||Math.abs(b-2*Qt)<1e-10?(this.startAngle=0,this.endAngle=Qt):(this.startAngle=u,this.endAngle=m)}get center(){return this._center}set center(t){this._center=new W(t.x,t.y,t.z||0),this._boundingBoxNeedsUpdate=!0}get majorAxisRadius(){return this._majorAxisRadius}set majorAxisRadius(t){if(t<0)throw Ze.ILLEGAL_PARAMETERS;this._majorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get minorAxisRadius(){return this._minorAxisRadius}set minorAxisRadius(t){if(t<0)throw Ze.ILLEGAL_PARAMETERS;this._minorAxisRadius=t,this._boundingBoxNeedsUpdate=!0}get startAngle(){return this._startAngle}set startAngle(t){this._startAngle=It.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get endAngle(){return this._endAngle}set endAngle(t){this._endAngle=this.startAngle==0&&t==Qt?t:It.normalizeAngle(t),this._boundingBoxNeedsUpdate=!0}get deltaAngle(){const t=this.endAngle-this.startAngle;return Math.abs(t-Qt)<1e-10?Qt:It.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 Y(t.x,t.y,t.z),this._normal.normalize(),this._boundingBoxNeedsUpdate=!0}get majorAxis(){return this._majorAxis}set majorAxis(t){this._majorAxis=new Y(t.x,t.y,t.z),this._majorAxis.normalize(),this._boundingBoxNeedsUpdate=!0}get minorAxis(){return new Y().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-Qt)<1e-10)&&(t=0,e=Qt);const s=t+e/2;return this.getPointAtAngle(s)}get isCircular(){return $a.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,a=this.getPointAtAngle(this.startAngle);for(let h=1;h<=t;h++){const u=this.startAngle+h*e,m=this.getPointAtAngle(u),b=m.x-a.x,_=m.y-a.y,w=m.z-a.z;s+=Math.sqrt(b*b+_*_+w*w),a=m}return s}get area(){const t=this.majorAxisRadius,e=this.minorAxisRadius,s=this.startAngle,a=s+this.deltaAngle;if(Math.abs(this.deltaAngle-Qt)<1e-10)return Math.PI*t*e;const h=t*e/2*(a-s-(Math.sin(a)*Math.cos(a)-Math.sin(s)*Math.cos(s)));return Math.abs(h)}calculateBoundingBox(){if(this.majorAxis.equals(Y.X_AXIS)||this.majorAxis.equals(Y.Y_AXIS)||this.majorAxis.isParallelTo(Y.X_AXIS)||this.majorAxis.isParallelTo(Y.Y_AXIS)){const t=[this.startAngle,this.endAngle];for(let b=0;b<2*Math.PI;b+=Math.PI/2)It.isBetweenAngle(b,this.startAngle,this.endAngle)&&t.push(b);let e=1/0,s=1/0,a=1/0,h=-1/0,u=-1/0,m=-1/0;for(const b of t){const _=this.getPointAtAngle(b);_.x<e&&(e=_.x),_.y<s&&(s=_.y),_.z<a&&(a=_.z),_.x>h&&(h=_.x),_.y>u&&(u=_.y),_.z>m&&(m=_.z)}return new Nt({x:e,y:s,z:a},{x:h,y:u,z:m})}else{let t=1/0,e=1/0,s=1/0,a=-1/0,h=-1/0,u=-1/0;for(let m=0;m<=100;m++){const b=this.startAngle+this.deltaAngle*(m/100),_=this.getPointAtAngle(b);t=Math.min(t,_.x),e=Math.min(e,_.y),s=Math.min(s,_.z),a=Math.max(a,_.x),h=Math.max(h,_.y),u=Math.max(u,_.z)}return new Nt({x:t,y:e,z:s},{x:a,y:h,z:u})}}get closed(){return this.deltaAngle==0}getPoints(t=100){const e=[];let s=this.deltaAngle,a=this.startAngle;this.closed&&(s=Qt,a=0);for(let h=0;h<=t;h++){const u=a+s*(h/t),m=this.getPointAtAngle(u);e.push(m)}return e}getPointAtAngle(t){const e=Math.cos(t),s=Math.sin(t),a=this.minorAxis.clone().multiplyScalar(this.minorAxisRadius).multiplyScalar(s),h=this.majorAxis.clone().multiplyScalar(e*this.majorAxisRadius).add(a);return new W(this.center.x+h.x,this.center.y+h.y,this.center.z+h.z)}contains(t){const e=new Y(t).sub(this.center),s=e.dot(this.majorAxis),a=e.dot(this.minorAxis),h=s/this.majorAxisRadius,u=a/this.minorAxisRadius;return h*h+u*u<=1}transform(t){return 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 ra(this.center,this.normal,this.majorAxis,this.majorAxisRadius,this.minorAxisRadius,this.startAngle,this.endAngle)}get plane(){const t=new Y(this.center).distanceTo(Ka);return new ri(this.normal,t)}}class Tn extends es{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 kt(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 kt(e.x,e.y)}else{const e=this._vertices[t-1];return new kt(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 a=this._vertices[s];let h=null;if(s<e-1?h=this._vertices[s+1]:s==e-1&&this.closed&&(h=this._vertices[0]),h)if(a.bulge){const u=new Yn(a,h,a.bulge);t+=u.length}else t+=new kt(a.x,a.y).distanceTo(h)}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 kt(e.x,e.y)}calculateBoundingBox(){const t=this.getPoints(100);return new Pe().setFromPoints(t)}transform(t){return this._boundingBoxNeedsUpdate=!0,this}getPoints3d(t,e){const s=[];return this.getPoints(t).forEach(a=>s.push(new W().set(a.x,a.y,e))),s}getPoints(t){const e=[],s=this._vertices.length;for(let a=0;a<s;++a){const h=this._vertices[a];if(h.bulge){let u=null;if(a<s-1?u=this._vertices[a+1]:a==s-1&&this.closed&&(u=this._vertices[0]),u){const m=new Yn(h,u,h.bulge).getPoints(t),b=m.length;for(let _=0;_<b;++_){const w=m[_];e.push(new kt(w.x,w.y))}}}else e.push(new kt(h.x,h.y)),a==s-1&&this.closed&&e.push(e[0])}return e}}let Hs=class Ih extends es{constructor(t,e){super(),this._start=new kt(t),this._end=new kt(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 kt(Math.min(this._start.x,this._end.x),Math.min(this._start.y,this._end.y)),e=new kt(Math.max(this._start.x,this._end.x),Math.max(this._start.y,this._end.y));return new Pe(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 Ih(this._start.clone(),this._end.clone())}},eo=class extends es{constructor(t=[]){super(),this._curves=t}get curves(){return this._curves}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 kt(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 Pe;return e.setFromPoints(t),e}transform(t){return this._boundingBoxNeedsUpdate=!0,this}get closed(){return!0}getPoints(t){const e=[];return this.curves.forEach(s=>{s.getPoints(t).forEach(a=>{e.push(new kt(a.x,a.y))})}),e}};function nd(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Ph={exports:{}};(function(n,t){(function(e){n.exports=e()})(function(){var e={},s=this;new Function("try {return this===window;}catch(e){ return false;}");var a=new Function("try {return this===global;}catch(e){return false;}"),h=new Function("try {return typeof importScripts === 'function';}catch(e){return false;}");if(a()&&h(),a()||h()){var u=s;if(h()){var m=function(b,_){var w=s;return b.split(".").forEach(function(x){w&&(w=w[x])}),w?w[_]:null};onmessage=function(b){if(!(!b.data.className||!b.data.methodName)){var _=m(b.data.className,b.data.methodName);if(!_)return console.error("could not find "+b.data.className+"."+b.data.methodName);postMessage({result:_.apply(null,b.data.args),id:b.data.id})}}}}return function(b,_,w){_.geom=_.geom||{},_.exe=_.exe||{},_.eval=_.eval||{},_.core=_.core||{},_.promhx=_.promhx||{};var x={},A=function(){return Lt.__string_rec(this,"")};function T(r,i){function o(){}o.prototype=r;var l=new o;for(var c in i)l[c]=i[c];return i.toString!==Object.prototype.toString&&(l.toString=i.toString),l}var L=function(){};x.HxOverrides=L,L.__name__=["HxOverrides"],L.strDate=function(r){var i=r.length;switch(i){case 8:var o=r.split(":"),l=new Date;return l.setTime(0),l.setUTCHours(o[0]),l.setUTCMinutes(o[1]),l.setUTCSeconds(o[2]),l;case 10:var c=r.split("-");return new Date(c[0],c[1]-1,c[2],0,0,0);case 19:var d=r.split(" "),g=d[0].split("-"),f=d[1].split(":");return new Date(g[0],g[1]-1,g[2],f[0],f[1],f[2]);default:throw new Q("Invalid date format : "+r)}},L.cca=function(r,i){var o=r.charCodeAt(i);if(o==o)return o},L.substr=function(r,i,o){return i!=null&&i!=0&&o!=null&&o<0?"":(o==null&&(o=r.length),i<0?(i=r.length+i,i<0&&(i=0)):o<0&&(o=r.length+o-i),r.substr(i,o))},L.iter=function(r){return{cur:0,arr:r,hasNext:function(){return this.cur<this.arr.length},next:function(){return this.arr[this.cur++]}}};var O=function(){};x.Lambda=O,O.__name__=["Lambda"],O.fold=function(r,i,o){for(var l=nr(r)();l.hasNext();){var c=l.next();o=i(c,o)}return o};var V=function(){this.length=0};x.List=V,V.__name__=["List"],V.prototype={add:function(r){var i=[r];this.h==null?this.h=i:this.q[1]=i,this.q=i,this.length++},pop:function(){if(this.h==null)return null;var r=this.h[0];return this.h=this.h[1],this.h==null&&(this.q=null),this.length--,r},isEmpty:function(){return this.h==null},__class__:V},Math.__name__=["Math"];var F=function(){};x.Reflect=F,F.__name__=["Reflect"],F.field=function(r,i){try{return r[i]}catch(o){return o instanceof Q&&(o=o.val),null}},F.callMethod=function(r,i,o){return i.apply(r,o)},F.fields=function(r){var i=[];if(r!=null){var o=Object.prototype.hasOwnProperty;for(var l in r)l!="__id__"&&l!="hx__closures__"&&o.call(r,l)&&i.push(l)}return i},F.isFunction=function(r){return typeof r=="function"&&!(r.__name__||r.__ename__)},F.deleteField=function(r,i){return Object.prototype.hasOwnProperty.call(r,i)?(delete r[i],!0):!1};var at=function(){};x.Std=at,at.__name__=["Std"],at.string=function(r){return Lt.__string_rec(r,"")},at.parseFloat=function(r){return parseFloat(r)};var ft=function(){this.b=""};x.StringBuf=ft,ft.__name__=["StringBuf"],ft.prototype={add:function(r){this.b+=at.string(r)},__class__:ft};var st=function(){};x.StringTools=st,st.__name__=["StringTools"],st.fastCodeAt=function(r,i){return r.charCodeAt(i)};var H=x.ValueType={__ename__:["ValueType"],__constructs__:["TNull","TInt","TFloat","TBool","TObject","TFunction","TClass","TEnum","TUnknown"]};H.TNull=["TNull",0],H.TNull.toString=A,H.TNull.__enum__=H,H.TInt=["TInt",1],H.TInt.toString=A,H.TInt.__enum__=H,H.TFloat=["TFloat",2],H.TFloat.toString=A,H.TFloat.__enum__=H,H.TBool=["TBool",3],H.TBool.toString=A,H.TBool.__enum__=H,H.TObject=["TObject",4],H.TObject.toString=A,H.TObject.__enum__=H,H.TFunction=["TFunction",5],H.TFunction.toString=A,H.TFunction.__enum__=H,H.TClass=function(r){var i=["TClass",6,r];return i.__enum__=H,i.toString=A,i},H.TEnum=function(r){var i=["TEnum",7,r];return i.__enum__=H,i.toString=A,i},H.TUnknown=["TUnknown",8],H.TUnknown.toString=A,H.TUnknown.__enum__=H;var dt=function(){};x.Type=dt,dt.__name__=["Type"],dt.getClassName=function(r){var i=r.__name__;return i==null?null:i.join(".")},dt.getEnumName=function(r){var i=r.__ename__;return i.join(".")},dt.resolveClass=function(r){var i=x[r];return i==null||!i.__name__?null:i},dt.resolveEnum=function(r){var i=x[r];return i==null||!i.__ename__?null:i},dt.createEmptyInstance=function(r){function i(){}return i.prototype=r.prototype,new i},dt.createEnum=function(r,i,o){var l=F.field(r,i);if(l==null)throw new Q("No such constructor "+i);if(F.isFunction(l)){if(o==null)throw new Q("Constructor "+i+" need parameters");return F.callMethod(r,l,o)}if(o!=null&&o.length!=0)throw new Q("Constructor "+i+" does not need parameters");return l},dt.getEnumConstructs=function(r){var i=r.__constructs__;return i.slice()},dt.typeof=function(r){var i=typeof r;switch(i){case"boolean":return H.TBool;case"string":return H.TClass(String);case"number":return Math.ceil(r)==r%2147483648?H.TInt:H.TFloat;case"object":if(r==null)return H.TNull;var o=r.__enum__;if(o!=null)return H.TEnum(o);var l=Lt.getClass(r);return l!=null?H.TClass(l):H.TObject;case"function":return r.__name__||r.__ename__?H.TObject:H.TFunction;case"undefined":return H.TNull;default:return H.TUnknown}};var it=function(){};x["haxe.IMap"]=it,it.__name__=["haxe","IMap"];var Dt=function(r,i){this.high=r,this.low=i};x["haxe._Int64.___Int64"]=Dt,Dt.__name__=["haxe","_Int64","___Int64"],Dt.prototype={__class__:Dt};var $t=function(){this.buf=new ft,this.cache=[],this.useCache=$t.USE_CACHE,this.useEnumIndex=$t.USE_ENUM_INDEX,this.shash=new ve,this.scount=0};x["haxe.Serializer"]=$t,$t.__name__=["haxe","Serializer"],$t.prototype={toString:function(){return this.buf.b},serializeString:function(r){var i=this.shash.get(r);if(i!=null){this.buf.b+="R",i==null?this.buf.b+="null":this.buf.b+=""+i;return}this.shash.set(r,this.scount++),this.buf.b+="y",r=encodeURIComponent(r),r.length==null?this.buf.b+="null":this.buf.b+=""+r.length,this.buf.b+=":",r==null?this.buf.b+="null":this.buf.b+=""+r},serializeRef:function(r){for(var i=typeof r,o=0,l=this.cache.length;o<l;){var c=o++,d=this.cache[c];if(typeof d==i&&d==r)return this.buf.b+="r",c==null?this.buf.b+="null":this.buf.b+=""+c,!0}return this.cache.push(r),!1},serializeFields:function(r){for(var i=0,o=F.fields(r);i<o.length;){var l=o[i];++i,this.serializeString(l),this.serialize(F.field(r,l))}this.buf.b+="g"},serialize:function(r){{var i=dt.typeof(r);switch(i[1]){case 0:this.buf.b+="n";break;case 1:var o=r;if(o==0){this.buf.b+="z";return}this.buf.b+="i",o==null?this.buf.b+="null":this.buf.b+=""+o;break;case 2:var l=r;isNaN(l)?this.buf.b+="k":isFinite(l)?(this.buf.b+="d",l==null?this.buf.b+="null":this.buf.b+=""+l):l<0?this.buf.b+="m":this.buf.b+="p";break;case 3:r?this.buf.b+="t":this.buf.b+="f";break;case 6:var c=i[2];if(c==String){this.serializeString(r);return}if(this.useCache&&this.serializeRef(r))return;switch(c){case Array:var d=0;this.buf.b+="a";for(var g=r.length,f=0;f<g;){var y=f++;r[y]==null?d++:(d>0&&(d==1?this.buf.b+="n":(this.buf.b+="u",d==null?this.buf.b+="null":this.buf.b+=""+d),d=0),this.serialize(r[y]))}d>0&&(d==1?this.buf.b+="n":(this.buf.b+="u",d==null?this.buf.b+="null":this.buf.b+=""+d)),this.buf.b+="h";break;case V:this.buf.b+="l";for(var S=r,P=S.h,I=null;P!=null;){var E;I=P[0],P=P[1],E=I,this.serialize(E)}this.buf.b+="h";break;case Date:var M=r;this.buf.b+="v",this.buf.add(M.getTime());break;case ve:this.buf.b+="b";for(var k=r,B=k.keys();B.hasNext();){var C=B.next();this.serializeString(C),this.serialize(la[C]!=null?k.getReserved(C):k.h[C])}this.buf.b+="h";break;case wt:this.buf.b+="q";for(var z=r,R=z.keys();R.hasNext();){var U=R.next();this.buf.b+=":",U==null?this.buf.b+="null":this.buf.b+=""+U,this.serialize(z.h[U])}this.buf.b+="h";break;case Bt:this.buf.b+="M";for(var j=r,X=j.keys();X.hasNext();){var J=X.next(),q=F.field(J,"__id__");F.deleteField(J,"__id__"),this.serialize(J),J.__id__=q,this.serialize(j.h[J.__id__])}this.buf.b+="h";break;case Fe:for(var G=r,$=0,tt=G.length-2,et=new ft,ot=$t.BASE64;$<tt;){var ut=G.get($++),lt=G.get($++),pt=G.get($++);et.add(ot.charAt(ut>>2)),et.add(ot.charAt((ut<<4|lt>>4)&63)),et.add(ot.charAt((lt<<2|pt>>6)&63)),et.add(ot.charAt(pt&63))}if($==tt){var nt=G.get($++),mt=G.get($++);et.add(ot.charAt(nt>>2)),et.add(ot.charAt((nt<<4|mt>>4)&63)),et.add(ot.charAt(mt<<2&63))}else if($==tt+1){var K=G.get($++);et.add(ot.charAt(K>>2)),et.add(ot.charAt(K<<4&63))}var _t=et.b;this.buf.b+="s",_t.length==null?this.buf.b+="null":this.buf.b+=""+_t.length,this.buf.b+=":",_t==null?this.buf.b+="null":this.buf.b+=""+_t;break;default:this.useCache&&this.cache.pop(),r.hxSerialize!=null?(this.buf.b+="C",this.serializeString(dt.getClassName(c)),this.useCache&&this.cache.push(r),r.hxSerialize(this),this.buf.b+="g"):(this.buf.b+="c",this.serializeString(dt.getClassName(c)),this.useCache&&this.cache.push(r),this.serializeFields(r))}break;case 4:if(Lt.__instanceof(r,tl)){var Et=dt.getClassName(r);this.buf.b+="A",this.serializeString(Et)}else if(Lt.__instanceof(r,el))this.buf.b+="B",this.serializeString(dt.getEnumName(r));else{if(this.useCache&&this.serializeRef(r))return;this.buf.b+="o",this.serializeFields(r)}break;case 7:var qt=i[2];if(this.useCache){if(this.serializeRef(r))return;this.cache.pop()}this.useEnumIndex?this.buf.b+="j":this.buf.b+="w",this.serializeString(dt.getEnumName(qt)),this.useEnumIndex?(this.buf.b+=":",this.buf.b+=at.string(r[1])):this.serializeString(r[0]),this.buf.b+=":";var Zt=r.length;this.buf.b+=at.string(Zt-2);for(var Gt=2;Gt<Zt;){var Jt=Gt++;this.serialize(r[Jt])}this.useCache&&this.cache.push(r);break;case 5:throw new Q("Cannot serialize function");default:throw new Q("Cannot serialize "+at.string(r))}}},__class__:$t};var Xt=function(r){this.buf=r,this.length=r.length,this.pos=0,this.scache=[],this.cache=[];var i=Xt.DEFAULT_RESOLVER;i==null&&(i=dt,Xt.DEFAULT_RESOLVER=i),this.setResolver(i)};x["haxe.Unserializer"]=Xt,Xt.__name__=["haxe","Unserializer"],Xt.initCodes=function(){for(var r=[],i=0,o=Xt.BASE64.length;i<o;){var l=i++;r[Xt.BASE64.charCodeAt(l)]=l}return r},Xt.prototype={setResolver:function(r){r==null?this.resolver={resolveClass:function(i){return null},resolveEnum:function(i){return null}}:this.resolver=r},get:function(r){return this.buf.charCodeAt(r)},readDigits:function(){for(var r=0,i=!1,o=this.pos;;){var l=this.buf.charCodeAt(this.pos);if(l!=l)break;if(l==45){if(this.pos!=o)break;i=!0,this.pos++;continue}if(l<48||l>57)break;r=r*10+(l-48),this.pos++}return i&&(r*=-1),r},readFloat:function(){for(var r=this.pos;;){var i=this.buf.charCodeAt(this.pos);if(i>=43&&i<58||i==101||i==69)this.pos++;else break}return at.parseFloat(L.substr(this.buf,r,this.pos-r))},unserializeObject:function(r){for(;;){if(this.pos>=this.length)throw new Q("Invalid object");if(this.buf.charCodeAt(this.pos)==103)break;var i=this.unserialize();if(typeof i!="string")throw new Q("Invalid object key");var o=this.unserialize();r[i]=o}this.pos++},unserializeEnum:function(r,i){if(this.get(this.pos++)!=58)throw new Q("Invalid enum format");var o=this.readDigits();if(o==0)return dt.createEnum(r,i);for(var l=[];o-- >0;)l.push(this.unserialize());return dt.createEnum(r,i,l)},unserialize:function(){var r=this.get(this.pos++);switch(r){case 110:return null;case 116:return!0;case 102:return!1;case 122:return 0;case 105:return this.readDigits();case 100:return this.readFloat();case 121:var i=this.readDigits();if(this.get(this.pos++)!=58||this.length-this.pos<i)throw new Q("Invalid string length");var o=L.substr(this.buf,this.pos,i);return this.pos+=i,o=decodeURIComponent(o.split("+").join(" ")),this.scache.push(o),o;case 107:return NaN;case 109:return-1/0;case 112:return 1/0;case 97:this.buf;var l=[];for(this.cache.push(l);;){var c=this.buf.charCodeAt(this.pos);if(c==104){this.pos++;break}if(c==117){this.pos++;var d=this.readDigits();l[l.length+d-1]=null}else l.push(this.unserialize())}return l;case 111:var g={};return this.cache.push(g),this.unserializeObject(g),g;case 114:var f=this.readDigits();if(f<0||f>=this.cache.length)throw new Q("Invalid reference");return this.cache[f];case 82:var y=this.readDigits();if(y<0||y>=this.scache.length)throw new Q("Invalid string reference");return this.scache[y];case 120:throw new Q(this.unserialize());case 99:var S=this.unserialize(),P=this.resolver.resolveClass(S);if(P==null)throw new Q("Class not found "+S);var I=dt.createEmptyInstance(P);return this.cache.push(I),this.unserializeObject(I),I;case 119:var E=this.unserialize(),M=this.resolver.resolveEnum(E);if(M==null)throw new Q("Enum not found "+E);var k=this.unserializeEnum(M,this.unserialize());return this.cache.push(k),k;case 106:var B=this.unserialize(),C=this.resolver.resolveEnum(B);if(C==null)throw new Q("Enum not found "+B);this.pos++;var z=this.readDigits(),R=dt.getEnumConstructs(C)[z];if(R==null)throw new Q("Unknown enum index "+B+"@"+z);var U=this.unserializeEnum(C,R);return this.cache.push(U),U;case 108:var j=new V;for(this.cache.push(j),this.buf;this.buf.charCodeAt(this.pos)!=104;)j.add(this.unserialize());return this.pos++,j;case 98:var X=new ve;for(this.cache.push(X),this.buf;this.buf.charCodeAt(this.pos)!=104;){var J=this.unserialize();X.set(J,this.unserialize())}return this.pos++,X;case 113:var q=new wt;this.cache.push(q),this.buf;for(var G=this.get(this.pos++);G==58;){var $=this.readDigits();q.set($,this.unserialize()),G=this.get(this.pos++)}if(G!=104)throw new Q("Invalid IntMap format");return q;case 77:var tt=new Bt;for(this.cache.push(tt),this.buf;this.buf.charCodeAt(this.pos)!=104;){var et=this.unserialize();tt.set(et,this.unserialize())}return this.pos++,tt;case 118:var ot;if(this.buf.charCodeAt(this.pos)>=48&&this.buf.charCodeAt(this.pos)<=57&&this.buf.charCodeAt(this.pos+1)>=48&&this.buf.charCodeAt(this.pos+1)<=57&&this.buf.charCodeAt(this.pos+2)>=48&&this.buf.charCodeAt(this.pos+2)<=57&&this.buf.charCodeAt(this.pos+3)>=48&&this.buf.charCodeAt(this.pos+3)<=57&&this.buf.charCodeAt(this.pos+4)==45){var ut=L.substr(this.buf,this.pos,19);ot=L.strDate(ut),this.pos+=19}else{var lt=this.readFloat(),pt=new Date;pt.setTime(lt),ot=pt}return this.cache.push(ot),ot;case 115:var nt=this.readDigits(),mt=this.buf;if(this.get(this.pos++)!=58||this.length-this.pos<nt)throw new Q("Invalid bytes length");var K=Xt.CODES;K==null&&(K=Xt.initCodes(),Xt.CODES=K);var _t=this.pos,Et=nt&3,qt;qt=(nt>>2)*3+(Et>=2?Et-1:0);for(var Zt=_t+(nt-Et),Gt=Fe.alloc(qt),Jt=0;_t<Zt;){var Be=K[st.fastCodeAt(mt,_t++)],tr=K[st.fastCodeAt(mt,_t++)];Gt.set(Jt++,Be<<2|tr>>4);var Ae=K[st.fastCodeAt(mt,_t++)];Gt.set(Jt++,tr<<4|Ae>>2);var xe=K[st.fastCodeAt(mt,_t++)];Gt.set(Jt++,Ae<<6|xe)}if(Et>=2){var Re=K[st.fastCodeAt(mt,_t++)],Ge=K[st.fastCodeAt(mt,_t++)];if(Gt.set(Jt++,Re<<2|Ge>>4),Et==3){var sr=K[st.fastCodeAt(mt,_t++)];Gt.set(Jt++,Ge<<4|sr>>2)}}return this.pos+=nt,this.cache.push(Gt),Gt;case 67:var fr=this.unserialize(),ir=this.resolver.resolveClass(fr);if(ir==null)throw new Q("Class not found "+fr);var ar=dt.createEmptyInstance(ir);if(this.cache.push(ar),ar.hxUnserialize(this),this.get(this.pos++)!=103)throw new Q("Invalid custom data");return ar;case 65:var or=this.unserialize(),Sr=this.resolver.resolveClass(or);if(Sr==null)throw new Q("Class not found "+or);return Sr;case 66:var Un=this.unserialize(),cn=this.resolver.resolveEnum(Un);if(cn==null)throw new Q("Enum not found "+Un);return cn}throw this.pos--,new Q("Invalid char "+this.buf.charAt(this.pos)+" at position "+this.pos)},__class__:Xt};var wt=function(){this.h={}};x["haxe.ds.IntMap"]=wt,wt.__name__=["haxe","ds","IntMap"],wt.__interfaces__=[it],wt.prototype={set:function(r,i){this.h[r]=i},remove:function(r){return this.h.hasOwnProperty(r)?(delete this.h[r],!0):!1},keys:function(){var r=[];for(var i in this.h)this.h.hasOwnProperty(i)&&r.push(i|0);return L.iter(r)},__class__:wt};var Bt=function(){this.h={},this.h.__keys__={}};x["haxe.ds.ObjectMap"]=Bt,Bt.__name__=["haxe","ds","ObjectMap"],Bt.__interfaces__=[it],Bt.prototype={set:function(r,i){var o=r.__id__||(r.__id__=++Bt.count);this.h[o]=i,this.h.__keys__[o]=r},keys:function(){var r=[];for(var i in this.h.__keys__)this.h.hasOwnProperty(i)&&r.push(this.h.__keys__[i]);return L.iter(r)},__class__:Bt};var ye=x["haxe.ds.Option"]={__ename__:["haxe","ds","Option"],__constructs__:["Some","None"]};ye.Some=function(r){var i=["Some",0,r];return i.__enum__=ye,i.toString=A,i},ye.None=["None",1],ye.None.toString=A,ye.None.__enum__=ye;var ve=function(){this.h={}};x["haxe.ds.StringMap"]=ve,ve.__name__=["haxe","ds","StringMap"],ve.__interfaces__=[it],ve.prototype={set:function(r,i){la[r]!=null?this.setReserved(r,i):this.h[r]=i},get:function(r){return la[r]!=null?this.getReserved(r):this.h[r]},setReserved:function(r,i){this.rh==null&&(this.rh={}),this.rh["$"+r]=i},getReserved:function(r){return this.rh==null?null:this.rh["$"+r]},keys:function(){var r=this.arrayKeys();return L.iter(r)},arrayKeys:function(){var r=[];for(var i in this.h)this.h.hasOwnProperty(i)&&r.push(i);if(this.rh!=null)for(var i in this.rh)i.charCodeAt(0)==36&&r.push(i.substr(1));return r},__class__:ve};var Fe=function(r){this.length=r.byteLength,this.b=new ha(r),this.b.bufferValue=r,r.hxBytes=this,r.bytes=this.b};x["haxe.io.Bytes"]=Fe,Fe.__name__=["haxe","io","Bytes"],Fe.alloc=function(r){return new Fe(new oi(r))},Fe.prototype={get:function(r){return this.b[r]},set:function(r,i){this.b[r]=i&255},__class__:Fe};var ne=x["haxe.io.Error"]={__ename__:["haxe","io","Error"],__constructs__:["Blocked","Overflow","OutsideBounds","Custom"]};ne.Blocked=["Blocked",0],ne.Blocked.toString=A,ne.Blocked.__enum__=ne,ne.Overflow=["Overflow",1],ne.Overflow.toString=A,ne.Overflow.__enum__=ne,ne.OutsideBounds=["OutsideBounds",2],ne.OutsideBounds.toString=A,ne.OutsideBounds.__enum__=ne,ne.Custom=function(r){var i=["Custom",3,r];return i.__enum__=ne,i.toString=A,i};var de=function(){};x["haxe.io.FPHelper"]=de,de.__name__=["haxe","io","FPHelper"],de.i32ToFloat=function(r){var i=1-(r>>>31<<1),o=r>>>23&255,l=r&8388607;return l==0&&o==0?0:i*(1+Math.pow(2,-23)*l)*Math.pow(2,o-127)},de.floatToI32=function(r){if(r==0)return 0;var i;r<0?i=-r:i=r;var o=Math.floor(Math.log(i)/.6931471805599453);o<-127?o=-127:o>128&&(o=128);var l=Math.round((i/Math.pow(2,o)-1)*8388608)&8388607;return(r<0?-2147483648:0)|o+127<<23|l},de.i64ToDouble=function(r,i){var o=1-(i>>>31<<1),l=(i>>20&2047)-1023,c=(i&1048575)*4294967296+(r>>>31)*2147483648+(r&2147483647);return c==0&&l==-1023?0:o*(1+Math.pow(2,-52)*c)*Math.pow(2,l)},de.doubleToI64=function(r){var i=de.i64tmp;if(r==0)i.low=0,i.high=0;else{var o;r<0?o=-r:o=r;var l=Math.floor(Math.log(o)/.6931471805599453),c,d=(o/Math.pow(2,l)-1)*4503599627370496;c=Math.round(d);var g=c|0,f=c/4294967296|0;i.low=g,i.high=(r<0?-2147483648:0)|l+1023<<20|f}return i};var Q=function(r){Error.call(this),this.val=r,this.message=String(r),Error.captureStackTrace&&Error.captureStackTrace(this,Q)};x["js._Boot.HaxeError"]=Q,Q.__name__=["js","_Boot","HaxeError"],Q.__super__=Error,Q.prototype=T(Error.prototype,{__class__:Q});var Lt=function(){};x["js.Boot"]=Lt,Lt.__name__=["js","Boot"],Lt.getClass=function(r){if(r instanceof Array&&r.__enum__==null)return Array;var i=r.__class__;if(i!=null)return i;var o=Lt.__nativeClassName(r);return o!=null?Lt.__resolveNativeClass(o):null},Lt.__string_rec=function(r,i){if(r==null)return"null";if(i.length>=5)return"<...>";var o=typeof r;switch(o=="function"&&(r.__name__||r.__ename__)&&(o="object"),o){case"object":if(r instanceof Array){if(r.__enum__){if(r.length==2)return r[0];var l=r[0]+"(";i+=" ";for(var c=2,d=r.length;c<d;){var g=c++;g!=2?l+=","+Lt.__string_rec(r[g],i):l+=Lt.__string_rec(r[g],i)}return l+")"}var f=r.length,y="[";i+=" ";for(var S=0;S<f;){var P=S++;y+=(P>0?",":"")+Lt.__string_rec(r[P],i)}return y+="]",y}var I;try{I=r.toString}catch(C){return C instanceof Q&&(C=C.val),"???"}if(I!=null&&I!=Object.toString&&typeof I=="function"){var E=r.toString();if(E!="[object Object]")return E}var M=null,k=`{
2
2
  `;i+=" ";var B=r.hasOwnProperty!=null;for(var M in r)B&&!r.hasOwnProperty(M)||M=="prototype"||M=="__class__"||M=="__super__"||M=="__interfaces__"||M=="__properties__"||(k.length!=2&&(k+=`,
3
3
  `),k+=i+M+" : "+Lt.__string_rec(r[M],i));return i=i.substring(1),k+=`
4
- `+i+"}",k;case"function":return"<function>";case"string":return r;default:return String(r)}},Lt.__interfLoop=function(r,i){if(r==null)return!1;if(r==i)return!0;var o=r.__interfaces__;if(o!=null)for(var l=0,c=o.length;l<c;){var d=l++,g=o[d];if(g==i||Lt.__interfLoop(g,i))return!0}return Lt.__interfLoop(r.__super__,i)},Lt.__instanceof=function(r,i){if(i==null)return!1;switch(i){case xc:return(r|0)===r;case Zo:return typeof r=="number";case Qo:return typeof r=="boolean";case String:return typeof r=="string";case Array:return r instanceof Array&&r.__enum__==null;case wc:return!0;default:if(r!=null){if(typeof i=="function"){if(r instanceof i||Lt.__interfLoop(Lt.getClass(r),i))return!0}else if(typeof i=="object"&&Lt.__isNativeObj(i)&&r instanceof i)return!0}else return!1;return i==Jo&&r.__name__!=null||i==tl&&r.__ename__!=null?!0:r.__enum__==i}},Lt.__nativeClassName=function(r){var i=Lt.__toStr.call(r).slice(8,-1);return i=="Object"||i=="Function"||i=="Math"||i=="JSON"?null:i},Lt.__isNativeObj=function(r){return Lt.__nativeClassName(r)!=null},Lt.__resolveNativeClass=function(r){return w[r]};var de=function(r){if(r instanceof Array&&r.__enum__==null)this.a=r,this.byteLength=r.length;else{var i=r;this.a=[];for(var o=0;o<i;){var l=o++;this.a[l]=0}this.byteLength=i}};x["js.html.compat.ArrayBuffer"]=de,de.__name__=["js","html","compat","ArrayBuffer"],de.sliceImpl=function(r,i){var o=new la(this,r,i==null?null:i-r),l=new ai(o.byteLength),c=new la(l);return c.set(o),l},de.prototype={slice:function(r,i){return new de(this.a.slice(r,i))},__class__:de};var vr=function(r,i,o){if(this.buf=r,i==null?this.offset=0:this.offset=i,o==null?this.length=r.byteLength-this.offset:this.length=o,this.offset<0||this.length<0||this.offset+this.length>r.byteLength)throw new Q(ne.OutsideBounds)};x["js.html.compat.DataView"]=vr,vr.__name__=["js","html","compat","DataView"],vr.prototype={getInt8:function(r){var i=this.buf.a[this.offset+r];return i>=128?i-256:i},getUint8:function(r){return this.buf.a[this.offset+r]},getInt16:function(r,i){var o=this.getUint16(r,i);return o>=32768?o-65536:o},getUint16:function(r,i){return i?this.buf.a[this.offset+r]|this.buf.a[this.offset+r+1]<<8:this.buf.a[this.offset+r]<<8|this.buf.a[this.offset+r+1]},getInt32:function(r,i){var o=this.offset+r,l=this.buf.a[o++],c=this.buf.a[o++],d=this.buf.a[o++],g=this.buf.a[o++];return i?l|c<<8|d<<16|g<<24:g|d<<8|c<<16|l<<24},getUint32:function(r,i){var o=this.getInt32(r,i);return o<0?o+4294967296:o},getFloat32:function(r,i){return ce.i32ToFloat(this.getInt32(r,i))},getFloat64:function(r,i){var o=this.getInt32(r,i),l=this.getInt32(r+4,i);return ce.i64ToDouble(i?o:l,i?l:o)},setInt8:function(r,i){i<0?this.buf.a[r+this.offset]=i+128&255:this.buf.a[r+this.offset]=i&255},setUint8:function(r,i){this.buf.a[r+this.offset]=i&255},setInt16:function(r,i,o){this.setUint16(r,i<0?i+65536:i,o)},setUint16:function(r,i,o){var l=r+this.offset;o?(this.buf.a[l]=i&255,this.buf.a[l++]=i>>8&255):(this.buf.a[l++]=i>>8&255,this.buf.a[l]=i&255)},setInt32:function(r,i,o){this.setUint32(r,i,o)},setUint32:function(r,i,o){var l=r+this.offset;o?(this.buf.a[l++]=i&255,this.buf.a[l++]=i>>8&255,this.buf.a[l++]=i>>16&255,this.buf.a[l++]=i>>>24):(this.buf.a[l++]=i>>>24,this.buf.a[l++]=i>>16&255,this.buf.a[l++]=i>>8&255,this.buf.a[l++]=i&255)},setFloat32:function(r,i,o){this.setUint32(r,ce.floatToI32(i),o)},setFloat64:function(r,i,o){var l=ce.doubleToI64(i);o?(this.setUint32(r,l.low),this.setUint32(r,l.high)):(this.setUint32(r,l.high),this.setUint32(r,l.low))},__class__:vr};var cr=function(){};x["js.html.compat.Uint8Array"]=cr,cr.__name__=["js","html","compat","Uint8Array"],cr._new=function(r,i,o){var l;if(typeof r=="number"){l=[];for(var c=0;c<r;){var d=c++;l[d]=0}l.byteLength=l.length,l.byteOffset=0,l.buffer=new de(l)}else if(Lt.__instanceof(r,de)){var g=r;i==null&&(i=0),o==null&&(o=g.byteLength-i),i==0?l=g.a:l=g.a.slice(i,i+o),l.byteLength=l.length,l.byteOffset=i,l.buffer=g}else if(r instanceof Array&&r.__enum__==null)l=r.slice(),l.byteLength=l.length,l.byteOffset=0,l.buffer=new de(l);else throw new Q("TODO "+at.string(r));return l.subarray=cr._subarray,l.set=cr._set,l},cr._set=function(r,i){var o=this;if(Lt.__instanceof(r.buffer,de)){var l=r;if(r.byteLength+i>o.byteLength)throw new Q("set() outside of range");for(var c=0,d=r.byteLength;c<d;){var g=c++;o[g+i]=l[g]}}else if(r instanceof Array&&r.__enum__==null){var f=r;if(f.length+i>o.byteLength)throw new Q("set() outside of range");for(var y=0,S=f.length;y<S;){var P=y++;o[P+i]=f[P]}}else throw new Q("TODO")},cr._subarray=function(r,i){var o=this,l=cr._new(o.slice(r,i));return l.byteOffset=r,l};var Mt=function(r){this._resolved=!1,this._pending=!1,this._errorPending=!1,this._fulfilled=!1,this._update=[],this._error=[],this._errored=!1,r!=null&&Mt.link(r,this,function(i){return i})};x["promhx.base.AsyncBase"]=Mt,Mt.__name__=["promhx","base","AsyncBase"],Mt.link=function(r,i,o){r._update.push({async:i,linkf:function(l){i.handleResolve(o(l))}}),Mt.immediateLinkUpdate(r,i,o)},Mt.immediateLinkUpdate=function(r,i,o){if(r._errored&&!r._errorPending&&!(r._error.length>0)&&i.handleError(r._errorVal),r._resolved&&!r._pending)try{i.handleResolve(o(r._val))}catch(l){l instanceof Q&&(l=l.val),i.handleError(l)}},Mt.linkAll=function(r,i){for(var o=function(d,g,f){if(d.length==0||Mt.allFulfilled(d)){for(var y,S=[],P=rr(r)();P.hasNext();){var I=P.next();S.push(I==g?f:I._val)}y=S,i.handleResolve(y)}},l=rr(r)();l.hasNext();){var c=l.next();c._update.push({async:i,linkf:function(d,g,f){return function(y){d(g,f,y)}}(o,function(d){for(var g,f=[],y=rr(r)();y.hasNext();){var S=y.next();S!=c&&f.push(S)}return g=f,g}(),c)})}Mt.allFulfilled(r)&&i.handleResolve(function(d){for(var g,f=[],y=rr(r)();y.hasNext();){var S=y.next();f.push(S._val)}return g=f,g}())},Mt.pipeLink=function(r,i,o){var l=!1,c=function(d){if(!l){l=!0;var g=o(d);g._update.push({async:i,linkf:Ue(i,i.handleResolve)}),Mt.immediateLinkUpdate(g,i,function(f){return f})}};if(r._update.push({async:i,linkf:c}),r._resolved&&!r._pending)try{c(r._val)}catch(d){d instanceof Q&&(d=d.val),i.handleError(d)}},Mt.allResolved=function(r){for(var i=rr(r)();i.hasNext();){var o=i.next();if(!o._resolved)return!1}return!0},Mt.allFulfilled=function(r){for(var i=rr(r)();i.hasNext();){var o=i.next();if(!o._fulfilled)return!1}return!0},Mt.prototype={catchError:function(r){return this._error.push(r),this},errorThen:function(r){return this._errorMap=r,this},isResolved:function(){return this._resolved},isErrored:function(){return this._errored},isErrorHandled:function(){return this._error.length>0},isErrorPending:function(){return this._errorPending},isFulfilled:function(){return this._fulfilled},isPending:function(){return this._pending},handleResolve:function(r){this._resolve(r)},_resolve:function(r){var i=this;this._pending?At.enqueue(function(o,l){return function(){o(l)}}(Ue(this,this._resolve),r)):(this._resolved=!0,this._pending=!0,At.queue.add(function(){i._val=r;for(var o=0,l=i._update;o<l.length;){var c=l[o];++o;try{c.linkf(r)}catch(d){d instanceof Q&&(d=d.val),c.async.handleError(d)}}i._fulfilled=!0,i._pending=!1}),At.continueOnNextLoop())},handleError:function(r){this._handleError(r)},_handleError:function(r){var i=this,o=function(l){if(i._error.length>0)for(var c=0,d=i._error;c<d.length;){var g=d[c];++c,g(l)}else if(i._update.length>0)for(var f=0,y=i._update;f<y.length;){var S=y[f];++f,S.async.handleError(l)}else throw new Q(l);i._errorPending=!1};this._errorPending||(this._errorPending=!0,this._errored=!0,this._errorVal=r,At.queue.add(function(){if(i._errorMap!=null)try{i._resolve(i._errorMap(r))}catch(l){l instanceof Q&&(l=l.val),o(l)}else o(r)}),At.continueOnNextLoop())},then:function(r){var i=new Mt(null);return Mt.link(this,i,r),i},unlink:function(r){var i=this;At.queue.add(function(){i._update=i._update.filter(function(o){return o.async!=r})}),At.continueOnNextLoop()},isLinked:function(r){for(var i=!1,o=0,l=this._update;o<l.length;){var c=l[o];if(++o,c.async==r)return!0}return i},__class__:Mt};var Tn=_.promhx.Deferred=function(){Mt.call(this)};x["promhx.Deferred"]=Tn,Tn.__name__=["promhx","Deferred"],Tn.__super__=Mt,Tn.prototype=T(Mt.prototype,{resolve:function(r){this.handleResolve(r)},throwError:function(r){this.handleError(r)},promise:function(){return new be(this)},stream:function(){return new Xt(this)},publicStream:function(){return new Wr(this)},__class__:Tn});var be=_.promhx.Promise=function(r){Mt.call(this,r),this._rejected=!1};x["promhx.Promise"]=be,be.__name__=["promhx","Promise"],be.whenAll=function(r){var i=new be(null);return Mt.linkAll(r,i),i},be.promise=function(r){var i=new be;return i.handleResolve(r),i},be.__super__=Mt,be.prototype=T(Mt.prototype,{isRejected:function(){return this._rejected},reject:function(r){this._rejected=!0,this.handleError(r)},handleResolve:function(r){if(this._resolved){var i="Promise has already been resolved";throw new Q(Mn.AlreadyResolved(i))}this._resolve(r)},then:function(r){var i=new be(null);return Mt.link(this,i,r),i},unlink:function(r){var i=this;At.queue.add(function(){if(i._fulfilled)i._update=i._update.filter(function(l){return l.async!=r});else{var o="Downstream Promise is not fullfilled";i.handleError(Mn.DownstreamNotFullfilled(o))}}),At.continueOnNextLoop()},handleError:function(r){this._rejected=!0,this._handleError(r)},pipe:function(r){var i=new be(null);return Mt.pipeLink(this,i,r),i},errorPipe:function(r){var i=new be;return this.catchError(function(o){var l=r(o);l.then(Ue(i,i._resolve))}),this.then(Ue(i,i._resolve)),i},__class__:be});var Xt=_.promhx.Stream=function(r){Mt.call(this,r),this._end_promise=new be};x["promhx.Stream"]=Xt,Xt.__name__=["promhx","Stream"],Xt.foreach=function(r){for(var i=new Xt(null),o=rr(r)();o.hasNext();){var l=o.next();i.handleResolve(l)}return i.end(),i},Xt.wheneverAll=function(r){var i=new Xt(null);return Mt.linkAll(r,i),i},Xt.concatAll=function(r){for(var i=new Xt(null),o=rr(r)();o.hasNext();){var l=o.next();i.concat(l)}return i},Xt.mergeAll=function(r){for(var i=new Xt(null),o=rr(r)();o.hasNext();){var l=o.next();i.merge(l)}return i},Xt.stream=function(r){var i=new Xt(null);return i.handleResolve(r),i},Xt.__super__=Mt,Xt.prototype=T(Mt.prototype,{then:function(r){var i=new Xt(null);return Mt.link(this,i,r),this._end_promise._update.push({async:i._end_promise,linkf:function(o){i.end()}}),i},detachStream:function(r){for(var i=[],o=!1,l=0,c=this._update;l<c.length;){var d=c[l];++l,d.async==r?(this._end_promise._update=this._end_promise._update.filter(function(g){return g.async!=r._end_promise}),o=!0):i.push(d)}return this._update=i,o},first:function(){var r=new be(null);return this.then(function(i){r._resolved||r.handleResolve(i)}),r},handleResolve:function(r){!this._end&&!this._pause&&this._resolve(r)},pause:function(r){r==null&&(r=!this._pause),this._pause=r},pipe:function(r){var i=new Xt(null);return Mt.pipeLink(this,i,r),this._end_promise.then(function(o){i.end()}),i},errorPipe:function(r){var i=new Xt(null);return this.catchError(function(o){var l=r(o);l.then(Ue(i,i._resolve)),l._end_promise.then((aa=i._end_promise,Ue(aa,aa._resolve)))}),this.then(Ue(i,i._resolve)),this._end_promise.then(function(o){i.end()}),i},handleEnd:function(){if(this._pending)At.queue.add(Ue(this,this.handleEnd)),At.continueOnNextLoop();else{if(this._end_promise._resolved)return;this._end=!0;var r;this._resolved?r=ye.Some(this._val):r=ye.None,this._end_promise.handleResolve(r),this._update=[],this._error=[]}},end:function(){return At.queue.add(Ue(this,this.handleEnd)),At.continueOnNextLoop(),this},endThen:function(r){return this._end_promise.then(r)},filter:function(r){var i=new Xt(null);return this._update.push({async:i,linkf:function(o){r(o)&&i.handleResolve(o)}}),Mt.immediateLinkUpdate(this,i,function(o){return o}),i},concat:function(r){var i=new Xt(null);return this._update.push({async:i,linkf:Ue(i,i.handleResolve)}),Mt.immediateLinkUpdate(this,i,function(o){return o}),this._end_promise.then(function(o){r.pipe(function(l){return i.handleResolve(l),i}),r._end_promise.then(function(l){i.end()})}),i},merge:function(r){var i=new Xt(null);return this._update.push({async:i,linkf:Ue(i,i.handleResolve)}),r._update.push({async:i,linkf:Ue(i,i.handleResolve)}),Mt.immediateLinkUpdate(this,i,function(o){return o}),Mt.immediateLinkUpdate(r,i,function(o){return o}),i},__class__:Xt});var Wr=_.promhx.PublicStream=function(r){Xt.call(this,r)};x["promhx.PublicStream"]=Wr,Wr.__name__=["promhx","PublicStream"],Wr.publicstream=function(r){var i=new Wr(null);return i.handleResolve(r),i},Wr.__super__=Xt,Wr.prototype=T(Xt.prototype,{resolve:function(r){this.handleResolve(r)},throwError:function(r){this.handleError(r)},update:function(r){this.handleResolve(r)},__class__:Wr});var At=function(){};x["promhx.base.EventLoop"]=At,At.__name__=["promhx","base","EventLoop"],At.enqueue=function(r){At.queue.add(r),At.continueOnNextLoop()},At.set_nextLoop=function(r){if(At.nextLoop!=null)throw new Q("nextLoop has already been set");return At.nextLoop=r,At.nextLoop},At.queueEmpty=function(){return At.queue.isEmpty()},At.finish=function(r){r==null&&(r=1e3);for(var i=null;r-- >0&&(i=At.queue.pop())!=null;)i();return At.queue.isEmpty()},At.clear=function(){At.queue=new V},At.f=function(){var r=At.queue.pop();r!=null&&r(),At.queue.isEmpty()||At.continueOnNextLoop()},At.continueOnNextLoop=function(){At.nextLoop!=null?At.nextLoop(At.f):setImmediate(At.f)};var Mn=x["promhx.error.PromiseError"]={__ename__:["promhx","error","PromiseError"],__constructs__:["AlreadyResolved","DownstreamNotFullfilled"]};Mn.AlreadyResolved=function(r){var i=["AlreadyResolved",0,r];return i.__enum__=Mn,i.toString=A,i},Mn.DownstreamNotFullfilled=function(r){var i=["DownstreamNotFullfilled",1,r];return i.__enum__=Mn,i.toString=A,i};var si=function(){};x["verb.Verb"]=si,si.__name__=["verb","Verb"],si.main=function(){b.log("verb 2.1.0")};var Z=function(){};x["verb.core.ArrayExtensions"]=Z,Z.__name__=["verb","core","ArrayExtensions"],Z.alloc=function(r,i){if(!(i<0))for(;r.length<i;)r.push(null)},Z.reversed=function(r){var i=r.slice();return i.reverse(),i},Z.last=function(r){return r[r.length-1]},Z.first=function(r){return r[0]},Z.spliceAndInsert=function(r,i,o,l){r.splice(i,o),r.splice(i,0,l)},Z.left=function(r){if(r.length==0)return[];var i=Math.ceil(r.length/2);return r.slice(0,i)},Z.right=function(r){if(r.length==0)return[];var i=Math.ceil(r.length/2);return r.slice(i)},Z.rightWithPivot=function(r){if(r.length==0)return[];var i=Math.ceil(r.length/2);return r.slice(i-1)},Z.unique=function(r,i){if(r.length==0)return[];for(var o=[r.pop()];r.length>0;){for(var l=r.pop(),c=!0,d=0;d<o.length;){var g=o[d];if(++d,i(l,g)){c=!1;break}}c&&o.push(l)}return o};var Vt=function(){};x["verb.core.Binomial"]=Vt,Vt.__name__=["verb","core","Binomial"],Vt.get=function(r,i){if(i==0)return 1;if(r==0||i>r)return 0;if(i>r-i&&(i=r-i),Vt.memo_exists(r,i))return Vt.get_memo(r,i);for(var o=1,l=r,c=1,d=i+1;c<d;){var g=c++;if(Vt.memo_exists(l,g)){r--,o=Vt.get_memo(l,g);continue}o*=r--,o/=g,Vt.memoize(l,g,o)}return o},Vt.get_no_memo=function(r,i){if(i==0)return 1;if(r==0||i>r)return 0;i>r-i&&(i=r-i);for(var o=1,l=1,c=i+1;l<c;){var d=l++;o*=r--,o/=d}return o},Vt.memo_exists=function(r,i){return Vt.memo.h.hasOwnProperty(r)&&Vt.memo.h[r].h.hasOwnProperty(i)},Vt.get_memo=function(r,i){return Vt.memo.h[r].h[i]},Vt.memoize=function(r,i,o){Vt.memo.h.hasOwnProperty(r)||Vt.memo.set(r,new wt),Vt.memo.h[r].h[i]=o};var Fe=_.core.BoundingBox=function(r){this.max=null,this.min=null,this.dim=3,this.initialized=!1,r!=null&&this.addRange(r)};x["verb.core.BoundingBox"]=Fe,Fe.__name__=["verb","core","BoundingBox"],Fe.intervalsOverlap=function(r,i,o,l,c){c==null&&(c=-1);var d;c<-.5?d=rt.TOLERANCE:d=c;var g=Math.min(r,i)-d,f=Math.max(r,i)+d,y=Math.min(o,l)-d,S=Math.max(o,l)+d;return g>=y&&g<=S||f>=y&&f<=S||y>=g&&y<=f||S>=g&&S<=f},Fe.prototype={fromPoint:function(r){return new Fe([r])},add:function(r){if(!this.initialized)return this.dim=r.length,this.min=r.slice(0),this.max=r.slice(0),this.initialized=!0,this;for(var i=0,o=this.dim;i<o;){var l=i++;r[l]>this.max[l]&&(this.max[l]=r[l]),r[l]<this.min[l]&&(this.min[l]=r[l])}return this},addRange:function(r){for(var i=r.length,o=0;o<i;){var l=o++;this.add(r[l])}return this},contains:function(r,i){return i==null&&(i=-1),this.initialized?this.intersects(new Fe([r]),i):!1},intersects:function(r,i){if(i==null&&(i=-1),!this.initialized||!r.initialized)return!1;for(var o=this.min,l=this.max,c=r.min,d=r.max,g=0,f=this.dim;g<f;){var y=g++;if(!Fe.intervalsOverlap(o[y],l[y],c[y],d[y],i))return!1}return!0},clear:function(){return this.initialized=!1,this},getLongestAxis:function(){for(var r=0,i=0,o=0,l=this.dim;o<l;){var c=o++,d=this.getAxisLength(c);d>r&&(r=d,i=c)}return i},getAxisLength:function(r){return r<0||r>this.dim-1?0:Math.abs(this.min[r]-this.max[r])},intersect:function(r,i){if(!this.initialized)return null;var o=this.min,l=this.max,c=r.min,d=r.max;if(!this.intersects(r,i))return null;for(var g=[],f=[],y=0,S=this.dim;y<S;){var P=y++;g.push(Math.min(l[P],d[P])),f.push(Math.max(o[P],c[P]))}return new Fe([f,g])},__class__:Fe};var rt=_.core.Constants=function(){};x["verb.core.Constants"]=rt,rt.__name__=["verb","core","Constants"];var ee=_.core.SerializableBase=function(){};x["verb.core.SerializableBase"]=ee,ee.__name__=["verb","core","SerializableBase"],ee.prototype={serialize:function(){var r=new $t;return r.serialize(this),r.toString()},__class__:ee};var rs=_.core.Plane=function(r,i){this.origin=r,this.normal=i};x["verb.core.Plane"]=rs,rs.__name__=["verb","core","Plane"],rs.__super__=ee,rs.prototype=T(ee.prototype,{__class__:rs});var kn=_.core.Ray=function(r,i){this.origin=r,this.dir=i};x["verb.core.Ray"]=kn,kn.__name__=["verb","core","Ray"],kn.__super__=ee,kn.prototype=T(ee.prototype,{__class__:kn});var Dt=_.core.NurbsCurveData=function(r,i,o){this.degree=r,this.controlPoints=o,this.knots=i};x["verb.core.NurbsCurveData"]=Dt,Dt.__name__=["verb","core","NurbsCurveData"],Dt.__super__=ee,Dt.prototype=T(ee.prototype,{__class__:Dt});var se=_.core.NurbsSurfaceData=function(r,i,o,l,c){this.degreeU=r,this.degreeV=i,this.knotsU=o,this.knotsV=l,this.controlPoints=c};x["verb.core.NurbsSurfaceData"]=se,se.__name__=["verb","core","NurbsSurfaceData"],se.__super__=ee,se.prototype=T(ee.prototype,{__class__:se});var tr=_.core.MeshData=function(r,i,o,l){this.faces=r,this.points=i,this.normals=o,this.uvs=l};x["verb.core.MeshData"]=tr,tr.__name__=["verb","core","MeshData"],tr.empty=function(){return new tr([],[],[],[])},tr.__super__=ee,tr.prototype=T(ee.prototype,{__class__:tr});var ns=_.core.PolylineData=function(r,i){this.points=r,this.params=i};x["verb.core.PolylineData"]=ns,ns.__name__=["verb","core","PolylineData"],ns.__super__=ee,ns.prototype=T(ee.prototype,{__class__:ns});var ss=_.core.VolumeData=function(r,i,o,l,c,d,g){this.degreeU=r,this.degreeV=i,this.degreeW=o,this.knotsU=l,this.knotsV=c,this.knotsW=d,this.controlPoints=g};x["verb.core.VolumeData"]=ss,ss.__name__=["verb","core","VolumeData"],ss.__super__=ee,ss.prototype=T(ee.prototype,{__class__:ss});var ie=_.core.Pair=function(r,i){this.item0=r,this.item1=i};x["verb.core.Pair"]=ie,ie.__name__=["verb","core","Pair"],ie.prototype={__class__:ie};var Ce=_.core.Interval=function(r,i){this.min=r,this.max=i};x["verb.core.Interval"]=Ce,Ce.__name__=["verb","core","Interval"],Ce.prototype={__class__:Ce};var ln=_.core.CurveCurveIntersection=function(r,i,o,l){this.point0=r,this.point1=i,this.u0=o,this.u1=l};x["verb.core.CurveCurveIntersection"]=ln,ln.__name__=["verb","core","CurveCurveIntersection"],ln.prototype={__class__:ln};var is=_.core.CurveSurfaceIntersection=function(r,i,o,l){this.u=r,this.uv=i,this.curvePoint=o,this.surfacePoint=l};x["verb.core.CurveSurfaceIntersection"]=is,is.__name__=["verb","core","CurveSurfaceIntersection"],is.prototype={__class__:is};var Dr=_.core.MeshIntersectionPoint=function(r,i,o,l,c){this.visited=!1,this.adj=null,this.opp=null,this.uv0=r,this.uv1=i,this.point=o,this.faceIndex0,this.faceIndex1};x["verb.core.MeshIntersectionPoint"]=Dr,Dr.__name__=["verb","core","MeshIntersectionPoint"],Dr.prototype={__class__:Dr};var as=_.core.PolylineMeshIntersection=function(r,i,o,l,c){this.point=r,this.u=i,this.uv=o,this.polylineIndex=l,this.faceIndex=c};x["verb.core.PolylineMeshIntersection"]=as,as.__name__=["verb","core","PolylineMeshIntersection"],as.prototype={__class__:as};var os=_.core.SurfaceSurfaceIntersectionPoint=function(r,i,o,l){this.uv0=r,this.uv1=i,this.point=o,this.dist=l};x["verb.core.SurfaceSurfaceIntersectionPoint"]=os,os.__name__=["verb","core","SurfaceSurfaceIntersectionPoint"],os.prototype={__class__:os};var ls=_.core.TriSegmentIntersection=function(r,i,o,l){this.point=r,this.s=i,this.t=o,this.p=l};x["verb.core.TriSegmentIntersection"]=ls,ls.__name__=["verb","core","TriSegmentIntersection"],ls.prototype={__class__:ls};var Nn=_.core.CurveTriPoint=function(r,i,o){this.u=r,this.point=i,this.uv=o};x["verb.core.CurveTriPoint"]=Nn,Nn.__name__=["verb","core","CurveTriPoint"],Nn.prototype={__class__:Nn};var Ze=function(r,i,o,l,c){c==null&&(c=!1),l==null&&(l=-1),this.uv=o,this.point=r,this.normal=i,this.id=l,this.degen=c};x["verb.core.SurfacePoint"]=Ze,Ze.__name__=["verb","core","SurfacePoint"],Ze.fromUv=function(r,i){return new Ze(null,null,[r,i])},Ze.prototype={__class__:Ze};var ii=_.core.CurvePoint=function(r,i){this.u=r,this.pt=i};x["verb.core.CurvePoint"]=ii,ii.__name__=["verb","core","CurvePoint"],ii.prototype={__class__:ii};var hs=_.core.KdTree=function(r,i){this.dim=3,this.points=r,this.distanceFunction=i,this.dim=r[0].point.length,this.root=this.buildTree(r,0,null)};x["verb.core.KdTree"]=hs,hs.__name__=["verb","core","KdTree"],hs.prototype={buildTree:function(r,i,o){var l=i%this.dim,c,d;return r.length==0?null:r.length==1?new Cn(r[0],l,o):(r.sort(function(g,f){var y=g.point[l]-f.point[l];return y==0?0:y>0?1:-1}),c=Math.floor(r.length/2),d=new Cn(r[c],l,o),d.left=this.buildTree(r.slice(0,c),i+1,d),d.right=this.buildTree(r.slice(c+1),i+1,d),d)},nearest:function(r,i,o){var l=this,c=new us(function(I){return-I.item1}),d,g=null;g=function(I){for(var E,M=I.dimension,k=l.distanceFunction(r,I.kdPoint.point),B,C=[],z=0,R=l.dim;z<R;)z++,C.push(0);B=C;for(var U,j,X=function($,tt){c.push(new ie($,tt)),c.size()>i&&c.pop()},J=0,q=l.dim;J<q;){var G=J++;G==I.dimension?B[G]=r[G]:B[G]=I.kdPoint.point[G]}if(U=l.distanceFunction(B,I.kdPoint.point),I.right==null&&I.left==null){(c.size()<i||k<c.peek().item1)&&X(I,k);return}I.right==null?E=I.left:I.left==null?E=I.right:r[M]<I.kdPoint.point[M]?E=I.left:E=I.right,g(E),(c.size()<i||k<c.peek().item1)&&X(I,k),(c.size()<i||Math.abs(U)<c.peek().item1)&&(E==I.left?j=I.right:j=I.left,j!=null&&g(j))},d=g;for(var f=0;f<i;)f++,c.push(new ie(null,o));d(this.root);for(var y=[],S=0;S<i;){var P=S++;c.content[P].item0!=null&&y.push(new ie(c.content[P].item0.kdPoint,c.content[P].item1))}return y},__class__:hs};var us=function(r){this.content=[],this.scoreFunction=r};x["verb.core.BinaryHeap"]=us,us.__name__=["verb","core","BinaryHeap"],us.prototype={push:function(r){this.content.push(r),this.bubbleUp(this.content.length-1)},pop:function(){var r=this.content[0],i=this.content.pop();return this.content.length>0&&(this.content[0]=i,this.sinkDown(0)),r},peek:function(){return this.content[0]},remove:function(r){for(var i=this.content.length,o=0;o<i;){var l=o++;if(this.content[l]==r){var c=this.content.pop();l!=i-1&&(this.content[l]=c,this.scoreFunction(c)<this.scoreFunction(r)?this.bubbleUp(l):this.sinkDown(l));return}}throw new Q("Node not found.")},size:function(){return this.content.length},bubbleUp:function(r){for(var i=this.content[r];r>0;){var o=Math.floor((r+1)/2)-1,l=this.content[o];if(this.scoreFunction(i)<this.scoreFunction(l))this.content[o]=i,this.content[r]=l,r=o;else break}},sinkDown:function(r){for(var i=this.content.length,o=this.content[r],l=this.scoreFunction(o);;){var c=(r+1)*2,d=c-1,g=-1,f=0;if(d<i){var y=this.content[d];f=this.scoreFunction(y),f<l&&(g=d)}if(c<i){var S=this.content[c],P=this.scoreFunction(S);P<(g==-1?l:f)&&(g=c)}if(g!=-1)this.content[r]=this.content[g],this.content[g]=o,r=g;else break}},__class__:us};var Ln=_.core.KdPoint=function(r,i){this.point=r,this.obj=i};x["verb.core.KdPoint"]=Ln,Ln.__name__=["verb","core","KdPoint"],Ln.prototype={__class__:Ln};var Cn=_.core.KdNode=function(r,i,o){this.kdPoint=r,this.left=null,this.right=null,this.parent=o,this.dimension=i};x["verb.core.KdNode"]=Cn,Cn.__name__=["verb","core","KdNode"],Cn.prototype={__class__:Cn};var br=function(){};x["verb.eval.IBoundingBoxTree"]=br,br.__name__=["verb","eval","IBoundingBoxTree"],br.prototype={__class__:br};var dr=function(r,i){this._boundingBox=null,this._curve=r,i==null&&(i=p.domain(this._curve.knots)/64),this._knotTol=i};x["verb.core.LazyCurveBoundingBoxTree"]=dr,dr.__name__=["verb","core","LazyCurveBoundingBoxTree"],dr.__interfaces__=[br],dr.prototype={split:function(){var r=Z.first(this._curve.knots),i=Z.last(this._curve.knots),o=i-r,l=pe.curveSplit(this._curve,(i+r)/2+o*.1*Math.random());return new ie(new dr(l[0],this._knotTol),new dr(l[1],this._knotTol))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=new Fe(N.dehomogenize1d(this._curve.controlPoints))),this._boundingBox},yield:function(){return this._curve},indivisible:function(r){return p.domain(this._curve.knots)<this._knotTol},empty:function(){return!1},__class__:dr};var pr=function(r,i){if(this._boundingBox=null,this._mesh=r,i==null){for(var o=[],l=0,c=r.faces.length;l<c;){var d=l++;o.push(d)}i=o}this._faceIndices=i};x["verb.core.LazyMeshBoundingBoxTree"]=pr,pr.__name__=["verb","core","LazyMeshBoundingBoxTree"],pr.__interfaces__=[br],pr.prototype={split:function(){var r=ae.sortTrianglesOnLongestAxis(this.boundingBox(),this._mesh,this._faceIndices),i=Z.left(r),o=Z.right(r);return new ie(new pr(this._mesh,i),new pr(this._mesh,o))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=ae.makeMeshAabb(this._mesh,this._faceIndices)),this._boundingBox},yield:function(){return this._faceIndices[0]},indivisible:function(r){return this._faceIndices.length==1},empty:function(){return this._faceIndices.length==0},__class__:pr};var mr=function(r,i){this._boundingBox=null,this._polyline=r,i==null&&(i=new Ce(0,r.points.length!=0?r.points.length-1:0)),this._interval=i};x["verb.core.LazyPolylineBoundingBoxTree"]=mr,mr.__name__=["verb","core","LazyPolylineBoundingBoxTree"],mr.__interfaces__=[br],mr.prototype={split:function(){var r=this._interval.min,i=this._interval.max,o=r+Math.ceil((i-r)/2),l=new Ce(r,o),c=new Ce(o,i);return new ie(new mr(this._polyline,l),new mr(this._polyline,c))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=new Fe(this._polyline.points)),this._boundingBox},yield:function(){return this._interval.min},indivisible:function(r){return this._interval.max-this._interval.min==1},empty:function(){return this._interval.max-this._interval.min==0},__class__:mr};var Hr=function(r,i,o,l){i==null&&(i=!1),this._boundingBox=null,this._surface=r,this._splitV=i,o==null&&(o=p.domain(r.knotsU)/16),l==null&&(l=p.domain(r.knotsV)/16),this._knotTolU=o,this._knotTolV=l};x["verb.core.LazySurfaceBoundingBoxTree"]=Hr,Hr.__name__=["verb","core","LazySurfaceBoundingBoxTree"],Hr.__interfaces__=[br],Hr.prototype={split:function(){var r,i;this._splitV?(r=Z.first(this._surface.knotsV),i=Z.last(this._surface.knotsV)):(r=Z.first(this._surface.knotsU),i=Z.last(this._surface.knotsU));var o=(r+i)/2,l=pe.surfaceSplit(this._surface,o,this._splitV);return new ie(new Hr(l[0],!this._splitV,this._knotTolU,this._knotTolV),new Hr(l[1],!this._splitV,this._knotTolU,this._knotTolV))},boundingBox:function(){if(this._boundingBox==null){this._boundingBox=new Fe;for(var r=0,i=this._surface.controlPoints;r<i.length;){var o=i[r];++r,this._boundingBox.addRange(N.dehomogenize1d(o))}}return this._boundingBox},yield:function(){return this._surface},indivisible:function(r){return p.domain(this._surface.knotsV)<this._knotTolV&&p.domain(this._surface.knotsU)<this._knotTolU},empty:function(){return!1},__class__:Hr};var Ot=_.core.Mat=function(){};x["verb.core.Mat"]=Ot,Ot.__name__=["verb","core","Mat"],Ot.mul=function(r,i){for(var o=[],l=0,c=i.length;l<c;){var d=l++;o.push(p.mul(r,i[d]))}return o},Ot.mult=function(r,i){var o,l,c,d,g,f,y,S;o=r.length,l=i.length,c=i[0].length,d=[];for(var P=o-1,I=0,E=0;P>=0;){for(g=[],f=r[P],E=c-1;E>=0;){for(y=f[l-1]*i[l-1][E],I=l-2;I>=1;)S=I-1,y+=f[I]*i[I][E]+f[S]*i[S][E],I-=2;I==0&&(y+=f[0]*i[0][E]),g[E]=y,E--}d[P]=g,P--}return d},Ot.add=function(r,i){for(var o=[],l=0,c=r.length;l<c;){var d=l++;o.push(p.add(r[d],i[d]))}return o},Ot.div=function(r,i){for(var o=[],l=0,c=r.length;l<c;){var d=l++;o.push(p.div(r[d],i))}return o},Ot.sub=function(r,i){for(var o=[],l=0,c=r.length;l<c;){var d=l++;o.push(p.sub(r[d],i[d]))}return o},Ot.dot=function(r,i){for(var o=[],l=0,c=r.length;l<c;){var d=l++;o.push(p.dot(r[d],i))}return o},Ot.identity=function(r){for(var i=p.zeros2d(r,r),o=0;o<r;){var l=o++;i[l][l]=1}return i},Ot.transpose=function(r){if(r.length==0)return[];for(var i=[],o=0,l=r[0].length;o<l;){var c=o++;i.push(function(d){for(var g,f=[],y=0,S=r.length;y<S;){var P=y++;f.push(r[P][c])}return g=f,g}())}return i},Ot.solve=function(r,i){return Ot.LUsolve(Ot.LU(r),i)},Ot.LUsolve=function(r,i){var o,l,c=r.LU,d=c.length,g=i.slice(),f=r.P,y,S,P;for(o=d-1;o!=-1;)g[o]=i[o],--o;for(o=0;o<d;){for(y=f[o],f[o]!=o&&(P=g[o],g[o]=g[y],g[y]=P),S=c[o],l=0;l<o;)g[o]-=g[l]*S[l],++l;++o}for(o=d-1;o>=0;){for(S=c[o],l=o+1;l<d;)g[o]-=g[l]*S[l],++l;g[o]/=S[o],--o}return g},Ot.LU=function(r){for(var i,o,l,c,d,g,f,y,S,P=[],I=0,E=r.length;I<E;){var M=I++;P.push(r[M].slice())}r=P;var k=r.length,B=k-1,C=[];for(l=0;l<k;){for(f=l,g=r[l],S=Math.abs(g[l]),o=l+1;o<k;)c=Math.abs(r[o][l]),S<c&&(S=c,f=o),++o;for(C[l]=f,f!=l&&(r[l]=r[f],r[f]=g,g=r[l]),d=g[l],i=l+1;i<k;)r[i][l]/=d,++i;for(i=l+1;i<k;){for(y=r[i],o=l+1;o<B;)y[o]-=y[l]*g[o],++o,y[o]-=y[l]*g[o],++o;o==B&&(y[o]-=y[l]*g[o]),++i}++l}return new cs(r,C)};var cs=function(r,i){this.LU=r,this.P=i};x["verb.core._Mat.LUDecomp"]=cs,cs.__name__=["verb","core","_Mat","LUDecomp"],cs.prototype={__class__:cs};var ae=_.core.Mesh=function(){};x["verb.core.Mesh"]=ae,ae.__name__=["verb","core","Mesh"],ae.getTriangleNorm=function(r,i){var o=r[i[0]],l=r[i[1]],c=r[i[2]],d=p.sub(l,o),g=p.sub(c,o),f=p.cross(d,g);return p.mul(1/p.norm(f),f)},ae.makeMeshAabb=function(r,i){for(var o=new Fe,l=0;l<i.length;){var c=i[l];++l,o.add(r.points[r.faces[c][0]]),o.add(r.points[r.faces[c][1]]),o.add(r.points[r.faces[c][2]])}return o},ae.sortTrianglesOnLongestAxis=function(r,i,o){for(var l=r.getLongestAxis(),c=[],d=0;d<o.length;){var g=o[d];++d;var f=ae.getMinCoordOnAxis(i.points,i.faces[g],l);c.push(new ie(f,g))}c.sort(function(E,M){var k=E.item0,B=M.item0;return k==B?0:k>B?1:-1});for(var y=[],S=0,P=c.length;S<P;){var I=S++;y.push(c[I].item1)}return y},ae.getMinCoordOnAxis=function(r,i,o){for(var l=1/0,c=0;c<3;){var d=c++,g=r[i[d]][o];g<l&&(l=g)}return l},ae.getTriangleCentroid=function(r,i){for(var o=[0,0,0],l=0;l<3;)for(var c=l++,d=0;d<3;){var g=d++;o[g]+=r[i[c]][g]}for(var f=0;f<3;){var y=f++;o[y]/=3}return o},ae.triangleUVFromPoint=function(r,i,o){var l=r.faces[i],c=r.points[l[0]],d=r.points[l[1]],g=r.points[l[2]],f=r.uvs[l[0]],y=r.uvs[l[1]],S=r.uvs[l[2]],P=p.sub(c,o),I=p.sub(d,o),E=p.sub(g,o),M=p.norm(p.cross(p.sub(c,d),p.sub(c,g))),k=p.norm(p.cross(I,E))/M,B=p.norm(p.cross(E,P))/M,C=p.norm(p.cross(P,I))/M;return p.add(p.mul(k,f),p.add(p.mul(B,y),p.mul(C,S)))};var qr=function(r,i){if(this._empty=!1,this._face=-1,i==null){for(var o=[],l=0,c=r.faces.length;l<c;){var d=l++;o.push(d)}i=o}if(this._boundingBox=ae.makeMeshAabb(r,i),i.length<1){this._empty=!0;return}else if(i.length<2){this._face=i[0];return}var g=ae.sortTrianglesOnLongestAxis(this._boundingBox,r,i),f=Z.left(g),y=Z.right(g);this._children=new ie(new qr(r,f),new qr(r,y))};x["verb.core.MeshBoundingBoxTree"]=qr,qr.__name__=["verb","core","MeshBoundingBoxTree"],qr.__interfaces__=[br],qr.prototype={split:function(){return this._children},boundingBox:function(){return this._boundingBox},yield:function(){return this._face},indivisible:function(r){return this._children==null},empty:function(){return this._empty},__class__:qr};var er=_.core.Minimizer=function(){};x["verb.core.Minimizer"]=er,er.__name__=["verb","core","Minimizer"],er.uncmin=function(r,i,o,l,c){o==null&&(o=1e-8),l==null&&(l=function(J){return er.numericalGradient(r,J)}),c==null&&(c=1e3),i=i.slice(0);var d=i.length,g=r(i),f=g,y;if(isNaN(g))throw new Q("uncmin: f(x0) is a NaN!");o=Math.max(o,rt.EPSILON);var S,P,I,E=Ot.identity(d),M=0,k=[],B,C,z,R,U,j,X="";for(P=l(i);M<c;){if(!p.all(p.finite(P))){X="Gradient has Infinity or NaN";break}if(S=p.neg(Ot.dot(E,P)),!p.all(p.finite(S))){X="Search direction has Infinity or NaN";break}if(j=p.norm(S),j<o){X="Newton step smaller than tol";break}for(U=1,y=p.dot(P,S),B=i;M<c&&!(U*j<o);){if(k=p.mul(U,S),B=p.add(i,k),f=r(B),f-g>=.1*U*y||isNaN(f)){U*=.5,++M;continue}break}if(U*j<o){X="Line search step size smaller than tol";break}if(M==c){X="maxit reached during line search";break}I=l(B),C=p.sub(I,P),R=p.dot(C,k),z=Ot.dot(E,C),E=Ot.sub(Ot.add(E,Ot.mul((R+p.dot(C,z))/(R*R),er.tensor(k,k))),Ot.div(Ot.add(er.tensor(z,k),er.tensor(k,z)),R)),i=B,g=f,P=I,++M}return new ds(i,g,P,E,M,X)},er.numericalGradient=function(r,i){var o=i.length,l=r(i);if(l==NaN)throw new Q("gradient: f(x) is a NaN!");for(var c=i.slice(0),d,g,f=[],y,S=.001,P,I,E,M=0,k,B,C,z=0;z<o;)for(var R=z++,U=Math.max(1e-6*l,1e-8);;){if(++M,M>20)throw new Q("Numerical gradient fails");if(c[R]=i[R]+U,d=r(c),c[R]=i[R]-U,g=r(c),c[R]=i[R],isNaN(d)||isNaN(g)){U/=16;continue}if(f[R]=(d-g)/(2*U),P=i[R]-U,I=i[R],E=i[R]+U,k=(d-l)/U,B=(l-g)/U,C=p.max([Math.abs(f[R]),Math.abs(l),Math.abs(d),Math.abs(g),Math.abs(P),Math.abs(I),Math.abs(E),1e-8]),y=Math.min(p.max([Math.abs(k-f[R]),Math.abs(B-f[R]),Math.abs(k-B)])/C,U/C),y>S)U/=16;else break}return f},er.tensor=function(r,i){for(var o=r.length,l=i.length,c=[],d,g,f=o-1;f>=0;){d=[],g=r[f];for(var y=l-1;y>=3;)d[y]=g*i[y],--y,d[y]=g*i[y],--y,d[y]=g*i[y],--y,d[y]=g*i[y],--y;for(;y>=0;)d[y]=g*i[y],--y;c[f]=d,f--}return c};var ds=function(r,i,o,l,c,d){this.solution=r,this.value=i,this.gradient=o,this.invHessian=l,this.iterations=c,this.message=d};x["verb.core.MinimizationResult"]=ds,ds.__name__=["verb","core","MinimizationResult"],ds.prototype={__class__:ds};var On=function(){};x["verb.core.ISerializable"]=On,On.__name__=["verb","core","ISerializable"],On.prototype={__class__:On};var ia=_.core.Deserializer=function(){};x["verb.core.Deserializer"]=ia,ia.__name__=["verb","core","Deserializer"],ia.deserialize=function(r){var i=new qt(r),o=i.unserialize();return o};var Ve=_.core.Trig=function(){};x["verb.core.Trig"]=Ve,Ve.__name__=["verb","core","Trig"],Ve.isPointInPlane=function(r,i,o){return Math.abs(p.dot(p.sub(r,i.origin),i.normal))<o},Ve.distToSegment=function(r,i,o){var l=Ve.segmentClosestPoint(i,r,o,0,1);return p.dist(i,l.pt)},Ve.rayClosestPoint=function(r,i,o){var l=p.sub(r,i),c=p.dot(l,o),d=p.add(i,p.mul(c,o));return d},Ve.distToRay=function(r,i,o){var l=Ve.rayClosestPoint(r,i,o),c=p.sub(l,r);return p.norm(c)},Ve.threePointsAreFlat=function(r,i,o,l){var c=p.sub(i,r),d=p.sub(o,r),g=p.cross(c,d),f=p.dot(g,g);return f<l},Ve.segmentClosestPoint=function(r,i,o,l,c){var d=p.sub(o,i),g=p.norm(d);if(g<rt.EPSILON)return{u:l,pt:i};var f=i,y=p.mul(1/g,d),S=p.sub(r,f),P=p.dot(S,y);return P<0?{u:l,pt:i}:P>g?{u:c,pt:o}:{u:l+(c-l)*P/g,pt:p.add(f,p.mul(P,y))}};var p=_.core.Vec=function(){};x["verb.core.Vec"]=p,p.__name__=["verb","core","Vec"],p.angleBetween=function(r,i){return Math.acos(p.dot(r,i)/(p.norm(r)*p.norm(i)))},p.positiveAngleBetween=function(r,i,o){var l=p.cross(r,i),c=p.norm(r),d=p.norm(i),g=c*d,f=p.dot(r,i),y=p.norm(l)/g,S=f/g,P=Math.atan2(y,S),I=p.dot(o,l);return Math.abs(I)<rt.EPSILON||I>0?P:-P},p.signedAngleBetween=function(r,i,o){var l=p.cross(r,i),c=p.norm(r),d=p.norm(i),g=c*d,f=p.dot(r,i),y=p.norm(l)/g,S=f/g,P=Math.atan2(y,S),I=p.dot(o,l);return I>0?P:2*Math.PI-P},p.angleBetweenNormalized2d=function(r,i){var o=r[0]*i[1]-r[1]*i[0];return Math.atan2(o,p.dot(r,i))},p.domain=function(r){return Z.last(r)-Z.first(r)},p.range=function(r){for(var i=[],o=0,l=0;l<r;)l++,i.push(o),o+=1;return i},p.span=function(r,i,o){if(o==null)return[];if(o<rt.EPSILON)return[];if(r>i&&o>0)return[];if(i>r&&o<0)return[];for(var l=[],c=r;c<=i;)l.push(c),c+=o;return l},p.neg=function(r){return r.map(function(i){return-i})},p.min=function(r){return O.fold(r,function(i,o){return Math.min(i,o)},1/0)},p.max=function(r){return O.fold(r,function(i,o){return Math.max(i,o)},-1/0)},p.all=function(r){return O.fold(r,function(i,o){return o&&i},!0)},p.finite=function(r){return r.map(function(i){return isFinite(i)})},p.onRay=function(r,i,o){return p.add(r,p.mul(o,i))},p.lerp=function(r,i,o){return p.add(p.mul(r,i),p.mul(1-r,o))},p.normalized=function(r){return p.div(r,p.norm(r))},p.cross=function(r,i){return[r[1]*i[2]-r[2]*i[1],r[2]*i[0]-r[0]*i[2],r[0]*i[1]-r[1]*i[0]]},p.dist=function(r,i){return p.norm(p.sub(r,i))},p.distSquared=function(r,i){return p.normSquared(p.sub(r,i))},p.sum=function(r){return O.fold(r,function(i,o){return o+i},0)},p.addAll=function(r){var i=rr(r)();if(!i.hasNext())return null;var o=i.next().length;return O.fold(r,function(l,c){return p.add(c,l)},p.rep(o,0))},p.addAllMutate=function(r){for(var i=r[0],o=1,l=r.length;o<l;){var c=o++;p.addMutate(i,r[c])}},p.addMulMutate=function(r,i,o){for(var l=0,c=r.length;l<c;){var d=l++;r[d]=r[d]+i*o[d]}},p.subMulMutate=function(r,i,o){for(var l=0,c=r.length;l<c;){var d=l++;r[d]=r[d]-i*o[d]}},p.addMutate=function(r,i){for(var o=0,l=r.length;o<l;){var c=o++;r[c]=r[c]+i[c]}},p.subMutate=function(r,i){for(var o=0,l=r.length;o<l;){var c=o++;r[c]=r[c]-i[c]}},p.mulMutate=function(r,i){for(var o=0,l=i.length;o<l;){var c=o++;i[c]=i[c]*r}},p.norm=function(r){var i=p.normSquared(r);return i!=0?Math.sqrt(i):i},p.normSquared=function(r){return O.fold(r,function(i,o){return o+i*i},0)},p.rep=function(r,i){for(var o=[],l=0;l<r;)l++,o.push(i);return o},p.zeros1d=function(r){for(var i=[],o=0;o<r;)o++,i.push(0);return i},p.zeros2d=function(r,i){for(var o=[],l=0;l<r;)l++,o.push(p.zeros1d(i));return o},p.zeros3d=function(r,i,o){for(var l=[],c=0;c<r;)c++,l.push(p.zeros2d(i,o));return l},p.dot=function(r,i){for(var o=0,l=0,c=r.length;l<c;){var d=l++;o+=r[d]*i[d]}return o},p.add=function(r,i){for(var o=[],l=0,c=r.length;l<c;){var d=l++;o.push(r[d]+i[d])}return o},p.mul=function(r,i){for(var o=[],l=0,c=i.length;l<c;){var d=l++;o.push(r*i[d])}return o},p.div=function(r,i){for(var o=[],l=0,c=r.length;l<c;){var d=l++;o.push(r[d]/i)}return o},p.sub=function(r,i){for(var o=[],l=0,c=r.length;l<c;){var d=l++;o.push(r[d]-i[d])}return o},p.isZero=function(r){for(var i=0,o=r.length;i<o;){var l=i++;if(Math.abs(r[l])>rt.TOLERANCE)return!1}return!0},p.sortedSetUnion=function(r,i){for(var o=[],l=0,c=0;l<r.length||c<i.length;){if(l>=r.length){o.push(i[c]),c++;continue}else if(c>=i.length){o.push(r[l]),l++;continue}var d=r[l]-i[c];if(Math.abs(d)<rt.EPSILON){o.push(r[l]),l++,c++;continue}if(d>0){o.push(i[c]),c++;continue}o.push(r[l]),l++}return o},p.sortedSetSub=function(r,i){for(var o=[],l=0,c=0;l<r.length;){if(c>=i.length){o.push(r[l]),l++;continue}if(Math.abs(r[l]-i[c])<rt.EPSILON){l++,c++;continue}o.push(r[l]),l++}return o};var bt=_.eval.Analyze=function(){};x["verb.eval.Analyze"]=bt,bt.__name__=["verb","eval","Analyze"],bt.knotMultiplicities=function(r){for(var i=[new Bn(r[0],0)],o=i[0],l=0;l<r.length;){var c=r[l];++l,Math.abs(c-o.knot)>rt.EPSILON&&(o=new Bn(c,0),i.push(o)),o.inc()}return i},bt.isRationalSurfaceClosed=function(r,i){i==null&&(i=!0);var o;i?o=r.controlPoints:o=Ot.transpose(r.controlPoints);for(var l=0,c=o[0].length;l<c;){var d=l++,g=p.dist(Z.first(o)[d],Z.last(o)[d])<rt.EPSILON;if(!g)return!1}return!0},bt.rationalSurfaceClosestPoint=function(r,i){var o=bt.rationalSurfaceClosestParam(r,i);return N.rationalSurfacePoint(r,o[0],o[1])},bt.rationalSurfaceClosestParam=function(r,i){for(var o=5,l=0,c,d=1e-4,g=5e-4,f,y=r.knotsU[0],S=Z.last(r.knotsU),P=r.knotsV[0],I=Z.last(r.knotsV),E=bt.isRationalSurfaceClosed(r),M=bt.isRationalSurfaceClosed(r,!1),k,B=Rt.rationalSurfaceAdaptive(r,new Xr),C=1/0,z=0,R=B.points.length;z<R;){var U=z++,j=B.points[U],X=p.normSquared(p.sub(i,j));X<C&&(C=X,k=B.uvs[U])}for(var J=function(Ht){return N.rationalSurfaceDerivatives(r,Ht[0],Ht[1],2)},q=function(Ht,Zt,jt){var Jt=Zt[1][0],Oe=Zt[0][1],Je=Zt[2][0],Pe=Zt[0][2],xe=Zt[1][1],Be=Zt[1][1],je=p.dot(Jt,jt),nr=p.dot(Oe,jt),gr=[-je,-nr],sr=p.dot(Jt,Jt)+p.dot(Je,jt),ir=p.dot(Jt,Oe)+p.dot(xe,jt),ar=p.dot(Jt,Oe)+p.dot(Be,jt),wr=p.dot(Oe,Oe)+p.dot(Pe,jt),Vn=[[sr,ir],[ar,wr]],un=Ot.solve(Vn,gr);return p.add(un,Ht)};l<o;){c=J(k),f=p.sub(c[0][0],i);var G=p.norm(f),$=p.dot(c[1][0],f),tt=p.norm(c[1][0])*G,et=p.dot(c[0][1],f),ot=p.norm(c[0][1])*G,ut=$/tt,lt=et/ot,pt=G<d,nt=ut<g,mt=lt<g;if(pt&&nt&&mt)return k;var K=q(k,c,f);K[0]<y?E?K=[S-(K[0]-y),K[1]]:K=[y+rt.EPSILON,K[1]]:K[0]>S&&(E?K=[y+(K[0]-S),K[1]]:K=[S-rt.EPSILON,K[1]]),K[1]<P?M?K=[K[0],I-(K[1]-P)]:K=[K[0],P+rt.EPSILON]:K[1]>I&&(M?K=[K[0],P+(K[0]-I)]:K=[K[0],I-rt.EPSILON]);var _t=p.norm(p.mul(K[0]-k[0],c[1][0])),Et=p.norm(p.mul(K[1]-k[1],c[0][1]));if(_t+Et<d)return k;k=K,l++}return k},bt.rationalCurveClosestPoint=function(r,i){return N.rationalCurvePoint(r,bt.rationalCurveClosestParam(r,i))},bt.rationalCurveClosestParam=function(r,i){for(var o=1/0,l=0,c=Rt.rationalCurveRegularSample(r,r.controlPoints.length*r.degree,!0),d=0,g=c.length-1;d<g;){var f=d++,y=c[f][0],S=c[f+1][0],P=c[f].slice(1),I=c[f+1].slice(1),E=Ve.segmentClosestPoint(i,P,I,y,S),M=p.norm(p.sub(i,E.pt));M<o&&(o=M,l=E.u)}for(var k=5,B=0,C,z=1e-4,R=5e-4,U,j=r.knots[0],X=Z.last(r.knots),J=p.normSquared(p.sub(r.controlPoints[0],Z.last(r.controlPoints)))<rt.EPSILON,q=l,G=function(K){return N.rationalCurveDerivatives(r,K,2)},$=function(K,_t,Et){var Ht=p.dot(_t[1],Et),Zt=p.dot(_t[2],Et),jt=p.dot(_t[1],_t[1]),Jt=Zt+jt;return K-Ht/Jt};B<k;){C=G(q),U=p.sub(C[0],i);var tt=p.norm(U),et=p.dot(C[1],U),ot=p.norm(C[1])*tt,ut=et/ot,lt=tt<z,pt=Math.abs(ut)<R;if(lt&&pt)return q;var nt=$(q,C,U);nt<j?J?nt=X-(nt-j):nt=j:nt>X&&(J?nt=j+(nt-X):nt=X);var mt=p.norm(p.mul(nt-q,C[1]));if(mt<z)return q;q=nt,B++}return q},bt.rationalCurveParamAtArcLength=function(r,i,o,l,c){if(o==null&&(o=.001),i<rt.EPSILON)return r.knots[0];var d;l!=null?d=l:d=yt.decomposeCurveIntoBeziers(r);var g=0;d[g];var f=-rt.EPSILON,y;for(c!=null?y=c:y=[];f<i&&g<d.length;){if(g<y.length?y[g]=y[g]:y[g]=bt.rationalBezierCurveArcLength(r),f+=y[g],i<f+rt.EPSILON)return bt.rationalBezierCurveParamAtArcLength(r,i,o,y[g]);g++}return-1},bt.rationalBezierCurveParamAtArcLength=function(r,i,o,l){if(i<0)return r.knots[0];var c;if(l!=null?c=l:c=bt.rationalBezierCurveArcLength(r),i>c)return Z.last(r.knots);var d=r.knots[0],g=0,f=Z.last(r.knots),y=c,S=0,P=0,I;for(o!=null?I=o:I=rt.TOLERANCE*2;y-g>I;)S=(d+f)/2,P=bt.rationalBezierCurveArcLength(r,S),P>i?(f=S,y=P):(d=S,g=P);return(d+f)/2},bt.rationalCurveArcLength=function(r,i,o){o==null&&(o=16),i==null?i=Z.last(r.knots):i=i;for(var l=yt.decomposeCurveIntoBeziers(r),c=0,d=l[0],g=0;c<l.length&&d.knots[0]+rt.EPSILON<i;){var f=Math.min(Z.last(d.knots),i);g+=bt.rationalBezierCurveArcLength(d,f,o),d=l[++c]}return g},bt.rationalBezierCurveArcLength=function(r,i,o){o==null&&(o=16);var l;i==null?l=Z.last(r.knots):l=i;for(var c=(l-r.knots[0])/2,d=0,g=r.degree+o,f,y,S=0;S<g;){var P=S++;f=c*bt.Tvalues[g][P]+c+r.knots[0],y=N.rationalCurveDerivatives(r,f,1),d+=bt.Cvalues[g][P]*p.norm(y[1])}return c*d};var Bn=_.eval.KnotMultiplicity=function(r,i){this.knot=r,this.mult=i};x["verb.eval.KnotMultiplicity"]=Bn,Bn.__name__=["verb","eval","KnotMultiplicity"],Bn.prototype={inc:function(){this.mult++},__class__:Bn};var Qe=_.eval.Check=function(){};x["verb.eval.Check"]=Qe,Qe.__name__=["verb","eval","Check"],Qe.isValidKnotVector=function(r,i){if(r.length==0||r.length<(i+1)*2)return!1;for(var o=Z.first(r),l=0,c=i+1;l<c;){var d=l++;if(Math.abs(r[d]-o)>rt.EPSILON)return!1}o=Z.last(r);for(var g=r.length-i-1,f=r.length;g<f;){var y=g++;if(Math.abs(r[y]-o)>rt.EPSILON)return!1}return Qe.isNonDecreasing(r)},Qe.isNonDecreasing=function(r){for(var i=Z.first(r),o=0,l=r.length;o<l;){var c=o++;if(r[c]<i-rt.EPSILON)return!1;i=r[c]}return!0},Qe.isValidNurbsCurveData=function(r){if(r.controlPoints==null)throw new Q("Control points array cannot be null!");if(r.degree==null)throw new Q("Degree cannot be null!");if(r.degree<1)throw new Q("Degree must be greater than 1!");if(r.knots==null)throw new Q("Knots cannot be null!");if(r.knots.length!=r.controlPoints.length+r.degree+1)throw new Q("controlPoints.length + degree + 1 must equal knots.length!");if(!Qe.isValidKnotVector(r.knots,r.degree))throw new Q("Invalid knot vector format! Should begin with degree + 1 repeats and end with degree + 1 repeats!");return r},Qe.isValidNurbsSurfaceData=function(r){if(r.controlPoints==null)throw new Q("Control points array cannot be null!");if(r.degreeU==null)throw new Q("DegreeU cannot be null!");if(r.degreeV==null)throw new Q("DegreeV cannot be null!");if(r.degreeU<1)throw new Q("DegreeU must be greater than 1!");if(r.degreeV<1)throw new Q("DegreeV must be greater than 1!");if(r.knotsU==null)throw new Q("KnotsU cannot be null!");if(r.knotsV==null)throw new Q("KnotsV cannot be null!");if(r.knotsU.length!=r.controlPoints.length+r.degreeU+1)throw new Q("controlPointsU.length + degreeU + 1 must equal knotsU.length!");if(r.knotsV.length!=r.controlPoints[0].length+r.degreeV+1)throw new Q("controlPointsV.length + degreeV + 1 must equal knotsV.length!");if(!Qe.isValidKnotVector(r.knotsU,r.degreeU)||!Qe.isValidKnotVector(r.knotsV,r.degreeV))throw new Q("Invalid knot vector format! Should begin with degree + 1 repeats and end with degree + 1 repeats!");return r};var pe=_.eval.Divide=function(){};x["verb.eval.Divide"]=pe,pe.__name__=["verb","eval","Divide"],pe.surfaceSplit=function(r,i,o){o==null&&(o=!1);var l,c,d;o?(d=r.controlPoints,l=r.knotsV,c=r.degreeV):(d=Ot.transpose(r.controlPoints),l=r.knotsU,c=r.degreeU);for(var g,f=[],y=0,S=c+1;y<S;)y++,f.push(i);g=f;for(var P=[],I=[],E=N.knotSpan(c,i,l),M=null,k=0;k<d.length;){var B=d[k];++k,M=yt.curveKnotRefine(new Dt(c,l,B),g),P.push(M.controlPoints.slice(0,E+1)),I.push(M.controlPoints.slice(E+1))}var C=M.knots.slice(0,E+c+2),z=M.knots.slice(E+1);return o?[new se(r.degreeU,c,r.knotsU.slice(),C,P),new se(r.degreeU,c,r.knotsU.slice(),z,I)]:(P=Ot.transpose(P),I=Ot.transpose(I),[new se(c,r.degreeV,C,r.knotsV.slice(),P),new se(c,r.degreeV,z,r.knotsV.slice(),I)])},pe.curveSplit=function(r,i){var o=r.degree;r.controlPoints;for(var l=r.knots,c,d=[],g=0,f=o+1;g<f;)g++,d.push(i);c=d;var y=yt.curveKnotRefine(r,c),S=N.knotSpan(o,i,l),P=y.knots.slice(0,S+o+2),I=y.knots.slice(S+1),E=y.controlPoints.slice(0,S+1),M=y.controlPoints.slice(S+1);return[new Dt(o,P,E),new Dt(o,I,M)]},pe.rationalCurveByEqualArcLength=function(r,i){var o=bt.rationalCurveArcLength(r),l=o/i;return pe.rationalCurveByArcLength(r,l)},pe.rationalCurveByArcLength=function(r,i){var o=yt.decomposeCurveIntoBeziers(r),l=o.map(function(E){return bt.rationalBezierCurveArcLength(E)}),c=p.sum(l),d=[new Rn(r.knots[0],0)];if(i>c)return d;for(var g=i,f=0,y=g,S=0,P=0,I;f<o.length;){for(S+=l[f];y<S+rt.EPSILON;)I=bt.rationalBezierCurveParamAtArcLength(o[f],y-P,rt.TOLERANCE,l[f]),d.push(new Rn(I,y)),y+=g;P+=l[f],f++}return d};var Rn=_.eval.CurveLengthSample=function(r,i){this.u=r,this.len=i};x["verb.eval.CurveLengthSample"]=Rn,Rn.__name__=["verb","eval","CurveLengthSample"],Rn.prototype={__class__:Rn};var N=_.eval.Eval=function(){};x["verb.eval.Eval"]=N,N.__name__=["verb","eval","Eval"],N.rationalCurveTangent=function(r,i){var o=N.rationalCurveDerivatives(r,i,1);return o[1]},N.rationalSurfaceNormal=function(r,i,o){var l=N.rationalSurfaceDerivatives(r,i,o,1);return p.cross(l[1][0],l[0][1])},N.rationalSurfaceDerivatives=function(r,i,o,l){l==null&&(l=1);for(var c=N.surfaceDerivatives(r,i,o,l),d=N.rational2d(c),g=N.weight2d(c),f=[],y=d[0][0].length,S=0,P=l+1;S<P;){var I=S++;f.push([]);for(var E=0,M=l-I+1;E<M;){for(var k=E++,B=d[I][k],C=1,z=k+1;C<z;){var R=C++;p.subMulMutate(B,Vt.get(k,R)*g[0][R],f[I][k-R])}for(var U=1,j=I+1;U<j;){var X=U++;p.subMulMutate(B,Vt.get(I,X)*g[X][0],f[I-X][k]);for(var J=p.zeros1d(y),q=1,G=k+1;q<G;){var $=q++;p.addMulMutate(J,Vt.get(k,$)*g[X][$],f[I-X][k-$])}p.subMulMutate(B,Vt.get(I,X),J)}p.mulMutate(1/g[0][0],B),f[I].push(B)}}return f},N.rationalSurfacePoint=function(r,i,o){return N.dehomogenize(N.surfacePoint(r,i,o))},N.rationalCurveDerivatives=function(r,i,o){o==null&&(o=1);for(var l=N.curveDerivatives(r,i,o),c=N.rational1d(l),d=N.weight1d(l),g=[],f=0,y=o+1;f<y;){for(var S=f++,P=c[S],I=1,E=S+1;I<E;){var M=I++;p.subMulMutate(P,Vt.get(S,M)*d[M],g[S-M])}p.mulMutate(1/d[0],P),g.push(P)}return g},N.rationalCurvePoint=function(r,i){return N.dehomogenize(N.curvePoint(r,i))},N.surfaceDerivatives=function(r,i,o,l){var c=r.knotsU.length-r.degreeU-2,d=r.knotsV.length-r.degreeV-2;return N.surfaceDerivativesGivenNM(c,d,r,i,o,l)},N.surfaceDerivativesGivenNM=function(r,i,o,l,c,d){var g=o.degreeU,f=o.degreeV,y=o.controlPoints,S=o.knotsU,P=o.knotsV;if(!N.areValidRelations(g,y.length,S.length)||!N.areValidRelations(f,y[0].length,P.length))throw new Q("Invalid relations between control points, knot vector, and n");var I=y[0][0].length,E;d<g?E=d:E=g;var M;d<f?M=d:M=f;for(var k=p.zeros3d(d+1,d+1,I),B=N.knotSpanGivenN(r,g,l,S),C=N.knotSpanGivenN(i,f,c,P),z=N.derivativeBasisFunctionsGivenNI(B,l,g,r,S),R=N.derivativeBasisFunctionsGivenNI(C,c,f,i,P),U=p.zeros2d(f+1,I),j=0,X=0,J=E+1;X<J;){for(var q=X++,G=0,$=f+1;G<$;){var tt=G++;U[tt]=p.zeros1d(I);for(var et=0,ot=g+1;et<ot;){var ut=et++;p.addMulMutate(U[tt],z[q][ut],y[B-g+ut][C-f+tt])}}var lt=d-q;lt<M?j=lt:j=M;for(var pt=0,nt=j+1;pt<nt;){var mt=pt++;k[q][mt]=p.zeros1d(I);for(var K=0,_t=f+1;K<_t;){var Et=K++;p.addMulMutate(k[q][mt],R[mt][Et],U[Et])}}}return k},N.surfacePoint=function(r,i,o){var l=r.knotsU.length-r.degreeU-2,c=r.knotsV.length-r.degreeV-2;return N.surfacePointGivenNM(l,c,r,i,o)},N.surfacePointGivenNM=function(r,i,o,l,c){var d=o.degreeU,g=o.degreeV,f=o.controlPoints,y=o.knotsU,S=o.knotsV;if(!N.areValidRelations(d,f.length,y.length)||!N.areValidRelations(g,f[0].length,S.length))throw new Q("Invalid relations between control points, knot vector, and n");for(var P=f[0][0].length,I=N.knotSpanGivenN(r,d,l,y),E=N.knotSpanGivenN(i,g,c,S),M=N.basisFunctionsGivenKnotSpanIndex(I,l,d,y),k=N.basisFunctionsGivenKnotSpanIndex(E,c,g,S),B=I-d,C=E,z=p.zeros1d(P),R=p.zeros1d(P),U=0,j=g+1;U<j;){var X=U++;R=p.zeros1d(P),C=E-g+X;for(var J=0,q=d+1;J<q;){var G=J++;p.addMulMutate(R,M[G],f[B+G][C])}p.addMulMutate(z,k[X],R)}return z},N.curveRegularSamplePoints=function(r,i){for(var o=N.curveDerivatives(r,r.knots[0],r.degree),l=1/i,c=l*l,d=o[0],g=p.mul(l,o[1]),f=p.mul(c*.5,o[2]),y=p.mul(c*l*.5,o[3]),S=p.add(f,f),P=p.add(y,y),I=p.mul(.3333333333333333,y),E=[],M=0,k=i+1;M<k;)M++,E.push(N.dehomogenize(d)),p.addAllMutate([d,g,f,I]),p.addAllMutate([g,S,y]),p.addAllMutate([S,P]),p.addAllMutate([f,y]);return E},N.curveRegularSamplePoints2=function(r,i){for(var o=N.curveDerivatives(r,r.knots[0],r.degree),l=1/i,c=l*l,d=o[0],g=p.mul(l,o[1]),f=p.mul(c*.5,o[2]),y=p.mul(c*l*.5,o[3]),S=p.add(f,f),P=p.add(y,y),I=p.mul(.3333333333333333,y),E=[],M=0,k=i+1;M<k;)M++,E.push(N.dehomogenize(d)),p.addAllMutate([d,g,f,I]),p.addAllMutate([g,S,y]),p.addAllMutate([S,P]),p.addAllMutate([f,y]);return E},N.rationalSurfaceRegularSampleDerivatives=function(r,i,o,l){for(var c=N.surfaceRegularSampleDerivatives(r,i,o,l),d=[],g=i+1,f=o+1,y=l+1,S=0;S<g;){var P=S++,I=[];d.push(I);for(var E=0;E<f;){for(var M=E++,k=c[P][M],B=N.rational2d(k),C=N.weight2d(k),z=[],R=B[0][0].length,U=0;U<y;){var j=U++;z.push([]);for(var X=0,J=y-j;X<J;){for(var q=X++,G=B[j][q],$=1,tt=q+1;$<tt;){var et=$++;p.subMulMutate(G,Vt.get(q,et)*C[0][et],z[j][q-et])}for(var ot=1,ut=j+1;ot<ut;){var lt=ot++;p.subMulMutate(G,Vt.get(j,lt)*C[lt][0],z[j-lt][q]);for(var pt=p.zeros1d(R),nt=1,mt=q+1;nt<mt;){var K=nt++;p.addMulMutate(pt,Vt.get(q,K)*C[lt][K],z[j-lt][q-K])}p.subMulMutate(G,Vt.get(j,lt),pt)}p.mulMutate(1/C[0][0],G),z[j].push(G)}}I.push(z)}}return d},N.surfaceRegularSampleDerivatives=function(r,i,o,l){var c=r.degreeU,d=r.degreeV,g=r.controlPoints,f=r.knotsU,y=r.knotsV,S=g[0][0].length;(Z.last(f)-f[0])/i,(Z.last(y)-y[0])/o;for(var P=N.regularlySpacedDerivativeBasisFunctions(c,f,i),I=P.item0,E=P.item1,M=N.regularlySpacedDerivativeBasisFunctions(d,y,o),k=M.item0,B=M.item1,C=[],z=i+1,R=o+1,U=0;U<z;){var j=U++,X=[];C.push(X);for(var J=0;J<R;){var q=J++;X.push(N.surfaceDerivativesGivenBasesKnotSpans(c,d,g,I[j],k[q],E[j],B[q],S,l))}}return C},N.rationalSurfaceRegularSamplePoints=function(r,i,o){return N.dehomogenize2d(N.surfaceRegularSamplePoints(r,i,o))},N.surfaceRegularSamplePoints=function(r,i,o){var l=r.degreeU,c=r.degreeV,d=r.controlPoints,g=r.knotsU,f=r.knotsV,y=d[0][0].length;(Z.last(g)-g[0])/i,(Z.last(f)-f[0])/o;for(var S=N.regularlySpacedBasisFunctions(l,g,i),P=S.item0,I=S.item1,E=N.regularlySpacedBasisFunctions(c,f,o),M=E.item0,k=E.item1,B=[],C=i+1,z=o+1,R=0;R<C;){var U=R++,j=[];B.push(j);for(var X=0;X<z;){var J=X++;j.push(N.surfacePointGivenBasesKnotSpans(l,c,d,P[U],M[J],I[U],k[J],y))}}return B},N.regularlySpacedBasisFunctions=function(r,i,o){for(var l=i.length-r-2,c=(Z.last(i)-i[0])/o,d=[],g=[],f=i[0],y=N.knotSpanGivenN(l,r,f,i),S=o+1,P=0;P<S;){for(P++;f>=i[y+1];)y++;g.push(y),d.push(N.basisFunctionsGivenKnotSpanIndex(y,f,r,i)),f+=c}return new ie(g,d)},N.regularlySpacedDerivativeBasisFunctions=function(r,i,o){for(var l=i.length-r-2,c=(Z.last(i)-i[0])/o,d=[],g=[],f=i[0],y=N.knotSpanGivenN(l,r,f,i),S=o+1,P=0;P<S;){for(P++;f>=i[y+1];)y++;g.push(y),d.push(N.derivativeBasisFunctionsGivenNI(y,f,r,l,i)),f+=c}return new ie(g,d)},N.surfacePointGivenBasesKnotSpans=function(r,i,o,l,c,d,g,f){for(var y=p.zeros1d(f),S,P=l-r,I=c-i,E=0,M=i+1;E<M;){var k=E++;S=p.zeros1d(f);for(var B=0,C=r+1;B<C;){var z=B++;p.addMulMutate(S,d[z],o[P+z][I])}I++,p.addMulMutate(y,g[k],S)}return y},N.surfaceDerivativesGivenBasesKnotSpans=function(r,i,o,l,c,d,g,f,y){var S=o[0][0].length,P;y<r?P=y:P=r;var I;y<i?I=y:I=i;for(var E=p.zeros3d(P+1,I+1,S),M=p.zeros2d(i+1,S),k=0,B=0,C=P+1;B<C;){for(var z=B++,R=0,U=i+1;R<U;){var j=R++;M[j]=p.zeros1d(S);for(var X=0,J=r+1;X<J;){var q=X++;p.addMulMutate(M[j],d[z][q],o[l-r+q][c-i+j])}}var G=y-z;G<I?k=G:k=I;for(var $=0,tt=k+1;$<tt;){var et=$++;E[z][et]=p.zeros1d(S);for(var ot=0,ut=i+1;ot<ut;){var lt=ot++;p.addMulMutate(E[z][et],g[et][lt],M[lt])}}}return E},N.curveDerivatives=function(r,i,o){var l=r.knots.length-r.degree-2;return N.curveDerivativesGivenN(l,r,i,o)},N.curveDerivativesGivenN=function(r,i,o,l){var c=i.degree,d=i.controlPoints,g=i.knots;if(!N.areValidRelations(c,d.length,g.length))throw new Q("Invalid relations between control points, knot vector, and n");var f=d[0].length,y;l<c?y=l:y=c;for(var S=p.zeros2d(l+1,f),P=N.knotSpanGivenN(r,c,o,g),I=N.derivativeBasisFunctionsGivenNI(P,o,c,y,g),E=0,M=y+1;E<M;)for(var k=E++,B=0,C=c+1;B<C;){var z=B++;p.addMulMutate(S[k],I[k][z],d[P-c+z])}return S},N.curvePoint=function(r,i){var o=r.knots.length-r.degree-2;return N.curvePointGivenN(o,r,i)},N.areValidRelations=function(r,i,o){return i+r+1-o==0},N.curvePointGivenN=function(r,i,o){var l=i.degree,c=i.controlPoints,d=i.knots;if(!N.areValidRelations(l,c.length,d.length))throw new Q("Invalid relations between control points, knot Array, and n");for(var g=N.knotSpanGivenN(r,l,o,d),f=N.basisFunctionsGivenKnotSpanIndex(g,o,l,d),y=p.zeros1d(c[0].length),S=0,P=l+1;S<P;){var I=S++;p.addMulMutate(y,f[I],c[g-l+I])}return y},N.volumePoint=function(r,i,o,l){var c=r.knotsU.length-r.degreeU-2,d=r.knotsV.length-r.degreeV-2,g=r.knotsW.length-r.degreeW-2;return N.volumePointGivenNML(r,c,d,g,i,o,l)},N.volumePointGivenNML=function(r,i,o,l,c,d,g){if(!N.areValidRelations(r.degreeU,r.controlPoints.length,r.knotsU.length)||!N.areValidRelations(r.degreeV,r.controlPoints[0].length,r.knotsV.length)||!N.areValidRelations(r.degreeW,r.controlPoints[0][0].length,r.knotsW.length))throw new Q("Invalid relations between control points and knot vector");for(var f=r.controlPoints,y=r.degreeU,S=r.degreeV,P=r.degreeW,I=r.knotsU,E=r.knotsV,M=r.knotsW,k=f[0][0][0].length,B=N.knotSpanGivenN(i,y,c,I),C=N.knotSpanGivenN(o,S,d,E),z=N.knotSpanGivenN(l,P,g,M),R=N.basisFunctionsGivenKnotSpanIndex(B,c,y,I),U=N.basisFunctionsGivenKnotSpanIndex(C,d,S,E),j=N.basisFunctionsGivenKnotSpanIndex(z,g,P,M),X=B-y,J=p.zeros1d(k),q=p.zeros1d(k),G=p.zeros1d(k),$=0,tt=P+1;$<tt;){var et=$++;G=p.zeros1d(k);for(var ot=z-P+et,ut=0,lt=S+1;ut<lt;){var pt=ut++;q=p.zeros1d(k);for(var nt=C-S+pt,mt=0,K=y+1;mt<K;){var _t=mt++;p.addMulMutate(q,R[_t],f[X+_t][nt][ot])}p.addMulMutate(G,U[pt],q)}p.addMulMutate(J,j[et],G)}return J},N.derivativeBasisFunctions=function(r,i,o){var l=N.knotSpan(i,r,o),c=o.length-1,d=c-i-1;return N.derivativeBasisFunctionsGivenNI(l,r,i,d,o)},N.derivativeBasisFunctionsGivenNI=function(r,i,o,l,c){var d=p.zeros2d(o+1,o+1),g=p.zeros1d(o+1),f=p.zeros1d(o+1),y=0,S=0;d[0][0]=1;for(var P=1,I=o+1;P<I;){var E=P++;g[E]=i-c[r+1-E],f[E]=c[r+E]-i,y=0;for(var M=0;M<E;){var k=M++;d[E][k]=f[k+1]+g[E-k],S=d[k][E-1]/d[E][k],d[k][E]=y+f[k+1]*S,y=g[E-k]*S}d[E][E]=y}for(var B=p.zeros2d(l+1,o+1),C=p.zeros2d(2,o+1),z=0,R=1,U=0,j=0,X=0,J=0,q=0,G=0,$=o+1;G<$;){var tt=G++;B[0][tt]=d[tt][o]}for(var et=0,ot=o+1;et<ot;){var ut=et++;z=0,R=1,C[0][0]=1;for(var lt=1,pt=l+1;lt<pt;){var nt=lt++;U=0,j=ut-nt,X=o-nt,ut>=nt&&(C[R][0]=C[z][0]/d[X+1][j],U=C[R][0]*d[j][X]),j>=-1?J=1:J=-j,ut-1<=X?q=nt-1:q=o-ut;for(var mt=J,K=q+1;mt<K;){var _t=mt++;C[R][_t]=(C[z][_t]-C[z][_t-1])/d[X+1][j+_t],U+=C[R][_t]*d[j+_t][X]}ut<=X&&(C[R][nt]=-C[z][nt-1]/d[X+1][ut],U+=C[R][nt]*d[ut][X]),B[nt][ut]=U;var Et=z;z=R,R=Et}}for(var Ht=o,Zt=1,jt=l+1;Zt<jt;){for(var Jt=Zt++,Oe=0,Je=o+1;Oe<Je;){var Pe=Oe++;B[Jt][Pe]*=Ht}Ht*=o-Jt}return B},N.basisFunctions=function(r,i,o){var l=N.knotSpan(i,r,o);return N.basisFunctionsGivenKnotSpanIndex(l,r,i,o)},N.basisFunctionsGivenKnotSpanIndex=function(r,i,o,l){var c=p.zeros1d(o+1),d=p.zeros1d(o+1),g=p.zeros1d(o+1),f=0,y=0;c[0]=1;for(var S=1,P=o+1;S<P;){var I=S++;d[I]=i-l[r+1-I],g[I]=l[r+I]-i,f=0;for(var E=0;E<I;){var M=E++;y=c[M]/(g[M+1]+d[I-M]),c[M]=f+g[M+1]*y,f=d[I-M]*y}c[I]=f}return c},N.knotSpan=function(r,i,o){return N.knotSpanGivenN(o.length-r-2,r,i,o)},N.knotSpanGivenN=function(r,i,o,l){if(o>l[r+1]-rt.EPSILON)return r;if(o<l[i]+rt.EPSILON)return i;for(var c=i,d=r+1,g=Math.floor((c+d)/2);o<l[g]||o>=l[g+1];)o<l[g]?d=g:c=g,g=Math.floor((c+d)/2);return g},N.dehomogenize=function(r){for(var i=r.length,o=[],l=r[i-1],c=r.length-1,d=0;d<c;){var g=d++;o.push(r[g]/l)}return o},N.rational1d=function(r){var i=r[0].length-1;return r.map(function(o){return o.slice(0,i)})},N.rational2d=function(r){return r.map(N.rational1d)},N.weight1d=function(r){var i=r[0].length-1;return r.map(function(o){return o[i]})},N.weight2d=function(r){return r.map(N.weight1d)},N.dehomogenize1d=function(r){return r.map(N.dehomogenize)},N.dehomogenize2d=function(r){return r.map(N.dehomogenize1d)},N.homogenize1d=function(r,i){var o=r.length,l=r[0].length,c=[],d=0,g=[],f;i!=null?f=i:f=p.rep(r.length,1);for(var y=0;y<o;){var S=y++,P=[];g=r[S],d=f[S];for(var I=0;I<l;){var E=I++;P.push(g[E]*d)}P.push(d),c.push(P)}return c},N.homogenize2d=function(r,i){var o=r.length,l=[],c;if(i!=null)c=i;else{for(var d=[],g=0;g<o;)g++,d.push(p.rep(r[0].length,1));c=d}for(var f=0;f<o;){var y=f++;l.push(N.homogenize1d(r[y],c[y]))}return l};var ht=_.eval.Intersect=function(){};x["verb.eval.Intersect"]=ht,ht.__name__=["verb","eval","Intersect"],ht.surfaces=function(r,i,o){var l=Rt.rationalSurfaceAdaptive(r),c=Rt.rationalSurfaceAdaptive(i),d=ht.meshes(l,c),g=d.map(function(f){return f.map(function(y){return ht.surfacesAtPointWithEstimate(r,i,y.uv0,y.uv1,o)})});return g.map(function(f){return gt.rationalInterpCurve(f.map(function(y){return y.point}),3)})},ht.surfacesAtPointWithEstimate=function(r,i,o,l,c){var d,g,f,y,S,P,I,E,M,k,B,C,z,R=5,U=0;do{if(d=N.rationalSurfaceDerivatives(r,o[0],o[1],1),g=d[0][0],y=d[1][0],S=d[0][1],f=p.normalized(p.cross(y,S)),P=p.dot(f,g),I=N.rationalSurfaceDerivatives(i,l[0],l[1],1),E=I[0][0],k=I[1][0],B=I[0][1],M=p.normalized(p.cross(k,B)),C=p.dot(M,E),z=p.distSquared(g,E),z<c*c)break;var j=p.normalized(p.cross(f,M)),X=p.dot(j,g),J=ht.threePlanes(f,P,M,C,j,X);if(J==null)throw new Q("panic!");var q=p.sub(J,g),G=p.sub(J,E),$=p.cross(y,f),tt=p.cross(S,f),et=p.cross(k,M),ot=p.cross(B,M),ut=p.dot(tt,q)/p.dot(tt,y),lt=p.dot($,q)/p.dot($,S),pt=p.dot(ot,G)/p.dot(ot,k),nt=p.dot(et,G)/p.dot(et,B);o=p.add([ut,lt],o),l=p.add([pt,nt],l),U++}while(U<R);return new os(o,l,g,z)},ht.meshes=function(r,i,o,l){o==null&&(o=new pr(r)),l==null&&(l=new pr(i));var c=ht.boundingBoxTrees(o,l,0),d=Z.unique(c.map(function(g){return ht.triangles(r,g.item0,i,g.item1)}).filter(function(g){return g!=null}).filter(function(g){return p.distSquared(g.min.point,g.max.point)>rt.EPSILON}),function(g,f){var y=p.sub(g.min.uv0,f.min.uv0),S=p.dot(y,y),P=p.sub(g.max.uv0,f.max.uv0),I=p.dot(P,P),E=p.sub(g.min.uv0,f.max.uv0),M=p.dot(E,E),k=p.sub(g.max.uv0,f.min.uv0),B=p.dot(k,k);return S<rt.EPSILON&&I<rt.EPSILON||M<rt.EPSILON&&B<rt.EPSILON});return ht.makeMeshIntersectionPolylines(d)},ht.meshSlices=function(r,i,o,l){for(var c=new qr(r),d=c.boundingBox(),g=d.min[0],f=d.min[1],y=d.max[0],S=d.max[1],P=p.span(i,o,l),I=[],E=0;E<P.length;){var M=P[E];++E;var k=[[g,f,M],[y,f,M],[y,S,M],[g,S,M]],B=[[0,0],[1,0],[1,1],[0,1]],C=[[0,1,2],[0,2,3]],z=new tr(C,k,null,B);I.push(ht.meshes(r,z,c))}return I},ht.makeMeshIntersectionPolylines=function(r){if(r.length==0)return[];for(var i=0;i<r.length;){var o=r[i];++i,o.max.opp=o.min,o.min.opp=o.max}for(var l=ht.kdTreeFromSegments(r),c=[],d=0;d<r.length;){var g=r[d];++d,c.push(g.min),c.push(g.max)}for(var f=0;f<c.length;){var y=c[f];if(++f,y.adj==null){var S=ht.lookupAdjacentSegment(y,l,r.length);S!=null&&S.adj==null&&(y.adj=S,S.adj=y)}}var P=c.filter(function(R){return R.adj==null});P.length==0&&(P=c);for(var I=[],E=0,M=!1;P.length!=0;){var k=P.pop();if(!k.visited){for(var B=[],C=k;C!=null&&!(C.visited||(C.visited=!0,C.opp.visited=!0,B.push(C),E+=2,C=C.opp.adj,C==k)););B.length>0&&(B.push(B[B.length-1].opp),I.push(B))}if(P.length==0&&c.length>0&&(M||E<c.length)){M=!0;var z=c.pop();P.push(z)}}return I},ht.kdTreeFromSegments=function(r){for(var i=[],o=0;o<r.length;){var l=r[o];++o,i.push(new Ln(l.min.point,l.min)),i.push(new Ln(l.max.point,l.max))}return new hs(i,p.distSquared)},ht.lookupAdjacentSegment=function(r,i,o){var l=i.nearest(r.point,o,rt.EPSILON).filter(function(c){return r!=c.item0.obj}).map(function(c){return c.item0.obj});return l.length==1?l[0]:null},ht.curveAndSurface=function(r,i,o,l,c){o==null&&(o=.001),l!=null?l=l:l=new dr(r),c!=null?c=c:c=new Hr(i);var d=ht.boundingBoxTrees(l,c,o);return Z.unique(d.map(function(g){var f=g.item0,y=g.item1,S=Z.first(f.knots),P=Z.last(f.knots),I=(S+P)/2,E=Z.first(y.knotsU),M=Z.last(y.knotsU),k=Z.first(y.knotsV),B=Z.last(y.knotsV),C=[(E+M)/2,(k+B)/2];return ht.curveAndSurfaceWithEstimate(f,y,[I].concat(C),o)}).filter(function(g){return p.distSquared(g.curvePoint,g.surfacePoint)<o*o}),function(g,f){return Math.abs(g.u-f.u)<.5*o})},ht.curveAndSurfaceWithEstimate=function(r,i,o,l){l==null&&(l=.001);var c=function(y){var S=N.rationalCurvePoint(r,y[0]),P=N.rationalSurfacePoint(i,y[1],y[2]),I=p.sub(S,P);return p.dot(I,I)},d=function(y){var S=N.rationalCurveDerivatives(r,y[0],1),P=N.rationalSurfaceDerivatives(i,y[1],y[2],1),I=p.sub(P[0][0],S[0]),E=p.mul(-1,S[1]),M=P[1][0],k=P[0][1];return[2*p.dot(E,I),2*p.dot(M,I),2*p.dot(k,I)]},g=er.uncmin(c,o,l*l,d),f=g.solution;return new is(f[0],[f[1],f[2]],N.rationalCurvePoint(r,f[0]),N.rationalSurfacePoint(i,f[1],f[2]))},ht.polylineAndMesh=function(r,i,o){for(var l=ht.boundingBoxTrees(new mr(r),new pr(i),o),c=[],d=0;d<l.length;){var g=l[d];++d;var f=g.item0,y=g.item1,S=ht.segmentWithTriangle(r.points[f],r.points[f+1],i.points,i.faces[y]);if(S!=null){var P=S.point,I=p.lerp(S.p,[r.params[f]],[r.params[f+1]])[0],E=ae.triangleUVFromPoint(i,y,P);c.push(new as(P,I,E,f,y))}}return c},ht.boundingBoxTrees=function(r,i,o){o==null&&(o=1e-9);var l=[],c=[];l.push(r),c.push(i);for(var d=[];l.length>0;){var g=l.pop(),f=c.pop();if(!(g.empty()||f.empty())&&g.boundingBox().intersects(f.boundingBox(),o)){var y=g.indivisible(o),S=f.indivisible(o);if(y&&S){d.push(new ie(g.yield(),f.yield()));continue}else if(y&&!S){var P=f.split();l.push(g),c.push(P.item1),l.push(g),c.push(P.item0);continue}else if(!y&&S){var I=g.split();l.push(I.item1),c.push(f),l.push(I.item0),c.push(f);continue}var E=g.split(),M=f.split();l.push(E.item1),c.push(M.item1),l.push(E.item1),c.push(M.item0),l.push(E.item0),c.push(M.item1),l.push(E.item0),c.push(M.item0)}}return d},ht.curves=function(r,i,o){var l=ht.boundingBoxTrees(new dr(r),new dr(i),0);return Z.unique(l.map(function(c){return ht.curvesWithEstimate(r,i,Z.first(c.item0.knots),Z.first(c.item1.knots),o)}).filter(function(c){return p.distSquared(c.point0,c.point1)<o}),function(c,d){return Math.abs(c.u0-d.u0)<o*5})},ht.curvesWithEstimate=function(r,i,o,l,c){var d=function(E){var M=N.rationalCurvePoint(r,E[0]),k=N.rationalCurvePoint(i,E[1]),B=p.sub(M,k);return p.dot(B,B)},g=function(E){var M=N.rationalCurveDerivatives(r,E[0],1),k=N.rationalCurveDerivatives(i,E[1],1),B=p.sub(M[0],k[0]),C=M[1],z=p.mul(-1,k[1]);return[2*p.dot(C,B),2*p.dot(z,B)]},f=er.uncmin(d,[o,l],c*c,g),y=f.solution[0],S=f.solution[1],P=N.rationalCurvePoint(r,y),I=N.rationalCurvePoint(i,S);return new ln(P,I,y,S)},ht.triangles=function(r,i,o,l){var c=r.faces[i],d=o.faces[l],g=ae.getTriangleNorm(r.points,c),f=ae.getTriangleNorm(o.points,d),y=r.points[c[0]],S=o.points[d[0]],P=ht.planes(y,g,S,f);if(P==null)return null;var I=ht.clipRayInCoplanarTriangle(P,r,i);if(I==null)return null;var E=ht.clipRayInCoplanarTriangle(P,o,l);if(E==null)return null;var M=ht.mergeTriangleClipIntervals(I,E,r,i,o,l);return M==null?null:new Ce(new Dr(M.min.uv0,M.min.uv1,M.min.point,i,l),new Dr(M.max.uv0,M.max.uv1,M.max.point,i,l))},ht.clipRayInCoplanarTriangle=function(r,i,o){for(var l=i.faces[o],c=[i.points[l[0]],i.points[l[1]],i.points[l[2]]],d=[i.uvs[l[0]],i.uvs[l[1]],i.uvs[l[2]]],g=[p.sub(d[1],d[0]),p.sub(d[2],d[1]),p.sub(d[0],d[2])],f=[p.sub(c[1],c[0]),p.sub(c[2],c[1]),p.sub(c[0],c[2])],y=f.map(p.normalized),S=f.map(p.norm),P=null,I=null,E=0;E<3;){var M=E++,k=c[M],B=y[M],C=ht.rays(k,B,r.origin,r.dir);if(C!=null){var z=C.u0,R=C.u1;z<-rt.EPSILON||z>S[M]+rt.EPSILON||((P==null||R<P.u)&&(P=new Nn(R,p.onRay(r.origin,r.dir,R),p.onRay(d[M],g[M],z/S[M]))),(I==null||R>I.u)&&(I=new Nn(R,p.onRay(r.origin,r.dir,R),p.onRay(d[M],g[M],z/S[M]))))}}return I==null||P==null?null:new Ce(P,I)},ht.mergeTriangleClipIntervals=function(r,i,o,l,c,d){if(i.min.u>r.max.u+rt.EPSILON||r.min.u>i.max.u+rt.EPSILON)return null;var g;r.min.u>i.min.u?g=new ie(r.min,0):g=new ie(i.min,1);var f;r.max.u<i.max.u?f=new ie(r.max,0):f=new ie(i.max,1);var y=new Ce(new Dr(null,null,g.item0.point,l,d),new Dr(null,null,f.item0.point,l,d));return g.item1==0?(y.min.uv0=g.item0.uv,y.min.uv1=ae.triangleUVFromPoint(c,d,g.item0.point)):(y.min.uv0=ae.triangleUVFromPoint(o,l,g.item0.point),y.min.uv1=g.item0.uv),f.item1==0?(y.max.uv0=f.item0.uv,y.max.uv1=ae.triangleUVFromPoint(c,d,f.item0.point)):(y.max.uv0=ae.triangleUVFromPoint(o,l,f.item0.point),y.max.uv1=f.item0.uv),y},ht.planes=function(r,i,o,l){var c=p.cross(i,l);if(p.dot(c,c)<rt.EPSILON)return null;var d=0,g=Math.abs(c[0]),f=Math.abs(c[1]),y=Math.abs(c[2]);f>g&&(d=1,g=f),y>g&&(d=2,g=y);var S,P,I,E;d==0?(S=i[1],P=i[2],I=l[1],E=l[2]):d==1?(S=i[0],P=i[2],I=l[0],E=l[2]):(S=i[0],P=i[1],I=l[0],E=l[1]);var M=-p.dot(r,i),k=-p.dot(o,l),B=S*E-P*I,C=(P*k-M*E)/B,z=(M*I-S*k)/B,R;return d==0?R=[0,C,z]:d==1?R=[C,0,z]:R=[C,z,0],new kn(R,p.normalized(c))},ht.threePlanes=function(r,i,o,l,c,d){var g=p.cross(o,c),f=p.dot(r,g);if(Math.abs(f)<rt.EPSILON)return null;var y=p.sub(p.mul(d,o),p.mul(l,c)),S=p.add(p.mul(i,g),p.cross(r,y));return p.mul(1/f,S)},ht.polylines=function(r,i,o){for(var l=ht.boundingBoxTrees(new mr(r),new mr(i),o),c=[],d=0;d<l.length;){var g=l[d];++d;var f=g.item0,y=g.item1,S=ht.segments(r.points[f],r.points[f+1],i.points[y],i.points[y+1],o);S!=null&&(S.u0=p.lerp(S.u0,[r.params[f]],[r.params[f+1]])[0],S.u1=p.lerp(S.u1,[i.params[y]],[i.params[y+1]])[0],c.push(S))}return c},ht.segments=function(r,i,o,l,c){var d=p.sub(i,r),g=Math.sqrt(p.dot(d,d)),f=p.mul(1/g,d),y=p.sub(l,o),S=Math.sqrt(p.dot(y,y)),P=p.mul(1/S,y),I=ht.rays(r,f,o,P);if(I!=null){var E=Math.min(Math.max(0,I.u0/g),1),M=Math.min(Math.max(0,I.u1/S),1),k=p.onRay(r,d,E),B=p.onRay(o,y,M),C=p.distSquared(k,B);if(C<c*c)return new ln(k,B,E,M)}return null},ht.rays=function(r,i,o,l){var c=p.dot(i,l),d=p.dot(i,o),g=p.dot(i,r),f=p.dot(l,o),y=p.dot(l,r),S=p.dot(i,i),P=p.dot(l,l),I=S*P-c*c;if(Math.abs(I)<rt.EPSILON)return null;var E=c*(d-g)-S*(f-y),M=E/I,k=(d-g+M*c)/S,B=p.onRay(r,i,k),C=p.onRay(o,l,M);return new ln(B,C,k,M)},ht.segmentWithTriangle=function(r,i,o,l){var c=o[l[0]],d=o[l[1]],g=o[l[2]],f=p.sub(d,c),y=p.sub(g,c),S=p.cross(f,y),P=p.sub(i,r),I=p.sub(r,c),E=-p.dot(S,I),M=p.dot(S,P);if(Math.abs(M)<rt.EPSILON)return null;var k=E/M;if(k<0||k>1)return null;var B=p.add(r,p.mul(k,P)),C=p.dot(f,y),z=p.dot(f,f),R=p.dot(y,y),U=p.sub(B,c),j=p.dot(U,f),X=p.dot(U,y),J=C*C-z*R;if(Math.abs(J)<rt.EPSILON)return null;var q=(C*X-R*j)/J,G=(C*j-z*X)/J;return q>1+rt.EPSILON||G>1+rt.EPSILON||G<-rt.EPSILON||q<-rt.EPSILON||q+G>1+rt.EPSILON?null:new ls(B,q,G,k)},ht.segmentAndPlane=function(r,i,o,l){var c=p.dot(l,p.sub(i,r));if(Math.abs(c)<rt.EPSILON)return null;var d=p.dot(l,p.sub(o,r)),g=d/c;return g>1+rt.EPSILON||g<-rt.EPSILON?null:{p:g}};var gt=_.eval.Make=function(){};x["verb.eval.Make"]=gt,gt.__name__=["verb","eval","Make"],gt.rationalTranslationalSurface=function(r,i){for(var o=N.rationalCurvePoint(i,Z.first(i.knots)),l=Z.first(i.knots),c=Z.last(i.knots),d=2*i.controlPoints.length,g=(c-l)/(d-1),f=[],y=0;y<d;){var S=y++,P=p.sub(N.rationalCurvePoint(i,l+S*g),o),I=yt.rationalCurveTransform(r,[[1,0,0,P[0]],[0,1,0,P[1]],[0,0,1,P[2]],[0,0,0,1]]);f.push(I)}return gt.loftedSurface(f)},gt.surfaceBoundaryCurves=function(r){var i=gt.surfaceIsocurve(r,Z.first(r.knotsU),!1),o=gt.surfaceIsocurve(r,Z.last(r.knotsU),!1),l=gt.surfaceIsocurve(r,Z.first(r.knotsV),!0),c=gt.surfaceIsocurve(r,Z.last(r.knotsV),!0);return[i,o,l,c]},gt.surfaceIsocurve=function(r,i,o){o==null&&(o=!1);var l;o?l=r.knotsV:l=r.knotsU;var c;o?c=r.degreeV:c=r.degreeU;for(var d=bt.knotMultiplicities(l),g=-1,f=0,y=d.length;f<y;){var S=f++;if(Math.abs(i-d[S].knot)<rt.EPSILON){g=S;break}}var P=c+1;g>=0&&(P=P-d[g].mult);var I;P>0?I=yt.surfaceKnotRefine(r,p.rep(P,i),o):I=r;var E=N.knotSpan(c,i,l);return Math.abs(i-Z.first(l))<rt.EPSILON?E=0:Math.abs(i-Z.last(l))<rt.EPSILON&&(E=(o?I.controlPoints[0].length:I.controlPoints.length)-1),o?new Dt(I.degreeU,I.knotsU,function(M){for(var k,B=[],C=0,z=I.controlPoints;C<z.length;){var R=z[C];++C,B.push(R[E])}return k=B,k}()):new Dt(I.degreeV,I.knotsV,I.controlPoints[E])},gt.loftedSurface=function(r,i){r=yt.unifyCurveKnotVectors(r);var o=r[0].degree;i==null&&(i=3),i>r.length-1&&(i=r.length-1);for(var l=r[0].knots,c=[],d=[],g=0,f=r[0].controlPoints.length;g<f;){var y=[g++],S=r.map(function(I){return function(E){return E.controlPoints[I[0]]}}(y)),P=gt.rationalInterpCurve(S,i,!0);d.push(P.controlPoints),c=P.knots}return new se(o,i,l,c,d)},gt.clonedCurve=function(r){return new Dt(r.degree,r.knots.slice(),r.controlPoints.map(function(i){return i.slice()}))},gt.rationalBezierCurve=function(r,i){for(var o=r.length-1,l=[],c=0,d=o+1;c<d;)c++,l.push(0);for(var g=0,f=o+1;g<f;)g++,l.push(1);return i==null&&(i=p.rep(r.length,1)),new Dt(o,l,N.homogenize1d(r,i))},gt.fourPointSurface=function(r,i,o,l,c){c==null&&(c=3);for(var d=c,g=[],f=0,y=c+1;f<y;){for(var S=f++,P=[],I=0,E=c+1;I<E;){var M=I++,k=1-S/d,B=p.lerp(k,r,i),C=p.lerp(k,l,o),z=p.lerp(1-M/d,B,C);z.push(1),P.push(z)}g.push(P)}var R=p.rep(c+1,0),U=p.rep(c+1,1);return new se(c,c,R.concat(U),R.concat(U),g)},gt.ellipseArc=function(r,i,o,l,c){var d=p.norm(i),g=p.norm(o);i=p.normalized(i),o=p.normalized(o),c<l&&(c=2*Math.PI+l);var f=c-l,y=0;f<=Math.PI/2?y=1:f<=Math.PI?y=2:f<=3*Math.PI/2?y=3:y=4;var S=f/y,P=Math.cos(S/2),I=p.add(r,p.add(p.mul(d*Math.cos(l),i),p.mul(g*Math.sin(l),o))),E=p.sub(p.mul(Math.cos(l),o),p.mul(Math.sin(l),i)),M=[],k=p.zeros1d(2*y+3),B=0,C=l,z=p.zeros1d(y*2);M[0]=I,z[0]=1;for(var R=1,U=y+1;R<U;){var j=R++;C+=S;var X=p.add(r,p.add(p.mul(d*Math.cos(C),i),p.mul(g*Math.sin(C),o)));z[B+2]=1,M[B+2]=X;var J=p.sub(p.mul(Math.cos(C),o),p.mul(Math.sin(C),i)),q=ht.rays(I,p.mul(1/p.norm(E),E),X,p.mul(1/p.norm(J),J)),G=p.add(I,p.mul(q.u0,E));z[B+1]=P,M[B+1]=G,B+=2,j<y&&(I=X,E=J)}for(var $=2*y+1,tt=0;tt<3;){var et=tt++;k[et]=0,k[et+$]=1}switch(y){case 2:k[3]=k[4]=.5;break;case 3:k[3]=k[4]=.3333333333333333,k[5]=k[6]=.6666666666666666;break;case 4:k[3]=k[4]=.25,k[5]=k[6]=.5,k[7]=k[8]=.75;break}return new Dt(2,k,N.homogenize1d(M,z))},gt.arc=function(r,i,o,l,c,d){return gt.ellipseArc(r,p.mul(l,p.normalized(i)),p.mul(l,p.normalized(o)),c,d)},gt.polyline=function(r){for(var i=[0,0],o=0,l=0,c=r.length-1;l<c;){var d=l++;o+=p.dist(r[d],r[d+1]),i.push(o)}i.push(o),i=p.mul(1/o,i);for(var g,f=[],y=0,S=r.length;y<S;)y++,f.push(1);return g=f,new Dt(1,i,N.homogenize1d(r.slice(0),g))},gt.extrudedSurface=function(r,i,o){for(var l=[[],[],[]],c=[[],[],[]],d=N.dehomogenize1d(o.controlPoints),g=N.weight1d(o.controlPoints),f=p.mul(i,r),y=p.mul(.5*i,r),S=0,P=d.length;S<P;){var I=S++;l[2][I]=d[I],l[1][I]=p.add(y,d[I]),l[0][I]=p.add(f,d[I]),c[0][I]=g[I],c[1][I]=g[I],c[2][I]=g[I]}return new se(2,o.degree,[0,0,0,1,1,1],o.knots,N.homogenize2d(l,c))},gt.cylindricalSurface=function(r,i,o,l,c){var d=p.cross(r,i),g=gt.arc(o,i,d,c,0,2*Math.PI);return gt.extrudedSurface(r,l,g)},gt.revolvedSurface=function(r,i,o,l){var c=N.dehomogenize1d(r.controlPoints),d=N.weight1d(r.controlPoints),g,f;l<=Math.PI/2?(g=1,f=p.zeros1d(6+2*(g-1))):l<=Math.PI?(g=2,f=p.zeros1d(6+2*(g-1)),f[3]=f[4]=.5):l<=3*Math.PI/2?(g=3,f=p.zeros1d(6+2*(g-1)),f[3]=f[4]=.3333333333333333,f[5]=f[6]=.6666666666666666):(g=4,f=p.zeros1d(6+2*(g-1)),f[3]=f[4]=.25,f[5]=f[6]=.5,f[7]=f[8]=.75);for(var y=l/g,S=3+2*(g-1),P=0;P<3;){var I=P++;f[I]=0,f[S+I]=1}for(var E=Math.cos(y/2),M=0,k=p.zeros1d(g+1),B=p.zeros1d(g+1),C=p.zeros3d(2*g+1,c.length,3),z=p.zeros2d(2*g+1,c.length),R=1,U=g+1;R<U;){var j=R++;M+=y,B[j]=Math.cos(M),k[j]=Math.sin(M)}for(var X=0,J=c.length;X<J;){var q=X++,G=Ve.rayClosestPoint(c[q],i,o),$=p.sub(c[q],G),tt=p.norm($),et=p.cross(o,$);tt>rt.EPSILON&&($=p.mul(1/tt,$),et=p.mul(1/tt,et)),C[0][q]=c[q];var ot=c[q];z[0][q]=d[q];for(var ut=et,lt=0,pt=1,nt=g+1;pt<nt;){var mt=pt++,K;tt==0?K=G:K=p.add(G,p.add(p.mul(tt*B[mt],$),p.mul(tt*k[mt],et))),C[lt+2][q]=K,z[lt+2][q]=d[q];var _t=p.sub(p.mul(B[mt],et),p.mul(k[mt],$));if(tt==0)C[lt+1][q]=G;else{var Et=ht.rays(ot,p.mul(1/p.norm(ut),ut),K,p.mul(1/p.norm(_t),_t)),Ht=p.add(ot,p.mul(Et.u0,ut));C[lt+1][q]=Ht}z[lt+1][q]=E*d[q],lt+=2,mt<g&&(ot=K,ut=_t)}}return new se(2,r.degree,f,r.knots,N.homogenize2d(C,z))},gt.sphericalSurface=function(r,i,o,l){var c=gt.arc(r,p.mul(-1,i),o,l,0,Math.PI);return gt.revolvedSurface(c,r,i,2*Math.PI)},gt.conicalSurface=function(r,i,o,l,c){var d=2*Math.PI,g=1,f=[p.add(o,p.mul(l,r)),p.add(o,p.mul(c,i))],y=[0,0,1,1],S=[1,1],P=new Dt(g,y,N.homogenize1d(f,S));return gt.revolvedSurface(P,o,r,d)},gt.rationalInterpCurve=function(r,i,o,l,c){if(o==null&&(o=!1),i==null&&(i=3),r.length<i+1)throw new Q("You need to supply at least degree + 1 points! You only supplied "+r.length+" points.");for(var d=[0],g=1,f=r.length;g<f;){var y=g++,S=p.norm(p.sub(r[y],r[y-1])),P=d[d.length-1];d.push(P+S)}for(var I=d[d.length-1],E=0,M=d.length;E<M;){var k=E++;d[k]=d[k]/I}var B=p.rep(i+1,0),C=l!=null&&c!=null,z;C?z=0:z=1;var R;C?R=d.length-i+1:R=d.length-i;for(var U=z;U<R;){for(var j=U++,X=0,J=0;J<i;){var q=J++;X+=d[j+q]}B.push(1/i*X)}var G=B.concat(p.rep(i+1,1)),$=[],tt;C?tt=r.length+1:tt=r.length-1;var et;C?et=r.length-(i-1):et=r.length-(i+1);for(var ot=0;ot<d.length;){var ut=d[ot];++ot;var lt=N.knotSpanGivenN(tt,i,ut,G),pt=N.basisFunctionsGivenKnotSpanIndex(lt,ut,i,G),nt=lt-i,mt=p.zeros1d(nt),K=p.zeros1d(et-nt);$.push(mt.concat(pt).concat(K))}if(C){var _t=$[0].length-2,Et=[-1,1].concat(p.zeros1d(_t)),Ht=p.zeros1d(_t).concat([-1,1]);Z.spliceAndInsert($,1,0,Et),Z.spliceAndInsert($,$.length-1,0,Ht)}for(var Zt=r[0].length,jt=[],Jt=(1-G[G.length-i-2])/i,Oe=G[i+1]/i,Je=0;Je<Zt;){var Pe=[Je++],xe;if(!C)xe=r.map(function(ar){return function(wr){return wr[ar[0]]}}(Pe));else{xe=[r[0][Pe[0]]],xe.push(Oe*l[Pe[0]]);for(var Be=1,je=r.length-1;Be<je;){var nr=Be++;xe.push(r[nr][Pe[0]])}xe.push(Jt*c[Pe[0]]),xe.push(Z.last(r)[Pe[0]])}var gr=Ot.solve($,xe);jt.push(gr)}var sr=Ot.transpose(jt);if(!o){var ir=p.rep(sr.length,1);sr=N.homogenize1d(sr,ir)}return new Dt(i,G,sr)};var yt=_.eval.Modify=function(){};x["verb.eval.Modify"]=yt,yt.__name__=["verb","eval","Modify"],yt.curveReverse=function(r){return new Dt(r.degree,yt.knotsReverse(r.knots),Z.reversed(r.controlPoints))},yt.surfaceReverse=function(r,i){return i==null&&(i=!1),i?new se(r.degreeU,r.degreeV,r.knotsU,yt.knotsReverse(r.knotsV),function(o){for(var l,c=[],d=0,g=r.controlPoints;d<g.length;){var f=g[d];++d,c.push(Z.reversed(f))}return l=c,l}()):new se(r.degreeU,r.degreeV,yt.knotsReverse(r.knotsU),r.knotsV,Z.reversed(r.controlPoints))},yt.knotsReverse=function(r){var i=Z.first(r);Z.last(r);for(var o=[i],l=r.length,c=1;c<l;){var d=c++;o.push(o[d-1]+(r[l-d]-r[l-d-1]))}return o},yt.unifyCurveKnotVectors=function(r){r=r.map(gt.clonedCurve);for(var i=O.fold(r,function(G,$){return yt.imax(G.degree,$)},0),o=0,l=r.length;o<l;){var c=o++;r[c].degree<i&&(r[c]=yt.curveElevateDegree(r[c],i))}for(var d,g=[],f=0;f<r.length;){var y=r[f];++f,g.push(new Ce(Z.first(y.knots),Z.last(y.knots)))}d=g;for(var S=0,P=r.length;S<P;){var I=S++,E=[d[I].min];r[I].knots=r[I].knots.map(function(G){return function($){return $-G[0]}}(E))}for(var M=d.map(function(G){return G.max-G.min}),k=O.fold(M,function(G,$){return Math.max(G,$)},0),B=0,C=r.length;B<C;){var z=B++,R=[k/M[z]];r[z].knots=r[z].knots.map(function(G){return function($){return $*G[0]}}(R))}for(var U=O.fold(r,function(G,$){return p.sortedSetUnion(G.knots,$)},[]),j=0,X=r.length;j<X;){var J=j++,q=p.sortedSetSub(U,r[J].knots);q.length==0&&(r[J]=r[J]),r[J]=yt.curveKnotRefine(r[J],q)}return r},yt.imin=function(r,i){return r<i?r:i},yt.imax=function(r,i){return r>i?r:i},yt.curveElevateDegree=function(r,i){if(i<=r.degree)return r;var o=r.knots.length-r.degree-2,l=r.degree,c=r.knots,d=r.controlPoints,g=i-r.degree,f=r.controlPoints[0].length,y=p.zeros2d(l+g+1,l+1),S=[],P=[],I=[],E=o+l+1,M=i,k=Math.floor(M/2),B=[],C=[];y[0][0]=1,y[M][l]=1;for(var z=1,R=k+1;z<R;)for(var U=z++,j=1/Vt.get(M,U),X=yt.imin(l,U),J=yt.imax(0,U-g),q=X+1;J<q;){var G=J++;y[U][G]=j*Vt.get(l,G)*Vt.get(g,U-G)}for(var $=k+1;$<M;)for(var tt=$++,et=yt.imin(l,tt),ot=yt.imax(0,tt-g),ut=et+1;ot<ut;){var lt=ot++;y[tt][lt]=y[M-tt][l-lt]}var pt=M+1,nt=-1,mt=l,K=l+1,_t=1,Et=c[0];B[0]=d[0];for(var Ht=0,Zt=M+1;Ht<Zt;){var jt=Ht++;C[jt]=Et}for(var Jt=0,Oe=l+1;Jt<Oe;){var Je=Jt++;S[Je]=d[Je]}for(;K<E;){for(var Pe=K;K<E&&c[K]==c[K+1];)K=K+1;var xe=K-Pe+1,Be=c[K],je=nt;nt=l-xe;var nr;je>0?nr=Math.floor((je+2)/2):nr=1;var gr;if(nt>0?gr=Math.floor(M-(nt+1)/2):gr=M,nt>0){for(var sr=Be-Et,ir=[],ar=l;ar>xe;)ir[ar-xe-1]=sr/(c[mt+ar]-Et),ar--;for(var wr=1,Vn=nt+1;wr<Vn;){for(var un=wr++,Sc=nt-un,ha=xe+un,cn=l;cn>=ha;)S[cn]=p.add(p.mul(ir[cn-ha],S[cn]),p.mul(1-ir[cn-ha],S[cn-1])),cn--;I[Sc]=S[l]}}for(var el=nr,Ic=M+1;el<Ic;){var Un=el++;P[Un]=p.zeros1d(f);for(var Pc=yt.imin(l,Un),rl=yt.imax(0,Un-g),Ac=Pc+1;rl<Ac;){var nl=rl++;P[Un]=p.add(P[Un],p.mul(y[Un][nl],S[nl]))}}if(je>1)for(var ua=pt-2,ca=pt,sl=Be-Et,Ec=(Be-C[pt-1])/sl,il=1;il<je;){for(var da=il++,Sr=ua,dn=ca,Qr=dn-pt+1;dn-Sr>da;){if(Sr<_t){var Tc=(Be-C[Sr])/(Et-C[Sr]);B[Sr]=p.lerp(Tc,B[Sr],B[Sr-1])}if(dn>=nr){if(dn-da<=pt-M+je){var Mc=(Be-C[dn-da])/sl;P[Qr]=p.lerp(Mc,P[Qr],P[Qr+1])}}else P[Qr]=p.lerp(Ec,P[Qr],P[Qr+1]);Sr=Sr+1,dn=dn-1,Qr=Qr-1}ua=ua-1,ca=ca+1}if(mt!=l)for(var al=0,kc=M-je;al<kc;)al++,C[pt]=Et,pt=pt+1;for(var ol=nr,Nc=gr+1;ol<Nc;){var Lc=ol++;B[_t]=P[Lc],_t=_t+1}if(K<E){for(var ll=0;ll<nt;){var hl=ll++;S[hl]=I[hl]}for(var ul=nt,Cc=l+1;ul<Cc;){var cl=ul++;S[cl]=d[K-l+cl]}mt=K,K=K+1,Et=Be}else for(var dl=0,Oc=M+1;dl<Oc;){var Bc=dl++;C[pt+Bc]=Be}}return new Dt(i,C,B)},yt.rationalSurfaceTransform=function(r,i){for(var o=N.dehomogenize2d(r.controlPoints),l=0,c=o.length;l<c;)for(var d=l++,g=0,f=o[d].length;g<f;){var y=g++,S=o[d][y];S.push(1),o[d][y]=Ot.dot(i,S).slice(0,S.length-1)}return new se(r.degreeU,r.degreeV,r.knotsU.slice(),r.knotsV.slice(),N.homogenize2d(o,N.weight2d(r.controlPoints)))},yt.rationalCurveTransform=function(r,i){for(var o=N.dehomogenize1d(r.controlPoints),l=0,c=o.length;l<c;){var d=l++,g=o[d];g.push(1),o[d]=Ot.dot(i,g).slice(0,g.length-1)}return new Dt(r.degree,r.knots.slice(),N.homogenize1d(o,N.weight1d(r.controlPoints)))},yt.surfaceKnotRefine=function(r,i,o){var l=[],c,d,g;o?(g=r.controlPoints,c=r.knotsV,d=r.degreeV):(g=Ot.transpose(r.controlPoints),c=r.knotsU,d=r.degreeU);for(var f=null,y=0;y<g.length;){var S=g[y];++y,f=yt.curveKnotRefine(new Dt(d,c,S),i),l.push(f.controlPoints)}var P=f.knots;return o?new se(r.degreeU,r.degreeV,r.knotsU.slice(),P,l):(l=Ot.transpose(l),new se(r.degreeU,r.degreeV,P,r.knotsV.slice(),l))},yt.decomposeCurveIntoBeziers=function(r){for(var i=r.degree,o=r.controlPoints,l=r.knots,c=bt.knotMultiplicities(l),d=i+1,g=0;g<c.length;){var f=c[g];if(++g,f.mult<d){var y=p.rep(d-f.mult,f.knot),S=yt.curveKnotRefine(new Dt(i,l,o),y);l=S.knots,o=S.controlPoints}}l.length/d-1;for(var P=d*2,I=[],E=0;E<o.length;){var M=l.slice(E,E+P),k=o.slice(E,E+d);I.push(new Dt(i,M,k)),E+=d}return I},yt.curveKnotRefine=function(r,i){if(i.length==0)return gt.clonedCurve(r);for(var o=r.degree,l=r.controlPoints,c=r.knots,d=l.length-1,g=d+o+1,f=i.length-1,y=N.knotSpan(o,i[0],c),S=N.knotSpan(o,i[f],c),P=[],I=[],E=0,M=y-o+1;E<M;){var k=E++;P[k]=l[k]}for(var B=S-1,C=d+1;B<C;){var z=B++;P[z+f+1]=l[z]}for(var R=0,U=y+1;R<U;){var j=R++;I[j]=c[j]}for(var X=S+o,J=g+1;X<J;){var q=X++;I[q+f+1]=c[q]}for(var G=S+o-1,$=S+o+f,tt=f;tt>=0;){for(;i[tt]<=c[G]&&G>y;)P[$-o-1]=l[G-o-1],I[$]=c[G],$=$-1,G=G-1;P[$-o-1]=P[$-o];for(var et=1,ot=o+1;et<ot;){var ut=et++,lt=$-o+ut,pt=I[$+ut]-i[tt];Math.abs(pt)<rt.EPSILON?P[lt-1]=P[lt]:(pt=pt/(I[$+ut]-c[G-o+ut]),P[lt-1]=p.add(p.mul(pt,P[lt-1]),p.mul(1-pt,P[lt])))}I[$]=i[tt],$=$-1,tt--}return new Dt(o,I,P)},yt.curveKnotInsert=function(r,i,o){for(var l=r.degree,c=r.controlPoints,d=r.knots,g=0,f=c.length,y=N.knotSpan(l,i,d),S=[],P=[],I=[],E=1,M=y+1;E<M;){var k=E++;P[k]=d[k]}for(var B=1,C=o+1;B<C;){var z=B++;P[y+z]=i}for(var R=y+1,U=d.length;R<U;){var j=R++;P[j+o]=d[j]}for(var X=0,J=y-l+1;X<J;){var q=X++;I[q]=c[q]}for(var G=y-g;G<f;){var $=G++;I[$+o]=c[$]}for(var tt=0,et=l-g+1;tt<et;){var ot=tt++;S[ot]=c[y-l+ot]}for(var ut=0,lt=0,pt=1,nt=o+1;pt<nt;){var mt=pt++;ut=y-l+mt;for(var K=0,_t=l-mt-g+1;K<_t;){var Et=K++;lt=(i-d[ut+Et])/(d[Et+y+1]-d[ut+Et]),S[Et]=p.add(p.mul(lt,S[Et+1]),p.mul(1-lt,S[Et]))}I[ut]=S[0],I[y+o-mt-g]=S[l-mt-g]}for(var Ht=ut+1,Zt=y-g;Ht<Zt;){var jt=Ht++;I[jt]=S[jt-ut]}return new Dt(l,P,I)};var Rt=_.eval.Tess=function(){};x["verb.eval.Tess"]=Rt,Rt.__name__=["verb","eval","Tess"],Rt.rationalCurveRegularSample=function(r,i,o){return Rt.rationalCurveRegularSampleRange(r,r.knots[0],Z.last(r.knots),i,o)},Rt.rationalCurveRegularSampleRange=function(r,i,o,l,c){l<1&&(l=2);for(var d=[],g=(o-i)/(l-1),f=0,y=0;y<l;){var S=y++;f=i+g*S,c?d.push([f].concat(N.rationalCurvePoint(r,f))):d.push(N.rationalCurvePoint(r,f))}return d},Rt.rationalCurveAdaptiveSample=function(r,i,o){if(o==null&&(o=!1),i==null&&(i=1e-6),r.degree==1)if(o){for(var l=[],c=0,d=r.controlPoints.length;c<d;){var g=c++;l.push([r.knots[g+1]].concat(N.dehomogenize(r.controlPoints[g])))}return l}else return r.controlPoints.map(N.dehomogenize);return Rt.rationalCurveAdaptiveSampleRange(r,r.knots[0],Z.last(r.knots),i,o)},Rt.rationalCurveAdaptiveSampleRange=function(r,i,o,l,c){var d=N.rationalCurvePoint(r,i),g=N.rationalCurvePoint(r,o),f=.5+.2*Math.random(),y=i+(o-i)*f,S=N.rationalCurvePoint(r,y),P=p.sub(d,g),I=p.sub(d,S);if(p.dot(P,P)<l&&p.dot(I,I)>l||!Ve.threePointsAreFlat(d,S,g,l)){var E=i+(o-i)*.5,M=Rt.rationalCurveAdaptiveSampleRange(r,i,E,l,c),k=Rt.rationalCurveAdaptiveSampleRange(r,E,o,l,c);return M.slice(0,-1).concat(k)}else return c?[[i].concat(d),[o].concat(g)]:[d,g]},Rt.rationalSurfaceNaive=function(r,i,o){i<1&&(i=1),o<1&&(o=1),r.degreeU,r.degreeV,r.controlPoints;for(var l=r.knotsU,c=r.knotsV,d=Z.last(l)-l[0],g=Z.last(c)-c[0],f=d/i,y=g/o,S=[],P=[],I=[],E=0,M=i+1;E<M;)for(var k=E++,B=0,C=o+1;B<C;){var z=B++,R=k*f,U=z*y;P.push([R,U]);var j=N.rationalSurfaceDerivatives(r,R,U,1),X=j[0][0];S.push(X);var J=p.normalized(p.cross(j[1][0],j[0][1]));I.push(J)}for(var q=[],G=0;G<i;)for(var $=G++,tt=0;tt<o;){var et=tt++,ot=$*(o+1)+et,ut=($+1)*(o+1)+et,lt=ut+1,pt=ot+1,nt=[ot,ut,lt],mt=[ot,lt,pt];q.push(nt),q.push(mt)}return new tr(q,S,I,P)},Rt.divideRationalSurfaceAdaptive=function(r,i){i==null&&(i=new Xr),i.minDivsU!=null?i.minDivsU=i.minDivsU:i.minDivsU=1,i.minDivsV!=null?i.minDivsU=i.minDivsV:i.minDivsU=1,i.refine!=null?i.refine=i.refine:i.refine=!0;var o=(r.controlPoints.length-1)*2,l=(r.controlPoints[0].length-1)*2,c;i.minDivsU>o?c=i.minDivsU=i.minDivsU:c=i.minDivsU=o;var d;i.minDivsV>l?d=i.minDivsV=i.minDivsV:d=i.minDivsV=l;for(var g=Z.last(r.knotsU),f=r.knotsU[0],y=Z.last(r.knotsV),S=r.knotsV[0],P=(g-f)/c,I=(y-S)/d,E=[],M=[],k=0,B=d+1;k<B;){for(var C=k++,z=[],R=0,U=c+1;R<U;){var j=R++,X=f+P*j,J=S+I*C,q=N.rationalSurfaceDerivatives(r,X,J,1),G=p.normalized(p.cross(q[0][1],q[1][0]));z.push(new Ze(q[0][0],G,[X,J],-1,p.isZero(G)))}M.push(z)}for(var $=0;$<d;)for(var tt=$++,et=0;et<c;){var ot=et++,ut=[M[d-tt-1][ot],M[d-tt-1][ot+1],M[d-tt][ot+1],M[d-tt][ot]];E.push(new xr(r,ut))}if(!i.refine)return E;for(var lt=0;lt<d;)for(var pt=lt++,nt=0;nt<c;){var mt=nt++,K=pt*c+mt,_t=Rt.north(K,pt,mt,c,d,E),Et=Rt.east(K,pt,mt,c,d,E),Ht=Rt.south(K,pt,mt,c,d,E),Zt=Rt.west(K,pt,mt,c,d,E);E[K].neighbors=[Ht,Et,_t,Zt],E[K].divide(i)}return E},Rt.north=function(r,i,o,l,c,d){return i==0?null:d[r-l]},Rt.south=function(r,i,o,l,c,d){return i==c-1?null:d[r+l]},Rt.east=function(r,i,o,l,c,d){return o==l-1?null:d[r+1]},Rt.west=function(r,i,o,l,c,d){return o==0?null:d[r-1]},Rt.triangulateAdaptiveRefinementNodeTree=function(r){for(var i=tr.empty(),o=0;o<r.length;){var l=r[o];++o,l.triangulate(i)}return i},Rt.rationalSurfaceAdaptive=function(r,i){i!=null?i=i:i=new Xr;var o=Rt.divideRationalSurfaceAdaptive(r,i);return Rt.triangulateAdaptiveRefinementNodeTree(o)};var Xr=_.core.AdaptiveRefinementOptions=function(){this.minDivsV=1,this.minDivsU=1,this.refine=!0,this.maxDepth=10,this.minDepth=0,this.normTol=.025};x["verb.eval.AdaptiveRefinementOptions"]=Xr,Xr.__name__=["verb","eval","AdaptiveRefinementOptions"],Xr.prototype={__class__:Xr};var xr=_.core.AdaptiveRefinementNode=function(r,i,o){if(this.srf=r,o==null?this.neighbors=[null,null,null,null]:this.neighbors=o,this.corners=i,this.corners==null){var l=r.knotsU[0],c=Z.last(r.knotsU),d=r.knotsV[0],g=Z.last(r.knotsV);this.corners=[Ze.fromUv(l,d),Ze.fromUv(c,d),Ze.fromUv(c,g),Ze.fromUv(l,g)]}};x["verb.eval.AdaptiveRefinementNode"]=xr,xr.__name__=["verb","eval","AdaptiveRefinementNode"],xr.prototype={isLeaf:function(){return this.children==null},center:function(){return this.centerPoint!=null?this.centerPoint:this.evalSrf(this.u05,this.v05)},evalCorners:function(){this.u05=(this.corners[0].uv[0]+this.corners[2].uv[0])/2,this.v05=(this.corners[0].uv[1]+this.corners[2].uv[1])/2;for(var r=0;r<4;){var i=r++;if(this.corners[i].point==null){var o=this.corners[i];this.evalSrf(o.uv[0],o.uv[1],o)}}},evalSrf:function(r,i,o){var l=N.rationalSurfaceDerivatives(this.srf,r,i,1),c=l[0][0],d=p.cross(l[0][1],l[1][0]),g=p.isZero(d);return g||(d=p.normalized(d)),o!=null?(o.degen=g,o.point=c,o.normal=d,o):new Ze(c,d,[r,i],-1,g)},getEdgeCorners:function(r){if(this.isLeaf())return[this.corners[r]];if(this.horizontal)switch(r){case 0:return this.children[0].getEdgeCorners(0);case 1:return this.children[0].getEdgeCorners(1).concat(this.children[1].getEdgeCorners(1));case 2:return this.children[1].getEdgeCorners(2);case 3:return this.children[1].getEdgeCorners(3).concat(this.children[0].getEdgeCorners(3))}switch(r){case 0:return this.children[0].getEdgeCorners(0).concat(this.children[1].getEdgeCorners(0));case 1:return this.children[1].getEdgeCorners(1);case 2:return this.children[1].getEdgeCorners(2).concat(this.children[0].getEdgeCorners(2));case 3:return this.children[0].getEdgeCorners(3)}return null},getAllCorners:function(r){var i=[this.corners[r]];if(this.neighbors[r]==null)return i;var o=this.neighbors[r].getEdgeCorners((r+2)%4),l=r%2,c=rt.EPSILON,d=this,g=[function(y){return y.uv[0]>d.corners[0].uv[0]+c&&y.uv[0]<d.corners[2].uv[0]-c},function(y){return y.uv[1]>d.corners[0].uv[1]+c&&y.uv[1]<d.corners[2].uv[1]-c}],f=o.filter(g[l]);return f.reverse(),i.concat(f)},midpoint:function(r){if(this.midPoints==null&&(this.midPoints=[null,null,null,null]),this.midPoints[r]!=null)return this.midPoints[r];switch(r){case 0:this.midPoints[0]=this.evalSrf(this.u05,this.corners[0].uv[1]);break;case 1:this.midPoints[1]=this.evalSrf(this.corners[1].uv[0],this.v05);break;case 2:this.midPoints[2]=this.evalSrf(this.u05,this.corners[2].uv[1]);break;case 3:this.midPoints[3]=this.evalSrf(this.corners[0].uv[0],this.v05);break}return this.midPoints[r]},hasBadNormals:function(){return this.corners[0].degen||this.corners[1].degen||this.corners[2].degen||this.corners[3].degen},fixNormals:function(){for(var r=this.corners.length,i=0;i<r;){var o=i++;if(this.corners[o],this.corners[o].degen){var l=this.corners[(o+1)%r],c=this.corners[(o+3)%r];l.degen?this.corners[o].normal=c.normal:this.corners[o].normal=l.normal}}},shouldDivide:function(r,i){if(i<r.minDepth)return!0;if(i>=r.maxDepth)return!1;if(this.hasBadNormals())return this.fixNormals(),!1;if(this.splitVert=p.normSquared(p.sub(this.corners[0].normal,this.corners[1].normal))>r.normTol||p.normSquared(p.sub(this.corners[2].normal,this.corners[3].normal))>r.normTol,this.splitHoriz=p.normSquared(p.sub(this.corners[1].normal,this.corners[2].normal))>r.normTol||p.normSquared(p.sub(this.corners[3].normal,this.corners[0].normal))>r.normTol,this.splitVert||this.splitHoriz)return!0;var o=this.center();return p.normSquared(p.sub(o.normal,this.corners[0].normal))>r.normTol||p.normSquared(p.sub(o.normal,this.corners[1].normal))>r.normTol||p.normSquared(p.sub(o.normal,this.corners[2].normal))>r.normTol||p.normSquared(p.sub(o.normal,this.corners[3].normal))>r.normTol},divide:function(r){r==null&&(r=new Xr),r.normTol==null&&(r.normTol=.085),r.minDepth==null&&(r.minDepth=0),r.maxDepth==null&&(r.maxDepth=10),this._divide(r,0,!0)},_divide:function(r,i,o){if(this.evalCorners(),!!this.shouldDivide(r,i)){if(i++,this.splitVert&&!this.splitHoriz?o=!1:!this.splitVert&&this.splitHoriz&&(o=!0),this.horizontal=o,this.horizontal){var l=[this.corners[0],this.corners[1],this.midpoint(1),this.midpoint(3)],c=[this.midpoint(3),this.midpoint(1),this.corners[2],this.corners[3]];this.children=[new xr(this.srf,l),new xr(this.srf,c)],this.children[0].neighbors=[this.neighbors[0],this.neighbors[1],this.children[1],this.neighbors[3]],this.children[1].neighbors=[this.children[0],this.neighbors[1],this.neighbors[2],this.neighbors[3]]}else{var d=[this.corners[0],this.midpoint(0),this.midpoint(2),this.corners[3]],g=[this.midpoint(0),this.corners[1],this.corners[2],this.midpoint(2)];this.children=[new xr(this.srf,d),new xr(this.srf,g)],this.children[0].neighbors=[this.neighbors[0],this.children[1],this.neighbors[2],this.neighbors[3]],this.children[1].neighbors=[this.neighbors[0],this.neighbors[1],this.neighbors[2],this.children[0]]}for(var f=0,y=this.children;f<y.length;){var S=y[f];++f,S._divide(r,i,!o)}}},triangulate:function(r){if(r==null&&(r=tr.empty()),this.isLeaf())return this.triangulateLeaf(r);for(var i=0,o=this.children;i<o.length;){var l=o[i];if(++i,l==null)break;l.triangulate(r)}return r},triangulateLeaf:function(r){for(var i=r.points.length,o=[],l=[],c=0,d=0;d<4;){var g=d++,f=this.getAllCorners(g);f.length==2&&(c=g+1);for(var y=0,S=f.length;y<S;){var P=y++;o.push(f[P])}}for(var I=0;I<o.length;){var E=o[I];if(++I,E.id!=-1){l.push(E.id);continue}r.uvs.push(E.uv),r.points.push(E.point),r.normals.push(E.normal),E.id=i,l.push(i),i++}if(o.length==4)return r.faces.push([l[0],l[3],l[1]]),r.faces.push([l[3],l[2],l[1]]),r;if(o.length==5){var M=l.length;return r.faces.push([l[c],l[(c+2)%M],l[(c+1)%M]]),r.faces.push([l[(c+4)%M],l[(c+3)%M],l[c]]),r.faces.push([l[c],l[(c+3)%M],l[(c+2)%M]]),r}var k=this.center();r.uvs.push(k.uv),r.points.push(k.point),r.normals.push(k.normal);for(var B=r.points.length-1,C=0,z=o.length-1;C<o.length;)r.faces.push([B,l[C],l[z]]),z=C++;return r},__class__:xr};var St=_.exe.Dispatcher=function(){};x["verb.exe.Dispatcher"]=St,St.__name__=["verb","exe","Dispatcher"],St.init=function(){St._init||(St._workerPool=new Yr(St.THREADS),St._init=!0)},St.dispatchMethod=function(r,i,o){St.init();var l=new Tn,c=function(d){l.resolve(d)};return St._workerPool.addWork(dt.getClassName(r),i,o,c),new be(l)};var Yr=_.exe.WorkerPool=function(r,i){i==null&&(i="verb.js"),r==null&&(r=1),this._callbacks=new wt,this._working=new wt,this._pool=[],this._queue=[];for(var o=0;o<r;){o++;var l;try{l=new Worker(Yr.basePath+i)}catch(c){c instanceof Q&&(c=c.val),l=new Worker(Yr.basePath+i.substring(0,-3)+".min.js")}this._pool.push(l)}};x["verb.exe.WorkerPool"]=Yr,Yr.__name__=["verb","exe","WorkerPool"],Yr.prototype={addWork:function(r,i,o,l){var c=new hn(r,i,o);this._callbacks.set(c.id,l),this._queue.push(c),this.processQueue()},processQueue:function(){for(var r=this;this._queue.length>0&&this._pool.length>0;){var i=this._queue.shift(),o=[i.id],l=[this._pool.shift()];this._working.h[o[0]]=l[0],l[0].onmessage=function(c,d){return function(g){r._working.remove(d[0]),r._pool.push(c[0]);try{r._callbacks.h.hasOwnProperty(d[0])&&(r._callbacks.h[d[0]](g.data.result),r._callbacks.remove(d[0]))}catch(f){f instanceof Q&&(f=f.val),b.log(f)}r.processQueue()}}(l,o),l[0].postMessage(i)}},__class__:Yr};var hn=function(r,i,o){this.className=r,this.methodName=i,this.args=o,this.id=hn.uuid++};x["verb.exe._WorkerPool.Work"]=hn,hn.__name__=["verb","exe","_WorkerPool","Work"],hn.prototype={__class__:hn};var zn=function(){};x["verb.geom.ICurve"]=zn,zn.__name__=["verb","geom","ICurve"],zn.__interfaces__=[On],zn.prototype={__class__:zn};var Ct=_.geom.NurbsCurve=function(r){this._data=Qe.isValidNurbsCurveData(r)};x["verb.geom.NurbsCurve"]=Ct,Ct.__name__=["verb","geom","NurbsCurve"],Ct.__interfaces__=[zn],Ct.byKnotsControlPointsWeights=function(r,i,o,l){return new Ct(new Dt(r,i.slice(),N.homogenize1d(o,l)))},Ct.byPoints=function(r,i){return i==null&&(i=3),new Ct(gt.rationalInterpCurve(r,i))},Ct.__super__=ee,Ct.prototype=T(ee.prototype,{degree:function(){return this._data.degree},knots:function(){return this._data.knots.slice(0)},controlPoints:function(){return N.dehomogenize1d(this._data.controlPoints)},weights:function(){return N.weight1d(this._data.controlPoints)},asNurbs:function(){return new Dt(this.degree(),this.knots(),N.homogenize1d(this.controlPoints(),this.weights()))},clone:function(){return new Ct(this._data)},domain:function(){return new Ce(Z.first(this._data.knots),Z.last(this._data.knots))},transform:function(r){return new Ct(yt.rationalCurveTransform(this._data,r))},transformAsync:function(r){return St.dispatchMethod(yt,"rationalCurveTransform",[this._data,r]).then(function(i){return new Ct(i)})},point:function(r){return N.rationalCurvePoint(this._data,r)},pointAsync:function(r){return St.dispatchMethod(N,"rationalCurvePoint",[this._data,r])},tangent:function(r){return N.rationalCurveTangent(this._data,r)},tangentAsync:function(r){return St.dispatchMethod(N,"rationalCurveTangent",[this._data,r])},derivatives:function(r,i){return i==null&&(i=1),N.rationalCurveDerivatives(this._data,r,i)},derivativesAsync:function(r,i){return i==null&&(i=1),St.dispatchMethod(N,"rationalCurveDerivatives",[this._data,r,i])},closestPoint:function(r){return bt.rationalCurveClosestPoint(this._data,r)},closestPointAsync:function(r){return St.dispatchMethod(bt,"rationalCurveClosestPoint",[this._data,r])},closestParam:function(r){return bt.rationalCurveClosestParam(this._data,r)},closestParamAsync:function(r){return St.dispatchMethod(bt,"rationalCurveClosestParam",[this._data,r])},length:function(){return bt.rationalCurveArcLength(this._data)},lengthAsync:function(){return St.dispatchMethod(bt,"rationalCurveArcLength",[this._data])},lengthAtParam:function(r){return bt.rationalCurveArcLength(this._data,r)},lengthAtParamAsync:function(){return St.dispatchMethod(bt,"rationalCurveArcLength",[this._data])},paramAtLength:function(r,i){return bt.rationalCurveParamAtArcLength(this._data,r,i)},paramAtLengthAsync:function(r,i){return St.dispatchMethod(bt,"rationalCurveParamAtArcLength",[this._data,r,i])},divideByEqualArcLength:function(r){return pe.rationalCurveByEqualArcLength(this._data,r)},divideByEqualArcLengthAsync:function(r){return St.dispatchMethod(pe,"rationalCurveByEqualArcLength",[this._data,r])},divideByArcLength:function(r){return pe.rationalCurveByArcLength(this._data,r)},divideByArcLengthAsync:function(r){return St.dispatchMethod(pe,"rationalCurveByArcLength",[this._data,r])},split:function(r){return pe.curveSplit(this._data,r).map(function(i){return new Ct(i)})},splitAsync:function(r){return St.dispatchMethod(pe,"curveSplit",[this._data,r]).then(function(i){return i.map(function(o){return new Ct(o)})})},reverse:function(){return new Ct(yt.curveReverse(this._data))},reverseAsync:function(){return St.dispatchMethod(yt,"curveReverse",[this._data]).then(function(r){return new Ct(r)})},tessellate:function(r){return Rt.rationalCurveAdaptiveSample(this._data,r,!1)},tessellateAsync:function(r){return St.dispatchMethod(Rt,"rationalCurveAdaptiveSample",[this._data,r,!1])},__class__:Ct});var Kr=_.geom.Arc=function(r,i,o,l,c,d){Ct.call(this,gt.arc(r,i,o,l,c,d)),this._center=r,this._xaxis=i,this._yaxis=o,this._radius=l,this._minAngle=c,this._maxAngle=d};x["verb.geom.Arc"]=Kr,Kr.__name__=["verb","geom","Arc"],Kr.__super__=Ct,Kr.prototype=T(Ct.prototype,{center:function(){return this._center},xaxis:function(){return this._xaxis},yaxis:function(){return this._yaxis},radius:function(){return this._radius},minAngle:function(){return this._minAngle},maxAngle:function(){return this._maxAngle},__class__:Kr});var ps=_.geom.BezierCurve=function(r,i){Ct.call(this,gt.rationalBezierCurve(r,i))};x["verb.geom.BezierCurve"]=ps,ps.__name__=["verb","geom","BezierCurve"],ps.__super__=Ct,ps.prototype=T(Ct.prototype,{__class__:ps});var ms=_.geom.Circle=function(r,i,o,l){Kr.call(this,r,i,o,l,0,Math.PI*2)};x["verb.geom.Circle"]=ms,ms.__name__=["verb","geom","Circle"],ms.__super__=Kr,ms.prototype=T(Kr.prototype,{__class__:ms});var Fn=function(){};x["verb.geom.ISurface"]=Fn,Fn.__name__=["verb","geom","ISurface"],Fn.__interfaces__=[On],Fn.prototype={__class__:Fn};var Tt=_.geom.NurbsSurface=function(r){this._data=Qe.isValidNurbsSurfaceData(r)};x["verb.geom.NurbsSurface"]=Tt,Tt.__name__=["verb","geom","NurbsSurface"],Tt.__interfaces__=[Fn],Tt.byKnotsControlPointsWeights=function(r,i,o,l,c,d){return new Tt(new se(r,i,o,l,N.homogenize2d(c,d)))},Tt.byCorners=function(r,i,o,l){return new Tt(gt.fourPointSurface(r,i,o,l))},Tt.byLoftingCurves=function(r,i){return new Tt(gt.loftedSurface(function(o){for(var l,c=[],d=0;d<r.length;){var g=r[d];++d,c.push(g.asNurbs())}return l=c,l}(),i))},Tt.__super__=ee,Tt.prototype=T(ee.prototype,{degreeU:function(){return this._data.degreeU},degreeV:function(){return this._data.degreeV},knotsU:function(){return this._data.knotsU.slice(0)},knotsV:function(){return this._data.knotsV.slice(0)},controlPoints:function(){return N.dehomogenize2d(this._data.controlPoints)},weights:function(){return N.weight2d(this._data.controlPoints)},asNurbs:function(){return new se(this.degreeU(),this.degreeV(),this.knotsU(),this.knotsV(),N.homogenize2d(this.controlPoints(),this.weights()))},clone:function(){return new Tt(this.asNurbs())},domainU:function(){return new Ce(Z.first(this._data.knotsU),Z.last(this._data.knotsU))},domainV:function(){return new Ce(Z.first(this._data.knotsV),Z.last(this._data.knotsV))},point:function(r,i){return N.rationalSurfacePoint(this._data,r,i)},pointAsync:function(r,i){return St.dispatchMethod(N,"rationalSurfacePoint",[this._data,r,i])},normal:function(r,i){return N.rationalSurfaceNormal(this._data,r,i)},normalAsync:function(r,i){return St.dispatchMethod(N,"rationalSurfaceNormal",[this._data,r,i])},derivatives:function(r,i,o){return o==null&&(o=1),N.rationalSurfaceDerivatives(this._data,r,i,o)},derivativesAsync:function(r,i,o){return o==null&&(o=1),St.dispatchMethod(N,"rationalSurfaceDerivatives",[this._data,r,i,o])},closestParam:function(r){return bt.rationalSurfaceClosestParam(this._data,r)},closestParamAsync:function(r){return St.dispatchMethod(bt,"rationalSurfaceClosestParam",[this._data,r])},closestPoint:function(r){return bt.rationalSurfaceClosestPoint(this._data,r)},closestPointAsync:function(r){return St.dispatchMethod(bt,"rationalSurfaceClosestPoint",[this._data,r])},split:function(r,i){return i==null&&(i=!1),pe.surfaceSplit(this._data,r,i).map(function(o){return new Tt(o)})},splitAsync:function(r,i){return i==null&&(i=!1),St.dispatchMethod(pe,"surfaceSplit",[this._data,r,i]).then(function(o){return o.map(function(l){return new Tt(l)})})},reverse:function(r){return r==null&&(r=!1),new Tt(yt.surfaceReverse(this._data,r))},reverseAsync:function(r){return r==null&&(r=!1),St.dispatchMethod(yt,"surfaceReverse",[this._data,r]).then(function(i){return new Tt(i)})},isocurve:function(r,i){return i==null&&(i=!1),new Ct(gt.surfaceIsocurve(this._data,r,i))},isocurveAsync:function(r,i){return i==null&&(i=!1),St.dispatchMethod(gt,"surfaceIsocurve",[this._data,r,i]).then(function(o){return new Ct(o)})},boundaries:function(r){return gt.surfaceBoundaryCurves(this._data).map(function(i){return new Ct(i)})},boundariesAsync:function(r){return St.dispatchMethod(gt,"surfaceBoundaryCurves",[this._data]).then(function(i){return i.map(function(o){return new Ct(o)})})},tessellate:function(r){return Rt.rationalSurfaceAdaptive(this._data,r)},tessellateAsync:function(r){return St.dispatchMethod(Rt,"rationalSurfaceAdaptive",[this._data,r])},transform:function(r){return new Tt(yt.rationalSurfaceTransform(this._data,r))},transformAsync:function(r){return St.dispatchMethod(yt,"rationalSurfaceTransform",[this._data,r]).then(function(i){return new Tt(i)})},__class__:Tt});var gs=_.geom.ConicalSurface=function(r,i,o,l,c){Tt.call(this,gt.conicalSurface(r,i,o,l,c)),this._axis=r,this._xaxis=i,this._base=o,this._height=l,this._radius=c};x["verb.geom.ConicalSurface"]=gs,gs.__name__=["verb","geom","ConicalSurface"],gs.__super__=Tt,gs.prototype=T(Tt.prototype,{axis:function(){return this._axis},xaxis:function(){return this._xaxis},base:function(){return this._base},height:function(){return this._height},radius:function(){return this._radius},__class__:gs});var fs=_.geom.CylindricalSurface=function(r,i,o,l,c){Tt.call(this,gt.cylindricalSurface(r,i,o,l,c)),this._axis=r,this._xaxis=i,this._base=o,this._height=l,this._radius=c};x["verb.geom.CylindricalSurface"]=fs,fs.__name__=["verb","geom","CylindricalSurface"],fs.__super__=Tt,fs.prototype=T(Tt.prototype,{axis:function(){return this._axis},xaxis:function(){return this._xaxis},base:function(){return this._base},height:function(){return this._height},radius:function(){return this._radius},__class__:fs});var $r=_.geom.EllipseArc=function(r,i,o,l,c){Ct.call(this,gt.ellipseArc(r,i,o,l,c)),this._center=r,this._xaxis=i,this._yaxis=o,this._minAngle=l,this._maxAngle=c};x["verb.geom.EllipseArc"]=$r,$r.__name__=["verb","geom","EllipseArc"],$r.__super__=Ct,$r.prototype=T(Ct.prototype,{center:function(){return this._center},xaxis:function(){return this._xaxis},yaxis:function(){return this._yaxis},minAngle:function(){return this._minAngle},maxAngle:function(){return this._maxAngle},__class__:$r});var _s=_.geom.Ellipse=function(r,i,o){$r.call(this,r,i,o,0,Math.PI*2)};x["verb.geom.Ellipse"]=_s,_s.__name__=["verb","geom","Ellipse"],_s.__super__=$r,_s.prototype=T($r.prototype,{__class__:_s});var ys=_.geom.ExtrudedSurface=function(r,i){Tt.call(this,gt.extrudedSurface(p.normalized(i),p.norm(i),r.asNurbs())),this._profile=r,this._direction=i};x["verb.geom.ExtrudedSurface"]=ys,ys.__name__=["verb","geom","ExtrudedSurface"],ys.__super__=Tt,ys.prototype=T(Tt.prototype,{profile:function(){return this._profile},direction:function(){return this._direction},__class__:ys});var Zr=_.geom.Intersect=function(){};x["verb.geom.Intersect"]=Zr,Zr.__name__=["verb","geom","Intersect"],Zr.curves=function(r,i,o){return o==null&&(o=.001),ht.curves(r.asNurbs(),i.asNurbs(),o)},Zr.curvesAsync=function(r,i,o){return o==null&&(o=.001),St.dispatchMethod(ht,"curves",[r.asNurbs(),i.asNurbs(),o])},Zr.curveAndSurface=function(r,i,o){return o==null&&(o=.001),ht.curveAndSurface(r.asNurbs(),i.asNurbs(),o)},Zr.curveAndSurfaceAsync=function(r,i,o){return o==null&&(o=.001),St.dispatchMethod(ht,"curveAndSurface",[r.asNurbs(),i.asNurbs(),o])},Zr.surfaces=function(r,i,o){return o==null&&(o=.001),ht.surfaces(r.asNurbs(),i.asNurbs(),o).map(function(l){return new Ct(l)})},Zr.surfacesAsync=function(r,i,o){return o==null&&(o=.001),St.dispatchMethod(ht,"surfaces",[r.asNurbs(),i.asNurbs(),o]).then(function(l){return l.map(function(c){return new Ct(c)})})};var vs=_.geom.Line=function(r,i){Ct.call(this,gt.polyline([r,i])),this._start=r,this._end=i};x["verb.geom.Line"]=vs,vs.__name__=["verb","geom","Line"],vs.__super__=Ct,vs.prototype=T(Ct.prototype,{start:function(){return this._start},end:function(){return this._end},__class__:vs});var bs=_.geom.RevolvedSurface=function(r,i,o,l){Tt.call(this,gt.revolvedSurface(r.asNurbs(),i,o,l)),this._profile=r,this._center=i,this._axis=o,this._angle=l};x["verb.geom.RevolvedSurface"]=bs,bs.__name__=["verb","geom","RevolvedSurface"],bs.__super__=Tt,bs.prototype=T(Tt.prototype,{profile:function(){return this._profile},center:function(){return this._center},axis:function(){return this._center},angle:function(){return this._angle},__class__:bs});var xs=_.geom.SphericalSurface=function(r,i){Tt.call(this,gt.sphericalSurface(r,[0,0,1],[1,0,0],i)),this._center=r,this._radius=i};x["verb.geom.SphericalSurface"]=xs,xs.__name__=["verb","geom","SphericalSurface"],xs.__super__=Tt,xs.prototype=T(Tt.prototype,{center:function(){return this._center},radius:function(){return this._radius},__class__:xs});var ws=_.geom.SweptSurface=function(r,i){Tt.call(this,gt.rationalTranslationalSurface(r.asNurbs(),i.asNurbs())),this._profile=r,this._rail=i};x["verb.geom.SweptSurface"]=ws,ws.__name__=["verb","geom","SweptSurface"],ws.__super__=Tt,ws.prototype=T(Tt.prototype,{profile:function(){return this._profile},rail:function(){return this._rail},__class__:ws});function rr(r){return r instanceof Array?function(){return L.iter(r)}:typeof r.iterator=="function"?Ue(r,r.iterator):r.iterator}var aa,bc=0;function Ue(r,i){if(i==null)return null;i.__id__==null&&(i.__id__=bc++);var o;return r.hx__closures__==null?r.hx__closures__={}:o=r.hx__closures__[i.__id__],o==null&&(o=function(){return o.method.apply(o.scope,arguments)},o.scope=r,o.method=i,r.hx__closures__[i.__id__]=o),o}x.Math=Math,String.prototype.__class__=x.String=String,String.__name__=["String"],x.Array=Array,Array.__name__=["Array"],Date.prototype.__class__=x.Date=Date,Date.__name__=["Date"];var xc=x.Int={__name__:["Int"]},wc=x.Dynamic={__name__:["Dynamic"]},Zo=x.Float=Number;Zo.__name__=["Float"];var Qo=x.Bool=Boolean;Qo.__ename__=["Bool"];var Jo=x.Class={__name__:["Class"]},tl={};Array.prototype.map==null&&(Array.prototype.map=function(r){for(var i=[],o=0,l=this.length;o<l;){var c=o++;i[c]=r(this[c])}return i}),Array.prototype.filter==null&&(Array.prototype.filter=function(r){for(var i=[],o=0,l=this.length;o<l;){var c=o++,d=this[c];r(d)&&i.push(d)}return i});var oa={},ai=w.ArrayBuffer||de;ai.prototype.slice==null&&(ai.prototype.slice=de.sliceImpl),w.DataView;var la=w.Uint8Array||cr._new;(function(r,i){if(r.setImmediate)return;var o=1,l={},c=!1,d=r.document,g;function f(R){return l[o]=y.apply(i,R),o++}function y(R){var U=[].slice.call(arguments,1);return function(){typeof R=="function"?R.apply(i,U):new Function(""+R)()}}function S(R){if(c)setTimeout(y(S,R),0);else{var U=l[R];if(U){c=!0;try{U()}finally{P(R),c=!1}}}}function P(R){delete l[R]}function I(){g=function(){var R=f(arguments);return process.nextTick(y(S,R)),R}}function E(){if(r.postMessage&&!r.importScripts){var R=!0,U=r.onmessage;return r.onmessage=function(){R=!1},r.postMessage("","*"),r.onmessage=U,R}}function M(){var R="setImmediate$"+Math.random()+"$",U=function(j){j.source===r&&typeof j.data=="string"&&j.data.indexOf(R)===0&&S(+j.data.slice(R.length))};r.addEventListener?r.addEventListener("message",U,!1):r.attachEvent("onmessage",U),g=function(){var j=f(arguments);return r.postMessage(R+j,"*"),j}}function k(){var R=new MessageChannel;R.port1.onmessage=function(U){var j=U.data;S(j)},g=function(){var U=f(arguments);return R.port2.postMessage(U),U}}function B(){var R=d.documentElement;g=function(){var U=f(arguments),j=d.createElement("script");return j.onreadystatechange=function(){S(U),j.onreadystatechange=null,R.removeChild(j),j=null},R.appendChild(j),U}}function C(){g=function(){var R=f(arguments);return setTimeout(y(S,R),0),R}}var z=Object.getPrototypeOf&&Object.getPrototypeOf(r);z=z&&z.setTimeout?z:r,{}.toString.call(r.process)==="[object process]"?I():E()?M():r.MessageChannel?k():d&&"onreadystatechange"in d.createElement("script")?B():C(),z.setImmediate=g,z.clearImmediate=P})(new Function("return this")()),$t.USE_CACHE=!1,$t.USE_ENUM_INDEX=!1,$t.BASE64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:",qt.DEFAULT_RESOLVER=dt,qt.BASE64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:",Bt.count=0,ce.i64tmp=function(r){var i,o=new Wt(0,0);return i=o,i}(),Lt.__toStr={}.toString,cr.BYTES_PER_ELEMENT=1,At.queue=new V,Vt.memo=new wt,rt.TOLERANCE=1e-6,rt.EPSILON=1e-10,rt.VERSION="2.0.0",bt.Tvalues=[[],[],[-.5773502691896257,.5773502691896257],[0,-.7745966692414834,.7745966692414834],[-.33998104358485626,.33998104358485626,-.8611363115940526,.8611363115940526],[0,-.5384693101056831,.5384693101056831,-.906179845938664,.906179845938664],[.6612093864662645,-.6612093864662645,-.2386191860831969,.2386191860831969,-.932469514203152,.932469514203152],[0,.4058451513773972,-.4058451513773972,-.7415311855993945,.7415311855993945,-.9491079123427585,.9491079123427585],[-.1834346424956498,.1834346424956498,-.525532409916329,.525532409916329,-.7966664774136267,.7966664774136267,-.9602898564975363,.9602898564975363],[0,-.8360311073266358,.8360311073266358,-.9681602395076261,.9681602395076261,-.3242534234038089,.3242534234038089,-.6133714327005904,.6133714327005904],[-.14887433898163122,.14887433898163122,-.4333953941292472,.4333953941292472,-.6794095682990244,.6794095682990244,-.8650633666889845,.8650633666889845,-.9739065285171717,.9739065285171717],[0,-.26954315595234496,.26954315595234496,-.5190961292068118,.5190961292068118,-.7301520055740494,.7301520055740494,-.8870625997680953,.8870625997680953,-.978228658146057,.978228658146057],[-.1252334085114689,.1252334085114689,-.3678314989981802,.3678314989981802,-.5873179542866175,.5873179542866175,-.7699026741943047,.7699026741943047,-.9041172563704749,.9041172563704749,-.9815606342467192,.9815606342467192],[0,-.2304583159551348,.2304583159551348,-.44849275103644687,.44849275103644687,-.6423493394403402,.6423493394403402,-.8015780907333099,.8015780907333099,-.9175983992229779,.9175983992229779,-.9841830547185881,.9841830547185881],[-.10805494870734367,.10805494870734367,-.31911236892788974,.31911236892788974,-.5152486363581541,.5152486363581541,-.6872929048116855,.6872929048116855,-.827201315069765,.827201315069765,-.9284348836635735,.9284348836635735,-.9862838086968123,.9862838086968123],[0,-.20119409399743451,.20119409399743451,-.3941513470775634,.3941513470775634,-.5709721726085388,.5709721726085388,-.7244177313601701,.7244177313601701,-.8482065834104272,.8482065834104272,-.937273392400706,.937273392400706,-.9879925180204854,.9879925180204854],[-.09501250983763744,.09501250983763744,-.2816035507792589,.2816035507792589,-.45801677765722737,.45801677765722737,-.6178762444026438,.6178762444026438,-.755404408355003,.755404408355003,-.8656312023878318,.8656312023878318,-.9445750230732326,.9445750230732326,-.9894009349916499,.9894009349916499],[0,-.17848418149584785,.17848418149584785,-.3512317634538763,.3512317634538763,-.5126905370864769,.5126905370864769,-.6576711592166907,.6576711592166907,-.7815140038968014,.7815140038968014,-.8802391537269859,.8802391537269859,-.9506755217687678,.9506755217687678,-.9905754753144174,.9905754753144174],[-.0847750130417353,.0847750130417353,-.2518862256915055,.2518862256915055,-.41175116146284263,.41175116146284263,-.5597708310739475,.5597708310739475,-.6916870430603532,.6916870430603532,-.8037049589725231,.8037049589725231,-.8926024664975557,.8926024664975557,-.9558239495713977,.9558239495713977,-.9915651684209309,.9915651684209309],[0,-.16035864564022537,.16035864564022537,-.31656409996362983,.31656409996362983,-.46457074137596094,.46457074137596094,-.600545304661681,.600545304661681,-.7209661773352294,.7209661773352294,-.8227146565371428,.8227146565371428,-.9031559036148179,.9031559036148179,-.96020815213483,.96020815213483,-.9924068438435844,.9924068438435844],[-.07652652113349734,.07652652113349734,-.22778585114164507,.22778585114164507,-.37370608871541955,.37370608871541955,-.5108670019508271,.5108670019508271,-.636053680726515,.636053680726515,-.7463319064601508,.7463319064601508,-.8391169718222188,.8391169718222188,-.912234428251326,.912234428251326,-.9639719272779138,.9639719272779138,-.9931285991850949,.9931285991850949],[0,-.1455618541608951,.1455618541608951,-.2880213168024011,.2880213168024011,-.4243421202074388,.4243421202074388,-.5516188358872198,.5516188358872198,-.6671388041974123,.6671388041974123,-.7684399634756779,.7684399634756779,-.8533633645833173,.8533633645833173,-.9200993341504008,.9200993341504008,-.9672268385663063,.9672268385663063,-.9937521706203895,.9937521706203895],[-.06973927331972223,.06973927331972223,-.20786042668822127,.20786042668822127,-.34193582089208424,.34193582089208424,-.469355837986757,.469355837986757,-.5876404035069116,.5876404035069116,-.6944872631866827,.6944872631866827,-.7878168059792081,.7878168059792081,-.8658125777203002,.8658125777203002,-.926956772187174,.926956772187174,-.9700604978354287,.9700604978354287,-.9942945854823992,.9942945854823992],[0,-.1332568242984661,.1332568242984661,-.26413568097034495,.26413568097034495,-.3903010380302908,.3903010380302908,-.5095014778460075,.5095014778460075,-.6196098757636461,.6196098757636461,-.7186613631319502,.7186613631319502,-.8048884016188399,.8048884016188399,-.8767523582704416,.8767523582704416,-.9329710868260161,.9329710868260161,-.9725424712181152,.9725424712181152,-.9947693349975522,.9947693349975522],[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213]],bt.Cvalues=[[],[],[1,1],[.8888888888888888,.5555555555555556,.5555555555555556],[.6521451548625461,.6521451548625461,.34785484513745385,.34785484513745385],[.5688888888888889,.47862867049936647,.47862867049936647,.23692688505618908,.23692688505618908],[.3607615730481386,.3607615730481386,.46791393457269104,.46791393457269104,.17132449237917036,.17132449237917036],[.4179591836734694,.3818300505051189,.3818300505051189,.27970539148927664,.27970539148927664,.1294849661688697,.1294849661688697],[.362683783378362,.362683783378362,.31370664587788727,.31370664587788727,.22238103445337448,.22238103445337448,.10122853629037626,.10122853629037626],[.3302393550012598,.1806481606948574,.1806481606948574,.08127438836157441,.08127438836157441,.31234707704000286,.31234707704000286,.26061069640293544,.26061069640293544],[.29552422471475287,.29552422471475287,.26926671930999635,.26926671930999635,.21908636251598204,.21908636251598204,.1494513491505806,.1494513491505806,.06667134430868814,.06667134430868814],[.2729250867779006,.26280454451024665,.26280454451024665,.23319376459199048,.23319376459199048,.18629021092773426,.18629021092773426,.1255803694649046,.1255803694649046,.05566856711617366,.05566856711617366],[.24914704581340277,.24914704581340277,.2334925365383548,.2334925365383548,.20316742672306592,.20316742672306592,.16007832854334622,.16007832854334622,.10693932599531843,.10693932599531843,.04717533638651183,.04717533638651183],[.2325515532308739,.22628318026289723,.22628318026289723,.2078160475368885,.2078160475368885,.17814598076194574,.17814598076194574,.13887351021978725,.13887351021978725,.09212149983772845,.09212149983772845,.04048400476531588,.04048400476531588],[.2152638534631578,.2152638534631578,.2051984637212956,.2051984637212956,.18553839747793782,.18553839747793782,.15720316715819355,.15720316715819355,.12151857068790319,.12151857068790319,.08015808715976021,.08015808715976021,.03511946033175186,.03511946033175186],[.2025782419255613,.19843148532711158,.19843148532711158,.1861610000155622,.1861610000155622,.16626920581699392,.16626920581699392,.13957067792615432,.13957067792615432,.10715922046717194,.10715922046717194,.07036604748810812,.07036604748810812,.03075324199611727,.03075324199611727],[.1894506104550685,.1894506104550685,.18260341504492358,.18260341504492358,.16915651939500254,.16915651939500254,.14959598881657674,.14959598881657674,.12462897125553388,.12462897125553388,.09515851168249279,.09515851168249279,.062253523938647894,.062253523938647894,.027152459411754096,.027152459411754096],[.17944647035620653,.17656270536699264,.17656270536699264,.16800410215645004,.16800410215645004,.15404576107681028,.15404576107681028,.13513636846852548,.13513636846852548,.11188384719340397,.11188384719340397,.08503614831717918,.08503614831717918,.0554595293739872,.0554595293739872,.02414830286854793,.02414830286854793],[.1691423829631436,.1691423829631436,.16427648374583273,.16427648374583273,.15468467512626524,.15468467512626524,.14064291467065065,.14064291467065065,.12255520671147846,.12255520671147846,.10094204410628717,.10094204410628717,.07642573025488905,.07642573025488905,.0497145488949698,.0497145488949698,.02161601352648331,.02161601352648331],[.1610544498487837,.15896884339395434,.15896884339395434,.15276604206585967,.15276604206585967,.1426067021736066,.1426067021736066,.12875396253933621,.12875396253933621,.11156664554733399,.11156664554733399,.09149002162245,.09149002162245,.06904454273764123,.06904454273764123,.0448142267656996,.0448142267656996,.019461788229726478,.019461788229726478],[.15275338713072584,.15275338713072584,.14917298647260374,.14917298647260374,.14209610931838204,.14209610931838204,.13168863844917664,.13168863844917664,.11819453196151841,.11819453196151841,.10193011981724044,.10193011981724044,.08327674157670475,.08327674157670475,.06267204833410907,.06267204833410907,.04060142980038694,.04060142980038694,.017614007139152118,.017614007139152118],[.14608113364969041,.14452440398997005,.14452440398997005,.13988739479107315,.13988739479107315,.13226893863333747,.13226893863333747,.12183141605372853,.12183141605372853,.10879729916714838,.10879729916714838,.09344442345603386,.09344442345603386,.0761001136283793,.0761001136283793,.057134425426857205,.057134425426857205,.036953789770852494,.036953789770852494,.016017228257774335,.016017228257774335],[.13925187285563198,.13925187285563198,.13654149834601517,.13654149834601517,.13117350478706238,.13117350478706238,.12325237681051242,.12325237681051242,.11293229608053922,.11293229608053922,.10041414444288096,.10041414444288096,.08594160621706773,.08594160621706773,.06979646842452049,.06979646842452049,.052293335152683286,.052293335152683286,.03377490158481415,.03377490158481415,.0146279952982722,.0146279952982722],[.13365457218610619,.1324620394046966,.1324620394046966,.12890572218808216,.12890572218808216,.12304908430672953,.12304908430672953,.11499664022241136,.11499664022241136,.10489209146454141,.10489209146454141,.09291576606003515,.09291576606003515,.07928141177671895,.07928141177671895,.06423242140852585,.06423242140852585,.04803767173108467,.04803767173108467,.030988005856979445,.030988005856979445,.013411859487141771,.013411859487141771],[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872]],St.THREADS=1,St._init=!1,Yr.basePath="",hn.uuid=0,si.main()}(typeof console<"u"?console:{log:function(){}},e,typeof u<"u"?u:typeof s<"u"?s:typeof self<"u"?self:this),e})})(Ih);var nd=Ih.exports;const Gn=rd(nd);class ya{constructor(){this.c0=0,this.c1=0,this.c2=0,this.c3=0}init(t,e,s,a){this.c0=t,this.c1=s,this.c2=-3*t+3*e-2*s-a,this.c3=2*t-2*e+s+a}initCatmullRom(t,e,s,a,h){this.init(e,s,h*(s-t),h*(a-e))}initNonuniformCatmullRom(t,e,s,a,h,u,m){let b=(e-t)/h-(s-t)/(h+u)+(s-e)/u,_=(s-e)/u-(a-e)/(u+m)+(a-s)/m;b*=u,_*=u,this.init(e,s,b,_)}calc(t){const e=t*t,s=e*t;return this.c0+this.c1*t+this.c2*e+this.c3*s}}let Ph=class extends ri{constructor(t=[],e=!1,s="centripetal",a=.5){super(),this.isCatmullRomCurve3d=!0,this.type="CatmullRomCurve3d",this._tmp=new Y,this._px=new ya,this._py=new ya,this._pz=new ya,this._points=t.map(h=>new W(h)),this._closed=e,this._curveType=s,this._tension=a}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 W}get endPoint(){return this._points.length>0?this._points[this._points.length-1]:new W}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 W){const s=e,a=this._points,h=a.length;if(h===0)return s.set(0,0,0);if(h===1)return s.copy(a[0]);const u=(h-(this._closed?0:1))*t;let m=Math.floor(u),b=u-m;this._closed?m+=m>0?0:(Math.floor(Math.abs(m)/h)+1)*h:b===0&&m===h-1&&(m=h-2,b=1);let _,w;this._closed||m>0?_=a[(m-1)%h]:(this._tmp.subVectors(a[0],a[1]).add(a[0]),_=new W(this._tmp.x,this._tmp.y,this._tmp.z));const x=a[m%h],A=a[(m+1)%h];if(this._closed||m+2<h?w=a[(m+2)%h]:(this._tmp.subVectors(a[h-1],a[h-2]).add(a[h-1]),w=new W(this._tmp.x,this._tmp.y,this._tmp.z)),this._curveType==="centripetal"||this._curveType==="chordal"){const T=this._curveType==="chordal"?.5:.25;let L=Math.pow(_.distanceToSquared(x),T),O=Math.pow(x.distanceToSquared(A),T),V=Math.pow(A.distanceToSquared(w),T);O<1e-4&&(O=1),L<1e-4&&(L=O),V<1e-4&&(V=O),this._px.initNonuniformCatmullRom(_.x,x.x,A.x,w.x,L,O,V),this._py.initNonuniformCatmullRom(_.y,x.y,A.y,w.y,L,O,V),this._pz.initNonuniformCatmullRom(_.z,x.z,A.z,w.z,L,O,V)}else this._curveType==="catmullrom"&&(this._px.initCatmullRom(_.x,x.x,A.x,w.x,this._tension),this._py.initCatmullRom(_.y,x.y,A.y,w.y,this._tension),this._pz.initCatmullRom(_.z,x.z,A.z,w.z,this._tension));return s.set(this._px.calc(b),this._py.calc(b),this._pz.calc(b)),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 W(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 W;return s.copy(e),s.applyMatrix4(t),s}),this._boundingBoxNeedsUpdate=!0,this}calculateBoundingBox(){if(this._points.length===0)return new Nt;const t=new Nt;return this._points.forEach(e=>{t.expandByPoint(e)}),t}};class In{constructor(t,e,s,a){this._degree=t,this._knots=[...e],this._controlPoints=s.map(h=>({x:h.x,y:h.y,z:h.z})),this._weights=a?[...a]: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 Ws(t,this._degree,this._knots,e,this._weights)}length(){const t=this._controlPoints.map(e=>[e.x,e.y,e.z]);return _h(this._degree,this._knots,t,this._weights)}static byKnotsControlPointsWeights(t,e,s,a){return new In(t,e,s,a)}static byPoints(t,e,s="Uniform"){let a;switch(s){case"Chord":a=gh(e,t);break;case"SqrtChord":a=fh(e,t);break;case"Uniform":default:a=mh(e,t.length);break}const h=t.map(m=>({x:m[0],y:m[1],z:m[2]})),u=new Array(h.length).fill(1);return new In(e,a,h,u)}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:a}=this.getParameterRange();for(let h=0;h<=t;h++){const u=s+(a-s)*(h/t);e.push(this.point(u))}return e}isClosed(t=1e-6){const{start:e,end:s}=this.getParameterRange(),a=this.point(e),h=this.point(s),u=a[0]-h[0],m=a[1]-h[1],b=a[2]-h[2];return Math.sqrt(u*u+m*m+b*b)<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 Ph(t,!0,"centripetal"),s=Math.max(50,t.length*2);return e.getPoints(s)}static createClosedCurve(t,e,s="Chord"){const a=this.createFitPointsForClosedCurve(t).map(h=>[h.x,h.y,h.z]);return In.byPoints(a,e,s)}}class nn extends ri{constructor(t,e,s,a,h){super();const u=arguments.length;if(u<2||u>5)throw $e.ILLEGAL_PARAMETERS;if(this._degree=3,this._closed=!1,Array.isArray(e)){this._controlPoints=t;let m,b=3,_=!1;if(u>=3&&(Array.isArray(s)?(m=s,u>=4&&(b=a||3),u>=5&&(_=h)):s!==void 0&&(b=s||3,u>=4&&(_=a))),s===void 0&&u>=4&&(b=a||3,u>=5&&(_=h)),this._degree=b,this._closed=_,this._controlPoints.length<this._degree+1)throw $e.ILLEGAL_PARAMETERS;const w=this.toVerbPoints(this._controlPoints);this._nurbsCurve=Gn.geom.NurbsCurve.byKnotsControlPointsWeights(this._degree,e,w,m)}else{if(this._fitPoints=t,this._knotParameterization=e,u>=3&&(this._degree=s||3),u>=4&&(this._closed=a),this._fitPoints.length<this._degree+1)throw $e.ILLEGAL_PARAMETERS;const m=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=Gn.geom.NurbsCurve.byPoints(m,this._degree),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints())}}buildCurve(){if(this._fitPoints&&this._knotParameterization){if(this._closed){const t=In.createFitPointsForClosedCurve(this._fitPoints),e=this.toNurbsPoints(t);this._nurbsCurve=Gn.geom.NurbsCurve.byPoints(e,this._degree)}else{const t=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=Gn.geom.NurbsCurve.byPoints(t,this._degree)}this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints())}else if(this._controlPoints)if(this._closed){const t=In.createFitPointsForClosedCurve(this._controlPoints),e=this.toNurbsPoints(t);this._nurbsCurve=Gn.geom.NurbsCurve.byPoints(e,this._degree),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints())}else{const t=this._nurbsCurve.knots(),e=this._nurbsCurve.weights(),s=this.toVerbPoints(this._controlPoints);this._nurbsCurve=Gn.geom.NurbsCurve.byKnotsControlPointsWeights(this._degree,t,s,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 startPoint(){const t=this._nurbsCurve.knots(),e=this._nurbsCurve.degree(),s=t[e],a=this._nurbsCurve.point(s);return new W(a[0],a[1],a[2])}get endPoint(){const t=this._nurbsCurve.knots(),e=this._nurbsCurve.degree(),s=t[t.length-e-1],a=this._nurbsCurve.point(s);return new W(a[0],a[1],a[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,a=this._fitPoints[s];return{x:a.x,y:a.y,z:a.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=[],a=e.knots(),h=this._nurbsCurve.degree(),u=a[h],m=a[a.length-h-1],b=(m-u)/(t-1);for(let _=0;_<t;_++){const w=_===t-1?m:u+_*b,x=e.point(w);s.push(new W(x[0],x[1],x[2]))}return s}getCurvePoints(t,e){const s=[],a=t.knots(),h=a[3],u=(a[a.length-4]-h)/(e-1);for(let m=0;m<e;m++){const b=h+m*u;s.push(t.point(b))}return s}calculateBoundingBox(){const t=this.getPoints(100);return new Nt().setFromPoints(t)}get closed(){return this._closed}set closed(t){this.setClosed(t)}transform(t){return this._boundingBoxNeedsUpdate=!0,this}toNurbsPoints(t){const e=new Array(t.length);return t.forEach((s,a)=>{e[a]=[s.x,s.y,s.z||0]}),e}toVerbPoints(t){const e=new Array(t.length);return t.forEach((s,a)=>{e[a]=[s.x,s.y,s.z||0]}),e}toGePoints(t){const e=new Array(t.length);return t.forEach((s,a)=>{e[a]={x:s[0],y:s[1],z:s[2]}}),e}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 nn(t,e,s,!0)}}var eo=(n=>(n.ClosedFilled="",n.Dot="_DOT",n.DotSmall="_DOTSMALL",n.DotBlank="_DOTBLANK",n.Origin="_ORIGIN",n.Origin2="_ORIGIN2",n.Open="_OPEN",n.Open90="_OPEN90",n.Open30="_OPEN30",n.Closed="_CLOSED",n.Small="_SMALL",n.None="_NONE",n.Oblique="_OBLIQUE",n.BoxFilled="_BOXFILLED",n.Box="_BOXBLANK",n.ClosedBlank="_CLOSEDBLANK",n.DatumBlank="_DATUMBLANK",n.DatumFilled="_DATUMFILLED",n.Integral="_INTEGRAL",n.ArchTick="_ARCHTICK",n))(eo||{}),sn=(n=>(n[n.ByBlock=-2]="ByBlock",n[n.ByDIPs=-4]="ByDIPs",n[n.ByLayer=-1]="ByLayer",n[n.ByLineWeightDefault=-3]="ByLineWeightDefault",n[n.LineWeight000=0]="LineWeight000",n[n.LineWeight005=5]="LineWeight005",n[n.LineWeight009=9]="LineWeight009",n[n.LineWeight013=13]="LineWeight013",n[n.LineWeight015=15]="LineWeight015",n[n.LineWeight018=18]="LineWeight018",n[n.LineWeight020=20]="LineWeight020",n[n.LineWeight025=25]="LineWeight025",n[n.LineWeight030=30]="LineWeight030",n[n.LineWeight035=35]="LineWeight035",n[n.LineWeight040=40]="LineWeight040",n[n.LineWeight050=50]="LineWeight050",n[n.LineWeight053=53]="LineWeight053",n[n.LineWeight060=60]="LineWeight060",n[n.LineWeight070=70]="LineWeight070",n[n.LineWeight080=80]="LineWeight080",n[n.LineWeight090=90]="LineWeight090",n[n.LineWeight100=100]="LineWeight100",n[n.LineWeight106=106]="LineWeight106",n[n.LineWeight120=120]="LineWeight120",n[n.LineWeight140=140]="LineWeight140",n[n.LineWeight158=158]="LineWeight158",n[n.LineWeight200=200]="LineWeight200",n[n.LineWeight211=211]="LineWeight211",n))(sn||{}),Ur=(n=>(n[n.LEFT_TO_RIGHT=1]="LEFT_TO_RIGHT",n[n.RIGHT_TO_LEFT=2]="RIGHT_TO_LEFT",n[n.TOP_TO_BOTTOM=3]="TOP_TO_BOTTOM",n[n.BOTTOM_TO_TOP=4]="BOTTOM_TO_TOP",n[n.BY_STYLE=5]="BY_STYLE",n))(Ur||{}),Se=(n=>(n[n.TopLeft=1]="TopLeft",n[n.TopCenter=2]="TopCenter",n[n.TopRight=3]="TopRight",n[n.MiddleLeft=4]="MiddleLeft",n[n.MiddleCenter=5]="MiddleCenter",n[n.MiddleRight=6]="MiddleRight",n[n.BottomLeft=7]="BottomLeft",n[n.BottomCenter=8]="BottomCenter",n[n.BottomRight=9]="BottomRight",n))(Se||{}),ro=(n=>(n[n.OPTIMIZED_2D=0]="OPTIMIZED_2D",n[n.WIREFRAME=1]="WIREFRAME",n[n.HIDDEN_LINE=2]="HIDDEN_LINE",n[n.FLAT_SHADED=3]="FLAT_SHADED",n[n.GOURAUD_SHADED=4]="GOURAUD_SHADED",n[n.FLAT_SHADED_WITH_WIREFRAME=5]="FLAT_SHADED_WITH_WIREFRAME",n[n.GOURAUD_SHADED_WITH_WIREFRAME=6]="GOURAUD_SHADED_WITH_WIREFRAME",n))(ro||{}),no=(n=>(n[n.NON_ORTHOGRAPHIC=0]="NON_ORTHOGRAPHIC",n[n.TOP=1]="TOP",n[n.BOTTOM=2]="BOTTOM",n[n.FRONT=3]="FRONT",n[n.BACK=4]="BACK",n[n.LEFT=5]="LEFT",n[n.RIGHT=6]="RIGHT",n))(no||{}),so=(n=>(n[n.ONE_DISTANT_LIGHT=0]="ONE_DISTANT_LIGHT",n[n.TWO_DISTANT_LIGHTS=1]="TWO_DISTANT_LIGHTS",n))(so||{});let Ah=class Eh{constructor(){this._number=-1,this._id="",this._groupId="",this._centerPoint=new W,this._height=0,this._width=0,this._viewCenter=new W,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 Ie;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 Ie;return t.setFromCenterAndSize(this.viewCenter,{x:this.viewWidth,y:this.viewHeight}),t}clone(){const t=new Eh;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}};var Sn=256,Th=[],wl=256,hi;for(;Sn--;)Th[Sn]=(Sn+256).toString(16).substring(1);function sd(n){var t=0,e=11;if(!hi||Sn+e>wl*2)for(hi="",Sn=0;t<wl;t++)hi+=Th[Math.random()*256|0];return hi.substring(Sn,Sn+++e)}class Gr{constructor(t,e){t=t||{},Qn(t,{objectId:sd()}),this._attrs=new zl(t,e),this._xDataMap=new Map}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)}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(){return this._database?this._database:mo().workingDatabase}set database(t){this._database=t}getXData(t){return this._xDataMap.get(t)}setXData(t){for(const e of t)e.code===Fa.ExtendedDataRegAppName&&this._xDataMap.set(e.value,t)}removeXData(t){this._xDataMap.delete(t)}createExtensionDictionary(){}close(){}}const fo=class fo extends Gr{constructor(){super(...arguments),this._lineType=pi,this._visibility=!0,this._transparency=new Zi}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 _e,this.database.cecolor&&this._color.copy(this.database.cecolor)),this._color}set color(t){this._color==null&&(this._color=new _e),this._color.copy(t)}get rgbColor(){let t=this.color;if(t.isByLayer){const s=this.getLayerColor();s&&s.RGB!=null&&(t=s)}else t.isByBlock;const e=t.RGB;return e??16777215}get lineType(){return this._lineType}set lineType(t){this._lineType=t||pi}get lineWeight(){return this._lineWeight==null&&(this._lineWeight=this.database.celweight??sn.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()}resolveEffectiveProperties(){this._layer==null&&(this._layer=this.database.clayer??"0"),this._color==null&&(this._color=new _e,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??sn.ByLayer)}get properties(){return{type:this.type,groups:[this.getGeneralProperties()]}}subGetGripPoints(){return new Array}subGetOsnapPoints(t,e,s,a,h){}transformBy(t){return this}erase(){return this.database.tables.blockTable.removeEntity(this.objectId)}worldDraw(t,e){const s=t.subEntityTraits;s.color=this.color,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 a=this.subWorldDraw(t,e);return this.attachEntityInfo(a),a}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 a;const{type:t,name:e}=this.getLineType(),s=(a=this.database)==null?void 0:a.tables.linetypeTable.getAt(e);return s?{type:t,...s.linetype}:{type:t,name:e,standardFlag:0,description:"",totalPatternLength:0}}getLineType(){if(this.lineType==pi){const t=this.database.tables.layerTable.getAt(this.layer);if(t&&t.linetype)return{type:"ByLayer",name:t.linetype}}else return this.lineType==Dl?{type:"ByBlock",name:bi}:{type:"UserSpecified",name:this.lineType};return{type:"UserSpecified",name:bi}}getLayerColor(){const t=this.database.tables.layerTable.getAt(this.layer);if(t==null)console.error(`The layer with name '${this.layer}' not found in drawing database!`);else return t.color;return null}attachEntityInfo(t){t&&(t.objectId=this.objectId,this.attrs.has("ownerId")&&(t.ownerId=this.ownerId),t.layerName=this.layer,t.visible=this.visibility)}};fo.typeName="Entity";let Ne=fo;const _o=class _o extends Ne{};_o.typeName="Curve";let Le=_o;var Dn=(n=>(n[n.SimplePoly=0]="SimplePoly",n[n.FitCurvePoly=1]="FitCurvePoly",n[n.QuadSplinePoly=2]="QuadSplinePoly",n[n.CubicSplinePoly=3]="CubicSplinePoly",n))(Dn||{});const yo=class yo extends Le{constructor(t,e,s=0,a=!1,h=0,u=0,m=null){super(),this._polyType=t,this._elevation=s;const b=m&&(m==null?void 0:m.length)===e.length,_=e.map((w,x)=>({x:w.x,y:w.y,bulge:b?m[x]:void 0}));this._geo=new En(_,a)}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 geometricExtents(){const t=this._geo.box;return new Nt({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 W(s.x,s.y,0))}return t}subGetOsnapPoints(t,e,s,a){switch(t){case Ft.EndPoint:for(let h=0;h<this._geo.numberOfVertices;++h){const u=this._geo.getPointAt(h);a.push(new W(u.x,u.y,0))}break}}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(a=>e.push(new W().set(a.x,a.y,this.elevation))),t.lines(e)}};yo.typeName="2dPolyline";let wi=yo;var Mh=(n=>(n[n.Vertex=0]="Vertex",n[n.CurveFitVertex=1]="CurveFitVertex",n[n.SplineFitVertex=8]="SplineFitVertex",n[n.SplineCtlVertex=9]="SplineCtlVertex",n))(Mh||{});const vo=class vo extends Ne{constructor(){super(),this._position=new W,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 Nt().expandByPoint(this._position)}subGetGripPoints(){const t=new Array;return t.push(this._position),t}subGetOsnapPoints(t,e,s,a){a.push(this._position)}transformBy(t){return this._position.applyMatrix4(t),this}subWorldDraw(t){}};vo.typeName="2dVertex";let Ca=vo;var Hs=(n=>(n[n.SimplePoly=0]="SimplePoly",n[n.QuadSplinePoly=1]="QuadSplinePoly",n[n.CubicSplinePoly=2]="CubicSplinePoly",n))(Hs||{});const bo=class bo extends Le{constructor(t,e,s=!1){super(),this._polyType=t,this._geo=new En(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 geometricExtents(){const t=this._geo.box;return new Nt({x:t.min.x,y:t.min.y,z:0},{x:t.max.x,y:t.max.y,z:0})}subGetGripPoints(){const t=new Array;for(let e=0;e<this._geo.numberOfVertices;++e){const s=this._geo.getPointAt(e);t.push(new W(s.x,s.y,0))}return t}subGetOsnapPoints(t,e,s,a){switch(t){case Ft.EndPoint:for(let h=0;h<this._geo.numberOfVertices;++h){const u=this._geo.getPointAt(h);a.push(new W(u.x,u.y,0))}break}}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=[];return this._geo.getPoints(100).forEach(a=>e.push(new W().set(a.x,a.y,0))),t.lines(e)}};bo.typeName="3dPolyline";let Si=bo;var kh=(n=>(n[n.SimpleVertex=0]="SimpleVertex",n[n.ControlVertex=1]="ControlVertex",n[n.FitVertex=2]="FitVertex",n))(kh||{});const xo=class xo extends Ne{constructor(){super(),this._position=new W,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 Nt().expandByPoint(this._position)}subGetGripPoints(){const t=new Array;return t.push(this._position),t}subGetOsnapPoints(t,e,s,a){a.push(this._position)}transformBy(t){return this._position.applyMatrix4(t),this}subWorldDraw(t){}};xo.typeName="3dVertex";let Oa=xo;const wo=class wo extends Le{constructor(t,e,s,a,h=Y.Z_AXIS){super(),this._geo=new Ja(t,e,s,a,h,Y.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:()=>It.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,a){const h=this.startPoint,u=this.endPoint;switch(t){case Ft.EndPoint:a.push(h),a.push(u);break;case Ft.MidPoint:a.push(this.midPoint);break;case Ft.Nearest:{const m=this._geo.nearestPoint(e);a.push(m)}break;case Ft.Perpendicular:break;case Ft.Tangent:{const m=this._geo.tangentPoints(e);a.push(...m);break}}}transformBy(t){return this._geo.transform(t),this}subWorldDraw(t){return t.circularArc(this._geo)}};wo.typeName="Arc";let Ii=wo;var Nh=(n=>(n[n.LEFT=0]="LEFT",n[n.CENTER=1]="CENTER",n[n.RIGHT=2]="RIGHT",n[n.ALIGNED=3]="ALIGNED",n[n.MIDDLE=4]="MIDDLE",n[n.FIT=5]="FIT",n))(Nh||{}),Lh=(n=>(n[n.BASELINE=0]="BASELINE",n[n.BOTTOM=1]="BOTTOM",n[n.MIDDLE=2]="MIDDLE",n[n.TOP=3]="TOP",n))(Lh||{});const So=class So extends Ne{constructor(){super(),this._textString="",this._height=0,this._thickness=1,this._position=new W,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 Nt}subGetOsnapPoints(t,e,s,a){Ft.Insertion===t&&a.push(this._position)}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;let e=t.getAt(this.styleName);return e||(e=t.getAt("STANDARD")||t.getAt("Standard")),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:Ur.BOTTOM_TO_TOP,attachmentPoint:Se.BottomLeft};return t.mtext(s,this.getTextStyle(),e)}};So.typeName="Text";let Kn=So;var he=(n=>(n[n.Invisible=1]="Invisible",n[n.Const=2]="Const",n[n.Verifiable=4]="Verifiable",n[n.Preset=8]="Preset",n))(he||{}),yr=(n=>(n[n.MultiLine=2]="MultiLine",n[n.ConstMultiLine=4]="ConstMultiLine",n))(yr||{});const Io=class Io extends Kn{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){}};Io.typeName="AttDef";let Pi=Io;const Po=class Po extends Kn{constructor(){super(),this._flags=0,this._mtextFlag=0,this._tag="",this._fieldLength=0,this._lockPositionInBlock=!1,this._isReallyLocked=!1}get isInvisible(){return(this._flags&he.Invisible)!==0}set isInvisible(t){t?this._flags|=he.Invisible:this._flags&=~he.Invisible}get isConst(){return(this._flags&he.Const)!==0}set isConst(t){t?this._flags|=he.Const:this._flags&=~he.Const}get isVerifiable(){return(this._flags&he.Verifiable)!==0}set isVerifiable(t){t?this._flags|=he.Verifiable:this._flags&=~he.Verifiable}get isPreset(){return(this._flags&he.Preset)!==0}set isPreset(t){t?this._flags|=he.Preset:this._flags&=~he.Preset}get isMTextAttribute(){return(this._mtextFlag&yr.MultiLine)!==0}set isMTextAttribute(t){t?this._mtextFlag|=yr.MultiLine:this._mtextFlag&=~yr.MultiLine}get isConstMTextAttribute(){return(this._mtextFlag&yr.ConstMultiLine)!==0}set isConstMTextAttribute(t){t?this._mtextFlag|=yr.ConstMultiLine:this._mtextFlag&=~yr.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}};Po.typeName="Attrib";let Ai=Po;const Ao=class Ao extends Ne{constructor(t){super(),this._blockName=t,this._position=new W,this._rotation=0,this._normal=new Y(0,0,1),this._scaleFactors=new W(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 blockTableRecord(){return this.database.tables.blockTable.getAt(this._blockName)}appendAttributes(t){this._attribs.set(t.objectId,t),t.ownerId=this.objectId}attributeIterator(){return new ni(this._attribs)}get blockTransform(){const t=this.blockTableRecord,e=(t==null?void 0:t.origin)??W.ORIGIN,s=new Ke().makeTranslation(-e.x,-e.y,-e.z),a=new Ke().makeScale(this._scaleFactors.x,this._scaleFactors.y,this._scaleFactors.z),h=new An().setFromAxisAngle(Y.Z_AXIS,this._rotation),u=new Ke().makeRotationFromQuaternion(h),m=new Ke().makeTranslation(this._position.x,this._position.y,this._position.z);return new Ke().multiplyMatrices(m,u).multiply(a).multiply(s)}subGetOsnapPoints(t,e,s,a,h){Ft.Insertion===t?a.push(this._position):h&&this.subEntityGetOsnapPoints(t,e,s,a,h)}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:a=>{s.textString=a}}})})}return t}get geometricExtents(){const t=new Nt,e=this.blockTableRecord;if(e!=null){const a=e.newIterator();for(const h of a)t.union(h.geometricExtents)}const s=this.blockTransform;return t.applyMatrix4(s),t}subWorldDraw(t){const e=this.blockTableRecord;if(e!=null){const s=this.blockTransform,a=[];return this._attribs.forEach(u=>{if(!u.isInvisible){const m=u.worldDraw(t);m&&a.push(m)}}),Jn.instance.draw(t,e,this.rgbColor,a,!0,s,this._normal)}else return t.group([])}subEntityGetOsnapPoints(t,e,s,a,h){var m;if(h===this.objectId)return;const u=(m=this.database)==null?void 0:m.tables.blockTable;if(u!=null){const b=u.getEntityById(h);if(b){const _=[];b.subGetOsnapPoints(t,e,s,_,h);const w=this.blockTransform;_.forEach(x=>{const A=x.clone().applyMatrix4(w);a.push(A)})}}}};Ao.typeName="BlockReference";let $n=Ao;const Eo=class Eo extends Le{constructor(t,e,s=Y.Z_AXIS){super(),this._geo=new Ja(t,e,0,Qt,s,Y.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,a){switch(t){case Ft.Center:case Ft.Centroid:a.push(this._geo.center);break;case Ft.Quadrant:a.push(this._geo.getPointAtAngle(0)),a.push(this._geo.getPointAtAngle(Math.PI/2)),a.push(this._geo.getPointAtAngle(Math.PI)),a.push(this._geo.getPointAtAngle(Math.PI/2*3));break;case Ft.Nearest:{const h=this._geo.nearestPoint(e);a.push(h)}break;case Ft.Tangent:{const h=this._geo.tangentPoints(e);a.push(...h);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)}};Eo.typeName="Circle";let Ei=Eo;const To=class To extends Le{constructor(t,e,s,a,h,u,m){super(),this._geo=new ea(t,e,s,a,h,u,m)}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,a){switch(t){case Ft.EndPoint:this.closed||(a.push(this._geo.startPoint),a.push(this._geo.endPoint));break;case Ft.MidPoint:this.closed||a.push(this._geo.midPoint);break;case Ft.Quadrant:this.closed&&(a.push(this._geo.getPointAtAngle(0)),a.push(this._geo.getPointAtAngle(Math.PI/2)),a.push(this._geo.getPointAtAngle(Math.PI)),a.push(this._geo.getPointAtAngle(Math.PI/2*3)));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:"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)}};To.typeName="Ellipse";let Ti=To;const Mo=class Mo extends Ne{constructor(){super(),this._vertices=[new W,new W,new W],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 W),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 Nt().setFromPoints(this._vertices)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subGetOsnapPoints(t,e,s,a){switch(t){case Ft.EndPoint:a.push(...this._vertices);break}}subWorldDraw(t){const e=this._vertices.length,s=new Float32Array(e*3),a=new Uint16Array(e*2);for(let h=0;h<e;h++)s[h*3]=this._vertices[h].x,s[h*3+1]=this._vertices[h].y,s[h*3+2]=this._vertices[h].z,this.isEdgeVisibleAt(h)&&(a[h*2]=h,a[h*2+1]=(h+1)%4);return t.lineSegments(s,3,a)}};Mo.typeName="Face";let Mi=Mo;var qs=(n=>(n[n.UserDefined=0]="UserDefined",n[n.Predefined=1]="Predefined",n[n.Custom=2]="Custom",n))(qs||{}),Ch=(n=>(n[n.Normal=0]="Normal",n[n.Outer=1]="Outer",n[n.Ignore=2]="Ignore",n))(Ch||{});const ko=class ko extends Ne{constructor(){super(),this._elevation=0,this._geo=new Ji,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)}get geometricExtents(){const t=this._geo.box;return new Nt({x:t.min.x,y:t.min.y,z:this._elevation},{x:t.max.x,y:t.max.y,z:this._elevation})}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"pattern",properties:[{name:"patternType",type:"enum",editable:!0,options:[{label:qs[0],value:0},{label:qs[1],value:1},{label:qs[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._geo.area}}]}]}}subWorldDraw(t){const e=t.subEntityTraits;return e.fillType={solidFill:this.isSolidFill,patternAngle:this.patternAngle,definitionLines:this.definitionLines},t.area(this._geo)}};ko.typeName="Hatch";let $s=ko;var Oh=(n=>(n[n.MText=0]="MText",n[n.Fcf=1]="Fcf",n[n.BlockReference=2]="BlockReference",n[n.NoAnnotation=3]="NoAnnotation",n))(Oh||{});const No=class No extends Le{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 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 W().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 Nt().setFromPoints(this._vertices)}get closed(){return!1}set closed(t){}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 nn(this._vertices,"Uniform"),this._updated=!1)}};No.typeName="Leader";let ki=No;var Ft=(n=>(n[n.EndPoint=1]="EndPoint",n[n.MidPoint=2]="MidPoint",n[n.Center=3]="Center",n[n.Node=4]="Node",n[n.Quadrant=5]="Quadrant",n[n.Insertion=7]="Insertion",n[n.Perpendicular=8]="Perpendicular",n[n.Tangent=9]="Tangent",n[n.Nearest=10]="Nearest",n[n.Centroid=11]="Centroid",n))(Ft||{});function id(n){let t=0;for(const e of n)t|=1<<e-1;return t}function ad(n){const t=[];for(const e of Object.values(Ft)){if(typeof e!="number")continue;const s=1<<e-1;n&s&&t.push(e)}return t}function od(n,t){return n^1<<t-1}function ld(n,t){return(n&1<<t-1)!==0}function hd(n,t){return n|1<<t-1}function ud(n,t){return n&~(1<<t-1)}const Lo=class Lo extends Le{constructor(t,e){super(),this._geo=new Yn(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,a){const h=this.startPoint,u=this.endPoint;switch(t){case Ft.EndPoint:a.push(h),a.push(u);break;case Ft.MidPoint:a.push(this.midPoint);break;case Ft.Nearest:{const m=this._geo.project(e);a.push(m)}break;case Ft.Perpendicular:{const m=this._geo.perpPoint(e);a.push(m)}break;case Ft.Tangent:break}}transformBy(t){return this._geo.transform(t),this}subWorldDraw(t){const e=this.startPoint,s=this.endPoint,a=[new W(e.x,e.y,0),new W(s.x,s.y,0)];return t.lines(a)}};Lo.typeName="Line";let Zs=Lo;const Co=class Co extends Ne{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 W,this._attachmentPoint=Se.TopLeft,this._direction=new Y(1,0,0),this._drawingDirection=Ur.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 Nt}subGetOsnapPoints(t,e,s,a){Ft.Insertion===t&&a.push(this._location)}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:Se[1],value:1},{label:Se[2],value:2},{label:Se[3],value:3},{label:Se[4],value:4},{label:Se[5],value:5},{label:Se[6],value:6},{label:Se[7],value:7},{label:Se[8],value:8},{label:Se[9],value:9}],accessor:{get:()=>this.attachmentPoint,set:t=>{this.attachmentPoint=t}}},{name:"drawingDirection",type:"enum",editable:!0,options:[{label:Ur[1],value:1},{label:Ur[2],value:2},{label:Ur[3],value:3},{label:Ur[4],value:4},{label:Ur[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;let e=t.getAt(this.styleName);return e||(e=t.getAt("STANDARD")||t.getAt("Standard")),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)}};Co.typeName="MText";let Qs=Co;const Oo=class Oo extends Le{constructor(t,e,s,a,h){super();const u=+(t!==void 0)+ +(e!==void 0)+ +(s!==void 0)+ +(a!==void 0)+ +(h!==void 0);if(u<2||u>5)throw $e.ILLEGAL_PARAMETERS;!Array.isArray(e)?this._geo=new nn(t,e,s,a):this._geo=new nn(t,e,s,a,h)}get geometricExtents(){return this._geo.box}get closed(){return this._geo.closed}set closed(t){this._geo.closed=t}subGetOsnapPoints(t,e,s,a){switch(t){case Ft.EndPoint:a.push(this._geo.startPoint),a.push(this._geo.endPoint);break}}subWorldDraw(t){const e=this._geo.getPoints(100);return t.lines(e)}};Oo.typeName="Spline";let Js=Oo;const cd=new Y,Bo=class Bo extends $n{constructor(t,e,s){super(t),this._attachmentPoint=Se.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){return this._cells[t*e].text}setTextString(t,e,s){this._cells[t*e].text=s}isEmpty(t,e){return!this._cells[t*e].text}get geometricExtents(){return new Nt}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 a=new Uint16Array(this.numColumns*this.numRows*8),h=new Float32Array((this.numColumns+1)*(this.numRows+1)*3);let u=0;for(let A=0;A<=this.numRows;A++){e-=A>0?this.rowHeight(A-1):0,s=0;for(let T=0;T<=this.numColumns;T++)s+=T>0?this.columnWidth(T-1):0,h[u++]=s,h[u++]=e,h[u++]=0}const m=[],b=new Array(this.numRows*this.numColumns).fill(!1);s=0,u=0;let _=0;for(let A=0;A<this.numColumns;A++){s+=A>0?this.columnWidth(A-1):0,e=0;for(let T=0;T<this.numRows;T++){e+=T>0?this.rowHeight(T-1):0;const L=this.cell(T*this.numColumns+A);if(_=T*this.numColumns+A,L&&!b[_]){const O=L.borderWidth??1,V=L.borderHeight??1;this.fillVisited(b,_,this.numColumns,O,V),a[u++]=A+T*(this.numColumns+1),a[u++]=A+T*(this.numColumns+1)+O;const F=h[a[u-1]*3]-s,at=A+(T+V)*(this.numColumns+1)+O;A+O==this.numColumns&&(a[u++]=A+T*(this.numColumns+1)+O,a[u++]=at);const ft=-h[at*3+1]-e;if(T+V==this.numRows&&(a[u++]=A+(T+V)*(this.numColumns+1)+V,a[u++]=A+(T+V)*(this.numColumns+1)),a[u++]=A+(T+V)*(this.numColumns+1),a[u++]=A+T*(this.numColumns+1),L.text){const st=L.attachmentPoint||this.attachmentPoint||Se.MiddleCenter,H=this.getTableTextOffset(st,F,ft),dt={text:L.text,height:L.textHeight,width:F,position:cd.set(s,-e,0).clone().add(H),rotation:this.rotation,attachmentPoint:st},it=this.getTextStyle(L);m.push(t.mtext(dt,it))}}}}m.push(t.lineSegments(h,3,a));const w=t.group(m),x=new An;return x.setFromAxisAngle(Y.Z_AXIS,this.rotation),Sl.compose(this.position,x,this.scaleFactors),w.applyMatrix(Sl),w}fillVisited(t,e,s,a,h){if(h==1&&a==1)t[e]=!0;else for(let u=0;u<a;++u)for(let m=0;m<h;++m)t[e+u+m*s]=!0}getTextStyle(t){const e=this.database.tables.textStyleTable;let s;return t.textStyle&&(s=e.getAt(t.textStyle)),s||(s=e.getAt("STANDARD")||e.getAt("Standard")),s.textStyle}getTableTextOffset(t,e,s){const a=new Y;switch(t){case 1:break;case 2:a.setX(e/2);break;case 3:a.setX(e);break;case 4:a.setY(-s/2);break;case 5:a.set(e/2,-s/2,0);break;case 6:a.set(e,-s/2,0);break;case 7:a.setY(-s);break;case 8:a.set(e/2,-s,0);break;case 9:a.set(e,-s,0);break}return a}};Bo.typeName="Table";let Ni=Bo;const Sl=new Ke,Ro=class Ro extends Le{constructor(){super(),this._elevation=0,this._thickness=1,this._vertices=[new W,new W,new W,new W]}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 Nt().setFromPoints(this._vertices)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subGetOsnapPoints(t,e,s,a){switch(t){case Ft.EndPoint:a.push(...this._vertices);break}}subWorldDraw(t){const e=new En(this._vertices,!0),s=new Ji;s.add(e);const a=t.subEntityTraits;return a.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},t.area(s)}};Ro.typeName="Trace";let Li=Ro;const zo=class zo extends Le{constructor(){super(),this._elevation=0,this._geo=new En}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,a=-1,h=-1){const u=a<0?void 0:a,m=h<0?void 0:h,b={x:e.x,y:e.y,bulge:s,startWidth:u,endWidth:m};this._geo.addVertexAt(t,b)}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 W(e.x,e.y,this._elevation)}get geometricExtents(){const t=this._geo.box;return new Nt({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,a){const h=new Array;for(let u=0;u<this.numberOfVertices;++u)h.push(this.getPoint3dAt(u));switch(t){case Ft.EndPoint:a.push(...h);break}}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(a=>e.push(new W().set(a.x,a.y,this.elevation))),t.lines(e)}};zo.typeName="Polyline";let Ci=zo;const Fo=class Fo extends Ne{constructor(){super(),this._geo=new W}get position(){return this._geo}set position(t){this._geo.set(t.x,t.y,t.z||0)}get geometricExtents(){return new Nt().expandByPoint(this._geo)}subGetOsnapPoints(t,e,s,a){Ft.Node===t&&a.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})}};Fo.typeName="Point";let Oi=Fo;var Bh=(n=>(n[n.Invalid=0]="Invalid",n[n.Rect=1]="Rect",n[n.Poly=2]="Poly",n))(Bh||{}),Rh=(n=>(n[n.Show=1]="Show",n[n.ShowUnAligned=2]="ShowUnAligned",n[n.Clip=4]="Clip",n[n.Transparent=8]="Transparent",n))(Rh||{});const Vo=class Vo extends Ne{constructor(){super(),this._brightness=50,this._contrast=50,this._fade=0,this._width=0,this._height=0,this._position=new W,this._scale=new te(1,1),this._rotation=0,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 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 Nt;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)}boundaryPath(){const t=[];if(this.isClipped&&this._clipBoundary.length>3){const e=this._width,s=this._height,a=new Ie;a.setFromPoints(this._clipBoundary);const h=new kt;h.setX(this._position.x-a.min.x*e),h.setY(this._position.y-a.min.y*s),this._clipBoundary.forEach(u=>{const m=u.x*e+h.x,b=u.y*s+h.y;t.push(new W(m,b,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){Il.copy(t[1]);for(let e=1;e<4;e++)ui.copy(t[e]),ui.rotateAround(Il,this._rotation),t[e].setX(ui.x),t[e].setY(ui.y)}t.push(t[0])}return t}};Vo.typeName="RasterImage";let ti=Vo;const Il=new kt,ui=new kt,Uo=class Uo extends Le{constructor(){super(),this._basePoint=new W,this._unitDir=new Y}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 Nt;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,a){switch(t){case Ft.EndPoint:a.push(this.basePoint);break}}subWorldDraw(t){const e=[];return e.push(this.basePoint),e.push(this._unitDir.clone().multiplyScalar(1e6).add(this._basePoint)),t.lines(e)}};Uo.typeName="Ray";let Bi=Uo;const jo=class jo extends Ne{constructor(){super(),this._centerPoint=new W,this._height=0,this._width=0,this._viewCenter=new W,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 Nt}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 Ah;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 W(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0),new W(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0)])),s.push(e.lines([new W(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0),new W(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0)])),s.push(e.lines([new W(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0),new W(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0)])),s.push(e.lines([new W(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0),new W(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0)])),s}};jo.typeName="Viewport";let Ri=jo;const Go=class Go extends ti{subWorldDraw(t){const e=this.boundaryPath(),s=new Ji;return s.add(new En(e)),t.area(s)}};Go.typeName="Wipeout";let zi=Go;const Wo=class Wo extends Le{constructor(){super(),this._basePoint=new W,this._unitDir=new Y}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 Nt;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}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)}};Wo.typeName="Xline";let Fi=Wo;var zh=(n=>(n[n.AtLeast=1]="AtLeast",n[n.Exactly=2]="Exactly",n))(zh||{});const Do=class Do extends Ne{constructor(){super(),this._dimBlockId=null,this._dimBlockPosition=new W,this._dimensionStyleName=null,this._dimensionText=null,this._textLineSpacingFactor=1,this._textLineSpacingStyle=1,this._textPosition=new W,this._textRotation=0,this._normal=new Y(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 Zn),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()}subWorldDraw(t){if(this.dimBlockId){const s=this.database.tables.blockTable.getAt(this.dimBlockId);if(s){const a=this.computeDimBlockTransform();return Jn.instance.draw(t,s,this.rgbColor,[],!1,a,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 a=new W().subVectors(e,t).normalize();return new W(e).addScaledVector(a,s)}findPointOnLine2(t,e,s){const a=t.x+s*Math.cos(e),h=t.y+s*Math.sin(e);return{x:a,y:h}}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():eo.Closed}computeDimBlockTransform(){const t=this.dimBlockId?this.database.tables.blockTable.getAt(this.dimBlockId):void 0,e=(t==null?void 0:t.origin)??W.ORIGIN,s=new Ke().makeTranslation(-e.x,-e.y,-e.z),a=new Ke().makeTranslation(this._dimBlockPosition.x,this._dimBlockPosition.y,this._dimBlockPosition.z);return new Ke().multiplyMatrices(a,s)}};Do.typeName="Dimension";let jr=Do;const Ho=class Ho extends jr{constructor(t,e,s,a,h=null,u=null){super(),this._centerPoint=new W().copy(t),this._xLine1Point=new W().copy(e),this._xLine2Point=new W().copy(s),this._arcPoint=new W().copy(a),this.dimensionText=h,this.dimensionStyleName=u}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)}get geometricExtents(){return new Nt}};Ho.typeName="3PointAngularDimension";let Vi=Ho;const qo=class qo extends jr{constructor(t,e,s,a=null,h=null){super(),this._dimLinePoint=new W().copy(s),this._xLine1Point=new W().copy(t),this._xLine2Point=new W().copy(e),this._oblique=0,this._rotation=0,this.calculateRotation(),a?this.dimensionText=a:this.dimensionText=this._xLine1Point.distanceTo(this._xLine2Point).toFixed(3),this.dimensionStyleName=h}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}get geometricExtents(){return new Nt}get isAppendArrow(){return!1}createDimBlock(t){const e=new ue;e.name=t;const s=this.createLines();s.forEach(m=>e.appendEntity(new Zs(m.startPoint,m.endPoint))),this.createArrows(s[0]).forEach(m=>e.appendEntity(m));const h=s[0].midPoint,u=this.createMText(h,this._rotation);return u&&e.appendEntity(u),e}createMText(t,e){const s=a=>({x:Math.cos(a),y:Math.sin(a),z:0});if(this.dimensionText){const a=new Qs;return a.attachmentPoint=Se.MiddleLeft,a.layer="0",a.color=new _e(ct.ByBlock),a.location=t,a.contents=this.dimensionText??"",a.height=10,a.direction=s(e),a.styleName=this.dimensionStyle.dimtxsty,a}}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 a="_CAXARROW",h=new $n(a);return h.position=t,h.rotation=e,h.scaleFactors={x:s,y:s,z:s},h}createLines(){const t=[],e=this.createExtensionLine(this._xLine1Point),s=this.createExtensionLine(this._xLine2Point),a=this.findIntersectionPoint(e,this._dimLinePoint),h=this.findIntersectionPoint(s,this._dimLinePoint),u=new Yn(a,h);return t.push(u),e.endPoint=a,this.adjustExtensionLine(e),t.push(e),s.endPoint=h,this.adjustExtensionLine(s),t.push(s),t}createExtensionLine(t){const e=this.rotation+Math.PI/2,s=this.findPointOnLine2(t,e,100);return new Yn(t,{...s,z:t.z})}findIntersectionPoint(t,e){const s=t.startPoint,a=t.endPoint,h=new Y().subVectors(a,s).normalize(),m=new Y().subVectors(e,s).dot(h),b=new Y().copy(h).multiplyScalar(m);return new Y().addVectors(s,b)}calculateRotation(){const t=this._xLine1Point,e=this._xLine2Point,s=e.x-t.x,a=e.y-t.y;this._rotation=Math.atan2(a,s)}};qo.typeName="AlignedDimension";let Ui=qo;const Xo=class Xo extends jr{constructor(t,e,s,a,h=null,u=null){super(),this._arcPoint=new W().copy(a),this._xLine1Point=new W().copy(e),this._xLine2Point=new W().copy(s),this._centerPoint=new W().copy(t),this.dimensionText=h,this.dimensionStyleName=u}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)}get geometricExtents(){return new Nt}};Xo.typeName="ArcDimension";let Ba=Xo;const Yo=class Yo extends jr{constructor(t,e,s=0,a=null,h=null){super(),this._chordPoint=new W().copy(t),this._farChordPoint=new W().copy(e),this._extArcStartAngle=0,this._extArcEndAngle=0,this._leaderLength=s,this.dimensionText=a,this.dimensionStyleName=h}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}get geometricExtents(){return new Nt}drawLines(t,e){const s=[],a=e.length;return a==1?s.push(this.drawLine(t,e[0],{firstArrow:this.firstArrowStyle})):a==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(h=>{s.push(this.drawLine(t,h))}),s}drawLine(t,e,s){if(s){const a=[e.startPoint,e.endPoint];return t.lines(a)}else return e.worldDraw(t)}sortLines(t){const e=(s,a)=>s.x!==a.x?s.x-a.x:s.y!==a.y?s.y-a.y:s.z-a.z;t.sort((s,a)=>{const h=e(s.startPoint,a.startPoint);return h!==0?h:e(s.endPoint,a.endPoint)})}};Yo.typeName="DiametricDimension";let ji=Yo;const Ko=class Ko extends jr{constructor(t,e,s=null,a=null){super(),this._definingPoint=new W().copy(t),this._leaderEndPoint=new W().copy(e),this.dimensionText=s,this.dimensionStyleName=a}get definingPoint(){return this._definingPoint}set definingPoint(t){this._definingPoint.copy(t)}get leaderEndPoint(){return this._leaderEndPoint}set leaderEndPoint(t){this._leaderEndPoint.copy(t)}get geometricExtents(){return new Nt}get arrowLineCount(){return 0}};Ko.typeName="OrdinateDimension";let Gi=Ko;const $o=class $o extends jr{constructor(t,e,s,a=null,h=null){super(),this._center=new W().copy(t),this._chordPoint=new W().copy(e),this._leaderLength=s,this._extArcStartAngle=0,this._extArcEndAngle=0,this.dimensionText=a,this.dimensionStyleName=h}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}get geometricExtents(){return new Nt}getLineArrowStyle(t){return{secondArrow:this.secondArrowStyle}}};$o.typeName="RadialDimension";let Wi=$o;class ra extends Gr{constructor(){super(),this._tabOrder=-1,this._tabSelected=!1,this._blockTableRecordId="",this._layoutName="",this._limits=new Ie,this._extents=new Nt}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)}}class Xs extends Gr{constructor(t){super(),this.database=t,this._recordsByName=new Map,this._recordsById=new Map}get numEntries(){return this._recordsByName.size}setAt(t,e){e.database=this.database,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,a)=>{s===e&&(this._recordsByName.delete(a),this.database.events.dictObjectErased.dispatch({database:this.database,object:e,key:a}))}),!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 ni(this._recordsByName)}}class Fh extends Xs{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 Vh extends Gr{constructor(){super(),this._sourceFileName=""}get sourceFileName(){return this._sourceFileName}set sourceFileName(t){this._sourceFileName=t}}var Uh=(n=>(n[n.NotApplicable=0]="NotApplicable",n[n.Ignore=1]="Ignore",n[n.Replace=2]="Replace",n[n.XrefMangleName=3]="XrefMangleName",n[n.MangleName=4]="MangleName",n))(Uh||{});class io extends Gr{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 io;return t._data=((e=this._data)==null?void 0:e.clone())??null,t}getDuplicateRecordCloning(){return 0}}class jh{constructor(t){this.db=t}createDefaultLayer(){const t=new _e;return t.colorIndex=7,this.db.tables.layerTable.add(new sa({name:"0",standardFlags:0,linetype:"Continuous",lineWeight:0,isOff:!1,color:t,isPlottable:!0}))}createDefaultLineType(){this.db.tables.linetypeTable.add(new Ks({name:"ByBlock",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new Ks({name:"ByLayer",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new Ks({name:"Continuous",standardFlag:0,description:"Solid line",totalPatternLength:0}))}createDefaultTextStyle(){this.db.tables.textStyleTable.add(new po({name:"Standard",standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"}))}createDefaultDimStyle(){this.db.tables.dimStyleTable.add(new Zn({name:"Standard",dimtxsty:"Standard"}))}createDefaultLayout(){const t=new ra;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 $s;e.patternName="SOLID";const s=new to;s.add(new Ds({x:0,y:0},{x:-1,y:.125})),s.add(new Ds({x:-1,y:.125},{x:-1,y:-.125})),s.add(new Ds({x:-1,y:-.125},{x:0,y:0})),e.add(s);const a=new ue;a.name="_CAXARROW",a.appendEntity(e),this.db.tables.blockTable.add(a)}}}var Gh=(n=>(n.ClosedFilled="",n.Dot="_DOT",n.DotSmall="_DOTSMALL",n.DotBlank="_DOTBLANK",n.Origin="_ORIGIN",n.Origin2="_ORIGIN2",n.Open="_OPEN",n.Open90="_OPEN90",n.Open30="_OPEN30",n.Closed="_CLOSED",n.Small="_SMALL",n.None="_NONE",n.Oblique="_OBLIQUE",n.BoxFilled="_BOXFILLED",n.Box="_BOXBLANK",n.ClosedBlank="_CLOSEDBLANK",n.DatumBlank="_DATUMBLANK",n.DatumFilled="_DATUMFILLED",n.Integral="_INTEGRAL",n.ArchTick="_ARCHTICK",n))(Gh||{});class ni{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}}}var ao=(n=>(n[n.Undefined=0]="Undefined",n[n.Inches=1]="Inches",n[n.Feet=2]="Feet",n[n.Miles=3]="Miles",n[n.Millimeters=4]="Millimeters",n[n.Centimeters=5]="Centimeters",n[n.Meters=6]="Meters",n[n.Kilometers=7]="Kilometers",n[n.Microinches=8]="Microinches",n[n.Mils=9]="Mils",n[n.Yards=10]="Yards",n[n.Angstroms=11]="Angstroms",n[n.Nanometers=12]="Nanometers",n[n.Microns=13]="Microns",n[n.Decimeters=14]="Decimeters",n[n.Dekameters=15]="Dekameters",n[n.Hectometers=16]="Hectometers",n[n.Gigameters=17]="Gigameters",n[n.Astronomical=18]="Astronomical",n[n.LightYears=19]="LightYears",n[n.Parsecs=20]="Parsecs",n[n.USSurveyFeet=21]="USSurveyFeet",n[n.USSurveyInch=22]="USSurveyInch",n[n.USSurveyYard=23]="USSurveyYard",n[n.USSurveyMile=24]="USSurveyMile",n[n.Max=24]="Max",n))(ao||{});function dd(n){return n==4||n==5||n==6||n==7||n==12||n==13||n==14||n==15||n==16||n==17}function pd(n){return n==1||n==2||n==3||n==8||n==9||n==10||n==21}const Wh="Load Database",Pl=3e4,md=12e4,gd=1024*1024;class Re extends Vl{constructor(t,e){super(t.stage),this.data=t,this.progress=e}async run(t){const e=Va.getInstance().getEntry(Wh),s=Date.now();this.progress&&await this.progress(this.data.progress.value,this.data.stage,"START");const a=await this.data.task(t);return this.progress&&(await this.progress(this.data.progress.value,this.data.stage,"END",a?a.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),a}}class oo{constructor(t={}){this.config=t}async read(t,e,s,a,h){const u={name:Wh,data:{total:0},format(){let w="";return Object.keys(this.data).forEach(x=>{x!=="total"&&(w+=`- ${x}: ${this.data[x]} ms
5
- `)}),w+=`- total: ${this.data.total} ms`,w}};Va.getInstance().collect(u),this.progress=a;const m={value:0},b=new Ul;b.setCompleteCallback(()=>this.onFinished()),b.setErrorCallback(w=>this.onError(w)),b.addTask(new Re({stage:"START",step:1,progress:m,task:async w=>w},a)),b.addTask(new Re({stage:"PARSE",step:5,progress:m,task:async w=>await this.parse(w,h)},a)),b.addTask(new Re({stage:"FONT",step:5,progress:m,task:async w=>{const x=this.getFonts(w.model);return{model:w.model,data:x}}},a)),b.addTask(new Re({stage:"LTYPE",step:1,progress:m,task:async w=>(this.processLineTypes(w.model,e),w)},a)),b.addTask(new Re({stage:"STYLE",step:1,progress:m,task:async w=>(this.processTextStyles(w.model,e),w)},a)),b.addTask(new Re({stage:"DIMSTYLE",step:1,progress:m,task:async w=>(this.processDimStyles(w.model,e),w)},a)),b.addTask(new Re({stage:"LAYER",step:1,progress:m,task:async w=>(this.processLayers(w.model,e),e.tables.layerTable.numEntries===0&&e.createDefaultData({layer:!0}),w)},a)),b.addTask(new Re({stage:"VPORT",step:1,progress:m,task:async w=>(this.processViewports(w.model,e),w)},a)),b.addTask(new Re({stage:"HEADER",step:1,progress:m,task:async w=>(this.processHeader(w.model,e),w)},a)),b.addTask(new Re({stage:"BLOCK_RECORD",step:5,progress:m,task:async w=>(this.processBlockTables(w.model,e),w)},a)),b.addTask(new Re({stage:"OBJECT",step:5,progress:m,task:async w=>(this.processObjects(w.model,e),e.objects.layout.numEntries===0&&e.createDefaultData({layout:!0}),w)},a)),b.addTask(new Re({stage:"BLOCK",step:5,progress:m,task:async w=>(await this.processBlocks(w.model,e),w)},a)),b.addTask(new Re({stage:"ENTITY",step:100,progress:m,task:async w=>(await this.processEntities(w.model,e,s,m,a),w)},a)),b.addTask(new Re({stage:"END",step:0,progress:m,task:async w=>w},a));const _=Date.now();await b.run(t),u.data.total=Date.now()-_}onError(t){if(this.progress){const e=t.task;this.progress(e.data.progress.value,e.data.stage,"ERROR",void 0,t)}return console.error(`Error occurred in conversion stage '${t.task.name}': `,t.error),t.task.name==="ENTITY"?!1:(this.onFinished(),!0)}onFinished(){this.progress&&(this.progress(100,"END","END"),Jn.instance.clear())}getParserWorkerTimeout(t,e){const s=e??this.config.timeout;if(s!=null)return s;const a=Math.ceil(t.byteLength/gd),h=Pl+a*1e3;return Math.min(md,Math.max(Pl,h))}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,a,h){throw new Error("Not impelemented yet!")}}var me,Ss,re,oe,Is,lr,Ae,Pr,hr,mn,Ps,As,gn,fn,Es,Ts,Ms,We,Ar,Yt,_n,ks,vt,Ee,Ns,Te,Ls,Er,Tr,ur,Cs,yn,De,Mr,vn,va,ba,kr,Nr,Os,Bs,Lr,Rs,xa,wa,ge,Cr,fe,He,Sa,Ia,Pa,Aa,Or,qe,bn,zs,xn,Xe,Br,Ye,Rr;(me={})[me.None=0]="None",me[me.Anonymous=1]="Anonymous",me[me.NonConstant=2]="NonConstant",me[me.Xref=4]="Xref",me[me.XrefOverlay=8]="XrefOverlay",me[me.ExternallyDependent=16]="ExternallyDependent",me[me.ResolvedOrDependent=32]="ResolvedOrDependent",me[me.ReferencedXref=64]="ReferencedXref";(Ss={})[Ss.BYBLOCK=0]="BYBLOCK",Ss[Ss.BYLAYER=256]="BYLAYER";(re={})[re.Rotated=0]="Rotated",re[re.Aligned=1]="Aligned",re[re.Angular=2]="Angular",re[re.Diameter=3]="Diameter",re[re.Radius=4]="Radius",re[re.Angular3Point=5]="Angular3Point",re[re.Ordinate=6]="Ordinate",re[re.ReferenceIsExclusive=32]="ReferenceIsExclusive",re[re.IsOrdinateXTypeFlag=64]="IsOrdinateXTypeFlag",re[re.IsCustomTextPositionFlag=128]="IsCustomTextPositionFlag";(oe={})[oe.TopLeft=1]="TopLeft",oe[oe.TopCenter=2]="TopCenter",oe[oe.TopRight=3]="TopRight",oe[oe.MiddleLeft=4]="MiddleLeft",oe[oe.MiddleCenter=5]="MiddleCenter",oe[oe.MiddleRight=6]="MiddleRight",oe[oe.BottomLeft=7]="BottomLeft",oe[oe.BottomCenter=8]="BottomCenter",oe[oe.BottomRight=9]="BottomRight";(Is={})[Is.AtLeast=1]="AtLeast",Is[Is.Exact=2]="Exact";var Al=((lr={})[lr.Center=0]="Center",lr[lr.Above=1]="Above",lr[lr.Outside=2]="Outside",lr[lr.JIS=3]="JIS",lr[lr.Below=4]="Below",lr),Wn=((Ae={})[Ae.Feet=0]="Feet",Ae[Ae.None=1]="None",Ae[Ae.Inch=2]="Inch",Ae[Ae.FeetAndInch=3]="FeetAndInch",Ae[Ae.Leading=4]="Leading",Ae[Ae.Trailing=8]="Trailing",Ae[Ae.LeadingAndTrailing=12]="LeadingAndTrailing",Ae),fd=((Pr={})[Pr.None=0]="None",Pr[Pr.Leading=1]="Leading",Pr[Pr.Trailing=2]="Trailing",Pr[Pr.LeadingAndTrailing=3]="LeadingAndTrailing",Pr),_d=((hr={})[hr.Center=0]="Center",hr[hr.Left=1]="Left",hr[hr.Right=2]="Right",hr[hr.OverFirst=3]="OverFirst",hr[hr.OverSecond=4]="OverSecond",hr),yd=((mn={})[mn.Bottom=0]="Bottom",mn[mn.Center=1]="Center",mn[mn.Top=2]="Top",mn),vd=((Ps={})[Ps.PatternFill=0]="PatternFill",Ps[Ps.SolidFill=1]="SolidFill",Ps);(As={})[As.NonAssociative=0]="NonAssociative",As[As.Associative=1]="Associative";(gn={})[gn.Normal=0]="Normal",gn[gn.Outer=1]="Outer",gn[gn.Ignore=2]="Ignore";(fn={})[fn.UserDefined=0]="UserDefined",fn[fn.Predefined=1]="Predefined",fn[fn.Custom=2]="Custom";(Es={})[Es.NotAnnotated=0]="NotAnnotated",Es[Es.Annotated=1]="Annotated";(Ts={})[Ts.Solid=0]="Solid",Ts[Ts.Gradient=1]="Gradient";(Ms={})[Ms.TwoColor=0]="TwoColor",Ms[Ms.OneColor=1]="OneColor";var bd=((We={})[We.Default=0]="Default",We[We.External=1]="External",We[We.Polyline=2]="Polyline",We[We.Derived=4]="Derived",We[We.Textbox=8]="Textbox",We[We.Outermost=16]="Outermost",We),ci=((Ar={})[Ar.Line=1]="Line",Ar[Ar.Circular=2]="Circular",Ar[Ar.Elliptic=3]="Elliptic",Ar[Ar.Spline=4]="Spline",Ar),xd=((Yt={})[Yt.Off=0]="Off",Yt[Yt.Solid=1]="Solid",Yt[Yt.Dashed=2]="Dashed",Yt[Yt.Dotted=3]="Dotted",Yt[Yt.ShotDash=4]="ShotDash",Yt[Yt.MediumDash=5]="MediumDash",Yt[Yt.LongDash=6]="LongDash",Yt[Yt.DoubleShortDash=7]="DoubleShortDash",Yt[Yt.DoubleMediumDash=8]="DoubleMediumDash",Yt[Yt.DoubleLongDash=9]="DoubleLongDash",Yt[Yt.DoubleMediumLongDash=10]="DoubleMediumLongDash",Yt[Yt.SparseDot=11]="SparseDot",Yt);xd.Off;(_n={})[_n.Standard=-3]="Standard",_n[_n.ByLayer=-2]="ByLayer",_n[_n.ByBlock=-1]="ByBlock";(ks={})[ks.English=0]="English",ks[ks.Metric=1]="Metric";(vt={})[vt.PERSPECTIVE_MODE=1]="PERSPECTIVE_MODE",vt[vt.FRONT_CLIPPING=2]="FRONT_CLIPPING",vt[vt.BACK_CLIPPING=4]="BACK_CLIPPING",vt[vt.UCS_FOLLOW=8]="UCS_FOLLOW",vt[vt.FRONT_CLIP_NOT_AT_EYE=16]="FRONT_CLIP_NOT_AT_EYE",vt[vt.UCS_ICON_VISIBILITY=32]="UCS_ICON_VISIBILITY",vt[vt.UCS_ICON_AT_ORIGIN=64]="UCS_ICON_AT_ORIGIN",vt[vt.FAST_ZOOM=128]="FAST_ZOOM",vt[vt.SNAP_MODE=256]="SNAP_MODE",vt[vt.GRID_MODE=512]="GRID_MODE",vt[vt.ISOMETRIC_SNAP_STYLE=1024]="ISOMETRIC_SNAP_STYLE",vt[vt.HIDE_PLOT_MODE=2048]="HIDE_PLOT_MODE",vt[vt.K_ISO_PAIR_TOP=4096]="K_ISO_PAIR_TOP",vt[vt.K_ISO_PAIR_RIGHT=8192]="K_ISO_PAIR_RIGHT",vt[vt.VIEWPORT_ZOOM_LOCKING=16384]="VIEWPORT_ZOOM_LOCKING",vt[vt.UNUSED=32768]="UNUSED",vt[vt.NON_RECTANGULAR_CLIPPING=65536]="NON_RECTANGULAR_CLIPPING",vt[vt.VIEWPORT_OFF=131072]="VIEWPORT_OFF",vt[vt.GRID_BEYOND_DRAWING_LIMITS=262144]="GRID_BEYOND_DRAWING_LIMITS",vt[vt.ADAPTIVE_GRID_DISPLAY=524288]="ADAPTIVE_GRID_DISPLAY",vt[vt.SUBDIVISION_BELOW_SPACING=1048576]="SUBDIVISION_BELOW_SPACING",vt[vt.GRID_FOLLOWS_WORKPLANE=2097152]="GRID_FOLLOWS_WORKPLANE";(Ee={})[Ee.OPTIMIZED_2D=0]="OPTIMIZED_2D",Ee[Ee.WIREFRAME=1]="WIREFRAME",Ee[Ee.HIDDEN_LINE=2]="HIDDEN_LINE",Ee[Ee.FLAT_SHADED=3]="FLAT_SHADED",Ee[Ee.GOURAUD_SHADED=4]="GOURAUD_SHADED",Ee[Ee.FLAT_SHADED_WITH_WIREFRAME=5]="FLAT_SHADED_WITH_WIREFRAME",Ee[Ee.GOURAUD_SHADED_WITH_WIREFRAME=6]="GOURAUD_SHADED_WITH_WIREFRAME";(Ns={})[Ns.UCS_UNCHANGED=0]="UCS_UNCHANGED",Ns[Ns.HAS_OWN_UCS=1]="HAS_OWN_UCS";(Te={})[Te.NON_ORTHOGRAPHIC=0]="NON_ORTHOGRAPHIC",Te[Te.TOP=1]="TOP",Te[Te.BOTTOM=2]="BOTTOM",Te[Te.FRONT=3]="FRONT",Te[Te.BACK=4]="BACK",Te[Te.LEFT=5]="LEFT",Te[Te.RIGHT=6]="RIGHT";(Ls={})[Ls.ONE_DISTANT_LIGHT=0]="ONE_DISTANT_LIGHT",Ls[Ls.TWO_DISTANT_LIGHTS=1]="TWO_DISTANT_LIGHTS";(Er={})[Er.ByLayer=0]="ByLayer",Er[Er.ByBlock=1]="ByBlock",Er[Er.ByDictionaryDefault=2]="ByDictionaryDefault",Er[Er.ByObject=3]="ByObject";function Pt(n,t,e){return n.code===t&&(e==null||n.value===e)}function zt(n){let t={};n.rewind();let e=n.next(),s=e.code;if(t.x=e.value,(e=n.next()).code!==s+10)throw Error("Expected code for point value to be 20 but got "+e.code+".");return t.y=e.value,(e=n.next()).code!==s+20?n.rewind():t.z=e.value,t}let lo=Symbol();function xt(n,t){return(e,s,a)=>{let h=function(b,_=!1){return b.reduce((w,x)=>{x.pushContext&&w.push({});let A=w[w.length-1];for(let T of typeof x.code=="number"?[x.code]:x.code){let L=A[T]??(A[T]=[]);x.isMultiple&&L.length&&_&&console.warn(`Snippet ${L[L.length-1].name} for code(${T}) is shadowed by ${x.name}`),L.push(x)}return w},[{}])}(n,s.debug),u=!1,m=h.length-1;for(;!Pt(e,0,"EOF");){let b=function(V,F,at){return V.find((ft,st)=>{var H;return st>=at&&((H=ft[F])==null?void 0:H.length)})}(h,e.code,m),_=b==null?void 0:b[e.code],w=_==null?void 0:_[_.length-1];if(!b||!w){s.rewind();break}w.isMultiple||b[e.code].pop();let{name:x,parser:A,isMultiple:T,isReducible:L}=w,O=A==null?void 0:A(e,s,a);if(O===lo){s.rewind();break}if(x){let[V,F]=function(at,ft){let st=ft.split(".");if(!st.length)throw Error("[parserGenerator::getObjectByPath] Invalid empty path");let H=at;for(let dt=0;dt<st.length-1;++dt){let it=Ea(st[dt]),Wt=Ea(st[dt+1]);Object.prototype.hasOwnProperty.call(H,it)||(typeof Wt=="number"?H[it]=[]:H[it]={}),H=H[it]}return[H,Ea(st[st.length-1])]}(a,x);T&&!L?(Object.prototype.hasOwnProperty.call(V,F)||(V[F]=[]),V[F].push(O)):V[F]=O}w.pushContext&&(m-=1),u=!0,e=s.next()}return t&&Object.setPrototypeOf(a,t),u}}function Ea(n){let t=Number.parseInt(n);return Number.isNaN(t)?n:t}function v({value:n}){return n}function D(n,t){return zt(t)}function Ut({value:n}){return!!n}let wd=[{code:1001,name:"xdata",parser:Dh}];function Dh(n,t){var a;if(!Pt(n,1001))throw Error("XData must starts with code 1001");let e={appName:n.value,value:[]};n=t.next();let s=[e.value];for(;!Pt(n,0,"EOF")&&n.code>=1e3;){let h=s[s.length-1];switch(n.code){case 1002:n.value==="{"?s.push([]):(s.pop(),(a=s[s.length-1])==null||a.push(h));break;case 1e3:case 1004:case 1040:case 1070:case 1071:h.push({type:zr(n.code),value:n.value});break;case 1003:h.push({name:"layer",type:zr(n.code),value:n.value});break;case 1005:h.push({name:"handle",type:zr(n.code),value:n.value});break;case 1010:h.push({type:zr(n.code),value:zt(t)});break;case 1011:h.push({name:"worldSpacePosition",type:zr(n.code),value:zt(t)});break;case 1012:h.push({name:"worldSpaceDisplacement",type:zr(n.code),value:zt(t)});break;case 1013:h.push({name:"worldSpaceDirection",type:zr(n.code),value:zt(t)});break;case 1041:h.push({name:"distance",type:zr(n.code),value:n.value});break;case 1042:h.push({name:"scale",type:zr(n.code),value:n.value})}n=t.next()}return t.rewind(),e}function zr(n){switch(n){case 1e3:case 1003:case 1005:return"string";case 1004:return"hex";case 1040:case 1041:case 1042:return"real";case 1070:return"integer";case 1071:return"long";case 1010:case 1011:case 1012:case 1013:return"point";default:return""}}function Pn(n,t,e){for(;Pt(n,102);){var s;let a=n.value;if(n=t.next(),!a.startsWith("{")){t.debug&&console.warn(`Invalid application group, expected to start with "{" but received: ${a}`),function(u,m){for(;!Pt(u,102)&&!Pt(u,0,"EOF");)u=m.next()}(n,t),n=t.next();continue}let h=a.slice(1).trim();e.extensions??(e.extensions={}),(s=e.extensions)[h]??(s[h]=[]),function(u,m,b){for(;!Pt(u,102,"}")&&!Pt(u,0,"EOF");)b.push(u),u=m.next()}(n,t,e.extensions[h]),n=t.next()}t.rewind()}let Sd=0;function Hh(n){if(!n)throw TypeError("entity cannot be undefined or null");n.handle||(n.handle=Sd++)}var Id=[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 qh(n){return Id[n]}(Tr={})[Tr.CAST_AND_RECEIVE=0]="CAST_AND_RECEIVE",Tr[Tr.CAST=1]="CAST",Tr[Tr.RECEIVE=2]="RECEIVE",Tr[Tr.IGNORE=3]="IGNORE";let Gt=[...wd,{code:284,name:"shadowMode",parser:v},{code:390,name:"plotStyleHardId",parser:v},{code:380,name:"plotStyleType",parser:v},{code:440,name:"transparency",parser:v},{code:430,name:"colorName",parser:v},{code:420,name:"color",parser:v},{code:310,name:"proxyEntity",isMultiple:!0,parser:v},{code:92,name:"proxyByte",parser:v},{code:60,name:"isVisible",parser:Ut},{code:48,name:"lineTypeScale",parser:v},{code:370,name:"lineweight",parser:v},{code:62,name:"colorIndex",parser(n,t,e){let s=n.value;return s>0&&s<256&&(e.color=qh(Math.abs(s))),s}},{code:347,name:"materialObjectHardId",parser:v},{code:6,name:"lineType",parser:v},{code:8,name:"layer",parser:v},{code:410,name:"layoutTabName",parser:v},{code:67,name:"isInPaperSpace",parser:Ut},{code:100},{code:160},{code:330,name:"ownerBlockRecordSoftId",parser:v},{code:102,parser:Pn},{code:102,parser:Pn},{code:102,parser:Pn},{code:5,name:"handle",parser:v}];function na(n){return[{code:3,name:n,parser:(t,e,s)=>(s._code3text=(s._code3text??"")+t.value,s._code3text+(s._code1text??"")),isMultiple:!0,isReducible:!0},{code:1,name:n,parser:(t,e,s)=>(s._code1text=t.value,(s._code3text??"")+s._code1text)}]}function Xh(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let Pd={extrusionDirection:{x:0,y:0,z:1}},Ad=[{code:210,name:"extrusionDirection",parser:D},{code:51,name:"endAngle",parser:v},{code:50,name:"startAngle",parser:v},{code:100,name:"subclassMarker",parser:v},{code:40,name:"radius",parser:v},{code:10,name:"center",parser:D},{code:39,name:"thickness",parser:v},{code:100},...Gt];class Yh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Xh(this,"parser",xt(Ad,Pd))}}Xh(Yh,"ForEntityName","ARC");(ur={})[ur.NONE=0]="NONE",ur[ur.INVISIBLE=1]="INVISIBLE",ur[ur.CONSTANT=2]="CONSTANT",ur[ur.VERIFICATION_REQUIRED=4]="VERIFICATION_REQUIRED",ur[ur.PRESET=8]="PRESET";(Cs={})[Cs.MULTILINE=2]="MULTILINE",Cs[Cs.CONSTANT_MULTILINE=4]="CONSTANT_MULTILINE";(yn={})[yn.NONE=0]="NONE",yn[yn.MIRRORED_X=2]="MIRRORED_X",yn[yn.MIRRORED_Y=4]="MIRRORED_Y";var Ed=((De={})[De.LEFT=0]="LEFT",De[De.CENTER=1]="CENTER",De[De.RIGHT=2]="RIGHT",De[De.ALIGNED=3]="ALIGNED",De[De.MIDDLE=4]="MIDDLE",De[De.FIT=5]="FIT",De),Td=((Mr={})[Mr.BASELINE=0]="BASELINE",Mr[Mr.BOTTOM=1]="BOTTOM",Mr[Mr.MIDDLE=2]="MIDDLE",Mr[Mr.TOP=3]="TOP",Mr);function Kh(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let $h={thickness:0,rotation:0,xScale:1,obliqueAngle:0,styleName:"STANDARD",generationFlag:0,halign:Ed.LEFT,valign:Td.BASELINE,extrusionDirection:{x:0,y:0,z:1}},Zh=[{code:73,name:"valign",parser:v},{code:100},{code:210,name:"extrusionDirection",parser:D},{code:11,name:"endPoint",parser:D},{code:72,name:"valign",parser:v},{code:72,name:"halign",parser:v},{code:71,name:"generationFlag",parser:v},{code:7,name:"styleName",parser:v},{code:51,name:"obliqueAngle",parser:v},{code:41,name:"xScale",parser:v},{code:50,name:"rotation",parser:v},{code:1,name:"text",parser:v},{code:40,name:"textHeight",parser:v},{code:10,name:"startPoint",parser:D},{code:39,name:"thickness",parser:v},{code:100,name:"subclassMarker",parser:v},...Gt];class Qh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Kh(this,"parser",xt(Zh,$h))}}function Jh(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Kh(Qh,"ForEntityName","TEXT");let Md={...$h},kd=[{code:2},{code:40,name:"annotationScale",parser:v},{code:10,name:"alignmentPoint",parser:D},{code:340,name:"secondaryAttributesHardIds",isMultiple:!0,parser:v},{code:70,name:"numberOfSecondaryAttributes",parser:v},{code:70,name:"isReallyLocked",parser:Ut},{code:70,name:"mtextFlag",parser:v},{code:280,name:"isDuplicatedRecord",parser:Ut},{code:100},{code:280,name:"isLocked",parser:Ut},{code:74,name:"valign",parser:v},{code:73},{code:70,name:"attributeFlag",parser:v},{code:2,name:"tag",parser:v},{code:3,name:"prompt",parser:v},{code:280},{code:100,name:"subclassMarker",parser:v},...Zh.slice(2)];class tu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Jh(this,"parser",xt(kd,Md))}}Jh(tu,"ForEntityName","ATTDEF");(vn={})[vn.LEFT_TO_RIGHT=1]="LEFT_TO_RIGHT",vn[vn.TOP_TO_BOTTOM=3]="TOP_TO_BOTTOM",vn[vn.BY_STYLE=5]="BY_STYLE";function Nd(n,t){let e={};for(let s of n){let a=t(s);a!=null&&(e[a]??(e[a]=[]),e[a].push(s))}return e}function*Di(n,t=1/0,e=1){for(let s=n;s!==t;s+=e)yield s}function en(n){return{x:n.x??0,y:n.y??0,z:n.z??0}}function ho(n,t,e){if(Pt(t,102))return Pn(t,e,n),!0;switch(t.code){case 0:n.type=t.value;break;case 5:n.handle=t.value;break;case 330:n.ownerBlockRecordSoftId=t.value;break;case 67:n.isInPaperSpace=!!t.value;break;case 8:n.layer=t.value;break;case 6:n.lineType=t.value;break;case 347:n.materialObjectHardId=t.value;break;case 62:n.colorIndex=t.value,n.color=qh(Math.abs(t.value));break;case 370:n.lineweight=t.value;break;case 48:n.lineTypeScale=t.value;break;case 60:n.isVisible=!!t.value;break;case 92:n.proxyByte=t.value;break;case 310:n.proxyEntity=t.value;break;case 100:break;case 420:n.color=t.value;break;case 430:n.transparency=t.value;break;case 390:n.plotStyleHardId=t.value;break;case 284:n.shadowMode=t.value;break;case 1001:n.xdata=Dh(t,e);break;default:return!1}return!0}function eu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let Ld={textStyle:"STANDARD",extrusionDirection:{x:0,y:0,z:1},rotation:0},gi=[{code:46,name:"annotationHeight",parser:v},{code:101,parser(n,t){(function(e){e.rewind();let s=e.next();if(s.code!==101)throw Error("Bad call for skipEmbeddedObject()");do s=e.next();while(s.code!==0);e.rewind()})(t)}},{code:50,name:"columnHeight",parser:v},{code:49,name:"columnGutter",parser:v},{code:48,name:"columnWidth",parser:v},{code:79,name:"columnAutoHeight",parser:v},{code:78,name:"columnFlowReversed",parser:v},{code:76,name:"columnCount",parser:v},{code:75,name:"columnType",parser:v},{code:441,name:"backgroundFillTransparency",parser:v},{code:63,name:"backgroundFillColor",parser:v},{code:45,name:"fillBoxScale",parser:v},{code:[...Di(430,440)],name:"backgroundColor",parser:v},{code:[...Di(420,430)],name:"backgroundColor",parser:v},{code:90,name:"backgroundFill",parser:v},{code:44,name:"lineSpacing",parser:v},{code:73,name:"lineSpacingStyle",parser:v},{code:50,name:"rotation",parser:v},{code:43},{code:42},{code:11,name:"direction",parser:D},{code:210,name:"extrusionDirection",parser:D},{code:7,name:"styleName",parser:v},...na("text"),{code:72,name:"drawingDirection",parser:v},{code:71,name:"attachmentPoint",parser:v},{code:41,name:"width",parser:v},{code:40,name:"height",parser:v},{code:10,name:"insertionPoint",parser:D},{code:100,name:"subclassMarker",parser:v},...Gt];class ru{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){eu(this,"parser",xt(gi,Ld))}}function nu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}eu(ru,"ForEntityName","MTEXT");let Cd={thickness:0,rotation:0,scale:1,obliqueAngle:0,textStyle:"STANDARD",textGenerationFlag:0,horizontalJustification:0,verticalJustification:0,extrusionDirection:{x:0,y:0,z:1}},Od=[...gi.slice(gi.findIndex(({name:n})=>n==="columnType"),gi.findIndex(({name:n})=>n==="subclassMarker")+1),{code:100},{code:0,parser(n){if(!Pt(n,0,"MTEXT"))return lo}},{code:2,name:"definitionTag",parser:v},{code:40,name:"annotationScale",parser:v},{code:10,name:"alignmentPoint",parser:D},{code:340,name:"secondaryAttributesHardId",parser:v},{code:70,name:"numberOfSecondaryAttributes",parser:v},{code:70,name:"isReallyLocked",parser:Ut},{code:70,name:"mtextFlag",parser:v},{code:280,name:"isDuplicatedEntriesKeep",parser:Ut},{code:100},{code:280,name:"lockPositionFlag",parser:Ut},{code:210,name:"extrusionDirection",parser:D},{code:11,name:"alignmentPoint",parser:D},{code:74,name:"verticalJustification",parser:v},{code:72,name:"horizontalJustification",parser:v},{code:71,name:"textGenerationFlag",parser:v},{code:7,name:"textStyle",parser:v},{code:51,name:"obliqueAngle",parser:v},{code:41,name:"scale",parser:v},{code:50,name:"rotation",parser:v},{code:73},{code:70,name:"attributeFlag",parser:v},{code:2,name:"tag",parser:v},{code:280},{code:100,name:"subclassMarker",parser:v},{code:1,name:"text",parser:v},{code:40,name:"textHeight",parser:v},{code:10,name:"startPoint",parser:D},{code:39,name:"thickness",parser:v},{code:100},...Gt];class su{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){nu(this,"parser",xt(Od,Cd))}}function iu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}nu(su,"ForEntityName","ATTRIB");let Bd=[...na("data"),{code:70,name:"version",parser:v},{code:100,name:"subclassMarker",parser:v},...Gt];class au{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){iu(this,"parser",xt(Bd))}}function ou(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}iu(au,"ForEntityName","BODY");let Rd={thickness:0,extrusionDirection:{x:0,y:0,z:1}},zd=[{code:210,name:"extrusionDirection",parser:D},{code:40,name:"radius",parser:v},{code:10,name:"center",parser:D},{code:39,name:"thickness",parser:v},{code:100,name:"subclassMarker",parser:v},...Gt];class lu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){ou(this,"parser",xt(zd,Rd))}}ou(lu,"ForEntityName","CIRCLE");class fi{parseEntity(t,e){let s={};for(;!Pt(e,0,"EOF");){if(e.code===0){t.rewind();break}(function(a,h,u){switch(h.code){case 100:a.subclassMarker=h.value;break;case 280:a.version=h.value;break;case 2:a.name=h.value;break;case 10:a.definitionPoint=zt(u);break;case 11:a.textPoint=zt(u);break;case 12:a.insertionPoint=zt(u);break;case 13:a.subDefinitionPoint1=zt(u);break;case 14:a.subDefinitionPoint2=zt(u);break;case 15:a.centerPoint=zt(u);break;case 16:a.arcPoint=zt(u);break;case 70:a.dimensionType=h.value;break;case 71:a.attachmentPoint=h.value;break;case 72:a.textLineSpacingStyle=h.value;break;case 40:a.leaderLength=h.value;break;case 41:a.textLineSpacingFactor=h.value;break;case 42:a.measurement=h.value;break;case 1:a.text=h.value;break;case 50:a.rotationAngle=h.value;break;case 52:a.obliqueAngle=h.value;break;case 53:a.textRotation=h.value;break;case 51:a.ocsRotation=h.value;break;case 210:a.extrusionDirection=zt(u);break;case 3:a.styleName=h.value;break;default:ho(a,h,u)}})(s,e,t),e=t.next()}return s}}function hu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}ba="DIMENSION",(va="ForEntityName")in fi?Object.defineProperty(fi,va,{value:ba,enumerable:!0,configurable:!0,writable:!0}):fi[va]=ba;let Fd={extrusionDirection:{x:0,y:0,z:1}},Vd=[{code:42,name:"endAngle",parser:v},{code:41,name:"startAngle",parser:v},{code:40,name:"axisRatio",parser:v},{code:210,name:"extrusionDirection",parser:D},{code:11,name:"majorAxisEndPoint",parser:D},{code:10,name:"center",parser:D},{code:100,name:"subclassMarker",parser:v},...Gt];class uu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){hu(this,"parser",xt(Vd,Fd))}}hu(uu,"ForEntityName","ELLIPSE");(kr={})[kr.First=1]="First",kr[kr.Second=2]="Second",kr[kr.Third=4]="Third",kr[kr.Fourth=8]="Fourth";function cu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let Ud=[{code:13,name:"vertices.3",parser:D},{code:12,name:"vertices.2",parser:D},{code:11,name:"vertices.1",parser:D},{code:10,name:"vertices.0",parser:D},{code:100,name:"subclassMarker",parser:v},...Gt];class du{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){cu(this,"parser",xt(Ud))}}cu(du,"ForEntityName","3DFACE");let pu=[{code:330,name:"sourceBoundaryObjects",parser:v,isMultiple:!0},{code:97,name:"numberOfSourceBoundaryObjects",parser:v}],jd=[{code:11,name:"end",parser:D},{code:10,name:"start",parser:D}],Gd=[{code:73,name:"isCCW",parser:Ut},{code:51,name:"endAngle",parser:v},{code:50,name:"startAngle",parser:v},{code:40,name:"radius",parser:v},{code:10,name:"center",parser:D}],Wd=[{code:73,name:"isCCW",parser:Ut},{code:51,name:"endAngle",parser:v},{code:50,name:"startAngle",parser:v},{code:40,name:"lengthOfMinorAxis",parser:v},{code:11,name:"end",parser:D},{code:10,name:"center",parser:D}],Dd=[{code:13,name:"endTangent",parser:D},{code:12,name:"startTangent",parser:D},{code:11,name:"fitDatum",isMultiple:!0,parser:D},{code:97,name:"numberOfFitData",parser:v},{code:10,name:"controlPoints",isMultiple:!0,parser(n,t){let e={...zt(t),weight:1};return(n=t.next()).code===42?e.weight=n.value:t.rewind(),e}},{code:40,name:"knots",isMultiple:!0,parser:v},{code:96,name:"numberOfControlPoints",parser:v},{code:95,name:"numberOfKnots",parser:v},{code:74,name:"isPeriodic",parser:Ut},{code:73,name:"splineFlag",parser:v},{code:94,name:"degree",parser:v}],Hd={[ci.Line]:jd,[ci.Circular]:Gd,[ci.Elliptic]:Wd,[ci.Spline]:Dd},qd=[...pu,{code:72,name:"edges",parser(n,t){let e={type:n.value},s=xt(Hd[e.type]);if(!s)throw Error(`Invalid edge type ${e.type}`);return s(n=t.next(),t,e),e},isMultiple:!0},{code:93,name:"numberOfEdges",parser:v}],Xd=[...pu,{code:10,name:"vertices",parser(n,t){let e={...zt(t),bulge:0};return(n=t.next()).code===42?e.bulge=n.value:t.rewind(),e},isMultiple:!0},{code:93,name:"numberOfVertices",parser:v},{code:73,name:"isClosed",parser:Ut},{code:72,name:"hasBulge",parser:Ut}],Yd=[{code:49,name:"dashLengths",parser:v,isMultiple:!0},{code:79,name:"numberOfDashLengths",parser:v},{code:45,name:"offset",parser:El},{code:43,name:"base",parser:El},{code:53,name:"angle",parser:v}];function El(n,t){let e=n.code+1,s={x:n.value,y:1};return(n=t.next()).code===e?s.y=n.value:t.rewind(),s}function mu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let Kd={extrusionDirection:{x:0,y:0,z:1},gradientRotation:0,colorTint:0},$d=[{code:470},{code:463},{code:462,name:"colorTint",parser:v},{code:461,name:"gradientDefinition",parser:v},{code:460,name:"gradientRotation",parser:v},{code:453,name:"numberOfColors",parser:v},{code:452,name:"gradientColorFlag",parser:v},{code:451},{code:450,name:"gradientFlag",parser:v},{code:10,name:"seedPoints",parser:D,isMultiple:!0},{code:99},{code:11,name:"offsetVector",parser:D},{code:98,name:"numberOfSeedPoints",parser:v},{code:47,name:"pixelSize",parser:v},{code:53,name:"definitionLines",parser:function(n,t){let e={};return xt(Yd)(n,t,e),e},isMultiple:!0},{code:78,name:"numberOfDefinitionLines",parser:v},{code:77,name:"isDouble",parser:Ut},{code:73,name:"isAnnotated",parser:Ut},{code:41,name:"patternScale",parser:v},{code:52,name:"patternAngle",parser:v},{code:76,name:"patternType",parser:v},{code:75,name:"hatchStyle",parser:v},{code:92,name:"boundaryPaths",parser:function(n,t){let e={boundaryPathTypeFlag:n.value},s=e.boundaryPathTypeFlag&bd.Polyline;return n=t.next(),s?xt(Xd)(n,t,e):xt(qd)(n,t,e),e},isMultiple:!0},{code:91,name:"numberOfBoundaryPaths",parser:v},{code:71,name:"associativity",parser:v},{code:63,name:"patternFillColor",parser:v},{code:70,name:"solidFill",parser:v},{code:2,name:"patternName",parser:v},{code:210,name:"extrusionDirection",parser:D},{code:10,name:"elevationPoint",parser:D},{code:100,name:"subclassMarker",parser:v,pushContext:!0},...Gt];class gu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){mu(this,"parser",xt($d,Kd))}}mu(gu,"ForEntityName","HATCH");(Nr={})[Nr.ShowImage=1]="ShowImage",Nr[Nr.ShowImageWhenNotAlignedWithScreen=2]="ShowImageWhenNotAlignedWithScreen",Nr[Nr.UseClippingBoundary=4]="UseClippingBoundary",Nr[Nr.TransparencyIsOn=8]="TransparencyIsOn";(Os={})[Os.Rectangular=1]="Rectangular",Os[Os.Polygonal=2]="Polygonal";(Bs={})[Bs.Outside=0]="Outside",Bs[Bs.Inside=1]="Inside";function fu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let Zd={brightness:50,contrast:50,fade:0,clippingBoundaryPath:[]},Qd=[{code:290,name:"clipMode",parser:v},{code:14,name:"clippingBoundaryPath",isMultiple:!0,parser:D},{code:91,name:"countBoundaryPoints",parser:v},{code:71,name:"clippingBoundaryType",parser:v},{code:360,name:"imageDefReactorHandle",parser:v},{code:283,name:"fade",parser:v},{code:282,name:"contrast",parser:v},{code:281,name:"brightness",parser:v},{code:280,name:"isClipped",parser:Ut},{code:70,name:"flags",parser:v},{code:340,name:"imageDefHandle",parser:v},{code:13,name:"imageSize",parser:D},{code:12,name:"vPixel",parser:D},{code:11,name:"uPixel",parser:D},{code:10,name:"position",parser:D},{code:90,name:"version",parser:v},{code:100,name:"subclassMarker",parser:v},...Gt];class _u{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){fu(this,"parser",xt(Qd,Zd))}}function yu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}fu(_u,"ForEntityName","IMAGE");let Jd={xScale:1,yScale:1,zScale:1,rotation:0,columnCount:0,rowCount:0,columnSpacing:0,rowSpacing:0,extrusionDirection:{x:0,y:0,z:1}},t0=[{code:210,name:"extrusionDirection",parser:D},{code:45,name:"rowSpacing",parser:v},{code:44,name:"columnSpacing",parser:v},{code:71,name:"rowCount",parser:v},{code:70,name:"columnCount",parser:v},{code:50,name:"rotation",parser:v},{code:43,name:"zScale",parser:v},{code:42,name:"yScale",parser:v},{code:41,name:"xScale",parser:v},{code:10,name:"insertionPoint",parser:D},{code:2,name:"name",parser:v},{code:66,name:"isVariableAttributes",parser:Ut},{code:100,name:"subclassMarker",parser:v},...Gt];class vu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){yu(this,"parser",xt(t0,Jd))}}function bu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}yu(vu,"ForEntityName","INSERT");let e0={isArrowheadEnabled:!0},r0=[{code:213,name:"offsetFromAnnotation",parser:D},{code:212,name:"offsetFromBlock",parser:D},{code:211,name:"horizontalDirection",parser:D},{code:210,name:"normal",parser:D},{code:340,name:"associatedAnnotation",parser:v},{code:77,name:"byBlockColor",parser:v},{code:10,name:"vertices",parser:D,isMultiple:!0},{code:76,name:"numberOfVertices",parser:v},{code:41,name:"textWidth",parser:v},{code:40,name:"textHeight",parser:v},{code:75,name:"isHooklineExists",parser:Ut},{code:74,name:"isHooklineSameDirection",parser:Ut},{code:73,name:"leaderCreationFlag",parser:v},{code:72,name:"isSpline",parser:Ut},{code:71,name:"isArrowheadEnabled",parser:Ut},{code:3,name:"styleName",parser:v},{code:100,name:"subclassMarker",parser:v},...Gt];class xu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){bu(this,"parser",xt(r0,e0))}}bu(xu,"ForEntityName","LEADER");(Lr={})[Lr.TextAnnotation=0]="TextAnnotation",Lr[Lr.ToleranceAnnotation=1]="ToleranceAnnotation",Lr[Lr.BlockReferenceAnnotation=2]="BlockReferenceAnnotation",Lr[Lr.NoAnnotation=3]="NoAnnotation";function wu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let n0={thickness:0,extrusionDirection:{x:0,y:0,z:1}},s0=[{code:210,name:"extrusionDirection",parser:D},{code:11,name:"endPoint",parser:D},{code:10,name:"startPoint",parser:D},{code:39,name:"thickness",parser:v},{code:100,name:"subclassMarker",parser:v},...Gt];class Su{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){wu(this,"parser",xt(s0,n0))}}wu(Su,"ForEntityName","LINE");(Rs={})[Rs.IS_CLOSED=1]="IS_CLOSED",Rs[Rs.PLINE_GEN=128]="PLINE_GEN";let i0={flag:0,elevation:0,thickness:0,extrusionDirection:{x:0,y:0,z:1},vertices:[]},a0={bulge:0},o0=[{code:42,name:"bulge",parser:v},{code:41,name:"endWidth",parser:v},{code:40,name:"startWidth",parser:v},{code:91,name:"id",parser:v},{code:20,name:"y",parser:v},{code:10,name:"x",parser:v}],l0=[{code:210,name:"extrusionDirection",parser:D},{code:10,name:"vertices",isMultiple:!0,parser(n,t){let e={};return xt(o0,a0)(n,t,e),e}},{code:39,name:"thickness",parser:v},{code:38,name:"elevation",parser:v},{code:43,name:"constantWidth",parser:v},{code:70,name:"flag",parser:v},{code:90,name:"numberOfVertices",parser:v},{code:100,name:"subclassMarker",parser:v},...Gt];class _i{parseEntity(t,e){let s={};return xt(l0,i0)(e,t,s),s}}function Iu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}wa="LWPOLYLINE",(xa="ForEntityName")in _i?Object.defineProperty(_i,xa,{value:wa,enumerable:!0,configurable:!0,writable:!0}):_i[xa]=wa;let h0=[{code:90,name:"overridenSubEntityCount",parser:v},{code:140,name:"edgeCreaseWeights",parser:v,isMultiple:!0},{code:95,name:"edgeCreaseCount",parser:v},{code:94,parser(n,t,e){e.edgeCount=n.value,e.edgeIndices=[];for(let s=0;s<e.edgeCount;++s){let a=[];n=t.next(),a[0]=n.value,n=t.next(),a[1]=n.value,e.edgeIndices.push(a)}}},{code:93,parser(n,t,e){e.totalFaceIndices=n.value,e.faceIndices=[];let s=[];for(let h=0;h<e.totalFaceIndices&&!Pt(n,0);++h)n=t.next(),s.push(n.value);let a=0;for(;a<s.length;){let h=s[a++],u=[];for(let m=0;m<h;++m)u.push(s[a++]);e.faceIndices.push(u)}}},{code:10,name:"vertices",parser:D,isMultiple:!0},{code:92,name:"verticesCount",parser:v},{code:91,name:"subdivisionLevel",parser:v},{code:40,name:"blendCrease",parser:v},{code:72,name:"isBlendCreased",parser:Ut},{code:71,name:"version",parser:v},{code:100,name:"subclassMarker",parser:function({value:n}){return n.trim()},pushContext:!0},...Gt];class Pu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Iu(this,"parser",xt(h0))}}function Au(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Iu(Pu,"ForEntityName","MESH");let u0={thickness:0,extrusionDirection:{x:0,y:0,z:1},angle:0},c0=[{code:50,name:"angle",parser:v},{code:210,name:"extrusionDirection",parser:D},{code:39,name:"thickness",parser:v},{code:10,name:"position",parser:D},{code:100,name:"subclassMarker",parser:v},...Gt];class Eu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Au(this,"parser",xt(c0,u0))}}Au(Eu,"ForEntityName","POINT");(ge={})[ge.CLOSED_POLYLINE=1]="CLOSED_POLYLINE",ge[ge.CURVE_FIT=2]="CURVE_FIT",ge[ge.SPLINE_FIT=4]="SPLINE_FIT",ge[ge.POLYLINE_3D=8]="POLYLINE_3D",ge[ge.POLYGON_3D=16]="POLYGON_3D",ge[ge.CLOSED_POLYGON=32]="CLOSED_POLYGON",ge[ge.POLYFACE=64]="POLYFACE",ge[ge.CONTINUOUS=128]="CONTINUOUS";var di=((Cr={})[Cr.NONE=0]="NONE",Cr[Cr.QUADRATIC=5]="QUADRATIC",Cr[Cr.CUBIC=6]="CUBIC",Cr[Cr.BEZIER=8]="BEZIER",Cr),d0=((fe={})[fe.CREATED_BY_CURVE_FIT=1]="CREATED_BY_CURVE_FIT",fe[fe.TANGENT_DEFINED=2]="TANGENT_DEFINED",fe[fe.NOT_USED=4]="NOT_USED",fe[fe.CREATED_BY_SPLINE_FIT=8]="CREATED_BY_SPLINE_FIT",fe[fe.SPLINE_CONTROL_POINT=16]="SPLINE_CONTROL_POINT",fe[fe.FOR_POLYLINE=32]="FOR_POLYLINE",fe[fe.FOR_POLYGON=64]="FOR_POLYGON",fe[fe.POLYFACE=128]="POLYFACE",fe);function Tu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let p0={startWidth:0,endWidth:0,bulge:0},m0=[{code:91,name:"id",parser:v},{code:[...Di(71,75)],name:"faces",isMultiple:!0,parser:v},{code:50,name:"tangentDirection",parser:v},{code:70,name:"flag",parser:v},{code:42,name:"bulge",parser:v},{code:41,name:"endWidth",parser:v},{code:40,name:"startWidth",parser:v},{code:30,name:"z",parser:v},{code:20,name:"y",parser:v},{code:10,name:"x",parser:v},{code:100,name:"subclassMarker",parser:v},{code:100},...Gt];class uo{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Tu(this,"parser",xt(m0,p0))}}function Mu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Tu(uo,"ForEntityName","VERTEX");let g0={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:[]},f0=[{code:0,name:"vertices",isMultiple:!0,parser:(n,t)=>Pt(n,0,"VERTEX")?(n=t.next(),new uo().parseEntity(t,n)):lo},{code:210,name:"extrusionDirection",parser:D},{code:75,name:"smoothType",parser:v},{code:74,name:"surfaceNDensity",parser:v},{code:73,name:"surfaceMDensity",parser:v},{code:72,name:"meshNVertexCount",parser:v},{code:71,name:"meshMVertexCount",parser:v},{code:41,name:"endWidth",parser:v},{code:40,name:"startWidth",parser:v},{code:70,name:"flag",parser:v},{code:39,name:"thickness",parser:v},{code:30,name:"elevation",parser:v},{code:20},{code:10},{code:66},{code:100,name:"subclassMarker",parser:v},...Gt];class ku{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Mu(this,"parser",xt(f0,g0))}}function Nu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Mu(ku,"ForEntityName","POLYLINE");let _0=[{code:11,name:"direction",parser:D},{code:10,name:"position",parser:D},{code:100,name:"subclassMarker",parser:v},...Gt];class Lu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Nu(this,"parser",xt(_0))}}function Cu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Nu(Lu,"ForEntityName","RAY");let y0=[...na("data"),{code:70,name:"version",parser:v},{code:100,name:"subclassMarker",parser:v},...Gt];class Ou{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Cu(this,"parser",xt(y0))}}function Bu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Cu(Ou,"ForEntityName","REGION");let v0={vertices:[],backLineVertices:[]},b0=[{code:360,name:"geometrySettingHardId",parser:v},{code:12,name:"backLineVertices",isMultiple:!0,parser:D},{code:93,name:"numberOfBackLineVertices",parser:v},{code:11,name:"vertices",isMultiple:!0,parser:D},{code:92,name:"verticesCount",parser:v},{code:[63,411],name:"indicatorColor",parser:v},{code:70,name:"indicatorTransparency",parser:v},{code:41,name:"bottomHeight",parser:v},{code:40,name:"topHeight",parser:v},{code:10,name:"verticalDirection",parser:D},{code:1,name:"name",parser:v},{code:91,name:"flag",parser:v},{code:90,name:"state",parser:v},{code:100,name:"subclassMarker",parser:v},...Gt];class Ru{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Bu(this,"parser",xt(b0,v0))}}function zu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Bu(Ru,"ForEntityName","SECTION");let x0={points:[],thickness:0,extrusionDirection:{x:0,y:0,z:1}},w0=[{code:210,name:"extrusionDirection",parser:D},{code:39,name:"thickness",parser:v},{code:[...Di(10,14)],name:"points",isMultiple:!0,parser:D},{code:100,name:"subclassMarker",parser:v},...Gt];class Fu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){zu(this,"parser",xt(w0,x0))}}function Vu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}zu(Fu,"ForEntityName","SOLID");let S0=[{code:350,name:"historyObjectSoftId",parser:v},{code:100,name:"subclassMarker",parser:v},...na("data"),{code:70,name:"version",parser:v},{code:100},...Gt];class Uu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Vu(this,"parser",xt(S0))}}Vu(Uu,"ForEntityName","3DSOLID");(He={})[He.NONE=0]="NONE",He[He.CLOSED=1]="CLOSED",He[He.PERIODIC=2]="PERIODIC",He[He.RATIONAL=4]="RATIONAL",He[He.PLANAR=8]="PLANAR",He[He.LINEAR=16]="LINEAR";function ju(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let I0={knotTolerance:1e-6,controlTolerance:1e-6,fitTolerance:1e-9,knotValues:[],controlPoints:[],fitPoints:[]},P0=[{code:11,name:"fitPoints",isMultiple:!0,parser:D},{code:10,name:"controlPoints",isMultiple:!0,parser:D},{code:41,name:"weights",isMultiple:!0,parser:v},{code:40,name:"knots",isMultiple:!0,parser:v},{code:13,name:"endTangent",parser:D},{code:12,name:"startTangent",parser:D},{code:44,name:"fitTolerance",parser:v},{code:43,name:"controlTolerance",parser:v},{code:42,name:"knotTolerance",parser:v},{code:74,name:"numberOfFitPoints",parser:v},{code:73,name:"numberOfControlPoints",parser:v},{code:72,name:"numberOfKnots",parser:v},{code:71,name:"degree",parser:v},{code:70,name:"flag",parser:v},{code:210,name:"normal",parser:D},{code:100,name:"subclassMarker",parser:v},...Gt];class Gu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){ju(this,"parser",xt(P0,I0))}}ju(Gu,"ForEntityName","SPLINE");class yi{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=en(zt(t)),e=t.lastReadGroup;break;case 11:s.directionVector=en(zt(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(a,h){let u=!1,m=!1,b={};for(;!a.isEOF()&&h.code!==0&&!m;)switch(h.code){case 171:if(u){m=!0;continue}b.cellType=h.value,u=!0,h=a.next();break;case 172:b.flagValue=h.value,h=a.next();break;case 173:b.mergedValue=h.value,h=a.next();break;case 174:b.autoFit=h.value,h=a.next();break;case 175:b.borderWidth=h.value,h=a.next();break;case 176:b.borderHeight=h.value,h=a.next();break;case 91:b.overrideFlag=h.value,h=a.next();break;case 178:b.virtualEdgeFlag=h.value,h=a.next();break;case 145:b.rotation=h.value,h=a.next();break;case 345:b.fieldObjetId=h.value,h=a.next();break;case 340:b.blockTableRecordId=h.value,h=a.next();break;case 146:b.blockScale=h.value,h=a.next();break;case 177:b.blockAttrNum=h.value,h=a.next();break;case 7:b.textStyle=h.value,h=a.next();break;case 140:b.textHeight=h.value,h=a.next();break;case 170:b.attachmentPoint=h.value,h=a.next();break;case 92:b.extendedCellFlags=h.value,h=a.next();break;case 285:b.rightBorderVisibility=!!(h.value??!0),h=a.next();break;case 286:b.bottomBorderVisibility=!!(h.value??!0),h=a.next();break;case 288:b.leftBorderVisibility=!!(h.value??!0),h=a.next();break;case 289:b.topBorderVisibility=!!(h.value??!0),h=a.next();break;case 301:(function(_,w,x){for(;x.code!==304;)switch(x.code){case 301:case 93:case 90:case 94:x=w.next();break;case 1:_.text=x.value,x=w.next();break;case 300:_.attrText=x.value,x=w.next();break;case 302:_.text=x.value?x.value:_.text,x=w.next();break;default:console.log(`Ignore code: ${x.code}, value: ${x.value}`),x=w.next()}})(b,a,h),h=a.next();break;default:return b}return u=!1,m=!1,b}(t,e)),e=t.lastReadGroup;break;default:ho(s,e,t),e=t.next()}}return s}}function Wu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Ia="ACAD_TABLE",(Sa="ForEntityName")in yi?Object.defineProperty(yi,Sa,{value:Ia,enumerable:!0,configurable:!0,writable:!0}):yi[Sa]=Ia;let A0=[{code:11,name:"xAxisDirection",parser:D},{code:210,name:"extrusionDirection",parser:D},{code:1,name:"text",parser:v},{code:10,name:"position",parser:D},{code:3,name:"styleName",parser:v},{code:100,name:"subclassMarker",parser:v},...Gt];class Du{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Wu(this,"parser",xt(A0))}}Wu(Du,"ForEntityName","TOLERANCE");class vi{parseEntity(t,e){let s={};for(;e!=="EOF";){if(e.code===0){t.rewind();break}!function(a,h,u){if(u==="EOF")return!1;switch(u.code){case 0:return!1;case 8:a.layer=u.value;break;case 100:a.subclassMarker=u.value;break;case 10:a.viewportCenter=en(zt(h));break;case 40:a.width=u.value;break;case 41:a.height=u.value;break;case 68:a.status=u.value;break;case 69:a.viewportId=u.value;break;case 12:a.displayCenter=zt(h);break;case 13:a.snapBase=zt(h);break;case 14:a.snapSpacing=zt(h);break;case 15:a.gridSpacing=zt(h);break;case 16:a.viewDirection=en(zt(h));break;case 17:a.targetPoint=en(zt(h));break;case 42:a.perspectiveLensLength=u.value;break;case 43:a.frontClipZ=u.value;break;case 44:a.backClipZ=u.value;break;case 45:a.viewHeight=u.value;break;case 50:a.snapAngle=u.value;break;case 51:a.viewTwistAngle=u.value;break;case 72:a.circleZoomPercent=u.value;break;case 331:a.frozenLayerIds??(a.frozenLayerIds=[]),a.frozenLayerIds.push(u.value);break;case 90:a.statusBitFlags=u.value;break;case 340:a.clippingBoundaryId=u.value;break;case 1:a.sheetName=u.value;break;case 281:a.renderMode=u.value;break;case 71:a.ucsPerViewport=u.value;break;case 110:a.ucsOrigin=en(zt(h));break;case 111:a.ucsXAxis=en(zt(h));break;case 112:a.ucsYAxis=en(zt(h));break;case 345:a.ucsId=u.value;break;case 346:a.ucsBaseId=u.value;break;case 79:a.orthographicType=u.value;break;case 146:a.elevation=u.value;break;case 170:a.shadePlotMode=u.value;break;case 61:a.majorGridFrequency=u.value;break;case 332:a.backgroundId=u.value;break;case 333:a.shadePlotId=u.value;break;case 348:a.visualStyleId=u.value;break;case 292:a.isDefaultLighting=!!u.value;break;case 282:a.defaultLightingType=u.value;break;case 141:a.brightness=u.value;break;case 142:a.contrast=u.value;break;case 63:case 421:case 431:a.ambientLightColor=u.value;break;case 361:a.sunId=u.value;break;case 335:case 343:case 344:case 91:a.softPointer=u.value}return!0}(s,t,e)&&ho(s,e,t),e=t.next()}return s}}Aa="VIEWPORT",(Pa="ForEntityName")in vi?Object.defineProperty(vi,Pa,{value:Aa,enumerable:!0,configurable:!0,writable:!0}):vi[Pa]=Aa;(Or={})[Or.ShowImage=1]="ShowImage",Or[Or.ShowImageWhenNotAligned=2]="ShowImageWhenNotAligned",Or[Or.UseClippingBoundary=4]="UseClippingBoundary",Or[Or.Transparency=8]="Transparency";function Hu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let E0={brightness:50,constrast:50,fade:0},T0=[{code:14,name:"boundary",isMultiple:!0,parser:D},{code:91,name:"numberOfVertices",parser:v},{code:71,name:"boundaryType",parser:v},{code:360,name:"imageDefReactorHardId",parser:v},{code:283,name:"fade",parser:v},{code:282,name:"contrast",parser:v},{code:281,name:"brightness",parser:v},{code:280,name:"isClipping",parser:Ut},{code:70,name:"displayFlag",parser:v},{code:340,name:"imageDefHardId",parser:v},{code:13,name:"imageSize",parser:D},{code:12,name:"vDirection",parser:D},{code:11,name:"uDirection",parser:D},{code:10,name:"position",parser:D},{code:90,name:"classVersion",parser:v},{code:100,name:"subclassMarker",parser:v},...Gt];class qu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Hu(this,"parser",xt(T0,E0))}}function Xu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Hu(qu,"ForEntityName","WIPEOUT");let M0=[{code:11,name:"direction",parser:D},{code:10,name:"position",parser:D},{code:100,name:"subclassMarker",parser:v},...Gt];class Yu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Xu(this,"parser",xt(M0))}}function Ku(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Xu(Yu,"ForEntityName","XLINE");let k0={},N0=[{code:170,name:"multileaderType",parser:v},{code:291,name:"doglegEnabled",parser:Ut},{code:40,name:"doglegLength",parser:v},{code:172,name:"contentType",parser:v},{code:3,name:"textContent",parser:v},{code:12,name:"textAnchor",parser:D},{code:344,name:"blockHandle",parser:v},{code:15,name:"blockPosition",parser:D},{code:302,name:"leaderSections",parser:function(n,t,e){let s,a={leaderLines:[]};for(;t.hasNext()&&(s=t.next()).code!==303;)switch(s.code){case 10:a.landingPoint=(s.value,zt(t));break;case 11:a.doglegVector=(s.value,zt(t));break;case 40:a.doglegLength=s.value;break;case 304:a.leaderLines.push(function(h,u,m){let b,_={vertices:[]};for(;u.hasNext()&&(b=u.next()).code!==305;)b.code===10&&_.vertices.push((b.value,zt(u)));return _}(0,t))}return a},isMultiple:!0},...Gt];class $u{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Ku(this,"parser",xt(N0,k0))}}Ku($u,"ForEntityName","MULTILEADER");let L0=Object.fromEntries([Yh,tu,su,au,lu,fi,uu,du,_u,vu,xu,Su,_i,Pu,ru,$u,Eu,ku,Lu,Ou,Ru,Fu,Uu,Gu,yi,Qh,Du,gu,uo,vi,qu,Yu].map(n=>[n.ForEntityName,new n]));function Zu(n,t){let e=[];for(;!Pt(n,0,"EOF");){if(n.code===0){if(n.value==="ENDBLK"||n.value==="ENDSEC"){t.rewind();break}let s=L0[n.value];if(s){let a=n.value;n=t.next();let h=s.parseEntity(t,n);h.type=a,Hh(h),e.push(h)}else t.debug&&console.warn(`Unsupported ENTITY type: ${n.value}`)}n=t.next()}return e}function C0(n,t){let e={};for(;!Pt(n,0,"EOF")&&!Pt(n,0,"ENDSEC");){if(Pt(n,0,"BLOCK")){let s=O0(n=t.next(),t);Hh(s),s.name&&(e[s.name]=s)}n=t.next()}return e}function O0(n,t){let e={};for(;!Pt(n,0,"EOF");){if(Pt(n,0,"ENDBLK")){for(n=t.next();!Pt(n,0,"EOF");){if(Pt(n,100,"AcDbBlockEnd"))return e;n=t.next()}break}switch(n.code){case 1:e.xrefPath=n.value;break;case 2:e.name=n.value;break;case 3:e.name2=n.value;break;case 5:e.handle=n.value;break;case 8:e.layer=n.value;break;case 10:e.position=zt(t);break;case 67:e.paperSpace=!!n.value&&n.value==1;break;case 70:n.value!==0&&(e.type=n.value);break;case 100:break;case 330:e.ownerHandle=n.value;break;case 0:e.entities=Zu(n,t)}n=t.next()}return e}function B0(n,t){let e=null,s={};for(;!Pt(n,0,"EOF")&&!Pt(n,0,"ENDSEC");)n.code===9?e=n.value:n.code===10?s[e]=zt(t):s[e]=n.value,n=t.next();return s}(qe={})[qe.NOT_APPLICABLE=0]="NOT_APPLICABLE",qe[qe.KEEP_EXISTING=1]="KEEP_EXISTING",qe[qe.USE_CLONE=2]="USE_CLONE",qe[qe.XREF_VALUE_NAME=3]="XREF_VALUE_NAME",qe[qe.VALUE_NAME=4]="VALUE_NAME",qe[qe.UNMANGLE_NAME=5]="UNMANGLE_NAME";let co=[{code:330,name:"ownerObjectId",parser:v},{code:102,parser:Pn},{code:102,parser:Pn},{code:102,parser:Pn},{code:5,name:"handle",parser:v}],R0=[{code:3,name:"entries",parser:(n,t)=>{let e={name:n.value};return(n=t.next()).code===350?e.objectSoftId=n.value:n.code===360?e.objectHardId=n.value:t.rewind(),e},isMultiple:!0},{code:281,name:"recordCloneFlag",parser:v},{code:280,name:"isHardOwned",parser:Ut},{code:100,name:"subclassMarker",parser:v},...co],z0=[{code:330,name:"imageDefReactorIdSoft",isMultiple:!0,parser:v},{code:90,name:"version",parser:v},{code:1,name:"fileName",parser:v},{code:10,name:"size",parser:D},{code:11,name:"sizeOfOnePixel",parser:D},{code:280,name:"isLoaded",parser:v},{code:281,name:"resolutionUnits",parser:v},{code:100,name:"subclassMarker",parser:v}];(bn={})[bn.NOUNIT=0]="NOUNIT",bn[bn.CENTIMETERS=2]="CENTIMETERS",bn[bn.INCH=5]="INCH";(zs={})[zs.PSLTSCALE=1]="PSLTSCALE",zs[zs.LIMCHECK=2]="LIMCHECK";(xn={})[xn.INCHES=0]="INCHES",xn[xn.MILLIMETERS=1]="MILLIMETERS",xn[xn.PIXELS=2]="PIXELS";(Xe={})[Xe.LAST_SCREEN_DISPLAY=0]="LAST_SCREEN_DISPLAY",Xe[Xe.DRAWING_EXTENTS=1]="DRAWING_EXTENTS",Xe[Xe.DRAWING_LIMITS=2]="DRAWING_LIMITS",Xe[Xe.VIEW_SPECIFIED=3]="VIEW_SPECIFIED",Xe[Xe.WINDOW_SPECIFIED=4]="WINDOW_SPECIFIED",Xe[Xe.LAYOUT_INFORMATION=5]="LAYOUT_INFORMATION";(Br={})[Br.AS_DISPLAYED=0]="AS_DISPLAYED",Br[Br.WIREFRAME=1]="WIREFRAME",Br[Br.HIDDEN=2]="HIDDEN",Br[Br.RENDERED=3]="RENDERED";(Ye={})[Ye.DRAFT=0]="DRAFT",Ye[Ye.PREVIEW=1]="PREVIEW",Ye[Ye.NORMAL=2]="NORMAL",Ye[Ye.PRESENTATION=3]="PRESENTATION",Ye[Ye.MAXIMUM=4]="MAXIMUM",Ye[Ye.CUSTOM=5]="CUSTOM";let Qu=[{code:333,name:"shadePlotId",parser:v},{code:149,name:"imageOriginY",parser:v},{code:148,name:"imageOriginX",parser:v},{code:147,name:"scaleFactor",parser:v},{code:78,name:"shadePlotCustomDPI",parser:v},{code:77,name:"shadePlotResolution",parser:v},{code:76,name:"shadePlotMode",parser:v},{code:75,name:"standardScaleType",parser:v},{code:7,name:"currentStyleSheet",parser:v},{code:74,name:"plotType",parser:v},{code:73,name:"plotRotation",parser:v},{code:72,name:"plotPaperUnit",parser:v},{code:70,name:"layoutFlag",parser:v},{code:143,name:"printScaleDenominator",parser:v},{code:142,name:"printScaleNumerator",parser:v},{code:141,name:"windowAreaYMax",parser:v},{code:140,name:"windowAreaXMax",parser:v},{code:49,name:"windowAreaYMin",parser:v},{code:48,name:"windowAreaXMin",parser:v},{code:47,name:"plotOriginY",parser:v},{code:46,name:"plotOriginX",parser:v},{code:45,name:"paperHeight",parser:v},{code:44,name:"paperWidth",parser:v},{code:43,name:"marginTop",parser:v},{code:42,name:"marginRight",parser:v},{code:41,name:"marginBottom",parser:v},{code:40,name:"marginLeft",parser:v},{code:6,name:"plotViewName",parser:v},{code:4,name:"paperSize",parser:v},{code:2,name:"configName",parser:v},{code:1,name:"pageSetupName",parser:v},{code:100,name:"subclassMarker",parser:v},...co],F0=[{code:346,name:"orthographicUcsId",parser:v},{code:345,name:"namedUcsId",parser:v},{code:331,name:"viewportId",parser:v},{code:330,name:"paperSpaceTableId",parser:v},{code:76,name:"orthographicType",parser:v},{code:17,name:"ucsYAxis",parser:D},{code:16,name:"ucsXAxis",parser:D},{code:13,name:"ucsOrigin",parser:D},{code:146,name:"elevation",parser:v},{code:15,name:"maxExtent",parser:D},{code:14,name:"minExtent",parser:D},{code:12,name:"insertionPoint",parser:D},{code:11,name:"maxLimit",parser:D},{code:10,name:"minLimit",parser:D},{code:71,name:"tabOrder",parser:v},{code:70,name:"controlFlag",parser:v},{code:1,name:"layoutName",parser:v},{code:100,name:"subclassMarker",parser:v},...Qu],V0=[{code:40,name:"wcsToOCSTransform",parser:Tl},{code:40,name:"ocsToWCSTransform",parser:Tl},{code:41,name:"backClippingDistance",parser:v},{code:73,name:"isBackClipping",parser:Ut,pushContext:!0},{code:40,name:"frontClippingDistance",parser:v},{code:72,name:"isFrontClipping",parser:Ut,pushContext:!0},{code:71,name:"isClipBoundaryDisplayed",parser:Ut},{code:11,name:"position",parser:D},{code:210,name:"normal",parser:D},{code:10,name:"boundaryVertices",parser:D,isMultiple:!0},{code:70,name:"boundaryCount",parser:v},{code:100,name:"subclassMarker",parser:v},{code:100},...co];function Tl(n,t){let e=[];for(let s=0;s<3&&Pt(n,40);++s){let a=[];for(let h=0;h<4&&Pt(n,40);++h)a.push(n.value),n=t.next();e.push(a)}return t.rewind(),e}let U0={LAYOUT:F0,PLOTSETTINGS:Qu,DICTIONARY:R0,SPATIAL_FILTER:V0,IMAGEDEF:z0};function j0(n,t){let e=[];for(;n.code!==0||!["EOF","ENDSEC"].includes(n.value);){let s=n.value,a=U0[s];if(n.code===0&&(a!=null&&a.length)){let h=xt(a),u={name:s};h(n=t.next(),t,u)?(e.push(u),n=t.peek()):n=t.next()}else n=t.next()}return{byName:Nd(e,({name:s})=>s)}}let es=[{code:100,name:"subclassMarker",parser:v},{code:330,name:"ownerObjectId",parser:v},{code:102,parser(n,t){for(;!Pt(n,0,"EOF")&&!Pt(n,102,"}");)n=t.next()}},{code:5,name:"handle",parser:v}],G0=xt([{code:310,name:"bmpPreview",parser:v},{code:281,name:"scalability",parser:v},{code:280,name:"explodability",parser:v},{code:70,name:"insertionUnits",parser:v},{code:340,name:"layoutObjects",parser:v},{code:2,name:"name",parser:v},{code:100,name:"subclassMarker",parser:v},...es]),W0=[{name:"DIMPOST",code:3},{name:"DIMAPOST",code:4},{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:"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:"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:Al.Above,defaultValueImperial:Al.Center},{name:"DIMZIN",code:78,defaultValue:Wn.Trailing,defaultValueImperial:Wn.Feet},{name:"DIMAZIN",code:79,defaultValue:fd.None},{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},{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:2,defaultValueImperial:4},{name:"DIMAUNIT",code:275,defaultValue:0},{name:"DIMFRAC",code:276,defaultValue:0},{name:"DIMLUNIT",code:277,defaultValue:2},{name:"DIMDSEP",code:278,defaultValue:",",defaultValueImperial:"."},{name:"DIMJUST",code:280,defaultValue:_d.Center},{name:"DIMSD1",code:281,defaultValue:0},{name:"DIMSD2",code:282,defaultValue:0},{name:"DIMTOLJ",code:283,defaultValue:yd.Center},{name:"DIMTZIN",code:284,defaultValue:Wn.Trailing,defaultValueImperial:Wn.Feet},{name:"DIMALTZ",code:285,defaultValue:Wn.Trailing},{name:"DIMALTTZ",code:286,defaultValue:Wn.Trailing},{name:"DIMFIT",code:287},{name:"DIMUPT",code:288,defaultValue:0},{name:"DIMATFIT",code:289,defaultValue:3},{name:"DIMTXSTY",code:340},{name:"DIMLDRBLK",code:341},{name:"DIMBLK",code:342},{name:"DIMBLK1",code:343},{name:"DIMBLK2",code:344},{name:"DIMLWD",code:371,defaultValue:-2},{name:"DIMLWD",code:372,defaultValue:-2}],D0=xt([...W0.map(n=>({...n,parser:v})),{code:70,name:"standardFlag",parser:v},{code:2,name:"name",parser:v},{code:100,name:"subclassMarker",parser:v},{code:105,name:"handle",parser:v},...es.filter(n=>n.code!==5)]),H0=xt([{code:347,name:"materialObjectId",parser:v},{code:390,name:"plotStyleNameObjectId",parser:v},{code:370,name:"lineweight",parser:v},{code:290,name:"isPlotting",parser:Ut},{code:6,name:"lineType",parser:v},{code:62,name:"colorIndex",parser:v},{code:70,name:"standardFlag",parser:v},{code:2,name:"name",parser:v},{code:100,name:"subclassMarker",parser:v},...es]);(Rr={})[Rr.NONE=0]="NONE",Rr[Rr.AbsoluteRotation=1]="AbsoluteRotation",Rr[Rr.TextEmbedded=2]="TextEmbedded",Rr[Rr.ShapeEmbedded=4]="ShapeEmbedded";let q0=xt([{code:9,name:"text",parser:v},{code:45,name:"offsetY",parser:v},{code:44,name:"offsetX",parser:v},{code:50,name:"rotation",parser:v},{code:46,name:"scale",parser:v},{code:340,name:"styleObjectId",parser:v},{code:75,name:"shapeNumber",parser:v},{code:74,name:"elementTypeFlag",parser:v},{code:49,name:"elementLength",parser:v}],{elementTypeFlag:0,elementLength:0}),X0=xt([{code:49,name:"pattern",parser(n,t){let e={};return q0(n,t,e),e},isMultiple:!0},{code:40,name:"totalPatternLength",parser:v},{code:73,name:"numberOfLineTypes",parser:v},{code:72,parser:v},{code:3,name:"description",parser:v},{code:70,name:"standardFlag",parser:v},{code:2,name:"name",parser:v},{code:100,name:"subclassMarker",parser:v},...es]),Y0=xt([{code:1e3,name:"extendedFont",parser:v},{code:1001},{code:4,name:"bigFont",parser:v},{code:3,name:"font",parser:v},{code:42,name:"lastHeight",parser:v},{code:71,name:"textGenerationFlag",parser:v},{code:50,name:"obliqueAngle",parser:v},{code:41,name:"widthFactor",parser:v},{code:40,name:"fixedTextHeight",parser:v},{code:70,name:"standardFlag",parser:v},{code:2,name:"name",parser:v},{code:100,name:"subclassMarker",parser:v},...es]),K0=xt([{code:[63,421,431],name:"ambientColor",parser:v},{code:142,name:"contrast",parser:v},{code:141,name:"brightness",parser:v},{code:282,name:"defaultLightingType",parser:v},{code:292,name:"isDefaultLightingOn",parser:Ut},{code:348,name:"visualStyleObjectId",parser:v},{code:333,name:"shadePlotObjectId",parser:v},{code:332,name:"backgroundObjectId",parser:v},{code:61,name:"majorGridLines",parser:v},{code:170,name:"shadePlotSetting",parser:v},{code:146,name:"elevation",parser:v},{code:79,name:"orthographicType",parser:v},{code:112,name:"ucsYAxis",parser:D},{code:111,name:"ucsXAxis",parser:D},{code:110,name:"ucsOrigin",parser:D},{code:74,name:"ucsIconSetting",parser:v},{code:71,name:"viewMode",parser:v},{code:281,name:"renderMode",parser:v},{code:1,name:"styleSheet",parser:v},{code:[331,441],name:"frozenLayers",parser:v,isMultiple:!0},{code:72,name:"circleSides",parser:v},{code:51,name:"viewTwistAngle",parser:v},{code:50,name:"snapRotationAngle",parser:v},{code:45,name:"viewHeight",parser:v},{code:44,name:"backClippingPlane",parser:v},{code:43,name:"frontClippingPlane",parser:v},{code:42,name:"lensLength",parser:v},{code:17,name:"viewTarget",parser:D},{code:16,name:"viewDirectionFromTarget",parser:D},{code:15,name:"gridSpacing",parser:D},{code:14,name:"snapSpacing",parser:D},{code:13,name:"snapBasePoint",parser:D},{code:12,name:"center",parser:D},{code:11,name:"upperRightCorner",parser:D},{code:10,name:"lowerLeftCorner",parser:D},{code:70,name:"standardFlag",parser:v},{code:2,name:"name",parser:v},{code:100,name:"subclassMarker",parser:v},...es]),$0={BLOCK_RECORD:G0,DIMSTYLE:D0,LAYER:H0,LTYPE:X0,STYLE:Y0,VPORT:K0},Z0=xt([{code:70,name:"maxNumberOfEntries",parser:v},{code:100,name:"subclassMarker",parser:v},{code:330,name:"ownerObjectId",parser:v},{code:102},{code:360,isMultiple:!0},{code:102},{code:5,name:"handle",parser:v},{code:2,name:"name",parser:v}]);function Q0(n,t){var s;let e={};for(;!Pt(n,0,"EOF")&&!Pt(n,0,"ENDSEC");){if(Pt(n,0,"TABLE")){n=t.next();let a={entries:[]};Z0(n,t,a),e[a.name]=a}if(Pt(n,0)&&!Pt(n,0,"ENDTAB")){let a=n.value;n=t.next();let h=$0[a];if(!h){t.debug&&console.warn(`parseTable: Invalid table name '${a}'`),n=t.next();continue}let u={};h(n,t,u),(s=e[a])==null||s.entries.push(u)}n=t.next()}return e}function Fs(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}class Ml{next(){if(!this.hasNext())return this._eof?this.debug&&console.warn("Cannot call 'next' after EOF group has been read"):this.debug&&console.warn("Unexpected end of input: EOF group not read before end of file. Ended on code "+this._data[this._pointer]),{code:0,value:"EOF"};let t=parseInt(this._data[this._pointer++],10),e=kl(t,this._data[this._pointer++],this.debug),s={code:t,value:e};return Pt(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=kl(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){Fs(this,"_data",void 0),Fs(this,"debug",void 0),Fs(this,"_pointer",void 0),Fs(this,"_eof",void 0),Fs(this,"lastReadGroup",void 0),this._data=t,this.debug=e,this.lastReadGroup={code:0,value:0},this._pointer=0,this._eof=!1}}function kl(n,t,e=!1){return n<=9?t:n>=10&&n<=59?parseFloat(t.trim()):n>=60&&n<=99?parseInt(t.trim()):n>=100&&n<=109?t:n>=110&&n<=149?parseFloat(t.trim()):n>=160&&n<=179?parseInt(t.trim()):n>=210&&n<=239?parseFloat(t.trim()):n>=270&&n<=289?parseInt(t.trim()):n>=290&&n<=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()):n>=300&&n<=369?t:n>=370&&n<=389?parseInt(t.trim()):n>=390&&n<=399?t:n>=400&&n<=409?parseInt(t.trim()):n>=410&&n<=419?t:n>=420&&n<=429?parseInt(t.trim()):n>=430&&n<=439?t:n>=440&&n<=459?parseInt(t.trim()):n>=460&&n<=469?parseFloat(t.trim()):n>=470&&n<=481||n===999||n>=1e3&&n<=1009?t:n>=1010&&n<=1059?parseFloat(t.trim()):n>=1060&&n<=1071?parseInt(t.trim()):(e&&console.warn("WARNING: Group code does not have a defined type: %j",{code:n,value:t}),t)}function Ra(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}class J0{constructor(){Ra(this,"encoding","utf-8"),Ra(this,"encodingFailureFatal",!1)}}class tp extends EventTarget{parseSync(t,e=!1){let s=new Ml(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((a,h)=>{t.on("data",u=>{e+=u}),t.on("end",()=>{try{let u=e.split(/\r\n|\r|\n/g),m=new Ml(u);if(!m.hasNext())throw Error("Empty file");a(s.parseAll(m))}catch(u){h(u)}}),t.on("error",u=>{h(u)})})}async parseFromUrl(t,e){let s=await fetch(t,e);if(!s.body)return null;let a=s.body.getReader(),h="";for(;;){let{done:u,value:m}=await a.read();if(u){h+=this._decoder.decode(new ArrayBuffer(0),{stream:!1});break}h+=this._decoder.decode(m,{stream:!0})}return this.parseSync(h)}parseAll(t){let e={header:{},blocks:{},entities:[],tables:{},objects:{byName:{},byTree:void 0}},s=t.next();for(;!Pt(s,0,"EOF");)Pt(s,0,"SECTION")&&(Pt(s=t.next(),2,"HEADER")?(s=t.next(),e.header=B0(s,t)):Pt(s,2,"BLOCKS")?(s=t.next(),e.blocks=C0(s,t)):Pt(s,2,"ENTITIES")?(s=t.next(),e.entities=Zu(s,t)):Pt(s,2,"TABLES")?(s=t.next(),e.tables=Q0(s,t)):Pt(s,2,"OBJECTS")&&(s=t.next(),e.objects=j0(s,t))),s=t.next();return e}constructor(t=new J0){super(),Ra(this,"_decoder",void 0),this._decoder=new TextDecoder(t.encoding,{fatal:t.encodingFailureFatal})}}const Nl=[{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 Hn{constructor(t){if(typeof t=="string"){const e=Nl.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=Nl.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 ep{parse(t){const e=new tp,s=this.getDxfInfoFromBuffer(t);let a="";return s.version&&s.version.value<=23&&s.encoding?a=new TextDecoder(s.encoding).decode(t):a=new TextDecoder().decode(t),e.parseSync(a)}getDxfInfoFromBuffer(t){var _,w,x;const s=new TextDecoder("utf-8");let a=0,h="",u=null,m=null,b=!1;for(;a<t.byteLength;){const A=Math.min(a+65536,t.byteLength),T=t.slice(a,A);a=A;const O=(h+s.decode(T,{stream:!0})).split(/\r?\n/);h=O.pop()??"";for(let V=0;V<O.length;V++){const F=O[V].trim();if(F==="SECTION"&&((_=O[V+2])==null?void 0:_.trim())==="HEADER")b=!0;else if(F==="ENDSEC"&&b)return{version:u,encoding:m};if(b&&F==="$ACADVER"){const at=(w=O[V+2])==null?void 0:w.trim();at&&(u=new Hn(at))}else if(b&&F==="$DWGCODEPAGE"){const at=(x=O[V+2])==null?void 0:x.trim();if(at){const ft=Ga[at];m=Wl(ft)}}if(u&&m)return{version:u,encoding:m}}}return{version:u,encoding:m}}}class Ll{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 Mi;return t.vertices.forEach((s,a)=>e.setVertexAt(a,s)),e}convertArc(t){return new Ii(t.center,t.radius,It.degToRad(t.startAngle),It.degToRad(t.endAngle),t.extrusionDirection??Y.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&he.Invisible)!==0,e.isConst=(t.attributeFlag&he.Const)!==0,e.isVerifiable=(t.attributeFlag&he.Verifiable)!==0,e.isPreset=(t.attributeFlag&he.Preset)!==0,e.isReallyLocked=!!t.isReallyLocked,e.isMTextAttribute=(t.mtextFlag&yr.MultiLine)!==0,e.isConstMTextAttribute=(t.mtextFlag&yr.ConstMultiLine)!==0}convertAttribute(t){const e=new Ai;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 Pi;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 Ei(t.center,t.radius,t.extrusionDirection??Y.Z_AXIS)}convertEllipse(t){const e=new Y(t.majorAxisEndPoint),s=e.length();return new Ti(t.center,t.extrusionDirection??Y.Z_AXIS,e,s,s*t.axisRatio,t.startAngle,t.endAngle)}convertLine(t){const e=t.startPoint,s=t.endPoint;return new Zs(new W(e.x,e.y,e.z||0),new W(s.x,s.y,s.z||0))}convertSpline(t){try{if(t.numberOfControlPoints>0&&t.numberOfKnots>0)return new Js(t.controlPoints,t.knots,t.weights,t.degree,!!(t.flag&1));if(t.numberOfFitPoints>0){const e=this.numberArrayToPointArray(t.fitPoints,t.numberOfFitPoints);if(e!=null)return new Js(e,"Uniform",t.degree,!!(t.flag&1))}}catch(e){console.log(`Failed to convert spline with error: ${e}`)}return null}convertPoint(t){const e=new Oi;return e.position=t.position,e}convertSolid(t){const e=new Li;return t.points.forEach((s,a)=>e.setPointAt(a,s)),e.thickness=t.thickness,e}convertPolyline(t){const e=!!(t.flag&1),s=!!(t.flag&8),a=[],h=[];if(t.vertices.map(u=>{u.flag&d0.SPLINE_CONTROL_POINT||(a.push({x:u.x,y:u.y,z:u.z}),h.push(u.bulge??0))}),s){let u=Hs.SimplePoly;return t.flag&4&&(t.smoothType==di.CUBIC?u=Hs.CubicSplinePoly:t.smoothType==di.QUADRATIC&&(u=Hs.QuadSplinePoly)),new Si(u,a,e)}else{let u=Dn.SimplePoly;return t.flag&2?u=Dn.FitCurvePoly:t.flag&4&&(t.smoothType==di.CUBIC?u=Dn.CubicSplinePoly:t.smoothType==di.QUADRATIC&&(u=Dn.QuadSplinePoly)),new wi(u,a,0,e,t.startWidth,t.endWidth,h)}}convertLWPolyline(t){const e=new Ci;return e.closed=!!(t.flag&1),t.vertices.forEach((s,a)=>{e.addVertexAt(a,new kt(s.x,s.y),s.bulge,s.startWidth,s.endWidth)}),e}convertHatch(t){var a;const e=new $s;return(a=t.definitionLines)==null||a.forEach(h=>{e.definitionLines.push({angle:h.angle,base:h.base,offset:h.offset,dashLengths:h.numberOfDashLengths>0?h.dashLengths:[]})}),e.isSolidFill=t.solidFill==vd.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(h=>{if(h.boundaryPathTypeFlag&2){const m=h,b=new En;b.closed=m.isClosed,m.vertices.forEach((_,w)=>{b.addVertexAt(w,{x:_.x,y:_.y,bulge:_.bulge})}),e.add(b)}else{const m=h,b=new to;m.edges.forEach(_=>{if(_.type==1){const w=_;b.add(new Ds(w.start,w.end))}else if(_.type==2){const w=_;b.add(new Xn(w.center,w.radius,It.degToRad(w.startAngle||0),It.degToRad(w.endAngle||0),!w.isCCW))}else if(_.type==3){const w=_;new te().subVectors(w.end,w.center);const A=Math.sqrt(Math.pow(w.end.x,2)+Math.pow(w.end.y,2)),T=A*w.lengthOfMinorAxis;let L=It.degToRad(w.startAngle||0),O=It.degToRad(w.endAngle||0);const V=Math.atan2(w.end.y,w.end.x);w.isCCW||(L=Math.PI*2-L,O=Math.PI*2-O),b.add(new ta({...w.center,z:0},A,T,L,O,!w.isCCW,V))}else if(_.type==4){const w=_;if(w.numberOfControlPoints>0&&w.numberOfKnots>0){const x=w.controlPoints.map(L=>({x:L.x,y:L.y,z:0}));let A=!0;const T=w.controlPoints.map(L=>(L.weight==null&&(A=!1),L.weight||1));b.add(new nn(x,w.knots,A?T:void 0))}else if(w.numberOfFitData>0){const x=w.fitDatum.map(A=>({x:A.x,y:A.y,z:0}));b.add(new nn(x,"Uniform"))}}}),e.add(b)}}),e}convertTable(t){const e=new Ni(t.name,t.rowCount,t.columnCount);return e.attachmentPoint=t.attachmentPoint,e.position.copy(t.startPoint),t.columnWidthArr.forEach((s,a)=>e.setColumnWidth(a,s)),t.rowHeightArr.forEach((s,a)=>e.setRowHeight(a,s)),t.cells.forEach((s,a)=>{e.setCell(a,s)}),e}convertText(t){const e=new Kn;return e.textString=t.text,e.styleName=t.styleName,e.height=t.textHeight,e.position.copy(t.startPoint),e.rotation=It.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 Qs;return e.contents=t.text,t.styleName!=null&&(e.styleName=t.styleName),e.height=t.height,e.width=t.width,e.rotation=It.degToRad(t.rotation||0),e.location=t.insertionPoint,e.attachmentPoint=t.attachmentPoint,t.direction&&(e.direction=new Y(t.direction)),e.drawingDirection=t.drawingDirection,e}convertLeader(t){const e=new ki;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 Ui(e.subDefinitionPoint1,e.subDefinitionPoint2,e.definitionPoint);return e.insertionPoint&&(s.dimBlockPosition={...e.insertionPoint,z:0}),s.rotation=It.degToRad(e.rotationAngle||0),this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDb3PointAngularDimension"){const e=t,s=new Vi(e.centerPoint,e.subDefinitionPoint1,e.subDefinitionPoint2,e.definitionPoint);return this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDbOrdinateDimension"){const e=t,s=new Gi(e.subDefinitionPoint1,e.subDefinitionPoint2);return this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDbRadialDimension"){const e=t,s=new Wi(e.definitionPoint,e.centerPoint,e.leaderLength);return this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDbDiametricDimension"){const e=t,s=new ji(e.definitionPoint,e.centerPoint,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.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 kt(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 ti;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.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 kt(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 zi;return this.processWipeout(t,e),e}convertViewport(t){const e=new Ri;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 Bi;return e.basePoint.copy(t.position),e.unitDir.copy(t.direction),e}convertXline(t){const e=new Fi;return e.basePoint.copy(t.position),e.unitDir.copy(t.direction),e}convertBlockReference(t){const e=new $n(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?It.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),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=Zi.deserialize(t.transparency))}numberArrayToPointArray(t,e){const s=t.length;let a=0;if(s/2==e?a=2:s/3==e&&(a=3),a==0)return;const h=[];for(let u=0,m=s/a;u<m;++u)h.push({x:t[u*a],y:t[u*a+1],z:a==3?t[u*a+2]:0});return h}}class an extends Gr{constructor(t,e){t=t||{},Qn(t,{name:""}),super(t,e)}get name(){return this.getAttr("name")}set name(t){this.setAttr("name",t)}}const rn=class rn extends an{static isModelSapceName(t){return t.toLowerCase()==rn.MODEL_SPACE_NAME.toLowerCase()}static isPaperSapceName(t){return t.toLowerCase().startsWith(rn.PAPER_SPACE_NAME_PREFIX.toLowerCase())}constructor(){super(),this._origin=new W,this._layoutId="",this._entities=new Map}get isModelSapce(){return rn.isModelSapceName(this.name)}get isPaperSapce(){return rn.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}appendEntity(t){if(Array.isArray(t))for(let e=0;e<t.length;++e){const s=t[e];s.database=this.database,s.ownerId=this.objectId,s.resolveEffectiveProperties(),this._entities.set(s.objectId,s)}else t.database=this.database,t.ownerId=this.objectId,t.resolveEffectiveProperties(),this._entities.set(t.objectId,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(a=>{const h=this._entities.get(a);h&&s.push(h),this._entities.delete(a)}),s.length>0&&this.database.events.entityErased.dispatch({database:this.database,entity:s}),s.length>0}newIterator(){return new ni(this._entities)}getIdAt(t){return this._entities.get(t)}};rn.MODEL_SPACE_NAME="*MODEL_SPACE",rn.PAPER_SPACE_NAME_PREFIX="*PAPER_SPACE";let ue=rn;class rp{convertLayout(t,e){var a,h;const s=new ra;if(s.layoutName=t.layoutName,s.tabOrder=t.tabOrder,t.layoutName==="Model"){const u=ue.MODEL_SPACE_NAME;(a=e.tables.BLOCK_RECORD)==null||a.entries.some(m=>m.name.toUpperCase()===u?(s.blockTableRecordId=m.handle,!0):!1)}else(h=e.tables.BLOCK_RECORD)==null||h.entries.some(u=>u.layoutObjects===t.handle?(s.blockTableRecordId=u.handle,!0):!1),s.blockTableRecordId||(s.blockTableRecordId=t.paperSpaceTableId);return s.limits.min.copy(t.minLimit),s.limits.max.copy(t.maxLimit),s.extents.min.copy(t.minExtent),s.extents.max.copy(t.maxExtent),this.processCommonAttrs(t,s),s}convertImageDef(t){const e=new Vh;return e.sourceFileName=t.fileName,this.processCommonAttrs(t,e),e}processCommonAttrs(t,e){e.objectId=t.handle,e.ownerId=t.ownerObjectId}}class Ju{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(),a=this.generateTaskId();try{return await this.executeInWorker(a,t,e||this.config.workerUrl)}catch(h){const u=Date.now()-s;return{success:!1,error:h instanceof Error?h.message:String(h),duration:u}}}async executeInWorker(t,e,s){const a=Date.now();return new Promise((h,u)=>{const m=this.getAvailableWorker(s),b=setTimeout(()=>{this.cleanupTask(t),this.releaseWorker(m),u(new Error(`Worker operation timed out after ${this.config.timeout}ms`))},this.config.timeout);this.pendingTasks.set(t,{resolve:x=>{clearTimeout(b),this.releaseWorker(m),h(x)},reject:x=>{clearTimeout(b),this.releaseWorker(m),u(x)},timeout:b});const _=x=>{const{id:A,success:T,data:L,error:O}=x.data;if(A!==t)return;this.cleanupTask(t);const V=Date.now()-a;h(T?{success:!0,data:L,duration:V}:{success:!1,error:O,duration:V})},w=x=>{this.cleanupTask(t),u(new Error(`Worker error: ${x.message}`))};m.addEventListener("message",_),m.addEventListener("error",w),m.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,a]of this.workers)if(!a.isBusy)return a.isBusy=!0,a.worker;if(this.workers.size<this.config.maxConcurrentWorkers){const s=new Worker(t,{type:"module"}),a=this.generateWorkerId(),h={worker:s,isBusy:!0,id:a,createdAt:new Date};return this.workers.set(a,h),s}const e=Array.from(this.workers.values()).sort((s,a)=>s.createdAt.getTime()-a.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 tc{constructor(t){this.framework=new Ju(t)}async execute(t,e){return this.framework.execute(t,e)}getStats(){return this.framework.getStats()}destroy(){this.framework.destroy()}}function ec(n){return new tc(n)}class np{constructor(){this.setupMessageHandler()}setupMessageHandler(){self.onmessage=async t=>{const{id:e,input:s}=t.data;try{const a=await this.executeTask(s);this.sendResponse(e,!0,a)}catch(a){this.sendResponse(e,!1,void 0,a instanceof Error?a.message:String(a))}}}sendResponse(t,e,s,a){const h={id:t,success:e,data:s,error:a};self.postMessage(h)}}class rc extends oo{constructor(t={}){super(t),t.parserWorkerUrl||(t.parserWorkerUrl="/assets/dxf-parser-worker.js")}async parse(t,e){const s=this.config,a=this.getParserWorkerTimeout(t,e);if(s.useWorker&&s.parserWorkerUrl){const h=ec({workerUrl:s.parserWorkerUrl,timeout:a,maxConcurrentWorkers:1}),u=await h.execute(t);if(h.destroy(),u.success)return{model:u.data,data:{unknownEntityCount:0}};throw new Error(`Failed to parse drawing due to error: '${u.error}'`)}else return{model:new ep().parse(t),data:{unknownEntityCount:0}}}getFonts(t){var h;const e=new Map,s=u=>{if(u){const m=u.lastIndexOf(".");return m>=0?u.substring(0,m).toLowerCase():u.toLowerCase()}};(h=t.tables.STYLE)==null||h.entries.forEach(u=>{const m=[];if(u.font){const b=s(u.font);b&&m.push(b)}if(u.bigFont){const b=s(u.bigFont);b&&m.push(b)}if(u.extendedFont){const b=s(u.extendedFont);b&&m.push(b)}e.set(u.name,m)});const a=new Set;return this.getFontsInBlock(t.entities,t.blocks,e,a),Array.from(a)}getFontsInBlock(t,e,s,a){const h=/\\f(.*?)\|/g;t.forEach(u=>{if(u.type=="MTEXT"){const m=u;[...m.text.matchAll(h)].forEach(w=>{a.add(w[1].toLowerCase())});const _=s.get(m.styleName);_==null||_.forEach(w=>a.add(w))}else if(u.type=="TEXT"){const m=u,b=s.get(m.styleName);b==null||b.forEach(_=>a.add(_))}else if(u.type=="INSERT"){const b=e[u.name];b&&b.entities&&this.getFontsInBlock(b.entities,e,s,a)}})}async processEntities(t,e,s,a,h){const u=new Ll;let m=t.entities;const b=m.length,_=new Ua(b,100-a.value,s);this.config.convertByEntityType&&(m=this.groupAndFlattenByType(m));const w=new Map;for(let A=0;A<b;A++){const T=m[A];if(T.type==="ATTRIB"){const L=u.convert(T);if(L&&L.ownerId&&L.ownerId!=="0"){let O=w.get(L==null?void 0:L.ownerId);O==null&&(O=[],w.set(L.ownerId,O)),O.push(L)}}}const x=e.tables.blockTable.modelSpace;await _.processChunk(async(A,T)=>{let L=[],O=A<T?m[A].type:"";for(let F=A;F<T;F++){const at=m[F];if(at.type!=="ATTRIB"){const ft=u.convert(at);if(ft){if(this.config.convertByEntityType&&at.type!==O&&(x.appendEntity(L),L=[],O=at.type),at.type==="INSERT"){const st=w.get(ft.objectId);st&&st.length>0&&st.forEach(H=>{ft.appendAttributes(H)})}L.push(ft)}}}x.appendEntity(L);let V=a.value+T/b*(100-a.value);V>100&&(V=100),h&&await h(V,"ENTITY","IN-PROGRESS")})}async processEntitiesInBlock(t,e,s=!1){const a=new Ll,h=t.length,u=[],m=e.objectId,b=[];for(let _=0;_<h;_++){const w=t[_],x=a.convert(w);x&&(w.type==="ATTRIB"?b.push(x):(!s||w.ownerBlockRecordSoftId===m)&&u.push(x))}b.forEach(_=>{const w=e.getIdAt(_.ownerId);w&&w.appendAttributes(_)}),e.appendEntity(u)}processBlocks(t,e){const s=t.blocks;for(const[a,h]of Object.entries(s)){let u=e.tables.blockTable.getAt(h.name);u||(u=new ue,u.objectId=h.handle,u.name=a,u.origin.copy(h.position),e.tables.blockTable.add(u)),h.entities?this.processEntitiesInBlock(h.entities,u):u.isPaperSapce&&this.processEntitiesInBlock(t.entities,u,!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.pdmode=s.$PDMODE||0,e.pdsize=s.$PDSIZE||0}processBlockTables(t,e){var a;const s=(a=t.tables.BLOCK_RECORD)==null?void 0:a.entries;s&&s.length>0&&(e.tables.blockTable.removeAll(),s.forEach(h=>{const u=new ue;u.objectId=h.handle,u.name=h.name,u.layoutId=h.layoutObjects,e.tables.blockTable.add(u)}))}processObjects(t,e){const s=t.objects.byName,a=new rp;if("LAYOUT"in s){const h=e.objects.layout;s.LAYOUT.forEach(u=>{const m=a.convertLayout(u,t);h.setAt(m.layoutName,m)})}if("IMAGEDEF"in s){const h=e.objects.imageDefinition;s.IMAGEDEF.forEach(u=>{const m=a.convertImageDef(u);h.setAt(m.objectId,m)})}}processViewports(t,e){var a,h;const s=(h=(a=t.tables)==null?void 0:a.VPORT)==null?void 0:h.entries;s&&s.length>0&&s.forEach(u=>{const m=new _c;this.processCommonTableEntryAttrs(u,m),u.circleSides&&(m.circleSides=u.circleSides),m.standardFlag=u.standardFlag,m.center.copy(u.center),m.lowerLeftCorner.copy(u.lowerLeftCorner),m.upperRightCorner.copy(u.upperRightCorner),u.snapBasePoint&&m.snapBase.copy(u.snapBasePoint),u.snapRotationAngle&&(m.snapAngle=u.snapRotationAngle),u.snapSpacing&&m.snapIncrements.copy(u.snapSpacing),u.majorGridLines&&(m.gridMajor=u.majorGridLines),u.gridSpacing&&m.gridIncrements.copy(u.gridSpacing),u.backgroundObjectId&&(m.backgroundObjectId=u.backgroundObjectId),m.gsView.center.copy(u.center),m.gsView.viewDirectionFromTarget.copy(u.viewDirectionFromTarget),m.gsView.viewTarget.copy(u.viewTarget),u.lensLength&&(m.gsView.lensLength=u.lensLength),u.frontClippingPlane&&(m.gsView.frontClippingPlane=u.frontClippingPlane),u.backClippingPlane&&(m.gsView.backClippingPlane=u.backClippingPlane),u.viewHeight&&(m.gsView.viewHeight=u.viewHeight),u.viewTwistAngle&&(m.gsView.viewTwistAngle=u.viewTwistAngle),u.frozenLayers&&(m.gsView.frozenLayers=u.frozenLayers),u.styleSheet&&(m.gsView.styleSheet=u.styleSheet),u.renderMode&&(m.gsView.renderMode=u.renderMode),u.viewMode&&(m.gsView.viewMode=u.viewMode),u.ucsIconSetting&&(m.gsView.ucsIconSetting=u.ucsIconSetting),u.ucsOrigin&&m.gsView.ucsOrigin.copy(u.ucsOrigin),u.ucsXAxis&&m.gsView.ucsXAxis.copy(u.ucsXAxis),u.ucsYAxis&&m.gsView.ucsYAxis.copy(u.ucsYAxis),u.orthographicType&&(m.gsView.orthographicType=u.orthographicType),u.shadePlotSetting&&(m.gsView.shadePlotSetting=u.shadePlotSetting),u.shadePlotObjectId&&(m.gsView.shadePlotObjectId=u.shadePlotObjectId),u.visualStyleObjectId&&(m.gsView.visualStyleObjectId=u.visualStyleObjectId),u.isDefaultLightingOn&&(m.gsView.isDefaultLightingOn=u.isDefaultLightingOn),u.defaultLightingType&&(m.gsView.defaultLightingType=u.defaultLightingType),u.brightness&&(m.gsView.brightness=u.brightness),u.contrast&&(m.gsView.contrast=u.contrast),u.ambientColor&&(m.gsView.ambientColor=u.ambientColor),e.tables.viewportTable.add(m)})}processLayers(t,e){var a,h;const s=(h=(a=t.tables)==null?void 0:a.LAYER)==null?void 0:h.entries;s&&s.length>0&&s.forEach(u=>{const m=new _e;m.colorIndex=u.colorIndex;const b=new sa({name:u.name,standardFlags:u.standardFlag,linetype:u.lineType,lineWeight:u.lineweight,isOff:u.colorIndex<0,color:m,isPlottable:u.isPlotting});this.processCommonTableEntryAttrs(u,b),e.tables.layerTable.add(b)})}processLineTypes(t,e){var a,h;const s=(h=(a=t.tables)==null?void 0:a.LTYPE)==null?void 0:h.entries;s&&s.length>0&&s.forEach(u=>{const m=new Ks(u);this.processCommonTableEntryAttrs(u,m),m.name=u.name,e.tables.linetypeTable.add(m)})}processTextStyles(t,e){var a;const s=(a=t.tables.STYLE)==null?void 0:a.entries;s&&s.length>0&&s.forEach(h=>{const u=new po(h);this.processCommonTableEntryAttrs(h,u),e.tables.textStyleTable.add(u)})}processDimStyles(t,e){var a;const s=(a=t.tables.DIMSTYLE)==null?void 0:a.entries;s&&s.length>0&&s.forEach(h=>{const u={name:h.name,ownerId:h.ownerObjectId,dimpost:h.DIMPOST||"",dimapost:h.DIMAPOST||"",dimscale:h.DIMSCALE,dimasz:h.DIMASZ,dimexo:h.DIMEXO,dimdli:h.DIMDLI,dimexe:h.DIMEXE,dimrnd:h.DIMRND,dimdle:h.DIMDLE,dimtp:h.DIMTP,dimtm:h.DIMTM,dimtxt:h.DIMTXT,dimcen:h.DIMCEN,dimtsz:h.DIMTSZ,dimaltf:h.DIMALTF,dimlfac:h.DIMLFAC,dimtvp:h.DIMTVP,dimtfac:h.DIMTFAC,dimgap:h.DIMGAP,dimaltrnd:h.DIMALTRND,dimtol:h.DIMTOL==null||h.DIMTOL==0?0:1,dimlim:h.DIMLIM==null||h.DIMLIM==0?0:1,dimtih:h.DIMTIH==null||h.DIMTIH==0?0:1,dimtoh:h.DIMTOH==null||h.DIMTOH==0?0:1,dimse1:h.DIMSE1==null||h.DIMSE1==0?0:1,dimse2:h.DIMSE2==null||h.DIMSE2==0?0:1,dimtad:h.DIMTAD,dimzin:h.DIMZIN,dimazin:h.DIMAZIN,dimalt:h.DIMALT,dimaltd:h.DIMALTD,dimtofl:h.DIMTOFL,dimsah:h.DIMSAH,dimtix:h.DIMTIX,dimsoxd:h.DIMSOXD,dimclrd:h.DIMCLRD,dimclre:h.DIMCLRE,dimclrt:h.DIMCLRT,dimadec:h.DIMADEC||0,dimunit:h.DIMUNIT||2,dimdec:h.DIMDEC,dimtdec:h.DIMTDEC,dimaltu:h.DIMALTU,dimalttd:h.DIMALTTD,dimaunit:h.DIMAUNIT,dimfrac:h.DIMFRAC,dimlunit:h.DIMLUNIT,dimdsep:h.DIMDSEP,dimtmove:h.DIMTMOVE||0,dimjust:h.DIMJUST,dimsd1:h.DIMSD1,dimsd2:h.DIMSD2,dimtolj:h.DIMTOLJ,dimtzin:h.DIMTZIN,dimaltz:h.DIMALTZ,dimalttz:h.DIMALTTZ,dimfit:h.DIMFIT||0,dimupt:h.DIMUPT,dimatfit:h.DIMATFIT,dimtxsty:h.DIMTXSTY||"Standard",dimldrblk:h.DIMLDRBLK||"",dimblk:h.DIMBLK||"",dimblk1:h.DIMBLK1||"",dimblk2:h.DIMBLK2||"",dimlwd:h.DIMLWD,dimlwe:h.DIMLWE},m=new Zn(u);this.processCommonTableEntryAttrs(h,m),e.tables.dimStyleTable.add(m)})}processCommonTableEntryAttrs(t,e){e.name=t.name,t.handle!=null&&(e.objectId=t.handle),e.ownerId=t.ownerObjectId}groupAndFlattenByType(t){const e={},s=[];for(const a of t)e[a.type]||(e[a.type]=[],s.push(a.type)),e[a.type].push(a);return s.flatMap(a=>e[a])}}class nc extends oo{constructor(t){super({}),this._database=t}async parse(){return{model:this._database,data:{unknownEntityCount:0}}}getFonts(){return[]}async processEntities(t,e,s,a,h){let u=t.tables.blockTable.modelSpace.newIterator().toArray();const m=u.length,b=new Ua(m,100-a.value,s);this.config.convertByEntityType&&(u=this.groupAndFlattenByType(u));const _=e.tables.blockTable.modelSpace;await b.processChunk(async(w,x)=>{let A=[],T=w<x?u[w].type:"";for(let L=w;L<x;L++){const O=u[L];this.config.convertByEntityType&&O.type!==T&&(this.triggerEvents(_,A),A=[],T=O.type),A.push(O)}if(this.triggerEvents(_,A),h){let L=a.value+x/m*(100-a.value);L>100&&(L=100),await h(L,"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 a of t)e[a.type]||(e[a.type]=[],s.push(a.type)),e[a.type].push(a);return s.flatMap(a=>e[a])}triggerEvents(t,e){(t.isModelSapce||t.isPaperSapce)&&t.database.events.entityAppended.dispatch({database:t.database,entity:e})}}var Ys=(n=>(n.DXF="dxf",n.DWG="dwg",n))(Ys||{});class _r{constructor(){this.events={registered:new le,unregistered:new le},this._converters=new Map,this.register("dxf",new rc)}static createInstance(){return _r._instance==null&&(_r._instance=new _r),this._instance}static get instance(){return _r._instance||(_r._instance=new _r),_r._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}))}}class on extends Gr{constructor(t){super(),this.database=t,this._recordsByName=new Map,this._recordsById=new Map}get numEntries(){return this._recordsByName.size}add(t){t.database=this.database;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 ni(this._recordsByName)}normalizeName(t){return t}}class sc extends on{constructor(t){super(t)}get modelSpace(){let t=this.getAt(ue.MODEL_SPACE_NAME);return t||(t=new ue,t.name=ue.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(ue.isModelSapceName(t))e=ue.MODEL_SPACE_NAME;else if(ue.isPaperSapceName(t)){const s=ue.PAPER_SPACE_NAME_PREFIX,a=t.substring(s.length);e=s+a}return e}}class ic extends on{constructor(t){super(t)}}class sa extends an{constructor(t,e){t=t||{},Qn(t,{color:new _e,description:"",standardFlags:0,isHidden:!1,isInUse:!0,isOff:!1,isPlottable:!0,transparency:new Zi,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)}}class ac extends on{constructor(t){super(t);const e=new _e,s=new sa({name:"0",standardFlags:0,linetype:bi,lineWeight:sn.ByLineWeightDefault,isOff:!1,color:e,isPlottable:!0});this.add(s)}add(t){super.add(t),this.database.events.layerAppended.dispatch({database:this.database,layer:t})}}class oc extends on{constructor(t){super(t)}}class lc extends on{constructor(t){super(t)}get fonts(){const t=new Set,e=a=>{if(a){const h=a.lastIndexOf(".");if(h>=0){const u=a.substring(0,h).toLowerCase();t.add(u)}else t.add(a.toLowerCase())}},s=this.newIterator();for(const a of s)e(a.fileName),e(a.bigFontFileName);return Array.from(t)}}class hc extends on{constructor(t){super(t)}}class uc extends on{constructor(t){super(t)}}class cc extends an{constructor(t){super(),this.name=t}}const Kt={ACADVER:"ACADVER",ANGBASE:"ANGBASE",ANGDIR:"ANGDIR",AUNITS:"AUNITS",CECOLOR:"CECOLOR",CELTSCALE:"CELTSCALE",CELWEIGHT:"CELWEIGHT",CLAYER:"CLAYER",COLORTHEME:"COLORTHEME",EXTMAX:"EXTMAX",EXTMIN:"EXTMIN",INSUNITS:"INSUNITS",LTSCALE:"LTSCALE",LWDISPLAY:"LWDISPLAY",PDMODE:"PDMODE",PDSIZE:"PDSIZE",PICKBOX:"PICKBOX",WHITEBKCOLOR:"WHITEBKCOLOR"},sp=Object.freeze(Object.values(Kt)),Xi=class Xi{constructor(){this.registry=new Map,this.cache=new Map,this.events={sysVarChanged:new le},this.registerVar({name:Kt.CECOLOR,type:"color",isDbVar:!0,defaultValue:new _e(ct.ByLayer)}),this.registerVar({name:Kt.CELTSCALE,type:"number",isDbVar:!0,defaultValue:-1}),this.registerVar({name:Kt.CELWEIGHT,type:"number",isDbVar:!0,defaultValue:sn.ByLayer}),this.registerVar({name:Kt.CLAYER,type:"string",isDbVar:!0,defaultValue:"0"}),this.registerVar({name:Kt.COLORTHEME,type:"number",isDbVar:!1,defaultValue:"0"}),this.registerVar({name:Kt.LWDISPLAY,type:"boolean",isDbVar:!0,defaultValue:!1}),this.registerVar({name:Kt.PICKBOX,type:"number",isDbVar:!1,defaultValue:10}),this.registerVar({name:Kt.WHITEBKCOLOR,type:"boolean",isDbVar:!1,defaultValue:!1})}static instance(){return this._instance||(this._instance=new Xi),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){if(s.isDbVar)return e[t.toLowerCase()];if(this.cache.has(t))return this.cache.get(t)}}setVar(t,e,s){t=this.normalizeName(t);const a=this.getDescriptor(t);if(a){const h=this.getVar(t,s);if(a.type!=="string"&&(typeof e=="string"||e instanceof String)){if(a.type==="number"){const u=Number(e);if(Number.isNaN(u))throw new Error("Invalid number input!");e=u}else if(a.type==="boolean")e=this.parseBoolean(e);else if(a.type==="color"){const u=_e.fromString(e);if(u==null)throw new Error("Invalid color value!");e=u}}a.isDbVar?s[t.toLowerCase()]=e:(this.cache.set(t,e),this.hasValueChanged(h,e)&&this.events.sysVarChanged.dispatch({database:s,name:t,newVal:e,oldVal:h}))}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"]),a=new Set(["false","f","0","no","n"]);return s.has(e)?!0:(a.has(e),!1)}hasValueChanged(t,e){return t instanceof _e&&e instanceof _e?!t.equals(e):!Object.is(t,e)}normalizeName(t){return t.toLowerCase()}};Xi._instance=null;let Hi=Xi;const Yi=class Yi extends Gr{constructor(){super(),this.events={dictObjetSet:new le,dictObjectErased:new le,entityAppended:new le,entityModified:new le,entityErased:new le,layerAppended:new le,layerModified:new le,layerErased:new le,openProgress:new le},this._version=new Hn("AC1014"),this._angBase=0,this._angDir=0,this._aunits=ja.DecimalDegrees,this._celtscale=1,this._cecolor=new _e,this._celweight=sn.ByLayer,this._clayer="0",this._extents=new Nt,this._insunits=ao.Millimeters,this._ltscale=1,this._lwdisplay=!0,this._pdmode=0,this._pdsize=0,this._tables={appIdTable:new uc(this),blockTable:new sc(this),dimStyleTable:new ic(this),linetypeTable:new oc(this),textStyleTable:new lc(this),layerTable:new ac(this),viewportTable:new hc(this)},this._objects={dictionary:new Xs(this),imageDefinition:new Xs(this),layout:new Fh(this),xrecord:new Xs(this)},this._tables.appIdTable.add(new cc(Yi.MLIGHTCAD_APPID))}get tables(){return this._tables}get objects(){return this._objects}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(Kt.AUNITS,this._aunits,t??0,e=>{this._aunits=e})}get version(){return this._version}set version(t){this.updateSysVar(Kt.ACADVER,this._version,new Hn(t),e=>{this._version=e})}get insunits(){return this._insunits}set insunits(t){this.updateSysVar(Kt.INSUNITS,this._insunits,t??4,e=>{this._insunits=e})}get ltscale(){return this._ltscale}set ltscale(t){this.updateSysVar(Kt.LTSCALE,this._ltscale,t??1,e=>{this._ltscale=e})}get lwdisplay(){return this._lwdisplay}set lwdisplay(t){this.updateSysVar(Kt.LWDISPLAY,this._lwdisplay,t??!1,e=>{this._lwdisplay=e})}get cecolor(){return this._cecolor}set cecolor(t){this.updateSysVar(Kt.CECOLOR,this._cecolor,t||0,e=>{this._cecolor=e})}get celtscale(){return this._celtscale}set celtscale(t){this.updateSysVar(Kt.CELTSCALE,this._celtscale,t??1,e=>{this._celtscale=e})}get celweight(){return this._celweight}set celweight(t){this.updateSysVar(Kt.CELWEIGHT,this._celweight,t??sn.ByLayer,e=>{this._celweight=e})}get clayer(){return this._clayer}set clayer(t){this.updateSysVar(Kt.CLAYER,this._clayer,t??"0",e=>{this._clayer=e})}get angBase(){return this._angBase}set angBase(t){this.updateSysVar(Kt.ANGBASE,this._angBase,t??0,e=>{this._angBase=e})}get angDir(){return this._angDir}set angDir(t){this.updateSysVar(Kt.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(Kt.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(Kt.EXTMIN,e,this._extents.min)}}get extents(){return this._extents}get pdmode(){return this._pdmode}set pdmode(t){this.updateSysVar(Kt.PDMODE,this._pdmode,t??0,e=>{this._pdmode=e})}get pdsize(){return this._pdsize}set pdsize(t){this.updateSysVar(Kt.PDSIZE,this._pdsize,t??0,e=>{this._pdsize=e})}async read(t,e,s=Ys.DXF){const a=_r.instance.get(s);if(a==null)throw new Error(`Database converter for file type '${s}' isn't registered and can can't read this file!`);this.clear(),await a.read(t,this,e&&e.minimumChunkSize||10,async(h,u,m,b)=>{if(this.events.openProgress.dispatch({database:this,percentage:h,stage:"CONVERSION",subStage:u,subStageStatus:m,data:b}),e&&e.fontLoader&&u=="FONT"&&m=="END"){const _=b||this.tables.textStyleTable.fonts;await e.fontLoader.load(_)}},e==null?void 0:e.timeout)}async openUri(t,e){var T;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 a=s.headers.get("content-length"),h=a?parseInt(a,10):null;let u=0;const m=(T=s.body)==null?void 0:T.getReader();if(!m)throw new Error("Failed to get response reader");const b=[];for(;;){const{done:L,value:O}=await m.read();if(L)break;if(b.push(O),u+=O.length,h!==null){const V=Math.round(u/h*100);this.events.openProgress.dispatch({database:this,percentage:V,stage:"FETCH_FILE",subStageStatus:"IN-PROGRESS"})}}const _=new Uint8Array(u);let w=0;for(const L of b)_.set(L,w),w+=L.length;const A=this.getFileNameFromUri(t).toLowerCase().split(".").pop();A==="dwg"?await this.read(_.buffer,e,Ys.DWG):A==="dxf"?await this.read(_.buffer,e,Ys.DXF):await this.read(_.buffer,e,A),this.events.openProgress.dispatch({database:this,percentage:100,stage:"FETCH_FILE",subStageStatus:"END"})}async regen(){await new nc(this).read(null,this,500,async(e,s,a,h)=>{this.events.openProgress.dispatch({database:this,percentage:e,stage:"CONVERSION",subStage:s,subStageStatus:a,data:h})})}createDefaultData(t={layer:!0,lineType:!0,textStyle:!0,dimStyle:!0,layout:!0}){const e=new jh(this);t.layer&&e.createDefaultLayer(),t.lineType&&e.createDefaultLineType(),t.textStyle&&e.createDefaultTextStyle(),t.dimStyle&&e.createDefaultDimStyle(),t.layout&&e.createDefaultLayout()}clear(){this._tables.blockTable.removeAll(),this._tables.dimStyleTable.removeAll(),this._tables.linetypeTable.removeAll(),this._tables.textStyleTable.removeAll(),this._tables.layerTable.removeAll(),this._tables.viewportTable.removeAll(),this._objects.layout.removeAll(),this._currentSpace=void 0,this._extents.makeEmpty()}updateSysVar(t,e,s,a){this.hasSysVarValueChanged(e,s)&&(a(s),this.triggerSysVarChangedEvent(t,e,s))}hasSysVarValueChanged(t,e){return t instanceof _e&&e instanceof _e?!t.equals(e):t instanceof Hn&&e instanceof Hn?t.value!==e.value:!Object.is(t,e)}triggerSysVarChangedEvent(t,e,s){const a=Hi.instance(),h=t.toLowerCase();a.getDescriptor(h)!=null&&a.events.sysVarChanged.dispatch({database:this,name:h,oldVal:e,newVal:s})}getFileNameFromUri(t){try{const s=new URL(t).pathname.split("/");return s[s.length-1]||""}catch(e){return console.error("Invalid URI:",e),""}}};Yi.MLIGHTCAD_APPID="mlightcad";let za=Yi;var dc=(n=>(n[n.Center=0]="Center",n[n.Left=1]="Left",n[n.Right=2]="Right",n[n.OverFirst=3]="OverFirst",n[n.OverSecond=4]="OverSecond",n))(dc||{}),pc=(n=>(n[n.Center=0]="Center",n[n.Above=1]="Above",n[n.Outside=2]="Outside",n[n.JIS=3]="JIS",n[n.Below=4]="Below",n))(pc||{}),mc=(n=>(n[n.Feet=0]="Feet",n[n.None=1]="None",n[n.Inch=2]="Inch",n[n.FeetAndInch=3]="FeetAndInch",n[n.Leading=4]="Leading",n[n.Trailing=8]="Trailing",n[n.LeadingAndTrailing=12]="LeadingAndTrailing",n))(mc||{}),gc=(n=>(n[n.None=0]="None",n[n.Leading=1]="Leading",n[n.Trailing=2]="Trailing",n[n.LeadingAndTrailing=3]="LeadingAndTrailing",n))(gc||{}),fc=(n=>(n[n.Bottom=0]="Bottom",n[n.Middle=1]="Middle",n[n.Top=2]="Top",n))(fc||{});const Ki=class Ki extends an{constructor(t,e){t=t||{},Qn(t,Ki.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)}};Ki.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:"Standard",dimldrblk:"",dimblk:"",dimblk1:"",dimblk2:"",dimlwd:-2,dimlwe:-2};let Zn=Ki;class Ks extends an{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}}class po extends an{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}}const ip={center:new kt,viewDirectionFromTarget:new W(0,0,1),viewTarget:new W(0,0,0),lensLength:500,frontClippingPlane:0,backClippingPlane:0,viewHeight:1e3,viewTwistAngle:0,frozenLayers:[],styleSheet:"",renderMode:ro.OPTIMIZED_2D,viewMode:0,ucsIconSetting:0,ucsOrigin:new W(0,0,0),ucsXAxis:new W(1,0,0),ucsYAxis:new W(0,1,0),orthographicType:no.TOP,shadePlotSetting:0,shadePlotObjectId:void 0,visualStyleObjectId:void 0,isDefaultLightingOn:!1,defaultLightingType:so.ONE_DISTANT_LIGHT,brightness:0,contrast:0,ambientColor:void 0};class _c extends an{constructor(){super(),this._circleSides=100,this._center=new kt,this._lowerLeftCorner=new kt(0,0),this._upperRightCorner=new kt(1,1),this._snapBase=new kt(0,0),this._snapAngle=0,this._snapSpacing=new kt(0,0),this._standardFlag=0,this._gridSpacing=new kt,this._gridMajor=10,this._gsView=ip}get circleSides(){return this._circleSides}set circleSides(t){this._circleSides=t}get center(){return this._center}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}get gsView(){return this._gsView}}class yc{constructor(){this.events={layoutCreated:new le,layoutRemoved:new le,layoutRenamed:new le,layoutSwitched:new le}}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),a=s.objects.layout.getIdAt(t);return this.setCurrentLayoutInternal(a,s)}setCurrentLayoutBtrId(t,e){const s=this.getWorkingDatabase(e),a=s.objects.layout.getBtrIdAt(t);return this.setCurrentLayoutInternal(a,s)}setCurrentLayout(t,e){const s=this.getWorkingDatabase(e),a=s.objects.layout.getAt(t);return this.setCurrentLayoutInternal(a,s)}renameLayout(t,e,s){const h=this.getWorkingDatabase(s).objects.layout.getAt(t);return h?(h.layoutName=e,this.events.layoutRenamed.dispatch({layout:h,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,a=s.getAt(t);let h=!1;return a&&(h=s.remove(t),h&&this.events.layoutRemoved.dispatch({layout:a})),h}createLayout(t,e){const s=this.getWorkingDatabase(e),a=new ra;a.layoutName=t,a.tabOrder=s.objects.layout.maxTabOrder;const h=new ue;return h.name=`*Paper_Space${a.tabOrder}`,s.tables.blockTable.add(h),s.objects.layout.setAt(t,a),this.events.layoutCreated.dispatch({layout:a}),{layout:a,btr:h}}getActiveLayout(t){const e=this.getWorkingDatabase(t);return e.objects.layout.getBtrIdAt(e.currentSpaceId)}getWorkingDatabase(t){return t||mo().workingDatabase}setCurrentLayoutInternal(t,e){return t?(this.events.layoutSwitched.dispatch({layout:t}),e.currentSpaceId=t.blockTableRecordId,!0):!1}}function mo(){return qi.instance}const $i=class $i{constructor(){this._workingDatabase=null,this._layoutManager=new yc}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(){return this._layoutManager}};$i.instance=new $i;let qi=$i;var vc=(n=>(n.kForRead="kForRead",n.kForWrite="kForWrite",n))(vc||{});class go{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 go(this._values)}[Symbol.iterator](){return this._values[Symbol.iterator]()}}exports.AC_DB_SYSTEM_VARIABLE_NAMES=sp;exports.AcCmColor=_e;exports.AcCmColorMethod=ct;exports.AcCmColorUtil=tn;exports.AcCmEntityColor=zc;exports.AcCmErrors=$e;exports.AcCmEventDispatcher=Fc;exports.AcCmEventManager=le;exports.AcCmLoader=qc;exports.AcCmLoadingManager=jl;exports.AcCmObject=zl;exports.AcCmPerformanceCollector=Va;exports.AcCmTask=Vl;exports.AcCmTaskScheduler=Ul;exports.AcCmTransparency=Zi;exports.AcCmTransparencyMethod=ke;exports.AcDb2dPolyline=wi;exports.AcDb2dVertex=Ca;exports.AcDb2dVertexType=Mh;exports.AcDb3PointAngularDimension=Vi;exports.AcDb3dPolyline=Si;exports.AcDb3dVertex=Oa;exports.AcDb3dVertexType=kh;exports.AcDbAlignedDimension=Ui;exports.AcDbAngleUnits=ja;exports.AcDbArc=Ii;exports.AcDbArcDimension=Ba;exports.AcDbAttribute=Ai;exports.AcDbAttributeDefinition=Pi;exports.AcDbAttributeFlags=he;exports.AcDbAttributeMTextFlag=yr;exports.AcDbBaseWorker=np;exports.AcDbBatchProcessing=Ua;exports.AcDbBlockReference=$n;exports.AcDbBlockTable=sc;exports.AcDbBlockTableRecord=ue;exports.AcDbCircle=Ei;exports.AcDbCodePage=Ga;exports.AcDbCurve=Le;exports.AcDbDataGenerator=jh;exports.AcDbDatabase=za;exports.AcDbDatabaseConverter=oo;exports.AcDbDatabaseConverterManager=_r;exports.AcDbDiametricDimension=ji;exports.AcDbDictionary=Xs;exports.AcDbDimArrowType=Gh;exports.AcDbDimStyleTable=ic;exports.AcDbDimStyleTableRecord=Zn;exports.AcDbDimTextHorizontal=dc;exports.AcDbDimTextVertical=pc;exports.AcDbDimVerticalJustification=fc;exports.AcDbDimZeroSuppression=mc;exports.AcDbDimZeroSuppressionAngular=gc;exports.AcDbDimension=jr;exports.AcDbDuplicateRecordCloning=Uh;exports.AcDbDwgVersion=Hn;exports.AcDbDxfCode=Fa;exports.AcDbDxfConverter=rc;exports.AcDbEllipse=Ti;exports.AcDbEntity=Ne;exports.AcDbFace=Mi;exports.AcDbFileType=Ys;exports.AcDbHatch=$s;exports.AcDbHatchPatternType=qs;exports.AcDbHatchStyle=Ch;exports.AcDbHostApplicationServices=qi;exports.AcDbLayerTable=ac;exports.AcDbLayerTableRecord=sa;exports.AcDbLayout=ra;exports.AcDbLayoutDictionary=Fh;exports.AcDbLayoutManager=yc;exports.AcDbLeader=ki;exports.AcDbLeaderAnnotationType=Oh;exports.AcDbLine=Zs;exports.AcDbLineSpacingStyle=zh;exports.AcDbLinetypeTable=oc;exports.AcDbLinetypeTableRecord=Ks;exports.AcDbMText=Qs;exports.AcDbObject=Gr;exports.AcDbObjectIterator=ni;exports.AcDbOpenMode=vc;exports.AcDbOrdinateDimension=Gi;exports.AcDbOsnapMode=Ft;exports.AcDbPoint=Oi;exports.AcDbPoly2dType=Dn;exports.AcDbPoly3dType=Hs;exports.AcDbPolyline=Ci;exports.AcDbRadialDimension=Wi;exports.AcDbRasterImage=ti;exports.AcDbRasterImageClipBoundaryType=Bh;exports.AcDbRasterImageDef=Vh;exports.AcDbRasterImageImageDisplayOpt=Rh;exports.AcDbRay=Bi;exports.AcDbRegAppTable=uc;exports.AcDbRegAppTableRecord=cc;exports.AcDbRegenerator=nc;exports.AcDbRenderingCache=Jn;exports.AcDbResultBuffer=go;exports.AcDbSpline=Js;exports.AcDbSymbolTable=on;exports.AcDbSymbolTableRecord=an;exports.AcDbSysVarManager=Hi;exports.AcDbSystemVariables=Kt;exports.AcDbTable=Ni;exports.AcDbText=Kn;exports.AcDbTextHorizontalMode=Nh;exports.AcDbTextStyleTable=lc;exports.AcDbTextStyleTableRecord=po;exports.AcDbTextVerticalMode=Lh;exports.AcDbTrace=Li;exports.AcDbUnitsValue=ao;exports.AcDbViewport=Ri;exports.AcDbViewportTable=hc;exports.AcDbViewportTableRecord=_c;exports.AcDbWipeout=zi;exports.AcDbWorkerApi=tc;exports.AcDbWorkerManager=Ju;exports.AcDbXline=Fi;exports.AcDbXrecord=io;exports.AcGeArea2d=Ji;exports.AcGeBox2d=Ie;exports.AcGeBox3d=Nt;exports.AcGeCatmullRomCurve3d=Ph;exports.AcGeCircArc2d=Xn;exports.AcGeCircArc3d=Ja;exports.AcGeCurve2d=ts;exports.AcGeEllipseArc2d=ta;exports.AcGeEllipseArc3d=ea;exports.AcGeEuler=td;exports.AcGeGeometryUtil=ph;exports.AcGeLine2d=Ds;exports.AcGeLine3d=Yn;exports.AcGeLoop2d=to;exports.AcGeMathUtil=It;exports.AcGeMatrix2d=Qi;exports.AcGeMatrix3d=Ke;exports.AcGeNurbsCurve=In;exports.AcGePlane=ei;exports.AcGePoint2d=kt;exports.AcGePoint3d=W;exports.AcGePolyline2d=En;exports.AcGeQuaternion=An;exports.AcGeShape2d=Qa;exports.AcGeSpline3d=nn;exports.AcGeTol=Ka;exports.AcGeVector2d=te;exports.AcGeVector3d=Y;exports.AcGiArrowType=eo;exports.AcGiDefaultLightingType=so;exports.AcGiLineWeight=sn;exports.AcGiMTextAttachmentPoint=Se;exports.AcGiMTextFlowDirection=Ur;exports.AcGiOrthographicType=no;exports.AcGiRenderMode=ro;exports.AcGiViewport=Ah;exports.AcTrStringUtil=Hc;exports.ByBlock=Dl;exports.ByLayer=pi;exports.DEBUG_MODE=Wc;exports.DEFAULT_LINE_TYPE=bi;exports.DEFAULT_TOL=$a;exports.DEG2RAD=Wa;exports.DefaultLoadingManager=Gl;exports.FLOAT_TOL=wn;exports.ORIGIN_POINT_2D=Yc;exports.ORIGIN_POINT_3D=Ya;exports.RAD2DEG=Da;exports.TAU=Qt;exports.acdbDisableOsnapMode=ud;exports.acdbEnableOsnapMode=hd;exports.acdbHasOsnapMode=ld;exports.acdbHostApplicationServices=mo;exports.acdbMaskToOsnapModes=ad;exports.acdbOsnapModesToMask=id;exports.acdbToggleOsnapMode=od;exports.basisFunction=xi;exports.calculateCurveLength=_h;exports.ceilPowerOfTwo=ih;exports.clamp=Vr;exports.clone=Vs;exports.createWorkerApi=ec;exports.damp=Yl;exports.deepClone=Ta;exports.defaults=Qn;exports.degToRad=rh;exports.dwgCodePageToEncoding=Wl;exports.euclideanModulo=Ha;exports.evaluateNurbsPoint=Ws;exports.floorPowerOfTwo=ah;exports.generateChordKnots=gh;exports.generateSqrtChordKnots=fh;exports.generateUUID=Hl;exports.generateUniformKnots=mh;exports.has=Cl;exports.intPartLength=Xa;exports.interpolateControlPoints=Kc;exports.inverseLerp=Xl;exports.isBetween=oh;exports.isBetweenAngle=lh;exports.isEmpty=Ol;exports.isEqual=qn;exports.isImperialUnits=pd;exports.isMetricUnits=dd;exports.isPointInPolygon=Za;exports.isPolygonIntersect=dh;exports.isPowerOfTwo=sh;exports.lerp=qa;exports.log=js;exports.mapLinear=ql;exports.normalizeAngle=Gs;exports.pingpong=Kl;exports.radToDeg=nh;exports.randFloat=Jl;exports.randFloatSpread=th;exports.randInt=Ql;exports.relativeEps=hh;exports.seededRandom=eh;exports.setLogLevel=Dc;exports.smootherstep=Zl;exports.smoothstep=$l;
4
+ `+i+"}",k;case"function":return"<function>";case"string":return r;default:return String(r)}},Lt.__interfLoop=function(r,i){if(r==null)return!1;if(r==i)return!0;var o=r.__interfaces__;if(o!=null)for(var l=0,c=o.length;l<c;){var d=l++,g=o[d];if(g==i||Lt.__interfLoop(g,i))return!0}return Lt.__interfLoop(r.__super__,i)},Lt.__instanceof=function(r,i){if(i==null)return!1;switch(i){case wc:return(r|0)===r;case Qo:return typeof r=="number";case Jo:return typeof r=="boolean";case String:return typeof r=="string";case Array:return r instanceof Array&&r.__enum__==null;case Sc:return!0;default:if(r!=null){if(typeof i=="function"){if(r instanceof i||Lt.__interfLoop(Lt.getClass(r),i))return!0}else if(typeof i=="object"&&Lt.__isNativeObj(i)&&r instanceof i)return!0}else return!1;return i==tl&&r.__name__!=null||i==el&&r.__ename__!=null?!0:r.__enum__==i}},Lt.__nativeClassName=function(r){var i=Lt.__toStr.call(r).slice(8,-1);return i=="Object"||i=="Function"||i=="Math"||i=="JSON"?null:i},Lt.__isNativeObj=function(r){return Lt.__nativeClassName(r)!=null},Lt.__resolveNativeClass=function(r){return w[r]};var pe=function(r){if(r instanceof Array&&r.__enum__==null)this.a=r,this.byteLength=r.length;else{var i=r;this.a=[];for(var o=0;o<i;){var l=o++;this.a[l]=0}this.byteLength=i}};x["js.html.compat.ArrayBuffer"]=pe,pe.__name__=["js","html","compat","ArrayBuffer"],pe.sliceImpl=function(r,i){var o=new ha(this,r,i==null?null:i-r),l=new oi(o.byteLength),c=new ha(l);return c.set(o),l},pe.prototype={slice:function(r,i){return new pe(this.a.slice(r,i))},__class__:pe};var br=function(r,i,o){if(this.buf=r,i==null?this.offset=0:this.offset=i,o==null?this.length=r.byteLength-this.offset:this.length=o,this.offset<0||this.length<0||this.offset+this.length>r.byteLength)throw new Q(ne.OutsideBounds)};x["js.html.compat.DataView"]=br,br.__name__=["js","html","compat","DataView"],br.prototype={getInt8:function(r){var i=this.buf.a[this.offset+r];return i>=128?i-256:i},getUint8:function(r){return this.buf.a[this.offset+r]},getInt16:function(r,i){var o=this.getUint16(r,i);return o>=32768?o-65536:o},getUint16:function(r,i){return i?this.buf.a[this.offset+r]|this.buf.a[this.offset+r+1]<<8:this.buf.a[this.offset+r]<<8|this.buf.a[this.offset+r+1]},getInt32:function(r,i){var o=this.offset+r,l=this.buf.a[o++],c=this.buf.a[o++],d=this.buf.a[o++],g=this.buf.a[o++];return i?l|c<<8|d<<16|g<<24:g|d<<8|c<<16|l<<24},getUint32:function(r,i){var o=this.getInt32(r,i);return o<0?o+4294967296:o},getFloat32:function(r,i){return de.i32ToFloat(this.getInt32(r,i))},getFloat64:function(r,i){var o=this.getInt32(r,i),l=this.getInt32(r+4,i);return de.i64ToDouble(i?o:l,i?l:o)},setInt8:function(r,i){i<0?this.buf.a[r+this.offset]=i+128&255:this.buf.a[r+this.offset]=i&255},setUint8:function(r,i){this.buf.a[r+this.offset]=i&255},setInt16:function(r,i,o){this.setUint16(r,i<0?i+65536:i,o)},setUint16:function(r,i,o){var l=r+this.offset;o?(this.buf.a[l]=i&255,this.buf.a[l++]=i>>8&255):(this.buf.a[l++]=i>>8&255,this.buf.a[l]=i&255)},setInt32:function(r,i,o){this.setUint32(r,i,o)},setUint32:function(r,i,o){var l=r+this.offset;o?(this.buf.a[l++]=i&255,this.buf.a[l++]=i>>8&255,this.buf.a[l++]=i>>16&255,this.buf.a[l++]=i>>>24):(this.buf.a[l++]=i>>>24,this.buf.a[l++]=i>>16&255,this.buf.a[l++]=i>>8&255,this.buf.a[l++]=i&255)},setFloat32:function(r,i,o){this.setUint32(r,de.floatToI32(i),o)},setFloat64:function(r,i,o){var l=de.doubleToI64(i);o?(this.setUint32(r,l.low),this.setUint32(r,l.high)):(this.setUint32(r,l.high),this.setUint32(r,l.low))},__class__:br};var dr=function(){};x["js.html.compat.Uint8Array"]=dr,dr.__name__=["js","html","compat","Uint8Array"],dr._new=function(r,i,o){var l;if(typeof r=="number"){l=[];for(var c=0;c<r;){var d=c++;l[d]=0}l.byteLength=l.length,l.byteOffset=0,l.buffer=new pe(l)}else if(Lt.__instanceof(r,pe)){var g=r;i==null&&(i=0),o==null&&(o=g.byteLength-i),i==0?l=g.a:l=g.a.slice(i,i+o),l.byteLength=l.length,l.byteOffset=i,l.buffer=g}else if(r instanceof Array&&r.__enum__==null)l=r.slice(),l.byteLength=l.length,l.byteOffset=0,l.buffer=new pe(l);else throw new Q("TODO "+at.string(r));return l.subarray=dr._subarray,l.set=dr._set,l},dr._set=function(r,i){var o=this;if(Lt.__instanceof(r.buffer,pe)){var l=r;if(r.byteLength+i>o.byteLength)throw new Q("set() outside of range");for(var c=0,d=r.byteLength;c<d;){var g=c++;o[g+i]=l[g]}}else if(r instanceof Array&&r.__enum__==null){var f=r;if(f.length+i>o.byteLength)throw new Q("set() outside of range");for(var y=0,S=f.length;y<S;){var P=y++;o[P+i]=f[P]}}else throw new Q("TODO")},dr._subarray=function(r,i){var o=this,l=dr._new(o.slice(r,i));return l.byteOffset=r,l};var Mt=function(r){this._resolved=!1,this._pending=!1,this._errorPending=!1,this._fulfilled=!1,this._update=[],this._error=[],this._errored=!1,r!=null&&Mt.link(r,this,function(i){return i})};x["promhx.base.AsyncBase"]=Mt,Mt.__name__=["promhx","base","AsyncBase"],Mt.link=function(r,i,o){r._update.push({async:i,linkf:function(l){i.handleResolve(o(l))}}),Mt.immediateLinkUpdate(r,i,o)},Mt.immediateLinkUpdate=function(r,i,o){if(r._errored&&!r._errorPending&&!(r._error.length>0)&&i.handleError(r._errorVal),r._resolved&&!r._pending)try{i.handleResolve(o(r._val))}catch(l){l instanceof Q&&(l=l.val),i.handleError(l)}},Mt.linkAll=function(r,i){for(var o=function(d,g,f){if(d.length==0||Mt.allFulfilled(d)){for(var y,S=[],P=nr(r)();P.hasNext();){var I=P.next();S.push(I==g?f:I._val)}y=S,i.handleResolve(y)}},l=nr(r)();l.hasNext();){var c=l.next();c._update.push({async:i,linkf:function(d,g,f){return function(y){d(g,f,y)}}(o,function(d){for(var g,f=[],y=nr(r)();y.hasNext();){var S=y.next();S!=c&&f.push(S)}return g=f,g}(),c)})}Mt.allFulfilled(r)&&i.handleResolve(function(d){for(var g,f=[],y=nr(r)();y.hasNext();){var S=y.next();f.push(S._val)}return g=f,g}())},Mt.pipeLink=function(r,i,o){var l=!1,c=function(d){if(!l){l=!0;var g=o(d);g._update.push({async:i,linkf:je(i,i.handleResolve)}),Mt.immediateLinkUpdate(g,i,function(f){return f})}};if(r._update.push({async:i,linkf:c}),r._resolved&&!r._pending)try{c(r._val)}catch(d){d instanceof Q&&(d=d.val),i.handleError(d)}},Mt.allResolved=function(r){for(var i=nr(r)();i.hasNext();){var o=i.next();if(!o._resolved)return!1}return!0},Mt.allFulfilled=function(r){for(var i=nr(r)();i.hasNext();){var o=i.next();if(!o._fulfilled)return!1}return!0},Mt.prototype={catchError:function(r){return this._error.push(r),this},errorThen:function(r){return this._errorMap=r,this},isResolved:function(){return this._resolved},isErrored:function(){return this._errored},isErrorHandled:function(){return this._error.length>0},isErrorPending:function(){return this._errorPending},isFulfilled:function(){return this._fulfilled},isPending:function(){return this._pending},handleResolve:function(r){this._resolve(r)},_resolve:function(r){var i=this;this._pending?At.enqueue(function(o,l){return function(){o(l)}}(je(this,this._resolve),r)):(this._resolved=!0,this._pending=!0,At.queue.add(function(){i._val=r;for(var o=0,l=i._update;o<l.length;){var c=l[o];++o;try{c.linkf(r)}catch(d){d instanceof Q&&(d=d.val),c.async.handleError(d)}}i._fulfilled=!0,i._pending=!1}),At.continueOnNextLoop())},handleError:function(r){this._handleError(r)},_handleError:function(r){var i=this,o=function(l){if(i._error.length>0)for(var c=0,d=i._error;c<d.length;){var g=d[c];++c,g(l)}else if(i._update.length>0)for(var f=0,y=i._update;f<y.length;){var S=y[f];++f,S.async.handleError(l)}else throw new Q(l);i._errorPending=!1};this._errorPending||(this._errorPending=!0,this._errored=!0,this._errorVal=r,At.queue.add(function(){if(i._errorMap!=null)try{i._resolve(i._errorMap(r))}catch(l){l instanceof Q&&(l=l.val),o(l)}else o(r)}),At.continueOnNextLoop())},then:function(r){var i=new Mt(null);return Mt.link(this,i,r),i},unlink:function(r){var i=this;At.queue.add(function(){i._update=i._update.filter(function(o){return o.async!=r})}),At.continueOnNextLoop()},isLinked:function(r){for(var i=!1,o=0,l=this._update;o<l.length;){var c=l[o];if(++o,c.async==r)return!0}return i},__class__:Mt};var Mn=_.promhx.Deferred=function(){Mt.call(this)};x["promhx.Deferred"]=Mn,Mn.__name__=["promhx","Deferred"],Mn.__super__=Mt,Mn.prototype=T(Mt.prototype,{resolve:function(r){this.handleResolve(r)},throwError:function(r){this.handleError(r)},promise:function(){return new be(this)},stream:function(){return new Yt(this)},publicStream:function(){return new Dr(this)},__class__:Mn});var be=_.promhx.Promise=function(r){Mt.call(this,r),this._rejected=!1};x["promhx.Promise"]=be,be.__name__=["promhx","Promise"],be.whenAll=function(r){var i=new be(null);return Mt.linkAll(r,i),i},be.promise=function(r){var i=new be;return i.handleResolve(r),i},be.__super__=Mt,be.prototype=T(Mt.prototype,{isRejected:function(){return this._rejected},reject:function(r){this._rejected=!0,this.handleError(r)},handleResolve:function(r){if(this._resolved){var i="Promise has already been resolved";throw new Q(kn.AlreadyResolved(i))}this._resolve(r)},then:function(r){var i=new be(null);return Mt.link(this,i,r),i},unlink:function(r){var i=this;At.queue.add(function(){if(i._fulfilled)i._update=i._update.filter(function(l){return l.async!=r});else{var o="Downstream Promise is not fullfilled";i.handleError(kn.DownstreamNotFullfilled(o))}}),At.continueOnNextLoop()},handleError:function(r){this._rejected=!0,this._handleError(r)},pipe:function(r){var i=new be(null);return Mt.pipeLink(this,i,r),i},errorPipe:function(r){var i=new be;return this.catchError(function(o){var l=r(o);l.then(je(i,i._resolve))}),this.then(je(i,i._resolve)),i},__class__:be});var Yt=_.promhx.Stream=function(r){Mt.call(this,r),this._end_promise=new be};x["promhx.Stream"]=Yt,Yt.__name__=["promhx","Stream"],Yt.foreach=function(r){for(var i=new Yt(null),o=nr(r)();o.hasNext();){var l=o.next();i.handleResolve(l)}return i.end(),i},Yt.wheneverAll=function(r){var i=new Yt(null);return Mt.linkAll(r,i),i},Yt.concatAll=function(r){for(var i=new Yt(null),o=nr(r)();o.hasNext();){var l=o.next();i.concat(l)}return i},Yt.mergeAll=function(r){for(var i=new Yt(null),o=nr(r)();o.hasNext();){var l=o.next();i.merge(l)}return i},Yt.stream=function(r){var i=new Yt(null);return i.handleResolve(r),i},Yt.__super__=Mt,Yt.prototype=T(Mt.prototype,{then:function(r){var i=new Yt(null);return Mt.link(this,i,r),this._end_promise._update.push({async:i._end_promise,linkf:function(o){i.end()}}),i},detachStream:function(r){for(var i=[],o=!1,l=0,c=this._update;l<c.length;){var d=c[l];++l,d.async==r?(this._end_promise._update=this._end_promise._update.filter(function(g){return g.async!=r._end_promise}),o=!0):i.push(d)}return this._update=i,o},first:function(){var r=new be(null);return this.then(function(i){r._resolved||r.handleResolve(i)}),r},handleResolve:function(r){!this._end&&!this._pause&&this._resolve(r)},pause:function(r){r==null&&(r=!this._pause),this._pause=r},pipe:function(r){var i=new Yt(null);return Mt.pipeLink(this,i,r),this._end_promise.then(function(o){i.end()}),i},errorPipe:function(r){var i=new Yt(null);return this.catchError(function(o){var l=r(o);l.then(je(i,i._resolve)),l._end_promise.then((oa=i._end_promise,je(oa,oa._resolve)))}),this.then(je(i,i._resolve)),this._end_promise.then(function(o){i.end()}),i},handleEnd:function(){if(this._pending)At.queue.add(je(this,this.handleEnd)),At.continueOnNextLoop();else{if(this._end_promise._resolved)return;this._end=!0;var r;this._resolved?r=ye.Some(this._val):r=ye.None,this._end_promise.handleResolve(r),this._update=[],this._error=[]}},end:function(){return At.queue.add(je(this,this.handleEnd)),At.continueOnNextLoop(),this},endThen:function(r){return this._end_promise.then(r)},filter:function(r){var i=new Yt(null);return this._update.push({async:i,linkf:function(o){r(o)&&i.handleResolve(o)}}),Mt.immediateLinkUpdate(this,i,function(o){return o}),i},concat:function(r){var i=new Yt(null);return this._update.push({async:i,linkf:je(i,i.handleResolve)}),Mt.immediateLinkUpdate(this,i,function(o){return o}),this._end_promise.then(function(o){r.pipe(function(l){return i.handleResolve(l),i}),r._end_promise.then(function(l){i.end()})}),i},merge:function(r){var i=new Yt(null);return this._update.push({async:i,linkf:je(i,i.handleResolve)}),r._update.push({async:i,linkf:je(i,i.handleResolve)}),Mt.immediateLinkUpdate(this,i,function(o){return o}),Mt.immediateLinkUpdate(r,i,function(o){return o}),i},__class__:Yt});var Dr=_.promhx.PublicStream=function(r){Yt.call(this,r)};x["promhx.PublicStream"]=Dr,Dr.__name__=["promhx","PublicStream"],Dr.publicstream=function(r){var i=new Dr(null);return i.handleResolve(r),i},Dr.__super__=Yt,Dr.prototype=T(Yt.prototype,{resolve:function(r){this.handleResolve(r)},throwError:function(r){this.handleError(r)},update:function(r){this.handleResolve(r)},__class__:Dr});var At=function(){};x["promhx.base.EventLoop"]=At,At.__name__=["promhx","base","EventLoop"],At.enqueue=function(r){At.queue.add(r),At.continueOnNextLoop()},At.set_nextLoop=function(r){if(At.nextLoop!=null)throw new Q("nextLoop has already been set");return At.nextLoop=r,At.nextLoop},At.queueEmpty=function(){return At.queue.isEmpty()},At.finish=function(r){r==null&&(r=1e3);for(var i=null;r-- >0&&(i=At.queue.pop())!=null;)i();return At.queue.isEmpty()},At.clear=function(){At.queue=new V},At.f=function(){var r=At.queue.pop();r!=null&&r(),At.queue.isEmpty()||At.continueOnNextLoop()},At.continueOnNextLoop=function(){At.nextLoop!=null?At.nextLoop(At.f):setImmediate(At.f)};var kn=x["promhx.error.PromiseError"]={__ename__:["promhx","error","PromiseError"],__constructs__:["AlreadyResolved","DownstreamNotFullfilled"]};kn.AlreadyResolved=function(r){var i=["AlreadyResolved",0,r];return i.__enum__=kn,i.toString=A,i},kn.DownstreamNotFullfilled=function(r){var i=["DownstreamNotFullfilled",1,r];return i.__enum__=kn,i.toString=A,i};var ii=function(){};x["verb.Verb"]=ii,ii.__name__=["verb","Verb"],ii.main=function(){b.log("verb 2.1.0")};var Z=function(){};x["verb.core.ArrayExtensions"]=Z,Z.__name__=["verb","core","ArrayExtensions"],Z.alloc=function(r,i){if(!(i<0))for(;r.length<i;)r.push(null)},Z.reversed=function(r){var i=r.slice();return i.reverse(),i},Z.last=function(r){return r[r.length-1]},Z.first=function(r){return r[0]},Z.spliceAndInsert=function(r,i,o,l){r.splice(i,o),r.splice(i,0,l)},Z.left=function(r){if(r.length==0)return[];var i=Math.ceil(r.length/2);return r.slice(0,i)},Z.right=function(r){if(r.length==0)return[];var i=Math.ceil(r.length/2);return r.slice(i)},Z.rightWithPivot=function(r){if(r.length==0)return[];var i=Math.ceil(r.length/2);return r.slice(i-1)},Z.unique=function(r,i){if(r.length==0)return[];for(var o=[r.pop()];r.length>0;){for(var l=r.pop(),c=!0,d=0;d<o.length;){var g=o[d];if(++d,i(l,g)){c=!1;break}}c&&o.push(l)}return o};var Vt=function(){};x["verb.core.Binomial"]=Vt,Vt.__name__=["verb","core","Binomial"],Vt.get=function(r,i){if(i==0)return 1;if(r==0||i>r)return 0;if(i>r-i&&(i=r-i),Vt.memo_exists(r,i))return Vt.get_memo(r,i);for(var o=1,l=r,c=1,d=i+1;c<d;){var g=c++;if(Vt.memo_exists(l,g)){r--,o=Vt.get_memo(l,g);continue}o*=r--,o/=g,Vt.memoize(l,g,o)}return o},Vt.get_no_memo=function(r,i){if(i==0)return 1;if(r==0||i>r)return 0;i>r-i&&(i=r-i);for(var o=1,l=1,c=i+1;l<c;){var d=l++;o*=r--,o/=d}return o},Vt.memo_exists=function(r,i){return Vt.memo.h.hasOwnProperty(r)&&Vt.memo.h[r].h.hasOwnProperty(i)},Vt.get_memo=function(r,i){return Vt.memo.h[r].h[i]},Vt.memoize=function(r,i,o){Vt.memo.h.hasOwnProperty(r)||Vt.memo.set(r,new wt),Vt.memo.h[r].h[i]=o};var Ve=_.core.BoundingBox=function(r){this.max=null,this.min=null,this.dim=3,this.initialized=!1,r!=null&&this.addRange(r)};x["verb.core.BoundingBox"]=Ve,Ve.__name__=["verb","core","BoundingBox"],Ve.intervalsOverlap=function(r,i,o,l,c){c==null&&(c=-1);var d;c<-.5?d=rt.TOLERANCE:d=c;var g=Math.min(r,i)-d,f=Math.max(r,i)+d,y=Math.min(o,l)-d,S=Math.max(o,l)+d;return g>=y&&g<=S||f>=y&&f<=S||y>=g&&y<=f||S>=g&&S<=f},Ve.prototype={fromPoint:function(r){return new Ve([r])},add:function(r){if(!this.initialized)return this.dim=r.length,this.min=r.slice(0),this.max=r.slice(0),this.initialized=!0,this;for(var i=0,o=this.dim;i<o;){var l=i++;r[l]>this.max[l]&&(this.max[l]=r[l]),r[l]<this.min[l]&&(this.min[l]=r[l])}return this},addRange:function(r){for(var i=r.length,o=0;o<i;){var l=o++;this.add(r[l])}return this},contains:function(r,i){return i==null&&(i=-1),this.initialized?this.intersects(new Ve([r]),i):!1},intersects:function(r,i){if(i==null&&(i=-1),!this.initialized||!r.initialized)return!1;for(var o=this.min,l=this.max,c=r.min,d=r.max,g=0,f=this.dim;g<f;){var y=g++;if(!Ve.intervalsOverlap(o[y],l[y],c[y],d[y],i))return!1}return!0},clear:function(){return this.initialized=!1,this},getLongestAxis:function(){for(var r=0,i=0,o=0,l=this.dim;o<l;){var c=o++,d=this.getAxisLength(c);d>r&&(r=d,i=c)}return i},getAxisLength:function(r){return r<0||r>this.dim-1?0:Math.abs(this.min[r]-this.max[r])},intersect:function(r,i){if(!this.initialized)return null;var o=this.min,l=this.max,c=r.min,d=r.max;if(!this.intersects(r,i))return null;for(var g=[],f=[],y=0,S=this.dim;y<S;){var P=y++;g.push(Math.min(l[P],d[P])),f.push(Math.max(o[P],c[P]))}return new Ve([f,g])},__class__:Ve};var rt=_.core.Constants=function(){};x["verb.core.Constants"]=rt,rt.__name__=["verb","core","Constants"];var ee=_.core.SerializableBase=function(){};x["verb.core.SerializableBase"]=ee,ee.__name__=["verb","core","SerializableBase"],ee.prototype={serialize:function(){var r=new $t;return r.serialize(this),r.toString()},__class__:ee};var ns=_.core.Plane=function(r,i){this.origin=r,this.normal=i};x["verb.core.Plane"]=ns,ns.__name__=["verb","core","Plane"],ns.__super__=ee,ns.prototype=T(ee.prototype,{__class__:ns});var Nn=_.core.Ray=function(r,i){this.origin=r,this.dir=i};x["verb.core.Ray"]=Nn,Nn.__name__=["verb","core","Ray"],Nn.__super__=ee,Nn.prototype=T(ee.prototype,{__class__:Nn});var Ht=_.core.NurbsCurveData=function(r,i,o){this.degree=r,this.controlPoints=o,this.knots=i};x["verb.core.NurbsCurveData"]=Ht,Ht.__name__=["verb","core","NurbsCurveData"],Ht.__super__=ee,Ht.prototype=T(ee.prototype,{__class__:Ht});var se=_.core.NurbsSurfaceData=function(r,i,o,l,c){this.degreeU=r,this.degreeV=i,this.knotsU=o,this.knotsV=l,this.controlPoints=c};x["verb.core.NurbsSurfaceData"]=se,se.__name__=["verb","core","NurbsSurfaceData"],se.__super__=ee,se.prototype=T(ee.prototype,{__class__:se});var er=_.core.MeshData=function(r,i,o,l){this.faces=r,this.points=i,this.normals=o,this.uvs=l};x["verb.core.MeshData"]=er,er.__name__=["verb","core","MeshData"],er.empty=function(){return new er([],[],[],[])},er.__super__=ee,er.prototype=T(ee.prototype,{__class__:er});var ss=_.core.PolylineData=function(r,i){this.points=r,this.params=i};x["verb.core.PolylineData"]=ss,ss.__name__=["verb","core","PolylineData"],ss.__super__=ee,ss.prototype=T(ee.prototype,{__class__:ss});var is=_.core.VolumeData=function(r,i,o,l,c,d,g){this.degreeU=r,this.degreeV=i,this.degreeW=o,this.knotsU=l,this.knotsV=c,this.knotsW=d,this.controlPoints=g};x["verb.core.VolumeData"]=is,is.__name__=["verb","core","VolumeData"],is.__super__=ee,is.prototype=T(ee.prototype,{__class__:is});var ie=_.core.Pair=function(r,i){this.item0=r,this.item1=i};x["verb.core.Pair"]=ie,ie.__name__=["verb","core","Pair"],ie.prototype={__class__:ie};var Oe=_.core.Interval=function(r,i){this.min=r,this.max=i};x["verb.core.Interval"]=Oe,Oe.__name__=["verb","core","Interval"],Oe.prototype={__class__:Oe};var hn=_.core.CurveCurveIntersection=function(r,i,o,l){this.point0=r,this.point1=i,this.u0=o,this.u1=l};x["verb.core.CurveCurveIntersection"]=hn,hn.__name__=["verb","core","CurveCurveIntersection"],hn.prototype={__class__:hn};var as=_.core.CurveSurfaceIntersection=function(r,i,o,l){this.u=r,this.uv=i,this.curvePoint=o,this.surfacePoint=l};x["verb.core.CurveSurfaceIntersection"]=as,as.__name__=["verb","core","CurveSurfaceIntersection"],as.prototype={__class__:as};var Hr=_.core.MeshIntersectionPoint=function(r,i,o,l,c){this.visited=!1,this.adj=null,this.opp=null,this.uv0=r,this.uv1=i,this.point=o,this.faceIndex0,this.faceIndex1};x["verb.core.MeshIntersectionPoint"]=Hr,Hr.__name__=["verb","core","MeshIntersectionPoint"],Hr.prototype={__class__:Hr};var os=_.core.PolylineMeshIntersection=function(r,i,o,l,c){this.point=r,this.u=i,this.uv=o,this.polylineIndex=l,this.faceIndex=c};x["verb.core.PolylineMeshIntersection"]=os,os.__name__=["verb","core","PolylineMeshIntersection"],os.prototype={__class__:os};var ls=_.core.SurfaceSurfaceIntersectionPoint=function(r,i,o,l){this.uv0=r,this.uv1=i,this.point=o,this.dist=l};x["verb.core.SurfaceSurfaceIntersectionPoint"]=ls,ls.__name__=["verb","core","SurfaceSurfaceIntersectionPoint"],ls.prototype={__class__:ls};var hs=_.core.TriSegmentIntersection=function(r,i,o,l){this.point=r,this.s=i,this.t=o,this.p=l};x["verb.core.TriSegmentIntersection"]=hs,hs.__name__=["verb","core","TriSegmentIntersection"],hs.prototype={__class__:hs};var Ln=_.core.CurveTriPoint=function(r,i,o){this.u=r,this.point=i,this.uv=o};x["verb.core.CurveTriPoint"]=Ln,Ln.__name__=["verb","core","CurveTriPoint"],Ln.prototype={__class__:Ln};var Qe=function(r,i,o,l,c){c==null&&(c=!1),l==null&&(l=-1),this.uv=o,this.point=r,this.normal=i,this.id=l,this.degen=c};x["verb.core.SurfacePoint"]=Qe,Qe.__name__=["verb","core","SurfacePoint"],Qe.fromUv=function(r,i){return new Qe(null,null,[r,i])},Qe.prototype={__class__:Qe};var ai=_.core.CurvePoint=function(r,i){this.u=r,this.pt=i};x["verb.core.CurvePoint"]=ai,ai.__name__=["verb","core","CurvePoint"],ai.prototype={__class__:ai};var us=_.core.KdTree=function(r,i){this.dim=3,this.points=r,this.distanceFunction=i,this.dim=r[0].point.length,this.root=this.buildTree(r,0,null)};x["verb.core.KdTree"]=us,us.__name__=["verb","core","KdTree"],us.prototype={buildTree:function(r,i,o){var l=i%this.dim,c,d;return r.length==0?null:r.length==1?new On(r[0],l,o):(r.sort(function(g,f){var y=g.point[l]-f.point[l];return y==0?0:y>0?1:-1}),c=Math.floor(r.length/2),d=new On(r[c],l,o),d.left=this.buildTree(r.slice(0,c),i+1,d),d.right=this.buildTree(r.slice(c+1),i+1,d),d)},nearest:function(r,i,o){var l=this,c=new cs(function(I){return-I.item1}),d,g=null;g=function(I){for(var E,M=I.dimension,k=l.distanceFunction(r,I.kdPoint.point),B,C=[],z=0,R=l.dim;z<R;)z++,C.push(0);B=C;for(var U,j,X=function($,tt){c.push(new ie($,tt)),c.size()>i&&c.pop()},J=0,q=l.dim;J<q;){var G=J++;G==I.dimension?B[G]=r[G]:B[G]=I.kdPoint.point[G]}if(U=l.distanceFunction(B,I.kdPoint.point),I.right==null&&I.left==null){(c.size()<i||k<c.peek().item1)&&X(I,k);return}I.right==null?E=I.left:I.left==null?E=I.right:r[M]<I.kdPoint.point[M]?E=I.left:E=I.right,g(E),(c.size()<i||k<c.peek().item1)&&X(I,k),(c.size()<i||Math.abs(U)<c.peek().item1)&&(E==I.left?j=I.right:j=I.left,j!=null&&g(j))},d=g;for(var f=0;f<i;)f++,c.push(new ie(null,o));d(this.root);for(var y=[],S=0;S<i;){var P=S++;c.content[P].item0!=null&&y.push(new ie(c.content[P].item0.kdPoint,c.content[P].item1))}return y},__class__:us};var cs=function(r){this.content=[],this.scoreFunction=r};x["verb.core.BinaryHeap"]=cs,cs.__name__=["verb","core","BinaryHeap"],cs.prototype={push:function(r){this.content.push(r),this.bubbleUp(this.content.length-1)},pop:function(){var r=this.content[0],i=this.content.pop();return this.content.length>0&&(this.content[0]=i,this.sinkDown(0)),r},peek:function(){return this.content[0]},remove:function(r){for(var i=this.content.length,o=0;o<i;){var l=o++;if(this.content[l]==r){var c=this.content.pop();l!=i-1&&(this.content[l]=c,this.scoreFunction(c)<this.scoreFunction(r)?this.bubbleUp(l):this.sinkDown(l));return}}throw new Q("Node not found.")},size:function(){return this.content.length},bubbleUp:function(r){for(var i=this.content[r];r>0;){var o=Math.floor((r+1)/2)-1,l=this.content[o];if(this.scoreFunction(i)<this.scoreFunction(l))this.content[o]=i,this.content[r]=l,r=o;else break}},sinkDown:function(r){for(var i=this.content.length,o=this.content[r],l=this.scoreFunction(o);;){var c=(r+1)*2,d=c-1,g=-1,f=0;if(d<i){var y=this.content[d];f=this.scoreFunction(y),f<l&&(g=d)}if(c<i){var S=this.content[c],P=this.scoreFunction(S);P<(g==-1?l:f)&&(g=c)}if(g!=-1)this.content[r]=this.content[g],this.content[g]=o,r=g;else break}},__class__:cs};var Cn=_.core.KdPoint=function(r,i){this.point=r,this.obj=i};x["verb.core.KdPoint"]=Cn,Cn.__name__=["verb","core","KdPoint"],Cn.prototype={__class__:Cn};var On=_.core.KdNode=function(r,i,o){this.kdPoint=r,this.left=null,this.right=null,this.parent=o,this.dimension=i};x["verb.core.KdNode"]=On,On.__name__=["verb","core","KdNode"],On.prototype={__class__:On};var xr=function(){};x["verb.eval.IBoundingBoxTree"]=xr,xr.__name__=["verb","eval","IBoundingBoxTree"],xr.prototype={__class__:xr};var pr=function(r,i){this._boundingBox=null,this._curve=r,i==null&&(i=p.domain(this._curve.knots)/64),this._knotTol=i};x["verb.core.LazyCurveBoundingBoxTree"]=pr,pr.__name__=["verb","core","LazyCurveBoundingBoxTree"],pr.__interfaces__=[xr],pr.prototype={split:function(){var r=Z.first(this._curve.knots),i=Z.last(this._curve.knots),o=i-r,l=me.curveSplit(this._curve,(i+r)/2+o*.1*Math.random());return new ie(new pr(l[0],this._knotTol),new pr(l[1],this._knotTol))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=new Ve(N.dehomogenize1d(this._curve.controlPoints))),this._boundingBox},yield:function(){return this._curve},indivisible:function(r){return p.domain(this._curve.knots)<this._knotTol},empty:function(){return!1},__class__:pr};var mr=function(r,i){if(this._boundingBox=null,this._mesh=r,i==null){for(var o=[],l=0,c=r.faces.length;l<c;){var d=l++;o.push(d)}i=o}this._faceIndices=i};x["verb.core.LazyMeshBoundingBoxTree"]=mr,mr.__name__=["verb","core","LazyMeshBoundingBoxTree"],mr.__interfaces__=[xr],mr.prototype={split:function(){var r=ae.sortTrianglesOnLongestAxis(this.boundingBox(),this._mesh,this._faceIndices),i=Z.left(r),o=Z.right(r);return new ie(new mr(this._mesh,i),new mr(this._mesh,o))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=ae.makeMeshAabb(this._mesh,this._faceIndices)),this._boundingBox},yield:function(){return this._faceIndices[0]},indivisible:function(r){return this._faceIndices.length==1},empty:function(){return this._faceIndices.length==0},__class__:mr};var gr=function(r,i){this._boundingBox=null,this._polyline=r,i==null&&(i=new Oe(0,r.points.length!=0?r.points.length-1:0)),this._interval=i};x["verb.core.LazyPolylineBoundingBoxTree"]=gr,gr.__name__=["verb","core","LazyPolylineBoundingBoxTree"],gr.__interfaces__=[xr],gr.prototype={split:function(){var r=this._interval.min,i=this._interval.max,o=r+Math.ceil((i-r)/2),l=new Oe(r,o),c=new Oe(o,i);return new ie(new gr(this._polyline,l),new gr(this._polyline,c))},boundingBox:function(){return this._boundingBox==null&&(this._boundingBox=new Ve(this._polyline.points)),this._boundingBox},yield:function(){return this._interval.min},indivisible:function(r){return this._interval.max-this._interval.min==1},empty:function(){return this._interval.max-this._interval.min==0},__class__:gr};var qr=function(r,i,o,l){i==null&&(i=!1),this._boundingBox=null,this._surface=r,this._splitV=i,o==null&&(o=p.domain(r.knotsU)/16),l==null&&(l=p.domain(r.knotsV)/16),this._knotTolU=o,this._knotTolV=l};x["verb.core.LazySurfaceBoundingBoxTree"]=qr,qr.__name__=["verb","core","LazySurfaceBoundingBoxTree"],qr.__interfaces__=[xr],qr.prototype={split:function(){var r,i;this._splitV?(r=Z.first(this._surface.knotsV),i=Z.last(this._surface.knotsV)):(r=Z.first(this._surface.knotsU),i=Z.last(this._surface.knotsU));var o=(r+i)/2,l=me.surfaceSplit(this._surface,o,this._splitV);return new ie(new qr(l[0],!this._splitV,this._knotTolU,this._knotTolV),new qr(l[1],!this._splitV,this._knotTolU,this._knotTolV))},boundingBox:function(){if(this._boundingBox==null){this._boundingBox=new Ve;for(var r=0,i=this._surface.controlPoints;r<i.length;){var o=i[r];++r,this._boundingBox.addRange(N.dehomogenize1d(o))}}return this._boundingBox},yield:function(){return this._surface},indivisible:function(r){return p.domain(this._surface.knotsV)<this._knotTolV&&p.domain(this._surface.knotsU)<this._knotTolU},empty:function(){return!1},__class__:qr};var Ot=_.core.Mat=function(){};x["verb.core.Mat"]=Ot,Ot.__name__=["verb","core","Mat"],Ot.mul=function(r,i){for(var o=[],l=0,c=i.length;l<c;){var d=l++;o.push(p.mul(r,i[d]))}return o},Ot.mult=function(r,i){var o,l,c,d,g,f,y,S;o=r.length,l=i.length,c=i[0].length,d=[];for(var P=o-1,I=0,E=0;P>=0;){for(g=[],f=r[P],E=c-1;E>=0;){for(y=f[l-1]*i[l-1][E],I=l-2;I>=1;)S=I-1,y+=f[I]*i[I][E]+f[S]*i[S][E],I-=2;I==0&&(y+=f[0]*i[0][E]),g[E]=y,E--}d[P]=g,P--}return d},Ot.add=function(r,i){for(var o=[],l=0,c=r.length;l<c;){var d=l++;o.push(p.add(r[d],i[d]))}return o},Ot.div=function(r,i){for(var o=[],l=0,c=r.length;l<c;){var d=l++;o.push(p.div(r[d],i))}return o},Ot.sub=function(r,i){for(var o=[],l=0,c=r.length;l<c;){var d=l++;o.push(p.sub(r[d],i[d]))}return o},Ot.dot=function(r,i){for(var o=[],l=0,c=r.length;l<c;){var d=l++;o.push(p.dot(r[d],i))}return o},Ot.identity=function(r){for(var i=p.zeros2d(r,r),o=0;o<r;){var l=o++;i[l][l]=1}return i},Ot.transpose=function(r){if(r.length==0)return[];for(var i=[],o=0,l=r[0].length;o<l;){var c=o++;i.push(function(d){for(var g,f=[],y=0,S=r.length;y<S;){var P=y++;f.push(r[P][c])}return g=f,g}())}return i},Ot.solve=function(r,i){return Ot.LUsolve(Ot.LU(r),i)},Ot.LUsolve=function(r,i){var o,l,c=r.LU,d=c.length,g=i.slice(),f=r.P,y,S,P;for(o=d-1;o!=-1;)g[o]=i[o],--o;for(o=0;o<d;){for(y=f[o],f[o]!=o&&(P=g[o],g[o]=g[y],g[y]=P),S=c[o],l=0;l<o;)g[o]-=g[l]*S[l],++l;++o}for(o=d-1;o>=0;){for(S=c[o],l=o+1;l<d;)g[o]-=g[l]*S[l],++l;g[o]/=S[o],--o}return g},Ot.LU=function(r){for(var i,o,l,c,d,g,f,y,S,P=[],I=0,E=r.length;I<E;){var M=I++;P.push(r[M].slice())}r=P;var k=r.length,B=k-1,C=[];for(l=0;l<k;){for(f=l,g=r[l],S=Math.abs(g[l]),o=l+1;o<k;)c=Math.abs(r[o][l]),S<c&&(S=c,f=o),++o;for(C[l]=f,f!=l&&(r[l]=r[f],r[f]=g,g=r[l]),d=g[l],i=l+1;i<k;)r[i][l]/=d,++i;for(i=l+1;i<k;){for(y=r[i],o=l+1;o<B;)y[o]-=y[l]*g[o],++o,y[o]-=y[l]*g[o],++o;o==B&&(y[o]-=y[l]*g[o]),++i}++l}return new ds(r,C)};var ds=function(r,i){this.LU=r,this.P=i};x["verb.core._Mat.LUDecomp"]=ds,ds.__name__=["verb","core","_Mat","LUDecomp"],ds.prototype={__class__:ds};var ae=_.core.Mesh=function(){};x["verb.core.Mesh"]=ae,ae.__name__=["verb","core","Mesh"],ae.getTriangleNorm=function(r,i){var o=r[i[0]],l=r[i[1]],c=r[i[2]],d=p.sub(l,o),g=p.sub(c,o),f=p.cross(d,g);return p.mul(1/p.norm(f),f)},ae.makeMeshAabb=function(r,i){for(var o=new Ve,l=0;l<i.length;){var c=i[l];++l,o.add(r.points[r.faces[c][0]]),o.add(r.points[r.faces[c][1]]),o.add(r.points[r.faces[c][2]])}return o},ae.sortTrianglesOnLongestAxis=function(r,i,o){for(var l=r.getLongestAxis(),c=[],d=0;d<o.length;){var g=o[d];++d;var f=ae.getMinCoordOnAxis(i.points,i.faces[g],l);c.push(new ie(f,g))}c.sort(function(E,M){var k=E.item0,B=M.item0;return k==B?0:k>B?1:-1});for(var y=[],S=0,P=c.length;S<P;){var I=S++;y.push(c[I].item1)}return y},ae.getMinCoordOnAxis=function(r,i,o){for(var l=1/0,c=0;c<3;){var d=c++,g=r[i[d]][o];g<l&&(l=g)}return l},ae.getTriangleCentroid=function(r,i){for(var o=[0,0,0],l=0;l<3;)for(var c=l++,d=0;d<3;){var g=d++;o[g]+=r[i[c]][g]}for(var f=0;f<3;){var y=f++;o[y]/=3}return o},ae.triangleUVFromPoint=function(r,i,o){var l=r.faces[i],c=r.points[l[0]],d=r.points[l[1]],g=r.points[l[2]],f=r.uvs[l[0]],y=r.uvs[l[1]],S=r.uvs[l[2]],P=p.sub(c,o),I=p.sub(d,o),E=p.sub(g,o),M=p.norm(p.cross(p.sub(c,d),p.sub(c,g))),k=p.norm(p.cross(I,E))/M,B=p.norm(p.cross(E,P))/M,C=p.norm(p.cross(P,I))/M;return p.add(p.mul(k,f),p.add(p.mul(B,y),p.mul(C,S)))};var Xr=function(r,i){if(this._empty=!1,this._face=-1,i==null){for(var o=[],l=0,c=r.faces.length;l<c;){var d=l++;o.push(d)}i=o}if(this._boundingBox=ae.makeMeshAabb(r,i),i.length<1){this._empty=!0;return}else if(i.length<2){this._face=i[0];return}var g=ae.sortTrianglesOnLongestAxis(this._boundingBox,r,i),f=Z.left(g),y=Z.right(g);this._children=new ie(new Xr(r,f),new Xr(r,y))};x["verb.core.MeshBoundingBoxTree"]=Xr,Xr.__name__=["verb","core","MeshBoundingBoxTree"],Xr.__interfaces__=[xr],Xr.prototype={split:function(){return this._children},boundingBox:function(){return this._boundingBox},yield:function(){return this._face},indivisible:function(r){return this._children==null},empty:function(){return this._empty},__class__:Xr};var rr=_.core.Minimizer=function(){};x["verb.core.Minimizer"]=rr,rr.__name__=["verb","core","Minimizer"],rr.uncmin=function(r,i,o,l,c){o==null&&(o=1e-8),l==null&&(l=function(J){return rr.numericalGradient(r,J)}),c==null&&(c=1e3),i=i.slice(0);var d=i.length,g=r(i),f=g,y;if(isNaN(g))throw new Q("uncmin: f(x0) is a NaN!");o=Math.max(o,rt.EPSILON);var S,P,I,E=Ot.identity(d),M=0,k=[],B,C,z,R,U,j,X="";for(P=l(i);M<c;){if(!p.all(p.finite(P))){X="Gradient has Infinity or NaN";break}if(S=p.neg(Ot.dot(E,P)),!p.all(p.finite(S))){X="Search direction has Infinity or NaN";break}if(j=p.norm(S),j<o){X="Newton step smaller than tol";break}for(U=1,y=p.dot(P,S),B=i;M<c&&!(U*j<o);){if(k=p.mul(U,S),B=p.add(i,k),f=r(B),f-g>=.1*U*y||isNaN(f)){U*=.5,++M;continue}break}if(U*j<o){X="Line search step size smaller than tol";break}if(M==c){X="maxit reached during line search";break}I=l(B),C=p.sub(I,P),R=p.dot(C,k),z=Ot.dot(E,C),E=Ot.sub(Ot.add(E,Ot.mul((R+p.dot(C,z))/(R*R),rr.tensor(k,k))),Ot.div(Ot.add(rr.tensor(z,k),rr.tensor(k,z)),R)),i=B,g=f,P=I,++M}return new ps(i,g,P,E,M,X)},rr.numericalGradient=function(r,i){var o=i.length,l=r(i);if(l==NaN)throw new Q("gradient: f(x) is a NaN!");for(var c=i.slice(0),d,g,f=[],y,S=.001,P,I,E,M=0,k,B,C,z=0;z<o;)for(var R=z++,U=Math.max(1e-6*l,1e-8);;){if(++M,M>20)throw new Q("Numerical gradient fails");if(c[R]=i[R]+U,d=r(c),c[R]=i[R]-U,g=r(c),c[R]=i[R],isNaN(d)||isNaN(g)){U/=16;continue}if(f[R]=(d-g)/(2*U),P=i[R]-U,I=i[R],E=i[R]+U,k=(d-l)/U,B=(l-g)/U,C=p.max([Math.abs(f[R]),Math.abs(l),Math.abs(d),Math.abs(g),Math.abs(P),Math.abs(I),Math.abs(E),1e-8]),y=Math.min(p.max([Math.abs(k-f[R]),Math.abs(B-f[R]),Math.abs(k-B)])/C,U/C),y>S)U/=16;else break}return f},rr.tensor=function(r,i){for(var o=r.length,l=i.length,c=[],d,g,f=o-1;f>=0;){d=[],g=r[f];for(var y=l-1;y>=3;)d[y]=g*i[y],--y,d[y]=g*i[y],--y,d[y]=g*i[y],--y,d[y]=g*i[y],--y;for(;y>=0;)d[y]=g*i[y],--y;c[f]=d,f--}return c};var ps=function(r,i,o,l,c,d){this.solution=r,this.value=i,this.gradient=o,this.invHessian=l,this.iterations=c,this.message=d};x["verb.core.MinimizationResult"]=ps,ps.__name__=["verb","core","MinimizationResult"],ps.prototype={__class__:ps};var Bn=function(){};x["verb.core.ISerializable"]=Bn,Bn.__name__=["verb","core","ISerializable"],Bn.prototype={__class__:Bn};var aa=_.core.Deserializer=function(){};x["verb.core.Deserializer"]=aa,aa.__name__=["verb","core","Deserializer"],aa.deserialize=function(r){var i=new Xt(r),o=i.unserialize();return o};var Ue=_.core.Trig=function(){};x["verb.core.Trig"]=Ue,Ue.__name__=["verb","core","Trig"],Ue.isPointInPlane=function(r,i,o){return Math.abs(p.dot(p.sub(r,i.origin),i.normal))<o},Ue.distToSegment=function(r,i,o){var l=Ue.segmentClosestPoint(i,r,o,0,1);return p.dist(i,l.pt)},Ue.rayClosestPoint=function(r,i,o){var l=p.sub(r,i),c=p.dot(l,o),d=p.add(i,p.mul(c,o));return d},Ue.distToRay=function(r,i,o){var l=Ue.rayClosestPoint(r,i,o),c=p.sub(l,r);return p.norm(c)},Ue.threePointsAreFlat=function(r,i,o,l){var c=p.sub(i,r),d=p.sub(o,r),g=p.cross(c,d),f=p.dot(g,g);return f<l},Ue.segmentClosestPoint=function(r,i,o,l,c){var d=p.sub(o,i),g=p.norm(d);if(g<rt.EPSILON)return{u:l,pt:i};var f=i,y=p.mul(1/g,d),S=p.sub(r,f),P=p.dot(S,y);return P<0?{u:l,pt:i}:P>g?{u:c,pt:o}:{u:l+(c-l)*P/g,pt:p.add(f,p.mul(P,y))}};var p=_.core.Vec=function(){};x["verb.core.Vec"]=p,p.__name__=["verb","core","Vec"],p.angleBetween=function(r,i){return Math.acos(p.dot(r,i)/(p.norm(r)*p.norm(i)))},p.positiveAngleBetween=function(r,i,o){var l=p.cross(r,i),c=p.norm(r),d=p.norm(i),g=c*d,f=p.dot(r,i),y=p.norm(l)/g,S=f/g,P=Math.atan2(y,S),I=p.dot(o,l);return Math.abs(I)<rt.EPSILON||I>0?P:-P},p.signedAngleBetween=function(r,i,o){var l=p.cross(r,i),c=p.norm(r),d=p.norm(i),g=c*d,f=p.dot(r,i),y=p.norm(l)/g,S=f/g,P=Math.atan2(y,S),I=p.dot(o,l);return I>0?P:2*Math.PI-P},p.angleBetweenNormalized2d=function(r,i){var o=r[0]*i[1]-r[1]*i[0];return Math.atan2(o,p.dot(r,i))},p.domain=function(r){return Z.last(r)-Z.first(r)},p.range=function(r){for(var i=[],o=0,l=0;l<r;)l++,i.push(o),o+=1;return i},p.span=function(r,i,o){if(o==null)return[];if(o<rt.EPSILON)return[];if(r>i&&o>0)return[];if(i>r&&o<0)return[];for(var l=[],c=r;c<=i;)l.push(c),c+=o;return l},p.neg=function(r){return r.map(function(i){return-i})},p.min=function(r){return O.fold(r,function(i,o){return Math.min(i,o)},1/0)},p.max=function(r){return O.fold(r,function(i,o){return Math.max(i,o)},-1/0)},p.all=function(r){return O.fold(r,function(i,o){return o&&i},!0)},p.finite=function(r){return r.map(function(i){return isFinite(i)})},p.onRay=function(r,i,o){return p.add(r,p.mul(o,i))},p.lerp=function(r,i,o){return p.add(p.mul(r,i),p.mul(1-r,o))},p.normalized=function(r){return p.div(r,p.norm(r))},p.cross=function(r,i){return[r[1]*i[2]-r[2]*i[1],r[2]*i[0]-r[0]*i[2],r[0]*i[1]-r[1]*i[0]]},p.dist=function(r,i){return p.norm(p.sub(r,i))},p.distSquared=function(r,i){return p.normSquared(p.sub(r,i))},p.sum=function(r){return O.fold(r,function(i,o){return o+i},0)},p.addAll=function(r){var i=nr(r)();if(!i.hasNext())return null;var o=i.next().length;return O.fold(r,function(l,c){return p.add(c,l)},p.rep(o,0))},p.addAllMutate=function(r){for(var i=r[0],o=1,l=r.length;o<l;){var c=o++;p.addMutate(i,r[c])}},p.addMulMutate=function(r,i,o){for(var l=0,c=r.length;l<c;){var d=l++;r[d]=r[d]+i*o[d]}},p.subMulMutate=function(r,i,o){for(var l=0,c=r.length;l<c;){var d=l++;r[d]=r[d]-i*o[d]}},p.addMutate=function(r,i){for(var o=0,l=r.length;o<l;){var c=o++;r[c]=r[c]+i[c]}},p.subMutate=function(r,i){for(var o=0,l=r.length;o<l;){var c=o++;r[c]=r[c]-i[c]}},p.mulMutate=function(r,i){for(var o=0,l=i.length;o<l;){var c=o++;i[c]=i[c]*r}},p.norm=function(r){var i=p.normSquared(r);return i!=0?Math.sqrt(i):i},p.normSquared=function(r){return O.fold(r,function(i,o){return o+i*i},0)},p.rep=function(r,i){for(var o=[],l=0;l<r;)l++,o.push(i);return o},p.zeros1d=function(r){for(var i=[],o=0;o<r;)o++,i.push(0);return i},p.zeros2d=function(r,i){for(var o=[],l=0;l<r;)l++,o.push(p.zeros1d(i));return o},p.zeros3d=function(r,i,o){for(var l=[],c=0;c<r;)c++,l.push(p.zeros2d(i,o));return l},p.dot=function(r,i){for(var o=0,l=0,c=r.length;l<c;){var d=l++;o+=r[d]*i[d]}return o},p.add=function(r,i){for(var o=[],l=0,c=r.length;l<c;){var d=l++;o.push(r[d]+i[d])}return o},p.mul=function(r,i){for(var o=[],l=0,c=i.length;l<c;){var d=l++;o.push(r*i[d])}return o},p.div=function(r,i){for(var o=[],l=0,c=r.length;l<c;){var d=l++;o.push(r[d]/i)}return o},p.sub=function(r,i){for(var o=[],l=0,c=r.length;l<c;){var d=l++;o.push(r[d]-i[d])}return o},p.isZero=function(r){for(var i=0,o=r.length;i<o;){var l=i++;if(Math.abs(r[l])>rt.TOLERANCE)return!1}return!0},p.sortedSetUnion=function(r,i){for(var o=[],l=0,c=0;l<r.length||c<i.length;){if(l>=r.length){o.push(i[c]),c++;continue}else if(c>=i.length){o.push(r[l]),l++;continue}var d=r[l]-i[c];if(Math.abs(d)<rt.EPSILON){o.push(r[l]),l++,c++;continue}if(d>0){o.push(i[c]),c++;continue}o.push(r[l]),l++}return o},p.sortedSetSub=function(r,i){for(var o=[],l=0,c=0;l<r.length;){if(c>=i.length){o.push(r[l]),l++;continue}if(Math.abs(r[l]-i[c])<rt.EPSILON){l++,c++;continue}o.push(r[l]),l++}return o};var bt=_.eval.Analyze=function(){};x["verb.eval.Analyze"]=bt,bt.__name__=["verb","eval","Analyze"],bt.knotMultiplicities=function(r){for(var i=[new Rn(r[0],0)],o=i[0],l=0;l<r.length;){var c=r[l];++l,Math.abs(c-o.knot)>rt.EPSILON&&(o=new Rn(c,0),i.push(o)),o.inc()}return i},bt.isRationalSurfaceClosed=function(r,i){i==null&&(i=!0);var o;i?o=r.controlPoints:o=Ot.transpose(r.controlPoints);for(var l=0,c=o[0].length;l<c;){var d=l++,g=p.dist(Z.first(o)[d],Z.last(o)[d])<rt.EPSILON;if(!g)return!1}return!0},bt.rationalSurfaceClosestPoint=function(r,i){var o=bt.rationalSurfaceClosestParam(r,i);return N.rationalSurfacePoint(r,o[0],o[1])},bt.rationalSurfaceClosestParam=function(r,i){for(var o=5,l=0,c,d=1e-4,g=5e-4,f,y=r.knotsU[0],S=Z.last(r.knotsU),P=r.knotsV[0],I=Z.last(r.knotsV),E=bt.isRationalSurfaceClosed(r),M=bt.isRationalSurfaceClosed(r,!1),k,B=Rt.rationalSurfaceAdaptive(r,new Yr),C=1/0,z=0,R=B.points.length;z<R;){var U=z++,j=B.points[U],X=p.normSquared(p.sub(i,j));X<C&&(C=X,k=B.uvs[U])}for(var J=function(qt){return N.rationalSurfaceDerivatives(r,qt[0],qt[1],2)},q=function(qt,Zt,Gt){var Jt=Zt[1][0],Be=Zt[0][1],tr=Zt[2][0],Ae=Zt[0][2],xe=Zt[1][1],Re=Zt[1][1],Ge=p.dot(Jt,Gt),sr=p.dot(Be,Gt),fr=[-Ge,-sr],ir=p.dot(Jt,Jt)+p.dot(tr,Gt),ar=p.dot(Jt,Be)+p.dot(xe,Gt),or=p.dot(Jt,Be)+p.dot(Re,Gt),Sr=p.dot(Be,Be)+p.dot(Ae,Gt),Un=[[ir,ar],[or,Sr]],cn=Ot.solve(Un,fr);return p.add(cn,qt)};l<o;){c=J(k),f=p.sub(c[0][0],i);var G=p.norm(f),$=p.dot(c[1][0],f),tt=p.norm(c[1][0])*G,et=p.dot(c[0][1],f),ot=p.norm(c[0][1])*G,ut=$/tt,lt=et/ot,pt=G<d,nt=ut<g,mt=lt<g;if(pt&&nt&&mt)return k;var K=q(k,c,f);K[0]<y?E?K=[S-(K[0]-y),K[1]]:K=[y+rt.EPSILON,K[1]]:K[0]>S&&(E?K=[y+(K[0]-S),K[1]]:K=[S-rt.EPSILON,K[1]]),K[1]<P?M?K=[K[0],I-(K[1]-P)]:K=[K[0],P+rt.EPSILON]:K[1]>I&&(M?K=[K[0],P+(K[0]-I)]:K=[K[0],I-rt.EPSILON]);var _t=p.norm(p.mul(K[0]-k[0],c[1][0])),Et=p.norm(p.mul(K[1]-k[1],c[0][1]));if(_t+Et<d)return k;k=K,l++}return k},bt.rationalCurveClosestPoint=function(r,i){return N.rationalCurvePoint(r,bt.rationalCurveClosestParam(r,i))},bt.rationalCurveClosestParam=function(r,i){for(var o=1/0,l=0,c=Rt.rationalCurveRegularSample(r,r.controlPoints.length*r.degree,!0),d=0,g=c.length-1;d<g;){var f=d++,y=c[f][0],S=c[f+1][0],P=c[f].slice(1),I=c[f+1].slice(1),E=Ue.segmentClosestPoint(i,P,I,y,S),M=p.norm(p.sub(i,E.pt));M<o&&(o=M,l=E.u)}for(var k=5,B=0,C,z=1e-4,R=5e-4,U,j=r.knots[0],X=Z.last(r.knots),J=p.normSquared(p.sub(r.controlPoints[0],Z.last(r.controlPoints)))<rt.EPSILON,q=l,G=function(K){return N.rationalCurveDerivatives(r,K,2)},$=function(K,_t,Et){var qt=p.dot(_t[1],Et),Zt=p.dot(_t[2],Et),Gt=p.dot(_t[1],_t[1]),Jt=Zt+Gt;return K-qt/Jt};B<k;){C=G(q),U=p.sub(C[0],i);var tt=p.norm(U),et=p.dot(C[1],U),ot=p.norm(C[1])*tt,ut=et/ot,lt=tt<z,pt=Math.abs(ut)<R;if(lt&&pt)return q;var nt=$(q,C,U);nt<j?J?nt=X-(nt-j):nt=j:nt>X&&(J?nt=j+(nt-X):nt=X);var mt=p.norm(p.mul(nt-q,C[1]));if(mt<z)return q;q=nt,B++}return q},bt.rationalCurveParamAtArcLength=function(r,i,o,l,c){if(o==null&&(o=.001),i<rt.EPSILON)return r.knots[0];var d;l!=null?d=l:d=yt.decomposeCurveIntoBeziers(r);var g=0;d[g];var f=-rt.EPSILON,y;for(c!=null?y=c:y=[];f<i&&g<d.length;){if(g<y.length?y[g]=y[g]:y[g]=bt.rationalBezierCurveArcLength(r),f+=y[g],i<f+rt.EPSILON)return bt.rationalBezierCurveParamAtArcLength(r,i,o,y[g]);g++}return-1},bt.rationalBezierCurveParamAtArcLength=function(r,i,o,l){if(i<0)return r.knots[0];var c;if(l!=null?c=l:c=bt.rationalBezierCurveArcLength(r),i>c)return Z.last(r.knots);var d=r.knots[0],g=0,f=Z.last(r.knots),y=c,S=0,P=0,I;for(o!=null?I=o:I=rt.TOLERANCE*2;y-g>I;)S=(d+f)/2,P=bt.rationalBezierCurveArcLength(r,S),P>i?(f=S,y=P):(d=S,g=P);return(d+f)/2},bt.rationalCurveArcLength=function(r,i,o){o==null&&(o=16),i==null?i=Z.last(r.knots):i=i;for(var l=yt.decomposeCurveIntoBeziers(r),c=0,d=l[0],g=0;c<l.length&&d.knots[0]+rt.EPSILON<i;){var f=Math.min(Z.last(d.knots),i);g+=bt.rationalBezierCurveArcLength(d,f,o),d=l[++c]}return g},bt.rationalBezierCurveArcLength=function(r,i,o){o==null&&(o=16);var l;i==null?l=Z.last(r.knots):l=i;for(var c=(l-r.knots[0])/2,d=0,g=r.degree+o,f,y,S=0;S<g;){var P=S++;f=c*bt.Tvalues[g][P]+c+r.knots[0],y=N.rationalCurveDerivatives(r,f,1),d+=bt.Cvalues[g][P]*p.norm(y[1])}return c*d};var Rn=_.eval.KnotMultiplicity=function(r,i){this.knot=r,this.mult=i};x["verb.eval.KnotMultiplicity"]=Rn,Rn.__name__=["verb","eval","KnotMultiplicity"],Rn.prototype={inc:function(){this.mult++},__class__:Rn};var Je=_.eval.Check=function(){};x["verb.eval.Check"]=Je,Je.__name__=["verb","eval","Check"],Je.isValidKnotVector=function(r,i){if(r.length==0||r.length<(i+1)*2)return!1;for(var o=Z.first(r),l=0,c=i+1;l<c;){var d=l++;if(Math.abs(r[d]-o)>rt.EPSILON)return!1}o=Z.last(r);for(var g=r.length-i-1,f=r.length;g<f;){var y=g++;if(Math.abs(r[y]-o)>rt.EPSILON)return!1}return Je.isNonDecreasing(r)},Je.isNonDecreasing=function(r){for(var i=Z.first(r),o=0,l=r.length;o<l;){var c=o++;if(r[c]<i-rt.EPSILON)return!1;i=r[c]}return!0},Je.isValidNurbsCurveData=function(r){if(r.controlPoints==null)throw new Q("Control points array cannot be null!");if(r.degree==null)throw new Q("Degree cannot be null!");if(r.degree<1)throw new Q("Degree must be greater than 1!");if(r.knots==null)throw new Q("Knots cannot be null!");if(r.knots.length!=r.controlPoints.length+r.degree+1)throw new Q("controlPoints.length + degree + 1 must equal knots.length!");if(!Je.isValidKnotVector(r.knots,r.degree))throw new Q("Invalid knot vector format! Should begin with degree + 1 repeats and end with degree + 1 repeats!");return r},Je.isValidNurbsSurfaceData=function(r){if(r.controlPoints==null)throw new Q("Control points array cannot be null!");if(r.degreeU==null)throw new Q("DegreeU cannot be null!");if(r.degreeV==null)throw new Q("DegreeV cannot be null!");if(r.degreeU<1)throw new Q("DegreeU must be greater than 1!");if(r.degreeV<1)throw new Q("DegreeV must be greater than 1!");if(r.knotsU==null)throw new Q("KnotsU cannot be null!");if(r.knotsV==null)throw new Q("KnotsV cannot be null!");if(r.knotsU.length!=r.controlPoints.length+r.degreeU+1)throw new Q("controlPointsU.length + degreeU + 1 must equal knotsU.length!");if(r.knotsV.length!=r.controlPoints[0].length+r.degreeV+1)throw new Q("controlPointsV.length + degreeV + 1 must equal knotsV.length!");if(!Je.isValidKnotVector(r.knotsU,r.degreeU)||!Je.isValidKnotVector(r.knotsV,r.degreeV))throw new Q("Invalid knot vector format! Should begin with degree + 1 repeats and end with degree + 1 repeats!");return r};var me=_.eval.Divide=function(){};x["verb.eval.Divide"]=me,me.__name__=["verb","eval","Divide"],me.surfaceSplit=function(r,i,o){o==null&&(o=!1);var l,c,d;o?(d=r.controlPoints,l=r.knotsV,c=r.degreeV):(d=Ot.transpose(r.controlPoints),l=r.knotsU,c=r.degreeU);for(var g,f=[],y=0,S=c+1;y<S;)y++,f.push(i);g=f;for(var P=[],I=[],E=N.knotSpan(c,i,l),M=null,k=0;k<d.length;){var B=d[k];++k,M=yt.curveKnotRefine(new Ht(c,l,B),g),P.push(M.controlPoints.slice(0,E+1)),I.push(M.controlPoints.slice(E+1))}var C=M.knots.slice(0,E+c+2),z=M.knots.slice(E+1);return o?[new se(r.degreeU,c,r.knotsU.slice(),C,P),new se(r.degreeU,c,r.knotsU.slice(),z,I)]:(P=Ot.transpose(P),I=Ot.transpose(I),[new se(c,r.degreeV,C,r.knotsV.slice(),P),new se(c,r.degreeV,z,r.knotsV.slice(),I)])},me.curveSplit=function(r,i){var o=r.degree;r.controlPoints;for(var l=r.knots,c,d=[],g=0,f=o+1;g<f;)g++,d.push(i);c=d;var y=yt.curveKnotRefine(r,c),S=N.knotSpan(o,i,l),P=y.knots.slice(0,S+o+2),I=y.knots.slice(S+1),E=y.controlPoints.slice(0,S+1),M=y.controlPoints.slice(S+1);return[new Ht(o,P,E),new Ht(o,I,M)]},me.rationalCurveByEqualArcLength=function(r,i){var o=bt.rationalCurveArcLength(r),l=o/i;return me.rationalCurveByArcLength(r,l)},me.rationalCurveByArcLength=function(r,i){var o=yt.decomposeCurveIntoBeziers(r),l=o.map(function(E){return bt.rationalBezierCurveArcLength(E)}),c=p.sum(l),d=[new zn(r.knots[0],0)];if(i>c)return d;for(var g=i,f=0,y=g,S=0,P=0,I;f<o.length;){for(S+=l[f];y<S+rt.EPSILON;)I=bt.rationalBezierCurveParamAtArcLength(o[f],y-P,rt.TOLERANCE,l[f]),d.push(new zn(I,y)),y+=g;P+=l[f],f++}return d};var zn=_.eval.CurveLengthSample=function(r,i){this.u=r,this.len=i};x["verb.eval.CurveLengthSample"]=zn,zn.__name__=["verb","eval","CurveLengthSample"],zn.prototype={__class__:zn};var N=_.eval.Eval=function(){};x["verb.eval.Eval"]=N,N.__name__=["verb","eval","Eval"],N.rationalCurveTangent=function(r,i){var o=N.rationalCurveDerivatives(r,i,1);return o[1]},N.rationalSurfaceNormal=function(r,i,o){var l=N.rationalSurfaceDerivatives(r,i,o,1);return p.cross(l[1][0],l[0][1])},N.rationalSurfaceDerivatives=function(r,i,o,l){l==null&&(l=1);for(var c=N.surfaceDerivatives(r,i,o,l),d=N.rational2d(c),g=N.weight2d(c),f=[],y=d[0][0].length,S=0,P=l+1;S<P;){var I=S++;f.push([]);for(var E=0,M=l-I+1;E<M;){for(var k=E++,B=d[I][k],C=1,z=k+1;C<z;){var R=C++;p.subMulMutate(B,Vt.get(k,R)*g[0][R],f[I][k-R])}for(var U=1,j=I+1;U<j;){var X=U++;p.subMulMutate(B,Vt.get(I,X)*g[X][0],f[I-X][k]);for(var J=p.zeros1d(y),q=1,G=k+1;q<G;){var $=q++;p.addMulMutate(J,Vt.get(k,$)*g[X][$],f[I-X][k-$])}p.subMulMutate(B,Vt.get(I,X),J)}p.mulMutate(1/g[0][0],B),f[I].push(B)}}return f},N.rationalSurfacePoint=function(r,i,o){return N.dehomogenize(N.surfacePoint(r,i,o))},N.rationalCurveDerivatives=function(r,i,o){o==null&&(o=1);for(var l=N.curveDerivatives(r,i,o),c=N.rational1d(l),d=N.weight1d(l),g=[],f=0,y=o+1;f<y;){for(var S=f++,P=c[S],I=1,E=S+1;I<E;){var M=I++;p.subMulMutate(P,Vt.get(S,M)*d[M],g[S-M])}p.mulMutate(1/d[0],P),g.push(P)}return g},N.rationalCurvePoint=function(r,i){return N.dehomogenize(N.curvePoint(r,i))},N.surfaceDerivatives=function(r,i,o,l){var c=r.knotsU.length-r.degreeU-2,d=r.knotsV.length-r.degreeV-2;return N.surfaceDerivativesGivenNM(c,d,r,i,o,l)},N.surfaceDerivativesGivenNM=function(r,i,o,l,c,d){var g=o.degreeU,f=o.degreeV,y=o.controlPoints,S=o.knotsU,P=o.knotsV;if(!N.areValidRelations(g,y.length,S.length)||!N.areValidRelations(f,y[0].length,P.length))throw new Q("Invalid relations between control points, knot vector, and n");var I=y[0][0].length,E;d<g?E=d:E=g;var M;d<f?M=d:M=f;for(var k=p.zeros3d(d+1,d+1,I),B=N.knotSpanGivenN(r,g,l,S),C=N.knotSpanGivenN(i,f,c,P),z=N.derivativeBasisFunctionsGivenNI(B,l,g,r,S),R=N.derivativeBasisFunctionsGivenNI(C,c,f,i,P),U=p.zeros2d(f+1,I),j=0,X=0,J=E+1;X<J;){for(var q=X++,G=0,$=f+1;G<$;){var tt=G++;U[tt]=p.zeros1d(I);for(var et=0,ot=g+1;et<ot;){var ut=et++;p.addMulMutate(U[tt],z[q][ut],y[B-g+ut][C-f+tt])}}var lt=d-q;lt<M?j=lt:j=M;for(var pt=0,nt=j+1;pt<nt;){var mt=pt++;k[q][mt]=p.zeros1d(I);for(var K=0,_t=f+1;K<_t;){var Et=K++;p.addMulMutate(k[q][mt],R[mt][Et],U[Et])}}}return k},N.surfacePoint=function(r,i,o){var l=r.knotsU.length-r.degreeU-2,c=r.knotsV.length-r.degreeV-2;return N.surfacePointGivenNM(l,c,r,i,o)},N.surfacePointGivenNM=function(r,i,o,l,c){var d=o.degreeU,g=o.degreeV,f=o.controlPoints,y=o.knotsU,S=o.knotsV;if(!N.areValidRelations(d,f.length,y.length)||!N.areValidRelations(g,f[0].length,S.length))throw new Q("Invalid relations between control points, knot vector, and n");for(var P=f[0][0].length,I=N.knotSpanGivenN(r,d,l,y),E=N.knotSpanGivenN(i,g,c,S),M=N.basisFunctionsGivenKnotSpanIndex(I,l,d,y),k=N.basisFunctionsGivenKnotSpanIndex(E,c,g,S),B=I-d,C=E,z=p.zeros1d(P),R=p.zeros1d(P),U=0,j=g+1;U<j;){var X=U++;R=p.zeros1d(P),C=E-g+X;for(var J=0,q=d+1;J<q;){var G=J++;p.addMulMutate(R,M[G],f[B+G][C])}p.addMulMutate(z,k[X],R)}return z},N.curveRegularSamplePoints=function(r,i){for(var o=N.curveDerivatives(r,r.knots[0],r.degree),l=1/i,c=l*l,d=o[0],g=p.mul(l,o[1]),f=p.mul(c*.5,o[2]),y=p.mul(c*l*.5,o[3]),S=p.add(f,f),P=p.add(y,y),I=p.mul(.3333333333333333,y),E=[],M=0,k=i+1;M<k;)M++,E.push(N.dehomogenize(d)),p.addAllMutate([d,g,f,I]),p.addAllMutate([g,S,y]),p.addAllMutate([S,P]),p.addAllMutate([f,y]);return E},N.curveRegularSamplePoints2=function(r,i){for(var o=N.curveDerivatives(r,r.knots[0],r.degree),l=1/i,c=l*l,d=o[0],g=p.mul(l,o[1]),f=p.mul(c*.5,o[2]),y=p.mul(c*l*.5,o[3]),S=p.add(f,f),P=p.add(y,y),I=p.mul(.3333333333333333,y),E=[],M=0,k=i+1;M<k;)M++,E.push(N.dehomogenize(d)),p.addAllMutate([d,g,f,I]),p.addAllMutate([g,S,y]),p.addAllMutate([S,P]),p.addAllMutate([f,y]);return E},N.rationalSurfaceRegularSampleDerivatives=function(r,i,o,l){for(var c=N.surfaceRegularSampleDerivatives(r,i,o,l),d=[],g=i+1,f=o+1,y=l+1,S=0;S<g;){var P=S++,I=[];d.push(I);for(var E=0;E<f;){for(var M=E++,k=c[P][M],B=N.rational2d(k),C=N.weight2d(k),z=[],R=B[0][0].length,U=0;U<y;){var j=U++;z.push([]);for(var X=0,J=y-j;X<J;){for(var q=X++,G=B[j][q],$=1,tt=q+1;$<tt;){var et=$++;p.subMulMutate(G,Vt.get(q,et)*C[0][et],z[j][q-et])}for(var ot=1,ut=j+1;ot<ut;){var lt=ot++;p.subMulMutate(G,Vt.get(j,lt)*C[lt][0],z[j-lt][q]);for(var pt=p.zeros1d(R),nt=1,mt=q+1;nt<mt;){var K=nt++;p.addMulMutate(pt,Vt.get(q,K)*C[lt][K],z[j-lt][q-K])}p.subMulMutate(G,Vt.get(j,lt),pt)}p.mulMutate(1/C[0][0],G),z[j].push(G)}}I.push(z)}}return d},N.surfaceRegularSampleDerivatives=function(r,i,o,l){var c=r.degreeU,d=r.degreeV,g=r.controlPoints,f=r.knotsU,y=r.knotsV,S=g[0][0].length;(Z.last(f)-f[0])/i,(Z.last(y)-y[0])/o;for(var P=N.regularlySpacedDerivativeBasisFunctions(c,f,i),I=P.item0,E=P.item1,M=N.regularlySpacedDerivativeBasisFunctions(d,y,o),k=M.item0,B=M.item1,C=[],z=i+1,R=o+1,U=0;U<z;){var j=U++,X=[];C.push(X);for(var J=0;J<R;){var q=J++;X.push(N.surfaceDerivativesGivenBasesKnotSpans(c,d,g,I[j],k[q],E[j],B[q],S,l))}}return C},N.rationalSurfaceRegularSamplePoints=function(r,i,o){return N.dehomogenize2d(N.surfaceRegularSamplePoints(r,i,o))},N.surfaceRegularSamplePoints=function(r,i,o){var l=r.degreeU,c=r.degreeV,d=r.controlPoints,g=r.knotsU,f=r.knotsV,y=d[0][0].length;(Z.last(g)-g[0])/i,(Z.last(f)-f[0])/o;for(var S=N.regularlySpacedBasisFunctions(l,g,i),P=S.item0,I=S.item1,E=N.regularlySpacedBasisFunctions(c,f,o),M=E.item0,k=E.item1,B=[],C=i+1,z=o+1,R=0;R<C;){var U=R++,j=[];B.push(j);for(var X=0;X<z;){var J=X++;j.push(N.surfacePointGivenBasesKnotSpans(l,c,d,P[U],M[J],I[U],k[J],y))}}return B},N.regularlySpacedBasisFunctions=function(r,i,o){for(var l=i.length-r-2,c=(Z.last(i)-i[0])/o,d=[],g=[],f=i[0],y=N.knotSpanGivenN(l,r,f,i),S=o+1,P=0;P<S;){for(P++;f>=i[y+1];)y++;g.push(y),d.push(N.basisFunctionsGivenKnotSpanIndex(y,f,r,i)),f+=c}return new ie(g,d)},N.regularlySpacedDerivativeBasisFunctions=function(r,i,o){for(var l=i.length-r-2,c=(Z.last(i)-i[0])/o,d=[],g=[],f=i[0],y=N.knotSpanGivenN(l,r,f,i),S=o+1,P=0;P<S;){for(P++;f>=i[y+1];)y++;g.push(y),d.push(N.derivativeBasisFunctionsGivenNI(y,f,r,l,i)),f+=c}return new ie(g,d)},N.surfacePointGivenBasesKnotSpans=function(r,i,o,l,c,d,g,f){for(var y=p.zeros1d(f),S,P=l-r,I=c-i,E=0,M=i+1;E<M;){var k=E++;S=p.zeros1d(f);for(var B=0,C=r+1;B<C;){var z=B++;p.addMulMutate(S,d[z],o[P+z][I])}I++,p.addMulMutate(y,g[k],S)}return y},N.surfaceDerivativesGivenBasesKnotSpans=function(r,i,o,l,c,d,g,f,y){var S=o[0][0].length,P;y<r?P=y:P=r;var I;y<i?I=y:I=i;for(var E=p.zeros3d(P+1,I+1,S),M=p.zeros2d(i+1,S),k=0,B=0,C=P+1;B<C;){for(var z=B++,R=0,U=i+1;R<U;){var j=R++;M[j]=p.zeros1d(S);for(var X=0,J=r+1;X<J;){var q=X++;p.addMulMutate(M[j],d[z][q],o[l-r+q][c-i+j])}}var G=y-z;G<I?k=G:k=I;for(var $=0,tt=k+1;$<tt;){var et=$++;E[z][et]=p.zeros1d(S);for(var ot=0,ut=i+1;ot<ut;){var lt=ot++;p.addMulMutate(E[z][et],g[et][lt],M[lt])}}}return E},N.curveDerivatives=function(r,i,o){var l=r.knots.length-r.degree-2;return N.curveDerivativesGivenN(l,r,i,o)},N.curveDerivativesGivenN=function(r,i,o,l){var c=i.degree,d=i.controlPoints,g=i.knots;if(!N.areValidRelations(c,d.length,g.length))throw new Q("Invalid relations between control points, knot vector, and n");var f=d[0].length,y;l<c?y=l:y=c;for(var S=p.zeros2d(l+1,f),P=N.knotSpanGivenN(r,c,o,g),I=N.derivativeBasisFunctionsGivenNI(P,o,c,y,g),E=0,M=y+1;E<M;)for(var k=E++,B=0,C=c+1;B<C;){var z=B++;p.addMulMutate(S[k],I[k][z],d[P-c+z])}return S},N.curvePoint=function(r,i){var o=r.knots.length-r.degree-2;return N.curvePointGivenN(o,r,i)},N.areValidRelations=function(r,i,o){return i+r+1-o==0},N.curvePointGivenN=function(r,i,o){var l=i.degree,c=i.controlPoints,d=i.knots;if(!N.areValidRelations(l,c.length,d.length))throw new Q("Invalid relations between control points, knot Array, and n");for(var g=N.knotSpanGivenN(r,l,o,d),f=N.basisFunctionsGivenKnotSpanIndex(g,o,l,d),y=p.zeros1d(c[0].length),S=0,P=l+1;S<P;){var I=S++;p.addMulMutate(y,f[I],c[g-l+I])}return y},N.volumePoint=function(r,i,o,l){var c=r.knotsU.length-r.degreeU-2,d=r.knotsV.length-r.degreeV-2,g=r.knotsW.length-r.degreeW-2;return N.volumePointGivenNML(r,c,d,g,i,o,l)},N.volumePointGivenNML=function(r,i,o,l,c,d,g){if(!N.areValidRelations(r.degreeU,r.controlPoints.length,r.knotsU.length)||!N.areValidRelations(r.degreeV,r.controlPoints[0].length,r.knotsV.length)||!N.areValidRelations(r.degreeW,r.controlPoints[0][0].length,r.knotsW.length))throw new Q("Invalid relations between control points and knot vector");for(var f=r.controlPoints,y=r.degreeU,S=r.degreeV,P=r.degreeW,I=r.knotsU,E=r.knotsV,M=r.knotsW,k=f[0][0][0].length,B=N.knotSpanGivenN(i,y,c,I),C=N.knotSpanGivenN(o,S,d,E),z=N.knotSpanGivenN(l,P,g,M),R=N.basisFunctionsGivenKnotSpanIndex(B,c,y,I),U=N.basisFunctionsGivenKnotSpanIndex(C,d,S,E),j=N.basisFunctionsGivenKnotSpanIndex(z,g,P,M),X=B-y,J=p.zeros1d(k),q=p.zeros1d(k),G=p.zeros1d(k),$=0,tt=P+1;$<tt;){var et=$++;G=p.zeros1d(k);for(var ot=z-P+et,ut=0,lt=S+1;ut<lt;){var pt=ut++;q=p.zeros1d(k);for(var nt=C-S+pt,mt=0,K=y+1;mt<K;){var _t=mt++;p.addMulMutate(q,R[_t],f[X+_t][nt][ot])}p.addMulMutate(G,U[pt],q)}p.addMulMutate(J,j[et],G)}return J},N.derivativeBasisFunctions=function(r,i,o){var l=N.knotSpan(i,r,o),c=o.length-1,d=c-i-1;return N.derivativeBasisFunctionsGivenNI(l,r,i,d,o)},N.derivativeBasisFunctionsGivenNI=function(r,i,o,l,c){var d=p.zeros2d(o+1,o+1),g=p.zeros1d(o+1),f=p.zeros1d(o+1),y=0,S=0;d[0][0]=1;for(var P=1,I=o+1;P<I;){var E=P++;g[E]=i-c[r+1-E],f[E]=c[r+E]-i,y=0;for(var M=0;M<E;){var k=M++;d[E][k]=f[k+1]+g[E-k],S=d[k][E-1]/d[E][k],d[k][E]=y+f[k+1]*S,y=g[E-k]*S}d[E][E]=y}for(var B=p.zeros2d(l+1,o+1),C=p.zeros2d(2,o+1),z=0,R=1,U=0,j=0,X=0,J=0,q=0,G=0,$=o+1;G<$;){var tt=G++;B[0][tt]=d[tt][o]}for(var et=0,ot=o+1;et<ot;){var ut=et++;z=0,R=1,C[0][0]=1;for(var lt=1,pt=l+1;lt<pt;){var nt=lt++;U=0,j=ut-nt,X=o-nt,ut>=nt&&(C[R][0]=C[z][0]/d[X+1][j],U=C[R][0]*d[j][X]),j>=-1?J=1:J=-j,ut-1<=X?q=nt-1:q=o-ut;for(var mt=J,K=q+1;mt<K;){var _t=mt++;C[R][_t]=(C[z][_t]-C[z][_t-1])/d[X+1][j+_t],U+=C[R][_t]*d[j+_t][X]}ut<=X&&(C[R][nt]=-C[z][nt-1]/d[X+1][ut],U+=C[R][nt]*d[ut][X]),B[nt][ut]=U;var Et=z;z=R,R=Et}}for(var qt=o,Zt=1,Gt=l+1;Zt<Gt;){for(var Jt=Zt++,Be=0,tr=o+1;Be<tr;){var Ae=Be++;B[Jt][Ae]*=qt}qt*=o-Jt}return B},N.basisFunctions=function(r,i,o){var l=N.knotSpan(i,r,o);return N.basisFunctionsGivenKnotSpanIndex(l,r,i,o)},N.basisFunctionsGivenKnotSpanIndex=function(r,i,o,l){var c=p.zeros1d(o+1),d=p.zeros1d(o+1),g=p.zeros1d(o+1),f=0,y=0;c[0]=1;for(var S=1,P=o+1;S<P;){var I=S++;d[I]=i-l[r+1-I],g[I]=l[r+I]-i,f=0;for(var E=0;E<I;){var M=E++;y=c[M]/(g[M+1]+d[I-M]),c[M]=f+g[M+1]*y,f=d[I-M]*y}c[I]=f}return c},N.knotSpan=function(r,i,o){return N.knotSpanGivenN(o.length-r-2,r,i,o)},N.knotSpanGivenN=function(r,i,o,l){if(o>l[r+1]-rt.EPSILON)return r;if(o<l[i]+rt.EPSILON)return i;for(var c=i,d=r+1,g=Math.floor((c+d)/2);o<l[g]||o>=l[g+1];)o<l[g]?d=g:c=g,g=Math.floor((c+d)/2);return g},N.dehomogenize=function(r){for(var i=r.length,o=[],l=r[i-1],c=r.length-1,d=0;d<c;){var g=d++;o.push(r[g]/l)}return o},N.rational1d=function(r){var i=r[0].length-1;return r.map(function(o){return o.slice(0,i)})},N.rational2d=function(r){return r.map(N.rational1d)},N.weight1d=function(r){var i=r[0].length-1;return r.map(function(o){return o[i]})},N.weight2d=function(r){return r.map(N.weight1d)},N.dehomogenize1d=function(r){return r.map(N.dehomogenize)},N.dehomogenize2d=function(r){return r.map(N.dehomogenize1d)},N.homogenize1d=function(r,i){var o=r.length,l=r[0].length,c=[],d=0,g=[],f;i!=null?f=i:f=p.rep(r.length,1);for(var y=0;y<o;){var S=y++,P=[];g=r[S],d=f[S];for(var I=0;I<l;){var E=I++;P.push(g[E]*d)}P.push(d),c.push(P)}return c},N.homogenize2d=function(r,i){var o=r.length,l=[],c;if(i!=null)c=i;else{for(var d=[],g=0;g<o;)g++,d.push(p.rep(r[0].length,1));c=d}for(var f=0;f<o;){var y=f++;l.push(N.homogenize1d(r[y],c[y]))}return l};var ht=_.eval.Intersect=function(){};x["verb.eval.Intersect"]=ht,ht.__name__=["verb","eval","Intersect"],ht.surfaces=function(r,i,o){var l=Rt.rationalSurfaceAdaptive(r),c=Rt.rationalSurfaceAdaptive(i),d=ht.meshes(l,c),g=d.map(function(f){return f.map(function(y){return ht.surfacesAtPointWithEstimate(r,i,y.uv0,y.uv1,o)})});return g.map(function(f){return gt.rationalInterpCurve(f.map(function(y){return y.point}),3)})},ht.surfacesAtPointWithEstimate=function(r,i,o,l,c){var d,g,f,y,S,P,I,E,M,k,B,C,z,R=5,U=0;do{if(d=N.rationalSurfaceDerivatives(r,o[0],o[1],1),g=d[0][0],y=d[1][0],S=d[0][1],f=p.normalized(p.cross(y,S)),P=p.dot(f,g),I=N.rationalSurfaceDerivatives(i,l[0],l[1],1),E=I[0][0],k=I[1][0],B=I[0][1],M=p.normalized(p.cross(k,B)),C=p.dot(M,E),z=p.distSquared(g,E),z<c*c)break;var j=p.normalized(p.cross(f,M)),X=p.dot(j,g),J=ht.threePlanes(f,P,M,C,j,X);if(J==null)throw new Q("panic!");var q=p.sub(J,g),G=p.sub(J,E),$=p.cross(y,f),tt=p.cross(S,f),et=p.cross(k,M),ot=p.cross(B,M),ut=p.dot(tt,q)/p.dot(tt,y),lt=p.dot($,q)/p.dot($,S),pt=p.dot(ot,G)/p.dot(ot,k),nt=p.dot(et,G)/p.dot(et,B);o=p.add([ut,lt],o),l=p.add([pt,nt],l),U++}while(U<R);return new ls(o,l,g,z)},ht.meshes=function(r,i,o,l){o==null&&(o=new mr(r)),l==null&&(l=new mr(i));var c=ht.boundingBoxTrees(o,l,0),d=Z.unique(c.map(function(g){return ht.triangles(r,g.item0,i,g.item1)}).filter(function(g){return g!=null}).filter(function(g){return p.distSquared(g.min.point,g.max.point)>rt.EPSILON}),function(g,f){var y=p.sub(g.min.uv0,f.min.uv0),S=p.dot(y,y),P=p.sub(g.max.uv0,f.max.uv0),I=p.dot(P,P),E=p.sub(g.min.uv0,f.max.uv0),M=p.dot(E,E),k=p.sub(g.max.uv0,f.min.uv0),B=p.dot(k,k);return S<rt.EPSILON&&I<rt.EPSILON||M<rt.EPSILON&&B<rt.EPSILON});return ht.makeMeshIntersectionPolylines(d)},ht.meshSlices=function(r,i,o,l){for(var c=new Xr(r),d=c.boundingBox(),g=d.min[0],f=d.min[1],y=d.max[0],S=d.max[1],P=p.span(i,o,l),I=[],E=0;E<P.length;){var M=P[E];++E;var k=[[g,f,M],[y,f,M],[y,S,M],[g,S,M]],B=[[0,0],[1,0],[1,1],[0,1]],C=[[0,1,2],[0,2,3]],z=new er(C,k,null,B);I.push(ht.meshes(r,z,c))}return I},ht.makeMeshIntersectionPolylines=function(r){if(r.length==0)return[];for(var i=0;i<r.length;){var o=r[i];++i,o.max.opp=o.min,o.min.opp=o.max}for(var l=ht.kdTreeFromSegments(r),c=[],d=0;d<r.length;){var g=r[d];++d,c.push(g.min),c.push(g.max)}for(var f=0;f<c.length;){var y=c[f];if(++f,y.adj==null){var S=ht.lookupAdjacentSegment(y,l,r.length);S!=null&&S.adj==null&&(y.adj=S,S.adj=y)}}var P=c.filter(function(R){return R.adj==null});P.length==0&&(P=c);for(var I=[],E=0,M=!1;P.length!=0;){var k=P.pop();if(!k.visited){for(var B=[],C=k;C!=null&&!(C.visited||(C.visited=!0,C.opp.visited=!0,B.push(C),E+=2,C=C.opp.adj,C==k)););B.length>0&&(B.push(B[B.length-1].opp),I.push(B))}if(P.length==0&&c.length>0&&(M||E<c.length)){M=!0;var z=c.pop();P.push(z)}}return I},ht.kdTreeFromSegments=function(r){for(var i=[],o=0;o<r.length;){var l=r[o];++o,i.push(new Cn(l.min.point,l.min)),i.push(new Cn(l.max.point,l.max))}return new us(i,p.distSquared)},ht.lookupAdjacentSegment=function(r,i,o){var l=i.nearest(r.point,o,rt.EPSILON).filter(function(c){return r!=c.item0.obj}).map(function(c){return c.item0.obj});return l.length==1?l[0]:null},ht.curveAndSurface=function(r,i,o,l,c){o==null&&(o=.001),l!=null?l=l:l=new pr(r),c!=null?c=c:c=new qr(i);var d=ht.boundingBoxTrees(l,c,o);return Z.unique(d.map(function(g){var f=g.item0,y=g.item1,S=Z.first(f.knots),P=Z.last(f.knots),I=(S+P)/2,E=Z.first(y.knotsU),M=Z.last(y.knotsU),k=Z.first(y.knotsV),B=Z.last(y.knotsV),C=[(E+M)/2,(k+B)/2];return ht.curveAndSurfaceWithEstimate(f,y,[I].concat(C),o)}).filter(function(g){return p.distSquared(g.curvePoint,g.surfacePoint)<o*o}),function(g,f){return Math.abs(g.u-f.u)<.5*o})},ht.curveAndSurfaceWithEstimate=function(r,i,o,l){l==null&&(l=.001);var c=function(y){var S=N.rationalCurvePoint(r,y[0]),P=N.rationalSurfacePoint(i,y[1],y[2]),I=p.sub(S,P);return p.dot(I,I)},d=function(y){var S=N.rationalCurveDerivatives(r,y[0],1),P=N.rationalSurfaceDerivatives(i,y[1],y[2],1),I=p.sub(P[0][0],S[0]),E=p.mul(-1,S[1]),M=P[1][0],k=P[0][1];return[2*p.dot(E,I),2*p.dot(M,I),2*p.dot(k,I)]},g=rr.uncmin(c,o,l*l,d),f=g.solution;return new as(f[0],[f[1],f[2]],N.rationalCurvePoint(r,f[0]),N.rationalSurfacePoint(i,f[1],f[2]))},ht.polylineAndMesh=function(r,i,o){for(var l=ht.boundingBoxTrees(new gr(r),new mr(i),o),c=[],d=0;d<l.length;){var g=l[d];++d;var f=g.item0,y=g.item1,S=ht.segmentWithTriangle(r.points[f],r.points[f+1],i.points,i.faces[y]);if(S!=null){var P=S.point,I=p.lerp(S.p,[r.params[f]],[r.params[f+1]])[0],E=ae.triangleUVFromPoint(i,y,P);c.push(new os(P,I,E,f,y))}}return c},ht.boundingBoxTrees=function(r,i,o){o==null&&(o=1e-9);var l=[],c=[];l.push(r),c.push(i);for(var d=[];l.length>0;){var g=l.pop(),f=c.pop();if(!(g.empty()||f.empty())&&g.boundingBox().intersects(f.boundingBox(),o)){var y=g.indivisible(o),S=f.indivisible(o);if(y&&S){d.push(new ie(g.yield(),f.yield()));continue}else if(y&&!S){var P=f.split();l.push(g),c.push(P.item1),l.push(g),c.push(P.item0);continue}else if(!y&&S){var I=g.split();l.push(I.item1),c.push(f),l.push(I.item0),c.push(f);continue}var E=g.split(),M=f.split();l.push(E.item1),c.push(M.item1),l.push(E.item1),c.push(M.item0),l.push(E.item0),c.push(M.item1),l.push(E.item0),c.push(M.item0)}}return d},ht.curves=function(r,i,o){var l=ht.boundingBoxTrees(new pr(r),new pr(i),0);return Z.unique(l.map(function(c){return ht.curvesWithEstimate(r,i,Z.first(c.item0.knots),Z.first(c.item1.knots),o)}).filter(function(c){return p.distSquared(c.point0,c.point1)<o}),function(c,d){return Math.abs(c.u0-d.u0)<o*5})},ht.curvesWithEstimate=function(r,i,o,l,c){var d=function(E){var M=N.rationalCurvePoint(r,E[0]),k=N.rationalCurvePoint(i,E[1]),B=p.sub(M,k);return p.dot(B,B)},g=function(E){var M=N.rationalCurveDerivatives(r,E[0],1),k=N.rationalCurveDerivatives(i,E[1],1),B=p.sub(M[0],k[0]),C=M[1],z=p.mul(-1,k[1]);return[2*p.dot(C,B),2*p.dot(z,B)]},f=rr.uncmin(d,[o,l],c*c,g),y=f.solution[0],S=f.solution[1],P=N.rationalCurvePoint(r,y),I=N.rationalCurvePoint(i,S);return new hn(P,I,y,S)},ht.triangles=function(r,i,o,l){var c=r.faces[i],d=o.faces[l],g=ae.getTriangleNorm(r.points,c),f=ae.getTriangleNorm(o.points,d),y=r.points[c[0]],S=o.points[d[0]],P=ht.planes(y,g,S,f);if(P==null)return null;var I=ht.clipRayInCoplanarTriangle(P,r,i);if(I==null)return null;var E=ht.clipRayInCoplanarTriangle(P,o,l);if(E==null)return null;var M=ht.mergeTriangleClipIntervals(I,E,r,i,o,l);return M==null?null:new Oe(new Hr(M.min.uv0,M.min.uv1,M.min.point,i,l),new Hr(M.max.uv0,M.max.uv1,M.max.point,i,l))},ht.clipRayInCoplanarTriangle=function(r,i,o){for(var l=i.faces[o],c=[i.points[l[0]],i.points[l[1]],i.points[l[2]]],d=[i.uvs[l[0]],i.uvs[l[1]],i.uvs[l[2]]],g=[p.sub(d[1],d[0]),p.sub(d[2],d[1]),p.sub(d[0],d[2])],f=[p.sub(c[1],c[0]),p.sub(c[2],c[1]),p.sub(c[0],c[2])],y=f.map(p.normalized),S=f.map(p.norm),P=null,I=null,E=0;E<3;){var M=E++,k=c[M],B=y[M],C=ht.rays(k,B,r.origin,r.dir);if(C!=null){var z=C.u0,R=C.u1;z<-rt.EPSILON||z>S[M]+rt.EPSILON||((P==null||R<P.u)&&(P=new Ln(R,p.onRay(r.origin,r.dir,R),p.onRay(d[M],g[M],z/S[M]))),(I==null||R>I.u)&&(I=new Ln(R,p.onRay(r.origin,r.dir,R),p.onRay(d[M],g[M],z/S[M]))))}}return I==null||P==null?null:new Oe(P,I)},ht.mergeTriangleClipIntervals=function(r,i,o,l,c,d){if(i.min.u>r.max.u+rt.EPSILON||r.min.u>i.max.u+rt.EPSILON)return null;var g;r.min.u>i.min.u?g=new ie(r.min,0):g=new ie(i.min,1);var f;r.max.u<i.max.u?f=new ie(r.max,0):f=new ie(i.max,1);var y=new Oe(new Hr(null,null,g.item0.point,l,d),new Hr(null,null,f.item0.point,l,d));return g.item1==0?(y.min.uv0=g.item0.uv,y.min.uv1=ae.triangleUVFromPoint(c,d,g.item0.point)):(y.min.uv0=ae.triangleUVFromPoint(o,l,g.item0.point),y.min.uv1=g.item0.uv),f.item1==0?(y.max.uv0=f.item0.uv,y.max.uv1=ae.triangleUVFromPoint(c,d,f.item0.point)):(y.max.uv0=ae.triangleUVFromPoint(o,l,f.item0.point),y.max.uv1=f.item0.uv),y},ht.planes=function(r,i,o,l){var c=p.cross(i,l);if(p.dot(c,c)<rt.EPSILON)return null;var d=0,g=Math.abs(c[0]),f=Math.abs(c[1]),y=Math.abs(c[2]);f>g&&(d=1,g=f),y>g&&(d=2,g=y);var S,P,I,E;d==0?(S=i[1],P=i[2],I=l[1],E=l[2]):d==1?(S=i[0],P=i[2],I=l[0],E=l[2]):(S=i[0],P=i[1],I=l[0],E=l[1]);var M=-p.dot(r,i),k=-p.dot(o,l),B=S*E-P*I,C=(P*k-M*E)/B,z=(M*I-S*k)/B,R;return d==0?R=[0,C,z]:d==1?R=[C,0,z]:R=[C,z,0],new Nn(R,p.normalized(c))},ht.threePlanes=function(r,i,o,l,c,d){var g=p.cross(o,c),f=p.dot(r,g);if(Math.abs(f)<rt.EPSILON)return null;var y=p.sub(p.mul(d,o),p.mul(l,c)),S=p.add(p.mul(i,g),p.cross(r,y));return p.mul(1/f,S)},ht.polylines=function(r,i,o){for(var l=ht.boundingBoxTrees(new gr(r),new gr(i),o),c=[],d=0;d<l.length;){var g=l[d];++d;var f=g.item0,y=g.item1,S=ht.segments(r.points[f],r.points[f+1],i.points[y],i.points[y+1],o);S!=null&&(S.u0=p.lerp(S.u0,[r.params[f]],[r.params[f+1]])[0],S.u1=p.lerp(S.u1,[i.params[y]],[i.params[y+1]])[0],c.push(S))}return c},ht.segments=function(r,i,o,l,c){var d=p.sub(i,r),g=Math.sqrt(p.dot(d,d)),f=p.mul(1/g,d),y=p.sub(l,o),S=Math.sqrt(p.dot(y,y)),P=p.mul(1/S,y),I=ht.rays(r,f,o,P);if(I!=null){var E=Math.min(Math.max(0,I.u0/g),1),M=Math.min(Math.max(0,I.u1/S),1),k=p.onRay(r,d,E),B=p.onRay(o,y,M),C=p.distSquared(k,B);if(C<c*c)return new hn(k,B,E,M)}return null},ht.rays=function(r,i,o,l){var c=p.dot(i,l),d=p.dot(i,o),g=p.dot(i,r),f=p.dot(l,o),y=p.dot(l,r),S=p.dot(i,i),P=p.dot(l,l),I=S*P-c*c;if(Math.abs(I)<rt.EPSILON)return null;var E=c*(d-g)-S*(f-y),M=E/I,k=(d-g+M*c)/S,B=p.onRay(r,i,k),C=p.onRay(o,l,M);return new hn(B,C,k,M)},ht.segmentWithTriangle=function(r,i,o,l){var c=o[l[0]],d=o[l[1]],g=o[l[2]],f=p.sub(d,c),y=p.sub(g,c),S=p.cross(f,y),P=p.sub(i,r),I=p.sub(r,c),E=-p.dot(S,I),M=p.dot(S,P);if(Math.abs(M)<rt.EPSILON)return null;var k=E/M;if(k<0||k>1)return null;var B=p.add(r,p.mul(k,P)),C=p.dot(f,y),z=p.dot(f,f),R=p.dot(y,y),U=p.sub(B,c),j=p.dot(U,f),X=p.dot(U,y),J=C*C-z*R;if(Math.abs(J)<rt.EPSILON)return null;var q=(C*X-R*j)/J,G=(C*j-z*X)/J;return q>1+rt.EPSILON||G>1+rt.EPSILON||G<-rt.EPSILON||q<-rt.EPSILON||q+G>1+rt.EPSILON?null:new hs(B,q,G,k)},ht.segmentAndPlane=function(r,i,o,l){var c=p.dot(l,p.sub(i,r));if(Math.abs(c)<rt.EPSILON)return null;var d=p.dot(l,p.sub(o,r)),g=d/c;return g>1+rt.EPSILON||g<-rt.EPSILON?null:{p:g}};var gt=_.eval.Make=function(){};x["verb.eval.Make"]=gt,gt.__name__=["verb","eval","Make"],gt.rationalTranslationalSurface=function(r,i){for(var o=N.rationalCurvePoint(i,Z.first(i.knots)),l=Z.first(i.knots),c=Z.last(i.knots),d=2*i.controlPoints.length,g=(c-l)/(d-1),f=[],y=0;y<d;){var S=y++,P=p.sub(N.rationalCurvePoint(i,l+S*g),o),I=yt.rationalCurveTransform(r,[[1,0,0,P[0]],[0,1,0,P[1]],[0,0,1,P[2]],[0,0,0,1]]);f.push(I)}return gt.loftedSurface(f)},gt.surfaceBoundaryCurves=function(r){var i=gt.surfaceIsocurve(r,Z.first(r.knotsU),!1),o=gt.surfaceIsocurve(r,Z.last(r.knotsU),!1),l=gt.surfaceIsocurve(r,Z.first(r.knotsV),!0),c=gt.surfaceIsocurve(r,Z.last(r.knotsV),!0);return[i,o,l,c]},gt.surfaceIsocurve=function(r,i,o){o==null&&(o=!1);var l;o?l=r.knotsV:l=r.knotsU;var c;o?c=r.degreeV:c=r.degreeU;for(var d=bt.knotMultiplicities(l),g=-1,f=0,y=d.length;f<y;){var S=f++;if(Math.abs(i-d[S].knot)<rt.EPSILON){g=S;break}}var P=c+1;g>=0&&(P=P-d[g].mult);var I;P>0?I=yt.surfaceKnotRefine(r,p.rep(P,i),o):I=r;var E=N.knotSpan(c,i,l);return Math.abs(i-Z.first(l))<rt.EPSILON?E=0:Math.abs(i-Z.last(l))<rt.EPSILON&&(E=(o?I.controlPoints[0].length:I.controlPoints.length)-1),o?new Ht(I.degreeU,I.knotsU,function(M){for(var k,B=[],C=0,z=I.controlPoints;C<z.length;){var R=z[C];++C,B.push(R[E])}return k=B,k}()):new Ht(I.degreeV,I.knotsV,I.controlPoints[E])},gt.loftedSurface=function(r,i){r=yt.unifyCurveKnotVectors(r);var o=r[0].degree;i==null&&(i=3),i>r.length-1&&(i=r.length-1);for(var l=r[0].knots,c=[],d=[],g=0,f=r[0].controlPoints.length;g<f;){var y=[g++],S=r.map(function(I){return function(E){return E.controlPoints[I[0]]}}(y)),P=gt.rationalInterpCurve(S,i,!0);d.push(P.controlPoints),c=P.knots}return new se(o,i,l,c,d)},gt.clonedCurve=function(r){return new Ht(r.degree,r.knots.slice(),r.controlPoints.map(function(i){return i.slice()}))},gt.rationalBezierCurve=function(r,i){for(var o=r.length-1,l=[],c=0,d=o+1;c<d;)c++,l.push(0);for(var g=0,f=o+1;g<f;)g++,l.push(1);return i==null&&(i=p.rep(r.length,1)),new Ht(o,l,N.homogenize1d(r,i))},gt.fourPointSurface=function(r,i,o,l,c){c==null&&(c=3);for(var d=c,g=[],f=0,y=c+1;f<y;){for(var S=f++,P=[],I=0,E=c+1;I<E;){var M=I++,k=1-S/d,B=p.lerp(k,r,i),C=p.lerp(k,l,o),z=p.lerp(1-M/d,B,C);z.push(1),P.push(z)}g.push(P)}var R=p.rep(c+1,0),U=p.rep(c+1,1);return new se(c,c,R.concat(U),R.concat(U),g)},gt.ellipseArc=function(r,i,o,l,c){var d=p.norm(i),g=p.norm(o);i=p.normalized(i),o=p.normalized(o),c<l&&(c=2*Math.PI+l);var f=c-l,y=0;f<=Math.PI/2?y=1:f<=Math.PI?y=2:f<=3*Math.PI/2?y=3:y=4;var S=f/y,P=Math.cos(S/2),I=p.add(r,p.add(p.mul(d*Math.cos(l),i),p.mul(g*Math.sin(l),o))),E=p.sub(p.mul(Math.cos(l),o),p.mul(Math.sin(l),i)),M=[],k=p.zeros1d(2*y+3),B=0,C=l,z=p.zeros1d(y*2);M[0]=I,z[0]=1;for(var R=1,U=y+1;R<U;){var j=R++;C+=S;var X=p.add(r,p.add(p.mul(d*Math.cos(C),i),p.mul(g*Math.sin(C),o)));z[B+2]=1,M[B+2]=X;var J=p.sub(p.mul(Math.cos(C),o),p.mul(Math.sin(C),i)),q=ht.rays(I,p.mul(1/p.norm(E),E),X,p.mul(1/p.norm(J),J)),G=p.add(I,p.mul(q.u0,E));z[B+1]=P,M[B+1]=G,B+=2,j<y&&(I=X,E=J)}for(var $=2*y+1,tt=0;tt<3;){var et=tt++;k[et]=0,k[et+$]=1}switch(y){case 2:k[3]=k[4]=.5;break;case 3:k[3]=k[4]=.3333333333333333,k[5]=k[6]=.6666666666666666;break;case 4:k[3]=k[4]=.25,k[5]=k[6]=.5,k[7]=k[8]=.75;break}return new Ht(2,k,N.homogenize1d(M,z))},gt.arc=function(r,i,o,l,c,d){return gt.ellipseArc(r,p.mul(l,p.normalized(i)),p.mul(l,p.normalized(o)),c,d)},gt.polyline=function(r){for(var i=[0,0],o=0,l=0,c=r.length-1;l<c;){var d=l++;o+=p.dist(r[d],r[d+1]),i.push(o)}i.push(o),i=p.mul(1/o,i);for(var g,f=[],y=0,S=r.length;y<S;)y++,f.push(1);return g=f,new Ht(1,i,N.homogenize1d(r.slice(0),g))},gt.extrudedSurface=function(r,i,o){for(var l=[[],[],[]],c=[[],[],[]],d=N.dehomogenize1d(o.controlPoints),g=N.weight1d(o.controlPoints),f=p.mul(i,r),y=p.mul(.5*i,r),S=0,P=d.length;S<P;){var I=S++;l[2][I]=d[I],l[1][I]=p.add(y,d[I]),l[0][I]=p.add(f,d[I]),c[0][I]=g[I],c[1][I]=g[I],c[2][I]=g[I]}return new se(2,o.degree,[0,0,0,1,1,1],o.knots,N.homogenize2d(l,c))},gt.cylindricalSurface=function(r,i,o,l,c){var d=p.cross(r,i),g=gt.arc(o,i,d,c,0,2*Math.PI);return gt.extrudedSurface(r,l,g)},gt.revolvedSurface=function(r,i,o,l){var c=N.dehomogenize1d(r.controlPoints),d=N.weight1d(r.controlPoints),g,f;l<=Math.PI/2?(g=1,f=p.zeros1d(6+2*(g-1))):l<=Math.PI?(g=2,f=p.zeros1d(6+2*(g-1)),f[3]=f[4]=.5):l<=3*Math.PI/2?(g=3,f=p.zeros1d(6+2*(g-1)),f[3]=f[4]=.3333333333333333,f[5]=f[6]=.6666666666666666):(g=4,f=p.zeros1d(6+2*(g-1)),f[3]=f[4]=.25,f[5]=f[6]=.5,f[7]=f[8]=.75);for(var y=l/g,S=3+2*(g-1),P=0;P<3;){var I=P++;f[I]=0,f[S+I]=1}for(var E=Math.cos(y/2),M=0,k=p.zeros1d(g+1),B=p.zeros1d(g+1),C=p.zeros3d(2*g+1,c.length,3),z=p.zeros2d(2*g+1,c.length),R=1,U=g+1;R<U;){var j=R++;M+=y,B[j]=Math.cos(M),k[j]=Math.sin(M)}for(var X=0,J=c.length;X<J;){var q=X++,G=Ue.rayClosestPoint(c[q],i,o),$=p.sub(c[q],G),tt=p.norm($),et=p.cross(o,$);tt>rt.EPSILON&&($=p.mul(1/tt,$),et=p.mul(1/tt,et)),C[0][q]=c[q];var ot=c[q];z[0][q]=d[q];for(var ut=et,lt=0,pt=1,nt=g+1;pt<nt;){var mt=pt++,K;tt==0?K=G:K=p.add(G,p.add(p.mul(tt*B[mt],$),p.mul(tt*k[mt],et))),C[lt+2][q]=K,z[lt+2][q]=d[q];var _t=p.sub(p.mul(B[mt],et),p.mul(k[mt],$));if(tt==0)C[lt+1][q]=G;else{var Et=ht.rays(ot,p.mul(1/p.norm(ut),ut),K,p.mul(1/p.norm(_t),_t)),qt=p.add(ot,p.mul(Et.u0,ut));C[lt+1][q]=qt}z[lt+1][q]=E*d[q],lt+=2,mt<g&&(ot=K,ut=_t)}}return new se(2,r.degree,f,r.knots,N.homogenize2d(C,z))},gt.sphericalSurface=function(r,i,o,l){var c=gt.arc(r,p.mul(-1,i),o,l,0,Math.PI);return gt.revolvedSurface(c,r,i,2*Math.PI)},gt.conicalSurface=function(r,i,o,l,c){var d=2*Math.PI,g=1,f=[p.add(o,p.mul(l,r)),p.add(o,p.mul(c,i))],y=[0,0,1,1],S=[1,1],P=new Ht(g,y,N.homogenize1d(f,S));return gt.revolvedSurface(P,o,r,d)},gt.rationalInterpCurve=function(r,i,o,l,c){if(o==null&&(o=!1),i==null&&(i=3),r.length<i+1)throw new Q("You need to supply at least degree + 1 points! You only supplied "+r.length+" points.");for(var d=[0],g=1,f=r.length;g<f;){var y=g++,S=p.norm(p.sub(r[y],r[y-1])),P=d[d.length-1];d.push(P+S)}for(var I=d[d.length-1],E=0,M=d.length;E<M;){var k=E++;d[k]=d[k]/I}var B=p.rep(i+1,0),C=l!=null&&c!=null,z;C?z=0:z=1;var R;C?R=d.length-i+1:R=d.length-i;for(var U=z;U<R;){for(var j=U++,X=0,J=0;J<i;){var q=J++;X+=d[j+q]}B.push(1/i*X)}var G=B.concat(p.rep(i+1,1)),$=[],tt;C?tt=r.length+1:tt=r.length-1;var et;C?et=r.length-(i-1):et=r.length-(i+1);for(var ot=0;ot<d.length;){var ut=d[ot];++ot;var lt=N.knotSpanGivenN(tt,i,ut,G),pt=N.basisFunctionsGivenKnotSpanIndex(lt,ut,i,G),nt=lt-i,mt=p.zeros1d(nt),K=p.zeros1d(et-nt);$.push(mt.concat(pt).concat(K))}if(C){var _t=$[0].length-2,Et=[-1,1].concat(p.zeros1d(_t)),qt=p.zeros1d(_t).concat([-1,1]);Z.spliceAndInsert($,1,0,Et),Z.spliceAndInsert($,$.length-1,0,qt)}for(var Zt=r[0].length,Gt=[],Jt=(1-G[G.length-i-2])/i,Be=G[i+1]/i,tr=0;tr<Zt;){var Ae=[tr++],xe;if(!C)xe=r.map(function(or){return function(Sr){return Sr[or[0]]}}(Ae));else{xe=[r[0][Ae[0]]],xe.push(Be*l[Ae[0]]);for(var Re=1,Ge=r.length-1;Re<Ge;){var sr=Re++;xe.push(r[sr][Ae[0]])}xe.push(Jt*c[Ae[0]]),xe.push(Z.last(r)[Ae[0]])}var fr=Ot.solve($,xe);Gt.push(fr)}var ir=Ot.transpose(Gt);if(!o){var ar=p.rep(ir.length,1);ir=N.homogenize1d(ir,ar)}return new Ht(i,G,ir)};var yt=_.eval.Modify=function(){};x["verb.eval.Modify"]=yt,yt.__name__=["verb","eval","Modify"],yt.curveReverse=function(r){return new Ht(r.degree,yt.knotsReverse(r.knots),Z.reversed(r.controlPoints))},yt.surfaceReverse=function(r,i){return i==null&&(i=!1),i?new se(r.degreeU,r.degreeV,r.knotsU,yt.knotsReverse(r.knotsV),function(o){for(var l,c=[],d=0,g=r.controlPoints;d<g.length;){var f=g[d];++d,c.push(Z.reversed(f))}return l=c,l}()):new se(r.degreeU,r.degreeV,yt.knotsReverse(r.knotsU),r.knotsV,Z.reversed(r.controlPoints))},yt.knotsReverse=function(r){var i=Z.first(r);Z.last(r);for(var o=[i],l=r.length,c=1;c<l;){var d=c++;o.push(o[d-1]+(r[l-d]-r[l-d-1]))}return o},yt.unifyCurveKnotVectors=function(r){r=r.map(gt.clonedCurve);for(var i=O.fold(r,function(G,$){return yt.imax(G.degree,$)},0),o=0,l=r.length;o<l;){var c=o++;r[c].degree<i&&(r[c]=yt.curveElevateDegree(r[c],i))}for(var d,g=[],f=0;f<r.length;){var y=r[f];++f,g.push(new Oe(Z.first(y.knots),Z.last(y.knots)))}d=g;for(var S=0,P=r.length;S<P;){var I=S++,E=[d[I].min];r[I].knots=r[I].knots.map(function(G){return function($){return $-G[0]}}(E))}for(var M=d.map(function(G){return G.max-G.min}),k=O.fold(M,function(G,$){return Math.max(G,$)},0),B=0,C=r.length;B<C;){var z=B++,R=[k/M[z]];r[z].knots=r[z].knots.map(function(G){return function($){return $*G[0]}}(R))}for(var U=O.fold(r,function(G,$){return p.sortedSetUnion(G.knots,$)},[]),j=0,X=r.length;j<X;){var J=j++,q=p.sortedSetSub(U,r[J].knots);q.length==0&&(r[J]=r[J]),r[J]=yt.curveKnotRefine(r[J],q)}return r},yt.imin=function(r,i){return r<i?r:i},yt.imax=function(r,i){return r>i?r:i},yt.curveElevateDegree=function(r,i){if(i<=r.degree)return r;var o=r.knots.length-r.degree-2,l=r.degree,c=r.knots,d=r.controlPoints,g=i-r.degree,f=r.controlPoints[0].length,y=p.zeros2d(l+g+1,l+1),S=[],P=[],I=[],E=o+l+1,M=i,k=Math.floor(M/2),B=[],C=[];y[0][0]=1,y[M][l]=1;for(var z=1,R=k+1;z<R;)for(var U=z++,j=1/Vt.get(M,U),X=yt.imin(l,U),J=yt.imax(0,U-g),q=X+1;J<q;){var G=J++;y[U][G]=j*Vt.get(l,G)*Vt.get(g,U-G)}for(var $=k+1;$<M;)for(var tt=$++,et=yt.imin(l,tt),ot=yt.imax(0,tt-g),ut=et+1;ot<ut;){var lt=ot++;y[tt][lt]=y[M-tt][l-lt]}var pt=M+1,nt=-1,mt=l,K=l+1,_t=1,Et=c[0];B[0]=d[0];for(var qt=0,Zt=M+1;qt<Zt;){var Gt=qt++;C[Gt]=Et}for(var Jt=0,Be=l+1;Jt<Be;){var tr=Jt++;S[tr]=d[tr]}for(;K<E;){for(var Ae=K;K<E&&c[K]==c[K+1];)K=K+1;var xe=K-Ae+1,Re=c[K],Ge=nt;nt=l-xe;var sr;Ge>0?sr=Math.floor((Ge+2)/2):sr=1;var fr;if(nt>0?fr=Math.floor(M-(nt+1)/2):fr=M,nt>0){for(var ir=Re-Et,ar=[],or=l;or>xe;)ar[or-xe-1]=ir/(c[mt+or]-Et),or--;for(var Sr=1,Un=nt+1;Sr<Un;){for(var cn=Sr++,Ic=nt-cn,ua=xe+cn,dn=l;dn>=ua;)S[dn]=p.add(p.mul(ar[dn-ua],S[dn]),p.mul(1-ar[dn-ua],S[dn-1])),dn--;I[Ic]=S[l]}}for(var rl=sr,Pc=M+1;rl<Pc;){var jn=rl++;P[jn]=p.zeros1d(f);for(var Ac=yt.imin(l,jn),nl=yt.imax(0,jn-g),Ec=Ac+1;nl<Ec;){var sl=nl++;P[jn]=p.add(P[jn],p.mul(y[jn][sl],S[sl]))}}if(Ge>1)for(var ca=pt-2,da=pt,il=Re-Et,Tc=(Re-C[pt-1])/il,al=1;al<Ge;){for(var pa=al++,Ir=ca,pn=da,Jr=pn-pt+1;pn-Ir>pa;){if(Ir<_t){var Mc=(Re-C[Ir])/(Et-C[Ir]);B[Ir]=p.lerp(Mc,B[Ir],B[Ir-1])}if(pn>=sr){if(pn-pa<=pt-M+Ge){var kc=(Re-C[pn-pa])/il;P[Jr]=p.lerp(kc,P[Jr],P[Jr+1])}}else P[Jr]=p.lerp(Tc,P[Jr],P[Jr+1]);Ir=Ir+1,pn=pn-1,Jr=Jr-1}ca=ca-1,da=da+1}if(mt!=l)for(var ol=0,Nc=M-Ge;ol<Nc;)ol++,C[pt]=Et,pt=pt+1;for(var ll=sr,Lc=fr+1;ll<Lc;){var Cc=ll++;B[_t]=P[Cc],_t=_t+1}if(K<E){for(var hl=0;hl<nt;){var ul=hl++;S[ul]=I[ul]}for(var cl=nt,Oc=l+1;cl<Oc;){var dl=cl++;S[dl]=d[K-l+dl]}mt=K,K=K+1,Et=Re}else for(var pl=0,Bc=M+1;pl<Bc;){var Rc=pl++;C[pt+Rc]=Re}}return new Ht(i,C,B)},yt.rationalSurfaceTransform=function(r,i){for(var o=N.dehomogenize2d(r.controlPoints),l=0,c=o.length;l<c;)for(var d=l++,g=0,f=o[d].length;g<f;){var y=g++,S=o[d][y];S.push(1),o[d][y]=Ot.dot(i,S).slice(0,S.length-1)}return new se(r.degreeU,r.degreeV,r.knotsU.slice(),r.knotsV.slice(),N.homogenize2d(o,N.weight2d(r.controlPoints)))},yt.rationalCurveTransform=function(r,i){for(var o=N.dehomogenize1d(r.controlPoints),l=0,c=o.length;l<c;){var d=l++,g=o[d];g.push(1),o[d]=Ot.dot(i,g).slice(0,g.length-1)}return new Ht(r.degree,r.knots.slice(),N.homogenize1d(o,N.weight1d(r.controlPoints)))},yt.surfaceKnotRefine=function(r,i,o){var l=[],c,d,g;o?(g=r.controlPoints,c=r.knotsV,d=r.degreeV):(g=Ot.transpose(r.controlPoints),c=r.knotsU,d=r.degreeU);for(var f=null,y=0;y<g.length;){var S=g[y];++y,f=yt.curveKnotRefine(new Ht(d,c,S),i),l.push(f.controlPoints)}var P=f.knots;return o?new se(r.degreeU,r.degreeV,r.knotsU.slice(),P,l):(l=Ot.transpose(l),new se(r.degreeU,r.degreeV,P,r.knotsV.slice(),l))},yt.decomposeCurveIntoBeziers=function(r){for(var i=r.degree,o=r.controlPoints,l=r.knots,c=bt.knotMultiplicities(l),d=i+1,g=0;g<c.length;){var f=c[g];if(++g,f.mult<d){var y=p.rep(d-f.mult,f.knot),S=yt.curveKnotRefine(new Ht(i,l,o),y);l=S.knots,o=S.controlPoints}}l.length/d-1;for(var P=d*2,I=[],E=0;E<o.length;){var M=l.slice(E,E+P),k=o.slice(E,E+d);I.push(new Ht(i,M,k)),E+=d}return I},yt.curveKnotRefine=function(r,i){if(i.length==0)return gt.clonedCurve(r);for(var o=r.degree,l=r.controlPoints,c=r.knots,d=l.length-1,g=d+o+1,f=i.length-1,y=N.knotSpan(o,i[0],c),S=N.knotSpan(o,i[f],c),P=[],I=[],E=0,M=y-o+1;E<M;){var k=E++;P[k]=l[k]}for(var B=S-1,C=d+1;B<C;){var z=B++;P[z+f+1]=l[z]}for(var R=0,U=y+1;R<U;){var j=R++;I[j]=c[j]}for(var X=S+o,J=g+1;X<J;){var q=X++;I[q+f+1]=c[q]}for(var G=S+o-1,$=S+o+f,tt=f;tt>=0;){for(;i[tt]<=c[G]&&G>y;)P[$-o-1]=l[G-o-1],I[$]=c[G],$=$-1,G=G-1;P[$-o-1]=P[$-o];for(var et=1,ot=o+1;et<ot;){var ut=et++,lt=$-o+ut,pt=I[$+ut]-i[tt];Math.abs(pt)<rt.EPSILON?P[lt-1]=P[lt]:(pt=pt/(I[$+ut]-c[G-o+ut]),P[lt-1]=p.add(p.mul(pt,P[lt-1]),p.mul(1-pt,P[lt])))}I[$]=i[tt],$=$-1,tt--}return new Ht(o,I,P)},yt.curveKnotInsert=function(r,i,o){for(var l=r.degree,c=r.controlPoints,d=r.knots,g=0,f=c.length,y=N.knotSpan(l,i,d),S=[],P=[],I=[],E=1,M=y+1;E<M;){var k=E++;P[k]=d[k]}for(var B=1,C=o+1;B<C;){var z=B++;P[y+z]=i}for(var R=y+1,U=d.length;R<U;){var j=R++;P[j+o]=d[j]}for(var X=0,J=y-l+1;X<J;){var q=X++;I[q]=c[q]}for(var G=y-g;G<f;){var $=G++;I[$+o]=c[$]}for(var tt=0,et=l-g+1;tt<et;){var ot=tt++;S[ot]=c[y-l+ot]}for(var ut=0,lt=0,pt=1,nt=o+1;pt<nt;){var mt=pt++;ut=y-l+mt;for(var K=0,_t=l-mt-g+1;K<_t;){var Et=K++;lt=(i-d[ut+Et])/(d[Et+y+1]-d[ut+Et]),S[Et]=p.add(p.mul(lt,S[Et+1]),p.mul(1-lt,S[Et]))}I[ut]=S[0],I[y+o-mt-g]=S[l-mt-g]}for(var qt=ut+1,Zt=y-g;qt<Zt;){var Gt=qt++;I[Gt]=S[Gt-ut]}return new Ht(l,P,I)};var Rt=_.eval.Tess=function(){};x["verb.eval.Tess"]=Rt,Rt.__name__=["verb","eval","Tess"],Rt.rationalCurveRegularSample=function(r,i,o){return Rt.rationalCurveRegularSampleRange(r,r.knots[0],Z.last(r.knots),i,o)},Rt.rationalCurveRegularSampleRange=function(r,i,o,l,c){l<1&&(l=2);for(var d=[],g=(o-i)/(l-1),f=0,y=0;y<l;){var S=y++;f=i+g*S,c?d.push([f].concat(N.rationalCurvePoint(r,f))):d.push(N.rationalCurvePoint(r,f))}return d},Rt.rationalCurveAdaptiveSample=function(r,i,o){if(o==null&&(o=!1),i==null&&(i=1e-6),r.degree==1)if(o){for(var l=[],c=0,d=r.controlPoints.length;c<d;){var g=c++;l.push([r.knots[g+1]].concat(N.dehomogenize(r.controlPoints[g])))}return l}else return r.controlPoints.map(N.dehomogenize);return Rt.rationalCurveAdaptiveSampleRange(r,r.knots[0],Z.last(r.knots),i,o)},Rt.rationalCurveAdaptiveSampleRange=function(r,i,o,l,c){var d=N.rationalCurvePoint(r,i),g=N.rationalCurvePoint(r,o),f=.5+.2*Math.random(),y=i+(o-i)*f,S=N.rationalCurvePoint(r,y),P=p.sub(d,g),I=p.sub(d,S);if(p.dot(P,P)<l&&p.dot(I,I)>l||!Ue.threePointsAreFlat(d,S,g,l)){var E=i+(o-i)*.5,M=Rt.rationalCurveAdaptiveSampleRange(r,i,E,l,c),k=Rt.rationalCurveAdaptiveSampleRange(r,E,o,l,c);return M.slice(0,-1).concat(k)}else return c?[[i].concat(d),[o].concat(g)]:[d,g]},Rt.rationalSurfaceNaive=function(r,i,o){i<1&&(i=1),o<1&&(o=1),r.degreeU,r.degreeV,r.controlPoints;for(var l=r.knotsU,c=r.knotsV,d=Z.last(l)-l[0],g=Z.last(c)-c[0],f=d/i,y=g/o,S=[],P=[],I=[],E=0,M=i+1;E<M;)for(var k=E++,B=0,C=o+1;B<C;){var z=B++,R=k*f,U=z*y;P.push([R,U]);var j=N.rationalSurfaceDerivatives(r,R,U,1),X=j[0][0];S.push(X);var J=p.normalized(p.cross(j[1][0],j[0][1]));I.push(J)}for(var q=[],G=0;G<i;)for(var $=G++,tt=0;tt<o;){var et=tt++,ot=$*(o+1)+et,ut=($+1)*(o+1)+et,lt=ut+1,pt=ot+1,nt=[ot,ut,lt],mt=[ot,lt,pt];q.push(nt),q.push(mt)}return new er(q,S,I,P)},Rt.divideRationalSurfaceAdaptive=function(r,i){i==null&&(i=new Yr),i.minDivsU!=null?i.minDivsU=i.minDivsU:i.minDivsU=1,i.minDivsV!=null?i.minDivsU=i.minDivsV:i.minDivsU=1,i.refine!=null?i.refine=i.refine:i.refine=!0;var o=(r.controlPoints.length-1)*2,l=(r.controlPoints[0].length-1)*2,c;i.minDivsU>o?c=i.minDivsU=i.minDivsU:c=i.minDivsU=o;var d;i.minDivsV>l?d=i.minDivsV=i.minDivsV:d=i.minDivsV=l;for(var g=Z.last(r.knotsU),f=r.knotsU[0],y=Z.last(r.knotsV),S=r.knotsV[0],P=(g-f)/c,I=(y-S)/d,E=[],M=[],k=0,B=d+1;k<B;){for(var C=k++,z=[],R=0,U=c+1;R<U;){var j=R++,X=f+P*j,J=S+I*C,q=N.rationalSurfaceDerivatives(r,X,J,1),G=p.normalized(p.cross(q[0][1],q[1][0]));z.push(new Qe(q[0][0],G,[X,J],-1,p.isZero(G)))}M.push(z)}for(var $=0;$<d;)for(var tt=$++,et=0;et<c;){var ot=et++,ut=[M[d-tt-1][ot],M[d-tt-1][ot+1],M[d-tt][ot+1],M[d-tt][ot]];E.push(new wr(r,ut))}if(!i.refine)return E;for(var lt=0;lt<d;)for(var pt=lt++,nt=0;nt<c;){var mt=nt++,K=pt*c+mt,_t=Rt.north(K,pt,mt,c,d,E),Et=Rt.east(K,pt,mt,c,d,E),qt=Rt.south(K,pt,mt,c,d,E),Zt=Rt.west(K,pt,mt,c,d,E);E[K].neighbors=[qt,Et,_t,Zt],E[K].divide(i)}return E},Rt.north=function(r,i,o,l,c,d){return i==0?null:d[r-l]},Rt.south=function(r,i,o,l,c,d){return i==c-1?null:d[r+l]},Rt.east=function(r,i,o,l,c,d){return o==l-1?null:d[r+1]},Rt.west=function(r,i,o,l,c,d){return o==0?null:d[r-1]},Rt.triangulateAdaptiveRefinementNodeTree=function(r){for(var i=er.empty(),o=0;o<r.length;){var l=r[o];++o,l.triangulate(i)}return i},Rt.rationalSurfaceAdaptive=function(r,i){i!=null?i=i:i=new Yr;var o=Rt.divideRationalSurfaceAdaptive(r,i);return Rt.triangulateAdaptiveRefinementNodeTree(o)};var Yr=_.core.AdaptiveRefinementOptions=function(){this.minDivsV=1,this.minDivsU=1,this.refine=!0,this.maxDepth=10,this.minDepth=0,this.normTol=.025};x["verb.eval.AdaptiveRefinementOptions"]=Yr,Yr.__name__=["verb","eval","AdaptiveRefinementOptions"],Yr.prototype={__class__:Yr};var wr=_.core.AdaptiveRefinementNode=function(r,i,o){if(this.srf=r,o==null?this.neighbors=[null,null,null,null]:this.neighbors=o,this.corners=i,this.corners==null){var l=r.knotsU[0],c=Z.last(r.knotsU),d=r.knotsV[0],g=Z.last(r.knotsV);this.corners=[Qe.fromUv(l,d),Qe.fromUv(c,d),Qe.fromUv(c,g),Qe.fromUv(l,g)]}};x["verb.eval.AdaptiveRefinementNode"]=wr,wr.__name__=["verb","eval","AdaptiveRefinementNode"],wr.prototype={isLeaf:function(){return this.children==null},center:function(){return this.centerPoint!=null?this.centerPoint:this.evalSrf(this.u05,this.v05)},evalCorners:function(){this.u05=(this.corners[0].uv[0]+this.corners[2].uv[0])/2,this.v05=(this.corners[0].uv[1]+this.corners[2].uv[1])/2;for(var r=0;r<4;){var i=r++;if(this.corners[i].point==null){var o=this.corners[i];this.evalSrf(o.uv[0],o.uv[1],o)}}},evalSrf:function(r,i,o){var l=N.rationalSurfaceDerivatives(this.srf,r,i,1),c=l[0][0],d=p.cross(l[0][1],l[1][0]),g=p.isZero(d);return g||(d=p.normalized(d)),o!=null?(o.degen=g,o.point=c,o.normal=d,o):new Qe(c,d,[r,i],-1,g)},getEdgeCorners:function(r){if(this.isLeaf())return[this.corners[r]];if(this.horizontal)switch(r){case 0:return this.children[0].getEdgeCorners(0);case 1:return this.children[0].getEdgeCorners(1).concat(this.children[1].getEdgeCorners(1));case 2:return this.children[1].getEdgeCorners(2);case 3:return this.children[1].getEdgeCorners(3).concat(this.children[0].getEdgeCorners(3))}switch(r){case 0:return this.children[0].getEdgeCorners(0).concat(this.children[1].getEdgeCorners(0));case 1:return this.children[1].getEdgeCorners(1);case 2:return this.children[1].getEdgeCorners(2).concat(this.children[0].getEdgeCorners(2));case 3:return this.children[0].getEdgeCorners(3)}return null},getAllCorners:function(r){var i=[this.corners[r]];if(this.neighbors[r]==null)return i;var o=this.neighbors[r].getEdgeCorners((r+2)%4),l=r%2,c=rt.EPSILON,d=this,g=[function(y){return y.uv[0]>d.corners[0].uv[0]+c&&y.uv[0]<d.corners[2].uv[0]-c},function(y){return y.uv[1]>d.corners[0].uv[1]+c&&y.uv[1]<d.corners[2].uv[1]-c}],f=o.filter(g[l]);return f.reverse(),i.concat(f)},midpoint:function(r){if(this.midPoints==null&&(this.midPoints=[null,null,null,null]),this.midPoints[r]!=null)return this.midPoints[r];switch(r){case 0:this.midPoints[0]=this.evalSrf(this.u05,this.corners[0].uv[1]);break;case 1:this.midPoints[1]=this.evalSrf(this.corners[1].uv[0],this.v05);break;case 2:this.midPoints[2]=this.evalSrf(this.u05,this.corners[2].uv[1]);break;case 3:this.midPoints[3]=this.evalSrf(this.corners[0].uv[0],this.v05);break}return this.midPoints[r]},hasBadNormals:function(){return this.corners[0].degen||this.corners[1].degen||this.corners[2].degen||this.corners[3].degen},fixNormals:function(){for(var r=this.corners.length,i=0;i<r;){var o=i++;if(this.corners[o],this.corners[o].degen){var l=this.corners[(o+1)%r],c=this.corners[(o+3)%r];l.degen?this.corners[o].normal=c.normal:this.corners[o].normal=l.normal}}},shouldDivide:function(r,i){if(i<r.minDepth)return!0;if(i>=r.maxDepth)return!1;if(this.hasBadNormals())return this.fixNormals(),!1;if(this.splitVert=p.normSquared(p.sub(this.corners[0].normal,this.corners[1].normal))>r.normTol||p.normSquared(p.sub(this.corners[2].normal,this.corners[3].normal))>r.normTol,this.splitHoriz=p.normSquared(p.sub(this.corners[1].normal,this.corners[2].normal))>r.normTol||p.normSquared(p.sub(this.corners[3].normal,this.corners[0].normal))>r.normTol,this.splitVert||this.splitHoriz)return!0;var o=this.center();return p.normSquared(p.sub(o.normal,this.corners[0].normal))>r.normTol||p.normSquared(p.sub(o.normal,this.corners[1].normal))>r.normTol||p.normSquared(p.sub(o.normal,this.corners[2].normal))>r.normTol||p.normSquared(p.sub(o.normal,this.corners[3].normal))>r.normTol},divide:function(r){r==null&&(r=new Yr),r.normTol==null&&(r.normTol=.085),r.minDepth==null&&(r.minDepth=0),r.maxDepth==null&&(r.maxDepth=10),this._divide(r,0,!0)},_divide:function(r,i,o){if(this.evalCorners(),!!this.shouldDivide(r,i)){if(i++,this.splitVert&&!this.splitHoriz?o=!1:!this.splitVert&&this.splitHoriz&&(o=!0),this.horizontal=o,this.horizontal){var l=[this.corners[0],this.corners[1],this.midpoint(1),this.midpoint(3)],c=[this.midpoint(3),this.midpoint(1),this.corners[2],this.corners[3]];this.children=[new wr(this.srf,l),new wr(this.srf,c)],this.children[0].neighbors=[this.neighbors[0],this.neighbors[1],this.children[1],this.neighbors[3]],this.children[1].neighbors=[this.children[0],this.neighbors[1],this.neighbors[2],this.neighbors[3]]}else{var d=[this.corners[0],this.midpoint(0),this.midpoint(2),this.corners[3]],g=[this.midpoint(0),this.corners[1],this.corners[2],this.midpoint(2)];this.children=[new wr(this.srf,d),new wr(this.srf,g)],this.children[0].neighbors=[this.neighbors[0],this.children[1],this.neighbors[2],this.neighbors[3]],this.children[1].neighbors=[this.neighbors[0],this.neighbors[1],this.neighbors[2],this.children[0]]}for(var f=0,y=this.children;f<y.length;){var S=y[f];++f,S._divide(r,i,!o)}}},triangulate:function(r){if(r==null&&(r=er.empty()),this.isLeaf())return this.triangulateLeaf(r);for(var i=0,o=this.children;i<o.length;){var l=o[i];if(++i,l==null)break;l.triangulate(r)}return r},triangulateLeaf:function(r){for(var i=r.points.length,o=[],l=[],c=0,d=0;d<4;){var g=d++,f=this.getAllCorners(g);f.length==2&&(c=g+1);for(var y=0,S=f.length;y<S;){var P=y++;o.push(f[P])}}for(var I=0;I<o.length;){var E=o[I];if(++I,E.id!=-1){l.push(E.id);continue}r.uvs.push(E.uv),r.points.push(E.point),r.normals.push(E.normal),E.id=i,l.push(i),i++}if(o.length==4)return r.faces.push([l[0],l[3],l[1]]),r.faces.push([l[3],l[2],l[1]]),r;if(o.length==5){var M=l.length;return r.faces.push([l[c],l[(c+2)%M],l[(c+1)%M]]),r.faces.push([l[(c+4)%M],l[(c+3)%M],l[c]]),r.faces.push([l[c],l[(c+3)%M],l[(c+2)%M]]),r}var k=this.center();r.uvs.push(k.uv),r.points.push(k.point),r.normals.push(k.normal);for(var B=r.points.length-1,C=0,z=o.length-1;C<o.length;)r.faces.push([B,l[C],l[z]]),z=C++;return r},__class__:wr};var St=_.exe.Dispatcher=function(){};x["verb.exe.Dispatcher"]=St,St.__name__=["verb","exe","Dispatcher"],St.init=function(){St._init||(St._workerPool=new Kr(St.THREADS),St._init=!0)},St.dispatchMethod=function(r,i,o){St.init();var l=new Mn,c=function(d){l.resolve(d)};return St._workerPool.addWork(dt.getClassName(r),i,o,c),new be(l)};var Kr=_.exe.WorkerPool=function(r,i){i==null&&(i="verb.js"),r==null&&(r=1),this._callbacks=new wt,this._working=new wt,this._pool=[],this._queue=[];for(var o=0;o<r;){o++;var l;try{l=new Worker(Kr.basePath+i)}catch(c){c instanceof Q&&(c=c.val),l=new Worker(Kr.basePath+i.substring(0,-3)+".min.js")}this._pool.push(l)}};x["verb.exe.WorkerPool"]=Kr,Kr.__name__=["verb","exe","WorkerPool"],Kr.prototype={addWork:function(r,i,o,l){var c=new un(r,i,o);this._callbacks.set(c.id,l),this._queue.push(c),this.processQueue()},processQueue:function(){for(var r=this;this._queue.length>0&&this._pool.length>0;){var i=this._queue.shift(),o=[i.id],l=[this._pool.shift()];this._working.h[o[0]]=l[0],l[0].onmessage=function(c,d){return function(g){r._working.remove(d[0]),r._pool.push(c[0]);try{r._callbacks.h.hasOwnProperty(d[0])&&(r._callbacks.h[d[0]](g.data.result),r._callbacks.remove(d[0]))}catch(f){f instanceof Q&&(f=f.val),b.log(f)}r.processQueue()}}(l,o),l[0].postMessage(i)}},__class__:Kr};var un=function(r,i,o){this.className=r,this.methodName=i,this.args=o,this.id=un.uuid++};x["verb.exe._WorkerPool.Work"]=un,un.__name__=["verb","exe","_WorkerPool","Work"],un.prototype={__class__:un};var Fn=function(){};x["verb.geom.ICurve"]=Fn,Fn.__name__=["verb","geom","ICurve"],Fn.__interfaces__=[Bn],Fn.prototype={__class__:Fn};var Ct=_.geom.NurbsCurve=function(r){this._data=Je.isValidNurbsCurveData(r)};x["verb.geom.NurbsCurve"]=Ct,Ct.__name__=["verb","geom","NurbsCurve"],Ct.__interfaces__=[Fn],Ct.byKnotsControlPointsWeights=function(r,i,o,l){return new Ct(new Ht(r,i.slice(),N.homogenize1d(o,l)))},Ct.byPoints=function(r,i){return i==null&&(i=3),new Ct(gt.rationalInterpCurve(r,i))},Ct.__super__=ee,Ct.prototype=T(ee.prototype,{degree:function(){return this._data.degree},knots:function(){return this._data.knots.slice(0)},controlPoints:function(){return N.dehomogenize1d(this._data.controlPoints)},weights:function(){return N.weight1d(this._data.controlPoints)},asNurbs:function(){return new Ht(this.degree(),this.knots(),N.homogenize1d(this.controlPoints(),this.weights()))},clone:function(){return new Ct(this._data)},domain:function(){return new Oe(Z.first(this._data.knots),Z.last(this._data.knots))},transform:function(r){return new Ct(yt.rationalCurveTransform(this._data,r))},transformAsync:function(r){return St.dispatchMethod(yt,"rationalCurveTransform",[this._data,r]).then(function(i){return new Ct(i)})},point:function(r){return N.rationalCurvePoint(this._data,r)},pointAsync:function(r){return St.dispatchMethod(N,"rationalCurvePoint",[this._data,r])},tangent:function(r){return N.rationalCurveTangent(this._data,r)},tangentAsync:function(r){return St.dispatchMethod(N,"rationalCurveTangent",[this._data,r])},derivatives:function(r,i){return i==null&&(i=1),N.rationalCurveDerivatives(this._data,r,i)},derivativesAsync:function(r,i){return i==null&&(i=1),St.dispatchMethod(N,"rationalCurveDerivatives",[this._data,r,i])},closestPoint:function(r){return bt.rationalCurveClosestPoint(this._data,r)},closestPointAsync:function(r){return St.dispatchMethod(bt,"rationalCurveClosestPoint",[this._data,r])},closestParam:function(r){return bt.rationalCurveClosestParam(this._data,r)},closestParamAsync:function(r){return St.dispatchMethod(bt,"rationalCurveClosestParam",[this._data,r])},length:function(){return bt.rationalCurveArcLength(this._data)},lengthAsync:function(){return St.dispatchMethod(bt,"rationalCurveArcLength",[this._data])},lengthAtParam:function(r){return bt.rationalCurveArcLength(this._data,r)},lengthAtParamAsync:function(){return St.dispatchMethod(bt,"rationalCurveArcLength",[this._data])},paramAtLength:function(r,i){return bt.rationalCurveParamAtArcLength(this._data,r,i)},paramAtLengthAsync:function(r,i){return St.dispatchMethod(bt,"rationalCurveParamAtArcLength",[this._data,r,i])},divideByEqualArcLength:function(r){return me.rationalCurveByEqualArcLength(this._data,r)},divideByEqualArcLengthAsync:function(r){return St.dispatchMethod(me,"rationalCurveByEqualArcLength",[this._data,r])},divideByArcLength:function(r){return me.rationalCurveByArcLength(this._data,r)},divideByArcLengthAsync:function(r){return St.dispatchMethod(me,"rationalCurveByArcLength",[this._data,r])},split:function(r){return me.curveSplit(this._data,r).map(function(i){return new Ct(i)})},splitAsync:function(r){return St.dispatchMethod(me,"curveSplit",[this._data,r]).then(function(i){return i.map(function(o){return new Ct(o)})})},reverse:function(){return new Ct(yt.curveReverse(this._data))},reverseAsync:function(){return St.dispatchMethod(yt,"curveReverse",[this._data]).then(function(r){return new Ct(r)})},tessellate:function(r){return Rt.rationalCurveAdaptiveSample(this._data,r,!1)},tessellateAsync:function(r){return St.dispatchMethod(Rt,"rationalCurveAdaptiveSample",[this._data,r,!1])},__class__:Ct});var $r=_.geom.Arc=function(r,i,o,l,c,d){Ct.call(this,gt.arc(r,i,o,l,c,d)),this._center=r,this._xaxis=i,this._yaxis=o,this._radius=l,this._minAngle=c,this._maxAngle=d};x["verb.geom.Arc"]=$r,$r.__name__=["verb","geom","Arc"],$r.__super__=Ct,$r.prototype=T(Ct.prototype,{center:function(){return this._center},xaxis:function(){return this._xaxis},yaxis:function(){return this._yaxis},radius:function(){return this._radius},minAngle:function(){return this._minAngle},maxAngle:function(){return this._maxAngle},__class__:$r});var ms=_.geom.BezierCurve=function(r,i){Ct.call(this,gt.rationalBezierCurve(r,i))};x["verb.geom.BezierCurve"]=ms,ms.__name__=["verb","geom","BezierCurve"],ms.__super__=Ct,ms.prototype=T(Ct.prototype,{__class__:ms});var gs=_.geom.Circle=function(r,i,o,l){$r.call(this,r,i,o,l,0,Math.PI*2)};x["verb.geom.Circle"]=gs,gs.__name__=["verb","geom","Circle"],gs.__super__=$r,gs.prototype=T($r.prototype,{__class__:gs});var Vn=function(){};x["verb.geom.ISurface"]=Vn,Vn.__name__=["verb","geom","ISurface"],Vn.__interfaces__=[Bn],Vn.prototype={__class__:Vn};var Tt=_.geom.NurbsSurface=function(r){this._data=Je.isValidNurbsSurfaceData(r)};x["verb.geom.NurbsSurface"]=Tt,Tt.__name__=["verb","geom","NurbsSurface"],Tt.__interfaces__=[Vn],Tt.byKnotsControlPointsWeights=function(r,i,o,l,c,d){return new Tt(new se(r,i,o,l,N.homogenize2d(c,d)))},Tt.byCorners=function(r,i,o,l){return new Tt(gt.fourPointSurface(r,i,o,l))},Tt.byLoftingCurves=function(r,i){return new Tt(gt.loftedSurface(function(o){for(var l,c=[],d=0;d<r.length;){var g=r[d];++d,c.push(g.asNurbs())}return l=c,l}(),i))},Tt.__super__=ee,Tt.prototype=T(ee.prototype,{degreeU:function(){return this._data.degreeU},degreeV:function(){return this._data.degreeV},knotsU:function(){return this._data.knotsU.slice(0)},knotsV:function(){return this._data.knotsV.slice(0)},controlPoints:function(){return N.dehomogenize2d(this._data.controlPoints)},weights:function(){return N.weight2d(this._data.controlPoints)},asNurbs:function(){return new se(this.degreeU(),this.degreeV(),this.knotsU(),this.knotsV(),N.homogenize2d(this.controlPoints(),this.weights()))},clone:function(){return new Tt(this.asNurbs())},domainU:function(){return new Oe(Z.first(this._data.knotsU),Z.last(this._data.knotsU))},domainV:function(){return new Oe(Z.first(this._data.knotsV),Z.last(this._data.knotsV))},point:function(r,i){return N.rationalSurfacePoint(this._data,r,i)},pointAsync:function(r,i){return St.dispatchMethod(N,"rationalSurfacePoint",[this._data,r,i])},normal:function(r,i){return N.rationalSurfaceNormal(this._data,r,i)},normalAsync:function(r,i){return St.dispatchMethod(N,"rationalSurfaceNormal",[this._data,r,i])},derivatives:function(r,i,o){return o==null&&(o=1),N.rationalSurfaceDerivatives(this._data,r,i,o)},derivativesAsync:function(r,i,o){return o==null&&(o=1),St.dispatchMethod(N,"rationalSurfaceDerivatives",[this._data,r,i,o])},closestParam:function(r){return bt.rationalSurfaceClosestParam(this._data,r)},closestParamAsync:function(r){return St.dispatchMethod(bt,"rationalSurfaceClosestParam",[this._data,r])},closestPoint:function(r){return bt.rationalSurfaceClosestPoint(this._data,r)},closestPointAsync:function(r){return St.dispatchMethod(bt,"rationalSurfaceClosestPoint",[this._data,r])},split:function(r,i){return i==null&&(i=!1),me.surfaceSplit(this._data,r,i).map(function(o){return new Tt(o)})},splitAsync:function(r,i){return i==null&&(i=!1),St.dispatchMethod(me,"surfaceSplit",[this._data,r,i]).then(function(o){return o.map(function(l){return new Tt(l)})})},reverse:function(r){return r==null&&(r=!1),new Tt(yt.surfaceReverse(this._data,r))},reverseAsync:function(r){return r==null&&(r=!1),St.dispatchMethod(yt,"surfaceReverse",[this._data,r]).then(function(i){return new Tt(i)})},isocurve:function(r,i){return i==null&&(i=!1),new Ct(gt.surfaceIsocurve(this._data,r,i))},isocurveAsync:function(r,i){return i==null&&(i=!1),St.dispatchMethod(gt,"surfaceIsocurve",[this._data,r,i]).then(function(o){return new Ct(o)})},boundaries:function(r){return gt.surfaceBoundaryCurves(this._data).map(function(i){return new Ct(i)})},boundariesAsync:function(r){return St.dispatchMethod(gt,"surfaceBoundaryCurves",[this._data]).then(function(i){return i.map(function(o){return new Ct(o)})})},tessellate:function(r){return Rt.rationalSurfaceAdaptive(this._data,r)},tessellateAsync:function(r){return St.dispatchMethod(Rt,"rationalSurfaceAdaptive",[this._data,r])},transform:function(r){return new Tt(yt.rationalSurfaceTransform(this._data,r))},transformAsync:function(r){return St.dispatchMethod(yt,"rationalSurfaceTransform",[this._data,r]).then(function(i){return new Tt(i)})},__class__:Tt});var fs=_.geom.ConicalSurface=function(r,i,o,l,c){Tt.call(this,gt.conicalSurface(r,i,o,l,c)),this._axis=r,this._xaxis=i,this._base=o,this._height=l,this._radius=c};x["verb.geom.ConicalSurface"]=fs,fs.__name__=["verb","geom","ConicalSurface"],fs.__super__=Tt,fs.prototype=T(Tt.prototype,{axis:function(){return this._axis},xaxis:function(){return this._xaxis},base:function(){return this._base},height:function(){return this._height},radius:function(){return this._radius},__class__:fs});var _s=_.geom.CylindricalSurface=function(r,i,o,l,c){Tt.call(this,gt.cylindricalSurface(r,i,o,l,c)),this._axis=r,this._xaxis=i,this._base=o,this._height=l,this._radius=c};x["verb.geom.CylindricalSurface"]=_s,_s.__name__=["verb","geom","CylindricalSurface"],_s.__super__=Tt,_s.prototype=T(Tt.prototype,{axis:function(){return this._axis},xaxis:function(){return this._xaxis},base:function(){return this._base},height:function(){return this._height},radius:function(){return this._radius},__class__:_s});var Zr=_.geom.EllipseArc=function(r,i,o,l,c){Ct.call(this,gt.ellipseArc(r,i,o,l,c)),this._center=r,this._xaxis=i,this._yaxis=o,this._minAngle=l,this._maxAngle=c};x["verb.geom.EllipseArc"]=Zr,Zr.__name__=["verb","geom","EllipseArc"],Zr.__super__=Ct,Zr.prototype=T(Ct.prototype,{center:function(){return this._center},xaxis:function(){return this._xaxis},yaxis:function(){return this._yaxis},minAngle:function(){return this._minAngle},maxAngle:function(){return this._maxAngle},__class__:Zr});var ys=_.geom.Ellipse=function(r,i,o){Zr.call(this,r,i,o,0,Math.PI*2)};x["verb.geom.Ellipse"]=ys,ys.__name__=["verb","geom","Ellipse"],ys.__super__=Zr,ys.prototype=T(Zr.prototype,{__class__:ys});var vs=_.geom.ExtrudedSurface=function(r,i){Tt.call(this,gt.extrudedSurface(p.normalized(i),p.norm(i),r.asNurbs())),this._profile=r,this._direction=i};x["verb.geom.ExtrudedSurface"]=vs,vs.__name__=["verb","geom","ExtrudedSurface"],vs.__super__=Tt,vs.prototype=T(Tt.prototype,{profile:function(){return this._profile},direction:function(){return this._direction},__class__:vs});var Qr=_.geom.Intersect=function(){};x["verb.geom.Intersect"]=Qr,Qr.__name__=["verb","geom","Intersect"],Qr.curves=function(r,i,o){return o==null&&(o=.001),ht.curves(r.asNurbs(),i.asNurbs(),o)},Qr.curvesAsync=function(r,i,o){return o==null&&(o=.001),St.dispatchMethod(ht,"curves",[r.asNurbs(),i.asNurbs(),o])},Qr.curveAndSurface=function(r,i,o){return o==null&&(o=.001),ht.curveAndSurface(r.asNurbs(),i.asNurbs(),o)},Qr.curveAndSurfaceAsync=function(r,i,o){return o==null&&(o=.001),St.dispatchMethod(ht,"curveAndSurface",[r.asNurbs(),i.asNurbs(),o])},Qr.surfaces=function(r,i,o){return o==null&&(o=.001),ht.surfaces(r.asNurbs(),i.asNurbs(),o).map(function(l){return new Ct(l)})},Qr.surfacesAsync=function(r,i,o){return o==null&&(o=.001),St.dispatchMethod(ht,"surfaces",[r.asNurbs(),i.asNurbs(),o]).then(function(l){return l.map(function(c){return new Ct(c)})})};var bs=_.geom.Line=function(r,i){Ct.call(this,gt.polyline([r,i])),this._start=r,this._end=i};x["verb.geom.Line"]=bs,bs.__name__=["verb","geom","Line"],bs.__super__=Ct,bs.prototype=T(Ct.prototype,{start:function(){return this._start},end:function(){return this._end},__class__:bs});var xs=_.geom.RevolvedSurface=function(r,i,o,l){Tt.call(this,gt.revolvedSurface(r.asNurbs(),i,o,l)),this._profile=r,this._center=i,this._axis=o,this._angle=l};x["verb.geom.RevolvedSurface"]=xs,xs.__name__=["verb","geom","RevolvedSurface"],xs.__super__=Tt,xs.prototype=T(Tt.prototype,{profile:function(){return this._profile},center:function(){return this._center},axis:function(){return this._center},angle:function(){return this._angle},__class__:xs});var ws=_.geom.SphericalSurface=function(r,i){Tt.call(this,gt.sphericalSurface(r,[0,0,1],[1,0,0],i)),this._center=r,this._radius=i};x["verb.geom.SphericalSurface"]=ws,ws.__name__=["verb","geom","SphericalSurface"],ws.__super__=Tt,ws.prototype=T(Tt.prototype,{center:function(){return this._center},radius:function(){return this._radius},__class__:ws});var Ss=_.geom.SweptSurface=function(r,i){Tt.call(this,gt.rationalTranslationalSurface(r.asNurbs(),i.asNurbs())),this._profile=r,this._rail=i};x["verb.geom.SweptSurface"]=Ss,Ss.__name__=["verb","geom","SweptSurface"],Ss.__super__=Tt,Ss.prototype=T(Tt.prototype,{profile:function(){return this._profile},rail:function(){return this._rail},__class__:Ss});function nr(r){return r instanceof Array?function(){return L.iter(r)}:typeof r.iterator=="function"?je(r,r.iterator):r.iterator}var oa,xc=0;function je(r,i){if(i==null)return null;i.__id__==null&&(i.__id__=xc++);var o;return r.hx__closures__==null?r.hx__closures__={}:o=r.hx__closures__[i.__id__],o==null&&(o=function(){return o.method.apply(o.scope,arguments)},o.scope=r,o.method=i,r.hx__closures__[i.__id__]=o),o}x.Math=Math,String.prototype.__class__=x.String=String,String.__name__=["String"],x.Array=Array,Array.__name__=["Array"],Date.prototype.__class__=x.Date=Date,Date.__name__=["Date"];var wc=x.Int={__name__:["Int"]},Sc=x.Dynamic={__name__:["Dynamic"]},Qo=x.Float=Number;Qo.__name__=["Float"];var Jo=x.Bool=Boolean;Jo.__ename__=["Bool"];var tl=x.Class={__name__:["Class"]},el={};Array.prototype.map==null&&(Array.prototype.map=function(r){for(var i=[],o=0,l=this.length;o<l;){var c=o++;i[c]=r(this[c])}return i}),Array.prototype.filter==null&&(Array.prototype.filter=function(r){for(var i=[],o=0,l=this.length;o<l;){var c=o++,d=this[c];r(d)&&i.push(d)}return i});var la={},oi=w.ArrayBuffer||pe;oi.prototype.slice==null&&(oi.prototype.slice=pe.sliceImpl),w.DataView;var ha=w.Uint8Array||dr._new;(function(r,i){if(r.setImmediate)return;var o=1,l={},c=!1,d=r.document,g;function f(R){return l[o]=y.apply(i,R),o++}function y(R){var U=[].slice.call(arguments,1);return function(){typeof R=="function"?R.apply(i,U):new Function(""+R)()}}function S(R){if(c)setTimeout(y(S,R),0);else{var U=l[R];if(U){c=!0;try{U()}finally{P(R),c=!1}}}}function P(R){delete l[R]}function I(){g=function(){var R=f(arguments);return process.nextTick(y(S,R)),R}}function E(){if(r.postMessage&&!r.importScripts){var R=!0,U=r.onmessage;return r.onmessage=function(){R=!1},r.postMessage("","*"),r.onmessage=U,R}}function M(){var R="setImmediate$"+Math.random()+"$",U=function(j){j.source===r&&typeof j.data=="string"&&j.data.indexOf(R)===0&&S(+j.data.slice(R.length))};r.addEventListener?r.addEventListener("message",U,!1):r.attachEvent("onmessage",U),g=function(){var j=f(arguments);return r.postMessage(R+j,"*"),j}}function k(){var R=new MessageChannel;R.port1.onmessage=function(U){var j=U.data;S(j)},g=function(){var U=f(arguments);return R.port2.postMessage(U),U}}function B(){var R=d.documentElement;g=function(){var U=f(arguments),j=d.createElement("script");return j.onreadystatechange=function(){S(U),j.onreadystatechange=null,R.removeChild(j),j=null},R.appendChild(j),U}}function C(){g=function(){var R=f(arguments);return setTimeout(y(S,R),0),R}}var z=Object.getPrototypeOf&&Object.getPrototypeOf(r);z=z&&z.setTimeout?z:r,{}.toString.call(r.process)==="[object process]"?I():E()?M():r.MessageChannel?k():d&&"onreadystatechange"in d.createElement("script")?B():C(),z.setImmediate=g,z.clearImmediate=P})(new Function("return this")()),$t.USE_CACHE=!1,$t.USE_ENUM_INDEX=!1,$t.BASE64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:",Xt.DEFAULT_RESOLVER=dt,Xt.BASE64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:",Bt.count=0,de.i64tmp=function(r){var i,o=new Dt(0,0);return i=o,i}(),Lt.__toStr={}.toString,dr.BYTES_PER_ELEMENT=1,At.queue=new V,Vt.memo=new wt,rt.TOLERANCE=1e-6,rt.EPSILON=1e-10,rt.VERSION="2.0.0",bt.Tvalues=[[],[],[-.5773502691896257,.5773502691896257],[0,-.7745966692414834,.7745966692414834],[-.33998104358485626,.33998104358485626,-.8611363115940526,.8611363115940526],[0,-.5384693101056831,.5384693101056831,-.906179845938664,.906179845938664],[.6612093864662645,-.6612093864662645,-.2386191860831969,.2386191860831969,-.932469514203152,.932469514203152],[0,.4058451513773972,-.4058451513773972,-.7415311855993945,.7415311855993945,-.9491079123427585,.9491079123427585],[-.1834346424956498,.1834346424956498,-.525532409916329,.525532409916329,-.7966664774136267,.7966664774136267,-.9602898564975363,.9602898564975363],[0,-.8360311073266358,.8360311073266358,-.9681602395076261,.9681602395076261,-.3242534234038089,.3242534234038089,-.6133714327005904,.6133714327005904],[-.14887433898163122,.14887433898163122,-.4333953941292472,.4333953941292472,-.6794095682990244,.6794095682990244,-.8650633666889845,.8650633666889845,-.9739065285171717,.9739065285171717],[0,-.26954315595234496,.26954315595234496,-.5190961292068118,.5190961292068118,-.7301520055740494,.7301520055740494,-.8870625997680953,.8870625997680953,-.978228658146057,.978228658146057],[-.1252334085114689,.1252334085114689,-.3678314989981802,.3678314989981802,-.5873179542866175,.5873179542866175,-.7699026741943047,.7699026741943047,-.9041172563704749,.9041172563704749,-.9815606342467192,.9815606342467192],[0,-.2304583159551348,.2304583159551348,-.44849275103644687,.44849275103644687,-.6423493394403402,.6423493394403402,-.8015780907333099,.8015780907333099,-.9175983992229779,.9175983992229779,-.9841830547185881,.9841830547185881],[-.10805494870734367,.10805494870734367,-.31911236892788974,.31911236892788974,-.5152486363581541,.5152486363581541,-.6872929048116855,.6872929048116855,-.827201315069765,.827201315069765,-.9284348836635735,.9284348836635735,-.9862838086968123,.9862838086968123],[0,-.20119409399743451,.20119409399743451,-.3941513470775634,.3941513470775634,-.5709721726085388,.5709721726085388,-.7244177313601701,.7244177313601701,-.8482065834104272,.8482065834104272,-.937273392400706,.937273392400706,-.9879925180204854,.9879925180204854],[-.09501250983763744,.09501250983763744,-.2816035507792589,.2816035507792589,-.45801677765722737,.45801677765722737,-.6178762444026438,.6178762444026438,-.755404408355003,.755404408355003,-.8656312023878318,.8656312023878318,-.9445750230732326,.9445750230732326,-.9894009349916499,.9894009349916499],[0,-.17848418149584785,.17848418149584785,-.3512317634538763,.3512317634538763,-.5126905370864769,.5126905370864769,-.6576711592166907,.6576711592166907,-.7815140038968014,.7815140038968014,-.8802391537269859,.8802391537269859,-.9506755217687678,.9506755217687678,-.9905754753144174,.9905754753144174],[-.0847750130417353,.0847750130417353,-.2518862256915055,.2518862256915055,-.41175116146284263,.41175116146284263,-.5597708310739475,.5597708310739475,-.6916870430603532,.6916870430603532,-.8037049589725231,.8037049589725231,-.8926024664975557,.8926024664975557,-.9558239495713977,.9558239495713977,-.9915651684209309,.9915651684209309],[0,-.16035864564022537,.16035864564022537,-.31656409996362983,.31656409996362983,-.46457074137596094,.46457074137596094,-.600545304661681,.600545304661681,-.7209661773352294,.7209661773352294,-.8227146565371428,.8227146565371428,-.9031559036148179,.9031559036148179,-.96020815213483,.96020815213483,-.9924068438435844,.9924068438435844],[-.07652652113349734,.07652652113349734,-.22778585114164507,.22778585114164507,-.37370608871541955,.37370608871541955,-.5108670019508271,.5108670019508271,-.636053680726515,.636053680726515,-.7463319064601508,.7463319064601508,-.8391169718222188,.8391169718222188,-.912234428251326,.912234428251326,-.9639719272779138,.9639719272779138,-.9931285991850949,.9931285991850949],[0,-.1455618541608951,.1455618541608951,-.2880213168024011,.2880213168024011,-.4243421202074388,.4243421202074388,-.5516188358872198,.5516188358872198,-.6671388041974123,.6671388041974123,-.7684399634756779,.7684399634756779,-.8533633645833173,.8533633645833173,-.9200993341504008,.9200993341504008,-.9672268385663063,.9672268385663063,-.9937521706203895,.9937521706203895],[-.06973927331972223,.06973927331972223,-.20786042668822127,.20786042668822127,-.34193582089208424,.34193582089208424,-.469355837986757,.469355837986757,-.5876404035069116,.5876404035069116,-.6944872631866827,.6944872631866827,-.7878168059792081,.7878168059792081,-.8658125777203002,.8658125777203002,-.926956772187174,.926956772187174,-.9700604978354287,.9700604978354287,-.9942945854823992,.9942945854823992],[0,-.1332568242984661,.1332568242984661,-.26413568097034495,.26413568097034495,-.3903010380302908,.3903010380302908,-.5095014778460075,.5095014778460075,-.6196098757636461,.6196098757636461,-.7186613631319502,.7186613631319502,-.8048884016188399,.8048884016188399,-.8767523582704416,.8767523582704416,-.9329710868260161,.9329710868260161,-.9725424712181152,.9725424712181152,-.9947693349975522,.9947693349975522],[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213]],bt.Cvalues=[[],[],[1,1],[.8888888888888888,.5555555555555556,.5555555555555556],[.6521451548625461,.6521451548625461,.34785484513745385,.34785484513745385],[.5688888888888889,.47862867049936647,.47862867049936647,.23692688505618908,.23692688505618908],[.3607615730481386,.3607615730481386,.46791393457269104,.46791393457269104,.17132449237917036,.17132449237917036],[.4179591836734694,.3818300505051189,.3818300505051189,.27970539148927664,.27970539148927664,.1294849661688697,.1294849661688697],[.362683783378362,.362683783378362,.31370664587788727,.31370664587788727,.22238103445337448,.22238103445337448,.10122853629037626,.10122853629037626],[.3302393550012598,.1806481606948574,.1806481606948574,.08127438836157441,.08127438836157441,.31234707704000286,.31234707704000286,.26061069640293544,.26061069640293544],[.29552422471475287,.29552422471475287,.26926671930999635,.26926671930999635,.21908636251598204,.21908636251598204,.1494513491505806,.1494513491505806,.06667134430868814,.06667134430868814],[.2729250867779006,.26280454451024665,.26280454451024665,.23319376459199048,.23319376459199048,.18629021092773426,.18629021092773426,.1255803694649046,.1255803694649046,.05566856711617366,.05566856711617366],[.24914704581340277,.24914704581340277,.2334925365383548,.2334925365383548,.20316742672306592,.20316742672306592,.16007832854334622,.16007832854334622,.10693932599531843,.10693932599531843,.04717533638651183,.04717533638651183],[.2325515532308739,.22628318026289723,.22628318026289723,.2078160475368885,.2078160475368885,.17814598076194574,.17814598076194574,.13887351021978725,.13887351021978725,.09212149983772845,.09212149983772845,.04048400476531588,.04048400476531588],[.2152638534631578,.2152638534631578,.2051984637212956,.2051984637212956,.18553839747793782,.18553839747793782,.15720316715819355,.15720316715819355,.12151857068790319,.12151857068790319,.08015808715976021,.08015808715976021,.03511946033175186,.03511946033175186],[.2025782419255613,.19843148532711158,.19843148532711158,.1861610000155622,.1861610000155622,.16626920581699392,.16626920581699392,.13957067792615432,.13957067792615432,.10715922046717194,.10715922046717194,.07036604748810812,.07036604748810812,.03075324199611727,.03075324199611727],[.1894506104550685,.1894506104550685,.18260341504492358,.18260341504492358,.16915651939500254,.16915651939500254,.14959598881657674,.14959598881657674,.12462897125553388,.12462897125553388,.09515851168249279,.09515851168249279,.062253523938647894,.062253523938647894,.027152459411754096,.027152459411754096],[.17944647035620653,.17656270536699264,.17656270536699264,.16800410215645004,.16800410215645004,.15404576107681028,.15404576107681028,.13513636846852548,.13513636846852548,.11188384719340397,.11188384719340397,.08503614831717918,.08503614831717918,.0554595293739872,.0554595293739872,.02414830286854793,.02414830286854793],[.1691423829631436,.1691423829631436,.16427648374583273,.16427648374583273,.15468467512626524,.15468467512626524,.14064291467065065,.14064291467065065,.12255520671147846,.12255520671147846,.10094204410628717,.10094204410628717,.07642573025488905,.07642573025488905,.0497145488949698,.0497145488949698,.02161601352648331,.02161601352648331],[.1610544498487837,.15896884339395434,.15896884339395434,.15276604206585967,.15276604206585967,.1426067021736066,.1426067021736066,.12875396253933621,.12875396253933621,.11156664554733399,.11156664554733399,.09149002162245,.09149002162245,.06904454273764123,.06904454273764123,.0448142267656996,.0448142267656996,.019461788229726478,.019461788229726478],[.15275338713072584,.15275338713072584,.14917298647260374,.14917298647260374,.14209610931838204,.14209610931838204,.13168863844917664,.13168863844917664,.11819453196151841,.11819453196151841,.10193011981724044,.10193011981724044,.08327674157670475,.08327674157670475,.06267204833410907,.06267204833410907,.04060142980038694,.04060142980038694,.017614007139152118,.017614007139152118],[.14608113364969041,.14452440398997005,.14452440398997005,.13988739479107315,.13988739479107315,.13226893863333747,.13226893863333747,.12183141605372853,.12183141605372853,.10879729916714838,.10879729916714838,.09344442345603386,.09344442345603386,.0761001136283793,.0761001136283793,.057134425426857205,.057134425426857205,.036953789770852494,.036953789770852494,.016017228257774335,.016017228257774335],[.13925187285563198,.13925187285563198,.13654149834601517,.13654149834601517,.13117350478706238,.13117350478706238,.12325237681051242,.12325237681051242,.11293229608053922,.11293229608053922,.10041414444288096,.10041414444288096,.08594160621706773,.08594160621706773,.06979646842452049,.06979646842452049,.052293335152683286,.052293335152683286,.03377490158481415,.03377490158481415,.0146279952982722,.0146279952982722],[.13365457218610619,.1324620394046966,.1324620394046966,.12890572218808216,.12890572218808216,.12304908430672953,.12304908430672953,.11499664022241136,.11499664022241136,.10489209146454141,.10489209146454141,.09291576606003515,.09291576606003515,.07928141177671895,.07928141177671895,.06423242140852585,.06423242140852585,.04803767173108467,.04803767173108467,.030988005856979445,.030988005856979445,.013411859487141771,.013411859487141771],[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872]],St.THREADS=1,St._init=!1,Kr.basePath="",un.uuid=0,ii.main()}(typeof console<"u"?console:{log:function(){}},e,typeof u<"u"?u:typeof s<"u"?s:typeof self<"u"?self:this),e})})(Ph);var sd=Ph.exports;const Wn=nd(sd);class va{constructor(){this.c0=0,this.c1=0,this.c2=0,this.c3=0}init(t,e,s,a){this.c0=t,this.c1=s,this.c2=-3*t+3*e-2*s-a,this.c3=2*t-2*e+s+a}initCatmullRom(t,e,s,a,h){this.init(e,s,h*(s-t),h*(a-e))}initNonuniformCatmullRom(t,e,s,a,h,u,m){let b=(e-t)/h-(s-t)/(h+u)+(s-e)/u,_=(s-e)/u-(a-e)/(u+m)+(a-s)/m;b*=u,_*=u,this.init(e,s,b,_)}calc(t){const e=t*t,s=e*t;return this.c0+this.c1*t+this.c2*e+this.c3*s}}let Ah=class extends ni{constructor(t=[],e=!1,s="centripetal",a=.5){super(),this.isCatmullRomCurve3d=!0,this.type="CatmullRomCurve3d",this._tmp=new Y,this._px=new va,this._py=new va,this._pz=new va,this._points=t.map(h=>new W(h)),this._closed=e,this._curveType=s,this._tension=a}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 W}get endPoint(){return this._points.length>0?this._points[this._points.length-1]:new W}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 W){const s=e,a=this._points,h=a.length;if(h===0)return s.set(0,0,0);if(h===1)return s.copy(a[0]);const u=(h-(this._closed?0:1))*t;let m=Math.floor(u),b=u-m;this._closed?m+=m>0?0:(Math.floor(Math.abs(m)/h)+1)*h:b===0&&m===h-1&&(m=h-2,b=1);let _,w;this._closed||m>0?_=a[(m-1)%h]:(this._tmp.subVectors(a[0],a[1]).add(a[0]),_=new W(this._tmp.x,this._tmp.y,this._tmp.z));const x=a[m%h],A=a[(m+1)%h];if(this._closed||m+2<h?w=a[(m+2)%h]:(this._tmp.subVectors(a[h-1],a[h-2]).add(a[h-1]),w=new W(this._tmp.x,this._tmp.y,this._tmp.z)),this._curveType==="centripetal"||this._curveType==="chordal"){const T=this._curveType==="chordal"?.5:.25;let L=Math.pow(_.distanceToSquared(x),T),O=Math.pow(x.distanceToSquared(A),T),V=Math.pow(A.distanceToSquared(w),T);O<1e-4&&(O=1),L<1e-4&&(L=O),V<1e-4&&(V=O),this._px.initNonuniformCatmullRom(_.x,x.x,A.x,w.x,L,O,V),this._py.initNonuniformCatmullRom(_.y,x.y,A.y,w.y,L,O,V),this._pz.initNonuniformCatmullRom(_.z,x.z,A.z,w.z,L,O,V)}else this._curveType==="catmullrom"&&(this._px.initCatmullRom(_.x,x.x,A.x,w.x,this._tension),this._py.initCatmullRom(_.y,x.y,A.y,w.y,this._tension),this._pz.initCatmullRom(_.z,x.z,A.z,w.z,this._tension));return s.set(this._px.calc(b),this._py.calc(b),this._pz.calc(b)),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 W(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 W;return s.copy(e),s.applyMatrix4(t),s}),this._boundingBoxNeedsUpdate=!0,this}calculateBoundingBox(){if(this._points.length===0)return new Nt;const t=new Nt;return this._points.forEach(e=>{t.expandByPoint(e)}),t}};class Pn{constructor(t,e,s,a){this._degree=t,this._knots=[...e],this._controlPoints=s.map(h=>({x:h.x,y:h.y,z:h.z})),this._weights=a?[...a]: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 Ds(t,this._degree,this._knots,e,this._weights)}length(){const t=this._controlPoints.map(e=>[e.x,e.y,e.z]);return yh(this._degree,this._knots,t,this._weights)}static byKnotsControlPointsWeights(t,e,s,a){return new Pn(t,e,s,a)}static byPoints(t,e,s="Uniform"){let a;switch(s){case"Chord":a=fh(e,t);break;case"SqrtChord":a=_h(e,t);break;case"Uniform":default:a=gh(e,t.length);break}const h=t.map(m=>({x:m[0],y:m[1],z:m[2]})),u=new Array(h.length).fill(1);return new Pn(e,a,h,u)}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:a}=this.getParameterRange();for(let h=0;h<=t;h++){const u=s+(a-s)*(h/t);e.push(this.point(u))}return e}isClosed(t=1e-6){const{start:e,end:s}=this.getParameterRange(),a=this.point(e),h=this.point(s),u=a[0]-h[0],m=a[1]-h[1],b=a[2]-h[2];return Math.sqrt(u*u+m*m+b*b)<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 Ah(t,!0,"centripetal"),s=Math.max(50,t.length*2);return e.getPoints(s)}static createClosedCurve(t,e,s="Chord"){const a=this.createFitPointsForClosedCurve(t).map(h=>[h.x,h.y,h.z]);return Pn.byPoints(a,e,s)}}class sn extends ni{constructor(t,e,s,a,h){super();const u=arguments.length;if(u<2||u>5)throw Ze.ILLEGAL_PARAMETERS;if(this._degree=3,this._closed=!1,Array.isArray(e)){this._controlPoints=t;let m,b=3,_=!1;if(u>=3&&(Array.isArray(s)?(m=s,u>=4&&(b=a||3),u>=5&&(_=h)):s!==void 0&&(b=s||3,u>=4&&(_=a))),s===void 0&&u>=4&&(b=a||3,u>=5&&(_=h)),this._degree=b,this._closed=_,this._controlPoints.length<this._degree+1)throw Ze.ILLEGAL_PARAMETERS;const w=this.toVerbPoints(this._controlPoints);this._nurbsCurve=Wn.geom.NurbsCurve.byKnotsControlPointsWeights(this._degree,e,w,m)}else{if(this._fitPoints=t,this._knotParameterization=e,u>=3&&(this._degree=s||3),u>=4&&(this._closed=a),this._fitPoints.length<this._degree+1)throw Ze.ILLEGAL_PARAMETERS;const m=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=Wn.geom.NurbsCurve.byPoints(m,this._degree),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints())}}buildCurve(){if(this._fitPoints&&this._knotParameterization){if(this._closed){const t=Pn.createFitPointsForClosedCurve(this._fitPoints),e=this.toNurbsPoints(t);this._nurbsCurve=Wn.geom.NurbsCurve.byPoints(e,this._degree)}else{const t=this.toNurbsPoints(this._fitPoints);this._nurbsCurve=Wn.geom.NurbsCurve.byPoints(t,this._degree)}this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints())}else if(this._controlPoints)if(this._closed){const t=Pn.createFitPointsForClosedCurve(this._controlPoints),e=this.toNurbsPoints(t);this._nurbsCurve=Wn.geom.NurbsCurve.byPoints(e,this._degree),this._controlPoints=this.toGePoints(this._nurbsCurve.controlPoints())}else{const t=this._nurbsCurve.knots(),e=this._nurbsCurve.weights(),s=this.toVerbPoints(this._controlPoints);this._nurbsCurve=Wn.geom.NurbsCurve.byKnotsControlPointsWeights(this._degree,t,s,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 startPoint(){const t=this._nurbsCurve.knots(),e=this._nurbsCurve.degree(),s=t[e],a=this._nurbsCurve.point(s);return new W(a[0],a[1],a[2])}get endPoint(){const t=this._nurbsCurve.knots(),e=this._nurbsCurve.degree(),s=t[t.length-e-1],a=this._nurbsCurve.point(s);return new W(a[0],a[1],a[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,a=this._fitPoints[s];return{x:a.x,y:a.y,z:a.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=[],a=e.knots(),h=this._nurbsCurve.degree(),u=a[h],m=a[a.length-h-1],b=(m-u)/(t-1);for(let _=0;_<t;_++){const w=_===t-1?m:u+_*b,x=e.point(w);s.push(new W(x[0],x[1],x[2]))}return s}getCurvePoints(t,e){const s=[],a=t.knots(),h=a[3],u=(a[a.length-4]-h)/(e-1);for(let m=0;m<e;m++){const b=h+m*u;s.push(t.point(b))}return s}calculateBoundingBox(){const t=this.getPoints(100);return new Nt().setFromPoints(t)}get closed(){return this._closed}set closed(t){this.setClosed(t)}transform(t){return this._boundingBoxNeedsUpdate=!0,this}toNurbsPoints(t){const e=new Array(t.length);return t.forEach((s,a)=>{e[a]=[s.x,s.y,s.z||0]}),e}toVerbPoints(t){const e=new Array(t.length);return t.forEach((s,a)=>{e[a]=[s.x,s.y,s.z||0]}),e}toGePoints(t){const e=new Array(t.length);return t.forEach((s,a)=>{e[a]={x:s[0],y:s[1],z:s[2]}}),e}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 sn(t,e,s,!0)}}var ro=(n=>(n.ClosedFilled="",n.Dot="_DOT",n.DotSmall="_DOTSMALL",n.DotBlank="_DOTBLANK",n.Origin="_ORIGIN",n.Origin2="_ORIGIN2",n.Open="_OPEN",n.Open90="_OPEN90",n.Open30="_OPEN30",n.Closed="_CLOSED",n.Small="_SMALL",n.None="_NONE",n.Oblique="_OBLIQUE",n.BoxFilled="_BOXFILLED",n.Box="_BOXBLANK",n.ClosedBlank="_CLOSEDBLANK",n.DatumBlank="_DATUMBLANK",n.DatumFilled="_DATUMFILLED",n.Integral="_INTEGRAL",n.ArchTick="_ARCHTICK",n))(ro||{}),an=(n=>(n[n.ByBlock=-2]="ByBlock",n[n.ByDIPs=-4]="ByDIPs",n[n.ByLayer=-1]="ByLayer",n[n.ByLineWeightDefault=-3]="ByLineWeightDefault",n[n.LineWeight000=0]="LineWeight000",n[n.LineWeight005=5]="LineWeight005",n[n.LineWeight009=9]="LineWeight009",n[n.LineWeight013=13]="LineWeight013",n[n.LineWeight015=15]="LineWeight015",n[n.LineWeight018=18]="LineWeight018",n[n.LineWeight020=20]="LineWeight020",n[n.LineWeight025=25]="LineWeight025",n[n.LineWeight030=30]="LineWeight030",n[n.LineWeight035=35]="LineWeight035",n[n.LineWeight040=40]="LineWeight040",n[n.LineWeight050=50]="LineWeight050",n[n.LineWeight053=53]="LineWeight053",n[n.LineWeight060=60]="LineWeight060",n[n.LineWeight070=70]="LineWeight070",n[n.LineWeight080=80]="LineWeight080",n[n.LineWeight090=90]="LineWeight090",n[n.LineWeight100=100]="LineWeight100",n[n.LineWeight106=106]="LineWeight106",n[n.LineWeight120=120]="LineWeight120",n[n.LineWeight140=140]="LineWeight140",n[n.LineWeight158=158]="LineWeight158",n[n.LineWeight200=200]="LineWeight200",n[n.LineWeight211=211]="LineWeight211",n))(an||{}),jr=(n=>(n[n.LEFT_TO_RIGHT=1]="LEFT_TO_RIGHT",n[n.RIGHT_TO_LEFT=2]="RIGHT_TO_LEFT",n[n.TOP_TO_BOTTOM=3]="TOP_TO_BOTTOM",n[n.BOTTOM_TO_TOP=4]="BOTTOM_TO_TOP",n[n.BY_STYLE=5]="BY_STYLE",n))(jr||{}),Se=(n=>(n[n.TopLeft=1]="TopLeft",n[n.TopCenter=2]="TopCenter",n[n.TopRight=3]="TopRight",n[n.MiddleLeft=4]="MiddleLeft",n[n.MiddleCenter=5]="MiddleCenter",n[n.MiddleRight=6]="MiddleRight",n[n.BottomLeft=7]="BottomLeft",n[n.BottomCenter=8]="BottomCenter",n[n.BottomRight=9]="BottomRight",n))(Se||{}),no=(n=>(n[n.OPTIMIZED_2D=0]="OPTIMIZED_2D",n[n.WIREFRAME=1]="WIREFRAME",n[n.HIDDEN_LINE=2]="HIDDEN_LINE",n[n.FLAT_SHADED=3]="FLAT_SHADED",n[n.GOURAUD_SHADED=4]="GOURAUD_SHADED",n[n.FLAT_SHADED_WITH_WIREFRAME=5]="FLAT_SHADED_WITH_WIREFRAME",n[n.GOURAUD_SHADED_WITH_WIREFRAME=6]="GOURAUD_SHADED_WITH_WIREFRAME",n))(no||{}),so=(n=>(n[n.NON_ORTHOGRAPHIC=0]="NON_ORTHOGRAPHIC",n[n.TOP=1]="TOP",n[n.BOTTOM=2]="BOTTOM",n[n.FRONT=3]="FRONT",n[n.BACK=4]="BACK",n[n.LEFT=5]="LEFT",n[n.RIGHT=6]="RIGHT",n))(so||{}),io=(n=>(n[n.ONE_DISTANT_LIGHT=0]="ONE_DISTANT_LIGHT",n[n.TWO_DISTANT_LIGHTS=1]="TWO_DISTANT_LIGHTS",n))(io||{});let Eh=class Th{constructor(){this._number=-1,this._id="",this._groupId="",this._centerPoint=new W,this._height=0,this._width=0,this._viewCenter=new W,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 Pe;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 Pe;return t.setFromCenterAndSize(this.viewCenter,{x:this.viewWidth,y:this.viewHeight}),t}clone(){const t=new Th;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}};var In=256,Mh=[],Sl=256,ui;for(;In--;)Mh[In]=(In+256).toString(16).substring(1);function id(n){var t=0,e=11;if(!ui||In+e>Sl*2)for(ui="",In=0;t<Sl;t++)ui+=Mh[Math.random()*256|0];return ui.substring(In,In+++e)}class Wr{constructor(t,e){t=t||{},Jn(t,{objectId:id()}),this._attrs=new Fl(t,e),this._xDataMap=new Map}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)}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(){return this._database?this._database:go().workingDatabase}set database(t){this._database=t}getXData(t){return this._xDataMap.get(t)}setXData(t){for(const e of t)e.code===Va.ExtendedDataRegAppName&&this._xDataMap.set(e.value,t)}removeXData(t){this._xDataMap.delete(t)}createExtensionDictionary(){}close(){}}const _o=class _o extends Wr{constructor(){super(...arguments),this._lineType=mi,this._visibility=!0,this._transparency=new Qi}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 ce,this.database.cecolor&&this._color.copy(this.database.cecolor)),this._color}set color(t){this._color==null&&(this._color=new ce),this._color.copy(t)}get rgbColor(){let t=this.color;if(t.isByLayer){const s=this.getLayerColor();s&&s.RGB!=null&&(t=s)}else t.isByBlock;const e=t.RGB;return e??16777215}get lineType(){return this._lineType}set lineType(t){this._lineType=t||mi}get lineWeight(){return this._lineWeight==null&&(this._lineWeight=this.database.celweight??an.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()}resolveEffectiveProperties(){this._layer==null&&(this._layer=this.database.clayer??"0"),this._color==null&&(this._color=new ce,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??an.ByLayer)}get properties(){return{type:this.type,groups:[this.getGeneralProperties()]}}subGetGripPoints(){return new Array}subGetOsnapPoints(t,e,s,a,h){}transformBy(t){return this}erase(){return this.database.tables.blockTable.removeEntity(this.objectId)}worldDraw(t,e){const s=t.subEntityTraits;s.color=this.color,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 a=this.subWorldDraw(t,e);return this.attachEntityInfo(a),a}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 a;const{type:t,name:e}=this.getLineType(),s=(a=this.database)==null?void 0:a.tables.linetypeTable.getAt(e);return s?{type:t,...s.linetype}:{type:t,name:e,standardFlag:0,description:"",totalPatternLength:0}}getLineType(){if(this.lineType==mi){const t=this.database.tables.layerTable.getAt(this.layer);if(t&&t.linetype)return{type:"ByLayer",name:t.linetype}}else return this.lineType==Hl?{type:"ByBlock",name:xi}:{type:"UserSpecified",name:this.lineType};return{type:"UserSpecified",name:xi}}getLayerColor(){const t=this.database.tables.layerTable.getAt(this.layer);if(t==null)console.error(`The layer with name '${this.layer}' not found in drawing database!`);else return t.color;return null}attachEntityInfo(t){t&&(t.objectId=this.objectId,this.attrs.has("ownerId")&&(t.ownerId=this.ownerId),t.layerName=this.layer,t.visible=this.visibility)}};_o.typeName="Entity";let Le=_o;const yo=class yo extends Le{};yo.typeName="Curve";let Ce=yo;var Hn=(n=>(n[n.SimplePoly=0]="SimplePoly",n[n.FitCurvePoly=1]="FitCurvePoly",n[n.QuadSplinePoly=2]="QuadSplinePoly",n[n.CubicSplinePoly=3]="CubicSplinePoly",n))(Hn||{});const vo=class vo extends Ce{constructor(t,e,s=0,a=!1,h=0,u=0,m=null){super(),this._polyType=t,this._elevation=s;const b=m&&(m==null?void 0:m.length)===e.length,_=e.map((w,x)=>({x:w.x,y:w.y,bulge:b?m[x]:void 0}));this._geo=new Tn(_,a)}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 geometricExtents(){const t=this._geo.box;return new Nt({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 W(s.x,s.y,0))}return t}subGetOsnapPoints(t,e,s,a){switch(t){case Ft.EndPoint:for(let h=0;h<this._geo.numberOfVertices;++h){const u=this._geo.getPointAt(h);a.push(new W(u.x,u.y,0))}break}}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(a=>e.push(new W().set(a.x,a.y,this.elevation))),t.lines(e)}};vo.typeName="2dPolyline";let Si=vo;var kh=(n=>(n[n.Vertex=0]="Vertex",n[n.CurveFitVertex=1]="CurveFitVertex",n[n.SplineFitVertex=8]="SplineFitVertex",n[n.SplineCtlVertex=9]="SplineCtlVertex",n))(kh||{});const bo=class bo extends Le{constructor(){super(),this._position=new W,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 Nt().expandByPoint(this._position)}subGetGripPoints(){const t=new Array;return t.push(this._position),t}subGetOsnapPoints(t,e,s,a){a.push(this._position)}transformBy(t){return this._position.applyMatrix4(t),this}subWorldDraw(t){}};bo.typeName="2dVertex";let Oa=bo;var qs=(n=>(n[n.SimplePoly=0]="SimplePoly",n[n.QuadSplinePoly=1]="QuadSplinePoly",n[n.CubicSplinePoly=2]="CubicSplinePoly",n))(qs||{});const xo=class xo extends Ce{constructor(t,e,s=!1){super(),this._polyType=t,this._geo=new Tn(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 geometricExtents(){const t=this._geo.box;return new Nt({x:t.min.x,y:t.min.y,z:0},{x:t.max.x,y:t.max.y,z:0})}subGetGripPoints(){const t=new Array;for(let e=0;e<this._geo.numberOfVertices;++e){const s=this._geo.getPointAt(e);t.push(new W(s.x,s.y,0))}return t}subGetOsnapPoints(t,e,s,a){switch(t){case Ft.EndPoint:for(let h=0;h<this._geo.numberOfVertices;++h){const u=this._geo.getPointAt(h);a.push(new W(u.x,u.y,0))}break}}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=[];return this._geo.getPoints(100).forEach(a=>e.push(new W().set(a.x,a.y,0))),t.lines(e)}};xo.typeName="3dPolyline";let Ii=xo;var Nh=(n=>(n[n.SimpleVertex=0]="SimpleVertex",n[n.ControlVertex=1]="ControlVertex",n[n.FitVertex=2]="FitVertex",n))(Nh||{});const wo=class wo extends Le{constructor(){super(),this._position=new W,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 Nt().expandByPoint(this._position)}subGetGripPoints(){const t=new Array;return t.push(this._position),t}subGetOsnapPoints(t,e,s,a){a.push(this._position)}transformBy(t){return this._position.applyMatrix4(t),this}subWorldDraw(t){}};wo.typeName="3dVertex";let Ba=wo;const So=class So extends Ce{constructor(t,e,s,a,h=Y.Z_AXIS){super(),this._geo=new to(t,e,s,a,h,Y.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:()=>It.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,a){const h=this.startPoint,u=this.endPoint;switch(t){case Ft.EndPoint:a.push(h),a.push(u);break;case Ft.MidPoint:a.push(this.midPoint);break;case Ft.Nearest:{const m=this._geo.nearestPoint(e);a.push(m)}break;case Ft.Perpendicular:break;case Ft.Tangent:{const m=this._geo.tangentPoints(e);a.push(...m);break}}}transformBy(t){return this._geo.transform(t),this}subWorldDraw(t){return t.circularArc(this._geo)}};So.typeName="Arc";let Pi=So;var Lh=(n=>(n[n.LEFT=0]="LEFT",n[n.CENTER=1]="CENTER",n[n.RIGHT=2]="RIGHT",n[n.ALIGNED=3]="ALIGNED",n[n.MIDDLE=4]="MIDDLE",n[n.FIT=5]="FIT",n))(Lh||{}),Ch=(n=>(n[n.BASELINE=0]="BASELINE",n[n.BOTTOM=1]="BOTTOM",n[n.MIDDLE=2]="MIDDLE",n[n.TOP=3]="TOP",n))(Ch||{});const Io=class Io extends Le{constructor(){super(),this._textString="",this._height=0,this._thickness=1,this._position=new W,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 Nt}subGetOsnapPoints(t,e,s,a){Ft.Insertion===t&&a.push(this._position)}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;let e=t.getAt(this.styleName);return e||(e=t.getAt(Ie)||t.getAt(Ie)),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:jr.BOTTOM_TO_TOP,attachmentPoint:Se.BottomLeft};return t.mtext(s,this.getTextStyle(),e)}};Io.typeName="Text";let $n=Io;var he=(n=>(n[n.Invisible=1]="Invisible",n[n.Const=2]="Const",n[n.Verifiable=4]="Verifiable",n[n.Preset=8]="Preset",n))(he||{}),vr=(n=>(n[n.MultiLine=2]="MultiLine",n[n.ConstMultiLine=4]="ConstMultiLine",n))(vr||{});const Po=class Po extends $n{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){}};Po.typeName="AttDef";let Ai=Po;const Ao=class Ao extends $n{constructor(){super(),this._flags=0,this._mtextFlag=0,this._tag="",this._fieldLength=0,this._lockPositionInBlock=!1,this._isReallyLocked=!1}get isInvisible(){return(this._flags&he.Invisible)!==0}set isInvisible(t){t?this._flags|=he.Invisible:this._flags&=~he.Invisible}get isConst(){return(this._flags&he.Const)!==0}set isConst(t){t?this._flags|=he.Const:this._flags&=~he.Const}get isVerifiable(){return(this._flags&he.Verifiable)!==0}set isVerifiable(t){t?this._flags|=he.Verifiable:this._flags&=~he.Verifiable}get isPreset(){return(this._flags&he.Preset)!==0}set isPreset(t){t?this._flags|=he.Preset:this._flags&=~he.Preset}get isMTextAttribute(){return(this._mtextFlag&vr.MultiLine)!==0}set isMTextAttribute(t){t?this._mtextFlag|=vr.MultiLine:this._mtextFlag&=~vr.MultiLine}get isConstMTextAttribute(){return(this._mtextFlag&vr.ConstMultiLine)!==0}set isConstMTextAttribute(t){t?this._mtextFlag|=vr.ConstMultiLine:this._mtextFlag&=~vr.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}};Ao.typeName="Attrib";let Ei=Ao;const Eo=class Eo extends Le{constructor(t){super(),this._blockName=t,this._position=new W,this._rotation=0,this._normal=new Y(0,0,1),this._scaleFactors=new W(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 blockTableRecord(){return this.database.tables.blockTable.getAt(this._blockName)}appendAttributes(t){this._attribs.set(t.objectId,t),t.ownerId=this.objectId}attributeIterator(){return new si(this._attribs)}get blockTransform(){const t=this.blockTableRecord,e=(t==null?void 0:t.origin)??W.ORIGIN,s=new $e().makeTranslation(-e.x,-e.y,-e.z),a=new $e().makeScale(this._scaleFactors.x,this._scaleFactors.y,this._scaleFactors.z),h=new En().setFromAxisAngle(Y.Z_AXIS,this._rotation),u=new $e().makeRotationFromQuaternion(h),m=new $e().makeTranslation(this._position.x,this._position.y,this._position.z);return new $e().multiplyMatrices(m,u).multiply(a).multiply(s)}subGetOsnapPoints(t,e,s,a,h){Ft.Insertion===t?a.push(this._position):h&&this.subEntityGetOsnapPoints(t,e,s,a,h)}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:a=>{s.textString=a}}})})}return t}get geometricExtents(){const t=new Nt,e=this.blockTableRecord;if(e!=null){const a=e.newIterator();for(const h of a)t.union(h.geometricExtents)}const s=this.blockTransform;return t.applyMatrix4(s),t}subWorldDraw(t){const e=this.blockTableRecord;if(e!=null){const s=this.blockTransform,a=[];return this._attribs.forEach(u=>{if(!u.isInvisible){const m=u.worldDraw(t);m&&a.push(m)}}),ts.instance.draw(t,e,this.rgbColor,a,!0,s,this._normal)}else return t.group([])}subEntityGetOsnapPoints(t,e,s,a,h){var m;if(h===this.objectId)return;const u=(m=this.database)==null?void 0:m.tables.blockTable;if(u!=null){const b=u.getEntityById(h);if(b){const _=[];b.subGetOsnapPoints(t,e,s,_,h);const w=this.blockTransform;_.forEach(x=>{const A=x.clone().applyMatrix4(w);a.push(A)})}}}};Eo.typeName="BlockReference";let Zn=Eo;const To=class To extends Ce{constructor(t,e,s=Y.Z_AXIS){super(),this._geo=new to(t,e,0,Qt,s,Y.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,a){switch(t){case Ft.Center:case Ft.Centroid:a.push(this._geo.center);break;case Ft.Quadrant:a.push(this._geo.getPointAtAngle(0)),a.push(this._geo.getPointAtAngle(Math.PI/2)),a.push(this._geo.getPointAtAngle(Math.PI)),a.push(this._geo.getPointAtAngle(Math.PI/2*3));break;case Ft.Nearest:{const h=this._geo.nearestPoint(e);a.push(h)}break;case Ft.Tangent:{const h=this._geo.tangentPoints(e);a.push(...h);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)}};To.typeName="Circle";let Ti=To;const Mo=class Mo extends Ce{constructor(t,e,s,a,h,u,m){super(),this._geo=new ra(t,e,s,a,h,u,m)}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,a){switch(t){case Ft.EndPoint:this.closed||(a.push(this._geo.startPoint),a.push(this._geo.endPoint));break;case Ft.MidPoint:this.closed||a.push(this._geo.midPoint);break;case Ft.Quadrant:this.closed&&(a.push(this._geo.getPointAtAngle(0)),a.push(this._geo.getPointAtAngle(Math.PI/2)),a.push(this._geo.getPointAtAngle(Math.PI)),a.push(this._geo.getPointAtAngle(Math.PI/2*3)));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:"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)}};Mo.typeName="Ellipse";let Mi=Mo;const ko=class ko extends Le{constructor(){super(),this._vertices=[new W,new W,new W],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 W),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 Nt().setFromPoints(this._vertices)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subGetOsnapPoints(t,e,s,a){switch(t){case Ft.EndPoint:a.push(...this._vertices);break}}subWorldDraw(t){const e=this._vertices.length,s=new Float32Array(e*3),a=new Uint16Array(e*2);for(let h=0;h<e;h++)s[h*3]=this._vertices[h].x,s[h*3+1]=this._vertices[h].y,s[h*3+2]=this._vertices[h].z,this.isEdgeVisibleAt(h)&&(a[h*2]=h,a[h*2+1]=(h+1)%4);return t.lineSegments(s,3,a)}};ko.typeName="Face";let ki=ko;var Xs=(n=>(n[n.UserDefined=0]="UserDefined",n[n.Predefined=1]="Predefined",n[n.Custom=2]="Custom",n))(Xs||{}),Oh=(n=>(n[n.Normal=0]="Normal",n[n.Outer=1]="Outer",n[n.Ignore=2]="Ignore",n))(Oh||{});const No=class No extends Le{constructor(){super(),this._elevation=0,this._geo=new ta,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)}get geometricExtents(){const t=this._geo.box;return new Nt({x:t.min.x,y:t.min.y,z:this._elevation},{x:t.max.x,y:t.max.y,z:this._elevation})}get properties(){return{type:this.type,groups:[this.getGeneralProperties(),{groupName:"pattern",properties:[{name:"patternType",type:"enum",editable:!0,options:[{label:Xs[0],value:0},{label:Xs[1],value:1},{label:Xs[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._geo.area}}]}]}}subWorldDraw(t){const e=t.subEntityTraits;return e.fillType={solidFill:this.isSolidFill,patternAngle:this.patternAngle,definitionLines:this.definitionLines},t.area(this._geo)}};No.typeName="Hatch";let Zs=No;var Bh=(n=>(n[n.MText=0]="MText",n[n.Fcf=1]="Fcf",n[n.BlockReference=2]="BlockReference",n[n.NoAnnotation=3]="NoAnnotation",n))(Bh||{});const Lo=class Lo extends Ce{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 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 W().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 Nt().setFromPoints(this._vertices)}get closed(){return!1}set closed(t){}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 sn(this._vertices,"Uniform"),this._updated=!1)}};Lo.typeName="Leader";let Ni=Lo;var Ft=(n=>(n[n.EndPoint=1]="EndPoint",n[n.MidPoint=2]="MidPoint",n[n.Center=3]="Center",n[n.Node=4]="Node",n[n.Quadrant=5]="Quadrant",n[n.Insertion=7]="Insertion",n[n.Perpendicular=8]="Perpendicular",n[n.Tangent=9]="Tangent",n[n.Nearest=10]="Nearest",n[n.Centroid=11]="Centroid",n))(Ft||{});function ad(n){let t=0;for(const e of n)t|=1<<e-1;return t}function od(n){const t=[];for(const e of Object.values(Ft)){if(typeof e!="number")continue;const s=1<<e-1;n&s&&t.push(e)}return t}function ld(n,t){return n^1<<t-1}function hd(n,t){return(n&1<<t-1)!==0}function ud(n,t){return n|1<<t-1}function cd(n,t){return n&~(1<<t-1)}const Co=class Co extends Ce{constructor(t,e){super(),this._geo=new Kn(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,a){const h=this.startPoint,u=this.endPoint;switch(t){case Ft.EndPoint:a.push(h),a.push(u);break;case Ft.MidPoint:a.push(this.midPoint);break;case Ft.Nearest:{const m=this._geo.project(e);a.push(m)}break;case Ft.Perpendicular:{const m=this._geo.perpPoint(e);a.push(m)}break;case Ft.Tangent:break}}transformBy(t){return this._geo.transform(t),this}subWorldDraw(t){const e=this.startPoint,s=this.endPoint,a=[new W(e.x,e.y,0),new W(s.x,s.y,0)];return t.lines(a)}};Co.typeName="Line";let Qs=Co;const Oo=class Oo extends Le{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 W,this._attachmentPoint=Se.TopLeft,this._direction=new Y(1,0,0),this._drawingDirection=jr.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 Nt}subGetOsnapPoints(t,e,s,a){Ft.Insertion===t&&a.push(this._location)}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:Se[1],value:1},{label:Se[2],value:2},{label:Se[3],value:3},{label:Se[4],value:4},{label:Se[5],value:5},{label:Se[6],value:6},{label:Se[7],value:7},{label:Se[8],value:8},{label:Se[9],value:9}],accessor:{get:()=>this.attachmentPoint,set:t=>{this.attachmentPoint=t}}},{name:"drawingDirection",type:"enum",editable:!0,options:[{label:jr[1],value:1},{label:jr[2],value:2},{label:jr[3],value:3},{label:jr[4],value:4},{label:jr[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;let e=t.getAt(this.styleName);return e||(e=t.getAt(Ie)||t.getAt(Ie)),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)}};Oo.typeName="MText";let Js=Oo;const Bo=class Bo extends Ce{constructor(t,e,s,a,h){super();const u=+(t!==void 0)+ +(e!==void 0)+ +(s!==void 0)+ +(a!==void 0)+ +(h!==void 0);if(u<2||u>5)throw Ze.ILLEGAL_PARAMETERS;!Array.isArray(e)?this._geo=new sn(t,e,s,a):this._geo=new sn(t,e,s,a,h)}get geometricExtents(){return this._geo.box}get closed(){return this._geo.closed}set closed(t){this._geo.closed=t}subGetOsnapPoints(t,e,s,a){switch(t){case Ft.EndPoint:a.push(this._geo.startPoint),a.push(this._geo.endPoint);break}}subWorldDraw(t){const e=this._geo.getPoints(100);return t.lines(e)}};Bo.typeName="Spline";let ti=Bo;const dd=new Y,Ro=class Ro extends Zn{constructor(t,e,s){super(t),this._attachmentPoint=Se.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){return this._cells[t*e].text}setTextString(t,e,s){this._cells[t*e].text=s}isEmpty(t,e){return!this._cells[t*e].text}get geometricExtents(){return new Nt}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 a=new Uint16Array(this.numColumns*this.numRows*8),h=new Float32Array((this.numColumns+1)*(this.numRows+1)*3);let u=0;for(let A=0;A<=this.numRows;A++){e-=A>0?this.rowHeight(A-1):0,s=0;for(let T=0;T<=this.numColumns;T++)s+=T>0?this.columnWidth(T-1):0,h[u++]=s,h[u++]=e,h[u++]=0}const m=[],b=new Array(this.numRows*this.numColumns).fill(!1);s=0,u=0;let _=0;for(let A=0;A<this.numColumns;A++){s+=A>0?this.columnWidth(A-1):0,e=0;for(let T=0;T<this.numRows;T++){e+=T>0?this.rowHeight(T-1):0;const L=this.cell(T*this.numColumns+A);if(_=T*this.numColumns+A,L&&!b[_]){const O=L.borderWidth??1,V=L.borderHeight??1;this.fillVisited(b,_,this.numColumns,O,V),a[u++]=A+T*(this.numColumns+1),a[u++]=A+T*(this.numColumns+1)+O;const F=h[a[u-1]*3]-s,at=A+(T+V)*(this.numColumns+1)+O;A+O==this.numColumns&&(a[u++]=A+T*(this.numColumns+1)+O,a[u++]=at);const ft=-h[at*3+1]-e;if(T+V==this.numRows&&(a[u++]=A+(T+V)*(this.numColumns+1)+V,a[u++]=A+(T+V)*(this.numColumns+1)),a[u++]=A+(T+V)*(this.numColumns+1),a[u++]=A+T*(this.numColumns+1),L.text){const st=L.attachmentPoint||this.attachmentPoint||Se.MiddleCenter,H=this.getTableTextOffset(st,F,ft),dt={text:L.text,height:L.textHeight,width:F,position:dd.set(s,-e,0).clone().add(H),rotation:this.rotation,attachmentPoint:st},it=this.getTextStyle(L);m.push(t.mtext(dt,it))}}}}m.push(t.lineSegments(h,3,a));const w=t.group(m),x=new En;return x.setFromAxisAngle(Y.Z_AXIS,this.rotation),Il.compose(this.position,x,this.scaleFactors),w.applyMatrix(Il),w}fillVisited(t,e,s,a,h){if(h==1&&a==1)t[e]=!0;else for(let u=0;u<a;++u)for(let m=0;m<h;++m)t[e+u+m*s]=!0}getTextStyle(t){const e=this.database.tables.textStyleTable;let s;return t.textStyle&&(s=e.getAt(t.textStyle)),s||(s=e.getAt(Ie)||e.getAt(Ie)),s.textStyle}getTableTextOffset(t,e,s){const a=new Y;switch(t){case 1:break;case 2:a.setX(e/2);break;case 3:a.setX(e);break;case 4:a.setY(-s/2);break;case 5:a.set(e/2,-s/2,0);break;case 6:a.set(e,-s/2,0);break;case 7:a.setY(-s);break;case 8:a.set(e/2,-s,0);break;case 9:a.set(e,-s,0);break}return a}};Ro.typeName="Table";let Li=Ro;const Il=new $e,zo=class zo extends Ce{constructor(){super(),this._elevation=0,this._thickness=1,this._vertices=[new W,new W,new W,new W]}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 Nt().setFromPoints(this._vertices)}subGetGripPoints(){const t=new Array;return t.push(...this._vertices),t}subGetOsnapPoints(t,e,s,a){switch(t){case Ft.EndPoint:a.push(...this._vertices);break}}subWorldDraw(t){const e=new Tn(this._vertices,!0),s=new ta;s.add(e);const a=t.subEntityTraits;return a.fillType={solidFill:!0,patternAngle:0,definitionLines:[]},t.area(s)}};zo.typeName="Trace";let Ci=zo;const Fo=class Fo extends Ce{constructor(){super(),this._elevation=0,this._geo=new Tn}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,a=-1,h=-1){const u=a<0?void 0:a,m=h<0?void 0:h,b={x:e.x,y:e.y,bulge:s,startWidth:u,endWidth:m};this._geo.addVertexAt(t,b)}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 W(e.x,e.y,this._elevation)}get geometricExtents(){const t=this._geo.box;return new Nt({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,a){const h=new Array;for(let u=0;u<this.numberOfVertices;++u)h.push(this.getPoint3dAt(u));switch(t){case Ft.EndPoint:a.push(...h);break}}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(a=>e.push(new W().set(a.x,a.y,this.elevation))),t.lines(e)}};Fo.typeName="Polyline";let Oi=Fo;const Vo=class Vo extends Le{constructor(){super(),this._geo=new W}get position(){return this._geo}set position(t){this._geo.set(t.x,t.y,t.z||0)}get geometricExtents(){return new Nt().expandByPoint(this._geo)}subGetOsnapPoints(t,e,s,a){Ft.Node===t&&a.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})}};Vo.typeName="Point";let Bi=Vo;var Rh=(n=>(n[n.Invalid=0]="Invalid",n[n.Rect=1]="Rect",n[n.Poly=2]="Poly",n))(Rh||{}),zh=(n=>(n[n.Show=1]="Show",n[n.ShowUnAligned=2]="ShowUnAligned",n[n.Clip=4]="Clip",n[n.Transparent=8]="Transparent",n))(zh||{});const Uo=class Uo extends Le{constructor(){super(),this._brightness=50,this._contrast=50,this._fade=0,this._width=0,this._height=0,this._position=new W,this._scale=new te(1,1),this._rotation=0,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 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 Nt;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)}boundaryPath(){const t=[];if(this.isClipped&&this._clipBoundary.length>3){const e=this._width,s=this._height,a=new Pe;a.setFromPoints(this._clipBoundary);const h=new kt;h.setX(this._position.x-a.min.x*e),h.setY(this._position.y-a.min.y*s),this._clipBoundary.forEach(u=>{const m=u.x*e+h.x,b=u.y*s+h.y;t.push(new W(m,b,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){Pl.copy(t[1]);for(let e=1;e<4;e++)ci.copy(t[e]),ci.rotateAround(Pl,this._rotation),t[e].setX(ci.x),t[e].setY(ci.y)}t.push(t[0])}return t}};Uo.typeName="RasterImage";let ei=Uo;const Pl=new kt,ci=new kt,jo=class jo extends Ce{constructor(){super(),this._basePoint=new W,this._unitDir=new Y}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 Nt;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,a){switch(t){case Ft.EndPoint:a.push(this.basePoint);break}}subWorldDraw(t){const e=[];return e.push(this.basePoint),e.push(this._unitDir.clone().multiplyScalar(1e6).add(this._basePoint)),t.lines(e)}};jo.typeName="Ray";let Ri=jo;const Go=class Go extends Le{constructor(){super(),this._centerPoint=new W,this._height=0,this._width=0,this._viewCenter=new W,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 Nt}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 Eh;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 W(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0),new W(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0)])),s.push(e.lines([new W(t.centerPoint.x+t.width/2,t.centerPoint.y-t.height/2,0),new W(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0)])),s.push(e.lines([new W(t.centerPoint.x+t.width/2,t.centerPoint.y+t.height/2,0),new W(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0)])),s.push(e.lines([new W(t.centerPoint.x-t.width/2,t.centerPoint.y+t.height/2,0),new W(t.centerPoint.x-t.width/2,t.centerPoint.y-t.height/2,0)])),s}};Go.typeName="Viewport";let zi=Go;const Wo=class Wo extends ei{subWorldDraw(t){const e=this.boundaryPath(),s=new ta;return s.add(new Tn(e)),t.area(s)}};Wo.typeName="Wipeout";let Fi=Wo;const Do=class Do extends Ce{constructor(){super(),this._basePoint=new W,this._unitDir=new Y}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 Nt;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}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)}};Do.typeName="Xline";let Vi=Do;var Fh=(n=>(n[n.AtLeast=1]="AtLeast",n[n.Exactly=2]="Exactly",n))(Fh||{});const Ho=class Ho extends Le{constructor(){super(),this._dimBlockId=null,this._dimBlockPosition=new W,this._dimensionStyleName=null,this._dimensionText=null,this._textLineSpacingFactor=1,this._textLineSpacingStyle=1,this._textPosition=new W,this._textRotation=0,this._normal=new Y(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 Qn),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()}subWorldDraw(t){if(this.dimBlockId){const s=this.database.tables.blockTable.getAt(this.dimBlockId);if(s){const a=this.computeDimBlockTransform();return ts.instance.draw(t,s,this.rgbColor,[],!1,a,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 a=new W().subVectors(e,t).normalize();return new W(e).addScaledVector(a,s)}findPointOnLine2(t,e,s){const a=t.x+s*Math.cos(e),h=t.y+s*Math.sin(e);return{x:a,y:h}}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():ro.Closed}computeDimBlockTransform(){const t=this.dimBlockId?this.database.tables.blockTable.getAt(this.dimBlockId):void 0,e=(t==null?void 0:t.origin)??W.ORIGIN,s=new $e().makeTranslation(-e.x,-e.y,-e.z),a=new $e().makeTranslation(this._dimBlockPosition.x,this._dimBlockPosition.y,this._dimBlockPosition.z);return new $e().multiplyMatrices(a,s)}};Ho.typeName="Dimension";let Gr=Ho;const qo=class qo extends Gr{constructor(t,e,s,a,h=null,u=null){super(),this._centerPoint=new W().copy(t),this._xLine1Point=new W().copy(e),this._xLine2Point=new W().copy(s),this._arcPoint=new W().copy(a),this.dimensionText=h,this.dimensionStyleName=u}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)}get geometricExtents(){return new Nt}};qo.typeName="3PointAngularDimension";let Ui=qo;const Xo=class Xo extends Gr{constructor(t,e,s,a=null,h=null){super(),this._dimLinePoint=new W().copy(s),this._xLine1Point=new W().copy(t),this._xLine2Point=new W().copy(e),this._oblique=0,this._rotation=0,this.calculateRotation(),a?this.dimensionText=a:this.dimensionText=this._xLine1Point.distanceTo(this._xLine2Point).toFixed(3),this.dimensionStyleName=h}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}get geometricExtents(){return new Nt}get isAppendArrow(){return!1}createDimBlock(t){const e=new ue;e.name=t;const s=this.createLines();s.forEach(m=>e.appendEntity(new Qs(m.startPoint,m.endPoint))),this.createArrows(s[0]).forEach(m=>e.appendEntity(m));const h=s[0].midPoint,u=this.createMText(h,this._rotation);return u&&e.appendEntity(u),e}createMText(t,e){const s=a=>({x:Math.cos(a),y:Math.sin(a),z:0});if(this.dimensionText){const a=new Js;return a.attachmentPoint=Se.MiddleLeft,a.layer="0",a.color=new ce(ct.ByBlock),a.location=t,a.contents=this.dimensionText??"",a.height=10,a.direction=s(e),a.styleName=this.dimensionStyle.dimtxsty,a}}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 a="_CAXARROW",h=new Zn(a);return h.position=t,h.rotation=e,h.scaleFactors={x:s,y:s,z:s},h}createLines(){const t=[],e=this.createExtensionLine(this._xLine1Point),s=this.createExtensionLine(this._xLine2Point),a=this.findIntersectionPoint(e,this._dimLinePoint),h=this.findIntersectionPoint(s,this._dimLinePoint),u=new Kn(a,h);return t.push(u),e.endPoint=a,this.adjustExtensionLine(e),t.push(e),s.endPoint=h,this.adjustExtensionLine(s),t.push(s),t}createExtensionLine(t){const e=this.rotation+Math.PI/2,s=this.findPointOnLine2(t,e,100);return new Kn(t,{...s,z:t.z})}findIntersectionPoint(t,e){const s=t.startPoint,a=t.endPoint,h=new Y().subVectors(a,s).normalize(),m=new Y().subVectors(e,s).dot(h),b=new Y().copy(h).multiplyScalar(m);return new Y().addVectors(s,b)}calculateRotation(){const t=this._xLine1Point,e=this._xLine2Point,s=e.x-t.x,a=e.y-t.y;this._rotation=Math.atan2(a,s)}};Xo.typeName="AlignedDimension";let ji=Xo;const Yo=class Yo extends Gr{constructor(t,e,s,a,h=null,u=null){super(),this._arcPoint=new W().copy(a),this._xLine1Point=new W().copy(e),this._xLine2Point=new W().copy(s),this._centerPoint=new W().copy(t),this.dimensionText=h,this.dimensionStyleName=u}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)}get geometricExtents(){return new Nt}};Yo.typeName="ArcDimension";let Ra=Yo;const Ko=class Ko extends Gr{constructor(t,e,s=0,a=null,h=null){super(),this._chordPoint=new W().copy(t),this._farChordPoint=new W().copy(e),this._extArcStartAngle=0,this._extArcEndAngle=0,this._leaderLength=s,this.dimensionText=a,this.dimensionStyleName=h}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}get geometricExtents(){return new Nt}drawLines(t,e){const s=[],a=e.length;return a==1?s.push(this.drawLine(t,e[0],{firstArrow:this.firstArrowStyle})):a==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(h=>{s.push(this.drawLine(t,h))}),s}drawLine(t,e,s){if(s){const a=[e.startPoint,e.endPoint];return t.lines(a)}else return e.worldDraw(t)}sortLines(t){const e=(s,a)=>s.x!==a.x?s.x-a.x:s.y!==a.y?s.y-a.y:s.z-a.z;t.sort((s,a)=>{const h=e(s.startPoint,a.startPoint);return h!==0?h:e(s.endPoint,a.endPoint)})}};Ko.typeName="DiametricDimension";let Gi=Ko;const $o=class $o extends Gr{constructor(t,e,s=null,a=null){super(),this._definingPoint=new W().copy(t),this._leaderEndPoint=new W().copy(e),this.dimensionText=s,this.dimensionStyleName=a}get definingPoint(){return this._definingPoint}set definingPoint(t){this._definingPoint.copy(t)}get leaderEndPoint(){return this._leaderEndPoint}set leaderEndPoint(t){this._leaderEndPoint.copy(t)}get geometricExtents(){return new Nt}get arrowLineCount(){return 0}};$o.typeName="OrdinateDimension";let Wi=$o;const Zo=class Zo extends Gr{constructor(t,e,s,a=null,h=null){super(),this._center=new W().copy(t),this._chordPoint=new W().copy(e),this._leaderLength=s,this._extArcStartAngle=0,this._extArcEndAngle=0,this.dimensionText=a,this.dimensionStyleName=h}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}get geometricExtents(){return new Nt}getLineArrowStyle(t){return{secondArrow:this.secondArrowStyle}}};Zo.typeName="RadialDimension";let Di=Zo;class na extends Wr{constructor(){super(),this._tabOrder=-1,this._tabSelected=!1,this._blockTableRecordId="",this._layoutName="",this._limits=new Pe,this._extents=new Nt}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)}}class Ys extends Wr{constructor(t){super(),this.database=t,this._recordsByName=new Map,this._recordsById=new Map}get numEntries(){return this._recordsByName.size}setAt(t,e){e.database=this.database,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,a)=>{s===e&&(this._recordsByName.delete(a),this.database.events.dictObjectErased.dispatch({database:this.database,object:e,key:a}))}),!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 si(this._recordsByName)}}class Vh extends Ys{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 Uh extends Wr{constructor(){super(),this._sourceFileName=""}get sourceFileName(){return this._sourceFileName}set sourceFileName(t){this._sourceFileName=t}}var jh=(n=>(n[n.NotApplicable=0]="NotApplicable",n[n.Ignore=1]="Ignore",n[n.Replace=2]="Replace",n[n.XrefMangleName=3]="XrefMangleName",n[n.MangleName=4]="MangleName",n))(jh||{});class ao extends Wr{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 ao;return t._data=((e=this._data)==null?void 0:e.clone())??null,t}getDuplicateRecordCloning(){return 0}}class Gh{constructor(t){this.db=t}createDefaultLayer(){const t=new ce;return t.colorIndex=7,this.db.tables.layerTable.add(new ia({name:"0",standardFlags:0,linetype:"Continuous",lineWeight:0,isOff:!1,color:t,isPlottable:!0}))}createDefaultLineType(){this.db.tables.linetypeTable.add(new $s({name:"ByBlock",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new $s({name:"ByLayer",standardFlag:0,description:"",totalPatternLength:0})),this.db.tables.linetypeTable.add(new $s({name:"Continuous",standardFlag:0,description:"Solid line",totalPatternLength:0}))}createDefaultTextStyle(){this.db.tables.textStyleTable.add(new mo({name:Ie,standardFlag:0,fixedTextHeight:0,widthFactor:1,obliqueAngle:0,textGenerationFlag:0,lastHeight:.2,font:"SimKai",bigFont:"",extendedFont:"SimKai"}))}createDefaultDimStyle(){this.db.tables.dimStyleTable.add(new Qn({name:Ie,dimtxsty:Ie}))}createDefaultLayout(){const t=new na;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 Zs;e.patternName="SOLID";const s=new eo;s.add(new Hs({x:0,y:0},{x:-1,y:.125})),s.add(new Hs({x:-1,y:.125},{x:-1,y:-.125})),s.add(new Hs({x:-1,y:-.125},{x:0,y:0})),e.add(s);const a=new ue;a.name="_CAXARROW",a.appendEntity(e),this.db.tables.blockTable.add(a)}}}var Wh=(n=>(n.ClosedFilled="",n.Dot="_DOT",n.DotSmall="_DOTSMALL",n.DotBlank="_DOTBLANK",n.Origin="_ORIGIN",n.Origin2="_ORIGIN2",n.Open="_OPEN",n.Open90="_OPEN90",n.Open30="_OPEN30",n.Closed="_CLOSED",n.Small="_SMALL",n.None="_NONE",n.Oblique="_OBLIQUE",n.BoxFilled="_BOXFILLED",n.Box="_BOXBLANK",n.ClosedBlank="_CLOSEDBLANK",n.DatumBlank="_DATUMBLANK",n.DatumFilled="_DATUMFILLED",n.Integral="_INTEGRAL",n.ArchTick="_ARCHTICK",n))(Wh||{});class si{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}}}var oo=(n=>(n[n.Undefined=0]="Undefined",n[n.Inches=1]="Inches",n[n.Feet=2]="Feet",n[n.Miles=3]="Miles",n[n.Millimeters=4]="Millimeters",n[n.Centimeters=5]="Centimeters",n[n.Meters=6]="Meters",n[n.Kilometers=7]="Kilometers",n[n.Microinches=8]="Microinches",n[n.Mils=9]="Mils",n[n.Yards=10]="Yards",n[n.Angstroms=11]="Angstroms",n[n.Nanometers=12]="Nanometers",n[n.Microns=13]="Microns",n[n.Decimeters=14]="Decimeters",n[n.Dekameters=15]="Dekameters",n[n.Hectometers=16]="Hectometers",n[n.Gigameters=17]="Gigameters",n[n.Astronomical=18]="Astronomical",n[n.LightYears=19]="LightYears",n[n.Parsecs=20]="Parsecs",n[n.USSurveyFeet=21]="USSurveyFeet",n[n.USSurveyInch=22]="USSurveyInch",n[n.USSurveyYard=23]="USSurveyYard",n[n.USSurveyMile=24]="USSurveyMile",n[n.Max=24]="Max",n))(oo||{});function pd(n){return n==4||n==5||n==6||n==7||n==12||n==13||n==14||n==15||n==16||n==17}function md(n){return n==1||n==2||n==3||n==8||n==9||n==10||n==21}const Dh="Load Database",Al=3e4,gd=12e4,fd=1024*1024;class ze extends Ul{constructor(t,e){super(t.stage),this.data=t,this.progress=e}async run(t){const e=Ua.getInstance().getEntry(Dh),s=Date.now();this.progress&&await this.progress(this.data.progress.value,this.data.stage,"START");const a=await this.data.task(t);return this.progress&&(await this.progress(this.data.progress.value,this.data.stage,"END",a?a.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),a}}class lo{constructor(t={}){this.config=t}async read(t,e,s,a,h){const u={name:Dh,data:{total:0},format(){let w="";return Object.keys(this.data).forEach(x=>{x!=="total"&&(w+=`- ${x}: ${this.data[x]} ms
5
+ `)}),w+=`- total: ${this.data.total} ms`,w}};Ua.getInstance().collect(u),this.progress=a;const m={value:0},b=new jl;b.setCompleteCallback(()=>this.onFinished()),b.setErrorCallback(w=>this.onError(w)),b.addTask(new ze({stage:"START",step:1,progress:m,task:async w=>w},a)),b.addTask(new ze({stage:"PARSE",step:5,progress:m,task:async w=>await this.parse(w,h)},a)),b.addTask(new ze({stage:"FONT",step:5,progress:m,task:async w=>{const x=this.getFonts(w.model);return{model:w.model,data:x}}},a)),b.addTask(new ze({stage:"LTYPE",step:1,progress:m,task:async w=>(this.processLineTypes(w.model,e),w)},a)),b.addTask(new ze({stage:"STYLE",step:1,progress:m,task:async w=>(this.processTextStyles(w.model,e),w)},a)),b.addTask(new ze({stage:"DIMSTYLE",step:1,progress:m,task:async w=>(this.processDimStyles(w.model,e),w)},a)),b.addTask(new ze({stage:"LAYER",step:1,progress:m,task:async w=>(this.processLayers(w.model,e),e.tables.layerTable.numEntries===0&&e.createDefaultData({layer:!0}),w)},a)),b.addTask(new ze({stage:"VPORT",step:1,progress:m,task:async w=>(this.processViewports(w.model,e),w)},a)),b.addTask(new ze({stage:"HEADER",step:1,progress:m,task:async w=>(this.processHeader(w.model,e),w)},a)),b.addTask(new ze({stage:"BLOCK_RECORD",step:5,progress:m,task:async w=>(this.processBlockTables(w.model,e),w)},a)),b.addTask(new ze({stage:"OBJECT",step:5,progress:m,task:async w=>(this.processObjects(w.model,e),e.objects.layout.numEntries===0&&e.createDefaultData({layout:!0}),w)},a)),b.addTask(new ze({stage:"BLOCK",step:5,progress:m,task:async w=>(await this.processBlocks(w.model,e),w)},a)),b.addTask(new ze({stage:"ENTITY",step:100,progress:m,task:async w=>(await this.processEntities(w.model,e,s,m,a),w)},a)),b.addTask(new ze({stage:"END",step:0,progress:m,task:async w=>w},a));const _=Date.now();await b.run(t),u.data.total=Date.now()-_}onError(t){if(this.progress){const e=t.task;this.progress(e.data.progress.value,e.data.stage,"ERROR",void 0,t)}return console.error(`Error occurred in conversion stage '${t.task.name}': `,t.error),t.task.name==="ENTITY"?!1:(this.onFinished(),!0)}onFinished(){this.progress&&(this.progress(100,"END","END"),ts.instance.clear())}getParserWorkerTimeout(t,e){const s=e??this.config.timeout;if(s!=null)return s;const a=Math.ceil(t.byteLength/fd),h=Al+a*1e3;return Math.min(gd,Math.max(Al,h))}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,a,h){throw new Error("Not impelemented yet!")}}var ge,Is,re,oe,Ps,hr,Ee,Ar,ur,gn,As,Es,fn,_n,Ts,Ms,ks,De,Er,Kt,yn,Ns,vt,Te,Ls,Me,Cs,Tr,Mr,cr,Os,vn,He,kr,bn,ba,xa,Nr,Lr,Bs,Rs,Cr,zs,wa,Sa,fe,Or,_e,qe,Ia,Pa,Aa,Ea,Br,Xe,xn,Fs,wn,Ye,Rr,Ke,zr;(ge={})[ge.None=0]="None",ge[ge.Anonymous=1]="Anonymous",ge[ge.NonConstant=2]="NonConstant",ge[ge.Xref=4]="Xref",ge[ge.XrefOverlay=8]="XrefOverlay",ge[ge.ExternallyDependent=16]="ExternallyDependent",ge[ge.ResolvedOrDependent=32]="ResolvedOrDependent",ge[ge.ReferencedXref=64]="ReferencedXref";(Is={})[Is.BYBLOCK=0]="BYBLOCK",Is[Is.BYLAYER=256]="BYLAYER";(re={})[re.Rotated=0]="Rotated",re[re.Aligned=1]="Aligned",re[re.Angular=2]="Angular",re[re.Diameter=3]="Diameter",re[re.Radius=4]="Radius",re[re.Angular3Point=5]="Angular3Point",re[re.Ordinate=6]="Ordinate",re[re.ReferenceIsExclusive=32]="ReferenceIsExclusive",re[re.IsOrdinateXTypeFlag=64]="IsOrdinateXTypeFlag",re[re.IsCustomTextPositionFlag=128]="IsCustomTextPositionFlag";(oe={})[oe.TopLeft=1]="TopLeft",oe[oe.TopCenter=2]="TopCenter",oe[oe.TopRight=3]="TopRight",oe[oe.MiddleLeft=4]="MiddleLeft",oe[oe.MiddleCenter=5]="MiddleCenter",oe[oe.MiddleRight=6]="MiddleRight",oe[oe.BottomLeft=7]="BottomLeft",oe[oe.BottomCenter=8]="BottomCenter",oe[oe.BottomRight=9]="BottomRight";(Ps={})[Ps.AtLeast=1]="AtLeast",Ps[Ps.Exact=2]="Exact";var El=((hr={})[hr.Center=0]="Center",hr[hr.Above=1]="Above",hr[hr.Outside=2]="Outside",hr[hr.JIS=3]="JIS",hr[hr.Below=4]="Below",hr),Dn=((Ee={})[Ee.Feet=0]="Feet",Ee[Ee.None=1]="None",Ee[Ee.Inch=2]="Inch",Ee[Ee.FeetAndInch=3]="FeetAndInch",Ee[Ee.Leading=4]="Leading",Ee[Ee.Trailing=8]="Trailing",Ee[Ee.LeadingAndTrailing=12]="LeadingAndTrailing",Ee),_d=((Ar={})[Ar.None=0]="None",Ar[Ar.Leading=1]="Leading",Ar[Ar.Trailing=2]="Trailing",Ar[Ar.LeadingAndTrailing=3]="LeadingAndTrailing",Ar),yd=((ur={})[ur.Center=0]="Center",ur[ur.Left=1]="Left",ur[ur.Right=2]="Right",ur[ur.OverFirst=3]="OverFirst",ur[ur.OverSecond=4]="OverSecond",ur),vd=((gn={})[gn.Bottom=0]="Bottom",gn[gn.Center=1]="Center",gn[gn.Top=2]="Top",gn),bd=((As={})[As.PatternFill=0]="PatternFill",As[As.SolidFill=1]="SolidFill",As);(Es={})[Es.NonAssociative=0]="NonAssociative",Es[Es.Associative=1]="Associative";(fn={})[fn.Normal=0]="Normal",fn[fn.Outer=1]="Outer",fn[fn.Ignore=2]="Ignore";(_n={})[_n.UserDefined=0]="UserDefined",_n[_n.Predefined=1]="Predefined",_n[_n.Custom=2]="Custom";(Ts={})[Ts.NotAnnotated=0]="NotAnnotated",Ts[Ts.Annotated=1]="Annotated";(Ms={})[Ms.Solid=0]="Solid",Ms[Ms.Gradient=1]="Gradient";(ks={})[ks.TwoColor=0]="TwoColor",ks[ks.OneColor=1]="OneColor";var xd=((De={})[De.Default=0]="Default",De[De.External=1]="External",De[De.Polyline=2]="Polyline",De[De.Derived=4]="Derived",De[De.Textbox=8]="Textbox",De[De.Outermost=16]="Outermost",De),di=((Er={})[Er.Line=1]="Line",Er[Er.Circular=2]="Circular",Er[Er.Elliptic=3]="Elliptic",Er[Er.Spline=4]="Spline",Er),wd=((Kt={})[Kt.Off=0]="Off",Kt[Kt.Solid=1]="Solid",Kt[Kt.Dashed=2]="Dashed",Kt[Kt.Dotted=3]="Dotted",Kt[Kt.ShotDash=4]="ShotDash",Kt[Kt.MediumDash=5]="MediumDash",Kt[Kt.LongDash=6]="LongDash",Kt[Kt.DoubleShortDash=7]="DoubleShortDash",Kt[Kt.DoubleMediumDash=8]="DoubleMediumDash",Kt[Kt.DoubleLongDash=9]="DoubleLongDash",Kt[Kt.DoubleMediumLongDash=10]="DoubleMediumLongDash",Kt[Kt.SparseDot=11]="SparseDot",Kt);wd.Off;(yn={})[yn.Standard=-3]="Standard",yn[yn.ByLayer=-2]="ByLayer",yn[yn.ByBlock=-1]="ByBlock";(Ns={})[Ns.English=0]="English",Ns[Ns.Metric=1]="Metric";(vt={})[vt.PERSPECTIVE_MODE=1]="PERSPECTIVE_MODE",vt[vt.FRONT_CLIPPING=2]="FRONT_CLIPPING",vt[vt.BACK_CLIPPING=4]="BACK_CLIPPING",vt[vt.UCS_FOLLOW=8]="UCS_FOLLOW",vt[vt.FRONT_CLIP_NOT_AT_EYE=16]="FRONT_CLIP_NOT_AT_EYE",vt[vt.UCS_ICON_VISIBILITY=32]="UCS_ICON_VISIBILITY",vt[vt.UCS_ICON_AT_ORIGIN=64]="UCS_ICON_AT_ORIGIN",vt[vt.FAST_ZOOM=128]="FAST_ZOOM",vt[vt.SNAP_MODE=256]="SNAP_MODE",vt[vt.GRID_MODE=512]="GRID_MODE",vt[vt.ISOMETRIC_SNAP_STYLE=1024]="ISOMETRIC_SNAP_STYLE",vt[vt.HIDE_PLOT_MODE=2048]="HIDE_PLOT_MODE",vt[vt.K_ISO_PAIR_TOP=4096]="K_ISO_PAIR_TOP",vt[vt.K_ISO_PAIR_RIGHT=8192]="K_ISO_PAIR_RIGHT",vt[vt.VIEWPORT_ZOOM_LOCKING=16384]="VIEWPORT_ZOOM_LOCKING",vt[vt.UNUSED=32768]="UNUSED",vt[vt.NON_RECTANGULAR_CLIPPING=65536]="NON_RECTANGULAR_CLIPPING",vt[vt.VIEWPORT_OFF=131072]="VIEWPORT_OFF",vt[vt.GRID_BEYOND_DRAWING_LIMITS=262144]="GRID_BEYOND_DRAWING_LIMITS",vt[vt.ADAPTIVE_GRID_DISPLAY=524288]="ADAPTIVE_GRID_DISPLAY",vt[vt.SUBDIVISION_BELOW_SPACING=1048576]="SUBDIVISION_BELOW_SPACING",vt[vt.GRID_FOLLOWS_WORKPLANE=2097152]="GRID_FOLLOWS_WORKPLANE";(Te={})[Te.OPTIMIZED_2D=0]="OPTIMIZED_2D",Te[Te.WIREFRAME=1]="WIREFRAME",Te[Te.HIDDEN_LINE=2]="HIDDEN_LINE",Te[Te.FLAT_SHADED=3]="FLAT_SHADED",Te[Te.GOURAUD_SHADED=4]="GOURAUD_SHADED",Te[Te.FLAT_SHADED_WITH_WIREFRAME=5]="FLAT_SHADED_WITH_WIREFRAME",Te[Te.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";(Me={})[Me.NON_ORTHOGRAPHIC=0]="NON_ORTHOGRAPHIC",Me[Me.TOP=1]="TOP",Me[Me.BOTTOM=2]="BOTTOM",Me[Me.FRONT=3]="FRONT",Me[Me.BACK=4]="BACK",Me[Me.LEFT=5]="LEFT",Me[Me.RIGHT=6]="RIGHT";(Cs={})[Cs.ONE_DISTANT_LIGHT=0]="ONE_DISTANT_LIGHT",Cs[Cs.TWO_DISTANT_LIGHTS=1]="TWO_DISTANT_LIGHTS";(Tr={})[Tr.ByLayer=0]="ByLayer",Tr[Tr.ByBlock=1]="ByBlock",Tr[Tr.ByDictionaryDefault=2]="ByDictionaryDefault",Tr[Tr.ByObject=3]="ByObject";function Pt(n,t,e){return n.code===t&&(e==null||n.value===e)}function zt(n){let t={};n.rewind();let e=n.next(),s=e.code;if(t.x=e.value,(e=n.next()).code!==s+10)throw Error("Expected code for point value to be 20 but got "+e.code+".");return t.y=e.value,(e=n.next()).code!==s+20?n.rewind():t.z=e.value,t}let ho=Symbol();function xt(n,t){return(e,s,a)=>{let h=function(b,_=!1){return b.reduce((w,x)=>{x.pushContext&&w.push({});let A=w[w.length-1];for(let T of typeof x.code=="number"?[x.code]:x.code){let L=A[T]??(A[T]=[]);x.isMultiple&&L.length&&_&&console.warn(`Snippet ${L[L.length-1].name} for code(${T}) is shadowed by ${x.name}`),L.push(x)}return w},[{}])}(n,s.debug),u=!1,m=h.length-1;for(;!Pt(e,0,"EOF");){let b=function(V,F,at){return V.find((ft,st)=>{var H;return st>=at&&((H=ft[F])==null?void 0:H.length)})}(h,e.code,m),_=b==null?void 0:b[e.code],w=_==null?void 0:_[_.length-1];if(!b||!w){s.rewind();break}w.isMultiple||b[e.code].pop();let{name:x,parser:A,isMultiple:T,isReducible:L}=w,O=A==null?void 0:A(e,s,a);if(O===ho){s.rewind();break}if(x){let[V,F]=function(at,ft){let st=ft.split(".");if(!st.length)throw Error("[parserGenerator::getObjectByPath] Invalid empty path");let H=at;for(let dt=0;dt<st.length-1;++dt){let it=Ta(st[dt]),Dt=Ta(st[dt+1]);Object.prototype.hasOwnProperty.call(H,it)||(typeof Dt=="number"?H[it]=[]:H[it]={}),H=H[it]}return[H,Ta(st[st.length-1])]}(a,x);T&&!L?(Object.prototype.hasOwnProperty.call(V,F)||(V[F]=[]),V[F].push(O)):V[F]=O}w.pushContext&&(m-=1),u=!0,e=s.next()}return t&&Object.setPrototypeOf(a,t),u}}function Ta(n){let t=Number.parseInt(n);return Number.isNaN(t)?n:t}function v({value:n}){return n}function D(n,t){return zt(t)}function jt({value:n}){return!!n}let Sd=[{code:1001,name:"xdata",parser:Hh}];function Hh(n,t){var a;if(!Pt(n,1001))throw Error("XData must starts with code 1001");let e={appName:n.value,value:[]};n=t.next();let s=[e.value];for(;!Pt(n,0,"EOF")&&n.code>=1e3;){let h=s[s.length-1];switch(n.code){case 1002:n.value==="{"?s.push([]):(s.pop(),(a=s[s.length-1])==null||a.push(h));break;case 1e3:case 1004:case 1040:case 1070:case 1071:h.push({type:Fr(n.code),value:n.value});break;case 1003:h.push({name:"layer",type:Fr(n.code),value:n.value});break;case 1005:h.push({name:"handle",type:Fr(n.code),value:n.value});break;case 1010:h.push({type:Fr(n.code),value:zt(t)});break;case 1011:h.push({name:"worldSpacePosition",type:Fr(n.code),value:zt(t)});break;case 1012:h.push({name:"worldSpaceDisplacement",type:Fr(n.code),value:zt(t)});break;case 1013:h.push({name:"worldSpaceDirection",type:Fr(n.code),value:zt(t)});break;case 1041:h.push({name:"distance",type:Fr(n.code),value:n.value});break;case 1042:h.push({name:"scale",type:Fr(n.code),value:n.value})}n=t.next()}return t.rewind(),e}function Fr(n){switch(n){case 1e3:case 1003:case 1005:return"string";case 1004:return"hex";case 1040:case 1041:case 1042:return"real";case 1070:return"integer";case 1071:return"long";case 1010:case 1011:case 1012:case 1013:return"point";default:return""}}function An(n,t,e){for(;Pt(n,102);){var s;let a=n.value;if(n=t.next(),!a.startsWith("{")){t.debug&&console.warn(`Invalid application group, expected to start with "{" but received: ${a}`),function(u,m){for(;!Pt(u,102)&&!Pt(u,0,"EOF");)u=m.next()}(n,t),n=t.next();continue}let h=a.slice(1).trim();e.extensions??(e.extensions={}),(s=e.extensions)[h]??(s[h]=[]),function(u,m,b){for(;!Pt(u,102,"}")&&!Pt(u,0,"EOF");)b.push(u),u=m.next()}(n,t,e.extensions[h]),n=t.next()}t.rewind()}let Id=0;function qh(n){if(!n)throw TypeError("entity cannot be undefined or null");n.handle||(n.handle=Id++)}var Pd=[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 Xh(n){return Pd[n]}(Mr={})[Mr.CAST_AND_RECEIVE=0]="CAST_AND_RECEIVE",Mr[Mr.CAST=1]="CAST",Mr[Mr.RECEIVE=2]="RECEIVE",Mr[Mr.IGNORE=3]="IGNORE";let Wt=[...Sd,{code:284,name:"shadowMode",parser:v},{code:390,name:"plotStyleHardId",parser:v},{code:380,name:"plotStyleType",parser:v},{code:440,name:"transparency",parser:v},{code:430,name:"colorName",parser:v},{code:420,name:"color",parser:v},{code:310,name:"proxyEntity",isMultiple:!0,parser:v},{code:92,name:"proxyByte",parser:v},{code:60,name:"isVisible",parser:jt},{code:48,name:"lineTypeScale",parser:v},{code:370,name:"lineweight",parser:v},{code:62,name:"colorIndex",parser(n,t,e){let s=n.value;return s>0&&s<256&&(e.color=Xh(Math.abs(s))),s}},{code:347,name:"materialObjectHardId",parser:v},{code:6,name:"lineType",parser:v},{code:8,name:"layer",parser:v},{code:410,name:"layoutTabName",parser:v},{code:67,name:"isInPaperSpace",parser:jt},{code:100},{code:160},{code:330,name:"ownerBlockRecordSoftId",parser:v},{code:102,parser:An},{code:102,parser:An},{code:102,parser:An},{code:5,name:"handle",parser:v}];function sa(n){return[{code:3,name:n,parser:(t,e,s)=>(s._code3text=(s._code3text??"")+t.value,s._code3text+(s._code1text??"")),isMultiple:!0,isReducible:!0},{code:1,name:n,parser:(t,e,s)=>(s._code1text=t.value,(s._code3text??"")+s._code1text)}]}function Yh(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let Ad={extrusionDirection:{x:0,y:0,z:1}},Ed=[{code:210,name:"extrusionDirection",parser:D},{code:51,name:"endAngle",parser:v},{code:50,name:"startAngle",parser:v},{code:100,name:"subclassMarker",parser:v},{code:40,name:"radius",parser:v},{code:10,name:"center",parser:D},{code:39,name:"thickness",parser:v},{code:100},...Wt];class Kh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Yh(this,"parser",xt(Ed,Ad))}}Yh(Kh,"ForEntityName","ARC");(cr={})[cr.NONE=0]="NONE",cr[cr.INVISIBLE=1]="INVISIBLE",cr[cr.CONSTANT=2]="CONSTANT",cr[cr.VERIFICATION_REQUIRED=4]="VERIFICATION_REQUIRED",cr[cr.PRESET=8]="PRESET";(Os={})[Os.MULTILINE=2]="MULTILINE",Os[Os.CONSTANT_MULTILINE=4]="CONSTANT_MULTILINE";(vn={})[vn.NONE=0]="NONE",vn[vn.MIRRORED_X=2]="MIRRORED_X",vn[vn.MIRRORED_Y=4]="MIRRORED_Y";var Td=((He={})[He.LEFT=0]="LEFT",He[He.CENTER=1]="CENTER",He[He.RIGHT=2]="RIGHT",He[He.ALIGNED=3]="ALIGNED",He[He.MIDDLE=4]="MIDDLE",He[He.FIT=5]="FIT",He),Md=((kr={})[kr.BASELINE=0]="BASELINE",kr[kr.BOTTOM=1]="BOTTOM",kr[kr.MIDDLE=2]="MIDDLE",kr[kr.TOP=3]="TOP",kr);function $h(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let Zh={thickness:0,rotation:0,xScale:1,obliqueAngle:0,styleName:"STANDARD",generationFlag:0,halign:Td.LEFT,valign:Md.BASELINE,extrusionDirection:{x:0,y:0,z:1}},Qh=[{code:73,name:"valign",parser:v},{code:100},{code:210,name:"extrusionDirection",parser:D},{code:11,name:"endPoint",parser:D},{code:72,name:"valign",parser:v},{code:72,name:"halign",parser:v},{code:71,name:"generationFlag",parser:v},{code:7,name:"styleName",parser:v},{code:51,name:"obliqueAngle",parser:v},{code:41,name:"xScale",parser:v},{code:50,name:"rotation",parser:v},{code:1,name:"text",parser:v},{code:40,name:"textHeight",parser:v},{code:10,name:"startPoint",parser:D},{code:39,name:"thickness",parser:v},{code:100,name:"subclassMarker",parser:v},...Wt];class Jh{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){$h(this,"parser",xt(Qh,Zh))}}function tu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}$h(Jh,"ForEntityName","TEXT");let kd={...Zh},Nd=[{code:2},{code:40,name:"annotationScale",parser:v},{code:10,name:"alignmentPoint",parser:D},{code:340,name:"secondaryAttributesHardIds",isMultiple:!0,parser:v},{code:70,name:"numberOfSecondaryAttributes",parser:v},{code:70,name:"isReallyLocked",parser:jt},{code:70,name:"mtextFlag",parser:v},{code:280,name:"isDuplicatedRecord",parser:jt},{code:100},{code:280,name:"isLocked",parser:jt},{code:74,name:"valign",parser:v},{code:73},{code:70,name:"attributeFlag",parser:v},{code:2,name:"tag",parser:v},{code:3,name:"prompt",parser:v},{code:280},{code:100,name:"subclassMarker",parser:v},...Qh.slice(2)];class eu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){tu(this,"parser",xt(Nd,kd))}}tu(eu,"ForEntityName","ATTDEF");(bn={})[bn.LEFT_TO_RIGHT=1]="LEFT_TO_RIGHT",bn[bn.TOP_TO_BOTTOM=3]="TOP_TO_BOTTOM",bn[bn.BY_STYLE=5]="BY_STYLE";function Ld(n,t){let e={};for(let s of n){let a=t(s);a!=null&&(e[a]??(e[a]=[]),e[a].push(s))}return e}function*Hi(n,t=1/0,e=1){for(let s=n;s!==t;s+=e)yield s}function rn(n){return{x:n.x??0,y:n.y??0,z:n.z??0}}function uo(n,t,e){if(Pt(t,102))return An(t,e,n),!0;switch(t.code){case 0:n.type=t.value;break;case 5:n.handle=t.value;break;case 330:n.ownerBlockRecordSoftId=t.value;break;case 67:n.isInPaperSpace=!!t.value;break;case 8:n.layer=t.value;break;case 6:n.lineType=t.value;break;case 347:n.materialObjectHardId=t.value;break;case 62:n.colorIndex=t.value,n.color=Xh(Math.abs(t.value));break;case 370:n.lineweight=t.value;break;case 48:n.lineTypeScale=t.value;break;case 60:n.isVisible=!!t.value;break;case 92:n.proxyByte=t.value;break;case 310:n.proxyEntity=t.value;break;case 100:break;case 420:n.color=t.value;break;case 430:n.transparency=t.value;break;case 390:n.plotStyleHardId=t.value;break;case 284:n.shadowMode=t.value;break;case 1001:n.xdata=Hh(t,e);break;default:return!1}return!0}function ru(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let Cd={textStyle:"STANDARD",extrusionDirection:{x:0,y:0,z:1},rotation:0},fi=[{code:46,name:"annotationHeight",parser:v},{code:101,parser(n,t){(function(e){e.rewind();let s=e.next();if(s.code!==101)throw Error("Bad call for skipEmbeddedObject()");do s=e.next();while(s.code!==0);e.rewind()})(t)}},{code:50,name:"columnHeight",parser:v},{code:49,name:"columnGutter",parser:v},{code:48,name:"columnWidth",parser:v},{code:79,name:"columnAutoHeight",parser:v},{code:78,name:"columnFlowReversed",parser:v},{code:76,name:"columnCount",parser:v},{code:75,name:"columnType",parser:v},{code:441,name:"backgroundFillTransparency",parser:v},{code:63,name:"backgroundFillColor",parser:v},{code:45,name:"fillBoxScale",parser:v},{code:[...Hi(430,440)],name:"backgroundColor",parser:v},{code:[...Hi(420,430)],name:"backgroundColor",parser:v},{code:90,name:"backgroundFill",parser:v},{code:44,name:"lineSpacing",parser:v},{code:73,name:"lineSpacingStyle",parser:v},{code:50,name:"rotation",parser:v},{code:43},{code:42},{code:11,name:"direction",parser:D},{code:210,name:"extrusionDirection",parser:D},{code:7,name:"styleName",parser:v},...sa("text"),{code:72,name:"drawingDirection",parser:v},{code:71,name:"attachmentPoint",parser:v},{code:41,name:"width",parser:v},{code:40,name:"height",parser:v},{code:10,name:"insertionPoint",parser:D},{code:100,name:"subclassMarker",parser:v},...Wt];class nu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){ru(this,"parser",xt(fi,Cd))}}function su(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}ru(nu,"ForEntityName","MTEXT");let Od={thickness:0,rotation:0,scale:1,obliqueAngle:0,textStyle:"STANDARD",textGenerationFlag:0,horizontalJustification:0,verticalJustification:0,extrusionDirection:{x:0,y:0,z:1}},Bd=[...fi.slice(fi.findIndex(({name:n})=>n==="columnType"),fi.findIndex(({name:n})=>n==="subclassMarker")+1),{code:100},{code:0,parser(n){if(!Pt(n,0,"MTEXT"))return ho}},{code:2,name:"definitionTag",parser:v},{code:40,name:"annotationScale",parser:v},{code:10,name:"alignmentPoint",parser:D},{code:340,name:"secondaryAttributesHardId",parser:v},{code:70,name:"numberOfSecondaryAttributes",parser:v},{code:70,name:"isReallyLocked",parser:jt},{code:70,name:"mtextFlag",parser:v},{code:280,name:"isDuplicatedEntriesKeep",parser:jt},{code:100},{code:280,name:"lockPositionFlag",parser:jt},{code:210,name:"extrusionDirection",parser:D},{code:11,name:"alignmentPoint",parser:D},{code:74,name:"verticalJustification",parser:v},{code:72,name:"horizontalJustification",parser:v},{code:71,name:"textGenerationFlag",parser:v},{code:7,name:"textStyle",parser:v},{code:51,name:"obliqueAngle",parser:v},{code:41,name:"scale",parser:v},{code:50,name:"rotation",parser:v},{code:73},{code:70,name:"attributeFlag",parser:v},{code:2,name:"tag",parser:v},{code:280},{code:100,name:"subclassMarker",parser:v},{code:1,name:"text",parser:v},{code:40,name:"textHeight",parser:v},{code:10,name:"startPoint",parser:D},{code:39,name:"thickness",parser:v},{code:100},...Wt];class iu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){su(this,"parser",xt(Bd,Od))}}function au(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}su(iu,"ForEntityName","ATTRIB");let Rd=[...sa("data"),{code:70,name:"version",parser:v},{code:100,name:"subclassMarker",parser:v},...Wt];class ou{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){au(this,"parser",xt(Rd))}}function lu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}au(ou,"ForEntityName","BODY");let zd={thickness:0,extrusionDirection:{x:0,y:0,z:1}},Fd=[{code:210,name:"extrusionDirection",parser:D},{code:40,name:"radius",parser:v},{code:10,name:"center",parser:D},{code:39,name:"thickness",parser:v},{code:100,name:"subclassMarker",parser:v},...Wt];class hu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){lu(this,"parser",xt(Fd,zd))}}lu(hu,"ForEntityName","CIRCLE");class _i{parseEntity(t,e){let s={};for(;!Pt(e,0,"EOF");){if(e.code===0){t.rewind();break}(function(a,h,u){switch(h.code){case 100:a.subclassMarker=h.value;break;case 280:a.version=h.value;break;case 2:a.name=h.value;break;case 10:a.definitionPoint=zt(u);break;case 11:a.textPoint=zt(u);break;case 12:a.insertionPoint=zt(u);break;case 13:a.subDefinitionPoint1=zt(u);break;case 14:a.subDefinitionPoint2=zt(u);break;case 15:a.centerPoint=zt(u);break;case 16:a.arcPoint=zt(u);break;case 70:a.dimensionType=h.value;break;case 71:a.attachmentPoint=h.value;break;case 72:a.textLineSpacingStyle=h.value;break;case 40:a.leaderLength=h.value;break;case 41:a.textLineSpacingFactor=h.value;break;case 42:a.measurement=h.value;break;case 1:a.text=h.value;break;case 50:a.rotationAngle=h.value;break;case 52:a.obliqueAngle=h.value;break;case 53:a.textRotation=h.value;break;case 51:a.ocsRotation=h.value;break;case 210:a.extrusionDirection=zt(u);break;case 3:a.styleName=h.value;break;default:uo(a,h,u)}})(s,e,t),e=t.next()}return s}}function uu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}xa="DIMENSION",(ba="ForEntityName")in _i?Object.defineProperty(_i,ba,{value:xa,enumerable:!0,configurable:!0,writable:!0}):_i[ba]=xa;let Vd={extrusionDirection:{x:0,y:0,z:1}},Ud=[{code:42,name:"endAngle",parser:v},{code:41,name:"startAngle",parser:v},{code:40,name:"axisRatio",parser:v},{code:210,name:"extrusionDirection",parser:D},{code:11,name:"majorAxisEndPoint",parser:D},{code:10,name:"center",parser:D},{code:100,name:"subclassMarker",parser:v},...Wt];class cu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){uu(this,"parser",xt(Ud,Vd))}}uu(cu,"ForEntityName","ELLIPSE");(Nr={})[Nr.First=1]="First",Nr[Nr.Second=2]="Second",Nr[Nr.Third=4]="Third",Nr[Nr.Fourth=8]="Fourth";function du(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let jd=[{code:13,name:"vertices.3",parser:D},{code:12,name:"vertices.2",parser:D},{code:11,name:"vertices.1",parser:D},{code:10,name:"vertices.0",parser:D},{code:100,name:"subclassMarker",parser:v},...Wt];class pu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){du(this,"parser",xt(jd))}}du(pu,"ForEntityName","3DFACE");let mu=[{code:330,name:"sourceBoundaryObjects",parser:v,isMultiple:!0},{code:97,name:"numberOfSourceBoundaryObjects",parser:v}],Gd=[{code:11,name:"end",parser:D},{code:10,name:"start",parser:D}],Wd=[{code:73,name:"isCCW",parser:jt},{code:51,name:"endAngle",parser:v},{code:50,name:"startAngle",parser:v},{code:40,name:"radius",parser:v},{code:10,name:"center",parser:D}],Dd=[{code:73,name:"isCCW",parser:jt},{code:51,name:"endAngle",parser:v},{code:50,name:"startAngle",parser:v},{code:40,name:"lengthOfMinorAxis",parser:v},{code:11,name:"end",parser:D},{code:10,name:"center",parser:D}],Hd=[{code:13,name:"endTangent",parser:D},{code:12,name:"startTangent",parser:D},{code:11,name:"fitDatum",isMultiple:!0,parser:D},{code:97,name:"numberOfFitData",parser:v},{code:10,name:"controlPoints",isMultiple:!0,parser(n,t){let e={...zt(t),weight:1};return(n=t.next()).code===42?e.weight=n.value:t.rewind(),e}},{code:40,name:"knots",isMultiple:!0,parser:v},{code:96,name:"numberOfControlPoints",parser:v},{code:95,name:"numberOfKnots",parser:v},{code:74,name:"isPeriodic",parser:jt},{code:73,name:"splineFlag",parser:v},{code:94,name:"degree",parser:v}],qd={[di.Line]:Gd,[di.Circular]:Wd,[di.Elliptic]:Dd,[di.Spline]:Hd},Xd=[...mu,{code:72,name:"edges",parser(n,t){let e={type:n.value},s=xt(qd[e.type]);if(!s)throw Error(`Invalid edge type ${e.type}`);return s(n=t.next(),t,e),e},isMultiple:!0},{code:93,name:"numberOfEdges",parser:v}],Yd=[...mu,{code:10,name:"vertices",parser(n,t){let e={...zt(t),bulge:0};return(n=t.next()).code===42?e.bulge=n.value:t.rewind(),e},isMultiple:!0},{code:93,name:"numberOfVertices",parser:v},{code:73,name:"isClosed",parser:jt},{code:72,name:"hasBulge",parser:jt}],Kd=[{code:49,name:"dashLengths",parser:v,isMultiple:!0},{code:79,name:"numberOfDashLengths",parser:v},{code:45,name:"offset",parser:Tl},{code:43,name:"base",parser:Tl},{code:53,name:"angle",parser:v}];function Tl(n,t){let e=n.code+1,s={x:n.value,y:1};return(n=t.next()).code===e?s.y=n.value:t.rewind(),s}function gu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let $d={extrusionDirection:{x:0,y:0,z:1},gradientRotation:0,colorTint:0},Zd=[{code:470},{code:463},{code:462,name:"colorTint",parser:v},{code:461,name:"gradientDefinition",parser:v},{code:460,name:"gradientRotation",parser:v},{code:453,name:"numberOfColors",parser:v},{code:452,name:"gradientColorFlag",parser:v},{code:451},{code:450,name:"gradientFlag",parser:v},{code:10,name:"seedPoints",parser:D,isMultiple:!0},{code:99},{code:11,name:"offsetVector",parser:D},{code:98,name:"numberOfSeedPoints",parser:v},{code:47,name:"pixelSize",parser:v},{code:53,name:"definitionLines",parser:function(n,t){let e={};return xt(Kd)(n,t,e),e},isMultiple:!0},{code:78,name:"numberOfDefinitionLines",parser:v},{code:77,name:"isDouble",parser:jt},{code:73,name:"isAnnotated",parser:jt},{code:41,name:"patternScale",parser:v},{code:52,name:"patternAngle",parser:v},{code:76,name:"patternType",parser:v},{code:75,name:"hatchStyle",parser:v},{code:92,name:"boundaryPaths",parser:function(n,t){let e={boundaryPathTypeFlag:n.value},s=e.boundaryPathTypeFlag&xd.Polyline;return n=t.next(),s?xt(Yd)(n,t,e):xt(Xd)(n,t,e),e},isMultiple:!0},{code:91,name:"numberOfBoundaryPaths",parser:v},{code:71,name:"associativity",parser:v},{code:63,name:"patternFillColor",parser:v},{code:70,name:"solidFill",parser:v},{code:2,name:"patternName",parser:v},{code:210,name:"extrusionDirection",parser:D},{code:10,name:"elevationPoint",parser:D},{code:100,name:"subclassMarker",parser:v,pushContext:!0},...Wt];class fu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){gu(this,"parser",xt(Zd,$d))}}gu(fu,"ForEntityName","HATCH");(Lr={})[Lr.ShowImage=1]="ShowImage",Lr[Lr.ShowImageWhenNotAlignedWithScreen=2]="ShowImageWhenNotAlignedWithScreen",Lr[Lr.UseClippingBoundary=4]="UseClippingBoundary",Lr[Lr.TransparencyIsOn=8]="TransparencyIsOn";(Bs={})[Bs.Rectangular=1]="Rectangular",Bs[Bs.Polygonal=2]="Polygonal";(Rs={})[Rs.Outside=0]="Outside",Rs[Rs.Inside=1]="Inside";function _u(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let Qd={brightness:50,contrast:50,fade:0,clippingBoundaryPath:[]},Jd=[{code:290,name:"clipMode",parser:v},{code:14,name:"clippingBoundaryPath",isMultiple:!0,parser:D},{code:91,name:"countBoundaryPoints",parser:v},{code:71,name:"clippingBoundaryType",parser:v},{code:360,name:"imageDefReactorHandle",parser:v},{code:283,name:"fade",parser:v},{code:282,name:"contrast",parser:v},{code:281,name:"brightness",parser:v},{code:280,name:"isClipped",parser:jt},{code:70,name:"flags",parser:v},{code:340,name:"imageDefHandle",parser:v},{code:13,name:"imageSize",parser:D},{code:12,name:"vPixel",parser:D},{code:11,name:"uPixel",parser:D},{code:10,name:"position",parser:D},{code:90,name:"version",parser:v},{code:100,name:"subclassMarker",parser:v},...Wt];class yu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){_u(this,"parser",xt(Jd,Qd))}}function vu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}_u(yu,"ForEntityName","IMAGE");let t0={xScale:1,yScale:1,zScale:1,rotation:0,columnCount:0,rowCount:0,columnSpacing:0,rowSpacing:0,extrusionDirection:{x:0,y:0,z:1}},e0=[{code:210,name:"extrusionDirection",parser:D},{code:45,name:"rowSpacing",parser:v},{code:44,name:"columnSpacing",parser:v},{code:71,name:"rowCount",parser:v},{code:70,name:"columnCount",parser:v},{code:50,name:"rotation",parser:v},{code:43,name:"zScale",parser:v},{code:42,name:"yScale",parser:v},{code:41,name:"xScale",parser:v},{code:10,name:"insertionPoint",parser:D},{code:2,name:"name",parser:v},{code:66,name:"isVariableAttributes",parser:jt},{code:100,name:"subclassMarker",parser:v},...Wt];class bu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){vu(this,"parser",xt(e0,t0))}}function xu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}vu(bu,"ForEntityName","INSERT");let r0={isArrowheadEnabled:!0},n0=[{code:213,name:"offsetFromAnnotation",parser:D},{code:212,name:"offsetFromBlock",parser:D},{code:211,name:"horizontalDirection",parser:D},{code:210,name:"normal",parser:D},{code:340,name:"associatedAnnotation",parser:v},{code:77,name:"byBlockColor",parser:v},{code:10,name:"vertices",parser:D,isMultiple:!0},{code:76,name:"numberOfVertices",parser:v},{code:41,name:"textWidth",parser:v},{code:40,name:"textHeight",parser:v},{code:75,name:"isHooklineExists",parser:jt},{code:74,name:"isHooklineSameDirection",parser:jt},{code:73,name:"leaderCreationFlag",parser:v},{code:72,name:"isSpline",parser:jt},{code:71,name:"isArrowheadEnabled",parser:jt},{code:3,name:"styleName",parser:v},{code:100,name:"subclassMarker",parser:v},...Wt];class wu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){xu(this,"parser",xt(n0,r0))}}xu(wu,"ForEntityName","LEADER");(Cr={})[Cr.TextAnnotation=0]="TextAnnotation",Cr[Cr.ToleranceAnnotation=1]="ToleranceAnnotation",Cr[Cr.BlockReferenceAnnotation=2]="BlockReferenceAnnotation",Cr[Cr.NoAnnotation=3]="NoAnnotation";function Su(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let s0={thickness:0,extrusionDirection:{x:0,y:0,z:1}},i0=[{code:210,name:"extrusionDirection",parser:D},{code:11,name:"endPoint",parser:D},{code:10,name:"startPoint",parser:D},{code:39,name:"thickness",parser:v},{code:100,name:"subclassMarker",parser:v},...Wt];class Iu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Su(this,"parser",xt(i0,s0))}}Su(Iu,"ForEntityName","LINE");(zs={})[zs.IS_CLOSED=1]="IS_CLOSED",zs[zs.PLINE_GEN=128]="PLINE_GEN";let a0={flag:0,elevation:0,thickness:0,extrusionDirection:{x:0,y:0,z:1},vertices:[]},o0={bulge:0},l0=[{code:42,name:"bulge",parser:v},{code:41,name:"endWidth",parser:v},{code:40,name:"startWidth",parser:v},{code:91,name:"id",parser:v},{code:20,name:"y",parser:v},{code:10,name:"x",parser:v}],h0=[{code:210,name:"extrusionDirection",parser:D},{code:10,name:"vertices",isMultiple:!0,parser(n,t){let e={};return xt(l0,o0)(n,t,e),e}},{code:39,name:"thickness",parser:v},{code:38,name:"elevation",parser:v},{code:43,name:"constantWidth",parser:v},{code:70,name:"flag",parser:v},{code:90,name:"numberOfVertices",parser:v},{code:100,name:"subclassMarker",parser:v},...Wt];class yi{parseEntity(t,e){let s={};return xt(h0,a0)(e,t,s),s}}function Pu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Sa="LWPOLYLINE",(wa="ForEntityName")in yi?Object.defineProperty(yi,wa,{value:Sa,enumerable:!0,configurable:!0,writable:!0}):yi[wa]=Sa;let u0=[{code:90,name:"overridenSubEntityCount",parser:v},{code:140,name:"edgeCreaseWeights",parser:v,isMultiple:!0},{code:95,name:"edgeCreaseCount",parser:v},{code:94,parser(n,t,e){e.edgeCount=n.value,e.edgeIndices=[];for(let s=0;s<e.edgeCount;++s){let a=[];n=t.next(),a[0]=n.value,n=t.next(),a[1]=n.value,e.edgeIndices.push(a)}}},{code:93,parser(n,t,e){e.totalFaceIndices=n.value,e.faceIndices=[];let s=[];for(let h=0;h<e.totalFaceIndices&&!Pt(n,0);++h)n=t.next(),s.push(n.value);let a=0;for(;a<s.length;){let h=s[a++],u=[];for(let m=0;m<h;++m)u.push(s[a++]);e.faceIndices.push(u)}}},{code:10,name:"vertices",parser:D,isMultiple:!0},{code:92,name:"verticesCount",parser:v},{code:91,name:"subdivisionLevel",parser:v},{code:40,name:"blendCrease",parser:v},{code:72,name:"isBlendCreased",parser:jt},{code:71,name:"version",parser:v},{code:100,name:"subclassMarker",parser:function({value:n}){return n.trim()},pushContext:!0},...Wt];class Au{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Pu(this,"parser",xt(u0))}}function Eu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Pu(Au,"ForEntityName","MESH");let c0={thickness:0,extrusionDirection:{x:0,y:0,z:1},angle:0},d0=[{code:50,name:"angle",parser:v},{code:210,name:"extrusionDirection",parser:D},{code:39,name:"thickness",parser:v},{code:10,name:"position",parser:D},{code:100,name:"subclassMarker",parser:v},...Wt];class Tu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Eu(this,"parser",xt(d0,c0))}}Eu(Tu,"ForEntityName","POINT");(fe={})[fe.CLOSED_POLYLINE=1]="CLOSED_POLYLINE",fe[fe.CURVE_FIT=2]="CURVE_FIT",fe[fe.SPLINE_FIT=4]="SPLINE_FIT",fe[fe.POLYLINE_3D=8]="POLYLINE_3D",fe[fe.POLYGON_3D=16]="POLYGON_3D",fe[fe.CLOSED_POLYGON=32]="CLOSED_POLYGON",fe[fe.POLYFACE=64]="POLYFACE",fe[fe.CONTINUOUS=128]="CONTINUOUS";var pi=((Or={})[Or.NONE=0]="NONE",Or[Or.QUADRATIC=5]="QUADRATIC",Or[Or.CUBIC=6]="CUBIC",Or[Or.BEZIER=8]="BEZIER",Or),p0=((_e={})[_e.CREATED_BY_CURVE_FIT=1]="CREATED_BY_CURVE_FIT",_e[_e.TANGENT_DEFINED=2]="TANGENT_DEFINED",_e[_e.NOT_USED=4]="NOT_USED",_e[_e.CREATED_BY_SPLINE_FIT=8]="CREATED_BY_SPLINE_FIT",_e[_e.SPLINE_CONTROL_POINT=16]="SPLINE_CONTROL_POINT",_e[_e.FOR_POLYLINE=32]="FOR_POLYLINE",_e[_e.FOR_POLYGON=64]="FOR_POLYGON",_e[_e.POLYFACE=128]="POLYFACE",_e);function Mu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let m0={startWidth:0,endWidth:0,bulge:0},g0=[{code:91,name:"id",parser:v},{code:[...Hi(71,75)],name:"faces",isMultiple:!0,parser:v},{code:50,name:"tangentDirection",parser:v},{code:70,name:"flag",parser:v},{code:42,name:"bulge",parser:v},{code:41,name:"endWidth",parser:v},{code:40,name:"startWidth",parser:v},{code:30,name:"z",parser:v},{code:20,name:"y",parser:v},{code:10,name:"x",parser:v},{code:100,name:"subclassMarker",parser:v},{code:100},...Wt];class co{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Mu(this,"parser",xt(g0,m0))}}function ku(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Mu(co,"ForEntityName","VERTEX");let f0={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:[]},_0=[{code:0,name:"vertices",isMultiple:!0,parser:(n,t)=>Pt(n,0,"VERTEX")?(n=t.next(),new co().parseEntity(t,n)):ho},{code:210,name:"extrusionDirection",parser:D},{code:75,name:"smoothType",parser:v},{code:74,name:"surfaceNDensity",parser:v},{code:73,name:"surfaceMDensity",parser:v},{code:72,name:"meshNVertexCount",parser:v},{code:71,name:"meshMVertexCount",parser:v},{code:41,name:"endWidth",parser:v},{code:40,name:"startWidth",parser:v},{code:70,name:"flag",parser:v},{code:39,name:"thickness",parser:v},{code:30,name:"elevation",parser:v},{code:20},{code:10},{code:66},{code:100,name:"subclassMarker",parser:v},...Wt];class Nu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){ku(this,"parser",xt(_0,f0))}}function Lu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}ku(Nu,"ForEntityName","POLYLINE");let y0=[{code:11,name:"direction",parser:D},{code:10,name:"position",parser:D},{code:100,name:"subclassMarker",parser:v},...Wt];class Cu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Lu(this,"parser",xt(y0))}}function Ou(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Lu(Cu,"ForEntityName","RAY");let v0=[...sa("data"),{code:70,name:"version",parser:v},{code:100,name:"subclassMarker",parser:v},...Wt];class Bu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Ou(this,"parser",xt(v0))}}function Ru(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Ou(Bu,"ForEntityName","REGION");let b0={vertices:[],backLineVertices:[]},x0=[{code:360,name:"geometrySettingHardId",parser:v},{code:12,name:"backLineVertices",isMultiple:!0,parser:D},{code:93,name:"numberOfBackLineVertices",parser:v},{code:11,name:"vertices",isMultiple:!0,parser:D},{code:92,name:"verticesCount",parser:v},{code:[63,411],name:"indicatorColor",parser:v},{code:70,name:"indicatorTransparency",parser:v},{code:41,name:"bottomHeight",parser:v},{code:40,name:"topHeight",parser:v},{code:10,name:"verticalDirection",parser:D},{code:1,name:"name",parser:v},{code:91,name:"flag",parser:v},{code:90,name:"state",parser:v},{code:100,name:"subclassMarker",parser:v},...Wt];class zu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Ru(this,"parser",xt(x0,b0))}}function Fu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Ru(zu,"ForEntityName","SECTION");let w0={points:[],thickness:0,extrusionDirection:{x:0,y:0,z:1}},S0=[{code:210,name:"extrusionDirection",parser:D},{code:39,name:"thickness",parser:v},{code:[...Hi(10,14)],name:"points",isMultiple:!0,parser:D},{code:100,name:"subclassMarker",parser:v},...Wt];class Vu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Fu(this,"parser",xt(S0,w0))}}function Uu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Fu(Vu,"ForEntityName","SOLID");let I0=[{code:350,name:"historyObjectSoftId",parser:v},{code:100,name:"subclassMarker",parser:v},...sa("data"),{code:70,name:"version",parser:v},{code:100},...Wt];class ju{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Uu(this,"parser",xt(I0))}}Uu(ju,"ForEntityName","3DSOLID");(qe={})[qe.NONE=0]="NONE",qe[qe.CLOSED=1]="CLOSED",qe[qe.PERIODIC=2]="PERIODIC",qe[qe.RATIONAL=4]="RATIONAL",qe[qe.PLANAR=8]="PLANAR",qe[qe.LINEAR=16]="LINEAR";function Gu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let P0={knotTolerance:1e-6,controlTolerance:1e-6,fitTolerance:1e-9,knotValues:[],controlPoints:[],fitPoints:[]},A0=[{code:11,name:"fitPoints",isMultiple:!0,parser:D},{code:10,name:"controlPoints",isMultiple:!0,parser:D},{code:41,name:"weights",isMultiple:!0,parser:v},{code:40,name:"knots",isMultiple:!0,parser:v},{code:13,name:"endTangent",parser:D},{code:12,name:"startTangent",parser:D},{code:44,name:"fitTolerance",parser:v},{code:43,name:"controlTolerance",parser:v},{code:42,name:"knotTolerance",parser:v},{code:74,name:"numberOfFitPoints",parser:v},{code:73,name:"numberOfControlPoints",parser:v},{code:72,name:"numberOfKnots",parser:v},{code:71,name:"degree",parser:v},{code:70,name:"flag",parser:v},{code:210,name:"normal",parser:D},{code:100,name:"subclassMarker",parser:v},...Wt];class Wu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Gu(this,"parser",xt(A0,P0))}}Gu(Wu,"ForEntityName","SPLINE");class vi{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=rn(zt(t)),e=t.lastReadGroup;break;case 11:s.directionVector=rn(zt(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(a,h){let u=!1,m=!1,b={};for(;!a.isEOF()&&h.code!==0&&!m;)switch(h.code){case 171:if(u){m=!0;continue}b.cellType=h.value,u=!0,h=a.next();break;case 172:b.flagValue=h.value,h=a.next();break;case 173:b.mergedValue=h.value,h=a.next();break;case 174:b.autoFit=h.value,h=a.next();break;case 175:b.borderWidth=h.value,h=a.next();break;case 176:b.borderHeight=h.value,h=a.next();break;case 91:b.overrideFlag=h.value,h=a.next();break;case 178:b.virtualEdgeFlag=h.value,h=a.next();break;case 145:b.rotation=h.value,h=a.next();break;case 345:b.fieldObjetId=h.value,h=a.next();break;case 340:b.blockTableRecordId=h.value,h=a.next();break;case 146:b.blockScale=h.value,h=a.next();break;case 177:b.blockAttrNum=h.value,h=a.next();break;case 7:b.textStyle=h.value,h=a.next();break;case 140:b.textHeight=h.value,h=a.next();break;case 170:b.attachmentPoint=h.value,h=a.next();break;case 92:b.extendedCellFlags=h.value,h=a.next();break;case 285:b.rightBorderVisibility=!!(h.value??!0),h=a.next();break;case 286:b.bottomBorderVisibility=!!(h.value??!0),h=a.next();break;case 288:b.leftBorderVisibility=!!(h.value??!0),h=a.next();break;case 289:b.topBorderVisibility=!!(h.value??!0),h=a.next();break;case 301:(function(_,w,x){for(;x.code!==304;)switch(x.code){case 301:case 93:case 90:case 94:x=w.next();break;case 1:_.text=x.value,x=w.next();break;case 300:_.attrText=x.value,x=w.next();break;case 302:_.text=x.value?x.value:_.text,x=w.next();break;default:console.log(`Ignore code: ${x.code}, value: ${x.value}`),x=w.next()}})(b,a,h),h=a.next();break;default:return b}return u=!1,m=!1,b}(t,e)),e=t.lastReadGroup;break;default:uo(s,e,t),e=t.next()}}return s}}function Du(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Pa="ACAD_TABLE",(Ia="ForEntityName")in vi?Object.defineProperty(vi,Ia,{value:Pa,enumerable:!0,configurable:!0,writable:!0}):vi[Ia]=Pa;let E0=[{code:11,name:"xAxisDirection",parser:D},{code:210,name:"extrusionDirection",parser:D},{code:1,name:"text",parser:v},{code:10,name:"position",parser:D},{code:3,name:"styleName",parser:v},{code:100,name:"subclassMarker",parser:v},...Wt];class Hu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Du(this,"parser",xt(E0))}}Du(Hu,"ForEntityName","TOLERANCE");class bi{parseEntity(t,e){let s={};for(;e!=="EOF";){if(e.code===0){t.rewind();break}!function(a,h,u){if(u==="EOF")return!1;switch(u.code){case 0:return!1;case 8:a.layer=u.value;break;case 100:a.subclassMarker=u.value;break;case 10:a.viewportCenter=rn(zt(h));break;case 40:a.width=u.value;break;case 41:a.height=u.value;break;case 68:a.status=u.value;break;case 69:a.viewportId=u.value;break;case 12:a.displayCenter=zt(h);break;case 13:a.snapBase=zt(h);break;case 14:a.snapSpacing=zt(h);break;case 15:a.gridSpacing=zt(h);break;case 16:a.viewDirection=rn(zt(h));break;case 17:a.targetPoint=rn(zt(h));break;case 42:a.perspectiveLensLength=u.value;break;case 43:a.frontClipZ=u.value;break;case 44:a.backClipZ=u.value;break;case 45:a.viewHeight=u.value;break;case 50:a.snapAngle=u.value;break;case 51:a.viewTwistAngle=u.value;break;case 72:a.circleZoomPercent=u.value;break;case 331:a.frozenLayerIds??(a.frozenLayerIds=[]),a.frozenLayerIds.push(u.value);break;case 90:a.statusBitFlags=u.value;break;case 340:a.clippingBoundaryId=u.value;break;case 1:a.sheetName=u.value;break;case 281:a.renderMode=u.value;break;case 71:a.ucsPerViewport=u.value;break;case 110:a.ucsOrigin=rn(zt(h));break;case 111:a.ucsXAxis=rn(zt(h));break;case 112:a.ucsYAxis=rn(zt(h));break;case 345:a.ucsId=u.value;break;case 346:a.ucsBaseId=u.value;break;case 79:a.orthographicType=u.value;break;case 146:a.elevation=u.value;break;case 170:a.shadePlotMode=u.value;break;case 61:a.majorGridFrequency=u.value;break;case 332:a.backgroundId=u.value;break;case 333:a.shadePlotId=u.value;break;case 348:a.visualStyleId=u.value;break;case 292:a.isDefaultLighting=!!u.value;break;case 282:a.defaultLightingType=u.value;break;case 141:a.brightness=u.value;break;case 142:a.contrast=u.value;break;case 63:case 421:case 431:a.ambientLightColor=u.value;break;case 361:a.sunId=u.value;break;case 335:case 343:case 344:case 91:a.softPointer=u.value}return!0}(s,t,e)&&uo(s,e,t),e=t.next()}return s}}Ea="VIEWPORT",(Aa="ForEntityName")in bi?Object.defineProperty(bi,Aa,{value:Ea,enumerable:!0,configurable:!0,writable:!0}):bi[Aa]=Ea;(Br={})[Br.ShowImage=1]="ShowImage",Br[Br.ShowImageWhenNotAligned=2]="ShowImageWhenNotAligned",Br[Br.UseClippingBoundary=4]="UseClippingBoundary",Br[Br.Transparency=8]="Transparency";function qu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}let T0={brightness:50,constrast:50,fade:0},M0=[{code:14,name:"boundary",isMultiple:!0,parser:D},{code:91,name:"numberOfVertices",parser:v},{code:71,name:"boundaryType",parser:v},{code:360,name:"imageDefReactorHardId",parser:v},{code:283,name:"fade",parser:v},{code:282,name:"contrast",parser:v},{code:281,name:"brightness",parser:v},{code:280,name:"isClipping",parser:jt},{code:70,name:"displayFlag",parser:v},{code:340,name:"imageDefHardId",parser:v},{code:13,name:"imageSize",parser:D},{code:12,name:"vDirection",parser:D},{code:11,name:"uDirection",parser:D},{code:10,name:"position",parser:D},{code:90,name:"classVersion",parser:v},{code:100,name:"subclassMarker",parser:v},...Wt];class Xu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){qu(this,"parser",xt(M0,T0))}}function Yu(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}qu(Xu,"ForEntityName","WIPEOUT");let k0=[{code:11,name:"direction",parser:D},{code:10,name:"position",parser:D},{code:100,name:"subclassMarker",parser:v},...Wt];class Ku{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){Yu(this,"parser",xt(k0))}}function $u(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}Yu(Ku,"ForEntityName","XLINE");let N0={},L0=[{code:170,name:"multileaderType",parser:v},{code:291,name:"doglegEnabled",parser:jt},{code:40,name:"doglegLength",parser:v},{code:172,name:"contentType",parser:v},{code:3,name:"textContent",parser:v},{code:12,name:"textAnchor",parser:D},{code:344,name:"blockHandle",parser:v},{code:15,name:"blockPosition",parser:D},{code:302,name:"leaderSections",parser:function(n,t,e){let s,a={leaderLines:[]};for(;t.hasNext()&&(s=t.next()).code!==303;)switch(s.code){case 10:a.landingPoint=(s.value,zt(t));break;case 11:a.doglegVector=(s.value,zt(t));break;case 40:a.doglegLength=s.value;break;case 304:a.leaderLines.push(function(h,u,m){let b,_={vertices:[]};for(;u.hasNext()&&(b=u.next()).code!==305;)b.code===10&&_.vertices.push((b.value,zt(u)));return _}(0,t))}return a},isMultiple:!0},...Wt];class Zu{parseEntity(t,e){let s={};return this.parser(e,t,s),s}constructor(){$u(this,"parser",xt(L0,N0))}}$u(Zu,"ForEntityName","MULTILEADER");let C0=Object.fromEntries([Kh,eu,iu,ou,hu,_i,cu,pu,yu,bu,wu,Iu,yi,Au,nu,Zu,Tu,Nu,Cu,Bu,zu,Vu,ju,Wu,vi,Jh,Hu,fu,co,bi,Xu,Ku].map(n=>[n.ForEntityName,new n]));function Qu(n,t){let e=[];for(;!Pt(n,0,"EOF");){if(n.code===0){if(n.value==="ENDBLK"||n.value==="ENDSEC"){t.rewind();break}let s=C0[n.value];if(s){let a=n.value;n=t.next();let h=s.parseEntity(t,n);h.type=a,qh(h),e.push(h)}else t.debug&&console.warn(`Unsupported ENTITY type: ${n.value}`)}n=t.next()}return e}function O0(n,t){let e={};for(;!Pt(n,0,"EOF")&&!Pt(n,0,"ENDSEC");){if(Pt(n,0,"BLOCK")){let s=B0(n=t.next(),t);qh(s),s.name&&(e[s.name]=s)}n=t.next()}return e}function B0(n,t){let e={};for(;!Pt(n,0,"EOF");){if(Pt(n,0,"ENDBLK")){for(n=t.next();!Pt(n,0,"EOF");){if(Pt(n,100,"AcDbBlockEnd"))return e;n=t.next()}break}switch(n.code){case 1:e.xrefPath=n.value;break;case 2:e.name=n.value;break;case 3:e.name2=n.value;break;case 5:e.handle=n.value;break;case 8:e.layer=n.value;break;case 10:e.position=zt(t);break;case 67:e.paperSpace=!!n.value&&n.value==1;break;case 70:n.value!==0&&(e.type=n.value);break;case 100:break;case 330:e.ownerHandle=n.value;break;case 0:e.entities=Qu(n,t)}n=t.next()}return e}function R0(n,t){let e=null,s={};for(;!Pt(n,0,"EOF")&&!Pt(n,0,"ENDSEC");)n.code===9?e=n.value:n.code===10?s[e]=zt(t):s[e]=n.value,n=t.next();return s}(Xe={})[Xe.NOT_APPLICABLE=0]="NOT_APPLICABLE",Xe[Xe.KEEP_EXISTING=1]="KEEP_EXISTING",Xe[Xe.USE_CLONE=2]="USE_CLONE",Xe[Xe.XREF_VALUE_NAME=3]="XREF_VALUE_NAME",Xe[Xe.VALUE_NAME=4]="VALUE_NAME",Xe[Xe.UNMANGLE_NAME=5]="UNMANGLE_NAME";let po=[{code:330,name:"ownerObjectId",parser:v},{code:102,parser:An},{code:102,parser:An},{code:102,parser:An},{code:5,name:"handle",parser:v}],z0=[{code:3,name:"entries",parser:(n,t)=>{let e={name:n.value};return(n=t.next()).code===350?e.objectSoftId=n.value:n.code===360?e.objectHardId=n.value:t.rewind(),e},isMultiple:!0},{code:281,name:"recordCloneFlag",parser:v},{code:280,name:"isHardOwned",parser:jt},{code:100,name:"subclassMarker",parser:v},...po],F0=[{code:330,name:"imageDefReactorIdSoft",isMultiple:!0,parser:v},{code:90,name:"version",parser:v},{code:1,name:"fileName",parser:v},{code:10,name:"size",parser:D},{code:11,name:"sizeOfOnePixel",parser:D},{code:280,name:"isLoaded",parser:v},{code:281,name:"resolutionUnits",parser:v},{code:100,name:"subclassMarker",parser:v}];(xn={})[xn.NOUNIT=0]="NOUNIT",xn[xn.CENTIMETERS=2]="CENTIMETERS",xn[xn.INCH=5]="INCH";(Fs={})[Fs.PSLTSCALE=1]="PSLTSCALE",Fs[Fs.LIMCHECK=2]="LIMCHECK";(wn={})[wn.INCHES=0]="INCHES",wn[wn.MILLIMETERS=1]="MILLIMETERS",wn[wn.PIXELS=2]="PIXELS";(Ye={})[Ye.LAST_SCREEN_DISPLAY=0]="LAST_SCREEN_DISPLAY",Ye[Ye.DRAWING_EXTENTS=1]="DRAWING_EXTENTS",Ye[Ye.DRAWING_LIMITS=2]="DRAWING_LIMITS",Ye[Ye.VIEW_SPECIFIED=3]="VIEW_SPECIFIED",Ye[Ye.WINDOW_SPECIFIED=4]="WINDOW_SPECIFIED",Ye[Ye.LAYOUT_INFORMATION=5]="LAYOUT_INFORMATION";(Rr={})[Rr.AS_DISPLAYED=0]="AS_DISPLAYED",Rr[Rr.WIREFRAME=1]="WIREFRAME",Rr[Rr.HIDDEN=2]="HIDDEN",Rr[Rr.RENDERED=3]="RENDERED";(Ke={})[Ke.DRAFT=0]="DRAFT",Ke[Ke.PREVIEW=1]="PREVIEW",Ke[Ke.NORMAL=2]="NORMAL",Ke[Ke.PRESENTATION=3]="PRESENTATION",Ke[Ke.MAXIMUM=4]="MAXIMUM",Ke[Ke.CUSTOM=5]="CUSTOM";let Ju=[{code:333,name:"shadePlotId",parser:v},{code:149,name:"imageOriginY",parser:v},{code:148,name:"imageOriginX",parser:v},{code:147,name:"scaleFactor",parser:v},{code:78,name:"shadePlotCustomDPI",parser:v},{code:77,name:"shadePlotResolution",parser:v},{code:76,name:"shadePlotMode",parser:v},{code:75,name:"standardScaleType",parser:v},{code:7,name:"currentStyleSheet",parser:v},{code:74,name:"plotType",parser:v},{code:73,name:"plotRotation",parser:v},{code:72,name:"plotPaperUnit",parser:v},{code:70,name:"layoutFlag",parser:v},{code:143,name:"printScaleDenominator",parser:v},{code:142,name:"printScaleNumerator",parser:v},{code:141,name:"windowAreaYMax",parser:v},{code:140,name:"windowAreaXMax",parser:v},{code:49,name:"windowAreaYMin",parser:v},{code:48,name:"windowAreaXMin",parser:v},{code:47,name:"plotOriginY",parser:v},{code:46,name:"plotOriginX",parser:v},{code:45,name:"paperHeight",parser:v},{code:44,name:"paperWidth",parser:v},{code:43,name:"marginTop",parser:v},{code:42,name:"marginRight",parser:v},{code:41,name:"marginBottom",parser:v},{code:40,name:"marginLeft",parser:v},{code:6,name:"plotViewName",parser:v},{code:4,name:"paperSize",parser:v},{code:2,name:"configName",parser:v},{code:1,name:"pageSetupName",parser:v},{code:100,name:"subclassMarker",parser:v},...po],V0=[{code:346,name:"orthographicUcsId",parser:v},{code:345,name:"namedUcsId",parser:v},{code:331,name:"viewportId",parser:v},{code:330,name:"paperSpaceTableId",parser:v},{code:76,name:"orthographicType",parser:v},{code:17,name:"ucsYAxis",parser:D},{code:16,name:"ucsXAxis",parser:D},{code:13,name:"ucsOrigin",parser:D},{code:146,name:"elevation",parser:v},{code:15,name:"maxExtent",parser:D},{code:14,name:"minExtent",parser:D},{code:12,name:"insertionPoint",parser:D},{code:11,name:"maxLimit",parser:D},{code:10,name:"minLimit",parser:D},{code:71,name:"tabOrder",parser:v},{code:70,name:"controlFlag",parser:v},{code:1,name:"layoutName",parser:v},{code:100,name:"subclassMarker",parser:v},...Ju],U0=[{code:40,name:"wcsToOCSTransform",parser:Ml},{code:40,name:"ocsToWCSTransform",parser:Ml},{code:41,name:"backClippingDistance",parser:v},{code:73,name:"isBackClipping",parser:jt,pushContext:!0},{code:40,name:"frontClippingDistance",parser:v},{code:72,name:"isFrontClipping",parser:jt,pushContext:!0},{code:71,name:"isClipBoundaryDisplayed",parser:jt},{code:11,name:"position",parser:D},{code:210,name:"normal",parser:D},{code:10,name:"boundaryVertices",parser:D,isMultiple:!0},{code:70,name:"boundaryCount",parser:v},{code:100,name:"subclassMarker",parser:v},{code:100},...po];function Ml(n,t){let e=[];for(let s=0;s<3&&Pt(n,40);++s){let a=[];for(let h=0;h<4&&Pt(n,40);++h)a.push(n.value),n=t.next();e.push(a)}return t.rewind(),e}let j0={LAYOUT:V0,PLOTSETTINGS:Ju,DICTIONARY:z0,SPATIAL_FILTER:U0,IMAGEDEF:F0};function G0(n,t){let e=[];for(;n.code!==0||!["EOF","ENDSEC"].includes(n.value);){let s=n.value,a=j0[s];if(n.code===0&&(a!=null&&a.length)){let h=xt(a),u={name:s};h(n=t.next(),t,u)?(e.push(u),n=t.peek()):n=t.next()}else n=t.next()}return{byName:Ld(e,({name:s})=>s)}}let rs=[{code:100,name:"subclassMarker",parser:v},{code:330,name:"ownerObjectId",parser:v},{code:102,parser(n,t){for(;!Pt(n,0,"EOF")&&!Pt(n,102,"}");)n=t.next()}},{code:5,name:"handle",parser:v}],W0=xt([{code:310,name:"bmpPreview",parser:v},{code:281,name:"scalability",parser:v},{code:280,name:"explodability",parser:v},{code:70,name:"insertionUnits",parser:v},{code:340,name:"layoutObjects",parser:v},{code:2,name:"name",parser:v},{code:100,name:"subclassMarker",parser:v},...rs]),D0=[{name:"DIMPOST",code:3},{name:"DIMAPOST",code:4},{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:"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:"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:El.Above,defaultValueImperial:El.Center},{name:"DIMZIN",code:78,defaultValue:Dn.Trailing,defaultValueImperial:Dn.Feet},{name:"DIMAZIN",code:79,defaultValue:_d.None},{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},{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:2,defaultValueImperial:4},{name:"DIMAUNIT",code:275,defaultValue:0},{name:"DIMFRAC",code:276,defaultValue:0},{name:"DIMLUNIT",code:277,defaultValue:2},{name:"DIMDSEP",code:278,defaultValue:",",defaultValueImperial:"."},{name:"DIMJUST",code:280,defaultValue:yd.Center},{name:"DIMSD1",code:281,defaultValue:0},{name:"DIMSD2",code:282,defaultValue:0},{name:"DIMTOLJ",code:283,defaultValue:vd.Center},{name:"DIMTZIN",code:284,defaultValue:Dn.Trailing,defaultValueImperial:Dn.Feet},{name:"DIMALTZ",code:285,defaultValue:Dn.Trailing},{name:"DIMALTTZ",code:286,defaultValue:Dn.Trailing},{name:"DIMFIT",code:287},{name:"DIMUPT",code:288,defaultValue:0},{name:"DIMATFIT",code:289,defaultValue:3},{name:"DIMTXSTY",code:340},{name:"DIMLDRBLK",code:341},{name:"DIMBLK",code:342},{name:"DIMBLK1",code:343},{name:"DIMBLK2",code:344},{name:"DIMLWD",code:371,defaultValue:-2},{name:"DIMLWD",code:372,defaultValue:-2}],H0=xt([...D0.map(n=>({...n,parser:v})),{code:70,name:"standardFlag",parser:v},{code:2,name:"name",parser:v},{code:100,name:"subclassMarker",parser:v},{code:105,name:"handle",parser:v},...rs.filter(n=>n.code!==5)]),q0=xt([{code:347,name:"materialObjectId",parser:v},{code:390,name:"plotStyleNameObjectId",parser:v},{code:370,name:"lineweight",parser:v},{code:290,name:"isPlotting",parser:jt},{code:6,name:"lineType",parser:v},{code:62,name:"colorIndex",parser:v},{code:70,name:"standardFlag",parser:v},{code:2,name:"name",parser:v},{code:100,name:"subclassMarker",parser:v},...rs]);(zr={})[zr.NONE=0]="NONE",zr[zr.AbsoluteRotation=1]="AbsoluteRotation",zr[zr.TextEmbedded=2]="TextEmbedded",zr[zr.ShapeEmbedded=4]="ShapeEmbedded";let X0=xt([{code:9,name:"text",parser:v},{code:45,name:"offsetY",parser:v},{code:44,name:"offsetX",parser:v},{code:50,name:"rotation",parser:v},{code:46,name:"scale",parser:v},{code:340,name:"styleObjectId",parser:v},{code:75,name:"shapeNumber",parser:v},{code:74,name:"elementTypeFlag",parser:v},{code:49,name:"elementLength",parser:v}],{elementTypeFlag:0,elementLength:0}),Y0=xt([{code:49,name:"pattern",parser(n,t){let e={};return X0(n,t,e),e},isMultiple:!0},{code:40,name:"totalPatternLength",parser:v},{code:73,name:"numberOfLineTypes",parser:v},{code:72,parser:v},{code:3,name:"description",parser:v},{code:70,name:"standardFlag",parser:v},{code:2,name:"name",parser:v},{code:100,name:"subclassMarker",parser:v},...rs]),K0=xt([{code:1e3,name:"extendedFont",parser:v},{code:1001},{code:4,name:"bigFont",parser:v},{code:3,name:"font",parser:v},{code:42,name:"lastHeight",parser:v},{code:71,name:"textGenerationFlag",parser:v},{code:50,name:"obliqueAngle",parser:v},{code:41,name:"widthFactor",parser:v},{code:40,name:"fixedTextHeight",parser:v},{code:70,name:"standardFlag",parser:v},{code:2,name:"name",parser:v},{code:100,name:"subclassMarker",parser:v},...rs]),$0=xt([{code:[63,421,431],name:"ambientColor",parser:v},{code:142,name:"contrast",parser:v},{code:141,name:"brightness",parser:v},{code:282,name:"defaultLightingType",parser:v},{code:292,name:"isDefaultLightingOn",parser:jt},{code:348,name:"visualStyleObjectId",parser:v},{code:333,name:"shadePlotObjectId",parser:v},{code:332,name:"backgroundObjectId",parser:v},{code:61,name:"majorGridLines",parser:v},{code:170,name:"shadePlotSetting",parser:v},{code:146,name:"elevation",parser:v},{code:79,name:"orthographicType",parser:v},{code:112,name:"ucsYAxis",parser:D},{code:111,name:"ucsXAxis",parser:D},{code:110,name:"ucsOrigin",parser:D},{code:74,name:"ucsIconSetting",parser:v},{code:71,name:"viewMode",parser:v},{code:281,name:"renderMode",parser:v},{code:1,name:"styleSheet",parser:v},{code:[331,441],name:"frozenLayers",parser:v,isMultiple:!0},{code:72,name:"circleSides",parser:v},{code:51,name:"viewTwistAngle",parser:v},{code:50,name:"snapRotationAngle",parser:v},{code:45,name:"viewHeight",parser:v},{code:44,name:"backClippingPlane",parser:v},{code:43,name:"frontClippingPlane",parser:v},{code:42,name:"lensLength",parser:v},{code:17,name:"viewTarget",parser:D},{code:16,name:"viewDirectionFromTarget",parser:D},{code:15,name:"gridSpacing",parser:D},{code:14,name:"snapSpacing",parser:D},{code:13,name:"snapBasePoint",parser:D},{code:12,name:"center",parser:D},{code:11,name:"upperRightCorner",parser:D},{code:10,name:"lowerLeftCorner",parser:D},{code:70,name:"standardFlag",parser:v},{code:2,name:"name",parser:v},{code:100,name:"subclassMarker",parser:v},...rs]),Z0={BLOCK_RECORD:W0,DIMSTYLE:H0,LAYER:q0,LTYPE:Y0,STYLE:K0,VPORT:$0},Q0=xt([{code:70,name:"maxNumberOfEntries",parser:v},{code:100,name:"subclassMarker",parser:v},{code:330,name:"ownerObjectId",parser:v},{code:102},{code:360,isMultiple:!0},{code:102},{code:5,name:"handle",parser:v},{code:2,name:"name",parser:v}]);function J0(n,t){var s;let e={};for(;!Pt(n,0,"EOF")&&!Pt(n,0,"ENDSEC");){if(Pt(n,0,"TABLE")){n=t.next();let a={entries:[]};Q0(n,t,a),e[a.name]=a}if(Pt(n,0)&&!Pt(n,0,"ENDTAB")){let a=n.value;n=t.next();let h=Z0[a];if(!h){t.debug&&console.warn(`parseTable: Invalid table name '${a}'`),n=t.next();continue}let u={};h(n,t,u),(s=e[a])==null||s.entries.push(u)}n=t.next()}return e}function Vs(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}class kl{next(){if(!this.hasNext())return this._eof?this.debug&&console.warn("Cannot call 'next' after EOF group has been read"):this.debug&&console.warn("Unexpected end of input: EOF group not read before end of file. Ended on code "+this._data[this._pointer]),{code:0,value:"EOF"};let t=parseInt(this._data[this._pointer++],10),e=Nl(t,this._data[this._pointer++],this.debug),s={code:t,value:e};return Pt(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=Nl(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){Vs(this,"_data",void 0),Vs(this,"debug",void 0),Vs(this,"_pointer",void 0),Vs(this,"_eof",void 0),Vs(this,"lastReadGroup",void 0),this._data=t,this.debug=e,this.lastReadGroup={code:0,value:0},this._pointer=0,this._eof=!1}}function Nl(n,t,e=!1){return n<=9?t:n>=10&&n<=59?parseFloat(t.trim()):n>=60&&n<=99?parseInt(t.trim()):n>=100&&n<=109?t:n>=110&&n<=149?parseFloat(t.trim()):n>=160&&n<=179?parseInt(t.trim()):n>=210&&n<=239?parseFloat(t.trim()):n>=270&&n<=289?parseInt(t.trim()):n>=290&&n<=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()):n>=300&&n<=369?t:n>=370&&n<=389?parseInt(t.trim()):n>=390&&n<=399?t:n>=400&&n<=409?parseInt(t.trim()):n>=410&&n<=419?t:n>=420&&n<=429?parseInt(t.trim()):n>=430&&n<=439?t:n>=440&&n<=459?parseInt(t.trim()):n>=460&&n<=469?parseFloat(t.trim()):n>=470&&n<=481||n===999||n>=1e3&&n<=1009?t:n>=1010&&n<=1059?parseFloat(t.trim()):n>=1060&&n<=1071?parseInt(t.trim()):(e&&console.warn("WARNING: Group code does not have a defined type: %j",{code:n,value:t}),t)}function za(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}class tp{constructor(){za(this,"encoding","utf-8"),za(this,"encodingFailureFatal",!1)}}class ep extends EventTarget{parseSync(t,e=!1){let s=new kl(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((a,h)=>{t.on("data",u=>{e+=u}),t.on("end",()=>{try{let u=e.split(/\r\n|\r|\n/g),m=new kl(u);if(!m.hasNext())throw Error("Empty file");a(s.parseAll(m))}catch(u){h(u)}}),t.on("error",u=>{h(u)})})}async parseFromUrl(t,e){let s=await fetch(t,e);if(!s.body)return null;let a=s.body.getReader(),h="";for(;;){let{done:u,value:m}=await a.read();if(u){h+=this._decoder.decode(new ArrayBuffer(0),{stream:!1});break}h+=this._decoder.decode(m,{stream:!0})}return this.parseSync(h)}parseAll(t){let e={header:{},blocks:{},entities:[],tables:{},objects:{byName:{},byTree:void 0}},s=t.next();for(;!Pt(s,0,"EOF");)Pt(s,0,"SECTION")&&(Pt(s=t.next(),2,"HEADER")?(s=t.next(),e.header=R0(s,t)):Pt(s,2,"BLOCKS")?(s=t.next(),e.blocks=O0(s,t)):Pt(s,2,"ENTITIES")?(s=t.next(),e.entities=Qu(s,t)):Pt(s,2,"TABLES")?(s=t.next(),e.tables=J0(s,t)):Pt(s,2,"OBJECTS")&&(s=t.next(),e.objects=G0(s,t))),s=t.next();return e}constructor(t=new tp){super(),za(this,"_decoder",void 0),this._decoder=new TextDecoder(t.encoding,{fatal:t.encodingFailureFatal})}}const Ll=[{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 qn{constructor(t){if(typeof t=="string"){const e=Ll.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=Ll.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 rp{parse(t){const e=new ep,s=this.getDxfInfoFromBuffer(t);let a="";return s.version&&s.version.value<=23&&s.encoding?a=new TextDecoder(s.encoding).decode(t):a=new TextDecoder().decode(t),e.parseSync(a)}getDxfInfoFromBuffer(t){var _,w,x;const s=new TextDecoder("utf-8");let a=0,h="",u=null,m=null,b=!1;for(;a<t.byteLength;){const A=Math.min(a+65536,t.byteLength),T=t.slice(a,A);a=A;const O=(h+s.decode(T,{stream:!0})).split(/\r?\n/);h=O.pop()??"";for(let V=0;V<O.length;V++){const F=O[V].trim();if(F==="SECTION"&&((_=O[V+2])==null?void 0:_.trim())==="HEADER")b=!0;else if(F==="ENDSEC"&&b)return{version:u,encoding:m};if(b&&F==="$ACADVER"){const at=(w=O[V+2])==null?void 0:w.trim();at&&(u=new qn(at))}else if(b&&F==="$DWGCODEPAGE"){const at=(x=O[V+2])==null?void 0:x.trim();if(at){const ft=Wa[at];m=Dl(ft)}}if(u&&m)return{version:u,encoding:m}}}return{version:u,encoding:m}}}class Cl{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 ki;return t.vertices.forEach((s,a)=>e.setVertexAt(a,s)),e}convertArc(t){return new Pi(t.center,t.radius,It.degToRad(t.startAngle),It.degToRad(t.endAngle),t.extrusionDirection??Y.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&he.Invisible)!==0,e.isConst=(t.attributeFlag&he.Const)!==0,e.isVerifiable=(t.attributeFlag&he.Verifiable)!==0,e.isPreset=(t.attributeFlag&he.Preset)!==0,e.isReallyLocked=!!t.isReallyLocked,e.isMTextAttribute=(t.mtextFlag&vr.MultiLine)!==0,e.isConstMTextAttribute=(t.mtextFlag&vr.ConstMultiLine)!==0}convertAttribute(t){const e=new Ei;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 Ai;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 Ti(t.center,t.radius,t.extrusionDirection??Y.Z_AXIS)}convertEllipse(t){const e=new Y(t.majorAxisEndPoint),s=e.length();return new Mi(t.center,t.extrusionDirection??Y.Z_AXIS,e,s,s*t.axisRatio,t.startAngle,t.endAngle)}convertLine(t){const e=t.startPoint,s=t.endPoint;return new Qs(new W(e.x,e.y,e.z||0),new W(s.x,s.y,s.z||0))}convertSpline(t){try{if(t.numberOfControlPoints>0&&t.numberOfKnots>0)return new ti(t.controlPoints,t.knots,t.weights,t.degree,!!(t.flag&1));if(t.numberOfFitPoints>0){const e=this.numberArrayToPointArray(t.fitPoints,t.numberOfFitPoints);if(e!=null)return new ti(e,"Uniform",t.degree,!!(t.flag&1))}}catch(e){console.log(`Failed to convert spline with error: ${e}`)}return null}convertPoint(t){const e=new Bi;return e.position=t.position,e}convertSolid(t){const e=new Ci;return t.points.forEach((s,a)=>e.setPointAt(a,s)),e.thickness=t.thickness,e}convertPolyline(t){const e=!!(t.flag&1),s=!!(t.flag&8),a=[],h=[];if(t.vertices.map(u=>{u.flag&p0.SPLINE_CONTROL_POINT||(a.push({x:u.x,y:u.y,z:u.z}),h.push(u.bulge??0))}),s){let u=qs.SimplePoly;return t.flag&4&&(t.smoothType==pi.CUBIC?u=qs.CubicSplinePoly:t.smoothType==pi.QUADRATIC&&(u=qs.QuadSplinePoly)),new Ii(u,a,e)}else{let u=Hn.SimplePoly;return t.flag&2?u=Hn.FitCurvePoly:t.flag&4&&(t.smoothType==pi.CUBIC?u=Hn.CubicSplinePoly:t.smoothType==pi.QUADRATIC&&(u=Hn.QuadSplinePoly)),new Si(u,a,0,e,t.startWidth,t.endWidth,h)}}convertLWPolyline(t){const e=new Oi;return e.closed=!!(t.flag&1),t.vertices.forEach((s,a)=>{e.addVertexAt(a,new kt(s.x,s.y),s.bulge,s.startWidth,s.endWidth)}),e}convertHatch(t){var a;const e=new Zs;return(a=t.definitionLines)==null||a.forEach(h=>{e.definitionLines.push({angle:h.angle,base:h.base,offset:h.offset,dashLengths:h.numberOfDashLengths>0?h.dashLengths:[]})}),e.isSolidFill=t.solidFill==bd.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(h=>{if(h.boundaryPathTypeFlag&2){const m=h,b=new Tn;b.closed=m.isClosed,m.vertices.forEach((_,w)=>{b.addVertexAt(w,{x:_.x,y:_.y,bulge:_.bulge})}),e.add(b)}else{const m=h,b=new eo;m.edges.forEach(_=>{if(_.type==1){const w=_;b.add(new Hs(w.start,w.end))}else if(_.type==2){const w=_;b.add(new Yn(w.center,w.radius,It.degToRad(w.startAngle||0),It.degToRad(w.endAngle||0),!w.isCCW))}else if(_.type==3){const w=_;new te().subVectors(w.end,w.center);const A=Math.sqrt(Math.pow(w.end.x,2)+Math.pow(w.end.y,2)),T=A*w.lengthOfMinorAxis;let L=It.degToRad(w.startAngle||0),O=It.degToRad(w.endAngle||0);const V=Math.atan2(w.end.y,w.end.x);w.isCCW||(L=Math.PI*2-L,O=Math.PI*2-O),b.add(new ea({...w.center,z:0},A,T,L,O,!w.isCCW,V))}else if(_.type==4){const w=_;if(w.numberOfControlPoints>0&&w.numberOfKnots>0){const x=w.controlPoints.map(L=>({x:L.x,y:L.y,z:0}));let A=!0;const T=w.controlPoints.map(L=>(L.weight==null&&(A=!1),L.weight||1));b.add(new sn(x,w.knots,A?T:void 0))}else if(w.numberOfFitData>0){const x=w.fitDatum.map(A=>({x:A.x,y:A.y,z:0}));b.add(new sn(x,"Uniform"))}}}),e.add(b)}}),e}convertTable(t){const e=new Li(t.name,t.rowCount,t.columnCount);return e.attachmentPoint=t.attachmentPoint,e.position.copy(t.startPoint),t.columnWidthArr.forEach((s,a)=>e.setColumnWidth(a,s)),t.rowHeightArr.forEach((s,a)=>e.setRowHeight(a,s)),t.cells.forEach((s,a)=>{e.setCell(a,s)}),e}convertText(t){const e=new $n;return e.textString=t.text,e.styleName=t.styleName,e.height=t.textHeight,e.position.copy(t.startPoint),e.rotation=It.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 Js;return e.contents=t.text,t.styleName!=null&&(e.styleName=t.styleName),e.height=t.height,e.width=t.width,e.rotation=It.degToRad(t.rotation||0),e.location=t.insertionPoint,e.attachmentPoint=t.attachmentPoint,t.direction&&(e.direction=new Y(t.direction)),e.drawingDirection=t.drawingDirection,e}convertLeader(t){const e=new Ni;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 ji(e.subDefinitionPoint1,e.subDefinitionPoint2,e.definitionPoint);return e.insertionPoint&&(s.dimBlockPosition={...e.insertionPoint,z:0}),s.rotation=It.degToRad(e.rotationAngle||0),this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDb3PointAngularDimension"){const e=t,s=new Ui(e.centerPoint,e.subDefinitionPoint1,e.subDefinitionPoint2,e.definitionPoint);return this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDbOrdinateDimension"){const e=t,s=new Wi(e.subDefinitionPoint1,e.subDefinitionPoint2);return this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDbRadialDimension"){const e=t,s=new Di(e.definitionPoint,e.centerPoint,e.leaderLength);return this.processDimensionCommonAttrs(t,s),s}else if(t.subclassMarker=="AcDbDiametricDimension"){const e=t,s=new Gi(e.definitionPoint,e.centerPoint,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.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 kt(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 ei;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.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 kt(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 Fi;return this.processWipeout(t,e),e}convertViewport(t){const e=new zi;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 Ri;return e.basePoint.copy(t.position),e.unitDir.copy(t.direction),e}convertXline(t){const e=new Vi;return e.basePoint.copy(t.position),e.unitDir.copy(t.direction),e}convertBlockReference(t){const e=new Zn(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?It.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),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=Qi.deserialize(t.transparency))}numberArrayToPointArray(t,e){const s=t.length;let a=0;if(s/2==e?a=2:s/3==e&&(a=3),a==0)return;const h=[];for(let u=0,m=s/a;u<m;++u)h.push({x:t[u*a],y:t[u*a+1],z:a==3?t[u*a+2]:0});return h}}class on extends Wr{constructor(t,e){t=t||{},Jn(t,{name:""}),super(t,e)}get name(){return this.getAttr("name")}set name(t){this.setAttr("name",t)}}const nn=class nn extends on{static isModelSapceName(t){return t.toLowerCase()==nn.MODEL_SPACE_NAME.toLowerCase()}static isPaperSapceName(t){return t.toLowerCase().startsWith(nn.PAPER_SPACE_NAME_PREFIX.toLowerCase())}constructor(){super(),this._origin=new W,this._layoutId="",this._entities=new Map}get isModelSapce(){return nn.isModelSapceName(this.name)}get isPaperSapce(){return nn.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}appendEntity(t){if(Array.isArray(t))for(let e=0;e<t.length;++e){const s=t[e];s.database=this.database,s.ownerId=this.objectId,s.resolveEffectiveProperties(),this._entities.set(s.objectId,s)}else t.database=this.database,t.ownerId=this.objectId,t.resolveEffectiveProperties(),this._entities.set(t.objectId,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(a=>{const h=this._entities.get(a);h&&s.push(h),this._entities.delete(a)}),s.length>0&&this.database.events.entityErased.dispatch({database:this.database,entity:s}),s.length>0}newIterator(){return new si(this._entities)}getIdAt(t){return this._entities.get(t)}};nn.MODEL_SPACE_NAME="*MODEL_SPACE",nn.PAPER_SPACE_NAME_PREFIX="*PAPER_SPACE";let ue=nn;class np{convertLayout(t,e){var a,h;const s=new na;if(s.layoutName=t.layoutName,s.tabOrder=t.tabOrder,t.layoutName==="Model"){const u=ue.MODEL_SPACE_NAME;(a=e.tables.BLOCK_RECORD)==null||a.entries.some(m=>m.name.toUpperCase()===u?(s.blockTableRecordId=m.handle,!0):!1)}else(h=e.tables.BLOCK_RECORD)==null||h.entries.some(u=>u.layoutObjects===t.handle?(s.blockTableRecordId=u.handle,!0):!1),s.blockTableRecordId||(s.blockTableRecordId=t.paperSpaceTableId);return s.limits.min.copy(t.minLimit),s.limits.max.copy(t.maxLimit),s.extents.min.copy(t.minExtent),s.extents.max.copy(t.maxExtent),this.processCommonAttrs(t,s),s}convertImageDef(t){const e=new Uh;return e.sourceFileName=t.fileName,this.processCommonAttrs(t,e),e}processCommonAttrs(t,e){e.objectId=t.handle,e.ownerId=t.ownerObjectId}}class tc{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(),a=this.generateTaskId();try{return await this.executeInWorker(a,t,e||this.config.workerUrl)}catch(h){const u=Date.now()-s;return{success:!1,error:h instanceof Error?h.message:String(h),duration:u}}}async executeInWorker(t,e,s){const a=Date.now();return new Promise((h,u)=>{const m=this.getAvailableWorker(s),b=setTimeout(()=>{this.cleanupTask(t),this.releaseWorker(m),u(new Error(`Worker operation timed out after ${this.config.timeout}ms`))},this.config.timeout);this.pendingTasks.set(t,{resolve:x=>{clearTimeout(b),this.releaseWorker(m),h(x)},reject:x=>{clearTimeout(b),this.releaseWorker(m),u(x)},timeout:b});const _=x=>{const{id:A,success:T,data:L,error:O}=x.data;if(A!==t)return;this.cleanupTask(t);const V=Date.now()-a;h(T?{success:!0,data:L,duration:V}:{success:!1,error:O,duration:V})},w=x=>{this.cleanupTask(t),u(new Error(`Worker error: ${x.message}`))};m.addEventListener("message",_),m.addEventListener("error",w),m.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,a]of this.workers)if(!a.isBusy)return a.isBusy=!0,a.worker;if(this.workers.size<this.config.maxConcurrentWorkers){const s=new Worker(t,{type:"module"}),a=this.generateWorkerId(),h={worker:s,isBusy:!0,id:a,createdAt:new Date};return this.workers.set(a,h),s}const e=Array.from(this.workers.values()).sort((s,a)=>s.createdAt.getTime()-a.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 ec{constructor(t){this.framework=new tc(t)}async execute(t,e){return this.framework.execute(t,e)}getStats(){return this.framework.getStats()}destroy(){this.framework.destroy()}}function rc(n){return new ec(n)}class sp{constructor(){this.setupMessageHandler()}setupMessageHandler(){self.onmessage=async t=>{const{id:e,input:s}=t.data;try{const a=await this.executeTask(s);this.sendResponse(e,!0,a)}catch(a){this.sendResponse(e,!1,void 0,a instanceof Error?a.message:String(a))}}}sendResponse(t,e,s,a){const h={id:t,success:e,data:s,error:a};self.postMessage(h)}}class nc extends lo{constructor(t={}){super(t),t.parserWorkerUrl||(t.parserWorkerUrl="/assets/dxf-parser-worker.js")}async parse(t,e){const s=this.config,a=this.getParserWorkerTimeout(t,e);if(s.useWorker&&s.parserWorkerUrl){const h=rc({workerUrl:s.parserWorkerUrl,timeout:a,maxConcurrentWorkers:1}),u=await h.execute(t);if(h.destroy(),u.success)return{model:u.data,data:{unknownEntityCount:0}};throw new Error(`Failed to parse drawing due to error: '${u.error}'`)}else return{model:new rp().parse(t),data:{unknownEntityCount:0}}}getFonts(t){var h;const e=new Map,s=u=>{if(u){const m=u.lastIndexOf(".");return m>=0?u.substring(0,m).toLowerCase():u.toLowerCase()}};(h=t.tables.STYLE)==null||h.entries.forEach(u=>{const m=[];if(u.font){const b=s(u.font);b&&m.push(b)}if(u.bigFont){const b=s(u.bigFont);b&&m.push(b)}if(u.extendedFont){const b=s(u.extendedFont);b&&m.push(b)}e.set(u.name,m)});const a=new Set;return this.getFontsInBlock(t.entities,t.blocks,e,a),Array.from(a)}getFontsInBlock(t,e,s,a){const h=/\\f(.*?)\|/g;t.forEach(u=>{if(u.type=="MTEXT"){const m=u;[...m.text.matchAll(h)].forEach(w=>{a.add(w[1].toLowerCase())});const _=s.get(m.styleName);_==null||_.forEach(w=>a.add(w))}else if(u.type=="TEXT"){const m=u,b=s.get(m.styleName);b==null||b.forEach(_=>a.add(_))}else if(u.type=="INSERT"){const b=e[u.name];b&&b.entities&&this.getFontsInBlock(b.entities,e,s,a)}})}async processEntities(t,e,s,a,h){const u=new Cl;let m=t.entities;const b=m.length,_=new ja(b,100-a.value,s);this.config.convertByEntityType&&(m=this.groupAndFlattenByType(m));const w=new Map;for(let A=0;A<b;A++){const T=m[A];if(T.type==="ATTRIB"){const L=u.convert(T);if(L&&L.ownerId&&L.ownerId!=="0"){let O=w.get(L==null?void 0:L.ownerId);O==null&&(O=[],w.set(L.ownerId,O)),O.push(L)}}}const x=e.tables.blockTable.modelSpace;await _.processChunk(async(A,T)=>{let L=[],O=A<T?m[A].type:"";for(let F=A;F<T;F++){const at=m[F];if(at.type!=="ATTRIB"){const ft=u.convert(at);if(ft){if(this.config.convertByEntityType&&at.type!==O&&(x.appendEntity(L),L=[],O=at.type),at.type==="INSERT"){const st=w.get(ft.objectId);st&&st.length>0&&st.forEach(H=>{ft.appendAttributes(H)})}L.push(ft)}}}x.appendEntity(L);let V=a.value+T/b*(100-a.value);V>100&&(V=100),h&&await h(V,"ENTITY","IN-PROGRESS")})}async processEntitiesInBlock(t,e,s=!1){const a=new Cl,h=t.length,u=[],m=e.objectId,b=[];for(let _=0;_<h;_++){const w=t[_],x=a.convert(w);x&&(w.type==="ATTRIB"?b.push(x):(!s||w.ownerBlockRecordSoftId===m)&&u.push(x))}b.forEach(_=>{const w=e.getIdAt(_.ownerId);w&&w.appendAttributes(_)}),e.appendEntity(u)}processBlocks(t,e){const s=t.blocks;for(const[a,h]of Object.entries(s)){let u=e.tables.blockTable.getAt(h.name);u||(u=new ue,u.objectId=h.handle,u.name=a,u.origin.copy(h.position),e.tables.blockTable.add(u)),h.entities?this.processEntitiesInBlock(h.entities,u):u.isPaperSapce&&this.processEntitiesInBlock(t.entities,u,!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||Ie}processBlockTables(t,e){var a;const s=(a=t.tables.BLOCK_RECORD)==null?void 0:a.entries;s&&s.length>0&&(e.tables.blockTable.removeAll(),s.forEach(h=>{const u=new ue;u.objectId=h.handle,u.name=h.name,u.layoutId=h.layoutObjects,e.tables.blockTable.add(u)}))}processObjects(t,e){const s=t.objects.byName,a=new np;if("LAYOUT"in s){const h=e.objects.layout;s.LAYOUT.forEach(u=>{const m=a.convertLayout(u,t);h.setAt(m.layoutName,m)})}if("IMAGEDEF"in s){const h=e.objects.imageDefinition;s.IMAGEDEF.forEach(u=>{const m=a.convertImageDef(u);h.setAt(m.objectId,m)})}}processViewports(t,e){var a,h;const s=(h=(a=t.tables)==null?void 0:a.VPORT)==null?void 0:h.entries;s&&s.length>0&&s.forEach(u=>{const m=new yc;this.processCommonTableEntryAttrs(u,m),u.circleSides&&(m.circleSides=u.circleSides),m.standardFlag=u.standardFlag,m.center.copy(u.center),m.lowerLeftCorner.copy(u.lowerLeftCorner),m.upperRightCorner.copy(u.upperRightCorner),u.snapBasePoint&&m.snapBase.copy(u.snapBasePoint),u.snapRotationAngle&&(m.snapAngle=u.snapRotationAngle),u.snapSpacing&&m.snapIncrements.copy(u.snapSpacing),u.majorGridLines&&(m.gridMajor=u.majorGridLines),u.gridSpacing&&m.gridIncrements.copy(u.gridSpacing),u.backgroundObjectId&&(m.backgroundObjectId=u.backgroundObjectId),m.gsView.center.copy(u.center),m.gsView.viewDirectionFromTarget.copy(u.viewDirectionFromTarget),m.gsView.viewTarget.copy(u.viewTarget),u.lensLength&&(m.gsView.lensLength=u.lensLength),u.frontClippingPlane&&(m.gsView.frontClippingPlane=u.frontClippingPlane),u.backClippingPlane&&(m.gsView.backClippingPlane=u.backClippingPlane),u.viewHeight&&(m.gsView.viewHeight=u.viewHeight),u.viewTwistAngle&&(m.gsView.viewTwistAngle=u.viewTwistAngle),u.frozenLayers&&(m.gsView.frozenLayers=u.frozenLayers),u.styleSheet&&(m.gsView.styleSheet=u.styleSheet),u.renderMode&&(m.gsView.renderMode=u.renderMode),u.viewMode&&(m.gsView.viewMode=u.viewMode),u.ucsIconSetting&&(m.gsView.ucsIconSetting=u.ucsIconSetting),u.ucsOrigin&&m.gsView.ucsOrigin.copy(u.ucsOrigin),u.ucsXAxis&&m.gsView.ucsXAxis.copy(u.ucsXAxis),u.ucsYAxis&&m.gsView.ucsYAxis.copy(u.ucsYAxis),u.orthographicType&&(m.gsView.orthographicType=u.orthographicType),u.shadePlotSetting&&(m.gsView.shadePlotSetting=u.shadePlotSetting),u.shadePlotObjectId&&(m.gsView.shadePlotObjectId=u.shadePlotObjectId),u.visualStyleObjectId&&(m.gsView.visualStyleObjectId=u.visualStyleObjectId),u.isDefaultLightingOn&&(m.gsView.isDefaultLightingOn=u.isDefaultLightingOn),u.defaultLightingType&&(m.gsView.defaultLightingType=u.defaultLightingType),u.brightness&&(m.gsView.brightness=u.brightness),u.contrast&&(m.gsView.contrast=u.contrast),u.ambientColor&&(m.gsView.ambientColor=u.ambientColor),e.tables.viewportTable.add(m)})}processLayers(t,e){var a,h;const s=(h=(a=t.tables)==null?void 0:a.LAYER)==null?void 0:h.entries;s&&s.length>0&&s.forEach(u=>{const m=new ce;m.colorIndex=u.colorIndex;const b=new ia({name:u.name,standardFlags:u.standardFlag,linetype:u.lineType,lineWeight:u.lineweight,isOff:u.colorIndex<0,color:m,isPlottable:u.isPlotting});this.processCommonTableEntryAttrs(u,b),e.tables.layerTable.add(b)})}processLineTypes(t,e){var a,h;const s=(h=(a=t.tables)==null?void 0:a.LTYPE)==null?void 0:h.entries;s&&s.length>0&&s.forEach(u=>{const m=new $s(u);this.processCommonTableEntryAttrs(u,m),m.name=u.name,e.tables.linetypeTable.add(m)})}processTextStyles(t,e){var a;const s=(a=t.tables.STYLE)==null?void 0:a.entries;s&&s.length>0&&s.forEach(h=>{const u=new mo(h);this.processCommonTableEntryAttrs(h,u),e.tables.textStyleTable.add(u)})}processDimStyles(t,e){var a;const s=(a=t.tables.DIMSTYLE)==null?void 0:a.entries;s&&s.length>0&&s.forEach(h=>{const u={name:h.name,ownerId:h.ownerObjectId,dimpost:h.DIMPOST||"",dimapost:h.DIMAPOST||"",dimscale:h.DIMSCALE,dimasz:h.DIMASZ,dimexo:h.DIMEXO,dimdli:h.DIMDLI,dimexe:h.DIMEXE,dimrnd:h.DIMRND,dimdle:h.DIMDLE,dimtp:h.DIMTP,dimtm:h.DIMTM,dimtxt:h.DIMTXT,dimcen:h.DIMCEN,dimtsz:h.DIMTSZ,dimaltf:h.DIMALTF,dimlfac:h.DIMLFAC,dimtvp:h.DIMTVP,dimtfac:h.DIMTFAC,dimgap:h.DIMGAP,dimaltrnd:h.DIMALTRND,dimtol:h.DIMTOL==null||h.DIMTOL==0?0:1,dimlim:h.DIMLIM==null||h.DIMLIM==0?0:1,dimtih:h.DIMTIH==null||h.DIMTIH==0?0:1,dimtoh:h.DIMTOH==null||h.DIMTOH==0?0:1,dimse1:h.DIMSE1==null||h.DIMSE1==0?0:1,dimse2:h.DIMSE2==null||h.DIMSE2==0?0:1,dimtad:h.DIMTAD,dimzin:h.DIMZIN,dimazin:h.DIMAZIN,dimalt:h.DIMALT,dimaltd:h.DIMALTD,dimtofl:h.DIMTOFL,dimsah:h.DIMSAH,dimtix:h.DIMTIX,dimsoxd:h.DIMSOXD,dimclrd:h.DIMCLRD,dimclre:h.DIMCLRE,dimclrt:h.DIMCLRT,dimadec:h.DIMADEC||0,dimunit:h.DIMUNIT||2,dimdec:h.DIMDEC,dimtdec:h.DIMTDEC,dimaltu:h.DIMALTU,dimalttd:h.DIMALTTD,dimaunit:h.DIMAUNIT,dimfrac:h.DIMFRAC,dimlunit:h.DIMLUNIT,dimdsep:h.DIMDSEP,dimtmove:h.DIMTMOVE||0,dimjust:h.DIMJUST,dimsd1:h.DIMSD1,dimsd2:h.DIMSD2,dimtolj:h.DIMTOLJ,dimtzin:h.DIMTZIN,dimaltz:h.DIMALTZ,dimalttz:h.DIMALTTZ,dimfit:h.DIMFIT||0,dimupt:h.DIMUPT,dimatfit:h.DIMATFIT,dimtxsty:h.DIMTXSTY||Ie,dimldrblk:h.DIMLDRBLK||"",dimblk:h.DIMBLK||"",dimblk1:h.DIMBLK1||"",dimblk2:h.DIMBLK2||"",dimlwd:h.DIMLWD,dimlwe:h.DIMLWE},m=new Qn(u);this.processCommonTableEntryAttrs(h,m),e.tables.dimStyleTable.add(m)})}processCommonTableEntryAttrs(t,e){e.name=t.name,t.handle!=null&&(e.objectId=t.handle),e.ownerId=t.ownerObjectId}groupAndFlattenByType(t){const e={},s=[];for(const a of t)e[a.type]||(e[a.type]=[],s.push(a.type)),e[a.type].push(a);return s.flatMap(a=>e[a])}}class sc extends lo{constructor(t){super({}),this._database=t}async parse(){return{model:this._database,data:{unknownEntityCount:0}}}getFonts(){return[]}async processEntities(t,e,s,a,h){let u=t.tables.blockTable.modelSpace.newIterator().toArray();const m=u.length,b=new ja(m,100-a.value,s);this.config.convertByEntityType&&(u=this.groupAndFlattenByType(u));const _=e.tables.blockTable.modelSpace;await b.processChunk(async(w,x)=>{let A=[],T=w<x?u[w].type:"";for(let L=w;L<x;L++){const O=u[L];this.config.convertByEntityType&&O.type!==T&&(this.triggerEvents(_,A),A=[],T=O.type),A.push(O)}if(this.triggerEvents(_,A),h){let L=a.value+x/m*(100-a.value);L>100&&(L=100),await h(L,"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 a of t)e[a.type]||(e[a.type]=[],s.push(a.type)),e[a.type].push(a);return s.flatMap(a=>e[a])}triggerEvents(t,e){(t.isModelSapce||t.isPaperSapce)&&t.database.events.entityAppended.dispatch({database:t.database,entity:e})}}var Ks=(n=>(n.DXF="dxf",n.DWG="dwg",n))(Ks||{});class yr{constructor(){this.events={registered:new le,unregistered:new le},this._converters=new Map,this.register("dxf",new nc)}static createInstance(){return yr._instance==null&&(yr._instance=new yr),this._instance}static get instance(){return yr._instance||(yr._instance=new yr),yr._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}))}}class ln extends Wr{constructor(t){super(),this.database=t,this._recordsByName=new Map,this._recordsById=new Map}get numEntries(){return this._recordsByName.size}add(t){t.database=this.database;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 si(this._recordsByName)}normalizeName(t){return t}}class ic extends ln{constructor(t){super(t)}get modelSpace(){let t=this.getAt(ue.MODEL_SPACE_NAME);return t||(t=new ue,t.name=ue.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(ue.isModelSapceName(t))e=ue.MODEL_SPACE_NAME;else if(ue.isPaperSapceName(t)){const s=ue.PAPER_SPACE_NAME_PREFIX,a=t.substring(s.length);e=s+a}return e}}class ac extends ln{constructor(t){super(t)}}class ia extends on{constructor(t,e){t=t||{},Jn(t,{color:new ce,description:"",standardFlags:0,isHidden:!1,isInUse:!0,isOff:!1,isPlottable:!0,transparency:new Qi,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)}}class oc extends ln{constructor(t){super(t);const e=new ce,s=new ia({name:"0",standardFlags:0,linetype:xi,lineWeight:an.ByLineWeightDefault,isOff:!1,color:e,isPlottable:!0});this.add(s)}add(t){super.add(t),this.database.events.layerAppended.dispatch({database:this.database,layer:t})}}class lc extends ln{constructor(t){super(t)}}class hc extends ln{constructor(t){super(t)}get fonts(){const t=new Set,e=a=>{if(a){const h=a.lastIndexOf(".");if(h>=0){const u=a.substring(0,h).toLowerCase();t.add(u)}else t.add(a.toLowerCase())}},s=this.newIterator();for(const a of s)e(a.fileName),e(a.bigFontFileName);return Array.from(t)}}class uc extends ln{constructor(t){super(t)}}class cc extends ln{constructor(t){super(t)}}class dc extends on{constructor(t){super(),this.name=t}}const Ut={ACADVER:"ACADVER",ANGBASE:"ANGBASE",ANGDIR:"ANGDIR",AUNITS:"AUNITS",CECOLOR:"CECOLOR",CELTSCALE:"CELTSCALE",CELWEIGHT:"CELWEIGHT",CLAYER:"CLAYER",COLORTHEME:"COLORTHEME",EXTMAX:"EXTMAX",EXTMIN:"EXTMIN",INSUNITS:"INSUNITS",LTSCALE:"LTSCALE",LWDISPLAY:"LWDISPLAY",MEASUREMENTCOLOR:"MEASUREMENTCOLOR",OSMODE:"OSMODE",PDMODE:"PDMODE",PDSIZE:"PDSIZE",PICKBOX:"PICKBOX",TEXTSTYLE:"TEXTSTYLE",WHITEBKCOLOR:"WHITEBKCOLOR"},ip=Object.freeze(Object.values(Ut)),Yi=class Yi{constructor(){this.registry=new Map,this.cache=new Map,this.events={sysVarChanged:new le},this.registerVar({name:Ut.CECOLOR,type:"color",isDbVar:!0,defaultValue:new ce(ct.ByLayer)}),this.registerVar({name:Ut.CELTSCALE,type:"number",isDbVar:!0,defaultValue:-1}),this.registerVar({name:Ut.CELWEIGHT,type:"number",isDbVar:!0,defaultValue:an.ByLayer}),this.registerVar({name:Ut.CLAYER,type:"string",isDbVar:!0,defaultValue:"0"}),this.registerVar({name:Ut.COLORTHEME,type:"number",isDbVar:!1,defaultValue:"0"}),this.registerVar({name:Ut.LWDISPLAY,type:"boolean",isDbVar:!0,defaultValue:!1}),this.registerVar({name:Ut.MEASUREMENTCOLOR,type:"color",isDbVar:!1,defaultValue:(()=>{const t=new ce(ct.ByColor);return t.setRGB(96,165,250),t})()}),this.registerVar({name:Ut.OSMODE,type:"number",isDbVar:!0,defaultValue:0}),this.registerVar({name:Ut.PICKBOX,type:"number",isDbVar:!1,defaultValue:10}),this.registerVar({name:Ut.TEXTSTYLE,type:"string",isDbVar:!0,defaultValue:Ie}),this.registerVar({name:Ut.WHITEBKCOLOR,type:"boolean",isDbVar:!1,defaultValue:!1})}static instance(){return this._instance||(this._instance=new Yi),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){if(s.isDbVar)return e[t.toLowerCase()];if(this.cache.has(t))return this.cache.get(t)}}setVar(t,e,s){t=this.normalizeName(t);const a=this.getDescriptor(t);if(a){const h=this.getVar(t,s);if(a.type!=="string"&&(typeof e=="string"||e instanceof String)){if(a.type==="number"){const u=Number(e);if(Number.isNaN(u))throw new Error("Invalid number input!");e=u}else if(a.type==="boolean")e=this.parseBoolean(e);else if(a.type==="color"){const u=ce.fromString(e);if(u==null)throw new Error("Invalid color value!");e=u}}a.isDbVar?s[t.toLowerCase()]=e:(this.cache.set(t,e),this.hasValueChanged(h,e)&&this.events.sysVarChanged.dispatch({database:s,name:t,newVal:e,oldVal:h}))}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"]),a=new Set(["false","f","0","no","n"]);return s.has(e)?!0:(a.has(e),!1)}hasValueChanged(t,e){return t instanceof ce&&e instanceof ce?!t.equals(e):!Object.is(t,e)}normalizeName(t){return t.toLowerCase()}};Yi._instance=null;let qi=Yi;const Ki=class Ki extends Wr{constructor(){super(),this.events={dictObjetSet:new le,dictObjectErased:new le,entityAppended:new le,entityModified:new le,entityErased:new le,layerAppended:new le,layerModified:new le,layerErased:new le,openProgress:new le},this._version=new qn("AC1014"),this._angBase=0,this._angDir=0,this._aunits=Ga.DecimalDegrees,this._celtscale=1,this._cecolor=new ce,this._celweight=an.ByLayer,this._clayer="0",this._textstyle=Ie,this._extents=new Nt,this._insunits=oo.Millimeters,this._ltscale=1,this._lwdisplay=!0,this._pdmode=0,this._pdsize=0,this._osmode=0,this._tables={appIdTable:new cc(this),blockTable:new ic(this),dimStyleTable:new ac(this),linetypeTable:new lc(this),textStyleTable:new hc(this),layerTable:new oc(this),viewportTable:new uc(this)},this._objects={dictionary:new Ys(this),imageDefinition:new Ys(this),layout:new Vh(this),xrecord:new Ys(this)},this._tables.appIdTable.add(new dc(Ki.MLIGHTCAD_APPID))}get tables(){return this._tables}get objects(){return this._objects}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(Ut.AUNITS,this._aunits,t??0,e=>{this._aunits=e})}get version(){return this._version}set version(t){this.updateSysVar(Ut.ACADVER,this._version,new qn(t),e=>{this._version=e})}get insunits(){return this._insunits}set insunits(t){this.updateSysVar(Ut.INSUNITS,this._insunits,t??4,e=>{this._insunits=e})}get ltscale(){return this._ltscale}set ltscale(t){this.updateSysVar(Ut.LTSCALE,this._ltscale,t??1,e=>{this._ltscale=e})}get lwdisplay(){return this._lwdisplay}set lwdisplay(t){this.updateSysVar(Ut.LWDISPLAY,this._lwdisplay,t??!1,e=>{this._lwdisplay=e})}get cecolor(){return this._cecolor}set cecolor(t){this.updateSysVar(Ut.CECOLOR,this._cecolor,t||0,e=>{this._cecolor=e.clone()})}get celtscale(){return this._celtscale}set celtscale(t){this.updateSysVar(Ut.CELTSCALE,this._celtscale,t??1,e=>{this._celtscale=e})}get celweight(){return this._celweight}set celweight(t){this.updateSysVar(Ut.CELWEIGHT,this._celweight,t??an.ByLayer,e=>{this._celweight=e})}get clayer(){return this._clayer}set clayer(t){this.updateSysVar(Ut.CLAYER,this._clayer,t??"0",e=>{this._clayer=e})}get textstyle(){return this._textstyle}set textstyle(t){this.updateSysVar(Ut.TEXTSTYLE,this._textstyle,t??Ie,e=>{this._textstyle=e})}get angBase(){return this._angBase}set angBase(t){this.updateSysVar(Ut.ANGBASE,this._angBase,t??0,e=>{this._angBase=e})}get angDir(){return this._angDir}set angDir(t){this.updateSysVar(Ut.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(Ut.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(Ut.EXTMIN,e,this._extents.min)}}get extents(){return this._extents}get pdmode(){return this._pdmode}set pdmode(t){this.updateSysVar(Ut.PDMODE,this._pdmode,t??0,e=>{this._pdmode=e})}get pdsize(){return this._pdsize}set pdsize(t){this.updateSysVar(Ut.PDSIZE,this._pdsize,t??0,e=>{this._pdsize=e})}get osmode(){return this._osmode}set osmode(t){this.updateSysVar(Ut.OSMODE,this._osmode,t??0,e=>{this._osmode=e})}async read(t,e,s=Ks.DXF){const a=yr.instance.get(s);if(a==null)throw new Error(`Database converter for file type '${s}' isn't registered and can can't read this file!`);this.clear(),await a.read(t,this,e&&e.minimumChunkSize||10,async(h,u,m,b)=>{if(this.events.openProgress.dispatch({database:this,percentage:h,stage:"CONVERSION",subStage:u,subStageStatus:m,data:b}),e&&e.fontLoader&&u=="FONT"&&m=="END"){const _=b||this.tables.textStyleTable.fonts;await e.fontLoader.load(_)}},e==null?void 0:e.timeout)}async openUri(t,e){var T;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 a=s.headers.get("content-length"),h=a?parseInt(a,10):null;let u=0;const m=(T=s.body)==null?void 0:T.getReader();if(!m)throw new Error("Failed to get response reader");const b=[];for(;;){const{done:L,value:O}=await m.read();if(L)break;if(b.push(O),u+=O.length,h!==null){const V=Math.round(u/h*100);this.events.openProgress.dispatch({database:this,percentage:V,stage:"FETCH_FILE",subStageStatus:"IN-PROGRESS"})}}const _=new Uint8Array(u);let w=0;for(const L of b)_.set(L,w),w+=L.length;const A=this.getFileNameFromUri(t).toLowerCase().split(".").pop();A==="dwg"?await this.read(_.buffer,e,Ks.DWG):A==="dxf"?await this.read(_.buffer,e,Ks.DXF):await this.read(_.buffer,e,A),this.events.openProgress.dispatch({database:this,percentage:100,stage:"FETCH_FILE",subStageStatus:"END"})}async regen(){await new sc(this).read(null,this,500,async(e,s,a,h)=>{this.events.openProgress.dispatch({database:this,percentage:e,stage:"CONVERSION",subStage:s,subStageStatus:a,data:h})})}createDefaultData(t={layer:!0,lineType:!0,textStyle:!0,dimStyle:!0,layout:!0}){const e=new Gh(this);t.layer&&e.createDefaultLayer(),t.lineType&&e.createDefaultLineType(),t.textStyle&&e.createDefaultTextStyle(),t.dimStyle&&e.createDefaultDimStyle(),t.layout&&e.createDefaultLayout()}clear(){this._tables.blockTable.removeAll(),this._tables.dimStyleTable.removeAll(),this._tables.linetypeTable.removeAll(),this._tables.textStyleTable.removeAll(),this._tables.layerTable.removeAll(),this._tables.viewportTable.removeAll(),this._objects.layout.removeAll(),this._currentSpace=void 0,this._extents.makeEmpty()}updateSysVar(t,e,s,a){this.hasSysVarValueChanged(e,s)&&(a(s),this.triggerSysVarChangedEvent(t,e,s))}hasSysVarValueChanged(t,e){return t instanceof ce&&e instanceof ce?!t.equals(e):t instanceof qn&&e instanceof qn?t.value!==e.value:!Object.is(t,e)}triggerSysVarChangedEvent(t,e,s){const a=qi.instance(),h=t.toLowerCase();a.getDescriptor(h)!=null&&a.events.sysVarChanged.dispatch({database:this,name:h,oldVal:e,newVal:s})}getFileNameFromUri(t){try{const s=new URL(t).pathname.split("/");return s[s.length-1]||""}catch(e){return console.error("Invalid URI:",e),""}}};Ki.MLIGHTCAD_APPID="mlightcad";let Fa=Ki;var pc=(n=>(n[n.Center=0]="Center",n[n.Left=1]="Left",n[n.Right=2]="Right",n[n.OverFirst=3]="OverFirst",n[n.OverSecond=4]="OverSecond",n))(pc||{}),mc=(n=>(n[n.Center=0]="Center",n[n.Above=1]="Above",n[n.Outside=2]="Outside",n[n.JIS=3]="JIS",n[n.Below=4]="Below",n))(mc||{}),gc=(n=>(n[n.Feet=0]="Feet",n[n.None=1]="None",n[n.Inch=2]="Inch",n[n.FeetAndInch=3]="FeetAndInch",n[n.Leading=4]="Leading",n[n.Trailing=8]="Trailing",n[n.LeadingAndTrailing=12]="LeadingAndTrailing",n))(gc||{}),fc=(n=>(n[n.None=0]="None",n[n.Leading=1]="Leading",n[n.Trailing=2]="Trailing",n[n.LeadingAndTrailing=3]="LeadingAndTrailing",n))(fc||{}),_c=(n=>(n[n.Bottom=0]="Bottom",n[n.Middle=1]="Middle",n[n.Top=2]="Top",n))(_c||{});const $i=class $i extends on{constructor(t,e){t=t||{},Jn(t,$i.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)}};$i.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:Ie,dimldrblk:"",dimblk:"",dimblk1:"",dimblk2:"",dimlwd:-2,dimlwe:-2};let Qn=$i;class $s extends on{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}}class mo extends on{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}}const ap={center:new kt,viewDirectionFromTarget:new W(0,0,1),viewTarget:new W(0,0,0),lensLength:500,frontClippingPlane:0,backClippingPlane:0,viewHeight:1e3,viewTwistAngle:0,frozenLayers:[],styleSheet:"",renderMode:no.OPTIMIZED_2D,viewMode:0,ucsIconSetting:0,ucsOrigin:new W(0,0,0),ucsXAxis:new W(1,0,0),ucsYAxis:new W(0,1,0),orthographicType:so.TOP,shadePlotSetting:0,shadePlotObjectId:void 0,visualStyleObjectId:void 0,isDefaultLightingOn:!1,defaultLightingType:io.ONE_DISTANT_LIGHT,brightness:0,contrast:0,ambientColor:void 0};class yc extends on{constructor(){super(),this._circleSides=100,this._center=new kt,this._lowerLeftCorner=new kt(0,0),this._upperRightCorner=new kt(1,1),this._snapBase=new kt(0,0),this._snapAngle=0,this._snapSpacing=new kt(0,0),this._standardFlag=0,this._gridSpacing=new kt,this._gridMajor=10,this._gsView=ap}get circleSides(){return this._circleSides}set circleSides(t){this._circleSides=t}get center(){return this._center}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}get gsView(){return this._gsView}}class vc{constructor(){this.events={layoutCreated:new le,layoutRemoved:new le,layoutRenamed:new le,layoutSwitched:new le}}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),a=s.objects.layout.getIdAt(t);return this.setCurrentLayoutInternal(a,s)}setCurrentLayoutBtrId(t,e){const s=this.getWorkingDatabase(e),a=s.objects.layout.getBtrIdAt(t);return this.setCurrentLayoutInternal(a,s)}setCurrentLayout(t,e){const s=this.getWorkingDatabase(e),a=s.objects.layout.getAt(t);return this.setCurrentLayoutInternal(a,s)}renameLayout(t,e,s){const h=this.getWorkingDatabase(s).objects.layout.getAt(t);return h?(h.layoutName=e,this.events.layoutRenamed.dispatch({layout:h,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,a=s.getAt(t);let h=!1;return a&&(h=s.remove(t),h&&this.events.layoutRemoved.dispatch({layout:a})),h}createLayout(t,e){const s=this.getWorkingDatabase(e),a=new na;a.layoutName=t,a.tabOrder=s.objects.layout.maxTabOrder;const h=new ue;return h.name=`*Paper_Space${a.tabOrder}`,s.tables.blockTable.add(h),s.objects.layout.setAt(t,a),this.events.layoutCreated.dispatch({layout:a}),{layout:a,btr:h}}getActiveLayout(t){const e=this.getWorkingDatabase(t);return e.objects.layout.getBtrIdAt(e.currentSpaceId)}getWorkingDatabase(t){return t||go().workingDatabase}setCurrentLayoutInternal(t,e){return t?(this.events.layoutSwitched.dispatch({layout:t}),e.currentSpaceId=t.blockTableRecordId,!0):!1}}function go(){return Xi.instance}const Zi=class Zi{constructor(){this._workingDatabase=null,this._layoutManager=new vc}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(){return this._layoutManager}};Zi.instance=new Zi;let Xi=Zi;var bc=(n=>(n.kForRead="kForRead",n.kForWrite="kForWrite",n))(bc||{});class fo{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 fo(this._values)}[Symbol.iterator](){return this._values[Symbol.iterator]()}}exports.AC_DB_SYSTEM_VARIABLE_NAMES=ip;exports.AcCmColor=ce;exports.AcCmColorMethod=ct;exports.AcCmColorUtil=en;exports.AcCmEntityColor=Fc;exports.AcCmErrors=Ze;exports.AcCmEventDispatcher=Vc;exports.AcCmEventManager=le;exports.AcCmLoader=Xc;exports.AcCmLoadingManager=Gl;exports.AcCmObject=Fl;exports.AcCmPerformanceCollector=Ua;exports.AcCmTask=Ul;exports.AcCmTaskScheduler=jl;exports.AcCmTransparency=Qi;exports.AcCmTransparencyMethod=Ne;exports.AcDb2dPolyline=Si;exports.AcDb2dVertex=Oa;exports.AcDb2dVertexType=kh;exports.AcDb3PointAngularDimension=Ui;exports.AcDb3dPolyline=Ii;exports.AcDb3dVertex=Ba;exports.AcDb3dVertexType=Nh;exports.AcDbAlignedDimension=ji;exports.AcDbAngleUnits=Ga;exports.AcDbArc=Pi;exports.AcDbArcDimension=Ra;exports.AcDbAttribute=Ei;exports.AcDbAttributeDefinition=Ai;exports.AcDbAttributeFlags=he;exports.AcDbAttributeMTextFlag=vr;exports.AcDbBaseWorker=sp;exports.AcDbBatchProcessing=ja;exports.AcDbBlockReference=Zn;exports.AcDbBlockTable=ic;exports.AcDbBlockTableRecord=ue;exports.AcDbCircle=Ti;exports.AcDbCodePage=Wa;exports.AcDbCurve=Ce;exports.AcDbDataGenerator=Gh;exports.AcDbDatabase=Fa;exports.AcDbDatabaseConverter=lo;exports.AcDbDatabaseConverterManager=yr;exports.AcDbDiametricDimension=Gi;exports.AcDbDictionary=Ys;exports.AcDbDimArrowType=Wh;exports.AcDbDimStyleTable=ac;exports.AcDbDimStyleTableRecord=Qn;exports.AcDbDimTextHorizontal=pc;exports.AcDbDimTextVertical=mc;exports.AcDbDimVerticalJustification=_c;exports.AcDbDimZeroSuppression=gc;exports.AcDbDimZeroSuppressionAngular=fc;exports.AcDbDimension=Gr;exports.AcDbDuplicateRecordCloning=jh;exports.AcDbDwgVersion=qn;exports.AcDbDxfCode=Va;exports.AcDbDxfConverter=nc;exports.AcDbEllipse=Mi;exports.AcDbEntity=Le;exports.AcDbFace=ki;exports.AcDbFileType=Ks;exports.AcDbHatch=Zs;exports.AcDbHatchPatternType=Xs;exports.AcDbHatchStyle=Oh;exports.AcDbHostApplicationServices=Xi;exports.AcDbLayerTable=oc;exports.AcDbLayerTableRecord=ia;exports.AcDbLayout=na;exports.AcDbLayoutDictionary=Vh;exports.AcDbLayoutManager=vc;exports.AcDbLeader=Ni;exports.AcDbLeaderAnnotationType=Bh;exports.AcDbLine=Qs;exports.AcDbLineSpacingStyle=Fh;exports.AcDbLinetypeTable=lc;exports.AcDbLinetypeTableRecord=$s;exports.AcDbMText=Js;exports.AcDbObject=Wr;exports.AcDbObjectIterator=si;exports.AcDbOpenMode=bc;exports.AcDbOrdinateDimension=Wi;exports.AcDbOsnapMode=Ft;exports.AcDbPoint=Bi;exports.AcDbPoly2dType=Hn;exports.AcDbPoly3dType=qs;exports.AcDbPolyline=Oi;exports.AcDbRadialDimension=Di;exports.AcDbRasterImage=ei;exports.AcDbRasterImageClipBoundaryType=Rh;exports.AcDbRasterImageDef=Uh;exports.AcDbRasterImageImageDisplayOpt=zh;exports.AcDbRay=Ri;exports.AcDbRegAppTable=cc;exports.AcDbRegAppTableRecord=dc;exports.AcDbRegenerator=sc;exports.AcDbRenderingCache=ts;exports.AcDbResultBuffer=fo;exports.AcDbSpline=ti;exports.AcDbSymbolTable=ln;exports.AcDbSymbolTableRecord=on;exports.AcDbSysVarManager=qi;exports.AcDbSystemVariables=Ut;exports.AcDbTable=Li;exports.AcDbText=$n;exports.AcDbTextHorizontalMode=Lh;exports.AcDbTextStyleTable=hc;exports.AcDbTextStyleTableRecord=mo;exports.AcDbTextVerticalMode=Ch;exports.AcDbTrace=Ci;exports.AcDbUnitsValue=oo;exports.AcDbViewport=zi;exports.AcDbViewportTable=uc;exports.AcDbViewportTableRecord=yc;exports.AcDbWipeout=Fi;exports.AcDbWorkerApi=ec;exports.AcDbWorkerManager=tc;exports.AcDbXline=Vi;exports.AcDbXrecord=ao;exports.AcGeArea2d=ta;exports.AcGeBox2d=Pe;exports.AcGeBox3d=Nt;exports.AcGeCatmullRomCurve3d=Ah;exports.AcGeCircArc2d=Yn;exports.AcGeCircArc3d=to;exports.AcGeCurve2d=es;exports.AcGeEllipseArc2d=ea;exports.AcGeEllipseArc3d=ra;exports.AcGeEuler=ed;exports.AcGeGeometryUtil=mh;exports.AcGeLine2d=Hs;exports.AcGeLine3d=Kn;exports.AcGeLoop2d=eo;exports.AcGeMathUtil=It;exports.AcGeMatrix2d=Ji;exports.AcGeMatrix3d=$e;exports.AcGeNurbsCurve=Pn;exports.AcGePlane=ri;exports.AcGePoint2d=kt;exports.AcGePoint3d=W;exports.AcGePolyline2d=Tn;exports.AcGeQuaternion=En;exports.AcGeShape2d=Ja;exports.AcGeSpline3d=sn;exports.AcGeTol=$a;exports.AcGeVector2d=te;exports.AcGeVector3d=Y;exports.AcGiArrowType=ro;exports.AcGiDefaultLightingType=io;exports.AcGiLineWeight=an;exports.AcGiMTextAttachmentPoint=Se;exports.AcGiMTextFlowDirection=jr;exports.AcGiOrthographicType=so;exports.AcGiRenderMode=no;exports.AcGiViewport=Eh;exports.AcTrStringUtil=qc;exports.ByBlock=Hl;exports.ByLayer=mi;exports.DEBUG_MODE=Dc;exports.DEFAULT_LINE_TYPE=xi;exports.DEFAULT_TEXT_STYLE=Ie;exports.DEFAULT_TOL=Za;exports.DEG2RAD=Da;exports.DefaultLoadingManager=Wl;exports.FLOAT_TOL=Sn;exports.ORIGIN_POINT_2D=Kc;exports.ORIGIN_POINT_3D=Ka;exports.RAD2DEG=Ha;exports.TAU=Qt;exports.acdbDisableOsnapMode=cd;exports.acdbEnableOsnapMode=ud;exports.acdbHasOsnapMode=hd;exports.acdbHostApplicationServices=go;exports.acdbMaskToOsnapModes=od;exports.acdbOsnapModesToMask=ad;exports.acdbToggleOsnapMode=ld;exports.basisFunction=wi;exports.calculateCurveLength=yh;exports.ceilPowerOfTwo=ah;exports.clamp=Ur;exports.clone=Us;exports.createWorkerApi=rc;exports.damp=Kl;exports.deepClone=Ma;exports.defaults=Jn;exports.degToRad=nh;exports.dwgCodePageToEncoding=Dl;exports.euclideanModulo=qa;exports.evaluateNurbsPoint=Ds;exports.floorPowerOfTwo=oh;exports.generateChordKnots=fh;exports.generateSqrtChordKnots=_h;exports.generateUUID=ql;exports.generateUniformKnots=gh;exports.has=Ol;exports.intPartLength=Ya;exports.interpolateControlPoints=$c;exports.inverseLerp=Yl;exports.isBetween=lh;exports.isBetweenAngle=hh;exports.isEmpty=Bl;exports.isEqual=Xn;exports.isImperialUnits=md;exports.isMetricUnits=pd;exports.isPointInPolygon=Qa;exports.isPolygonIntersect=ph;exports.isPowerOfTwo=ih;exports.lerp=Xa;exports.log=Gs;exports.mapLinear=Xl;exports.normalizeAngle=Ws;exports.pingpong=$l;exports.radToDeg=sh;exports.randFloat=th;exports.randFloatSpread=eh;exports.randInt=Jl;exports.relativeEps=uh;exports.seededRandom=rh;exports.setLogLevel=Hc;exports.smootherstep=Ql;exports.smoothstep=Zl;