@arcgis/core 4.33.0-next.20250207 → 4.33.0-next.20250209

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 (87) hide show
  1. package/applications/Components/styleUtils.js +1 -1
  2. package/applications/Components/webStyleSymbolUtils.js +1 -1
  3. package/arcade/treeAnalysis.js +1 -1
  4. package/assets/esri/core/workers/RemoteClient.js +1 -1
  5. package/assets/esri/core/workers/chunks/{5b20ee64248f2d5c937f.js → 08980b1ad3d5d67c6390.js} +1 -1
  6. package/assets/esri/core/workers/chunks/{b1f5344e57ee679a7e81.js → 140d0c4285c6978103ea.js} +7 -7
  7. package/assets/esri/core/workers/chunks/{2a7f5d09cdc0333fa4bd.js → 2611adb4f328f95ee508.js} +1 -1
  8. package/assets/esri/core/workers/chunks/2def7db73a776e759dae.js +1 -0
  9. package/assets/esri/core/workers/chunks/{32f5f00aab55ef16dcf1.js → 5b85f9da022742f602e2.js} +1 -1
  10. package/assets/esri/core/workers/chunks/{bab541feca7ab4d3f993.js → 6ea02ff25f051c08e6c3.js} +1 -1
  11. package/assets/esri/core/workers/chunks/{8e334fa440ae542e2e34.js → 7e49ddb5a2182f2c9ca6.js} +1 -1
  12. package/assets/esri/core/workers/chunks/b97673755cd2cc5164e8.js +1 -0
  13. package/assets/esri/core/workers/chunks/bb9ab85a135d211637f6.js +1 -0
  14. package/assets/esri/core/workers/chunks/c26ffbff1115e76bcb0f.js +1 -0
  15. package/assets/esri/core/workers/chunks/c38c154062cd838dd144.js +1 -0
  16. package/assets/esri/core/workers/chunks/{4decfae8bc5e80878bdd.js → de4384b5833a60e88e31.js} +1 -1
  17. package/assets/esri/core/workers/chunks/e37e5d2e233d7f6ccd52.js +314 -0
  18. package/assets/esri/core/workers/chunks/e93dea6b112ce8e2779b.js +1 -0
  19. package/assets/esri/core/workers/chunks/edb580ce96da6fd66503.js +1 -0
  20. package/chunks/ImageMaterial.glsl.js +4 -4
  21. package/geometry/Mesh.js +1 -1
  22. package/geometry/support/Indices.js +1 -1
  23. package/geometry/support/meshUtils/deduplicate.js +1 -1
  24. package/geometry/support/meshVertexSpaceUtils.js +1 -1
  25. package/geometry/support/triangulationUtils.js +1 -1
  26. package/interfaces.d.ts +3 -28
  27. package/package.json +1 -1
  28. package/support/arcadeUtils.js +1 -1
  29. package/support/revision.js +1 -1
  30. package/symbols/WebStyleSymbol.js +1 -1
  31. package/symbols/support/previewSymbol3D.js +1 -1
  32. package/symbols/support/previewWebStyleSymbol.js +1 -1
  33. package/symbols/support/styleUtils.js +1 -1
  34. package/symbols/support/symbolUtils.js +1 -1
  35. package/symbols/support/utils.js +1 -1
  36. package/symbols/support/webStyleAcceptedFormats.js +5 -0
  37. package/symbols/support/webStyleSymbolUtils.js +1 -1
  38. package/views/3d/glTF/internal/resourceUtils.js +1 -1
  39. package/views/3d/layers/MediaLayerView3D.js +1 -1
  40. package/views/3d/layers/graphics/Graphics3DMeshFillSymbolLayer.js +1 -1
  41. package/views/3d/layers/graphics/Graphics3DWebStyleSymbol.js +1 -1
  42. package/views/3d/layers/graphics/Labeler.js +1 -1
  43. package/views/3d/layers/graphics/pipeline/Feature3DPipeline.js +1 -1
  44. package/views/3d/layers/graphics/pipeline/Feature3DPipelineWorker.js +1 -1
  45. package/views/3d/layers/graphics/pipeline/Feature3DPipelineWorkerHandle.js +1 -1
  46. package/views/3d/layers/graphics/pipeline/PipelineCommand.js +1 -1
  47. package/views/3d/layers/graphics/pipeline/featureData/FeatureData.js +1 -1
  48. package/views/3d/layers/graphics/pipeline/featureData/processingUtils.js +1 -1
  49. package/views/3d/layers/graphics/pipeline/rendering/DirectRenderer.js +1 -1
  50. package/views/3d/layers/graphics/pipeline/rendering/FeaturePipelineRenderManager.js +1 -1
  51. package/views/3d/layers/graphics/pipeline/rendering/LodRenderer.js +1 -1
  52. package/views/3d/layers/graphics/pipeline/rendering/RenderCommandContext.js +1 -1
  53. package/views/3d/layers/graphics/pipeline/rendering/RenderCommandEncoder.js +1 -1
  54. package/views/3d/layers/graphics/pipeline/rendering/RenderGeometryBufferWriter.js +1 -1
  55. package/views/3d/layers/graphics/pipeline/symbolization/TestObjectSymbol.js +1 -1
  56. package/views/3d/layers/graphics/pipeline/symbolization/TestSymbol.js +1 -1
  57. package/views/3d/layers/graphics/pipeline/symbolization/UniqueValueFeatureRenderer.js +1 -1
  58. package/views/3d/layers/graphics/pipeline/symbolization/primitiveObjectUtils.js +1 -1
  59. package/views/3d/layers/graphics/pipeline/utils.js +5 -0
  60. package/views/3d/layers/graphics/webStyleUtils.js +1 -1
  61. package/views/3d/layers/graphics/wosrLoader.js +1 -1
  62. package/views/3d/webgl-engine/lib/GLTextureMaterial.js +1 -1
  63. package/views/3d/webgl-engine/lib/Texture.js +1 -1
  64. package/views/3d/webgl-engine/lib/TextureRepository.js +1 -1
  65. package/views/3d/webgl-engine/materials/DefaultBufferWriter.js +1 -1
  66. package/views/3d/webgl-engine/materials/DefaultMaterial.js +1 -1
  67. package/views/3d/webgl-engine/materials/HUDMaterial.js +1 -1
  68. package/views/3d/webgl-engine/materials/HeatmapDensityMaterial.js +1 -1
  69. package/views/3d/webgl-engine/materials/ImageMaterial.js +1 -1
  70. package/views/3d/webgl-engine/materials/LineCalloutMaterial.js +1 -1
  71. package/views/3d/webgl-engine/materials/LineMarkerMaterial.js +1 -1
  72. package/views/3d/webgl-engine/materials/MeasurementArrowMaterial.js +1 -1
  73. package/views/3d/webgl-engine/materials/PatternMaterial.js +1 -1
  74. package/views/3d/webgl-engine/materials/RibbonLineMaterial.js +1 -1
  75. package/views/3d/webgl-engine/materials/ShadedColorMaterial.js +1 -1
  76. package/views/3d/webgl-engine/materials/internal/bufferWriterUtils.js +1 -1
  77. package/views/3d/webgl-engine/parts/RenderView.js +1 -1
  78. package/views/3d/webgl-engine/shaders/ImageMaterial.glsl.js +1 -1
  79. package/views/3d/webgl-engine/shaders/ImageMaterialTechnique.js +1 -1
  80. package/assets/esri/core/workers/chunks/1100d9d114287b6443e2.js +0 -1
  81. package/assets/esri/core/workers/chunks/459af0c3d62c3ed11c19.js +0 -1
  82. package/assets/esri/core/workers/chunks/6ec108bd955e064256b5.js +0 -1
  83. package/assets/esri/core/workers/chunks/7b11bf5799ecb3640b48.js +0 -314
  84. package/assets/esri/core/workers/chunks/81efe1f47fd41b7a5cc1.js +0 -1
  85. package/assets/esri/core/workers/chunks/92871ebb339a7b6ff29c.js +0 -1
  86. package/assets/esri/core/workers/chunks/b3f9d7a676076a7557f5.js +0 -1
  87. package/assets/esri/core/workers/chunks/fe817283bbcbca8fb296.js +0 -1
@@ -1,314 +0,0 @@
1
- "use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[5132],{13259:(e,t,i)=>{i.d(t,{H:()=>B,b:()=>P,c:()=>N,s:()=>D});var r=i(37585),s=i(48163),n=i(91829),a=i(79258),o=i(49255),l=i(76591),c=i(36782),h=i(47522),d=i(40268),u=i(63578),f=i(13755),p=i(2981),_=i(42398),m=i(63365),g=i(26835),y=i(52587),v=i(20693),x=i(47286),b=i(14314),w=i(81961),T=i(71988),A=i(33094),R=i(20304),S=i(31821),I=i(12791),O=i(63761),M=i(59643),E=i(46540),C=i(14113),F=i(49788);const D={occludedFadeFactor:1};function P(e){const t=new C.N5,i=e.signedDistanceFieldEnabled;t.include(d.Q,e),t.vertex.include(l.rA,e);const{occlusionPass:s,output:D,oitPass:P}=e;if(s)return t.include(u.I,e),t;const{vertex:B,fragment:U}=t;t.include(y.Y6),t.include(_.A,e),t.include(c.g,e),t.include(f.y),U.include(g.W),U.include(m.a),t.varyings.add("vcolor","vec4"),t.varyings.add("vtc","vec2"),t.varyings.add("vsize","vec2");const V=D===o.V.Highlight,j=V&&e.occlusionTestEnabled;j&&t.varyings.add("voccluded","float"),B.uniforms.add(new b.I("viewport",(e=>e.camera.fullViewport)),new x.G("screenOffset",((e,t)=>(0,r.hZ)(z,2*e.screenOffset[0]*t.camera.pixelRatio,2*e.screenOffset[1]*t.camera.pixelRatio))),new x.G("anchorPosition",(e=>N(e))),new T.E("materialColor",(e=>e.color)),new R.m("materialRotation",(e=>e.rotation))),(0,v.Nz)(B),i&&(B.uniforms.add(new T.E("outlineColor",(e=>e.outlineColor))),U.uniforms.add(new T.E("outlineColor",(e=>L(e)?e.outlineColor:n.uY)),new R.m("outlineSize",(e=>L(e)?e.outlineSize:0)))),e.horizonCullingEnabled&&B.uniforms.add(new w.V("pointDistanceSphere",((e,t)=>{const i=t.camera.eye,r=e.origin;return(0,n.fA)(r[0]-i[0],r[1]-i[1],r[2]-i[2],a.$O.radius)}))),e.pixelSnappingEnabled&&B.include(h.K),e.hasScreenSizePerspective&&((0,y.pM)(B),(0,y.OH)(B)),e.debugDrawLabelBorder&&t.varyings.add("debugBorderCoords","vec4"),t.attributes.add(E.r.UV0,"vec2"),t.attributes.add(E.r.COLOR,"vec4"),t.attributes.add(E.r.SIZE,"vec2"),t.attributes.add(E.r.ROTATION,"float"),t.attributes.add(E.r.FEATUREATTRIBUTE,"vec4"),B.code.add(e.horizonCullingEnabled?S.H`bool behindHorizon(vec3 posModel) {
2
- vec3 camToEarthCenter = pointDistanceSphere.xyz - localOrigin;
3
- vec3 camToPos = pointDistanceSphere.xyz + posModel;
4
- float earthRadius = pointDistanceSphere.w;
5
- float a = dot(camToPos, camToPos);
6
- float b = dot(camToPos, camToEarthCenter);
7
- float c = dot(camToEarthCenter, camToEarthCenter) - earthRadius * earthRadius;
8
- return b > 0.0 && b < a && b * b > a * c;
9
- }`:S.H`bool behindHorizon(vec3 posModel) { return false; }`),B.main.add(S.H`
10
- ProjectHUDAux projectAux;
11
- vec4 posProj = projectPositionHUD(projectAux);
12
- forwardObjectAndLayerIdColor();
13
-
14
- if (rejectBySlice(projectAux.posModel)) {
15
- // Project outside of clip plane
16
- gl_Position = vec4(1e038, 1e038, 1e038, 1.0);
17
- return;
18
- }
19
-
20
- if (behindHorizon(projectAux.posModel)) {
21
- // Project outside of clip plane
22
- gl_Position = vec4(1e038, 1e038, 1e038, 1.0);
23
- return;
24
- }
25
-
26
- vec2 inputSize;
27
- ${(0,S.If)(e.hasScreenSizePerspective,S.H`
28
- inputSize = screenSizePerspectiveScaleVec2(size, projectAux.absCosAngle, projectAux.distanceToCamera, screenSizePerspective);
29
- vec2 screenOffsetScaled = screenSizePerspectiveScaleVec2(screenOffset, projectAux.absCosAngle, projectAux.distanceToCamera, screenSizePerspectiveAlignment);`,S.H`
30
- inputSize = size;
31
- vec2 screenOffsetScaled = screenOffset;`)}
32
- ${(0,S.If)(e.vvSize,S.H`inputSize *= vvScale(featureAttribute).xx;`)}
33
-
34
- vec2 combinedSize = inputSize * pixelRatio;
35
- vec4 quadOffset = vec4(0.0);
36
-
37
- ${(0,S.If)(e.occlusionTestEnabled,S.H`
38
- bool visible = testHUDVisibility(posProj);
39
- if (!visible) {
40
- vtc = vec2(0.0);
41
- ${(0,S.If)(e.debugDrawLabelBorder,"debugBorderCoords = vec4(0.5, 0.5, 1.5 / combinedSize);")}
42
- return;
43
- }`)}
44
- ${(0,S.If)(j,S.H`voccluded = visible ? 0.0 : 1.0;`)}
45
- `);const H=S.H`
46
- vec2 uv01 = floor(uv0);
47
- vec2 uv = uv0 - uv01;
48
- quadOffset.xy = (uv01 - anchorPosition) * 2.0 * combinedSize;
49
-
50
- ${(0,S.If)(e.hasRotation,S.H`
51
- float angle = radians(materialRotation + rotation);
52
- float cosAngle = cos(angle);
53
- float sinAngle = sin(angle);
54
- mat2 rotate = mat2(cosAngle, -sinAngle, sinAngle, cosAngle);
55
-
56
- quadOffset.xy = rotate * quadOffset.xy;
57
- `)}
58
-
59
- quadOffset.xy = (quadOffset.xy + screenOffsetScaled) / viewport.zw * posProj.w;
60
- `,G=e.pixelSnappingEnabled?i?S.H`posProj = alignToPixelOrigin(posProj, viewport.zw) + quadOffset;`:S.H`posProj += quadOffset;
61
- if (inputSize.x == size.x) {
62
- posProj = alignToPixelOrigin(posProj, viewport.zw);
63
- }`:S.H`posProj += quadOffset;`;B.main.add(S.H`
64
- ${H}
65
- ${e.vvColor?"vcolor = interpolateVVColor(featureAttribute.y) * materialColor;":"vcolor = color / 255.0 * materialColor;"}
66
-
67
- ${(0,S.If)(D===o.V.ObjectAndLayerIdColor,S.H`vcolor.a = 1.0;`)}
68
-
69
- bool alphaDiscard = vcolor.a < ${S.H.float(F.Q)};
70
- ${(0,S.If)(i,`alphaDiscard = alphaDiscard && outlineColor.a < ${S.H.float(F.Q)};`)}
71
- if (alphaDiscard) {
72
- // "early discard" if both symbol color (= fill) and outline color (if applicable) are transparent
73
- gl_Position = vec4(1e38, 1e38, 1e38, 1.0);
74
- return;
75
- } else {
76
- ${G}
77
- gl_Position = posProj;
78
- }
79
-
80
- vtc = uv;
81
-
82
- ${(0,S.If)(e.debugDrawLabelBorder,S.H`debugBorderCoords = vec4(uv01, 1.5 / combinedSize);`)}
83
- vsize = inputSize;
84
- `),U.uniforms.add(new O.N("tex",(e=>e.texture))),e.occludedFragmentFade&&(U.uniforms.add(new I.x("depthMap",(e=>e.mainDepth))),U.uniforms.add(new A.U("occludedOpacity",(e=>e.hudOccludedFragmentOpacity))));const k=e.debugDrawLabelBorder?S.H`(isBorder > 0.0 ? 0.0 : ${S.H.float(F.Q)})`:S.H.float(F.Q),q=S.H`
85
- ${(0,S.If)(e.debugDrawLabelBorder,S.H`float isBorder = float(any(lessThan(debugBorderCoords.xy, debugBorderCoords.zw)) || any(greaterThan(debugBorderCoords.xy, 1.0 - debugBorderCoords.zw)));`)}
86
-
87
- ${(0,S.If)(e.sampleSignedDistanceFieldTexelCenter,S.H`
88
- float txSize = float(textureSize(tex, 0).x);
89
- float texelSize = 1.0 / txSize;
90
-
91
- // Calculate how much we have to add/subtract to/from each texel to reach the size of an onscreen pixel
92
- vec2 scaleFactor = (vsize - txSize) * texelSize;
93
- vec2 samplePos = vtc + (vec2(1.0, -1.0) * texelSize) * scaleFactor;`,S.H`vec2 samplePos = vtc;`)}
94
-
95
- ${i?S.H`
96
- vec4 fillPixelColor = vcolor;
97
-
98
- // Get distance and map it into [-0.5, 0.5]
99
- float d = rgbaTofloat(texture(tex, samplePos)) - 0.5;
100
-
101
- // Distance in output units (i.e. pixels)
102
- float dist = d * vsize.x;
103
-
104
- // Create smooth transition from the icon into its outline
105
- float fillAlphaFactor = clamp(0.5 - dist, 0.0, 1.0);
106
- fillPixelColor.a *= fillAlphaFactor;
107
-
108
- if (outlineSize > 0.25) {
109
- vec4 outlinePixelColor = outlineColor;
110
- float clampedOutlineSize = min(outlineSize, 0.5*vsize.x);
111
-
112
- // Create smooth transition around outline
113
- float outlineAlphaFactor = clamp(0.5 - (abs(dist) - 0.5*clampedOutlineSize), 0.0, 1.0);
114
- outlinePixelColor.a *= outlineAlphaFactor;
115
-
116
- if (
117
- outlineAlphaFactor + fillAlphaFactor < ${k} ||
118
- fillPixelColor.a + outlinePixelColor.a < ${S.H.float(F.Q)}
119
- ) {
120
- discard;
121
- }
122
-
123
- // perform un-premultiplied over operator (see https://en.wikipedia.org/wiki/Alpha_compositing#Description)
124
- float compositeAlpha = outlinePixelColor.a + fillPixelColor.a * (1.0 - outlinePixelColor.a);
125
- vec3 compositeColor = vec3(outlinePixelColor) * outlinePixelColor.a +
126
- vec3(fillPixelColor) * fillPixelColor.a * (1.0 - outlinePixelColor.a);
127
-
128
- ${(0,S.If)(!V,S.H`fragColor = vec4(compositeColor, compositeAlpha);`)}
129
- } else {
130
- if (fillAlphaFactor < ${k}) {
131
- discard;
132
- }
133
-
134
- ${(0,S.If)(!V,S.H`fragColor = premultiplyAlpha(fillPixelColor);`)}
135
- }
136
-
137
- // visualize SDF:
138
- // fragColor = vec4(clamp(-dist/vsize.x*2.0, 0.0, 1.0), clamp(dist/vsize.x*2.0, 0.0, 1.0), 0.0, 1.0);
139
- `:S.H`
140
- vec4 texColor = texture(tex, vtc, -0.5);
141
- if (texColor.a < ${k}) {
142
- discard;
143
- }
144
- ${(0,S.If)(!V,S.H`fragColor = texColor * premultiplyAlpha(vcolor);`)}
145
- `}
146
-
147
- ${(0,S.If)(e.occludedFragmentFade&&!V,S.H`
148
- float zSample = texelFetch(depthMap, ivec2(gl_FragCoord.xy), 0).x;
149
- if (zSample < gl_FragCoord.z) {
150
- fragColor *= occludedOpacity;
151
- }
152
- `)}
153
-
154
- ${(0,S.If)(!V&&e.debugDrawLabelBorder,S.H`fragColor = mix(fragColor, vec4(1.0, 0.0, 1.0, 1.0), isBorder * 0.5);`)}
155
- `;switch(D){case o.V.Color:case o.V.ColorEmission:t.outputs.add("fragColor","vec4",0),D===o.V.ColorEmission&&t.outputs.add("fragEmission","vec4",1),P===M.Y.ColorAlpha&&t.outputs.add("fragAlpha","float",D===o.V.ColorEmission?2:1),U.main.add(S.H`
156
- ${q}
157
- ${(0,S.If)(P===M.Y.FrontFace,S.H`fragColor.rgb /= fragColor.a;`)}
158
- ${(0,S.If)(D===o.V.ColorEmission,S.H`fragEmission = vec4(0.0);`)}
159
- ${(0,S.If)(P===M.Y.ColorAlpha,S.H`fragAlpha = fragColor.a;`)}`);break;case o.V.ObjectAndLayerIdColor:U.main.add(S.H`
160
- ${q}
161
- outputObjectAndLayerIdColor();`);break;case o.V.Highlight:t.include(p.Q,e),U.main.add(S.H`
162
- ${q}
163
- outputHighlight(${(0,S.If)(j,S.H`voccluded == 1.0`,S.H`false`)});`)}return t}function L(e){return e.outlineColor[3]>0&&e.outlineSize>0}function N(e){return e.textureIsSignedDistanceField?(t=e.anchorPosition,i=e.distanceFieldBoundingBox,s=z,(0,r.hZ)(s,t[0]*(i[2]-i[0])+i[0],t[1]*(i[3]-i[1])+i[1])):(0,r.C)(z,e.anchorPosition),z;var t,i,s}const z=(0,s.vt)(),B=Object.freeze(Object.defineProperty({__proto__:null,build:P,calculateAnchorPosition:N,shaderSettings:D},Symbol.toStringTag,{value:"Module"}))},66344:(e,t,i)=>{i.d(t,{q:()=>l});var r,s,n=i(3694);(s=r||(r={}))[s.ALL=0]="ALL",s[s.SOME=1]="SOME";class a{get size(){return this._size}constructor(e=10485760){this._maxSize=e,this._db=new Map,this._size=0,this._hit=0,this._miss=0,this._removeFuncs=new n.A,this._users=new n.A}destroy(){this.clearAll(),this._removeFuncs.clear(),this._users.clear()}register(e){this._users.push(e)}deregister(e){this._users.removeUnordered(e)}registerRemoveFunc(e,t){this._removeFuncs.push([e,t])}deregisterRemoveFunc(e){this._removeFuncs.filterInPlace((t=>t[0]!==e))}get maxSize(){return this._maxSize}set maxSize(e){this._maxSize=Math.max(e,-1),this._checkSize()}getSize(e,t){const i=this._db.get(e.id+t);return i?.size??0}put(e,t,i,s,n){t=e.id+t;const a=this._db.get(t);if(a&&(this._size-=a.size,e.size-=a.size,this._db.delete(t),a.entry!==i&&this._notifyRemove(t,a.entry,a.size,r.ALL)),s>this._maxSize)return void this._notifyRemove(t,i,s,r.ALL);if(void 0===i)return void console.warn("Refusing to cache undefined entry ");if(!s||s<0)return console.warn(`Refusing to cache entry with size ${s} for key ${t}`),void this._notifyRemove(t,i,0,r.ALL);const l=1+Math.max(n,-4)- -3;this._db.set(t,new o(i,s,l)),this._size+=s,e.size+=s,this._checkSize()}updateSize(e,t,i,s){t=e.id+t;const n=this._db.get(t);if(n&&n.entry===i){for(this._size-=n.size,e.size-=n.size;s>this._maxSize;){const e=this._notifyRemove(t,i,s,r.SOME);if(!(null!=e&&e>0))return void this._db.delete(t);s=e}n.size=s,this._size+=s,e.size+=s,this._checkSize()}}pop(e,t){t=e.id+t;const i=this._db.get(t);if(i)return this._size-=i.size,e.size-=i.size,this._db.delete(t),++this._hit,i.entry;++this._miss}get(e,t){t=e.id+t;const i=this._db.get(t);if(void 0!==i)return this._db.delete(t),i.lives=i.lifetime,this._db.set(t,i),++this._hit,i.entry;++this._miss}peek(e,t){const i=this._db.get(e.id+t);return i?++this._hit:++this._miss,i?.entry}get performanceInfo(){const e={Size:Math.round(this._size/1048576)+"/"+Math.round(this._maxSize/1048576)+"MB","Hit rate":Math.round(100*this._getHitRate())+"%",Entries:this._db.size.toString()},t={},i=new Array;this._db.forEach(((e,r)=>{const s=e.lifetime;i[s]=(i[s]||0)+e.size,this._users.forAll((i=>{const{id:s,name:n}=i;if(r.startsWith(s)){const i=t[n]||0;t[n]=i+e.size}}))}));const r={};this._users.forAll((e=>{const i=e.name;if("hitRate"in e&&"number"==typeof e.hitRate&&!isNaN(e.hitRate)&&e.hitRate>0){const s=t[i]||0;t[i]=s,r[i]=Math.round(100*e.hitRate)+"%"}else r[i]="0%"}));const s=Object.keys(t);s.sort(((e,i)=>t[i]-t[e])),s.forEach((i=>e[i]=Math.round(t[i]/2**20)+"MB / "+r[i]));for(let t=i.length-1;t>=0;--t){const r=i[t];r&&(e["Priority "+(t+-3-1)]=Math.round(r/this._size*100)+"%")}return e}resetStats(){this._hit=this._miss=0,this._users.forAll((e=>e.resetHitRate()))}clear(e){const t=e.id;this._db.forEach(((e,i)=>{i.startsWith(t)&&(this._size-=e.size,this._db.delete(i),this._notifyRemove(i,e.entry,e.size,r.ALL))})),e.size=0}clearAll(){this._db.forEach(((e,t)=>this._notifyRemove(t,e.entry,e.size,r.ALL))),this._users.forAll((e=>e.size=0)),this._size=0,this._db.clear()}_getHitRate(){return this._hit/(this._hit+this._miss)}_notifyRemove(e,t,i,r){let s;return this._removeFuncs.some((n=>{if(e.startsWith(n[0])){const e=n[1](t,r,i);return"number"==typeof e&&(s=e),!0}return!1})),s}_checkSize(){this._users.forAll((e=>this._checkSizeLimits(e))),this._checkSizeLimits()}_checkSizeLimits(e){const t=e??this;if(t.maxSize<0||t.size<=t.maxSize)return;const i=e?.id;let r=!0;for(;r;){r=!1;for(const[s,n]of this._db)if(0===n.lifetime&&(!i||s.startsWith(i))){if(this._purgeItem(s,n,e),t.size<=.9*t.maxSize)return;r||=this._db.has(s)}}for(const[r,s]of this._db)if((!i||r.startsWith(i))&&(this._purgeItem(r,s,e),t.size<=.9*t.maxSize))return}_purgeItem(e,t,i=this._users.find((t=>e.startsWith(t.id)))){if(this._db.delete(e),t.lives<=1){this._size-=t.size,i&&(i.size-=t.size);const s=this._notifyRemove(e,t.entry,t.size,r.SOME);null!=s&&s>0&&(this._size+=s,i&&(i.size+=s),t.lives=t.lifetime,t.size=s,this._db.set(e,t))}else--t.lives,this._db.set(e,t)}}class o{constructor(e,t,i){this.entry=e,this.size=t,this.lifetime=i,this.lives=i}}class l{constructor(e,t){this._storage=new a,this.id="",this.name="",this.size=0,this._storage.maxSize=e,this._storage.register(this),t&&this._storage.registerRemoveFunc("",t)}destroy(){this._storage.deregister(this),this._storage.destroy()}put(e,t,i=1){this._storage.put(this,e,t,i,1)}pop(e){return this._storage.pop(this,e)}get(e){return this._storage.get(this,e)}clear(){this._storage.clearAll()}get maxSize(){return this._storage.maxSize}set maxSize(e){this._storage.maxSize=e}resetHitRate(){}}},32587:(e,t,i)=>{i.d(t,{A:()=>n});var r=i(62788),s=i(95488);class n{constructor(e){this._observable=new s.I,this._map=new Map(e)}get size(){return(0,r.gc)(this._observable),this._map.size}clear(){this._map.size>0&&(this._map.clear(),this._observable.notify())}delete(e){const t=this._map.delete(e);return t&&this._observable.notify(),t}entries(){return(0,r.gc)(this._observable),this._map.entries()}forEach(e,t){(0,r.gc)(this._observable),this._map.forEach(((i,r)=>e.call(t,i,r,this)),t)}get(e){return(0,r.gc)(this._observable),this._map.get(e)}has(e){return(0,r.gc)(this._observable),this._map.has(e)}keys(){return(0,r.gc)(this._observable),this._map.keys()}set(e,t){return this._map.set(e,t),this._observable.notify(),this}values(){return(0,r.gc)(this._observable),this._map.values()}[Symbol.iterator](){return(0,r.gc)(this._observable),this._map[Symbol.iterator]()}[Symbol.dispose](){this._observable.destroy()}get[Symbol.toStringTag](){return this._map[Symbol.toStringTag]}}},60999:(e,t,i)=>{i.d(t,{DZ:()=>p,Ke:()=>f,Tj:()=>h,UT:()=>_,jJ:()=>c});var r=i(90237),s=i(69622),n=i(97768),a=i(74887),o=i(10107),l=i(40608);function c(e,t,i){return(0,a.Lx)(e.map(((e,r)=>t.apply(i,[e,r]))))}async function h(e,t,i){return(await(0,a.Lx)(e.map(((e,r)=>t.apply(i,[e,r]))))).map((e=>e.value))}function d(e){return{ok:!0,value:e}}function u(e){return{ok:!1,error:e}}async function f(e){if(null==e)return{ok:!1,error:new Error("no promise provided")};try{return d(await e)}catch(e){return u(e)}}async function p(e){try{return d(await e)}catch(e){return(0,a.QP)(e),u(e)}}function _(e,t){return new m(e,t)}let m=class extends s.A{get value(){return null!=(e=this._result)&&!0===e.ok?e.value:null;var e}get error(){return null!=(e=this._result)&&!1===e.ok?e.error:null;var e}get finished(){return null!=this._result}constructor(e,t){super({}),this._result=null,this._abortHandle=null,this.abort=()=>{this._abortController=(0,n.DC)(this._abortController)},this.remove=this.abort,this._abortController=new AbortController;const{signal:i}=this._abortController;this.promise=e(i),this.promise.then((e=>{this._result=d(e),this._cleanup()}),(e=>{this._result=u(e),this._cleanup()})),this._abortHandle=(0,a.u7)(t,this.abort)}normalizeCtorArgs(){return{}}destroy(){this.abort()}_cleanup(){this._abortHandle=(0,n.xt)(this._abortHandle),this._abortController=null}};(0,r._)([(0,o.MZ)()],m.prototype,"value",null),(0,r._)([(0,o.MZ)()],m.prototype,"error",null),(0,r._)([(0,o.MZ)()],m.prototype,"finished",null),(0,r._)([(0,o.MZ)()],m.prototype,"promise",void 0),(0,r._)([(0,o.MZ)()],m.prototype,"_result",void 0),m=(0,r._)([(0,l.$)("esri.core.asyncUtils.ReactiveTask")],m)},72385:(e,t,i)=>{function r(){return new Float32Array(3)}function s(e){const t=new Float32Array(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function n(e,t,i){const r=new Float32Array(3);return r[0]=e,r[1]=t,r[2]=i,r}function a(){return r()}function o(){return n(1,1,1)}function l(){return n(1,0,0)}function c(){return n(0,1,0)}function h(){return n(0,0,1)}i.d(t,{fA:()=>n,o8:()=>s,vt:()=>r});const d=a(),u=o(),f=l(),p=c(),_=h();Object.freeze(Object.defineProperty({__proto__:null,ONES:u,UNIT_X:f,UNIT_Y:p,UNIT_Z:_,ZEROS:d,clone:s,create:r,createView:function(e,t){return new Float32Array(e,t,3)},fromValues:n,ones:o,unitX:l,unitY:c,unitZ:h,zeros:a},Symbol.toStringTag,{value:"Module"}))},75503:(e,t,i)=>{i.d(t,{E:()=>R,w:()=>o});var r=i(4576),s=i(21818),n=(i(44208),i(3694)),a=i(11006);class o{constructor(e=9,t){this._compareMinX=u,this._compareMinY=f,this._toBBox=e=>e,this._maxEntries=Math.max(4,e||9),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),t&&("function"==typeof t?this._toBBox=t:this._initFormat(t)),this.clear()}destroy(){this.clear(),b.prune(),w.prune(),T.prune(),A.prune()}all(e){l(this._data,e)}search(e,t){let i=this._data;const r=this._toBBox;if(v(e,i))for(b.clear();i;){for(let s=0,n=i.children.length;s<n;s++){const n=i.children[s],a=i.leaf?r(n):n;v(e,a)&&(i.leaf?t(n):y(e,a)?l(n,t):b.push(n))}i=b.pop()}}collides(e){let t=this._data;const i=this._toBBox;if(!v(e,t))return!1;for(b.clear();t;){for(let r=0,s=t.children.length;r<s;r++){const s=t.children[r],n=t.leaf?i(s):s;if(v(e,n)){if(t.leaf||y(e,n))return!0;b.push(s)}}t=b.pop()}return!1}load(e){if(!e.length)return this;if(e.length<this._minEntries){for(let t=0,i=e.length;t<i;t++)this.insert(e[t]);return this}let t=this._build(e.slice(),0,e.length-1,0);if(this._data.children.length)if(this._data.height===t.height)this._splitRoot(this._data,t);else{if(this._data.height<t.height){const e=this._data;this._data=t,t=e}this._insert(t,this._data.height-t.height-1,!0)}else this._data=t;return this}insert(e){return e&&this._insert(e,this._data.height-1),this}clear(){return this._data=new I([]),this}remove(e){if(!e)return this;let t,i=this._data,n=null,a=0,o=!1;const l=this._toBBox(e);for(T.clear(),A.clear();i||T.length>0;){if(i||(i=T.pop(),n=T.data[T.length-1],a=A.pop()??0,o=!0),i.leaf&&(t=(0,r.qh)(i.children,(0,s.zI)(e),i.children.length,i.indexHint),-1!==t))return i.children.splice(t,1),T.push(i),this._condense(T),this;o||i.leaf||!y(i,l)?n?(a++,i=n.children[a],o=!1):i=null:(T.push(i),A.push(a),a=0,n=i,i=i.children[0])}return this}toJSON(){return this._data}fromJSON(e){return this._data=e,this}_build(e,t,i,r){const s=i-t+1;let n=this._maxEntries;if(s<=n){const r=new I(e.slice(t,i+1));return c(r,this._toBBox),r}r||(r=Math.ceil(Math.log(s)/Math.log(n)),n=Math.ceil(s/n**(r-1)));const a=new O([]);a.height=r;const o=Math.ceil(s/n),l=o*Math.ceil(Math.sqrt(n));x(e,t,i,l,this._compareMinX);for(let s=t;s<=i;s+=l){const t=Math.min(s+l-1,i);x(e,s,t,o,this._compareMinY);for(let i=s;i<=t;i+=o){const s=Math.min(i+o-1,t);a.children.push(this._build(e,i,s,r-1))}}return c(a,this._toBBox),a}_insert(e,t,i){const r=this._toBBox,s=i?e:r(e);T.clear();const n=function(e,t,i,r){for(;r.push(t),!0!==t.leaf&&r.length-1!==i;){let i,r=1/0,s=1/0;for(let n=0,a=t.children.length;n<a;n++){const a=t.children[n],o=p(a),l=m(e,a)-o;l<s?(s=l,r=o<r?o:r,i=a):l===s&&o<r&&(r=o,i=a)}t=i||t.children[0]}return t}(s,this._data,t,T);for(n.children.push(e),d(n,s);t>=0&&T.data[t].children.length>this._maxEntries;)this._split(T,t),t--;!function(e,t,i){for(let r=i;r>=0;r--)d(t.data[r],e)}(s,T,t)}_split(e,t){const i=e.data[t],r=i.children.length,s=this._minEntries;this._chooseSplitAxis(i,s,r);const n=this._chooseSplitIndex(i,s,r);if(!n)return;const a=i.children.splice(n,i.children.length-n),o=i.leaf?new I(a):new O(a);o.height=i.height,c(i,this._toBBox),c(o,this._toBBox),t?e.data[t-1].children.push(o):this._splitRoot(i,o)}_splitRoot(e,t){this._data=new O([e,t]),this._data.height=e.height+1,c(this._data,this._toBBox)}_chooseSplitIndex(e,t,i){let r,s,n;r=s=1/0;for(let a=t;a<=i-t;a++){const t=h(e,0,a,this._toBBox),o=h(e,a,i,this._toBBox),l=g(t,o),c=p(t)+p(o);l<r?(r=l,n=a,s=c<s?c:s):l===r&&c<s&&(s=c,n=a)}return n}_chooseSplitAxis(e,t,i){const r=e.leaf?this._compareMinX:u,s=e.leaf?this._compareMinY:f;this._allDistMargin(e,t,i,r)<this._allDistMargin(e,t,i,s)&&e.children.sort(r)}_allDistMargin(e,t,i,r){e.children.sort(r);const s=this._toBBox,n=h(e,0,t,s),a=h(e,i-t,i,s);let o=_(n)+_(a);for(let r=t;r<i-t;r++){const t=e.children[r];d(n,e.leaf?s(t):t),o+=_(n)}for(let r=i-t-1;r>=t;r--){const t=e.children[r];d(a,e.leaf?s(t):t),o+=_(a)}return o}_condense(e){for(let t=e.length-1;t>=0;t--){const i=e.data[t];if(0===i.children.length)if(t>0){const s=e.data[t-1],n=s.children;n.splice((0,r.qh)(n,i,n.length,s.indexHint),1)}else this.clear();else c(i,this._toBBox)}}_initFormat(e){const t=["return a"," - b",";"];this._compareMinX=new Function("a","b",t.join(e[0])),this._compareMinY=new Function("a","b",t.join(e[1])),this._toBBox=new Function("a","return {minX: a"+e[0]+", minY: a"+e[1]+", maxX: a"+e[2]+", maxY: a"+e[3]+"};")}}function l(e,t){let i=e;for(w.clear();i;){if(!0===i.leaf)for(const e of i.children)t((0,s.zI)(e));else w.pushArray(i.children);i=w.pop()??null}}function c(e,t){h(e,0,e.children.length,t,e)}function h(e,t,i,r,s){s||(s=new I([])),s.minX=1/0,s.minY=1/0,s.maxX=-1/0,s.maxY=-1/0;for(let n,a=t;a<i;a++)n=e.children[a],d(s,e.leaf?r(n):n);return s}function d(e,t){e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY)}function u(e,t){return e.minX-t.minX}function f(e,t){return e.minY-t.minY}function p(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function _(e){return e.maxX-e.minX+(e.maxY-e.minY)}function m(e,t){return(Math.max(t.maxX,e.maxX)-Math.min(t.minX,e.minX))*(Math.max(t.maxY,e.maxY)-Math.min(t.minY,e.minY))}function g(e,t){const i=Math.max(e.minX,t.minX),r=Math.max(e.minY,t.minY),s=Math.min(e.maxX,t.maxX),n=Math.min(e.maxY,t.maxY);return Math.max(0,s-i)*Math.max(0,n-r)}function y(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function v(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function x(e,t,i,r,s){const n=[t,i];for(;n.length;){const t=n.pop(),i=n.pop();if(t-i<=r)continue;const o=i+Math.ceil((t-i)/r/2)*r;(0,a.q)(e,o,i,t,s),n.push(i,o,o,t)}}const b=new n.A,w=new n.A,T=new n.A,A=new n.A({deallocator:void 0});class R{constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}}class S extends R{constructor(){super(...arguments),this.height=1,this.indexHint=new r.vW}}class I extends S{constructor(e){super(),this.children=e,this.leaf=!0}}class O extends S{constructor(e){super(),this.children=e,this.leaf=!1}}},51624:(e,t,i)=>{i.d(t,{A:()=>d});var r,s,n=i(44208),a=i(69397),o=i(93687);(s=r||(r={}))[s.varint=0]="varint",s[s.fixed64=1]="fixed64",s[s.delimited=2]="delimited",s[s.fixed32=5]="fixed32",s[s.unknown=99]="unknown";const l=4294967296,c=new TextDecoder("utf-8"),h=(0,n.A)("safari")||(0,n.A)("ios")?6:(0,n.A)("ff")?12:32;class d{constructor(e,t,i=0,s=(e?e.byteLength:0)){this._tag=0,this._dataType=r.unknown,this._init(e,t,i,s)}_init(e,t,i,r){this._data=e,this._dataView=t,this._pos=i,this._end=r}get usedMemory(){return 64+(0,a.Qf)(this._data)}asUnsafe(){return this}clone(){return new d(this._data,this._dataView,this._pos,this._end)}pos(){return this._pos}move(e){this._pos=e}nextTag(e){for(;;){if(this._pos===this._end)return!1;const t=this._decodeVarint();if(this._tag=t>>3,this._dataType=7&t,!e||e===this._tag)break;this.skip()}return!0}next(){if(this._pos===this._end)return!1;const e=this._decodeVarint();return this._tag=e>>3,this._dataType=7&e,!0}empty(){return this._pos>=this._end}tag(){return this._tag}getInt32(){return this._decodeVarint()}getInt64(){return this._decodeVarint()}getUInt32(){let e=4294967295;if(e=(127&this._data[this._pos])>>>0,this._data[this._pos++]<128)return e;if(e=(e|(127&this._data[this._pos])<<7)>>>0,this._data[this._pos++]<128)return e;if(e=(e|(127&this._data[this._pos])<<14)>>>0,this._data[this._pos++]<128)return e;if(e=(e|(127&this._data[this._pos])<<21)>>>0,this._data[this._pos++]<128)return e;if(e=(e|(15&this._data[this._pos])<<28)>>>0,this._data[this._pos++]<128)return e;throw new Error("Varint overflow")}getUInt64(){return this._decodeVarint()}getSInt32(){const e=this.getUInt32();return e>>>1^-(1&e)}getSInt64(){return this._decodeSVarint()}getBool(){const e=0!==this._data[this._pos];return this._skip(1),e}getEnum(){return this._decodeVarint()}getFixed64(){const e=this._dataView,t=this._pos,i=e.getUint32(t,!0)+e.getUint32(t+4,!0)*l;return this._skip(8),i}getSFixed64(){const e=this._dataView,t=this._pos,i=e.getUint32(t,!0)+e.getInt32(t+4,!0)*l;return this._skip(8),i}getDouble(){const e=this._dataView.getFloat64(this._pos,!0);return this._skip(8),e}getFixed32(){const e=this._dataView.getUint32(this._pos,!0);return this._skip(4),e}getSFixed32(){const e=this._dataView.getInt32(this._pos,!0);return this._skip(4),e}getFloat(){const e=this._dataView.getFloat32(this._pos,!0);return this._skip(4),e}getString(){const e=this._getLength(),t=this._pos,i=this._toString(this._data,t,t+e);return this._skip(e),i}getBytes(){const e=this._getLength(),t=this._pos,i=this._toBytes(this._data,t,t+e);return this._skip(e),i}getLength(){return this._getLengthUnsafe()}processMessageWithArgs(e,t,i,r){const s=this.getMessage(),n=e(s,t,i,r);return s.release(),n}processMessage(e){const t=this.getMessage(),i=e(t);return t.release(),i}getMessage(){const e=this._getLength(),t=d.pool.acquire();return t._init(this._data,this._dataView,this._pos,this._pos+e),this._skip(e),t}release(){d.pool.release(this)}dataType(){return this._dataType}skip(){switch(this._dataType){case r.varint:this._decodeVarint();break;case r.fixed64:this._skip(8);break;case r.delimited:this._skip(this._getLength());break;case r.fixed32:this._skip(4);break;default:throw new Error("Invalid data type!")}}skipLen(e){this._skip(e)}_skip(e){if(this._pos+e>this._end)throw new Error("Attempt to skip past the end of buffer!");this._pos+=e}_decodeVarint(){const e=this._data;let t=this._pos,i=0,r=0;if(this._end-t>=10)do{if(r=e[t++],i|=127&r,!(128&r))break;if(r=e[t++],i|=(127&r)<<7,!(128&r))break;if(r=e[t++],i|=(127&r)<<14,!(128&r))break;if(r=e[t++],i|=(127&r)<<21,!(128&r))break;if(r=e[t++],i+=268435456*(127&r),!(128&r))break;if(r=e[t++],i+=34359738368*(127&r),!(128&r))break;if(r=e[t++],i+=4398046511104*(127&r),!(128&r))break;if(r=e[t++],i+=562949953421312*(127&r),!(128&r))break;if(r=e[t++],i+=72057594037927940*(127&r),!(128&r))break;if(r=e[t++],i+=0x8000000000000000*(127&r),!(128&r))break;throw new Error("Varint too long!")}while(0);else{let s=1;for(;t!==this._end&&(r=e[t],128&r);)++t,i+=(127&r)*s,s*=128;if(t===this._end)throw new Error("Varint overrun!");++t,i+=r*s}return this._pos=t,i}_decodeSVarint(){const e=this._data;let t,i=0,r=0;const s=1&e[this._pos];if(r=e[this._pos++],i|=127&r,!(128&r))return s?-(i+1)/2:i/2;if(r=e[this._pos++],i|=(127&r)<<7,!(128&r))return s?-(i+1)/2:i/2;if(r=e[this._pos++],i|=(127&r)<<14,!(128&r))return s?-(i+1)/2:i/2;if(r=e[this._pos++],i|=(127&r)<<21,!(128&r))return s?-(i+1)/2:i/2;if(r=e[this._pos++],i+=268435456*(127&r),!(128&r))return s?-(i+1)/2:i/2;if(r=e[this._pos++],i+=34359738368*(127&r),!(128&r))return s?-(i+1)/2:i/2;if(r=e[this._pos++],i+=4398046511104*(127&r),!(128&r))return s?-(i+1)/2:i/2;if(t=BigInt(i),r=e[this._pos++],t+=0x2000000000000n*BigInt(127&r),!(128&r))return Number(s?-(t+1n)/2n:t/2n);if(r=e[this._pos++],t+=0x100000000000000n*BigInt(127&r),!(128&r))return Number(s?-(t+1n)/2n:t/2n);if(r=e[this._pos++],t+=0x8000000000000000n*BigInt(127&r),!(128&r))return Number(s?-(t+1n)/2n:t/2n);throw new Error("Varint too long!")}_getLength(){if(this._dataType!==r.delimited)throw new Error("Not a delimited data type!");return this._decodeVarint()}_getLengthUnsafe(){return this.getUInt32()}_toString(e,t,i){if((i=Math.min(this._end,i))-t>h){const r=e.subarray(t,i);return c.decode(r)}let r="",s="";for(let n=t;n<i;++n){const t=e[n];128&t?s+="%"+t.toString(16):(r+=decodeURIComponent(s)+String.fromCharCode(t),s="")}return s.length&&(r+=decodeURIComponent(s)),r}_toBytes(e,t,i){return i=Math.min(this._end,i),new Uint8Array(e.buffer,t,i-t)}}d.pool=new o.A(d,void 0,(e=>{e._data=null,e._dataView=null}))},95696:(e,t,i)=>{i.d(t,{A:()=>d});var r,s=i(90237),n=i(69540),a=i(25482),o=i(10107),l=(i(44208),i(53966),i(87811),i(93223)),c=i(40608);let h=r=class extends(n.A.ClonableMixin(a.A)){constructor(e){super(e),this.type="georeferenced",this.origin=null}};h.absolute=new r,(0,s._)([(0,l.e)({georeferenced:"georeferenced"},{readOnly:!0})],h.prototype,"type",void 0),(0,s._)([(0,o.MZ)({type:[Number],nonNullable:!1,json:{write:!0}})],h.prototype,"origin",void 0),h=r=(0,s._)([(0,c.$)("esri.geometry.support.MeshGeoreferencedVertexSpace")],h);const d=h},18251:(e,t,i)=>{i.d(t,{A:()=>d});var r=i(90237),s=i(69540),n=i(25482),a=i(10107),o=(i(44208),i(53966),i(87811),i(93223)),l=i(40608),c=i(51850);let h=class extends(s.A.ClonableMixin(n.A)){constructor(e){super(e),this.type="local",this.origin=(0,c.vt)()}};(0,r._)([(0,o.e)({local:"local"},{readOnly:!0})],h.prototype,"type",void 0),(0,r._)([(0,a.MZ)({type:[Number],nonNullable:!0,json:{write:!0}})],h.prototype,"origin",void 0),h=(0,r._)([(0,l.$)("esri.geometry.support.MeshLocalVertexSpace")],h);const d=h},82919:(e,t,i)=>{i.d(t,{C:()=>g,vt:()=>m,ui:()=>y,m7:()=>v});var r=i(4341),s=i(58083),n=i(38954),a=i(51850),o=i(87317),l=i(91829),c=i(71351);function h(e){return e?{ray:(0,c.vt)(e.ray),c0:e.c0,c1:e.c1}:{ray:(0,c.vt)(),c0:0,c1:Number.MAX_VALUE}}new r.I((()=>h()));var d,u,f,p=i(27921),_=i(32114);function m(e){return e?[(0,p.vt)(e[0]),(0,p.vt)(e[1]),(0,p.vt)(e[2]),(0,p.vt)(e[3]),(0,p.vt)(e[4]),(0,p.vt)(e[5])]:[(0,p.vt)(),(0,p.vt)(),(0,p.vt)(),(0,p.vt)(),(0,p.vt)(),(0,p.vt)()]}function g(e,t){for(let i=0;i<x;i++)(0,p.C)(e[i],t[i]);return e}function y(e,t,i,r=T){const a=(0,s.lw)(_.Rc.get(),t,e);(0,s.B8)(a,a);for(let e=0;e<b;++e){const t=(0,o.t)(_.Km.get(),w[e],a);(0,n.i)(r[e],t[0]/t[3],t[1]/t[3],t[2]/t[3])}!function(e,t){(0,p.Cr)(t[u.FAR_BOTTOM_LEFT],t[u.NEAR_BOTTOM_LEFT],t[u.NEAR_TOP_LEFT],e[d.LEFT]),(0,p.Cr)(t[u.NEAR_BOTTOM_RIGHT],t[u.FAR_BOTTOM_RIGHT],t[u.FAR_TOP_RIGHT],e[d.RIGHT]),(0,p.Cr)(t[u.FAR_BOTTOM_LEFT],t[u.FAR_BOTTOM_RIGHT],t[u.NEAR_BOTTOM_RIGHT],e[d.BOTTOM]),(0,p.Cr)(t[u.NEAR_TOP_LEFT],t[u.NEAR_TOP_RIGHT],t[u.FAR_TOP_RIGHT],e[d.TOP]),(0,p.Cr)(t[u.NEAR_BOTTOM_LEFT],t[u.NEAR_BOTTOM_RIGHT],t[u.NEAR_TOP_RIGHT],e[d.NEAR]),(0,p.Cr)(t[u.FAR_BOTTOM_RIGHT],t[u.FAR_BOTTOM_LEFT],t[u.FAR_TOP_LEFT],e[d.FAR])}(i,r)}function v(e,t){for(let i=0;i<x;i++){const r=e[i];if(r[0]*t[0]+r[1]*t[1]+r[2]*t[2]+r[3]>=t[3])return!1}return!0}(f=d||(d={}))[f.LEFT=0]="LEFT",f[f.RIGHT=1]="RIGHT",f[f.BOTTOM=2]="BOTTOM",f[f.TOP=3]="TOP",f[f.NEAR=4]="NEAR",f[f.FAR=5]="FAR",function(e){e[e.NEAR_BOTTOM_LEFT=0]="NEAR_BOTTOM_LEFT",e[e.NEAR_BOTTOM_RIGHT=1]="NEAR_BOTTOM_RIGHT",e[e.NEAR_TOP_RIGHT=2]="NEAR_TOP_RIGHT",e[e.NEAR_TOP_LEFT=3]="NEAR_TOP_LEFT",e[e.FAR_BOTTOM_LEFT=4]="FAR_BOTTOM_LEFT",e[e.FAR_BOTTOM_RIGHT=5]="FAR_BOTTOM_RIGHT",e[e.FAR_TOP_RIGHT=6]="FAR_TOP_RIGHT",e[e.FAR_TOP_LEFT=7]="FAR_TOP_LEFT"}(u||(u={})),u.FAR_BOTTOM_RIGHT,u.NEAR_BOTTOM_RIGHT,u.NEAR_BOTTOM_LEFT,u.FAR_BOTTOM_LEFT,u.NEAR_BOTTOM_LEFT,u.NEAR_BOTTOM_RIGHT,u.NEAR_TOP_RIGHT,u.NEAR_TOP_LEFT,u.FAR_BOTTOM_RIGHT,u.FAR_BOTTOM_LEFT,u.FAR_TOP_LEFT,u.FAR_TOP_RIGHT,u.NEAR_BOTTOM_RIGHT,u.FAR_BOTTOM_RIGHT,u.FAR_TOP_RIGHT,u.NEAR_TOP_RIGHT,u.FAR_BOTTOM_LEFT,u.NEAR_BOTTOM_LEFT,u.NEAR_TOP_LEFT,u.FAR_TOP_LEFT,u.FAR_TOP_LEFT,u.NEAR_TOP_LEFT,u.NEAR_TOP_RIGHT,u.FAR_TOP_RIGHT;const x=6,b=8,w=[(0,l.fA)(-1,-1,-1,1),(0,l.fA)(1,-1,-1,1),(0,l.fA)(1,1,-1,1),(0,l.fA)(-1,1,-1,1),(0,l.fA)(-1,-1,1,1),(0,l.fA)(1,-1,1,1),(0,l.fA)(1,1,1,1),(0,l.fA)(-1,1,1,1)],T=(new r.I(h),[(0,a.vt)(),(0,a.vt)(),(0,a.vt)(),(0,a.vt)(),(0,a.vt)(),(0,a.vt)(),(0,a.vt)(),(0,a.vt)()])},27615:(e,t,i)=>{i.d(t,{CK:()=>d,Hq:()=>h,MW:()=>u,TE:()=>f,yJ:()=>p});var r=i(51447),s=i(53966),n=i(38954),a=i(86738),o=i(95696),l=i(18251);function c(){return s.A.getLogger("esri.geometry.Mesh")}function h(e){return null!=e.origin}function d(e){return h(e.vertexSpace)}function u(e,t){if(!h(e))return null;const[i,r,s]=e.origin;return new a.A({x:i,y:r,z:s,spatialReference:t})}function f(e,t){const{x:i,y:s,z:n,spatialReference:a}=e,h=[i,s,n??0];return void 0!==t?.geographic&&((0,r.io)(c(),"option: geographic",{replacement:"Use the `vertexSpace` option instead.",version:"4.29",warnOnce:!0}),t.vertexSpace&&c().warn("Deprecated geographic flag ignored since vertexSpace option is provided.")),"local"===(t?.vertexSpace??(d=t?.geographic,null==d?void 0:d?"local":"georeferenced")??function(e){return e.isGeographic||e.isWebMercator?"local":"georeferenced"}(a))?new l.A({origin:h}):new o.A({origin:h});var d}function p(e,t){return e.type===t.type&&(e.origin===t.origin||null!=e.origin&&null!=t.origin&&(0,n.p)(e.origin,t.origin))}},31756:(e,t,i)=>{i.d(t,{j:()=>n});var r=i(83047),s=i(79258);const n={unknown:1,inches:(0,r.oU)(1,"meters","inches"),feet:(0,r.oU)(1,"meters","feet"),"us-feet":(0,r.oU)(1,"meters","us-feet"),yards:(0,r.oU)(1,"meters","yards"),miles:(0,r.oU)(1,"meters","miles"),"nautical-miles":(0,r.oU)(1,"meters","nautical-miles"),millimeters:(0,r.oU)(1,"meters","millimeters"),centimeters:(0,r.oU)(1,"meters","centimeters"),decimeters:(0,r.oU)(1,"meters","decimeters"),meters:(0,r.oU)(1,"meters","meters"),kilometers:(0,r.oU)(1,"meters","kilometers"),"decimal-degrees":1/(0,r.vl)(1,"meters",s.$O.radius)}},10536:(e,t,i)=>{function r(e){const t={};for(const i in e){if("declaredClass"===i)continue;const s=e[i];if(null!=s&&"function"!=typeof s)if(Array.isArray(s)){t[i]=[];for(let e=0;e<s.length;e++)t[i][e]=r(s[e])}else"object"==typeof s?s.toJSON&&(t[i]=JSON.stringify(s)):t[i]=s}return t}i.d(t,{z:()=>r})},53655:(e,t,i)=>{i.d(t,{SH:()=>O,ae:()=>T,cn:()=>y});var r=i(49186),s=i(51624),n=i(92722),a=i(69418);const o=["esriFieldTypeSmallInteger","esriFieldTypeInteger","esriFieldTypeSingle","esriFieldTypeDouble","esriFieldTypeString","esriFieldTypeDate","esriFieldTypeOID","esriFieldTypeGeometry","esriFieldTypeBlob","esriFieldTypeRaster","esriFieldTypeGUID","esriFieldTypeGlobalID","esriFieldTypeXML","esriFieldTypeBigInteger","esriFieldTypeDateOnly","esriFieldTypeTimeOnly","esriFieldTypeTimestampOffset"],l=["sqlTypeBigInt","sqlTypeBinary","sqlTypeBit","sqlTypeChar","sqlTypeDate","sqlTypeDecimal","sqlTypeDouble","sqlTypeFloat","sqlTypeGeometry","sqlTypeGUID","sqlTypeInteger","sqlTypeLongNVarchar","sqlTypeLongVarbinary","sqlTypeLongVarchar","sqlTypeNChar","sqlTypeNVarchar","sqlTypeOther","sqlTypeReal","sqlTypeSmallInt","sqlTypeSqlXml","sqlTypeTime","sqlTypeTimestamp","sqlTypeTimestamp2","sqlTypeTinyInt","sqlTypeVarbinary","sqlTypeVarchar"],c=["upperLeft","lowerLeft"];function h(e){return e>=o.length?null:o[e]}function d(e){return e>=l.length?null:l[e]}function u(e){return e>=c.length?null:c[e]}function f(e,t){return t>=e.geometryTypes.length?null:e.geometryTypes[t]}function p(e,t,i){const r=e.asUnsafe(),s=t.createPointGeometry(i);for(;r.next();)switch(r.tag()){case 3:{const e=r.getUInt32(),i=r.pos()+e;let n=0;for(;r.pos()<i;)t.addCoordinatePoint(s,r.getSInt64(),n++);break}default:r.skip()}return s}function _(e,t,i){const r=e.asUnsafe(),s=t.createGeometry(i),n=2+(i.hasZ?1:0)+(i.hasM?1:0);for(;r.next();)switch(r.tag()){case 2:{const e=r.getUInt32(),i=r.pos()+e;let n=0;for(;r.pos()<i;)t.addLength(s,r.getUInt32(),n++);break}case 3:{const e=r.getUInt32(),i=r.pos()+e;let a=0;for(t.allocateCoordinates(s);r.pos()<i;)t.addCoordinate(s,r.getSInt64(),a),a++,a===n&&(a=0);break}default:r.skip()}return s}function m(e){const t=e.asUnsafe(),i=new n.A;let r="esriGeometryPoint";for(;t.next();)switch(t.tag()){case 2:{const e=t.getUInt32(),r=t.pos()+e;for(;t.pos()<r;)i.lengths.push(t.getUInt32());break}case 3:{const e=t.getUInt32(),r=t.pos()+e;for(;t.pos()<r;)i.coords.push(t.getSInt64());break}case 1:r=a.z[t.getEnum()];break;default:t.skip()}return{queryGeometry:i,queryGeometryType:r}}function g(e){const t=e.asUnsafe();for(;t.next();)switch(t.tag()){case 1:return t.getString();case 2:return t.getFloat();case 3:return t.getDouble();case 4:return t.getSInt32();case 5:return t.getUInt32();case 6:return t.getInt64();case 7:return t.getUInt64();case 8:return t.getSInt64();case 9:return t.getBool();default:return t.skip(),null}return null}function y(e){const t=e.asUnsafe(),i={type:h(0)};for(;t.next();)switch(t.tag()){case 1:i.name=t.getString();break;case 2:i.type=h(t.getEnum());break;case 3:i.alias=t.getString();break;case 4:i.sqlType=d(t.getEnum());break;case 5:default:t.skip();break;case 6:i.defaultValue=t.getString()}return i}function v(e){const t={},i=e.asUnsafe();for(;i.next();)switch(i.tag()){case 1:t.name=i.getString();break;case 2:t.isSystemMaintained=i.getBool();break;default:i.skip()}return t}function x(e,t,i,r){const s=t.createFeature(i);let n=0;for(;e.next();)switch(e.tag()){case 1:{const t=r[n++].name;s.attributes[t]=e.processMessage(g);break}case 2:s.geometry=e.processMessageWithArgs(_,t,i);break;case 4:s.centroid=e.processMessageWithArgs(p,t,i);break;default:e.skip()}return s}function b(e){const t=[1,1,1,1],i=e.asUnsafe();for(;i.next();)switch(i.tag()){case 1:t[0]=i.getDouble();break;case 2:t[1]=i.getDouble();break;case 4:t[2]=i.getDouble();break;case 3:t[3]=i.getDouble();break;default:i.skip()}return t}function w(e){const t=[0,0,0,0],i=e.asUnsafe();for(;i.next();)switch(i.tag()){case 1:t[0]=i.getDouble();break;case 2:t[1]=i.getDouble();break;case 4:t[2]=i.getDouble();break;case 3:t[3]=i.getDouble();break;default:i.skip()}return t}function T(e){const t={originPosition:u(0)},i=e.asUnsafe();for(;i.next();)switch(i.tag()){case 1:t.originPosition=u(i.getEnum());break;case 2:t.scale=i.processMessage(b);break;case 3:t.translate=i.processMessage(w);break;default:i.skip()}return t}function A(e){const t={},i=e.asUnsafe();for(;i.next();)switch(i.tag()){case 1:t.shapeAreaFieldName=i.getString();break;case 2:t.shapeLengthFieldName=i.getString();break;case 3:t.units=i.getString();break;default:i.skip()}return t}function R(e,t){const i=t.createSpatialReference();for(;e.next();)switch(e.tag()){case 1:i.wkid=e.getUInt32();break;case 5:i.wkt=e.getString();break;case 2:i.latestWkid=e.getUInt32();break;case 3:i.vcsWkid=e.getUInt32();break;case 4:i.latestVcsWkid=e.getUInt32();break;default:e.skip()}return i}function S(e,t){const i=t.createFeatureResult(),r=e.asUnsafe();i.geometryType=f(t,0);let s=!1;for(;r.next();)switch(r.tag()){case 1:i.objectIdFieldName=r.getString();break;case 3:i.globalIdFieldName=r.getString();break;case 4:i.geohashFieldName=r.getString();break;case 5:i.geometryProperties=r.processMessage(A);break;case 7:i.geometryType=f(t,r.getEnum());break;case 8:i.spatialReference=r.processMessageWithArgs(R,t);break;case 10:i.hasZ=r.getBool();break;case 11:i.hasM=r.getBool();break;case 12:i.transform=r.processMessage(T);break;case 9:i.exceededTransferLimit=r.getBool();break;case 13:t.addField(i,r.processMessage(y));break;case 15:s||(t.prepareFeatures(i),s=!0),t.addFeature(i,r.processMessageWithArgs(x,t,i,i.fields));break;case 2:i.uniqueIdField=r.processMessage(v);break;default:r.skip()}return t.finishFeatureResult(i),i}function I(e,t){const i={};let r=null;for(;e.next();)switch(e.tag()){case 4:r=e.processMessageWithArgs(m);break;case 1:i.featureResult=e.processMessageWithArgs(S,t);break;default:e.skip()}return null!=r&&i.featureResult&&t.addQueryGeometry(i,r),i}function O(e,t){try{const i=2,r=new s.A(new Uint8Array(e),new DataView(e)),n={};for(;r.next();)r.tag()===i?n.queryResult=r.processMessageWithArgs(I,t):r.skip();return n}catch(e){throw new r.A("query:parsing-pbf","Error while parsing FeatureSet PBF payload",{error:e})}}},69418:(e,t,i)=>{i.d(t,{S:()=>c,z:()=>l});var r=i(83047),s=i(21325),n=i(43334),a=i(58512),o=i(92722);const l=["esriGeometryPoint","esriGeometryMultipoint","esriGeometryPolyline","esriGeometryPolygon"];class c{constructor(e){this._options=e,this.geometryTypes=l,this._coordinatePtr=0,this._vertexDimension=0}createFeatureResult(){return new a.A}prepareFeatures(e){this._vertexDimension=2,e.hasZ&&this._vertexDimension++,e.hasM&&this._vertexDimension++}finishFeatureResult(e){if(!e?.features||!e.hasZ||!this._options.sourceSpatialReference||!e.spatialReference||(0,s.aI)(e.spatialReference,this._options.sourceSpatialReference)||e.spatialReference.vcsWkid)return;const t=(0,r.G9)(this._options.sourceSpatialReference)/(0,r.G9)(e.spatialReference);if(1!==t)for(const i of e.features){if(!(0,n.N3)(i))continue;const e=i.geometry.coords;for(let i=2;i<e.length;i+=3)e[i]*=t}}addFeature(e,t){e.features.push(t)}createFeature(){return new n.Om(null,{},null,0)}createSpatialReference(){return{wkid:0}}createGeometry(){return new o.A}addField(e,t){e.fields.push(t)}allocateCoordinates(e){e.coords.length=e.lengths.reduce(((e,t)=>e+t),0)*this._vertexDimension,this._coordinatePtr=0}addCoordinate(e,t){e.coords[this._coordinatePtr++]=t}addCoordinatePoint(e,t){e.coords.push(t)}addLength(e,t){e.lengths.push(t)}addQueryGeometry(e,t){e.queryGeometry=t.queryGeometry,e.queryGeometryType=t.queryGeometryType}createPointGeometry(){return new o.A}}},66208:(e,t,i)=>{i.d(t,{m:()=>s});var r=i(53655);function s(e,t){const i=(0,r.SH)(e,t),s=i.queryResult.featureResult,n=i.queryResult.queryGeometry,a=i.queryResult.queryGeometryType;if(s&&s.features&&s.features.length&&s.objectIdFieldName){const e=s.objectIdFieldName;for(const t of s.features)t.attributes&&(t.objectId=t.attributes[e])}return s&&(s.queryGeometry=n,s.queryGeometryType=a),s}},80893:(e,t,i)=>{i.d(t,{IJ:()=>p,Jf:()=>y,Pk:()=>m,eW:()=>f,gW:()=>g,kS:()=>_});var r=i(78888),s=i(84952),n=i(65864),a=i(17136),o=i(21325),l=i(10536),c=i(66208),h=i(58501);const d="Layer does not support extent calculation.";function u(e,t){const i=e.geometry,r=e.toJSON();delete r.compactGeometryEnabled,delete r.defaultSpatialReferenceEnabled;const s=r;let a,l,c;if(null!=i&&(l=i.spatialReference,c=(0,o.YX)(l),s.geometryType=(0,n.$B)(i),s.geometry=function(e,t){if(t&&"extent"===e.type)return`${e.xmin},${e.ymin},${e.xmax},${e.ymax}`;if(t&&"point"===e.type)return`${e.x},${e.y}`;const i=e.toJSON();return delete i.spatialReference,JSON.stringify(i)}(i,e.compactGeometryEnabled),s.inSR=c),r.groupByFieldsForStatistics&&(s.groupByFieldsForStatistics=r.groupByFieldsForStatistics.join(",")),r.objectIds&&(s.objectIds=r.objectIds.join(",")),r.orderByFields&&(s.orderByFields=r.orderByFields.join(",")),!r.outFields||!r.returnDistinctValues&&(t?.returnCountOnly||t?.returnExtentOnly||t?.returnIdsOnly)?delete s.outFields:r.outFields.includes("*")?s.outFields="*":s.outFields=r.outFields.join(","),r.outSR?(s.outSR=(0,o.YX)(r.outSR),a=e.outSpatialReference):i&&(r.returnGeometry||r.returnCentroid)&&(s.outSR=s.inSR,a=l),r.returnGeometry&&delete r.returnGeometry,r.outStatistics&&(s.outStatistics=JSON.stringify(r.outStatistics)),r.fullText&&(s.fullText=JSON.stringify(r.fullText)),r.pixelSize&&(s.pixelSize=JSON.stringify(r.pixelSize)),r.quantizationParameters&&(e.defaultSpatialReferenceEnabled&&null!=l&&null!=e.quantizationParameters?.extent&&l.equals(e.quantizationParameters.extent.spatialReference)&&delete r.quantizationParameters.extent.spatialReference,s.quantizationParameters=JSON.stringify(r.quantizationParameters)),r.parameterValues&&(s.parameterValues=JSON.stringify(r.parameterValues)),r.rangeValues&&(s.rangeValues=JSON.stringify(r.rangeValues)),r.dynamicDataSource&&(s.layer=JSON.stringify({source:r.dynamicDataSource}),delete r.dynamicDataSource),r.timeExtent){const e=r.timeExtent,{start:t,end:i}=e;null==t&&null==i||(s.time=t===i?t:`${t??"null"},${i??"null"}`),delete r.timeExtent}return e.defaultSpatialReferenceEnabled&&null!=l&&null!=a&&l.equals(a)&&(s.defaultSR=s.inSR,delete s.inSR,delete s.outSR),s}async function f(e,t,i,r){const s=null!=t.timeExtent&&t.timeExtent.isEmpty?{data:{features:[]}}:await v(e,t,"json",r);return(0,h.q)(t,i,s.data),s}async function p(e,t,i,r){if(null!=t.timeExtent&&t.timeExtent.isEmpty)return{data:i.createFeatureResult()};const s=await _(e,t,r),n=s;return n.data=(0,c.m)(s.data,i),n}function _(e,t,i){return v(e,t,"pbf",i)}function m(e,t,i){return null!=t.timeExtent&&t.timeExtent.isEmpty?Promise.resolve({data:{objectIds:[]}}):v(e,t,"json",i,{returnIdsOnly:!0})}function g(e,t,i){return null!=t.timeExtent&&t.timeExtent.isEmpty?Promise.resolve({data:{count:0}}):v(e,t,"json",i,{returnIdsOnly:!0,returnCountOnly:!0})}async function y(e,t,i){if(null!=t.timeExtent&&t.timeExtent.isEmpty)return{data:{count:0,extent:null}};const r=await v(e,t,"json",i,{returnExtentOnly:!0,returnCountOnly:!0}),s=r.data;if(s.hasOwnProperty("extent"))return r;if(s.features)throw new Error(d);if(s.hasOwnProperty("count"))throw new Error(d);return r}async function v(e,t,i,n={},o={}){const c="string"==typeof e?(0,s.An)(e):e,h=t.geometry?[t.geometry]:[],d=await(0,a.el)(h,null,{signal:n.signal}),f=d?.[0];null!=f&&((t=t.clone()).geometry=f);const p=(0,l.z)({...c.query,f:i,...o,...u(t,o)});return(0,r.A)((0,s.fj)(c.path,(_=o,null==t.formatOf3DObjects||_.returnCountOnly||_.returnExtentOnly||_.returnIdsOnly?"query":"query3d")),{...n,responseType:"pbf"===i?"array-buffer":"json",query:{...p,...n.query}});var _}},58501:(e,t,i)=>{i.d(t,{q:()=>s});var r=i(62815);function s(e,t,i){if(!i?.features||!i.hasZ)return;const s=(0,r.N)(i.geometryType,t,e.outSpatialReference);if(null!=s)for(const e of i.features)s(e.geometry)}},99986:(e,t,i)=>{i.r(t),i.d(t,{default:()=>_s});var r=i(90237),s=i(65529),n=i(74887),a=i(36708),o=i(10107),l=i(44208),c=i(53966),h=(i(87811),i(40608)),d=i(5443),u=i(57251),f=i(16930),p=i(19730),_=i(61956),m=i(69622),g=i(4576),y=i(32587),v=i(44794),x=i(19419);let b=class extends m.A{constructor(e){super(e),this._updatingCount=0,this._tileHandles=new y.A,this._wanted=new y.A}destroy(){for(const e of this._tileHandles.values())e.abort();this._tileHandles.clear(),this._wanted.clear()}get updating(){return this._updatingCount>0}get _boundingRect(){const{extent:e}=this;return null==e?null:(0,x.VY)(e)}get _missingTiles(){const e=new Array,t=this._wanted;for(const i of this._tileHandles.values())t.has(i.id)&&!A(i)&&e.push(i);return e}async onTileTreeChange(e){++this._updatingCount;try{const{added:t,removed:i}=e,r=this._tileHandles,{_boundingRect:s}=this,n=null!=s?t.filter((e=>(0,x.HY)(s,e.extent))):t,a=this._wanted,o=new Array;for(const e of i){const{id:i}=e;if(a.delete(i),t.some((t=>w(t,e)||w(e,t))))continue;const s=r.get(i);null!=s&&o.push(this._removeTile(s))}for(const e of n)a.set(e.id,e),o.push(this._addTile(e));await Promise.allSettled(o)}finally{--this._updatingCount}}async _removeTile(e){this._tileHandles.delete(e.id),e.abort(),this._validate();const{tile:t}=e,i=new R(e.untilSettled(),null!=t?this.createRemoveTileCommand(t):null);e.nextEvent=null;const{command:r}=await i.getCommand();r?.execute()}async _addTile(e){const{_tileHandles:t}=this,i=t.get(e.id);if(null!=i)return!A(i)||i.tile.isComplete||(i.tile=i.tile.reset(),i.nextEvent=this._onTileLoad(i)),void await i.untilSettled();const r=new T(e);this._tileHandles.set(r.id,r);const s=this.loadTile(e,r.signal);r.nextEvent=s;const a=await s;if(r.aborted)throw(0,n.NK)();r.tile=a,function(e){if(!A(e))throw new Error}(r),r.nextEvent=this._onTileLoad(r),await r.untilSettled()}async _onTileLoad(e){const{_wanted:t,_tileHandles:i,_missingTiles:r}=this,s=e.descriptor,n=new Array,a=new Array,o=new Set;for(const l of i.values()){if(l===e)continue;const{descriptor:c,id:h}=l;if(t.has(h)||r.some((({descriptor:e})=>w(e,c)||w(c,e)))){if(A(l)){if(w(s,c)){const e=l.tile;for(const t of e.objectIds())o.add(t)}if(w(c,s)){const t=e.tile,i=new Set(t.objectIds()),r=l.tile,s=r.exclude(i);l.tile=s;const o=AbortSignal.any([l.signal,e.signal]),c=l.untilSettled();n.push(new R(c,this.createRemoveTileCommand(r))),n.push(new R(c,this.createAddTileCommand(s,o),o)),a.push(l),this._validateRemoval(s,i)}}}else{l.abort(),i.delete(h);const{tile:e}=l;null!=e&&n.push(new R(l.untilSettled(),this.createRemoveTileCommand(e))),l.nextEvent=null}}o.size>0&&(e.tile=e.tile.exclude(o),this._validateRemoval(e.tile,o)),n.push(new R(e.untilSettled(),this.createAddTileCommand(e.tile,e.signal),e.signal)),a.push(e),this._validate();const l=this._joinCommands(n);for(const e of a)e.nextEvent=l;await l}async _joinCommands(e){const t=(await Promise.allSettled(e.map((async e=>e.getCommand())))).map((e=>"fulfilled"!==e.status||e.value.signal?.aborted?null:e.value.command)).filter(g.Ru);0!==t.length&&t.reduce(((e,t)=>(e.append(t),e))).execute()}_validate(){if(!(0,l.A)("feature-pipeline-3d-test-validation"))return;const e=new Array;for(const t of this._tileHandles.values()){if(!A(t))continue;const{tile:i}=t,r=i.featureCount,s=new Uint32Array(r);i.readObjectIds(s),e.push({tile:i,objectIds:new Set(s)})}for(let t=0;t<e.length;++t){const{tile:i,objectIds:r}=e[t];for(let s=t+1;s<e.length;++s){const{tile:t,objectIds:n}=e[s];for(const e of n)if(r.has(e)){const r=w(t.descriptor,i.descriptor),s=w(i.descriptor,t.descriptor);throw new Error(`${i.descriptor.id} and ${t.descriptor.id} both contain ${e}. aInB: ${r}; bInA: ${s}`)}}}}_validateRemoval(e,t){if((0,l.A)("feature-pipeline-3d-test-validation"))for(const i of e.objectIds())if(t.has(i))throw new Error(`Failed to remove ${i} from ${e.descriptor.id}!`)}};function w({lij:[e,t,i]},{lij:[r,s,n]}){const a=r-e;return a>=0&&t===s>>a&&i===n>>a}(0,r._)([(0,o.MZ)()],b.prototype,"updating",null),(0,r._)([(0,o.MZ)({constructOnly:!0})],b.prototype,"loadTile",void 0),(0,r._)([(0,o.MZ)({constructOnly:!0})],b.prototype,"createAddTileCommand",void 0),(0,r._)([(0,o.MZ)({constructOnly:!0})],b.prototype,"createRemoveTileCommand",void 0),(0,r._)([(0,o.MZ)()],b.prototype,"_updatingCount",void 0),(0,r._)([(0,o.MZ)()],b.prototype,"extent",void 0),(0,r._)([(0,o.MZ)()],b.prototype,"_boundingRect",null),(0,r._)([(0,o.MZ)()],b.prototype,"_missingTiles",null),b=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.Tile3DManager")],b);class T{constructor(e){this.descriptor=e,this._controller=new AbortController,this._tile=(0,v.v)(null),this.nextEvent=null}get id(){return this.descriptor.id}get tile(){return this._tile.value}set tile(e){this._tile.value=e}get signal(){return this._controller.signal}abort(){this._controller.abort()}get aborted(){return this._controller.signal.aborted}async untilSettled(){try{await this.nextEvent}catch(e){(0,n.zf)(e)||console.error(e)}}}function A(e){return null!=e.tile}class R{constructor(e,t,i){this.previousEventSettled=e,this.commandPromise=t,this.signal=i}async getCommand(){const{previousEventSettled:e,commandPromise:t,signal:i}=this,[r]=await Promise.all([t,e]);if(i?.aborted)throw(0,n.NK)();return{command:r,signal:i}}}var S=i(69397);class I{constructor(e,t){this.tile=e,this._tileIndices=t}get id(){return this.tile.id}get featureCount(){return this._tileIndices?.length??this.tile.featureCount}get usedMemory(){return S.qK+(this._tileIndices?.byteLength??0)}get extent(){return this.tile.descriptor.extent}readObjectIds(e,t){const{_tileIndices:i,tile:r}=this;return r.readObjectIds(e,i,t)}readCoordinates(e,t){const{_tileIndices:i,tile:r}=this;return r.readCoordinates(e,i,t)}subset(e){const{_tileIndices:t,tile:i}=this;if(null==t)return new I(i,e);const r=new Uint32Array(e.length);for(let i=0;i<r.length;++i)r[i]=t[e[i]];return new I(i,r)}}class O{constructor(){this._tileToFeatureData=new Map}add(e){this._tileToFeatureData.set(e.tile,e)}remove(e){this._tileToFeatureData.delete(e)}get(e){return this._tileToFeatureData.get(e)}}var M=i(75503),E=i(27647),C=i(92722);class F{constructor(e,t){this._index=e,this._view=t}get usedMemory(){return S.qK+S.RS}getObjectId(){return this._view.getObjectId(this._index)}getAttribute(e){return this._view.getAttribute(this._index,e)}getAttributeAsTimestamp(e){return this._view.getAttributeAsTimestamp(this._index,e)}getAttributes(){return this._view.getAttributes(this._index)}getOptimizedGeometry(){return this._view.getOptimizedGeometry(this._index)}getCentroid(e){return this._view.getCentroid(this._index,e)}getBounds(){return this._view.getBounds(this._index)}getBoundingBox(){return this._view.getBoundingBox(this._index)}cloneWithGeometry(e){return new D(this._index,this._view,e)}}class D extends F{constructor(e,t,i){super(e,t),this._geometryOverride=i}getOptimizedGeometry(){return this._geometryOverride}getCentroid(e){return(0,E.Q)(new C.A,this._geometryOverride,e.hasZ,e.hasM)}}class P{constructor(){this._tileBounds=new Map,this.events=new s.A,this.featureAdapter=L.shared}get usedMemory(){return S.qK+S.qK*this._tileBounds.size}addTile(e){const{featureCount:t}=e;if(0===t)return;const i=new M.w(9,(t=>e.getBounds(t))),r=new Array;for(let e=0;e<t;++e)r[e]=e;i.load(r),this._tileBounds.set(e,i),this.events.emit("changed")}removeTile(e){this._tileBounds.delete(e),this.events.emit("changed")}clear(){this._tileBounds.clear(),this.events.emit("changed")}forEach(e){for(const[t,i]of this._tileBounds)i.all((i=>e(new F(i,t))))}forEachInBounds(e,t){N.minX=e[0],N.minY=e[1],N.maxX=e[2],N.maxY=e[3];for(const[e,i]of this._tileBounds)i.search(N,(i=>t(new F(i,e))))}forEachBounds(e,t){for(const i of e)t(i.getBoundingBox())}getFullExtent(e){let t=1/0,i=1/0,r=-1/0,s=-1/0;for(const e of this._tileBounds.values()){const{minX:n,minY:a,maxX:o,maxY:l}=e.toJSON();t=Math.min(t,n),i=Math.min(i,a),r=Math.min(r,o),s=Math.min(s,l)}return{xmin:t,ymin:i,xmax:r,ymax:s,spatialReference:e}}}class L{getObjectId(e){return e.getObjectId()}getAttribute(e,t){return e.getAttribute(t)}getAttributeAsTimestamp(e,t){return e.getAttributeAsTimestamp(t)}getAttributes(e){return e.getAttributes()}getGeometry(e){return e.getOptimizedGeometry()}getCentroid(e,t){return e.getCentroid(t)}cloneWithGeometry(e,t){return e.cloneWithGeometry(t)}}L.shared=new L;const N=new M.E;var z=i(80893);class B{constructor(e,t,i=function(e){const t=e.reduce(((e,{featureCount:t})=>e+t),0),i=new Array;if(0===t)return i;const r=e[0].featureCount;for(let e=0;e<t;++e)i[2*e]=Math.floor(e/r),i[2*e+1]=e%r;return i}(t)){this.descriptor=e,this._pages=t,this._addressTable=i;const r=S.ez+t.reduce(((e,{usedMemory:t})=>e+t),0),s=3*S.RS,n=(0,S.Qf)(i);this.usedMemory=S.qK+r+s+n,this.featureCount=Math.floor(this._addressTable.length/2),this.isComplete=this.featureCount===t.reduce(((e,t)=>e+t.featureCount),0)}get id(){return this.descriptor.id}getObjectId(e){const{pageIndex:t,featurePageIndex:i}=this._translateIndex(e);return this._pages[t].getObjectId(i)}getAttribute(e,t){const{pageIndex:i,featurePageIndex:r}=this._translateIndex(e);return this._pages[i].getAttribute(r,t)}getAttributeAsTimestamp(e,t){const{pageIndex:i,featurePageIndex:r}=this._translateIndex(e);return this._pages[i].getAttributeAsTimestamp(r,t)}getAttributes(e){const{pageIndex:t,featurePageIndex:i}=this._translateIndex(e);return this._pages[t].getAttributes(i)}getCoordinates(e,t,i){const{pageIndex:r,featurePageIndex:s}=this._translateIndex(e);this._pages[r].getCoordinates(s,t,i)}getOptimizedGeometry(e){const{pageIndex:t,featurePageIndex:i}=this._translateIndex(e);return this._pages[t].getOptimizedGeometry(i)}getCentroid(e,t){const{pageIndex:i,featurePageIndex:r}=this._translateIndex(e);return this._pages[i].getCentroid(r,t)}getBounds(e){const{pageIndex:t,featurePageIndex:i}=this._translateIndex(e);return this._pages[t].getBounds(i)}getBoundingBox(e){const{pageIndex:t,featurePageIndex:i}=this._translateIndex(e);return this._pages[t].getBoundingBox(i)}readObjectIds(e,t=this._allFeatureIndices(),i=0){let r=i;for(const{page:i,indices:s}of this._batchPageIndices(t))r=i.readObjectIds(e,s,r);return r}readCoordinates(e,t=this._allFeatureIndices(),i=0){let r=i;for(const{page:i,indices:s}of this._batchPageIndices(t))r=i.readCoordinates(e,s,r);return r}*objectIds(e=this._allFeatureIndices()){for(const{page:t,indices:i}of this._batchPageIndices(e))for(const e of t.objectIds(i))yield e}exclude(e){if(0===e.size)return this;const{_addressTable:t,featureCount:i}=this,r=new Array;for(let s=0;s<i;++s){const i=this.getObjectId(s);e.has(i)||(r.push(t[2*s]),r.push(t[2*s+1]))}return new B(this.descriptor,this._pages,r)}reset(){const{isComplete:e,_pages:t}=this;return e?this:new B(this.descriptor,t)}*_allFeatureIndices(){const{featureCount:e}=this;for(let t=0;t<e;++t)yield t}_translateIndex(e){const{_addressTable:t}=this;return{pageIndex:t[2*e],featurePageIndex:t[2*e+1]}}*_batchPageIndices(e){const t=new Array;{let i=0,r=new Array;for(const s of e){const{pageIndex:e,featurePageIndex:n}=this._translateIndex(s);i!==e&&(0!==r.length&&t.push({pageIndex:i,indices:r}),i=e,r=[]),r.push(n)}0!==r.length&&t.push({pageIndex:i,indices:r})}const{_pages:i}=this;for(const{pageIndex:e,indices:r}of t)yield{page:i[e],indices:r}}}var U=i(49186),V=i(51624),j=i(51850),H=i(70328),G=i(62577),k=i(95466),q=i(53655);class Z{constructor(e){this._reader=new V.A(new Uint8Array(e),new DataView(e)),this._index=function(e){for(;e.next();){if(2===e.tag())return W(e.getMessage());e.skip()}X()}(this._reader)}get featureCount(){return this._index.featureIndices.length}get exceededTransferLimit(){return this._index.exceededTransferLimit}get usedMemory(){return this._reader.usedMemory}getObjectId(e){return this.getAttribute(e,this._index.objectIdFieldName)}getAttribute(e,t){const{_index:{fieldsIndex:i,attributeIndices:r}}=this,s=i.get(t)?.index;if(null==s)return;const n=r[e*i.fields.length+s],a=this._reader;return a.move(n),$(a)}getAttributeAsTimestamp(e,t){const i=this.getAttribute(e,t);return"string"==typeof i?new Date(i).getTime():"number"==typeof i||null==i?i:null}getAttributes(e){const{_index:{fieldsIndex:t,attributeIndices:i}}=this,r=e*t.fields.length,s=this._reader,n={};for(const e of t.fields){const t=i[r+e.index];s.move(t),n[e.name]=$(s)}return n}getCoordinates(e,t,i=0){const r=this._reader,{transform:s,featureIndices:n}=this._index,{scale:a,translate:o}=s;r.move(n[e]),this._readCoordinates(a,o,t,i)}getOptimizedGeometry(e){const t=(0,j.vt)();return this.getCoordinates(e,t),new C.A([],t)}getCentroid(e,{hasZ:t,hasM:i}){this.getCoordinates(e,J);const[r,s,n]=J,a=[r,s];return t&&(a[3]=n),i&&(a[t?4:3]=0),new C.A([],a)}getBounds(e){this.getCoordinates(e,J);const[t,i]=J,r=new M.E;return r.minX=t,r.minY=i,r.maxX=t,r.maxY=i,r}getBoundingBox(e){this.getCoordinates(e,J);const[t,i,r]=J;return(0,H.fA)(t,i,r,t,i,r)}readObjectIds(e,t=this._allFeatureIndices(),i=0){const r=this._reader,{objectIdFieldName:s,attributeIndices:n,fieldsIndex:a}=this._index,o=a.get(s).index,l=a.fields.length;for(const s of t){const t=n[s*l+o];r.move(t),e[i++]=$(r)}return i}readCoordinates(e,t=this._allFeatureIndices(),i=0){const r=this._reader,{transform:s,featureIndices:n}=this._index,{scale:a,translate:o}=s;for(const s of t){const t=n[s];r.move(t),i=this._readCoordinates(a,o,e,i)}return i}*objectIds(e=this._allFeatureIndices()){const t=this._reader,{objectIdFieldName:i,attributeIndices:r,fieldsIndex:s}=this._index,n=s.get(i).index,a=s.fields.length;for(const i of e){const e=r[i*a+n];t.move(e),yield $(t)}}*_allFeatureIndices(){const{featureCount:e}=this;for(let t=0;t<e;++t)yield t}_readCoordinates([e,t,i],[r,s,n],a,o){const l=this._reader,c=l.getLength(),h=l.pos()+c;for(;l.pos()<h&&l.next();)switch(l.tag()){case 2:{const c=l.getLength(),h=l.pos()+c;for(;l.pos()<h&&l.next();)3===l.tag()?(l.getUInt32(),a[o++]=r+e*l.getSInt64(),a[o++]=s+t*l.getSInt64(),a[o++]=n+i*l.getSInt64()):l.skip();break}default:l.skip()}return o}}function W(e){for(;e.next();){if(1===e.tag())return Y(e.getMessage());e.skip()}X()}function Y(e){let t,i,r=!1,s=!1,n=0;const a=new Array,o=new Array,l=new Array;for(;e.next();)switch(e.tag()){case 1:i=e.getString();break;case 7:0!==e.getEnum()&&X();break;case 9:r=e.getBool()??!1;break;case 12:t=(0,G.Q1)(e.processMessage(q.ae));break;case 13:{const t=e.processMessage(q.cn);t.index=n++,a.push(t);break}case 15:{o.push(e.pos());const t=e.getUInt32(),i=e.pos()+t;for(;e.pos()<i&&e.next();)1===e.tag()?(l.push(e.pos()),e.skip()):e.skip();break}case 10:s=e.getBool()??!1;break;default:e.skip()}const c=new k.A(a);return null!=t&&s&&null!=i&&c.has(i)||X(),{transform:t,exceededTransferLimit:r,fieldsIndex:c,objectIdFieldName:i,featureIndices:o,attributeIndices:l}}function X(){const e=new U.A("pbf-parsing-failed","Error while parsing PBF",new Error);throw console.error(e),e}function $(e){const t=e.getLength(),i=e.pos()+t;for(;e.pos()<i&&e.next();)switch(e.tag()){case 1:return e.getString();case 2:return e.getFloat();case 3:return e.getDouble();case 4:return e.getSInt32();case 5:return e.getUInt32();case 6:return e.getInt64();case 7:return e.getUInt64();case 8:return e.getSInt64();case 9:return e.getBool();default:return e.skip(),null}return null}const J=(0,j.vt)();class Q{constructor(e,t,i,r,s){this.spatialReference=e,this.url=i,this.objectIdField=r,this.capabilities=s;const{supportsMaxRecordCountFactor:n,maxRecordCount:a}=this.capabilities.query,o=n?4:1,l=(a??8e3)*o;this._pageSize=Math.min(8e3,l);const c=t.clone();c.cacheHint=!0,c.resultType="tile",c.outSpatialReference=e,c.returnGeometry=!0,c.returnZ=!0,c.maxRecordCountFactor=o,c.num=this._pageSize,c.outFields=[r],this._baseQuery=c}async fetch(e,t){const{spatialReference:i}=this,r=(0,x.w1)(e.extent,i),s=this._baseQuery.clone();s.geometry=r;const a=new Array;let o=0,l=!1,c=1;for(;!l;){const e=[];for(let i=0;i<c;++i)e.push(this._fetchPage(s,o++,t));const i=await Promise.all(e);(0,n.Te)(t);for(const e of i){const t=0!==e.featureCount;l||=!e.exceededTransferLimit||!t,t&&a.push(e)}c=Math.min(c+1,4)}return new B(e,a)}async _fetchPage(e,t,i){const r=e.clone();r.start=t*this._pageSize;const s=(await(0,z.kS)(this.url,r,{signal:i})).data;return(0,n.Te)(i),new Z(s)}}var K=i(24151),ee=i(97146),te=i(36563),ie=i(97768),re=i(91829),se=i(37585),ne=i(48163),ae=i(34727),oe=i(26857);new Map,(()=>{let e="";for(let t=32;t<127;t++)e+=String.fromCharCode(t)})();const le=[];{const e=16;for(let t=0;t<360;t+=360/e)le.push([Math.cos(Math.PI*t/180),Math.sin(Math.PI*t/180)])}var ce,he;(he=ce||(ce={}))[he.Left=0]="Left",he[he.Center=1]="Center",he[he.Right=2]="Right",Object.freeze({left:0,center:.5,right:1});const de=Object.freeze({"bottom-left":(0,ne.fA)(0,0),bottom:(0,ne.fA)(.5,0),"bottom-right":(0,ne.fA)(1,0),left:(0,ne.fA)(0,.5),center:(0,ne.fA)(.5,.5),right:(0,ne.fA)(1,.5),"top-left":(0,ne.fA)(0,1),top:(0,ne.fA)(.5,1),"top-right":(0,ne.fA)(1,1)});var ue=i(24326),fe=i(4431),pe=i(49255);const _e={required:[]};pe.V.Depth;class me extends m.A{precompile(e){return!!this.acquireTechniques(e)}consumes(){return _e}get usedMemory(){return 0}get isDecoration(){return!1}get running(){return!1}modify(e){}get numGeometries(){return 0}get hasOccludees(){return!1}get hasEmissions(){return!1}forEachGeometry(e){}queryRenderOccludedState(e){return!1}}class ge extends me{}class ye extends me{}var ve=i(89192);class xe{constructor(e,t){this._material=e,this._repository=t,this._map=new Map}dispose(){this._map.forEach(((e,t)=>{null!=e&&this._repository.release(this._material,t)}))}load(e,t,i){const r=this._material.produces.get(t);if(!r?.(i))return null;this._map.has(i)||this._map.set(i,this._repository.acquire(this._material,t,i));const s=this._map.get(i);if(null!=s){if(s.ensureResources(e)===ve.Am.LOADED)return s;this._repository.requestRender()}return null}}var be=i(62258),we=i(58083),Te=i(9093),Ae=i(38954),Re=i(97937),Se=i(32728),Ie=i(69720),Oe=(i(96672),i(17478),i(620)),Me=i(46540),Ee=i(28449);const Ce=(0,j.vt)(),Fe=new Float32Array(6);Ie.J;class De{constructor(){this.min=(0,j.fA)(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this.max=(0,j.fA)(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE)}isEmpty(){return this.max[0]<this.min[0]&&this.max[1]<this.min[1]&&this.max[2]<this.min[2]}}class Pe extends De{constructor(){super(...arguments),this.bounds=(0,Re.c)()}}var Le;(0,j.vt)(),(0,j.vt)(),(0,j.vt)(),(0,j.vt)(),function(e){e[e.WorldSpace=0]="WorldSpace",e[e.ObjectSpace=1]="ObjectSpace"}(Le||(Le={}));var Ne=i(13464),ze=i(72824);class Be extends ze.gy{constructor(e=(0,j.vt)()){super(),this.origin=e}get slicePlaneLocalOrigin(){return this.origin}}var Ue=i(77690),Ve=i(29242);var je=i(13030),He=i(78662),Ge=i(1843),ke=i(40268),qe=i(16943),Ze=i(25634),We=i(11725),Ye=i(77194);class Xe{constructor(){this.scale=0,this.factor=0,this.minScaleFactor=0}}var $e=i(59907),Je=i(43616),Qe=i(13259),Ke=i(97220),et=i(98958),tt=i(59643),it=i(33524),rt=i(63907),st=i(90644);class nt extends et.w{constructor(e,t){super(e,t,new Ke.$(Qe.H,(()=>i.e(8241).then(i.bind(i,48241))))),this.primitiveType=t.occlusionPass?rt.WR.POINTS:rt.WR.TRIANGLES}initializePipeline(e){const{oitPass:t,hasPolygonOffset:i,draped:r,output:s,depthTestEnabled:n,occlusionPass:a}=e,o=t===tt.Y.NONE,l=t===tt.Y.ColorAlpha,c=s===pe.V.Highlight,h=n&&!r&&!l&&!a&&!c;return(0,st.Ey)({blending:(0,pe.RN)(s)?o?st.Os:(0,it.ez)(t):null,depthTest:n&&!r?{func:rt.MT.LEQUAL}:null,depthWrite:h?st.Uy:null,drawBuffers:(0,it.m6)(t,s),colorWrite:st.kn,polygonOffset:i?at:null})}}const at={factor:0,units:-4};var ot=i(53466),lt=i(22911),ct=i(51976),ht=i(35256);class dt extends ht.E{constructor(e){super(),this.spherical=e,this.screenCenterOffsetUnitsEnabled=!1,this.occlusionTestEnabled=!0,this.signedDistanceFieldEnabled=!1,this.sampleSignedDistanceFieldTexelCenter=!1,this.vvSize=!1,this.vvColor=!1,this.hasVerticalOffset=!1,this.hasScreenSizePerspective=!1,this.hasRotation=!1,this.debugDrawLabelBorder=!1,this.hasPolygonOffset=!1,this.depthTestEnabled=!0,this.pixelSnappingEnabled=!0,this.draped=!1,this.terrainDepthTest=!1,this.cullAboveTerrain=!1,this.occlusionPass=!1,this.occludedFragmentFade=!1,this.objectAndLayerIdColorInstanced=!1,this.horizonCullingEnabled=!0,this.isFocused=!0,this.textureCoordinateType=ot.I.None,this.emissionSource=lt.ZX.None,this.discardInvisibleFragments=!0,this.hasVvInstancing=!1}}(0,r._)([(0,ct.W)()],dt.prototype,"screenCenterOffsetUnitsEnabled",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"occlusionTestEnabled",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"signedDistanceFieldEnabled",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"sampleSignedDistanceFieldTexelCenter",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"vvSize",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"vvColor",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"hasVerticalOffset",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"hasScreenSizePerspective",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"hasRotation",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"debugDrawLabelBorder",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"hasPolygonOffset",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"depthTestEnabled",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"pixelSnappingEnabled",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"draped",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"terrainDepthTest",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"cullAboveTerrain",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"occlusionPass",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"occludedFragmentFade",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"objectAndLayerIdColorInstanced",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"horizonCullingEnabled",void 0),(0,r._)([(0,ct.W)()],dt.prototype,"isFocused",void 0);var ut=i(49788);class ft extends We.im{constructor(e,t){super(e,zt),this.produces=new Map([[Ne.N.HUD_MATERIAL,e=>(0,pe.Mb)(e)&&!this.parameters.drawAsLabel],[Ne.N.LABEL_MATERIAL,e=>(0,pe.Mb)(e)&&this.parameters.drawAsLabel],[Ne.N.OCCLUSION_PIXELS,()=>this.parameters.occlusionTest],[Ne.N.DRAPED_MATERIAL,e=>this.parameters.draped&&(0,pe.Mb)(e)]]),this._visible=!0,this._configuration=new dt(t)}getConfiguration(e,t){return this._configuration.output=e,this._configuration.hasSlicePlane=this.parameters.hasSlicePlane,this._configuration.hasVerticalOffset=!!this.parameters.verticalOffset,this._configuration.hasScreenSizePerspective=!!this.parameters.screenSizePerspective,this._configuration.screenCenterOffsetUnitsEnabled="screen"===this.parameters.centerOffsetUnits,this._configuration.hasPolygonOffset=this.parameters.polygonOffset,this._configuration.draped=this.parameters.draped,this._configuration.occlusionTestEnabled=this.parameters.occlusionTest,this._configuration.pixelSnappingEnabled=this.parameters.pixelSnappingEnabled,this._configuration.signedDistanceFieldEnabled=this.parameters.textureIsSignedDistanceField,this._configuration.sampleSignedDistanceFieldTexelCenter=this.parameters.sampleSignedDistanceFieldTexelCenter,this._configuration.hasRotation=this.parameters.hasRotation,this._configuration.vvSize=!!this.parameters.vvSize,this._configuration.vvColor=!!this.parameters.vvColor,this._configuration.occlusionPass=t.slot===Ne.N.OCCLUSION_PIXELS,this._configuration.occludedFragmentFade=this.parameters.occludedFragmentFade,this._configuration.horizonCullingEnabled=this.parameters.horizonCullingEnabled,this._configuration.isFocused=this.parameters.isFocused,this._configuration.depthTestEnabled=this.parameters.depthEnabled||t.slot===Ne.N.OCCLUSION_PIXELS,(0,pe.RN)(e)&&(this._configuration.debugDrawLabelBorder=!!oe.b.LABELS_SHOW_BORDER),this._configuration.oitPass=t.oitPass,this._configuration.terrainDepthTest=t.terrainDepthTest,this._configuration.cullAboveTerrain=t.cullAboveTerrain,this._configuration}intersect(e,t,i,r,s,n){const{options:{selectionMode:a,hud:o,excludeLabels:l},point:c,camera:h}=i,{parameters:d}=this;if(!a||!o||l&&d.isLabel||!e.visible||!c)return;const u=e.attributes.get(Me.r.FEATUREATTRIBUTE),f=null==u?null:(0,re.ci)(u.data,Ct),{scaleX:p,scaleY:_}=jt(f,d,h.pixelRatio);(0,Ue.z0)(Rt,t),e.attributes.has(Me.r.FEATUREATTRIBUTE)&&function(e){const t=e[0],i=e[1],r=e[2],s=e[3],n=e[4],a=e[5],o=e[6],l=e[7],c=e[8],h=1/Math.sqrt(t*t+i*i+r*r),d=1/Math.sqrt(s*s+n*n+a*a),u=1/Math.sqrt(o*o+l*l+c*c);e[0]=t*h,e[1]=i*h,e[2]=r*h,e[3]=s*d,e[4]=n*d,e[5]=a*d,e[6]=o*u,e[7]=l*u,e[8]=c*u}(Rt);const m=e.attributes.get(Me.r.POSITION),g=e.attributes.get(Me.r.SIZE),y=e.attributes.get(Me.r.NORMAL),v=e.attributes.get(Me.r.ROTATION),x=e.attributes.get(Me.r.CENTEROFFSETANDDISTANCE);(0,Oe.vA)(m.size>=3);const b=(0,Qe.c)(d),w="screen"===this.parameters.centerOffsetUnits;for(let e=0;e<m.data.length/m.size;e++){const r=e*m.size;(0,Ae.i)(yt,m.data[r],m.data[r+1],m.data[r+2]),(0,Ae.t)(yt,yt,t),(0,Ae.t)(yt,yt,h.viewMatrix);const s=e*x.size;if((0,Ae.i)(Mt,x.data[s],x.data[s+1],x.data[s+2]),!w&&(yt[0]+=Mt[0],yt[1]+=Mt[1],0!==Mt[2])){const e=Mt[2];(0,Ae.n)(Mt,yt),(0,Ae.d)(yt,yt,(0,Ae.h)(Mt,Mt,e))}const a=e*y.size;if((0,Ae.i)(vt,y.data[a],y.data[a+1],y.data[a+2]),_t(vt,Rt,h,Ft),Ht(this.parameters,yt,Ft,h,gt),h.applyProjection(yt,xt),xt[0]>-1){w&&(Mt[0]||Mt[1])&&(xt[0]+=Mt[0]*h.pixelRatio,0!==Mt[1]&&(xt[1]+=(0,Ye.m0)(Mt[1],gt.factorAlignment)*h.pixelRatio),h.unapplyProjection(xt,yt)),xt[0]+=this.parameters.screenOffset[0]*h.pixelRatio,xt[1]+=this.parameters.screenOffset[1]*h.pixelRatio,xt[0]=Math.floor(xt[0]),xt[1]=Math.floor(xt[1]);const t=e*g.size;Lt[0]=g.data[t],Lt[1]=g.data[t+1],(0,Ye.MD)(Lt,gt.factor,Lt);const r=Dt*h.pixelRatio;let s=0;d.textureIsSignedDistanceField&&(s=Math.min(d.outlineSize,.5*Lt[0])*h.pixelRatio/2),Lt[0]*=p,Lt[1]*=_;const a=e*v.size,o=d.rotation+v.data[a];if(mt(c,xt[0],xt[1],Lt,r,s,o,d,b)){const e=i.ray;if((0,Ae.t)(wt,yt,(0,we.B8)(It,h.viewMatrix)),xt[0]=c[0],xt[1]=c[1],h.unprojectFromRenderScreen(xt,yt)){const t=(0,j.vt)();(0,Ae.c)(t,e.direction);const i=1/(0,Ae.l)(t);(0,Ae.h)(t,t,i),n((0,Ae.j)(e.origin,yt)*i,t,-1,!0,1,wt)}}}}}intersectDraped(e,t,i,r,s,n){const a=e.attributes.get(Me.r.POSITION),o=e.attributes.get(Me.r.SIZE),l=e.attributes.get(Me.r.ROTATION),c=this.parameters,h=(0,Qe.c)(c),d=e.attributes.get(Me.r.FEATUREATTRIBUTE),u=null==d?null:(0,re.ci)(d.data,Ct),{scaleX:f,scaleY:p}=jt(u,c,e.screenToWorldRatio),_=Pt*e.screenToWorldRatio;for(let t=0;t<a.data.length/a.size;t++){const i=t*a.size,d=a.data[i],u=a.data[i+1],m=t*o.size;Lt[0]=o.data[m],Lt[1]=o.data[m+1];let g=0;c.textureIsSignedDistanceField&&(g=Math.min(c.outlineSize,.5*Lt[0])*e.screenToWorldRatio/2),Lt[0]*=f,Lt[1]*=p;const y=t*l.size,v=c.rotation+l.data[y];mt(r,d,u,Lt,_,g,v,c,h)&&s(n.dist,n.normal,-1,!1)}}createBufferWriter(){return new Vt}applyShaderOffsetsView(e,t,i,r,s,n,a){const o=_t(t,i,s,Ft);return this._applyVerticalGroundOffsetView(e,o,s,a),Ht(this.parameters,a,o,s,n),this._applyPolygonOffsetView(a,o,r[3],s,a),this._applyCenterOffsetView(a,r,a),a}applyShaderOffsetsNDC(e,t,i,r,s){return this._applyCenterOffsetNDC(e,t,i,r),null!=s&&(0,Ae.c)(s,r),this._applyPolygonOffsetNDC(r,t,i,r),r}_applyPolygonOffsetView(e,t,i,r,s){const n=r.aboveGround?1:-1;let a=Math.sign(i);0===a&&(a=n);const o=n*a;if(this.parameters.shaderPolygonOffset<=0)return(0,Ae.c)(s,e);const l=(0,ae.qE)(Math.abs(t.cosAngle),.01,1),c=1-Math.sqrt(1-l*l)/l/r.viewport[2];return(0,Ae.h)(s,e,o>0?c:1/c),s}_applyVerticalGroundOffsetView(e,t,i,r){const s=(0,Ae.l)(e),n=i.aboveGround?1:-1,a=i.computeRenderPixelSizeAtDist(s)*ke.R,o=(0,Ae.h)(yt,t.normal,n*a);return(0,Ae.g)(r,e,o),r}_applyCenterOffsetView(e,t,i){const r="screen"!==this.parameters.centerOffsetUnits;return i!==e&&(0,Ae.c)(i,e),r&&(i[0]+=t[0],i[1]+=t[1],t[2]&&((0,Ae.n)(vt,i),(0,Ae.g)(i,i,(0,Ae.h)(vt,vt,t[2])))),i}_applyCenterOffsetNDC(e,t,i,r){const s="screen"!==this.parameters.centerOffsetUnits;return r!==e&&(0,Ae.c)(r,e),s||(r[0]+=t[0]/i.fullWidth*2,r[1]+=t[1]/i.fullHeight*2),r}_applyPolygonOffsetNDC(e,t,i,r){const s=this.parameters.shaderPolygonOffset;if(e!==r&&(0,Ae.c)(r,e),s){const e=i.aboveGround?1:-1,n=e*Math.sign(t[3]);r[2]-=(n||e)*s}return r}set visible(e){this._visible=e}get visible(){const{color:e,outlineSize:t,outlineColor:i}=this.parameters,r=e[3]>=ut.Q||t>=ut.Q&&i[3]>=ut.Q;return this._visible&&r}createGLMaterial(e){return new pt(e)}calculateRelativeScreenBounds(e,t,i=(0,x.vt)()){return function(e,t,i,r){r[0]=e.anchorPosition[0]*-t[0]+e.screenOffset[0]*i,r[1]=e.anchorPosition[1]*-t[1]+e.screenOffset[1]*i}(this.parameters,e,t,i),i[2]=i[0]+e[0],i[3]=i[1]+e[1],i}}class pt extends Ze.m8{constructor(e){super({...e,...e.material.parameters})}beginSlot(e){return this.updateTexture(this._material.parameters.textureId),this._material.setParameters(this.textureBindParameters),this.getTechnique(nt,e)}}function _t(e,t,i,r){return function(e){return(t=e)instanceof Float32Array&&t.length>=16||function(e){return Array.isArray(e)&&e.length>=16}(e);var t}(t)&&(t=(0,Ue.z0)(St,t)),(0,Ae.q)(r.normal,e,t),(0,Ae.t)(r.normal,r.normal,i.viewInverseTransposeMatrix),r.cosAngle=(0,Ae.f)(bt,Nt),r}function mt(e,t,i,r,s,n,a,o,l){let c=t-s-r[0]*l[0],h=c+r[0]+2*s,d=i-s-r[1]*l[1],u=d+r[1]+2*s;const f=o.distanceFieldBoundingBox;return o.textureIsSignedDistanceField&&null!=f&&(c+=r[0]*f[0],d+=r[1]*f[1],h-=r[0]*(1-f[2]),u-=r[1]*(1-f[3]),c-=n,h+=n,d-=n,u+=n),(0,se.hZ)(At,t,i),(0,se.e$)(Tt,e,At,(0,ae.kU)(a)),Tt[0]>c&&Tt[0]<h&&Tt[1]>d&&Tt[1]<u}const gt=new class{constructor(){this.factor=new Xe,this.factorAlignment=new Xe}},yt=(0,j.vt)(),vt=(0,j.vt)(),xt=(0,re.vt)(),bt=(0,j.vt)(),wt=(0,j.vt)(),Tt=(0,ne.vt)(),At=(0,ne.vt)(),Rt=(0,Ve.vt)(),St=(0,Ve.vt)(),It=(0,Te.vt)(),Ot=(0,re.vt)(),Mt=(0,j.vt)(),Et=(0,j.vt)(),Ct=(0,re.vt)(),Ft={normal:bt,cosAngle:0},Dt=1,Pt=2,Lt=(0,ne.fA)(0,0),Nt=(0,j.fA)(0,0,1);class zt extends Ze.NV{constructor(){super(...arguments),this.renderOccluded=We.m$.Occlude,this.isDecoration=!1,this.color=(0,re.CN)(1,1,1,1),this.polygonOffset=!1,this.anchorPosition=(0,ne.fA)(.5,.5),this.screenOffset=[0,0],this.shaderPolygonOffset=1e-5,this.textureIsSignedDistanceField=!1,this.sampleSignedDistanceFieldTexelCenter=!1,this.outlineColor=(0,re.CN)(1,1,1,1),this.outlineSize=0,this.distanceFieldBoundingBox=(0,re.vt)(),this.rotation=0,this.hasRotation=!1,this.vvSizeEnabled=!1,this.vvSize=null,this.vvColor=null,this.vvOpacity=null,this.vvSymbolAnchor=null,this.vvSymbolRotationMatrix=null,this.hasSlicePlane=!1,this.pixelSnappingEnabled=!0,this.occlusionTest=!0,this.occludedFragmentFade=!1,this.horizonCullingEnabled=!1,this.centerOffsetUnits="world",this.drawAsLabel=!1,this.depthEnabled=!0,this.isFocused=!0,this.focusEffect="none",this.draped=!1,this.isLabel=!1}}const Bt=(0,Ge.BP)().vec3f(Me.r.POSITION).vec3f(Me.r.NORMAL).vec2f(Me.r.UV0).vec4u8(Me.r.COLOR).vec2f(Me.r.SIZE).f32(Me.r.ROTATION).vec4f(Me.r.CENTEROFFSETANDDISTANCE).vec4f(Me.r.FEATUREATTRIBUTE),Ut=Bt.clone().vec4u8(Me.r.OBJECTANDLAYERIDCOLOR);class Vt{constructor(){this.vertexBufferLayout=(0,qe.E)()?Ut:Bt}elementCount(e){return 6*e.get(Me.r.POSITION).indices.length}write(e,t,i,r,s,n){(0,$e.Hk)(i.get(Me.r.POSITION),e,s.position,n,6),(0,$e.p1)(i.get(Me.r.NORMAL),t,s.normal,n,6);const a=i.get(Me.r.UV0)?.data;let o=0,l=0,c=1,h=1;a&&a.length>=4&&(o=a[0],l=a[1],c=a[2],h=a[3]),c=Math.min(1.99999,c+1),h=Math.min(1.99999,h+1);let d=i.get(Me.r.POSITION).indices.length,u=n;const f=s.uv0;for(let e=0;e<d;++e)f.set(u,0,o),f.set(u,1,l),u++,f.set(u,0,c),f.set(u,1,l),u++,f.set(u,0,c),f.set(u,1,h),u++,f.set(u,0,c),f.set(u,1,h),u++,f.set(u,0,o),f.set(u,1,h),u++,f.set(u,0,o),f.set(u,1,l),u++;(0,$e.tb)(i.get(Me.r.COLOR),4,s.color,n,6);const{data:p,indices:_}=i.get(Me.r.SIZE);d=_.length;const m=s.size;u=n;for(let e=0;e<d;++e){const t=p[2*_[e]],i=p[2*_[e]+1];for(let e=0;e<6;++e)m.set(u,0,t),m.set(u,1,i),u++}if((0,$e.uO)(i.get(Me.r.ROTATION),s.rotation,n,6),i.get(Me.r.CENTEROFFSETANDDISTANCE)?(0,$e.Ut)(i.get(Me.r.CENTEROFFSETANDDISTANCE),s.centerOffsetAndDistance,n,6):(0,$e.Pq)(s.centerOffsetAndDistance,n,6*d),i.get(Me.r.FEATUREATTRIBUTE)?(0,$e.Ut)(i.get(Me.r.FEATUREATTRIBUTE),s.featureAttribute,n,6):(0,$e.Pq)(s.featureAttribute,n,6*d),null!=r){const e=i.get(Me.r.POSITION)?.indices;if(e){const t=e.length,i=s.getField(Me.r.OBJECTANDLAYERIDCOLOR,je.XP);(0,$e.tH)(r,i,t,n,6)}}}intersect(e,t,i,r,s,n,a){const{options:{selectionMode:o,hud:l,excludeLabels:c},point:h,camera:d}=r;if(!o||!l||c&&t.isLabel||!h)return;const u=this.vertexBufferLayout.createView(e),f=u.getField(Me.r.POSITION,je.xs),p=u.getField(Me.r.NORMAL,je.xs),_=u.getField(Me.r.ROTATION,je.Y$),m=u.getField(Me.r.SIZE,je.gH),g=u.getField(Me.r.FEATUREATTRIBUTE,je.Eq),y=u.getField(Me.r.CENTEROFFSETANDDISTANCE,je.Eq),v="screen"===t.centerOffsetUnits,x=(0,Qe.c)(t);if(null==f||null==p||null==_||null==m||null==y)return;const b=null==g?null:g.getVec(0,Ct),{scaleX:w,scaleY:T}=jt(b,t,d.pixelRatio),A=f.count/6;for(let e=0;e<A;e++){const s=6*e;if(f.getVec(s,yt),null!=i&&(0,Ae.g)(yt,yt,i),(0,Ae.t)(yt,yt,d.viewMatrix),y.getVec(s,Ot),(0,Ae.i)(Mt,Ot[0],Ot[1],Ot[2]),!v&&(yt[0]+=Mt[0],yt[1]+=Mt[1],0!==Mt[2])){const e=Mt[2];(0,Ae.n)(Mt,yt),(0,Ae.d)(yt,yt,(0,Ae.h)(Mt,Mt,e))}if(p.getVec(s,vt),_t(vt,Rt,d,Ft),Ht(t,yt,Ft,d,gt),d.applyProjection(yt,xt),xt[0]>-1){v&&(Mt[0]||Mt[1])&&(xt[0]+=Mt[0]*d.pixelRatio,0!==Mt[1]&&(xt[1]+=(0,Ye.m0)(Mt[1],gt.factorAlignment)*d.pixelRatio),d.unapplyProjection(xt,yt)),xt[0]+=t.screenOffset[0]*d.pixelRatio,xt[1]+=t.screenOffset[1]*d.pixelRatio,xt[0]=Math.floor(xt[0]),xt[1]=Math.floor(xt[1]),m.getVec(s,Lt),(0,Ye.MD)(Lt,gt.factor,Lt);const i=Dt*d.pixelRatio;let n=0;t.textureIsSignedDistanceField&&(n=Math.min(t.outlineSize,.5*Lt[0])*d.pixelRatio/2),Lt[0]*=w,Lt[1]*=T;const o=_.get(s),l=t.rotation+o;if(mt(h,xt[0],xt[1],Lt,i,n,l,t,x)){const t=r.ray;if((0,Ae.t)(wt,yt,(0,we.B8)(It,d.viewMatrix)),xt[0]=h[0],xt[1]=h[1],d.unprojectFromRenderScreen(xt,yt)){const i=(0,j.vt)();(0,Ae.c)(i,t.direction);const r=1/(0,Ae.l)(i);(0,Ae.h)(i,i,r),a((0,Ae.j)(t.origin,yt)*r,i,e,!0,1,wt)}}}}}}function jt(e,t,i){return null==e||null==t.vvSize?{scaleX:i,scaleY:i}:((0,He.VC)(Et,t,e),{scaleX:Et[0]*i,scaleY:Et[1]*i})}function Ht(e,t,i,r,s){if(!e.verticalOffset?.screenLength)return e.screenSizePerspective||e.screenSizePerspectiveAlignment?Gt(e,s,(0,Ae.l)(t),i.cosAngle):(s.factor.scale=1,s.factorAlignment.scale=1),t;const n=(0,Ae.l)(t),a=e.screenSizePerspectiveAlignment??e.screenSizePerspective,o=(0,Je.kE)(r,n,e.verticalOffset,i.cosAngle,a);return Gt(e,s,n,i.cosAngle),(0,Ae.h)(i.normal,i.normal,o),(0,Ae.g)(t,t,i.normal)}function Gt(e,t,i,r){null!=e.screenSizePerspective?(0,Ye.cJ)(r,i,e.screenSizePerspective,t.factor):(t.factor.scale=1,t.factor.factor=0,t.factor.minScaleFactor=0),null!=e.screenSizePerspectiveAlignment?(0,Ye.cJ)(r,i,e.screenSizePerspectiveAlignment,t.factorAlignment):(t.factorAlignment.factor=t.factor.factor,t.factorAlignment.scale=t.factor.scale,t.factorAlignment.minScaleFactor=t.factor.minScaleFactor)}let kt=class extends ge{constructor(e){super(e),this._glMaterials=null,this._produces=new Map,this._renderGeometries=new Map,this._vaoCache=null,this._drawParameters=new Be,this._bufferWriter=null,this.slicePlaneEnabled=!1,this.isGround=!1,this.type=e.material instanceof ft?be.dz.HUD:be.dz.OBJECT,this.layerUid=e.layerUid}get produces(){return this._produces}get numFeatures(){let e=0;return this._renderGeometries.forEach((t=>e+=t.numElements/6)),e}get usedMemory(){let e=0;return this._renderGeometries.forEach((t=>{e+=t.vao.usedMemory})),e}intersect(e,t,i,r,s,n){const{material:a,_bufferWriter:o,layerUid:l}=this,c=this._renderGeometries;if(0!==c.size&&null!=o.intersect)for(const[t,s]of c){const{buffer:t,localOrigin:n,objectIds:c}=s;if(null==c)return;o.intersect(t.data,a.parameters,n,e,i,r,((t,i,r,s,n,o)=>{const h=c[r];e.handleObjectIntersection({object:{id:ue.M,graphicUid:h,layerUid:l,boundingVolumeWorldSpace:new Pe,geometries:[{material:a}]},geometryId:0,primIndex:r},t,i,s,null,n,o)}))}}initialize(){this._bufferWriter=this.material.createBufferWriter(),this.material.produces.forEach(((e,t)=>{this._produces.set(t,(t=>t!==pe.V.Highlight&&t!==pe.V.ShadowHighlight&&e(t)))}))}destroy(){this._glMaterials.dispose();const e=this._renderGeometries.keys();for(const t of e)this.removeRenderGeometry(t)}acquireTechniques(e){const t=this.material;if(!t.shouldRender(e))return null;const{output:i,bind:r}=e,s=t.produces.get(r.slot);if(!s?.(i))return null;if(i===pe.V.Highlight||i===pe.V.ShadowHighlight)return null;const n=this._glMaterials.load(e.rctx,r.slot,i);return n?.beginSlot(r)}render(e,t){const i=this._renderGeometries;if(0===i.size)return;const{bind:r}=e,s=r.slot===Ne.N.OCCLUDER_MATERIAL||r.slot===Ne.N.TRANSPARENT_OCCLUDER_MATERIAL?r.slot:null,n=e.rctx;n.runAppleAmdDriverHelper(),n.bindTechnique(t,r,this.material.parameters);const a=t.program;for(const[e,o]of i)this._drawParameters.origin=o.localOrigin,a.bindDraw(r,this.material.parameters,this._drawParameters),t.ensureAttributeLocations(o.vao),n.bindVAO(o.vao),n.setPipelineState(t.getPipeline(!1,s)),n.drawArrays(t.primitiveType,0,o.numElements)}initializeRenderContext(e,t){this._glMaterials=new xe(this.material,e.materials),this._vaoCache=e.renderContext.rctx.getVaoCache(this.material.vertexAttributeLocations,(0,fe.U)(this._bufferWriter.vertexBufferLayout))}uninitializeRenderContext(){}addRenderGeometry(e,t,i,r){this.removeRenderGeometry(e);const s=this._vaoCache.newVao(i.data.byteLength);s.vertexBuffers.get("geometry").setSubData(new Uint8Array(i.data),0,0,i.data.byteLength);const n={buffer:i,localOrigin:r,vao:s,numElements:i.elementCount,objectIds:t};return this._renderGeometries.set(e,n),n}removeRenderGeometry(e){const t=this._renderGeometries.get(e);null!=t&&(this._vaoCache.deleteVao(t.vao),this._renderGeometries.delete(e))}hasHighlightOptions(e){return!1}};(0,r._)([(0,o.MZ)({constructOnly:!0})],kt.prototype,"material",void 0),kt=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.rendering.DirectRenderer")],kt);var qt,Zt,Wt,Yt,Xt=i(91869),$t=i(90629),Jt=i(87317),Qt=i(82919),Kt=i(71351),ei=i(44280);i(3694),(Yt=qt||(qt={}))[Yt.Default=0]="Default",Yt[Yt.Screenshot=1]="Screenshot",Yt[Yt.ObjectAndLayerID=2]="ObjectAndLayerID",function(e){e[e.TOP=0]="TOP",e[e.RIGHT=1]="RIGHT",e[e.BOTTOM=2]="BOTTOM",e[e.LEFT=3]="LEFT"}(Zt||(Zt={}));let ti=Wt=class extends m.A{constructor(e){super(e),this._ray=(0,Kt.vt)(),this._viewport=(0,re.fA)(0,0,1,1),this._padding=(0,re.fA)(0,0,0,0),this._fov=55/180*Math.PI,this._nearFar=(0,ne.fA)(1,1e3),this._viewDirty=!0,this._viewMatrix=(0,Te.vt)(),this._viewProjectionDirty=!0,this._viewProjectionMatrix=(0,Te.vt)(),this._viewInverseTransposeMatrixDirty=!0,this._viewInverseTransposeMatrix=(0,Te.vt)(),this._frustumDirty=!0,this._frustum=(0,Qt.vt)(),this._fullViewport=(0,re.vt)(),this._pixelRatio=1,this.row=0,this.column=0,this._rows=1,this._columns=1,this._center=(0,j.vt)(),this._up=(0,j.vt)(),this.relativeElevation=0}get pixelRatio(){return this._pixelRatio}set pixelRatio(e){this._pixelRatio=e>0?e:1}get rows(){return this._rows}set rows(e){this._rows=Math.max(1,e)}get columns(){return this._columns}set columns(e){this._columns=Math.max(1,e)}get eye(){return this._ray.origin}set eye(e){this._compareAndSetView(e,this._ray.origin)}get center(){return this._center}set center(e){this._compareAndSetView(e,this._center,"_center")}get ray(){return(0,Ae.d)(this._ray.direction,this.center,this.eye),this._ray}get up(){return this._up}set up(e){this._compareAndSetView(e,this._up,"_up")}get viewMatrix(){return this._ensureViewClean(),this._viewMatrix}set viewMatrix(e){(0,we.C)(this._viewMatrix,e),this.notifyChange("_viewMatrix"),this._viewDirty=!1,this._viewInverseTransposeMatrixDirty=!0,this._viewProjectionDirty=!0,this._frustumDirty=!0}get viewForward(){return this._ensureViewClean(),(0,Ae.i)((0,j.vt)(),-this._viewMatrix[2],-this._viewMatrix[6],-this._viewMatrix[10])}get viewUp(){return this._ensureViewClean(),(0,Ae.i)((0,j.vt)(),this._viewMatrix[1],this._viewMatrix[5],this._viewMatrix[9])}get viewRight(){return this._ensureViewClean(),(0,Ae.i)((0,j.vt)(),this._viewMatrix[0],this._viewMatrix[4],this._viewMatrix[8])}get nearFar(){return this._nearFar}get near(){return this._nearFar[0]}set near(e){this._nearFar[0]!==e&&(this._nearFar[0]=e,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_nearFar"))}get far(){return this._nearFar[1]}set far(e){this._nearFar[1]!==e&&(this._nearFar[1]=e,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_nearFar"))}get viewport(){return this._viewport}set viewport(e){this.x=e[0],this.y=e[1],this.width=e[2],this.height=e[3]}get screenViewport(){if(1===this.pixelRatio)return this._viewport;const e=(0,Jt.b)((0,re.vt)(),this._viewport,1/this.pixelRatio),t=this._get("screenViewport");return t&&(0,Jt.e)(e,t)?t:e}get screenPadding(){if(1===this.pixelRatio)return this._padding;const e=(0,Jt.b)((0,re.vt)(),this._padding,1/this.pixelRatio),t=this._get("screenPadding");return t&&(0,Jt.e)(e,t)?t:e}get x(){return this._viewport[0]}set x(e){e+=this._padding[Zt.LEFT],this._viewport[0]!==e&&(this._viewport[0]=e,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_viewport"))}get y(){return this._viewport[1]}set y(e){e+=this._padding[Zt.BOTTOM],this._viewport[1]!==e&&(this._viewport[1]=e,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_viewport"))}get width(){return this._viewport[2]}set width(e){this._viewport[2]!==e&&(this._viewport[2]=e,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_viewport"))}get height(){return this._viewport[3]}set height(e){this._viewport[3]!==e&&(this._viewport[3]=e,this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_viewport"))}get fullWidth(){return this._viewport[2]+this._padding[Zt.RIGHT]+this._padding[Zt.LEFT]}set fullWidth(e){this.width=e-(this._padding[Zt.RIGHT]+this._padding[Zt.LEFT])}get fullHeight(){return this._viewport[3]+this._padding[Zt.TOP]+this._padding[Zt.BOTTOM]}set fullHeight(e){this.height=e-(this._padding[Zt.TOP]+this._padding[Zt.BOTTOM])}get fullViewport(){return this._fullViewport[0]=this._viewport[0]-this._padding[Zt.LEFT],this._fullViewport[1]=this._viewport[1]-this._padding[Zt.BOTTOM],this._fullViewport[2]=this.fullWidth,this._fullViewport[3]=this.fullHeight,this._fullViewport}get _aspect(){return this.width/this.height}get padding(){return this._padding}set padding(e){(0,Jt.a)(this._padding,e)||(this._viewport[0]+=e[Zt.LEFT]-this._padding[Zt.LEFT],this._viewport[1]+=e[Zt.BOTTOM]-this._padding[Zt.BOTTOM],this._viewport[2]-=e[Zt.RIGHT]+e[Zt.LEFT]-(this._padding[Zt.RIGHT]+this._padding[Zt.LEFT]),this._viewport[3]-=e[Zt.TOP]+e[Zt.BOTTOM]-(this._padding[Zt.TOP]+this._padding[Zt.BOTTOM]),(0,Jt.c)(this._padding,e),this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_padding"),this.notifyChange("_viewport"))}get viewProjectionMatrix(){return this._viewProjectionDirty&&((0,we.lw)(this._viewProjectionMatrix,this.projectionMatrix,this.viewMatrix),this._viewProjectionDirty=!1),this._viewProjectionMatrix}get projectionMatrix(){return this._projectionMatrixInternal}get inverseProjectionMatrix(){return(0,we.B8)((0,Te.vt)(),this.projectionMatrix)||this._get("inverseProjectionMatrix")||(0,Te.vt)()}get fov(){return this._fov}set fov(e){this._fov=e,this._viewProjectionDirty=!0,this._frustumDirty=!0}get fovX(){return function(e,t,i){return 2*Math.atan(t*Math.tan(.5*e)/Math.sqrt(t*t+i*i))}(this._fov,this.width,this.height)}set fovX(e){this._fov=function(e,t,i){return 2*Math.atan(Math.sqrt(t*t+i*i)*Math.tan(.5*e)/t)}(e,this.width,this.height),this._viewProjectionDirty=!0,this._frustumDirty=!0}get fovY(){return function(e,t,i){return 2*Math.atan(i*Math.tan(.5*e)/Math.sqrt(t*t+i*i))}(this._fov,this.width,this.height)}set fovY(e){this._fov=function(e,t,i){return 2*Math.atan(Math.sqrt(t*t+i*i)*Math.tan(.5*e)/i)}(e,this.width,this.height),this._viewProjectionDirty=!0,this._frustumDirty=!0}get distance(){return(0,Ae.j)(this.center,this.eye)}get frustum(){return this._recomputeFrustum(),this._frustum}get viewInverseTransposeMatrix(){return(this._viewInverseTransposeMatrixDirty||this._viewDirty)&&((0,we.B8)(this._viewInverseTransposeMatrix,this.viewMatrix),(0,we.mg)(this._viewInverseTransposeMatrix,this._viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),this._viewInverseTransposeMatrix}depthNDCToWorld(e){const{near:t,far:i}=this;return 2*t*i/(i+t-e*(i-t))}get perRenderPixelRatio(){return Math.tan(this.fovX/2)/(this.width/2)}get perScreenPixelRatio(){return this.perRenderPixelRatio*this.pixelRatio}get aboveGround(){return null!=this.relativeElevation&&this.relativeElevation>=0}get _projectionMatrixInternal(){const e=this.width,t=this.height,i=this.near*Math.tan(this.fovY/2)*2,r=i*this._aspect,s=i/this.rows,n=r/this.columns,a=-r/2+this.column*n,o=a+n,l=-i/2+this.row*s,c=l+s,h=(0,we.$h)((0,Te.vt)(),a*(1+2*this._padding[Zt.LEFT]/e),o*(1+2*this._padding[Zt.RIGHT]/e),l*(1+2*this._padding[Zt.BOTTOM]/t),c*(1+2*this._padding[Zt.TOP]/t),this.near,this.far),d=this._get("projectionMatrix");return d&&(0,we.aI)(d,h)?d:h}copyFrom(e){(0,Ae.c)(this._ray.origin,e.eye),this.center=e.center,this.up=e.up,(0,Jt.c)(this._viewport,e.viewport),this.notifyChange("_viewport"),(0,Jt.c)(this._padding,e.padding),this.notifyChange("_padding"),(0,se.C)(this._nearFar,e.nearFar),this.notifyChange("_nearFar"),this._fov=e.fov,this.row=e.row,this.column=e.column,this.rows=e.rows,this.columns=e.columns,this.relativeElevation=e.relativeElevation;const t=e;return this._viewDirty=t._viewDirty,this._viewDirty||((0,we.C)(this._viewMatrix,e.viewMatrix),this.notifyChange("_viewMatrix")),this._viewProjectionDirty=!0,this._frustumDirty=t._frustumDirty,this._frustumDirty||((0,Qt.C)(this._frustum,e.frustum),this._frustumDirty=!1),t._viewInverseTransposeMatrixDirty?this._viewInverseTransposeMatrixDirty=!0:((0,we.C)(this._viewInverseTransposeMatrix,e.viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),(0,Jt.c)(this._fullViewport,e.fullViewport),this.pixelRatio=e.pixelRatio,this}copyViewFrom(e){this.eye=e.eye,this.center=e.center,this.up=e.up,this.fov=e.fov}clone(){return(new Wt).copyFrom(this)}equals(e){return(0,Ae.p)(this.eye,e.eye)&&(0,Ae.p)(this.center,e.center)&&(0,Ae.p)(this.up,e.up)&&(0,Jt.a)(this._viewport,e.viewport)&&(0,Jt.a)(this._padding,e.padding)&&(0,se.t2)(this.nearFar,e.nearFar)&&this._fov===e.fov&&this.pixelRatio===e.pixelRatio&&this.relativeElevation===e.relativeElevation&&this.row===e.row&&this.column===e.column&&this.rows===e.rows&&this.columns===e.columns}almostEquals(e){const t=Math.max(1,1/this.pixelRatio,1/e.pixelRatio);if(Math.abs(e.fov-this._fov)>=.001||(0,Jt.d)(e.screenPadding,this.screenPadding)>=t||(0,Jt.d)(this.screenViewport,e.screenViewport)>=t||this.row!==e.row||this.column!==e.column||this.rows!==e.rows||this.columns!==e.columns)return!1;(0,Ae.a)(ni,e.eye,e.center),(0,Ae.a)(ai,this.eye,this.center);const i=(0,Ae.f)(ni,ai),r=(0,Ae.z)(ni),s=(0,Ae.z)(ai),n=5e-4;return i*i>=(1-1e-10)*r*s&&(0,Ae.y)(e.eye,this.eye)<Math.max(r,s)*n*n}computeRenderPixelSizeAt(e){return this.computeRenderPixelSizeAtDist(this._viewDirectionDistance(e))}computeRenderPixelSizeAtDist(e){return e*this.perRenderPixelRatio}computeScreenPixelSizeAt(e){return this.computeScreenPixelSizeAtDist(this._viewDirectionDistance(e))}_viewDirectionDistance(e){return Math.abs((0,ei.gr)(this.viewForward,(0,Ae.d)(ni,e,this.eye)))}computeScreenPixelSizeAtDist(e){return e*this.perScreenPixelRatio}computeDistanceFromRadius(e,t){return e/Math.tan(Math.min(this.fovX,this.fovY)/(2*(t||1)))}getScreenCenter(e=(0,$t.gs)()){return e[0]=(this.padding[Zt.LEFT]+this.width/2)/this.pixelRatio,e[1]=(this.padding[Zt.TOP]+this.height/2)/this.pixelRatio,e}getRenderCenter(e,t=.5,i=.5){return e[0]=this.padding[Zt.LEFT]+this.width*t,e[1]=this.padding[Zt.BOTTOM]+this.height*i,e[2]=.5,e}setGLViewport(e){const t=this.viewport,i=this.padding;e.setViewport(t[0]-i[3],t[1]-i[2],t[2]+i[1]+i[3],t[3]+i[0]+i[2])}applyProjection(e,t){e!==ri&&(0,Ae.c)(ri,e),ri[3]=1,(0,Jt.t)(ri,ri,this.projectionMatrix);const i=Math.abs(ri[3]);(0,Ae.h)(ri,ri,1/i);const r=this.fullViewport;t[0]=(0,ae.Cc)(0,r[0]+r[2],.5+.5*ri[0]),t[1]=(0,ae.Cc)(0,r[1]+r[3],.5+.5*ri[1]),t[2]=.5*(ri[2]+1),t[3]=i}unapplyProjection(e,t){const i=this.fullViewport;ri[0]=(e[0]/(i[0]+i[2])*2-1)*e[3],ri[1]=(e[1]/(i[1]+i[3])*2-1)*e[3],ri[2]=(2*e[2]-1)*e[3],ri[3]=e[3],null!=this.inverseProjectionMatrix&&((0,Jt.t)(ri,ri,this.inverseProjectionMatrix),t[0]=ri[0],t[1]=ri[1],t[2]=ri[2])}projectToScreen(e,t){return this.projectToRenderScreen(e,oi),this.renderToScreen(oi,t),t}projectToRenderScreen(e,t){if(ri[0]=e[0],ri[1]=e[1],ri[2]=e[2],ri[3]=1,(0,Jt.t)(ri,ri,this.viewProjectionMatrix),0===ri[3])return null;const i=ri;(0,Ae.h)(i,i,1/Math.abs(ri[3]));const r=this.fullViewport,s=(0,ae.Cc)(0,r[0]+r[2],.5+.5*i[0]),n=(0,ae.Cc)(0,r[1]+r[3],.5+.5*i[1]);return"x"in t?(t.x=s,t.y=n):(t[0]=s,t[1]=n,t.length>2&&(t[2]=.5*(i[2]+1))),t}unprojectFromScreen(e,t){return this.unprojectFromRenderScreen(this.screenToRender(e,oi),t)}unprojectFromRenderScreen(e,t){if((0,we.lw)(si,this.projectionMatrix,this.viewMatrix),!(0,we.B8)(si,si))return null;const i=this.fullViewport;return ri[0]=2*(e[0]-i[0])/i[2]-1,ri[1]=2*(e[1]-i[1])/i[3]-1,ri[2]=2*e[2]-1,ri[3]=1,(0,Jt.t)(ri,ri,si),0===ri[3]?null:(t[0]=ri[0]/ri[3],t[1]=ri[1]/ri[3],t[2]=ri[2]/ri[3],t)}constrainWindowSize(e,t,i,r){const s=e*this.pixelRatio,n=t*this.pixelRatio,a=Math.max(s-i/2,0),o=Math.max(this.fullHeight-n-r/2,0),l=-Math.min(s-i/2,0),c=-Math.min(this.fullHeight-n-r/2,0),h=i-l- -Math.min(this.fullWidth-s-i/2,0),d=r-c- -Math.min(n-r/2,0);return[Math.round(a),Math.round(o),Math.round(h),Math.round(d)]}computeUp(e){e===K.RT.Global?this._computeUpGlobal():this._computeUpLocal()}screenToRender(e,t){const i=e[0]*this.pixelRatio,r=this.fullHeight-e[1]*this.pixelRatio;return t[0]=i,t[1]=r,t}renderToScreen(e,t){const i=e[0]/this.pixelRatio,r=(this.fullHeight-e[1])/this.pixelRatio;t[0]=i,t[1]=r}_computeUpGlobal(){(0,Ae.d)(ni,this.center,this.eye);const e=(0,Ae.l)(this.center);e<1?((0,Ae.i)(this._up,0,0,1),this._markViewDirty(),this.notifyChange("_up")):Math.abs((0,Ae.f)(ni,this.center))>.9999*(0,Ae.l)(ni)*e||((0,Ae.e)(this._up,ni,this.center),(0,Ae.e)(this._up,this._up,ni),(0,Ae.n)(this._up,this._up),this.notifyChange("_up"),this._markViewDirty())}_computeUpLocal(){(0,Ae.o)(ni,this.eye,this.center),Math.abs(ni[2])<=.9999&&((0,Ae.h)(ni,ni,ni[2]),(0,Ae.i)(this._up,-ni[0],-ni[1],1-ni[2]),(0,Ae.n)(this._up,this._up),this.notifyChange("_up"),this._markViewDirty())}_compareAndSetView(e,t,i=""){"number"==typeof e[0]&&isFinite(e[0])&&"number"==typeof e[1]&&isFinite(e[1])&&"number"==typeof e[2]&&isFinite(e[2])?(0,Ae.p)(e,t)||((0,Ae.c)(t,e),this._markViewDirty(),i.length&&this.notifyChange(i)):c.A.getLogger("esri.views.3d.webgl-engine.lib.RenderCamera").warn("RenderCamera vector contains invalid number, ignoring value")}_markViewDirty(){this._viewDirty=!0,this._frustumDirty=!0,this._viewProjectionDirty=!0}_recomputeFrustum(){this._frustumDirty&&((0,Qt.ui)(this.viewMatrix,this.projectionMatrix,this._frustum),this._frustumDirty=!1)}_ensureViewClean(){this._viewDirty&&((0,we.t5)(this._viewMatrix,this.eye,this.center,this.up),this.notifyChange("_viewMatrix"),this._viewDirty=!1,this._viewInverseTransposeMatrixDirty=!0)}};(0,r._)([(0,o.MZ)()],ti.prototype,"_viewport",void 0),(0,r._)([(0,o.MZ)()],ti.prototype,"_padding",void 0),(0,r._)([(0,o.MZ)()],ti.prototype,"_fov",void 0),(0,r._)([(0,o.MZ)()],ti.prototype,"_nearFar",void 0),(0,r._)([(0,o.MZ)()],ti.prototype,"_viewDirty",void 0),(0,r._)([(0,o.MZ)()],ti.prototype,"_viewMatrix",void 0),(0,r._)([(0,o.MZ)()],ti.prototype,"_pixelRatio",void 0),(0,r._)([(0,o.MZ)()],ti.prototype,"pixelRatio",null),(0,r._)([(0,o.MZ)()],ti.prototype,"row",void 0),(0,r._)([(0,o.MZ)()],ti.prototype,"column",void 0),(0,r._)([(0,o.MZ)()],ti.prototype,"_rows",void 0),(0,r._)([(0,o.MZ)()],ti.prototype,"rows",null),(0,r._)([(0,o.MZ)()],ti.prototype,"_columns",void 0),(0,r._)([(0,o.MZ)()],ti.prototype,"columns",null),(0,r._)([(0,o.MZ)()],ti.prototype,"eye",null),(0,r._)([(0,o.MZ)()],ti.prototype,"center",null),(0,r._)([(0,o.MZ)()],ti.prototype,"_center",void 0),(0,r._)([(0,o.MZ)()],ti.prototype,"up",null),(0,r._)([(0,o.MZ)()],ti.prototype,"_up",void 0),(0,r._)([(0,o.MZ)()],ti.prototype,"viewMatrix",null),(0,r._)([(0,o.MZ)({readOnly:!0})],ti.prototype,"viewForward",null),(0,r._)([(0,o.MZ)({readOnly:!0})],ti.prototype,"viewUp",null),(0,r._)([(0,o.MZ)({readOnly:!0})],ti.prototype,"viewRight",null),(0,r._)([(0,o.MZ)({readOnly:!0})],ti.prototype,"nearFar",null),(0,r._)([(0,o.MZ)()],ti.prototype,"near",null),(0,r._)([(0,o.MZ)()],ti.prototype,"far",null),(0,r._)([(0,o.MZ)()],ti.prototype,"viewport",null),(0,r._)([(0,o.MZ)({readOnly:!0})],ti.prototype,"screenViewport",null),(0,r._)([(0,o.MZ)({readOnly:!0})],ti.prototype,"screenPadding",null),(0,r._)([(0,o.MZ)()],ti.prototype,"x",null),(0,r._)([(0,o.MZ)()],ti.prototype,"y",null),(0,r._)([(0,o.MZ)()],ti.prototype,"width",null),(0,r._)([(0,o.MZ)()],ti.prototype,"height",null),(0,r._)([(0,o.MZ)()],ti.prototype,"fullWidth",null),(0,r._)([(0,o.MZ)()],ti.prototype,"fullHeight",null),(0,r._)([(0,o.MZ)({readOnly:!0})],ti.prototype,"_aspect",null),(0,r._)([(0,o.MZ)()],ti.prototype,"padding",null),(0,r._)([(0,o.MZ)({readOnly:!0})],ti.prototype,"projectionMatrix",null),(0,r._)([(0,o.MZ)({readOnly:!0})],ti.prototype,"inverseProjectionMatrix",null),(0,r._)([(0,o.MZ)()],ti.prototype,"fov",null),(0,r._)([(0,o.MZ)()],ti.prototype,"fovX",null),(0,r._)([(0,o.MZ)()],ti.prototype,"fovY",null),(0,r._)([(0,o.MZ)()],ti.prototype,"viewInverseTransposeMatrix",null),(0,r._)([(0,o.MZ)({readOnly:!0})],ti.prototype,"_projectionMatrixInternal",null),(0,r._)([(0,o.MZ)()],ti.prototype,"relativeElevation",void 0),ti=Wt=(0,r._)([(0,h.$)("esri.views.3d.webgl.RenderCamera")],ti);const ii=ti,ri=(0,re.vt)(),si=(0,Te.vt)(),ni=(0,j.vt)(),ai=(0,j.vt)(),oi=(0,$t.r_)();var li=i(39341);class ci{constructor(e=1/0,t=-1/0){this.near=e,this.far=t}set(e,t){this.near=e,this.far=t}union(e){null!=e&&(this.near=Math.min(this.near,e.near),this.far=Math.max(this.far,e.far))}within(e){return this.near<=e&&e<=this.far}}ci.zero=new ci(0,0);var hi=i(78230),di=i(48852);class ui{constructor(e,t,i){this._elementSize=t,this._buffer=di.g.createVertex(e,rt._U.STATIC_DRAW),this.resize(i)}destroy(){this._buffer.dispose()}get elementSize(){return this._elementSize}get capacity(){return this._capacity}get array(){return this._array}get buffer(){return this._buffer}get usedMemory(){return this._array.byteLength+this._buffer.usedMemory}copyRange(e,t,i,r=0){const s=new Uint8Array(this.array,e*this.elementSize,(t-e)*this.elementSize);new Uint8Array(i.array,r*this.elementSize).set(s)}transferAll(){this._buffer.setData(this._array)}transferRange(e,t){const i=e*this._elementSize,r=t*this._elementSize;this._buffer.setSubData(new Uint8Array(this._array),i,i,r)}resize(e){const t=e*this._elementSize,i=new ArrayBuffer(t);this._array&&(e>=this._capacity?new Uint8Array(i).set(new Uint8Array(this._array)):new Uint8Array(i).set(new Uint8Array(this._array).subarray(0,e*this._elementSize))),this._array=i,this._buffer.setSize(t),this._capacity=e}}class fi{constructor(e){this.modelOriginHi=e.getField(Me.r.INSTANCEMODELORIGINHI,je.xs),this.modelOriginLo=e.getField(Me.r.INSTANCEMODELORIGINLO,je.xs),this.model=e.getField(Me.r.INSTANCEMODEL,je.jZ),this.modelNormal=e.getField(Me.r.INSTANCEMODELNORMAL,je.jZ),this.featureAttribute=e.getField(Me.r.INSTANCEFEATUREATTRIBUTE,je.Eq),this.color=e.getField(Me.r.INSTANCECOLOR,je.XP),this.objectAndLayerIdColor=e.getField(Me.r.INSTANCEOBJECTANDLAYERIDCOLOR,je.XP)}}class pi{constructor(e,t){this._rctx=e,this._instanceBufferLayout=t,this._headIndex=0,this._tailIndex=0,this._firstIndex=null,this._captureFirstIndex=!0,this._updating=!1,this._prevHeadIndex=0,this._resized=!1,this._capacity=1}destroy(){this._buffer&&this._buffer.destroy()}get buffer(){return this._buffer.buffer}get view(){return this._view}get capacity(){return this._capacity}get size(){const e=this._headIndex,t=this._tailIndex;return e>=t?e-t:e+this._capacity-t}get isEmpty(){return this._headIndex===this._tailIndex}get isFull(){return this._tailIndex===(this._headIndex+1)%this._capacity}get headIndex(){return this._headIndex}get tailIndex(){return this._tailIndex}get firstIndex(){return this._firstIndex}get usedMemory(){return this._buffer?.usedMemory??0}reset(){this._headIndex=0,this._tailIndex=0,this._firstIndex=null}startUpdateCycle(){this._captureFirstIndex=!0}beginUpdate(){(0,Oe.vA)(!this._updating,"already updating"),this._updating=!0,this._prevHeadIndex=this._headIndex}endUpdate(){(0,Oe.vA)(this._updating,"not updating"),this.size<g.$U*this.capacity&&this._shrink(),this._resized?(this._buffer.transferAll(),this._resized=!1):this._transferRange(this._prevHeadIndex,this._headIndex),this._updating=!1}allocateHead(){(0,Oe.vA)(this._updating,"not updating"),this.isFull&&this._grow();const e=this.headIndex;return this._captureFirstIndex&&(this._firstIndex=e,this._captureFirstIndex=!1),this._incrementHead(),(0,Oe.vA)(this._headIndex!==this._tailIndex,"invalid pointers"),e}freeTail(){(0,Oe.vA)(this._updating,"not updating"),(0,Oe.vA)(this.size>0,"invalid size");const e=this._tailIndex===this._firstIndex;this._incrementTail(),e&&(this._firstIndex=this._tailIndex)}_grow(){const e=Math.max(_i,Math.floor(this._capacity*g.Ji));this._resize(e)}_shrink(){const e=Math.max(_i,Math.floor(this._capacity*g.He));this._resize(e)}_resize(e){if((0,Oe.vA)(this._updating,"not updating"),e===this._capacity)return;const t=new ui(this._rctx,this._instanceBufferLayout.stride,e);if(this._buffer){this._firstIndex&&(this._firstIndex=(this._firstIndex+this._capacity-this._tailIndex)%this._capacity);const e=this.size,i=this._compactInstances(t);(0,Oe.vA)(i===e,"invalid compaction"),this._buffer.destroy(),this._tailIndex=0,this._headIndex=i,this._prevHeadIndex=0}this._resized=!0,this._capacity=e,this._buffer=t,this._view=new fi(this._instanceBufferLayout.createView(this._buffer.array))}_compactInstances(e){const t=this._headIndex,i=this._tailIndex;return i<t?(this._buffer.copyRange(i,t,e),t-i):i>t?(this._buffer.copyRange(i,this._capacity,e),t>0&&this._buffer.copyRange(0,t,e,this._capacity-i),t+(this._capacity-i)):0}_incrementHead(e=1){this._headIndex=(this._headIndex+e)%this._capacity}_incrementTail(e=1){this._tailIndex=(this._tailIndex+e)%this._capacity}_transferRange(e,t){e<t?this._buffer.transferRange(e,t):e>t&&(t>0&&this._buffer.transferRange(0,t),this._buffer.transferRange(e,this._capacity))}}const _i=64;var mi;!function(e){e[e.ALLOCATED=1]="ALLOCATED",e[e.DEFAULT_ACTIVE=2]="DEFAULT_ACTIVE",e[e.VISIBLE=4]="VISIBLE",e[e.HIGHLIGHT=8]="HIGHLIGHT",e[e.HIGHLIGHT_ACTIVE=16]="HIGHLIGHT_ACTIVE",e[e.REMOVE=32]="REMOVE",e[e.TRANSFORM_CHANGED=64]="TRANSFORM_CHANGED",e[e.ACTIVE=18]="ACTIVE"}(mi||(mi={}));class gi{constructor(e){this.localTransform=e.getField(Me.r.LOCALTRANSFORM,je.E$),this.globalTransform=e.getField(Me.r.GLOBALTRANSFORM,je.E$),this.modelOrigin=e.getField(Me.r.MODELORIGIN,je.Xm),this.model=e.getField(Me.r.INSTANCEMODEL,je.jZ),this.modelNormal=e.getField(Me.r.INSTANCEMODELNORMAL,je.jZ),this.modelScaleFactors=e.getField(Me.r.MODELSCALEFACTORS,je.gH),this.boundingSphere=e.getField(Me.r.BOUNDINGSPHERE,je.Aj),this.featureAttribute=e.getField(Me.r.FEATUREATTRIBUTE,je.Eq),this.color=e.getField(Me.r.COLOR,je.XP),this.objectAndLayerIdColor=e.getField(Me.r.OBJECTANDLAYERIDCOLOR,je.XP),this.state=e.getField(Me.r.STATE,je.SL),this.lodLevel=e.getField(Me.r.LODLEVEL,je.SL)}}let yi=class extends m.A{constructor(e,t){super(e),this.events=new s.A,this._capacity=0,this._size=0,this._next=0,this._highlightOptionsMap=new Map,this._highlightOptionsMapPrev=new Map,this._layout=function(e){let t=(0,Ge.BP)().mat4f64(Me.r.LOCALTRANSFORM).mat4f64(Me.r.GLOBALTRANSFORM).vec4f64(Me.r.BOUNDINGSPHERE).vec3f64(Me.r.MODELORIGIN).mat3f(Me.r.INSTANCEMODEL).mat3f(Me.r.INSTANCEMODELNORMAL).vec2f(Me.r.MODELSCALEFACTORS);return e.includes(Me.r.FEATUREATTRIBUTE)&&(t=t.vec4f(Me.r.FEATUREATTRIBUTE)),e.includes(Me.r.COLOR)&&(t=t.vec4u8(Me.r.COLOR)),e.includes(Me.r.OBJECTANDLAYERIDCOLOR)&&(t=t.vec4u8(Me.r.OBJECTANDLAYERIDCOLOR)),t=t.u8(Me.r.STATE).u8(Me.r.LODLEVEL),t}(t),this._capacity=_i,this._buffer=this._layout.createBuffer(this._capacity),this._view=new gi(this._buffer)}get capacity(){return this._capacity}get size(){return this._size}get view(){return this._view}addInstance(){this._size+1>this._capacity&&this._grow();const e=this._findSlot();return this._view.state.set(e,mi.ALLOCATED),this._size++,this.events.emit("instances-changed"),e}removeInstance(e){const t=this._view.state;(0,Oe.vA)(e>=0&&e<this._capacity&&!!(t.get(e)&mi.ALLOCATED),"invalid instance handle"),this._getStateFlag(e,mi.ACTIVE)?this._setStateFlags(e,mi.REMOVE):this.freeInstance(e),this.events.emit("instances-changed")}freeInstance(e){const t=this._view.state;(0,Oe.vA)(e>=0&&e<this._capacity&&!!(t.get(e)&mi.ALLOCATED),"invalid instance handle"),t.set(e,0),this._size--}setLocalTransform(e,t,i=!0){this._view.localTransform.setMat(e,t),i&&this.updateModelTransform(e)}getLocalTransform(e,t){this._view.localTransform.getMat(e,t)}setGlobalTransform(e,t,i=!0){this._view.globalTransform.setMat(e,t),i&&this.updateModelTransform(e)}getGlobalTransform(e,t){this._view.globalTransform.getMat(e,t)}updateModelTransform(e){const t=this._view,i=vi,r=xi;t.localTransform.getMat(e,bi),t.globalTransform.getMat(e,wi);const s=(0,we.lw)(wi,wi,bi);(0,Ae.i)(i,s[12],s[13],s[14]),t.modelOrigin.setVec(e,i),(0,Ue.z0)(r,s),t.model.setMat(e,r);const n=(0,Se.wp)(vi,s);n.sort(),t.modelScaleFactors.set(e,0,n[1]),t.modelScaleFactors.set(e,1,n[2]),(0,Ue.B8)(r,r),(0,Ue.mg)(r,r),t.modelNormal.setMat(e,r),this._setStateFlags(e,mi.TRANSFORM_CHANGED),this.events.emit("instance-transform-changed",{index:e})}getModelTransform(e,t){const i=this._view;i.model.getMat(e,xi),i.modelOrigin.getVec(e,vi),t[0]=xi[0],t[1]=xi[1],t[2]=xi[2],t[3]=0,t[4]=xi[3],t[5]=xi[4],t[6]=xi[5],t[7]=0,t[8]=xi[6],t[9]=xi[7],t[10]=xi[8],t[11]=0,t[12]=vi[0],t[13]=vi[1],t[14]=vi[2],t[15]=1}applyShaderTransformation(e,t){null!=this.shaderTransformation&&this.shaderTransformation.applyTransform(this,e,t)}getCombinedModelTransform(e,t){return this.getModelTransform(e,t),null!=this.shaderTransformation&&this.shaderTransformation.applyTransform(this,e,t),t}getCombinedLocalTransform(e,t){this._view.localTransform.getMat(e,t),null!=this.shaderTransformation&&this.shaderTransformation.applyTransform(this,e,t)}getCombinedMaxScaleFactor(e){let t=this._view.modelScaleFactors.get(e,1);return null!=this.shaderTransformation&&(this.shaderTransformation.scaleFactor(vi,this,e),t*=Math.max(vi[0],vi[1],vi[2])),t}getCombinedMedianScaleFactor(e){let t=this._view.modelScaleFactors.get(e,0);return null!=this.shaderTransformation&&(this.shaderTransformation.scaleFactor(vi,this,e),t*=function(e,t,i){return Math.max(Math.min(e,t),Math.min(Math.max(e,t),i))}(vi[0],vi[1],vi[2])),t}getModel(e,t){this._view.model.getMat(e,t)}setFeatureAttribute(e,t){this._view.featureAttribute.setVec(e,t)}getFeatureAttribute(e,t){this._view.featureAttribute.getVec(e,t)}setColor(e,t){this._view.color.setVec(e,t)}setObjectAndLayerIdColor(e,t){this._view.objectAndLayerIdColor.setVec(e,t)}setVisible(e,t){t!==this.getVisible(e)&&(this._setStateFlag(e,mi.VISIBLE,t),this.events.emit("instance-visibility-changed",{index:e}))}getVisible(e){return this._getStateFlag(e,mi.VISIBLE)}setHighlight(e,t){const{_highlightOptionsMap:i}=this,r=i.get(e);t?t!==r&&(i.set(e,t),this._setStateFlag(e,mi.HIGHLIGHT,!0),this.events.emit("instance-highlight-changed")):r&&(i.delete(e),this._setStateFlag(e,mi.HIGHLIGHT,!1),this.events.emit("instance-highlight-changed"))}get highlightOptionsMap(){return this._highlightOptionsMap}getHighlightStateFlag(e){return this._getStateFlag(e,mi.HIGHLIGHT)}geHighlightOptionsPrev(e){const t=this._highlightOptionsMapPrev.get(e)??null;return this._highlightOptionsMapPrev.delete(e),t}getHighlightName(e){const t=this.highlightOptionsMap.get(e)??null;return t?this._highlightOptionsMapPrev.set(e,t):this._highlightOptionsMapPrev.delete(e),t}getState(e){return this._view.state.get(e)}getLodLevel(e){return this._view.lodLevel.get(e)}countFlags(e){let t=0;for(let i=0;i<this._capacity;++i)this.getState(i)&e&&++t;return t}_setStateFlags(e,t){const i=this._view.state;t=i.get(e)|t,i.set(e,t)}_clearStateFlags(e,t){const i=this._view.state;t=i.get(e)&~t,i.set(e,t)}_setStateFlag(e,t,i){i?this._setStateFlags(e,t):this._clearStateFlags(e,t)}_getStateFlag(e,t){return!!(this._view.state.get(e)&t)}_grow(){this._capacity=Math.max(_i,Math.floor(this._capacity*g.Ji)),this._buffer=this._layout.createBuffer(this._capacity).copyFrom(this._buffer),this._view=new gi(this._buffer)}_findSlot(){const e=this._view.state;let t=this._next;for(;e.get(t)&mi.ALLOCATED;)t=t+1===this._capacity?0:t+1;return this._next=t+1===this._capacity?0:t+1,t}};(0,r._)([(0,o.MZ)({constructOnly:!0})],yi.prototype,"shaderTransformation",void 0),(0,r._)([(0,o.MZ)()],yi.prototype,"_size",void 0),(0,r._)([(0,o.MZ)({readOnly:!0})],yi.prototype,"size",null),yi=(0,r._)([(0,h.$)("esri.views.3d.webgl-engine.lib.lodRendering.InstanceData")],yi);const vi=(0,j.vt)(),xi=(0,Ve.vt)(),bi=(0,Te.vt)(),wi=(0,Te.vt)();class Ti extends hi.A{constructor(e,t){super((e=>(0,Re.w)(this._instanceData.view.boundingSphere.getVec(e,this._tmpSphere))),{maximumDepth:25}),this._instanceData=e,this._boundingSphere=t,this._tmpSphere=(0,Re.c)(),this._tmpMat4=(0,Te.vt)()}addInstance(e){const t=this._instanceData.view.boundingSphere,i=this._instanceData.getCombinedModelTransform(e,this._tmpMat4);(0,Ae.t)((0,Re.a)(this._tmpSphere),this._boundingSphere.center,i),this._tmpSphere[3]=this._boundingSphere.radius*(0,Se.hG)(i),t.setVec(e,this._tmpSphere),this.add([e])}removeInstance(e){this.remove([e])}}class Ai{constructor(e,t){this._worldSpaceRadius=e,this._minScreenSpaceRadii=t}selectLevel(e,t,i){const r=i.computeScreenPixelSizeAt(e),s=this._worldSpaceRadius*t/r;let n=0;for(let e=1;e<this._minScreenSpaceRadii.length;++e)s>=this._minScreenSpaceRadii[e]&&(n=e);return n}}var Ri=i(42293);const Si=()=>c.A.getLogger("esri.views.webgl.VertexArrayObject");let Ii=class{constructor(e,t,i,r,s=null){this._context=e,this._locations=t,this._layout=i,this._buffers=r,this._indexBuffer=s,this._glName=null,this._initialized=!1}get glName(){return this._glName}get context(){return this._context}get vertexBuffers(){return this._buffers}get indexBuffer(){return this._indexBuffer}get byteSize(){return Array.from(this._buffers.values()).reduce(((e,t)=>e+t.usedMemory),null!=this._indexBuffer?this._indexBuffer.usedMemory:0)}get layout(){return this._layout}get locations(){return this._locations}get usedMemory(){return this.byteSize+(this._buffers.size+(this._indexBuffer?1:0))*S.i5}get cachedMemory(){return this.usedMemory}dispose(){this._context?(this._context.getBoundVAO()===this&&this._context.bindVAO(null),this._buffers.forEach((e=>e.dispose())),this._buffers.clear(),this._indexBuffer=(0,ie.WD)(this._indexBuffer),this.disposeVAOOnly()):(this._glName||this._buffers.size>0)&&Si().warn("Leaked WebGL VAO")}disposeVAOOnly(){this._glName&&(this._context.gl.deleteVertexArray(this._glName),this._glName=null,this._context.instanceCounter.decrement(rt.vt.VertexArrayObject,this)),this._context=null}initialize(){if(this._initialized)return;const{gl:e}=this._context,t=e.createVertexArray();e.bindVertexArray(t),this._bindLayout(),e.bindVertexArray(null),this._glName=t,this._context.instanceCounter.increment(rt.vt.VertexArrayObject,this),this._initialized=!0}bind(){this.initialize(),this._context.gl.bindVertexArray(this.glName)}_bindLayout(){const{_buffers:e,_layout:t,_indexBuffer:i}=this;e||Si().error("Vertex buffer dictionary is empty!");const r=this._context.gl;this._buffers.forEach(((e,i)=>{const r=t.get(i);r?(0,Ri.yu)(this._context,this._locations,e,r):Si().error("Vertex element descriptor is empty!")})),null!=i&&r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,i.glName)}unbind(){this.initialize(),this._context.gl.bindVertexArray(null)}};class Oi extends Ii{}class Mi{constructor(e,t){const i=e.renderContext.rctx,r=t.geometry,s=t.geometry.getRenderGeometry(),n=s.material;this._materials=e.materials,n.setParameters({instancedDoublePrecision:!0}),this.geometry=r,this.material=n,this.glMaterials=new xe(n,this._materials),this.vertexBufferLayout=s.vertexBufferLayout,this.vbo=di.g.createVertex(i,rt._U.STATIC_DRAW,s.buffer),this.vao=new Oi(i,li.D,new Map([["geometry",(0,fe.U)(s.vertexBufferLayout)]]),new Map([["geometry",this.vbo]])),this.vertexCount=s.elementCount}destroy(){this.glMaterials.dispose(),this.vbo.dispose(),this.vao.dispose()}get boundingInfo(){return this.geometry.boundingInfo}get triangleCount(){return this.vertexCount/3}get usedMemory(){return 128+this.vbo.usedMemory+this.vao.usedMemory}intersect(e,t,i,r,s,n,a,o){return this.geometry.intersect(e,t,i,r,s,n,a,o)}}class Ei{static async create(e,t,i){const r=await Promise.allSettled(t.components.map((t=>e.controller.schedule((()=>new Mi(e,t)),i)))),s=r.map((e=>"fulfilled"===e.status?e.value:null)).filter(g.Ru);if((0,n.G4)(i)||s.length!==r.length){s.forEach((e=>e.destroy())),(0,n.Te)(i);for(const e of r)if("rejected"===e.status)throw e.reason}return new Ei(t.minScreenSpaceRadius,s)}constructor(e,t){this.minScreenSpaceRadius=e,this.components=t}destroy(){this.components.forEach((e=>e.destroy()))}intersect(e,t,i,r,s,n,a){this.components.forEach((o=>o.intersect(e,t,i,r,s,n,this.boundingSphere,a)))}get boundingBox(){if(null==this._boundingBox){const e=(0,H.Ie)();this.components.forEach((t=>{null!=t.boundingInfo&&((0,H.iT)(e,t.boundingInfo.bbMin),(0,H.iT)(e,t.boundingInfo.bbMax))})),this._boundingBox=e}return this._boundingBox}get boundingSphere(){if(null==this._boundingSphere){const e=this.boundingBox,t=(0,j.vt)();(0,H.gX)(e,t),this._boundingSphere={center:t,radius:.5*(0,H._F)(e)}}return this._boundingSphere}get triangleCount(){return this.components.reduce(((e,t)=>e+t.triangleCount),0)}}var Ci=i(97225),Fi=i(63076);let Di=class extends ye{constructor(e,t){super(e),this.type=be.dz.LOD,this.isGround=!1,this._levels=[],this._defaultRenderInstanceData=new Array,this._highlightRenderInstanceDataMap=new Map,this._instanceIndex=0,this._cycleStartIndex=0,this._slicePlane=!1,this._camera=new ii,this._updateCyclesWithStaticCamera=-1,this._needFullCycle=!1,this.produces=new Map([[Ne.N.OPAQUE_MATERIAL,e=>this._produces(e)],[Ne.N.TRANSPARENT_MATERIAL,e=>!!this._hasTransparentLevels()&&this._produces(e)]]),this._instanceData=new yi({shaderTransformation:e.shaderTransformation},e.optionalFields),this.addHandles(t.registerTask(Fi.W6.LOD_RENDERER,this))}initialize(){this._instanceBufferLayout=function(e){let t=(0,Ge.BP)().vec3f(Me.r.INSTANCEMODELORIGINHI).vec3f(Me.r.INSTANCEMODELORIGINLO).mat3f(Me.r.INSTANCEMODEL).mat3f(Me.r.INSTANCEMODELNORMAL);return null!=e&&e.includes("featureAttribute")&&(t=t.vec4f(Me.r.INSTANCEFEATUREATTRIBUTE)),null!=e&&e.includes("color")&&(t=t.vec4u8(Me.r.INSTANCECOLOR)),null!=e&&e.includes("objectAndLayerIdColor")&&(t=t.vec4u8(Me.r.INSTANCEOBJECTANDLAYERIDCOLOR)),t}(this.optionalFields),this._glInstanceBufferLayout=(0,fe.U)(this._instanceBufferLayout,1),this.addHandles([this._instanceData.events.on("instances-changed",(()=>this._requestUpdateCycle())),this._instanceData.events.on("instance-transform-changed",(({index:e})=>{this._requestUpdateCycle(),this.metadata.notifyGraphicGeometryChanged(e)})),this._instanceData.events.on("instance-visibility-changed",(({index:e})=>{this._requestUpdateCycle(!0),this.metadata.notifyGraphicVisibilityChanged(e)})),this._instanceData.events.on("instance-highlight-changed",(()=>this._requestUpdateCycle(!0)))])}get _allRenderInstanceData(){const e=[this._defaultRenderInstanceData];for(const t of this._highlightRenderInstanceDataMap)e.push(t[1]);return e}hasHighlightOptions(e){return this._highlightRenderInstanceDataMap.has(e)}get _enableLevelSelection(){return this.symbol.levels.length>1}get levels(){return this._levels}get baseBoundingBox(){return this._levels[this._levels.length-1].boundingBox}get baseBoundingSphere(){return this._levels[this._levels.length-1].boundingSphere}get baseMaterial(){return this._levels[this._levels.length-1].components[0].material}get slicePlaneEnabled(){return this._slicePlane}set slicePlaneEnabled(e){this._slicePlane=e}get layerUid(){return this.metadata.layerUid}get instanceData(){return this._instanceData}get hasEmissions(){return this._levels.some((e=>e.components.some((e=>e.material.hasEmissions))))}get usedMemory(){return this._allRenderInstanceData.reduce(((e,t)=>t.reduce(((e,t)=>e+t.usedMemory),e)),this._levels.reduce(((e,t)=>e+t.components.reduce(((e,t)=>e+t.usedMemory),0)),0))}get renderStats(){const e=this._instanceData.size,t=[];return this._levels.forEach(((e,i)=>{const r=this._allRenderInstanceData[0][i].size+this._allRenderInstanceData[1][i].size,s=e.triangleCount;t.push({renderedInstances:r,renderedTriangles:r*s,trianglesPerInstance:s})})),{totalInstances:e,renderedInstances:t.reduce(((e,t)=>e+t.renderedInstances),0),renderedTriangles:t.reduce(((e,t)=>e+t.renderedTriangles),0),levels:t}}_createRenderInstanceDataArray(e=[]){const{rctx:t}=this._context.renderContext;return this.symbol.levels.map((i=>{e.push(new pi(t,this._instanceBufferLayout))})),e}async initializeRenderContext(e,t){this._context=e,this._createRenderInstanceDataArray(this._defaultRenderInstanceData);const i=await Promise.allSettled(this.symbol.levels.map((i=>Ei.create(e,i,t)))),r=i.map((e=>"fulfilled"===e.status?e.value:null)).filter(g.Ru);if((0,n.G4)(t)||r.length!==i.length){r.forEach((e=>e.destroy())),(0,n.Te)(t);for(const e of i)if("rejected"===e.status)throw e.reason}this._levels=r,this._levelSelector=(e=>{const t=e.baseBoundingSphere.radius,i=e.levels.map((e=>e.minScreenSpaceRadius));return new Ai(t,i)})(this)}uninitializeRenderContext(){this._invalidateOctree(),this._levels.forEach((e=>e.destroy())),this._defaultRenderInstanceData.forEach((e=>e.destroy())),this._highlightRenderInstanceDataMap.forEach((e=>e.forEach((e=>e.destroy()))))}_hasTransparentLevels(){return this._levels.some((e=>e.components.some((e=>{const t=e.material.produces.get(Ne.N.TRANSPARENT_MATERIAL);return t?.(pe.V.Color)}))))}hasHighlights(){return(0,Xt.Bs)(this._highlightRenderInstanceDataMap,(e=>e.some((e=>e.size>0))))}_produces(e){return e!==pe.V.Highlight&&e!==pe.V.ShadowHighlight||this.hasHighlights()}prepareRender(e){if(!oe.b.LOD_INSTANCE_RENDERER_DISABLE_UPDATES){if(this._enableLevelSelection){const t=e.bind.contentCamera.equals(this._camera);this._camera.copyFrom(e.bind.contentCamera),t||this._requestUpdateCycle()}this._needFullCycle&&(this.runTask(Fi.Bb),this._needFullCycle=!1)}}acquireTechniques(e){if(!this.baseMaterial.visible||!this.baseMaterial.isVisibleForOutput(e.output))return null;const t=this._getInstanceDatas(e);if(!t)return null;const i=new Array,r=this.levels;return t.forEach((t=>r.forEach((({components:r},s)=>r.forEach((r=>i.push(this._beginComponent(e,t[s],r)))))))),i}render(e,t){const i=this._getInstanceDatas(e);if(!i||null==t)return;let r=0;e.rctx.bindVAO();const s=this.levels;i.forEach((i=>s.forEach((({components:s},n)=>s.forEach((s=>this._renderComponent(e,t[r++],i[n],s,n)))))))}_getInstanceDatas(e){const{output:t,bind:i}=e,r=t===pe.V.Highlight,s=!r&&t!==pe.V.ShadowHighlight,n=t!==pe.V.ShadowExcludeHighlight;if(s)return n?this._allRenderInstanceData:[this._defaultRenderInstanceData];if(n){if(r){const e=i.highlight?.name;if(!e)return null;const t=this._highlightRenderInstanceDataMap.get(e);return t?[t]:null}return Array.from(this._highlightRenderInstanceDataMap.values())}return null}intersect(e,t,i,r){if(!this.baseMaterial.visible||null==this._octree)return;const s=(0,j.vt)();(0,Ae.d)(s,r,i);const n=s=>{this._instanceData.getCombinedModelTransform(s,zi),e.transform.set(zi),(0,Ae.t)(Bi,i,e.transform.inverse),(0,Ae.t)(Ui,r,e.transform.inverse);const n=this._instanceData.getState(s),a=this._instanceData.getLodLevel(s),o=this._levels.length;(0,Oe.vA)(!!(n&mi.ACTIVE),"invalid instance state"),(0,Oe.vA)(a>=0&&a<o,"invaid lod level"),this._levels[a].intersect(e,t,Bi,Ui,s,this.metadata,o)};this.baseMaterial.parameters.verticalOffset?this._octree.forEach(n):this._octree.forEachAlongRay(i,s,n)}notifyShaderTransformationChanged(){this._invalidateOctree(),this._requestUpdateCycle()}get _octree(){if(null==this._octreeCached){const e=this._instanceData,t=e.view?.state;if(!t)return null;this._octreeCached=new Ti(e,this.baseBoundingSphere);for(let i=0;i<e.capacity;++i)t.get(i)&mi.ACTIVE&&this._octreeCached.addInstance(i)}return this._octreeCached}_invalidateOctree(){this._octreeCached=(0,ie.pR)(this._octreeCached)}queryDepthRange(e){if(null==this._octree)return new ci;const t=e.viewForward,i=this._octree.findClosest(t,hi.A.DepthOrder.FRONT_TO_BACK,e.frustum),r=this._octree.findClosest(t,hi.A.DepthOrder.BACK_TO_FRONT,e.frustum);if(null==i||null==r)return new ci;const s=e.eye,n=this._instanceData.view;n.boundingSphere.getVec(i,Ni),(0,Ae.d)(Ni,Ni,s);const a=(0,Ae.f)(Ni,t)-Ni[3];n.boundingSphere.getVec(r,Ni),(0,Ae.d)(Ni,Ni,s);const o=(0,Ae.f)(Ni,t)+Ni[3];return new ci(a,o)}_requestUpdateCycle(e=!1){this._updateCyclesWithStaticCamera=-1,this._cycleStartIndex=this._instanceIndex,e&&(this._needFullCycle=!0,this._context.requestRender())}_startUpdateCycle(){this._updateCyclesWithStaticCamera++,this._allRenderInstanceData.forEach((e=>e.forEach((e=>e.startUpdateCycle()))))}get running(){return this._instanceData.size>0&&this._updateCyclesWithStaticCamera<1}runTask(e){const{_enableLevelSelection:t,_camera:i,_levelSelector:r}=this;this._allRenderInstanceData.forEach((e=>e.forEach((e=>e.beginUpdate()))));const s=this._instanceData,n=s.view;let a=s.size;const o=s.capacity;let l=this._instanceIndex;const c=Math.ceil(o/500);for(let h=0;h<a&&!e.done;++h){l===this._cycleStartIndex&&this._startUpdateCycle();const h=n.state.get(l);let d=0;if(!(h&mi.ALLOCATED)){l=l+1===o?0:l+1,a++;continue}const u=n.lodLevel.get(l);if(h&mi.DEFAULT_ACTIVE&&this._defaultRenderInstanceData[u].freeTail(),h&mi.HIGHLIGHT_ACTIVE){const e=s.geHighlightOptionsPrev(l);if(e){const t=this._highlightRenderInstanceDataMap.get(e);if(!t)throw new U.A("Internal error in lodRenderer");t[u].freeTail()}}if(h&mi.REMOVE)s.freeInstance(l);else if(h&mi.VISIBLE){let e=0;if(t&&(n.modelOrigin.getVec(l,Li),e=r.selectLevel(Li,s.getCombinedMedianScaleFactor(l),i)),d=h&~(mi.ACTIVE|mi.TRANSFORM_CHANGED),e>=0)if(h&mi.HIGHLIGHT){const t=s.getHighlightName(l);if(t){const i=()=>{const e=this._createRenderInstanceDataArray();return e.forEach((e=>e.beginUpdate())),e},r=(0,Xt.tE)(this._highlightRenderInstanceDataMap,t,i);if(e>=r.length)throw new U.A(`LodRenderer internal error - missing lodLevel ${e}`);Pi(r[e],n,l)}d|=mi.HIGHLIGHT_ACTIVE}else Pi(this._defaultRenderInstanceData[e],n,l),d|=mi.DEFAULT_ACTIVE;n.state.set(l,d),n.lodLevel.set(l,e)}else d=h&~(mi.ACTIVE|mi.TRANSFORM_CHANGED),n.state.set(l,d);if(null!=this._octreeCached){const e=!!(h&mi.ACTIVE),t=!!(d&mi.ACTIVE);!e&&t?this._octreeCached.addInstance(l):e&&!t?this._octreeCached.removeInstance(l):e&&t&&h&mi.TRANSFORM_CHANGED&&(this._octreeCached.removeInstance(l),this._octreeCached.addInstance(l))}l=l+1===o?0:l+1,l%c==0&&e.madeProgress()}this._instanceIndex=l,this._allRenderInstanceData.forEach((e=>e.forEach((e=>e.endUpdate())))),this._context.requestRender()}_beginComponent(e,t,i){if(0===t.size)return null;const r=i.glMaterials.load(e.rctx,e.bind.slot,e.output);return r?.beginSlot(e.bind)}_renderComponent(e,t,i,r,s){if(!t)return;const{bind:n,rctx:a}=e;a.runAppleAmdDriverHelper();const o=a.bindTechnique(t,n,r.material.parameters,ji);a.bindVAO(r.vao),t.ensureAttributeLocations(r.vao),oe.b.LOD_INSTANCE_RENDERER_COLORIZE_BY_LEVEL&&e.output===pe.V.Color&&(o.setUniform4fv("externalColor",Vi[Math.min(s,Vi.length-1)]),o.setUniform1i("colorMixMode",Je.Um.replace));const l=i.capacity,c=i.headIndex,h=i.tailIndex,d=i.firstIndex,u=this._glInstanceBufferLayout,f=(e,s)=>{(0,Ri.yu)(a,li.D,i.buffer,u,e),a.drawArraysInstanced(t.primitiveType,0,r.vertexCount,s-e),(0,Ri.Hi)(a,li.D,i.buffer,u)};r.material.parameters.transparent&&null!=d?c>h?((0,Oe.vA)(d>=h&&d<=c,"invalid firstIndex"),f(d,c),f(h,d)):c<h&&(d<=c?((0,Oe.vA)(d>=0&&d<=c,"invalid firstIndex"),f(d,c),f(h,l),f(0,d)):((0,Oe.vA)(d>=h&&d<=l,"invalid firstIndex"),f(d,l),f(0,c),f(h,d))):c>h?f(h,c):c<h&&(f(0,c),f(h,l)),a.bindVAO(null)}};function Pi(e,t,i){const r=e.allocateHead();!function(e,t,i,r){(function(e,t,i,r,s){Ce[0]=e.get(t,0),Ce[1]=e.get(t,1),Ce[2]=e.get(t,2),(0,Ee.jS)(Ce,Fe,3),i.set(s,0,Fe[0]),r.set(s,0,Fe[1]),i.set(s,1,Fe[2]),r.set(s,1,Fe[3]),i.set(s,2,Fe[4]),r.set(s,2,Fe[5])})(e.modelOrigin,t,i.modelOriginHi,i.modelOriginLo,r),i.model.copyFrom(r,e.model,t),i.modelNormal.copyFrom(r,e.modelNormal,t),e.color&&i.color&&i.color.copyFrom(r,e.color,t),e.objectAndLayerIdColor&&i.objectAndLayerIdColor&&i.objectAndLayerIdColor.copyFrom(r,e.objectAndLayerIdColor,t),e.featureAttribute&&i.featureAttribute&&i.featureAttribute.copyFrom(r,e.featureAttribute,t)}(t,i,e.view,r)}(0,r._)([(0,o.MZ)({constructOnly:!0})],Di.prototype,"symbol",void 0),(0,r._)([(0,o.MZ)({constructOnly:!0})],Di.prototype,"optionalFields",void 0),(0,r._)([(0,o.MZ)({constructOnly:!0})],Di.prototype,"metadata",void 0),(0,r._)([(0,o.MZ)({constructOnly:!0})],Di.prototype,"shaderTransformation",void 0),(0,r._)([(0,o.MZ)()],Di.prototype,"_instanceData",void 0),(0,r._)([(0,o.MZ)()],Di.prototype,"_cycleStartIndex",void 0),(0,r._)([(0,o.MZ)({readOnly:!0})],Di.prototype,"_enableLevelSelection",null),(0,r._)([(0,o.MZ)()],Di.prototype,"_updateCyclesWithStaticCamera",void 0),(0,r._)([(0,o.MZ)({readOnly:!0})],Di.prototype,"running",null),Di=(0,r._)([(0,h.$)("esri.views.3d.webgl-engine.lib.lodRendering.LodRenderer")],Di);const Li=(0,j.vt)(),Ni=(0,re.vt)(),zi=(0,Te.vt)(),Bi=(0,j.vt)(),Ui=(0,j.vt)(),Vi=[(0,re.fA)(1,0,1,1),(0,re.fA)(0,0,1,1),(0,re.fA)(0,1,0,1),(0,re.fA)(1,1,0,1),(0,re.fA)(1,0,0,1)],ji=new Ci.V;i(65215);var Hi=i(86305);i(16396);class Gi{get ray(){return this._ray}get distanceInRenderSpace(){return null!=this.dist?((0,Ae.h)(ki,this.ray.direction,this.dist),(0,Ae.l)(ki)):null}withinDistance(e){return!!(0,Hi.i3)(this)&&this.distanceInRenderSpace<=e}getIntersectionPoint(e){return!!(0,Hi.i3)(this)&&((0,Ae.h)(ki,this.ray.direction,this.dist),(0,Ae.g)(e,this.ray.origin,ki),!0)}getTransformedNormal(e){return(0,Ae.c)(qi,this.normal),qi[3]=0,(0,Jt.t)(qi,qi,this.transformation),(0,Ae.c)(e,qi),(0,Ae.n)(e,e)}constructor(e){this.intersector=be.dz.OBJECT,this.normal=(0,j.vt)(),this.transformation=(0,Te.vt)(),this._ray=(0,Kt.vt)(),this.init(e)}init(e){this.dist=null,this.target=null,this.drapedLayerOrder=null,this.drapedLayerGraphicOrder=null,this.intersector=be.dz.OBJECT,(0,Kt.C)(e,this._ray)}set(e,t,i,r,s,n,a){this.intersector=e,this.dist=i,(0,Ae.c)(this.normal,r??j.Cb),(0,we.C)(this.transformation,s??Te.zK),this.target=t,this.drapedLayerOrder=n,this.drapedLayerGraphicOrder=a}copy(e){(0,Kt.C)(e.ray,this._ray),this.intersector=e.intersector,this.dist=e.dist,this.target=e.target,this.drapedLayerOrder=e.drapedLayerOrder,this.drapedLayerGraphicOrder=e.drapedLayerGraphicOrder,(0,Ae.c)(this.normal,e.normal),(0,we.C)(this.transformation,e.transformation)}}const ki=(0,j.vt)(),qi=(0,re.vt)();var Zi=i(87582);class Wi{constructor(e,t,i,r){this.material=e,this.bufferWriter=e.createBufferWriter(),this.vertexBufferLayout=this.bufferWriter.vertexBufferLayout,this.buffer=t,this.elementCount=i,this.boundingInfo=r}get numTriangles(){return this.elementCount/3}get numVertices(){return this.elementCount}computeUsedMemory(){return this.buffer.byteLength+S.i5}getRenderGeometry(){return this}intersect(e,t,i,r,s,n,a,o){const l=this.bufferWriter,c=this.buffer;l.intersect(c,this.material.parameters,null,e,i,r,((i,r,l,c,h)=>function(e,t,i,r,s,n,a,o,l,c){if(e<0)return;if(n&&!n(s.rayBegin,s.rayEnd,e))return;const h=new Zi.h(a.layerUid,a.graphicUid(l),i,o,c);if((null==s.results.min.drapedLayerOrder||r>=s.results.min.drapedLayerOrder)&&(null==s.results.min.dist||e<s.results.min.dist)&&s.results.min.set(be.dz.LOD,h,e,t,s.transform.transform,r),s.options.store!==be.oH.MIN&&(null==s.results.max.drapedLayerOrder||r>=s.results.max.drapedLayerOrder)&&(null==s.results.max.dist||e>s.results.max.dist)&&s.results.max.set(be.dz.LOD,h,e,t,s.transform.transform,r),s.options.store===be.oH.ALL){const i=function(e){return new Gi(e)}(s.results.min.ray);i.set(be.dz.LOD,h,e,t,s.transform.transform,r),s.results.all.push(i)}}(i,r,l,h,e,t,n,a,s,o)))}}class Yi{constructor(e,t=null){this.geometry=e,this.textures=t}get material(){return this.geometry.material}get numTriangles(){return this.geometry.numTriangles}}class Xi{constructor(e,t,i){this.components=e,this.minScreenSpaceRadius=t,this.pivotOffset=i;const r=(0,g.Am)(this.components.map((e=>e.geometry)));this.numVertices=r.reduce(((e,t)=>e+t.numVertices),0)}}class $i{constructor(e){this.levels=e,this.levels.sort(((e,t)=>e.minScreenSpaceRadius===t.minScreenSpaceRadius?e.numVertices-t.numVertices:e.minScreenSpaceRadius-t.minScreenSpaceRadius))}getMaterials(){const e=[];return this.levels.forEach((t=>t.components.forEach((t=>e.push(t.geometry.material))))),(0,g.Am)(e)}getTextures(){const e=new Array;return this.levels.forEach((t=>t.components.forEach((t=>{null!=t.textures&&e.push(...t.textures)})))),(0,g.Am)(e)}getGeometries(){const e=new Array;return this.levels.forEach((t=>t.components.forEach((t=>{e.push(t.geometry)})))),(0,g.Am)(e)}getEngineGeometries(){return this.getGeometries().map((e=>e.engineGeometry)).filter((e=>null!=e))}computeUsedMemory(){const e=this.getGeometries(),t=this.getTextures(),i=e.reduce(((e,t)=>e+t.computeUsedMemory()),0);return t.reduce(((e,t)=>e+t.memoryEstimate),0)+i}}let Ji=class{constructor(e){this._optionalFields=new Array,this._featureIdToInstanceIndex=new Map,this._instanceIndexToFeatureId=new Map,this._disposeResourceHandles=new Array,this._lodRendererResources=null,this.layerUid=e.layerUid,this.view=e.view,this.sharedResources=this.view.sharedSymbolResources,this.scheduler=this.view.resourceController.scheduler}get numFeatures(){return this._featureIdToInstanceIndex.size}get usedMemory(){const e=this._lodRendererResources?.lodRenderer,t=e?.symbol;return(t?.computeUsedMemory()??0)+16*this._featureIdToInstanceIndex.size}destroy(){this._disposeResourceHandles.forEach((e=>e()))}async doLoad(e,t,i){(0,l.A)("enable-feature:objectAndLayerId-rendering")&&this._optionalFields.push(Me.r.OBJECTANDLAYERIDCOLOR);const r=function(e,t){const i=t.levels.map((t=>{const i=t.components.map((t=>{const i=e(t.materialId);if(!function(e){return null!=e&&"materialType"in e&&"default"===e.materialType}(i))throw new Error("LodRenderer only supports DefaultMaterial");const r=new Wi(i,t.renderGeometryBuffer.data,t.renderGeometryBuffer.elementCount,t.boundingInfo);return new Yi(r)}));return new Xi(i,t.minScreenSpaceRadius)}));return new $i(i)}((e=>t(e)),e),s=this.view._stage,a=r.getMaterials();s.addMany(a),this._addDisposeResource((()=>s.removeMany(a)));const o=r.getTextures();s.addMany(o),this._addDisposeResource((()=>{o.forEach((e=>e.unload())),s.removeMany(o)})),await Promise.all(o.map((e=>this.view._stage.schedule((()=>e.load(s.renderView.renderingContext)),i)))),(0,n.Te)(i);const c=await this._createLodRenderer(r,i);this._lodRendererResources={lodRenderer:c,materials:a,textures:o}}addInstances(e){const t=this._lodRendererResources;if(null==t)return;const{featureIds:i,localTransforms:r,globalTransforms:s}=e,n=t.lodRenderer;if(null==n)return;const a=n.instanceData,o=i.length;for(let e=0;e<o;++e){const t=i[e],n=a.addInstance(),o=a.view,l=16*e;o.localTransform.copyFromTypedBuffer(n,r,l),o.globalTransform.copyFromTypedBuffer(n,s,l),a.updateModelTransform(n),a.setVisible(n,!0),this._featureIdToInstanceIndex.set(t,n),this._instanceIndexToFeatureId.set(n,t)}}removeInstances(e){const t=this._lodRendererResources;if(null==t)return;const i=t.lodRenderer.instanceData,r=this._featureIdToInstanceIndex,s=e.length;for(let t=0;t<s;++t){const s=e[t],n=r.get(s);null!=n&&(i.removeInstance(n),r.delete(s),this._instanceIndexToFeatureId.delete(n))}}_addDisposeResource(e){this._disposeResourceHandles.push(e)}async _createLodRenderer(e,t){const i=this.view._stage,r={layerUid:this.layerUid,graphicUid:e=>this._instanceIndexToFeatureId.get(e)??-1,notifyGraphicGeometryChanged:e=>1,notifyGraphicVisibilityChanged:e=>1},s=new Di({symbol:e,optionalFields:this._optionalFields,metadata:r,shaderTransformation:null},this.scheduler);return s.slicePlaneEnabled=!1,this._addDisposeResource((()=>{i.removeRenderPlugin(s),s.destroy()})),await i.addRenderPlugin(s,t),s}};Ji=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.rendering.LodRenderer")],Ji);var Qi=i(40804),Ki=i(48833);const er=(0,re.CN)(.25,.25,.75,.75);function tr(e,t,i){return i&&(t/=Math.SQRT2),nr(e,((r,s)=>{let n=r-.5*e+.25,a=.5*e-s-.75;if(i){const e=(n+a)/Math.SQRT2;a=(a-n)/Math.SQRT2,n=e}return Math.max(Math.abs(n),Math.abs(a))-.5*t}))}function ir(e,t,i,r=0){t-=r,i&&(t*=Math.SQRT2);const s=.5*t;return nr(e,((t,n)=>{let a,o=t-.5*e,l=.5*e-n-1;if(i){const e=(o+l)/Math.SQRT2;l=(l-o)/Math.SQRT2,o=e}return o=Math.abs(o),l=Math.abs(l),a=o>l?o>s?Math.sqrt((o-s)*(o-s)+l*l):l:l>s?Math.sqrt(o*o+(l-s)*(l-s)):o,a-=r/2,a}))}function rr(e,t,i){return(r,s)=>{const n=r-e,a=s-t;return Math.sqrt(n*n+a*a)-i}}function sr(e,t,i){const r=Math.sqrt(t*t+i*i);return(s,n)=>{const a=Math.abs(s-e)-i,o=n-e+t/2+.75,l=(t*a+i*o)/r,c=-o;return Math.max(l,c)}}function nr(e,t){const i=new Uint8Array(4*e*e);for(let r=0;r<e;r++)for(let s=0;s<e;s++){const n=s+e*r;let a=t(s,r);a=a/e+.5,(0,Qi.U)(a,i,4*n)}return i}var ar=i(11787),or=i(74810);let lr=class extends m.A{constructor(e){super(),this.view=null,this.layerUid=null,this._renderGeometries=new Map,this._materials=new Map,this._directRenderers=new Map,this._lodRenderers=new Map,this.totalFeatures=0,this.view=e.view,this.layerUid=e.layerUid}initialize(){}destroy(){this.removeAllHandles(),this._lodRenderers.forEach((e=>e.destroy()))}async executeRenderCommands(e){for(const t of e)switch(t.id){case"create-material":await this._createMaterial(t);break;case"create-direct-renderer":await this._createDirectRenderer(t);break;case"add-direct-renderer-geometry":await this._addDirectRendererGeometry(t),this._updateFeatureCount();break;case"remove-direct-renderer-geometry":await this._removeDirectRendererGeometry(t),this._updateFeatureCount();break;case"create-lod-renderer":await this._createLodRenderer(t);break;case"add-lod-instances":await this._addLodInstances(t),this._updateFeatureCount();break;case"remove-lod-instances":await this._removeLodInstances(t),this._updateFeatureCount()}}_updateFeatureCount(){let e=0;for(const t of this._directRenderers.values())e+=t.numFeatures;for(const t of this._lodRenderers.values())e+=t.numFeatures;this._set("totalFeatures",e)}get usedMemory(){let e=0;for(const t of this._directRenderers.values())e+=t.usedMemory;for(const t of this._lodRenderers.values())e+=t.usedMemory;return e}async _createMaterial(e){const{view:t}=this,{sharedSymbolResources:i}=t;if(null==i)throw new Error("No shared symbol resources found!");const{textures:r}=i,s=t.state.viewingMode===K.RT.Global;let n=null;switch(e.type){case"default":n=function(e,t,i){const r={usePBR:t.physicalBasedRenderingEnabled,isSchematic:!0,mrrFactors:or.Bt,ambient:j.Un,diffuse:j.Un,hasSlicePlane:t.slicePlaneEnabled,castShadows:t.castShadows,offsetTransparentBackfaces:!t.isPrimitive};return function(e){const t=e.opacity??1,i=t<1;e.transparent=i,e.opacity=t,e.cullFace=i?ve.s2.None:ve.s2.Back}(r),t.screenSizePerspectiveEnabled&&(r.screenSizePerspective=e.screenSizePerspectiveSettings),r.externalColor=re.Un,r.isInstanced=!0,new ar.$U(r,{spherical:i,doublePrecisionRequiresObfuscation:!0})}(i,{physicalBasedRenderingEnabled:!0,slicePlaneEnabled:!1,castShadows:!0,isPrimitive:!0,screenSizePerspectiveEnabled:!0,doublePrecisionRequiresObfuscation:t._stage.renderView.renderingContext.driverTest.doublePrecisionRequiresObfuscation.result},s);break;case"hud":{const[e,t]=cr(r,s);this.addHandles([(0,te.hA)((()=>(0,ie.Gz)(t)))]),n=e}break;default:throw new Error(`unable to create unknown material type ${e.type}`)}this._materials.set(e.materialId,n)}_getMaterial(e){return this._materials.get(e)}async _createDirectRenderer(e){const t=e.materialId,i=this._getMaterial(t);if(null==i)throw new Error(`material not found ${t}`);const{view:r}=this,s=new kt({material:i,layerUid:this.layerUid});this._directRenderers.set(t,s),r._stage.addRenderPlugin(s),r._stage.renderView.renderer.updateHasFlags()}async _addDirectRendererGeometry(e){const t=e.renderGeometryId,i=e.objectIds,r=e.materialId;await this._removeDirectRendererGeometry({renderGeometryId:t});const s=this._directRenderers.get(r);if(null==s)return void console.error("no renderer assigned to provided material");const n=s.addRenderGeometry(t,i,e.renderGeometryBuffer,e.localOrigin);this._renderGeometries.set(t,{renderGeometry:n,materialId:r}),this.view._stage.renderView.requestRender()}async _removeDirectRendererGeometry(e){const t=e.renderGeometryId,i=this._renderGeometries.get(t);if(null==i)return;const r=i.materialId,s=this._directRenderers.get(r);null!=s?s.removeRenderGeometry(e.renderGeometryId):console.error("no renderer assigned to provided material")}async _createLodRenderer(e){const t=new Ji({view:this.view,layerUid:this.layerUid}),i=new AbortController;await t.doLoad(e.lodRenderGeometry,(e=>this._getMaterial(e)),i.signal),this._lodRenderers.set(e.lodRendererId,t)}async _addLodInstances(e){const t=this._lodRenderers.get(e.lodRendererId);if(null==t)throw new Error("no lod renderer assigned to provided lod renderer Id");t.addInstances(e.data)}async _removeLodInstances(e){const t=this._lodRenderers.get(e.lodRendererId);if(null==t)throw new Error("no lod renderer assigned to provided lod renderer Id");t.removeInstances(e.featureIds)}};function cr(e,t){const i={anchorPosition:de.center,occlusionTest:!0,hasSlicePlane:!1,color:[1,0,0,1],outlineColor:[0,0,0,1],outlineSize:1,distanceFieldBoundingBox:er};if(null!=e){const t=e.fromData("circle-icon",(()=>function(e,t=128,i=.5*t,r=0){const s=function(e,t=128,i=.5*t,r=0){switch(e){case"circle":default:return function(e,t){const i=e/2-.5;return nr(e,rr(i,i,t/2))}(t,i);case"square":return function(e,t){return tr(e,t,!1)}(t,i);case"cross":return function(e,t,i=0){return ir(e,t,!1,i)}(t,i,r);case"x":return function(e,t,i=0){return ir(e,t,!0,i)}(t,i,r);case"kite":return function(e,t){return tr(e,t,!0)}(t,i);case"triangle":return function(e,t){return nr(e,sr(e/2,t,t/2))}(t,i);case"arrow":return function(e,t){const i=t,r=t/2,s=e/2,n=.8*i,a=rr(s,(e-t)/2-n,Math.sqrt(n*n+r*r)),o=sr(s,i,r);return nr(e,((e,t)=>Math.max(o(e,t),-a(e,t))))}(t,i)}}(e,t,i,r);return new Ki.g(s,{mipmap:!1,wrap:{s:rt.pF.CLAMP_TO_EDGE,t:rt.pF.CLAMP_TO_EDGE},width:t,height:t,components:4,noUnpackFlip:!0,reloadable:!0})}("circle")));i.textureId=t.texture.id,i.textureIsSignedDistanceField=!0,i.sampleSignedDistanceFieldTexelCenter=!1}return[new ft(i,t),null]}(0,r._)([(0,o.MZ)({readOnly:!0})],lr.prototype,"totalFeatures",void 0),lr=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.rendering.FeaturePipelineRenderManager")],lr);class hr{constructor(e){this._bufferWriter=null,this._bufferWriter=e.createBufferWriter()}createBuffer(e,t){const i=this._bufferWriter;let r=null;if(e.transformation&&t)(0,we.C)(dr,e.transformation),dr[12]-=t[0],dr[13]-=t[1],dr[14]-=t[2],r=dr;else{if(t)throw new Error("not implemented");e.transformation&&(r=e.transformation)}let s=null;r&&((0,we.B8)(ur,dr),(0,we.mg)(ur,ur),s=ur);const n=e.attributes,a=i.elementCount(n),o=i.vertexBufferLayout.stride/4;a>Math.floor(fr/o)&&console.warn("geometry with very large number of elements encountered");const l=i.vertexBufferLayout.createBuffer(a);return i.write(r,s,n,e.objectAndLayerIdColor,l,0),{data:l.buffer,elementCount:a}}}const dr=(0,Te.vt)(),ur=(0,Te.vt)(),fr=4194304;var pr=i(29920);class _r{constructor(e){this._context=e,this._commands=[],this._transferables=new Set}createMaterial(e){const t=this._context,i=t.generateId("material");switch(e){case"default":{const e=new ar.$U({},{spherical:this._context.globalViewingMode,doublePrecisionRequiresObfuscation:!0}),r=new hr(e);t.registerRenderGeometryBufferWriter(i,r)}break;case"hud":{const e=cr(null,this._context.globalViewingMode)[0],r=new hr(e);t.registerRenderGeometryBufferWriter(i,r)}}return this._commands.push({id:"create-material",type:e,materialId:i}),i}createDirectRenderer(e){const t=this._context.generateId("material-renderer");return this._commands.push({id:"create-direct-renderer",materialRendererId:t,materialId:e}),t}addDirectRendererGeometry(e,t,i){const r=t.materialId,s=this._context.getRenderGeometryBufferWriter(r);if(null==s)throw new Error(`no bufferwriter found for material ${r}`);const n=s.createBuffer(t,i);this._transferables.add(n.data),null!=t.objectIds&&this._transferables.add(t.objectIds.buffer),this._commands.push({id:"add-direct-renderer-geometry",renderGeometryId:e,materialId:r,localOrigin:i,renderGeometryBuffer:n,objectIds:t.objectIds})}removeDirectRendererGeometry(e){this._commands.push({id:"remove-direct-renderer-geometry",renderGeometryId:e})}createLodRenderer(e){const t=this._context.generateId("lod-renderer"),i={levels:e.levels.map((e=>({components:e.components.map((e=>{const t=e.attributes.get(Me.r.POSITION);if(!t||0===t.indices.length)throw new Error("positions attribute expected");const i=(0,ee.tM)(t.indices.length/3),r=new pr.j(i,3,t),s=this._context.getRenderGeometryBufferWriter(e.materialId);if(null==s)throw new Error("writer not found");const n=s.createBuffer(e,null);return this._transferables.add(n.data),{materialId:e.materialId,renderGeometryBuffer:n,boundingInfo:{bbMax:r.bbMax,bbMin:r.bbMin}}})),minScreenSpaceRadius:e.minScreenSpaceRadius})))};return this._commands.push({id:"create-lod-renderer",lodRendererId:t,lodRenderGeometry:i}),t}addLodInstances(e,t){this._commands.push({id:"add-lod-instances",lodRendererId:e,data:t}),this._transferables.add(t.featureIds.buffer),this._transferables.add(t.globalTransforms.buffer),this._transferables.add(t.localTransforms.buffer)}removeLodInstances(e,t){this._commands.push({id:"remove-lod-instances",lodRendererId:e,featureIds:t}),this._transferables.add(t.buffer)}append(e){if(e._context!==this._context)throw new Error("Cannot append encoders from different contexts");const{_commands:t,_transferables:i}=this;for(const i of e._commands)t.push(i);for(const t of e._transferables)i.add(t)}async dispatch(){const e=this._commands,t=Array.from(this._transferables);this._clearCommandBuffer(),await this._context.dispatchRenderCommands(e,t)}_clearCommandBuffer(){this._commands=[],this._transferables.clear()}}class mr{constructor(e){this._idCounter=0,this._bufferWriters=new Map,this._dispatchRenderCommandsCallback=async()=>{},this.globalViewingMode=!1,this.globalViewingMode=e.viewingMode===K.RT.Global,this._dispatchRenderCommandsCallback=e.dispatchRenderCommandsCallback}generateUID(){return this._idCounter++,this._idCounter}generateId(e=""){return`${e}${this.generateUID()}`}createEncoder(){return new _r(this)}async dispatchRenderCommands(e,t){0!==e.length&&await this._dispatchRenderCommandsCallback(e,t)}registerRenderGeometryBufferWriter(e,t){this._bufferWriters.set(e,t)}getRenderGeometryBufferWriter(e){return this._bufferWriters.get(e)}}class gr{constructor(e,t){this._renderCommands=e,this._pipelineStateCommands=t}append(e){this.appendRenderCommands(e._renderCommands),this.appendPipelineStateCommands(e._pipelineStateCommands)}appendRenderCommands(e){this._renderCommands.append(e)}appendPipelineStateCommand(e){this._pipelineStateCommands.push(e)}appendPipelineStateCommands(e){const{_pipelineStateCommands:t}=this;for(const i of e)t.push(i)}execute(){for(const e of this._pipelineStateCommands)e();this._renderCommands.dispatch()}}var yr=i(9762),vr=i(27993);function xr(e,t){const{featureCount:i}=e;if(0===i)return new Uint32Array;const r=new Uint32Array(i);return e.readObjectIds(r),r}function br(e,t){const{featureCount:i}=e;if(0===i)return new Float64Array;const r=new Float64Array(3*i);return e.readCoordinates(r),r}var wr=i(48353),Tr=i(8887),Ar=i(83047);function Rr(e){const t=new Map;for(const[i,r]of e)t.set(i,{...r,indices:(0,ee.Dg)(r.indices)});return t}i(12359),i(95108),i(27615),i(52106),i(4718),i(34275),i(65864);var Sr,Ir,Or=i(57917),Mr=i(72385),Er=(i(4197),i(11868)),Cr=i(27921),Fr=i(46610);(Ir=Sr||(Sr={})).length=function(e,t){const i=e[t],r=e[t+1],s=e[t+2];return Math.sqrt(i*i+r*r+s*s)},Ir.normalize=function(e,t){const i=e[t],r=e[t+1],s=e[t+2],n=1/Math.sqrt(i*i+r*r+s*s);e[t]*=n,e[t+1]*=n,e[t+2]*=n},Ir.scale=function(e,t,i){e[t]*=i,e[t+1]*=i,e[t+2]*=i},Ir.add=function(e,t,i,r,s,n=t){(s=s||e)[n]=e[t]+i[r],s[n+1]=e[t+1]+i[r+1],s[n+2]=e[t+2]+i[r+2]},Ir.subtract=function(e,t,i,r,s,n=t){(s=s||e)[n]=e[t]-i[r],s[n+1]=e[t+1]-i[r+1],s[n+2]=e[t+2]-i[r+2]},i(2415);const Dr=new Array(36);for(let e=0;e<6;e++)for(let t=0;t<6;t++)Dr[6*e+t]=e;const Pr=new Array(36);for(let e=0;e<6;e++)Pr[6*e]=0,Pr[6*e+1]=1,Pr[6*e+2]=2,Pr[6*e+3]=2,Pr[6*e+4]=3,Pr[6*e+5]=0;const Lr=(0,Mr.fA)(-.5,0,-.5),Nr=(0,Mr.fA)(.5,0,-.5),zr=(0,Mr.fA)(0,0,.5),Br=(0,Mr.fA)(0,.5,0),Ur=(0,Mr.vt)(),Vr=(0,Mr.vt)(),jr=(0,Mr.vt)(),Hr=(0,Mr.vt)(),Gr=(0,Mr.vt)();function kr(e,t){switch(e){case"cone":return((e,i,r=!1)=>({levels:e.map((e=>{const s=Rr(i(e.tesselation));return r&&function(e){const t=e,i=t.get(Me.r.POSITION).data,r=t.get(Me.r.NORMAL).data;if(r){const t=qr(e,Me.r.NORMAL).data;for(let e=0;e<r.length;e+=3){const i=r[e+1];t[e+1]=-r[e+2],t[e+2]=i}}if(i){const t=qr(e,Me.r.POSITION).data;for(let e=0;e<i.length;e+=3){const r=i[e+1];t[e+1]=-i[e+2],t[e+2]=r}}}(s),{components:[{attributes:s,objectAndLayerIdColor:void 0,transformation:null,materialId:t}],minScreenSpaceRadius:e.minScreenSpaceRadius}}))}))(Zr,(e=>function(e,t,i,r,s=!0,n=!0){let a=0;const o=t,l=e;let c=(0,Mr.fA)(0,a,0),h=(0,Mr.fA)(0,a+l,0),d=(0,Mr.fA)(0,-1,0),u=(0,Mr.fA)(0,1,0);r&&(a=l,h=(0,Mr.fA)(0,0,0),c=(0,Mr.fA)(0,a,0),d=(0,Mr.fA)(0,1,0),u=(0,Mr.fA)(0,-1,0));const f=[h,c],p=[d,u],_=i+2,m=Math.sqrt(l*l+o*o);if(r)for(let e=i-1;e>=0;e--){const t=e*(2*Math.PI/i),r=(0,Mr.fA)(Math.cos(t)*o,a,Math.sin(t)*o);f.push(r);const s=(0,Mr.fA)(l*Math.cos(t)/m,-o/m,l*Math.sin(t)/m);p.push(s)}else for(let e=0;e<i;e++){const t=e*(2*Math.PI/i),r=(0,Mr.fA)(Math.cos(t)*o,a,Math.sin(t)*o);f.push(r);const s=(0,Mr.fA)(l*Math.cos(t)/m,o/m,l*Math.sin(t)/m);p.push(s)}const g=new Array,y=new Array;if(s){for(let e=3;e<f.length;e++)g.push(1),g.push(e-1),g.push(e),y.push(0),y.push(0),y.push(0);g.push(f.length-1),g.push(2),g.push(1),y.push(0),y.push(0),y.push(0)}if(n){for(let e=3;e<f.length;e++)g.push(e),g.push(e-1),g.push(0),y.push(e),y.push(e-1),y.push(1);g.push(0),g.push(2),g.push(f.length-1),y.push(1),y.push(2),y.push(p.length-1)}const v=(0,Er.oe)(3*_);for(let e=0;e<_;e++)v[3*e]=f[e][0],v[3*e+1]=f[e][1],v[3*e+2]=f[e][2];const x=(0,Er.oe)(3*_);for(let e=0;e<_;e++)x[3*e]=p[e][0],x[3*e+1]=p[e][1],x[3*e+2]=p[e][2];return[[Me.r.POSITION,new Fr.n(v,g,3,!0)],[Me.r.NORMAL,new Fr.n(x,y,3,!0)]]}(1,.5,e,!1)),!0);case"sphere":case"cube":case"inverted-cone":case"cylinder":case"tetrahedron":case"diamond":throw new Error("not implemented");default:return}}function qr(e,t){let i=e.get(t);return i&&!i.exclusive&&(i={...i,exclusive:!0,data:(0,Or.S)(i.data)},e.set(t,i)),i}(0,Ae.d)(Ur,Lr,Br),(0,Ae.d)(Vr,Lr,Nr),(0,Ae.e)(jr,Ur,Vr),(0,Ae.n)(jr,jr),(0,Ae.d)(Ur,Nr,Br),(0,Ae.d)(Vr,Nr,zr),(0,Ae.e)(Hr,Ur,Vr),(0,Ae.n)(Hr,Hr),(0,Ae.d)(Ur,zr,Br),(0,Ae.d)(Vr,zr,Lr),(0,Ae.e)(Gr,Ur,Vr),(0,Ae.n)(Gr,Gr),jr[0],jr[1],jr[2],Hr[0],Hr[1],Hr[2],Gr[0],Gr[1],Gr[2],(0,j.vt)();const Zr=[{tesselation:6,minScreenSpaceRadius:0},{tesselation:18,minScreenSpaceRadius:7},{tesselation:64,minScreenSpaceRadius:65}];class Wr{constructor(e){this._context=e,this.lodRendererId=null,this._loaded=!1,this._loadingPromise=null,this._primitive="cone"}get loaded(){return this._loaded}load(){return null==this._loadingPromise&&(this._loadingPromise=this._load()),this._loadingPromise}async _load(){const e=this._context.renderCommandContext.createEncoder(),t=e.createMaterial("default"),i=kr(this._primitive,t);this.lodRendererId=e.createLodRenderer(i),await e.dispatch(),this._loaded=!0}async createAddCommand(e){const t=this._context.renderCommandContext.createEncoder();if(null==this.lodRendererId)throw new Error("expected lod renderer id to not be null");const{featureCount:i}=e;if(0===i)return t;const r=(0,H.vt)((0,Tr.Fq)(this._primitive)),s=(0,j.ci)((0,H.Ej)(r)),n=(0,j.ci)((0,Tr.Bb)(s,{isPrimitive:!0,width:100,depth:null,height:null})),a=new Float64Array(16*i),o=new Float64Array(16*i),l=br(e,this._context);for(let e=0;e<i;++e){const t=e,i=l[3*e+0],r=l[3*e+1],c=l[3*e+2],h=this._computeGlobalTransform(i,r,c,this._context.viewSpatialReference,$r),d=this._computeLocalTransform(n,s,Xr);this._writeMatrixToTypedBuffer(a,t,d),this._writeMatrixToTypedBuffer(o,t,h)}const c=xr(e,this._context),h={featureIds:new Uint32Array(c),localTransforms:a,globalTransforms:o};return t.addLodInstances(this.lodRendererId,h),t}async createRemoveCommand(e){const t=this._context.renderCommandContext.createEncoder();if(null==this.lodRendererId)return t;const i=xr(e,this._context);return t.removeLodInstances(this.lodRendererId,i),t}_writeMatrixToTypedBuffer(e,t,i){let r=16*t;for(let t=0;t<16;t++)e[r++]=i[t]}_computeGlobalTransform(e,t,i,r,s){return Yr[0]=e,Yr[1]=t,Yr[2]=i,(0,wr.l)(r,Yr,s,this._context.renderSpatialReference),s}_computeLocalTransform(e,t,i){return(0,we.D_)(i),this._applyObjectScale(e,t,i),i}_applyObjectScale(e,t,i){const r=function(e=j.Un,t,i,r=1){const s=new Array(3);if(null==t||null==i)s[0]=1,s[1]=1,s[2]=1;else{let r,n=0;for(let a=2;a>=0;a--){const o=e[a],l=null!=o,c=0===a&&!r&&!l,h=i[a];let d;"symbol-value"===o||c?d=0!==h?t[a]/h:1:l&&"proportional"!==o&&isFinite(o)&&(d=0!==h?o/h:1),null!=d&&(s[a]=d,r=d,n=Math.max(n,Math.abs(d)))}for(let e=2;e>=0;e--)null==s[e]?s[e]=r:0===s[e]&&(s[e]=.001*n)}for(let e=2;e>=0;e--)s[e]/=r;return(0,j.ci)(s)}(e,e,t,this._context.renderCoordsHelper.unitInMeters);1===r[0]&&1===r[1]&&1===r[2]||(0,we.hs)(i,i,r)}}const Yr=(0,j.vt)(),Xr=(0,Te.vt)(),$r=(0,Te.vt)();class Jr{constructor(e){this._context=e,this.materialId=null,this._loaded=!1,this._loadingPromise=null}get loaded(){return this._loaded}load(){return null==this._loadingPromise&&(this._loadingPromise=this._load()),this._loadingPromise}async _load(){const e=this._context.renderCommandContext.createEncoder();this.materialId=e.createMaterial("hud"),e.createDirectRenderer(this.materialId),await e.dispatch(),this._loaded=!0}async createAddCommand(e){if(null==this.materialId)throw new Error("expected material not to be null");const t=this._context,i=t.renderCommandContext.createEncoder(),{featureCount:r,id:s}=e;if(0===r)return i;const n=xr(e),a=function(e,t){const{featureCount:i}=e;if(0===i)return new Float64Array;const r=br(e),s=t.viewSpatialReference,n=t.renderSpatialReference,a=new Float64Array(3*i);if(!(0,yr.projectBuffer)(r,s,0,a,n,0,i))throw new Error("Failed to project coordinates");return a}(e,t),o=function(e,t){const i=t.viewSpatialReference,r=t.renderSpatialReference,{extent:s}=e,n=(0,x.gX)(s),a=(0,j.vt)();return(0,vr.F)([n[0],n[1],0],i,a,r),a}(e,t),l=new Float64Array([0,0,1]),c=new Float64Array([255,255,255,255]),h=new Float64Array([24,24]),d=new Float64Array([0,0,0,1]),u=new Float64Array([0,0]),f=new Float64Array([0]),p=new Uint32Array(r);for(let e=0;e<r;++e)p[e]=e;const _=new Uint32Array(r);for(let e=0;e<r;++e)_[e]=0;const m=new Fr.n(a,p,3,!0),g=new Fr.n(l,_,3,!0),y=new Fr.n(u,_,2,!0),v=new Fr.n(c,_,4,!0),b=new Fr.n(f,_,1,!0),w=new Fr.n(h,_,2,!0),T=new Fr.n(d,_,4,!0),A={attributes:Rr([[Me.r.POSITION,m],[Me.r.NORMAL,g],[Me.r.UV0,y],[Me.r.COLOR,v],[Me.r.ROTATION,b],[Me.r.SIZE,w],[Me.r.CENTEROFFSETANDDISTANCE,T]]),objectAndLayerIdColor:void 0,transformation:(0,Te.vt)(),materialId:this.materialId,objectIds:n};return i.addDirectRendererGeometry(s,A,o),i}async createRemoveCommand(e){const t=this._context.renderCommandContext.createEncoder();return t.removeDirectRendererGeometry(e.id),t}}class Qr{constructor(e){this._symbols=new Array,this._featureDataPartitioning=new Map,this._context=e}async load(){this._symbols[0]=new Jr(this._context),this._symbols[1]=new Wr(this._context)}async createAddCommand(e){const t=this._partition(e),i=await Promise.all(t.map((async({index:e,features:t})=>{const i=await this._provisionSymbol(e);return await(i?.createAddCommand(t))}))),r=this._context.renderCommandContext.createEncoder();for(const e of i)null!=e&&r.append(e);return new gr(r,[()=>{this._featureDataPartitioning.set(e,t)}])}async createRemoveCommand(e){const{_featureDataPartitioning:t}=this,i=t.get(e),r=this._context.renderCommandContext.createEncoder();if(null==i)return new gr(this._context.renderCommandContext.createEncoder(),[]);const s=await Promise.all(i.map((async({index:e,features:t})=>{const i=this._getLoadedSymbol(e);return await(i?.createRemoveCommand(t))})));for(const e of s)null!=e&&r.append(e);return new gr(r,[()=>{t.delete(e)}])}async _provisionSymbol(e){if(null==e)return null;const t=this._symbols[e];return t?(t.loaded||await t.load(),t):null}_getLoadedSymbol(e){if(null==e)return null;const t=this._symbols[e];return null!=t&&t.loaded?t:null}_partition(e){const t=xr(e,this._context);if(null==t)throw new Error("unable to fetch objectIds");const{featureCount:i}=e,r=[[],[]];for(let e=0;e<i;++e)r[t[e]%2].push(e);return r.map(((t,i)=>new Kr(i,e.subset(new Uint32Array(t))))).filter((e=>e.features.featureCount>0))}}class Kr{constructor(e,t){this.index=e,this.features=t}}var es=i(73941),ts=i(98764),is=i(65806);const rs=(0,j.vt)();var ss=i(88582),ns=i(17352);function as(e,t,i=function(e){return{operations:e,value:e.create()}}(e)){return i.operations=e,e.copy(t,i.value),i}const os=2**50;function ls(e,t,i,r){return e.operations.setAltitudeAt(e.value,t,i,r)}function cs(e,t,i){return e.operations.elevate(e.value,t,i.value)}const hs=(0,j.vt)();(0,j.vt)();var ds=i(32114);function us(e){return"point"===e.type}class fs{constructor(e,t,i,r){this.viewingMode=e,this.spatialReference=t,this.unitInMeters=i,this._coordinateSystem=r,this._tmpCoordinateSystem=function(e){const{value:t,operations:i}=e;return{operations:i,value:i.create(t)}}(r),this.referenceEllipsoid=(0,es.tO)(t),this.sphericalPCPF=(0,ts.lO)(t)}set extent(e){e&&function(e,t,i){e.operations.setExtent(e.value,t,i.value)}(this._coordinateSystem,e,this._coordinateSystem)}get extent(){return function(e,t){return e.operations.getExtent(e.value,t),t}(this._coordinateSystem,(0,x.vt)())}getAltitude(e){return function(e,t){return e.operations.altitudeAt(e.value,t)}(this._coordinateSystem,e)}setAltitude(e,t,i=e){return ls(this._coordinateSystem,i,t,e)}setAltitudeOfTransformation(e,t){!function(e,t,i,r){t!==r&&(0,we.C)(r,t),(0,Ae.i)(hs,r[12],r[13],r[14]),ls(e,hs,i,hs),r[12]=hs[0],r[13]=hs[1],r[14]=hs[2]}(this._coordinateSystem,t,e,t)}worldUpAtPosition(e,t){return function(e,t,i){return e.operations.axisAt(e.value,t,ss._.Z,i)}(this._coordinateSystem,e,t)}worldBasisAtPosition(e,t,i){return function(e,t,i,r){return e.operations.axisAt(e.value,t,i,r)}(this._coordinateSystem,e,t,i)}basisMatrixAtPosition(e,t){const i=this.worldBasisAtPosition(e,ss._.X,ds.rq.get()),r=this.worldBasisAtPosition(e,ss._.Y,ds.rq.get()),s=this.worldBasisAtPosition(e,ss._.Z,ds.rq.get());return(0,we.hZ)(t,i[0],i[1],i[2],0,r[0],r[1],r[2],0,s[0],s[1],s[2],0,0,0,0,1),t}headingAtPosition(e,t){const i=this.worldUpAtPosition(e,ds.rq.get()),r=this.worldBasisAtPosition(e,ss._.Y,ds.rq.get()),s=(0,ei.EJ)(t,r,i);return(0,ae.KJ)(s)}intersectManifoldClosestSilhouette(e,t,i){return cs(this._coordinateSystem,t,this._tmpCoordinateSystem),function(e,t,i){e.operations.intersectRayClosestSilhouette(e.value,t,i)}(this._tmpCoordinateSystem,e,i),i}intersectManifold(e,t,i){cs(this._coordinateSystem,t,this._tmpCoordinateSystem);const r=ds.rq.get();return function(e,t,i){return e.operations.intersectRay(e.value,t,i)}(this._tmpCoordinateSystem,e,r)?(0,Ae.c)(i,r):null}intersectInfiniteManifold(e,t,i){if(this.viewingMode===K.RT.Global)return this.intersectManifold(e,t,i);cs(this._coordinateSystem,t,this._tmpCoordinateSystem);const r=this._tmpCoordinateSystem.value,s=ds.rq.get();return(0,Cr.Ui)(r.plane,e,s)?(0,Ae.c)(i,s):null}toRenderCoords(e,t,i){return us(e)?(0,is.g)(e,t,this.spatialReference):(0,vr.F)(e,t,i,this.spatialReference)}fromRenderCoords(e,t,i=null){return us(t)?(null!=i&&(t.spatialReference=i),function(e,t,i){return!!(0,vr.F)(e,t,rs,i.spatialReference)&&(i.x=rs[0],i.y=rs[1],i.z=rs[2],!0)}(e,this.spatialReference,t)?t:null):(0,vr.F)(e,this.spatialReference,t,i)?t:null}static create(e,t){switch(e){case K.RT.Local:return new fs(K.RT.Local,t,(0,Ar.GA)(t),as(ns.b,(0,ns.f)([0,0,0],[os,0,0],[0,os,0])));case K.RT.Global:return new fs(K.RT.Global,t,1,function(e){return as(Re.s,(0,Re.f)(0,0,0,(0,es.tO)(e).radius))}(t))}}static renderUnitScaleFactor(e,t){return(0,Ar.KX)(e)/(0,Ar.KX)(t)}}let ps=class extends s.A.EventedAccessor{constructor(){super(...arguments),this.remoteClient=null,this._featureDataStore=new O,this._featureStore=new P,this._tileManager=null,this._renderer=null,this._fetcher=null,this._queryEngine=null,this._defaultQueryJSON=null}get updating(){return this._tileManager.updating}destroy(){this._featureStore.clear(),this._tileManager?.destroy()}async setup({viewSpatialReference:e,renderSpatialReference:t,viewingMode:i,baseQuery:r,url:s,objectIdField:n,capabilities:o,fieldsIndex:l,timeInfo:c,fullExtent:h}){const m=f.A.fromJSON(e),g=f.A.fromJSON(t);this._fetcher=new Q(m,_.A.fromJSON(r),s,n,o),this._queryEngine=new p.do({hasZ:!0,hasM:!1,geometryType:"esriGeometryPoint",objectIdField:n,fieldsIndex:l,availableFields:[n],spatialReference:e,featureStore:this._featureStore,timeInfo:c}),this._renderer=new Qr({viewSpatialReference:m,renderSpatialReference:g,renderCoordsHelper:fs.create(i,g),renderCommandContext:new mr({viewingMode:i,dispatchRenderCommandsCallback:(e,t)=>this.remoteClient.invoke("dispatchRenderCommands",e,{transferList:t})})}),this._defaultQueryJSON=new _.A({outSpatialReference:m}).toJSON();let y=null;if(null!=h){const e=d.A.fromJSON(h);await(0,u.initializeProjection)(e.spatialReference,m),y=(0,u.project)(e,m)}return this._tileManager=new b({loadTile:(e,t)=>this._fetcher.fetch(e,t),createAddTileCommand:(e,t)=>this._createAddTileCommand(e,t),createRemoveTileCommand:e=>this._createRemoveTileCommand(e),extent:y}),this.addHandles((0,a.wB)((()=>this.updating),(e=>{this.emit("notify-updating",{updating:e})})),a.Vh),await this._renderer.load(),ms}async executeQuery(e,t){return{result:await this._queryEngine.executeQuery(this._ensureQuery(e),t)}}async executeQueryForIds(e,t){const i=await this._queryEngine.executeQueryForIdSet(this._ensureQuery(e),t);return{result:Array.from(i)}}async executeQueryForCount(e,t){return{result:await this._queryEngine.executeQueryForCount(this._ensureQuery(e),t)}}async executeQueryForExtent(e,t){return{result:await this._queryEngine.executeQueryForExtent(this._ensureQuery(e),t)}}async executeQueryForLatestObservations(e,t){return{result:await this._queryEngine.executeQueryForLatestObservations(this._ensureQuery(e),t)}}async onTileTreeChange(e){return await this._tileManager.onTileTreeChange(e),ms}async _createAddTileCommand(e,t){const i=new I(e),r=await this._renderer.createAddCommand(i);return(0,n.Te)(t),r.appendPipelineStateCommand((()=>{this._featureDataStore.add(i),this._featureStore.addTile(e)})),r}async _createRemoveTileCommand(e){const t=this._featureStore,i=this._featureDataStore,r=this._renderer,s=i.get(e);if(null==s)return null;const n=await r.createRemoveCommand(s);return n.appendPipelineStateCommand((()=>{i.remove(e),t.removeTile(e)})),n}_ensureQuery(e){return e??this._defaultQueryJSON}};(0,r._)([(0,o.MZ)()],ps.prototype,"updating",null),ps=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.Feature3DPipelineWorker")],ps);const _s=ps,ms={result:void 0}},4431:(e,t,i)=>{i.d(t,{U:()=>n});var r=i(63907),s=i(74038);function n(e,t=0){const i=e.stride;return Array.from(e.fields.keys()).map((r=>{const n=e.fields.get(r),o=n.constructor.ElementCount,l=a(n.constructor.ElementType),c=n.offset,h=n.optional?.glNormalized??!1;return new s._(r,o,l,c,i,h,t)}))}function a(e){const t=o[e];if(t)return t;throw new Error("BufferType not supported in WebGL")}const o={u8:r.pe.UNSIGNED_BYTE,u16:r.pe.UNSIGNED_SHORT,u32:r.pe.UNSIGNED_INT,i8:r.pe.BYTE,i16:r.pe.SHORT,i32:r.pe.INT,f32:r.pe.FLOAT}},47522:(e,t,i)=>{i.d(t,{K:()=>n});var r=i(32976),s=i(31821);function n(e){e.uniforms.add(new r.o("alignPixelEnabled",(e=>e.alignPixelEnabled))),e.code.add(s.H`vec4 alignToPixelCenter(vec4 clipCoord, vec2 widthHeight) {
164
- if (!alignPixelEnabled)
165
- return clipCoord;
166
- vec2 xy = vec2(0.500123) + 0.5 * clipCoord.xy / clipCoord.w;
167
- vec2 pixelSz = vec2(1.0) / widthHeight;
168
- vec2 ij = (floor(xy * widthHeight) + vec2(0.5)) * pixelSz;
169
- vec2 result = (ij * 2.0 - vec2(1.0)) * clipCoord.w;
170
- return vec4(result, clipCoord.zw);
171
- }`),e.code.add(s.H`vec4 alignToPixelOrigin(vec4 clipCoord, vec2 widthHeight) {
172
- if (!alignPixelEnabled)
173
- return clipCoord;
174
- vec2 xy = vec2(0.5) + 0.5 * clipCoord.xy / clipCoord.w;
175
- vec2 pixelSz = vec2(1.0) / widthHeight;
176
- vec2 ij = floor((xy + 0.5 * pixelSz) * widthHeight) * pixelSz;
177
- vec2 result = (ij * 2.0 - vec2(1.0)) * clipCoord.w;
178
- return vec4(result, clipCoord.zw);
179
- }`)}},40268:(e,t,i)=>{i.d(t,{Q:()=>u,R:()=>d});var r=i(35640),s=i(52587),n=i(20693),a=i(14314),o=i(33094),l=i(20304),c=i(31821),h=i(46540);const d=.5;function u(e,t){e.include(s.Y6),e.attributes.add(h.r.POSITION,"vec3"),e.attributes.add(h.r.NORMAL,"vec3"),e.attributes.add(h.r.CENTEROFFSETANDDISTANCE,"vec4");const i=e.vertex;(0,n.NB)(i,t),(0,n.yu)(i,t),i.uniforms.add(new a.I("viewport",(e=>e.camera.fullViewport)),new l.m("polygonOffset",(e=>e.shaderPolygonOffset)),new o.U("cameraGroundRelative",(e=>e.camera.aboveGround?1:-1))),t.hasVerticalOffset&&(0,r.V)(i),i.constants.add("smallOffsetAngle","float",.984807753012208),i.code.add(c.H`struct ProjectHUDAux {
180
- vec3 posModel;
181
- vec3 posView;
182
- vec3 vnormal;
183
- float distanceToCamera;
184
- float absCosAngle;
185
- };`),i.code.add(c.H`
186
- float applyHUDViewDependentPolygonOffset(float pointGroundDistance, float absCosAngle, inout vec3 posView) {
187
- float pointGroundSign = ${t.terrainDepthTest?c.H.float(0):c.H`sign(pointGroundDistance)`};
188
- if (pointGroundSign == 0.0) {
189
- pointGroundSign = cameraGroundRelative;
190
- }
191
-
192
- // cameraGroundRelative is -1 if camera is below ground, 1 if above ground
193
- // groundRelative is 1 if both camera and symbol are on the same side of the ground, -1 otherwise
194
- float groundRelative = cameraGroundRelative * pointGroundSign;
195
-
196
- // view angle dependent part of polygon offset emulation: we take the absolute value because the sign that is
197
- // dropped is instead introduced using the ground-relative position of the symbol and the camera
198
- if (polygonOffset > .0) {
199
- float cosAlpha = clamp(absCosAngle, 0.01, 1.0);
200
- float tanAlpha = sqrt(1.0 - cosAlpha * cosAlpha) / cosAlpha;
201
- float factor = (1.0 - tanAlpha / viewport[2]);
202
-
203
- // same side of the terrain
204
- if (groundRelative > 0.0) {
205
- posView *= factor;
206
- }
207
- // opposite sides of the terrain
208
- else {
209
- posView /= factor;
210
- }
211
- }
212
-
213
- return groundRelative;
214
- }
215
- `),t.draped&&!t.hasVerticalOffset||(0,n.S7)(i),t.draped||(i.uniforms.add(new o.U("perDistancePixelRatio",(e=>Math.tan(e.camera.fovY/2)/(e.camera.fullViewport[2]/2)))),i.code.add(c.H`
216
- void applyHUDVerticalGroundOffset(vec3 normalModel, inout vec3 posModel, inout vec3 posView) {
217
- float distanceToCamera = length(posView);
218
-
219
- // Compute offset in world units for a half pixel shift
220
- float pixelOffset = distanceToCamera * perDistancePixelRatio * ${c.H.float(d)};
221
-
222
- // Apply offset along normal in the direction away from the ground surface
223
- vec3 modelOffset = normalModel * cameraGroundRelative * pixelOffset;
224
-
225
- // Apply the same offset also on the view space position
226
- vec3 viewOffset = (viewNormal * vec4(modelOffset, 1.0)).xyz;
227
-
228
- posModel += modelOffset;
229
- posView += viewOffset;
230
- }
231
- `)),t.screenCenterOffsetUnitsEnabled&&(0,n.Nz)(i),t.hasScreenSizePerspective&&(0,s.OH)(i),i.code.add(c.H`
232
- vec4 projectPositionHUD(out ProjectHUDAux aux) {
233
- vec3 centerOffset = centerOffsetAndDistance.xyz;
234
- float pointGroundDistance = centerOffsetAndDistance.w;
235
-
236
- aux.posModel = position;
237
- aux.posView = (view * vec4(aux.posModel, 1.0)).xyz;
238
- aux.vnormal = normal;
239
- ${t.draped?"":"applyHUDVerticalGroundOffset(aux.vnormal, aux.posModel, aux.posView);"}
240
-
241
- // Screen sized offset in world space, used for example for line callouts
242
- // Note: keep this implementation in sync with the CPU implementation, see
243
- // - MaterialUtil.verticalOffsetAtDistance
244
- // - HUDMaterial.applyVerticalOffsetTransformation
245
-
246
- aux.distanceToCamera = length(aux.posView);
247
-
248
- vec3 viewDirObjSpace = normalize(cameraPosition - aux.posModel);
249
- float cosAngle = dot(aux.vnormal, viewDirObjSpace);
250
-
251
- aux.absCosAngle = abs(cosAngle);
252
-
253
- ${t.hasScreenSizePerspective&&(t.hasVerticalOffset||t.screenCenterOffsetUnitsEnabled)?"vec3 perspectiveFactor = screenSizePerspectiveScaleFactor(aux.absCosAngle, aux.distanceToCamera, screenSizePerspectiveAlignment);":""}
254
-
255
- ${t.hasVerticalOffset?t.hasScreenSizePerspective?"float verticalOffsetScreenHeight = applyScreenSizePerspectiveScaleFactorFloat(verticalOffset.x, perspectiveFactor);":"float verticalOffsetScreenHeight = verticalOffset.x;":""}
256
-
257
- ${t.hasVerticalOffset?c.H`
258
- float worldOffset = clamp(verticalOffsetScreenHeight * verticalOffset.y * aux.distanceToCamera, verticalOffset.z, verticalOffset.w);
259
- vec3 modelOffset = aux.vnormal * worldOffset;
260
- aux.posModel += modelOffset;
261
- vec3 viewOffset = (viewNormal * vec4(modelOffset, 1.0)).xyz;
262
- aux.posView += viewOffset;
263
- // Since we elevate the object, we need to take that into account
264
- // in the distance to ground
265
- pointGroundDistance += worldOffset;`:""}
266
-
267
- float groundRelative = applyHUDViewDependentPolygonOffset(pointGroundDistance, aux.absCosAngle, aux.posView);
268
-
269
- ${t.screenCenterOffsetUnitsEnabled?"":c.H`
270
- // Apply x/y in view space, but z in screen space (i.e. along posView direction)
271
- aux.posView += vec3(centerOffset.x, centerOffset.y, 0.0);
272
-
273
- // Same material all have same z != 0.0 condition so should not lead to
274
- // branch fragmentation and will save a normalization if it's not needed
275
- if (centerOffset.z != 0.0) {
276
- aux.posView -= normalize(aux.posView) * centerOffset.z;
277
- }
278
- `}
279
-
280
- vec4 posProj = proj * vec4(aux.posView, 1.0);
281
-
282
- ${t.screenCenterOffsetUnitsEnabled?t.hasScreenSizePerspective?"float centerOffsetY = applyScreenSizePerspectiveScaleFactorFloat(centerOffset.y, perspectiveFactor);":"float centerOffsetY = centerOffset.y;":""}
283
-
284
- ${t.screenCenterOffsetUnitsEnabled?"posProj.xy += vec2(centerOffset.x, centerOffsetY) * pixelRatio * 2.0 / viewport.zw * posProj.w;":""}
285
-
286
- // constant part of polygon offset emulation
287
- posProj.z -= groundRelative * polygonOffset * posProj.w;
288
- return posProj;
289
- }
290
- `)}},63578:(e,t,i)=>{i.d(t,{I:()=>a});var r=i(47522),s=i(96598),n=i(31821);function a(e,t){const{vertex:i,fragment:a}=e;e.include(s.Z,t),i.include(r.K),i.main.add(n.H`vec4 posProjCenter;
291
- if (dot(position, position) > 0.0) {
292
- ProjectHUDAux projectAux;
293
- vec4 posProj = projectPositionHUD(projectAux);
294
- posProjCenter = alignToPixelCenter(posProj, viewport.zw);
295
- forwardViewPosDepth(projectAux.posView);
296
- vec3 vpos = projectAux.posModel;
297
- if (rejectBySlice(vpos)) {
298
- posProjCenter = vec4(1e038, 1e038, 1e038, 1.0);
299
- }
300
- } else {
301
- posProjCenter = vec4(1e038, 1e038, 1e038, 1.0);
302
- }
303
- gl_Position = posProjCenter;
304
- gl_PointSize = 1.0;`),a.main.add(n.H`fragColor = vec4(1);
305
- if(discardByTerrainDepth()) {
306
- fragColor.g = 0.5;
307
- }`)}},13755:(e,t,i)=>{i.d(t,{y:()=>c});var r,s=i(47522);!function(e){e[e.Occluded=0]="Occluded",e[e.NotOccluded=1]="NotOccluded",e[e.Both=2]="Both",e[e.COUNT=3]="COUNT"}(r||(r={}));var n=i(14314),a=i(33094),o=i(31821),l=i(12791);function c(e){e.vertex.uniforms.add(new a.U("renderTransparentlyOccludedHUD",(e=>e.hudRenderStyle===r.Occluded?1:e.hudRenderStyle===r.NotOccluded?0:.75)),new n.I("viewport",(e=>e.camera.fullViewport)),new l.x("hudVisibilityTexture",(e=>e.hudVisibility?.getTexture()))),e.vertex.include(s.K),e.vertex.code.add(o.H`bool testHUDVisibility(vec4 posProj) {
308
- vec4 posProjCenter = alignToPixelCenter(posProj, viewport.zw);
309
- vec4 occlusionPixel = texture(hudVisibilityTexture, .5 + .5 * posProjCenter.xy / posProjCenter.w);
310
- if (renderTransparentlyOccludedHUD > 0.5) {
311
- return occlusionPixel.r * occlusionPixel.g > 0.0 && occlusionPixel.g * renderTransparentlyOccludedHUD < 1.0;
312
- }
313
- return occlusionPixel.r * occlusionPixel.g > 0.0 && occlusionPixel.g == 1.0;
314
- }`)}},62258:(e,t,i)=>{var r,s;i.d(t,{dz:()=>r,oH:()=>s}),function(e){e[e.OBJECT=0]="OBJECT",e[e.HUD=1]="HUD",e[e.TERRAIN=2]="TERRAIN",e[e.OVERLAY=3]="OVERLAY",e[e.I3S=4]="I3S",e[e.PCL=5]="PCL",e[e.LOD=6]="LOD",e[e.VOXEL=7]="VOXEL",e[e.TILES3D=8]="TILES3D"}(r||(r={})),function(e){e[e.MIN=0]="MIN",e[e.MINMAX=1]="MINMAX",e[e.ALL=2]="ALL"}(s||(s={}))},65215:(e,t,i)=>{i.d(t,{HE:()=>r,R6:()=>s}),i(51850);class r{constructor(e){this.layerUid=e}}class s extends r{constructor(e,t){super(e),this.graphicUid=t}}},78230:(e,t,i)=>{i.d(t,{A:()=>f});var r,s,n=i(93687),a=i(3694),o=i(38954),l=i(51850),c=i(82919),h=i(71351),d=i(97937),u=i(620);class f{get bounds(){return this._root.bounds}get halfSize(){return this._root.halfSize}get root(){return this._root.node}get maximumObjectsPerNode(){return this._maximumObjectsPerNode}get maximumDepth(){return this._maximumDepth}get objectCount(){return this._objectCount}constructor(e,t){this.objectToBoundingSphere=e,this._maximumObjectsPerNode=10,this._maximumDepth=20,this._degenerateObjects=new Set,this._root=new p,this._objectCount=0,t&&(void 0!==t.maximumObjectsPerNode&&(this._maximumObjectsPerNode=t.maximumObjectsPerNode),void 0!==t.maximumDepth&&(this._maximumDepth=t.maximumDepth))}destroy(){this._degenerateObjects.clear(),p.clearPool(),E[0]=null,L.prune(),j.prune()}add(e,t=e.length){this._objectCount+=t,this._grow(e,t);const i=p.acquire();for(let r=0;r<t;r++){const t=e[r];this._isDegenerate(t)?this._degenerateObjects.add(t):(i.init(this._root),this._add(t,i))}p.release(i)}remove(e,t=null){this._objectCount-=e.length;const i=p.acquire();for(const r of e){const e=t??(0,d.e)(this.objectToBoundingSphere(r),N);S(e[3])?(i.init(this._root),g(r,e,i)):this._degenerateObjects.delete(r)}p.release(i),this._shrink()}update(e,t){if(!S(t[3])&&this._isDegenerate(e))return;const i=function(e){return E[0]=e,E}(e);this.remove(i,t),this.add(i)}forEachAlongRay(e,t,i){const r=(0,h.LV)(e,t);_(this._root,(e=>{if(!function(e,t){return w((0,d.a)(t.bounds),2*-t.halfSize,D),w((0,d.a)(t.bounds),2*t.halfSize,P),(0,u.O_)(e.origin,e.direction,D,P)}(r,e))return!1;const t=e.node;return t.terminals.forAll((e=>{this._intersectsObject(r,e)&&i(e)})),null!==t.residents&&t.residents.forAll((e=>{this._intersectsObject(r,e)&&i(e)})),!0}))}forEachAlongRayWithVerticalOffset(e,t,i,r){const s=(0,h.LV)(e,t);_(this._root,(e=>{if(!function(e,t,i){return w((0,d.a)(t.bounds),2*-t.halfSize,D),w((0,d.a)(t.bounds),2*t.halfSize,P),i.applyToMinMax(D,P),(0,u.O_)(e.origin,e.direction,D,P)}(s,e,r))return!1;const t=e.node;return t.terminals.forAll((e=>{this._intersectsObjectWithOffset(s,e,r)&&i(e)})),null!==t.residents&&t.residents.forAll((e=>{this._intersectsObjectWithOffset(s,e,r)&&i(e)})),!0}))}forEach(e){_(this._root,(t=>{const i=t.node;return i.terminals.forAll(e),null!==i.residents&&i.residents.forAll(e),!0})),this._degenerateObjects.forEach(e)}forEachDegenerateObject(e){this._degenerateObjects.forEach(e)}findClosest(e,t,i,r=()=>!0,s=1/0){let n=1/0,a=1/0,l=null;const h=A(e,t),u=o=>{if(--s,!r(o))return;const h=this.objectToBoundingSphere(o);if(!(0,c.m7)(i,h))return;const u=R(e,t,(0,d.a)(h)),f=u-h[3],p=u+h[3];f<n&&(n=f,a=p,l=o)};return m(this._root,(r=>{if(s<=0||!(0,c.m7)(i,r.bounds))return!1;if((0,o.h)(F,h,r.halfSize),(0,o.g)(F,F,(0,d.a)(r.bounds)),R(e,t,F)>a)return!1;const n=r.node;return n.terminals.forAll((e=>u(e))),null!==n.residents&&n.residents.forAll((e=>u(e))),!0}),e,t),l}forEachInDepthRange(e,t,i,r,s,n,a){let l=-1/0,h=1/0;const u={setRange:e=>{i===f.DepthOrder.FRONT_TO_BACK?(l=Math.max(l,e.near),h=Math.min(h,e.far)):(l=Math.max(l,-e.far),h=Math.min(h,-e.near))}};u.setRange(r);const p=R(t,i,e),_=A(t,i),g=A(t,-i),y=e=>{if(!a(e))return;const r=this.objectToBoundingSphere(e),o=(0,d.a)(r),f=R(t,i,o)-p,_=f-r[3],m=f+r[3];_>h||m<l||!(0,c.m7)(n,r)||s(e,u)};m(this._root,(e=>{if(!(0,c.m7)(n,e.bounds))return!1;if((0,o.h)(F,_,e.halfSize),(0,o.g)(F,F,(0,d.a)(e.bounds)),R(t,i,F)-p>h)return!1;if((0,o.h)(F,g,e.halfSize),(0,o.g)(F,F,(0,d.a)(e.bounds)),R(t,i,F)-p<l)return!1;const r=e.node;return r.terminals.forAll((e=>y(e))),null!==r.residents&&r.residents.forAll((e=>y(e))),!0}),t,i)}forEachNode(e){_(this._root,(t=>e(t.node,t.bounds,t.halfSize,t.depth)))}forEachNeighbor(e,t){const i=(0,d.g)(t),r=(0,d.a)(t),s=t=>{const s=this.objectToBoundingSphere(t),n=(0,d.g)(s),a=i+n;return!((0,o.s)((0,d.a)(s),r)-a*a<=0)||e(t)};let n=!0;const a=e=>{n&&(n=s(e))};_(this._root,(e=>{const t=(0,d.g)(e.bounds),s=i+t;if((0,o.s)((0,d.a)(e.bounds),r)-s*s>0)return!1;const l=e.node;return l.terminals.forAll(a),n&&null!==l.residents&&l.residents.forAll(a),n})),n&&this.forEachDegenerateObject(a)}_intersectsObject(e,t){const i=this.objectToBoundingSphere(t);return!(i[3]>0)||(0,d.i)(i,e)}_intersectsObjectWithOffset(e,t,i){const r=this.objectToBoundingSphere(t);return!(r[3]>0)||(0,d.i)(i.applyToBoundingSphere(r),e)}_add(e,t){t.advanceTo(this.objectToBoundingSphere(e))?t.node.terminals.push(e):(t.node.residents.push(e),t.node.residents.length>this._maximumObjectsPerNode&&t.depth<this._maximumDepth&&this._split(t))}_split(e){const t=e.node.residents;e.node.residents=null;for(let i=0;i<t.length;i++){const r=p.acquire().init(e);this._add(t.at(i),r),p.release(r)}}_grow(e,t){if(0!==t&&(T(e,t,(e=>this.objectToBoundingSphere(e)),z),S(z[3])&&!this._fitsInsideTree(z)))if(v(this._root.node))(0,d.e)(z,this._root.bounds),this._root.halfSize=1.25*this._root.bounds[3],this._root.updateBoundsRadiusFromHalfSize();else{const e=this._rootBoundsForRootAsSubNode(z);this._placingRootViolatesMaxDepth(e)?this._rebuildTree(z,e):this._growRootAsSubNode(e),p.release(e)}}_rebuildTree(e,t){(0,o.c)((0,d.a)(B),(0,d.a)(t.bounds)),B[3]=t.halfSize,T([e,B],2,(e=>e),U);const i=p.acquire().init(this._root);this._root.initFrom(null,U,U[3]),this._root.increaseHalfSize(1.25),_(i,(e=>(this.add(e.node.terminals.data,e.node.terminals.length),null!==e.node.residents&&this.add(e.node.residents.data,e.node.residents.length),!0))),p.release(i)}_placingRootViolatesMaxDepth(e){const t=Math.log(e.halfSize/this._root.halfSize)*Math.LOG2E;let i=0;return _(this._root,(e=>(i=Math.max(i,e.depth),i+t<=this._maximumDepth))),i+t>this._maximumDepth}_rootBoundsForRootAsSubNode(e){const t=e[3],i=e;let r=-1/0;const s=this._root.bounds,n=this._root.halfSize;for(let e=0;e<3;e++){const a=s[e]-n-(i[e]-t),o=i[e]+t-(s[e]+n),l=Math.max(0,Math.ceil(a/(2*n))),c=Math.max(0,Math.ceil(o/(2*n)))+1,h=2**Math.ceil(Math.log(l+c)*Math.LOG2E);r=Math.max(r,h),V[e].min=l,V[e].max=c}for(let e=0;e<3;e++){let t=V[e].min,i=V[e].max;const a=(r-(t+i))/2;t+=Math.ceil(a),i+=Math.floor(a);const o=s[e]-n-t*n*2;C[e]=o+(i+t)*n}const a=r*n;return C[3]=a*M,p.acquire().initFrom(null,C,a,0)}_growRootAsSubNode(e){const t=this._root.node;(0,o.c)((0,d.a)(z),(0,d.a)(this._root.bounds)),z[3]=this._root.halfSize,this._root.init(e),e.advanceTo(z,null,!0),e.node.children=t.children,e.node.residents=t.residents,e.node.terminals=t.terminals}_shrink(){for(;;){const e=this._findShrinkIndex();if(-1===e)break;this._root.advance(e),this._root.depth=0}}_findShrinkIndex(){if(0!==this._root.node.terminals.length||this._root.isLeaf())return-1;let e=null;const t=this._root.node.children;let i=0,r=0;for(;r<t.length&&null==e;)i=r++,e=t[i];for(;r<t.length;)if(t[r++])return-1;return i}_isDegenerate(e){return!S(this.objectToBoundingSphere(e)[3])}_fitsInsideTree(e){const t=this._root.bounds,i=this._root.halfSize;return e[3]<=i&&e[0]>=t[0]-i&&e[0]<=t[0]+i&&e[1]>=t[1]-i&&e[1]<=t[1]+i&&e[2]>=t[2]-i&&e[2]<=t[2]+i}toJSON(){const{maximumDepth:e,maximumObjectsPerNode:t,_objectCount:i}=this,r=this._nodeToJSON(this._root.node);return{maximumDepth:e,maximumObjectsPerNode:t,objectCount:i,root:{bounds:this._root.bounds,halfSize:this._root.halfSize,depth:this._root.depth,node:r}}}_nodeToJSON(e){const t=e.children.map((e=>e?this._nodeToJSON(e):null)),i=e.residents?.map((e=>this.objectToBoundingSphere(e))),r=e.terminals?.map((e=>this.objectToBoundingSphere(e)));return{children:t,residents:i,terminals:r}}static fromJSON(e){const t=new f((e=>e),{maximumDepth:e.maximumDepth,maximumObjectsPerNode:e.maximumObjectsPerNode});return t._objectCount=e.objectCount,t._root.initFrom(e.root.node,e.root.bounds,e.root.halfSize,e.root.depth),t}}class p{constructor(){this.bounds=(0,d.c)(),this.halfSize=0,this.initFrom(null,null,0,0)}init(e){return this.initFrom(e.node,e.bounds,e.halfSize,e.depth)}initFrom(e,t,i,r=this.depth){return this.node=null!=e?e:p.createEmptyNode(),t&&(0,d.e)(t,this.bounds),this.halfSize=i,this.depth=r,this}increaseHalfSize(e){this.halfSize*=e,this.updateBoundsRadiusFromHalfSize()}updateBoundsRadiusFromHalfSize(){this.bounds[3]=this.halfSize*M}advance(e){let t=this.node.children[e];t||(t=p.createEmptyNode(),this.node.children[e]=t),this.node=t,this.halfSize/=2,this.depth++;const i=I[e];return this.bounds[0]+=i[0]*this.halfSize,this.bounds[1]+=i[1]*this.halfSize,this.bounds[2]+=i[2]*this.halfSize,this.updateBoundsRadiusFromHalfSize(),this}advanceTo(e,t,i=!1){for(;;){if(this.isTerminalFor(e))return t&&t(this,-1),!0;if(this.isLeaf()){if(!i)return t&&t(this,-1),!1;this.node.residents=null}const r=this._childIndex(e);t&&t(this,r),this.advance(r)}}isLeaf(){return null!=this.node.residents}isTerminalFor(e){return e[3]>this.halfSize/2}_childIndex(e){const t=this.bounds;return(t[0]<e[0]?1:0)+(t[1]<e[1]?2:0)+(t[2]<e[2]?4:0)}static createEmptyNode(){return{children:[null,null,null,null,null,null,null,null],terminals:new a.A({shrink:!0}),residents:new a.A({shrink:!0})}}static acquire(){return p._pool.acquire()}static release(e){p._pool.release(e)}static clearPool(){p._pool.prune()}}function _(e,t){let i=p.acquire().init(e);const r=[i];for(;0!==r.length;){if(i=r.pop(),t(i)&&!i.isLeaf())for(let e=0;e<i.node.children.length;e++)i.node.children[e]&&r.push(p.acquire().init(i).advance(e));p.release(i)}}function m(e,t,i,r=f.DepthOrder.FRONT_TO_BACK){let s=p.acquire().init(e);const n=[s];for(function(e,t,i){if(!j.length)for(let e=0;e<8;++e)j.push({index:0,distance:0});for(let i=0;i<8;++i){const r=I[i];j.data[i].index=i,j.data[i].distance=R(e,t,r)}j.sort(((e,t)=>e.distance-t.distance));for(let e=0;e<8;++e)i[e]=j.data[e].index}(i,r,H);0!==n.length;){if(s=n.pop(),t(s)&&!s.isLeaf())for(let e=7;e>=0;--e){const t=H[e];s.node.children[t]&&n.push(p.acquire().init(s).advance(t))}p.release(s)}}function g(e,t,i){L.clear();const r=i.advanceTo(t,((e,t)=>{L.push(e.node),L.push(t)}))?i.node.terminals:i.node.residents;if(r.removeUnordered(e),0===r.length)for(let e=L.length-2;e>=0&&y(L.data[e],L.data[e+1]);e-=2);}function y(e,t){return t>=0&&(e.children[t]=null),!!v(e)&&(null===e.residents&&(e.residents=new a.A({shrink:!0})),!0)}function v(e){if(0!==e.terminals.length)return!1;if(null!==e.residents)return 0===e.residents.length;for(let t=0;t<e.children.length;t++)if(e.children[t])return!1;return!0}function x(e,t){e[0]=Math.min(e[0],t[0]-t[3]),e[1]=Math.min(e[1],t[1]-t[3]),e[2]=Math.min(e[2],t[2]-t[3])}function b(e,t){e[0]=Math.max(e[0],t[0]+t[3]),e[1]=Math.max(e[1],t[1]+t[3]),e[2]=Math.max(e[2],t[2]+t[3])}function w(e,t,i){i[0]=e[0]+t,i[1]=e[1]+t,i[2]=e[2]+t}function T(e,t,i,r){if(1===t){const t=i(e[0]);(0,d.e)(t,r)}else{D[0]=1/0,D[1]=1/0,D[2]=1/0,P[0]=-1/0,P[1]=-1/0,P[2]=-1/0;for(let r=0;r<t;r++){const t=i(e[r]);S(t[3])&&(x(D,t),b(P,t))}(0,o.m)((0,d.a)(r),D,P,.5),r[3]=Math.max(P[0]-D[0],P[1]-D[1],P[2]-D[2])/2}}function A(e,t){let i,r=1/0;for(let s=0;s<8;++s){const n=R(e,t,O[s]);n<r&&(r=n,i=O[s])}return i}function R(e,t,i){return t*(e[0]*i[0]+e[1]*i[1]+e[2]*i[2])}function S(e){return!isNaN(e)&&e!==-1/0&&e!==1/0&&e>0}p._pool=new n.A(p),(s=(r=f).DepthOrder||(r.DepthOrder={}))[s.FRONT_TO_BACK=1]="FRONT_TO_BACK",s[s.BACK_TO_FRONT=-1]="BACK_TO_FRONT";const I=[(0,l.fA)(-1,-1,-1),(0,l.fA)(1,-1,-1),(0,l.fA)(-1,1,-1),(0,l.fA)(1,1,-1),(0,l.fA)(-1,-1,1),(0,l.fA)(1,-1,1),(0,l.fA)(-1,1,1),(0,l.fA)(1,1,1)],O=[(0,l.fA)(-1,-1,-1),(0,l.fA)(-1,-1,1),(0,l.fA)(-1,1,-1),(0,l.fA)(-1,1,1),(0,l.fA)(1,-1,-1),(0,l.fA)(1,-1,1),(0,l.fA)(1,1,-1),(0,l.fA)(1,1,1)],M=Math.sqrt(3),E=[null],C=(0,d.c)(),F=(0,l.vt)(),D=(0,l.vt)(),P=(0,l.vt)(),L=new a.A,N=(0,d.c)(),z=(0,d.c)(),B=(0,d.c)(),U=(0,d.c)(),V=[{min:0,max:0},{min:0,max:0},{min:0,max:0}],j=new a.A,H=[0,0,0,0,0,0,0,0]},86305:(e,t,i)=>{i.d(t,{i3:()=>s}),i(38954);var r=i(51850);function s(e){return null!=e?.dist}i(17352),i(62258),(0,r.vt)()},87582:(e,t,i)=>{i.d(t,{h:()=>s}),i(62258);var r=i(65215);i(86305);class s extends r.R6{constructor(e,t,i,r,s){super(e,t),this.layerUid=e,this.graphicUid=t,this.triangleNr=i,this.baseBoundingSphere=r,this.numLodLevels=s}}},48852:(e,t,i)=>{i.d(t,{g:()=>c});var r=i(4576),s=(i(44208),i(53966)),n=i(34275),a=i(94656),o=i(63907);const l=()=>s.A.getLogger("esri.views.webgl.BufferObject");class c{static createIndex(e,t,i){return new c(e,o.NZ.ELEMENT_ARRAY_BUFFER,t,i)}static createVertex(e,t,i){return new c(e,o.NZ.ARRAY_BUFFER,t,i)}static createUniform(e,t,i){return new c(e,o.NZ.UNIFORM_BUFFER,t,i)}static createPixelPack(e,t=o._U.STREAM_READ,i){const r=new c(e,o.NZ.PIXEL_PACK_BUFFER,t);return i&&r.setSize(i),r}static createPixelUnpack(e,t=o._U.STREAM_DRAW,i){return new c(e,o.NZ.PIXEL_UNPACK_BUFFER,t,i)}static createTransformFeedback(e,t=o._U.STATIC_DRAW,i){const r=new c(e,o.NZ.TRANSFORM_FEEDBACK_BUFFER,t);return r.setSize(i),r}constructor(e,t,i,r){this._context=e,this.bufferType=t,this.usage=i,this._glName=null,this._size=-1,this._indexType=void 0,e.instanceCounter.increment(o.vt.BufferObject,this),this._glName=this._context.gl.createBuffer(),(0,a.Y2)(this._context.gl),r&&this.setData(r)}get glName(){return this._glName}get size(){return this._size}get indexType(){return this._indexType}get usedMemory(){if(this.bufferType===o.NZ.ELEMENT_ARRAY_BUFFER){if(this._indexType===o.pe.UNSIGNED_INT)return 4*this._size;if(this._indexType===o.pe.UNSIGNED_SHORT)return 2*this._size}return this._size}get _isVAOAware(){return this.bufferType===o.NZ.ELEMENT_ARRAY_BUFFER||this.bufferType===o.NZ.ARRAY_BUFFER}dispose(){this._context?.gl?(this._glName&&(this._context.gl.deleteBuffer(this._glName),this._glName=null),this._context.instanceCounter.decrement(o.vt.BufferObject,this),this._context=null):this._glName&&l().warn("Leaked WebGL buffer object")}setSize(e,t=null){if(this.bufferType===o.NZ.ELEMENT_ARRAY_BUFFER&&null!=t)switch(this._indexType=t,t){case o.pe.UNSIGNED_SHORT:e*=2;break;case o.pe.UNSIGNED_INT:e*=4}this._setBufferData(e)}setData(e){if(!e)return;let t=e.byteLength;this.bufferType===o.NZ.ELEMENT_ARRAY_BUFFER&&((0,n.mg)(e)?this._indexType=o.pe.UNSIGNED_BYTE:(0,n.jq)(e)?(t/=2,this._indexType=o.pe.UNSIGNED_SHORT):(0,n.XJ)(e)&&(t/=4,this._indexType=o.pe.UNSIGNED_INT)),this._setBufferData(t,e)}_setBufferData(e,t=null){this._size=e;const i=this._context.getBoundVAO();this._isVAOAware&&this._context.bindVAO(null),this._context.bindBuffer(this);const r=this._context.gl;null!=t?r.bufferData(this.bufferType,t,this.usage):r.bufferData(this.bufferType,e,this.usage),(0,a.Y2)(r),this._isVAOAware&&this._context.bindVAO(i)}setSubData(e,t,i,r){if(!e)return;const s=this._context.getBoundVAO();this._isVAOAware&&this._context.bindVAO(null),this._context.bindBuffer(this);const{gl:n}=this._context;n.bufferSubData(this.bufferType,t*e.BYTES_PER_ELEMENT,e,i,r-i),(0,a.Y2)(n),this._isVAOAware&&this._context.bindVAO(s)}getSubData(e,t=0,i,s){if(i<0||s<0)return;const n=function(e){return(0,r.Xj)(e)}(e)?e.BYTES_PER_ELEMENT:1;if(n*((i??0)+(s??0))>e.byteLength)return;t+n*(s??0)>this.usedMemory&&l().warn("Potential problem getting subdata: requested data exceeds buffer size!");const a=this._context.gl;this.bufferType===o.NZ.TRANSFORM_FEEDBACK_BUFFER?(this._context.bindBuffer(this,o.NZ.TRANSFORM_FEEDBACK_BUFFER),a.getBufferSubData(o.NZ.TRANSFORM_FEEDBACK_BUFFER,t,e,i,s),this._context.unbindBuffer(o.NZ.TRANSFORM_FEEDBACK_BUFFER)):(this._context.bindBuffer(this,o.NZ.COPY_READ_BUFFER),a.getBufferSubData(o.NZ.COPY_READ_BUFFER,t,e,i,s),this._context.unbindBuffer(o.NZ.COPY_READ_BUFFER))}async getSubDataAsync(e,t=0,i,r){await this._context.clientWaitAsync(),this.getSubData(e,t,i,r)}}},74038:(e,t,i)=>{i.d(t,{_:()=>r});class r{constructor(e,t,i,r,s,n=!1,a=0){this.name=e,this.count=t,this.type=i,this.offset=r,this.stride=s,this.normalized=n,this.divisor=a}}}}]);