@arcgis/core 4.32.0-next.20250104 → 4.32.0-next.20250106

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/assets/esri/core/workers/RemoteClient.js +1 -1
  2. package/assets/esri/core/workers/chunks/13720b1d97fb7d80e972.js +1 -0
  3. package/assets/esri/core/workers/chunks/{00c0fbe19c12691cf2c3.js → 368a36be515e60e35154.js} +1 -1
  4. package/core/MemCachePool.js +1 -1
  5. package/interfaces.d.ts +90 -0
  6. package/package.json +1 -1
  7. package/support/revision.js +1 -1
  8. package/views/2d/engine/webgl/Painter.js +1 -1
  9. package/views/2d/engine/webgl/meshing/Mesh.js +1 -1
  10. package/views/2d/engine/webgl/meshing/SimpleMesh.js +1 -1
  11. package/views/2d/engine/webgl/shaderGraph/GLSLShaderModule.js +1 -1
  12. package/views/2d/engine/webgl/shaderGraph/GraphShaderModule.js +1 -1
  13. package/views/2d/engine/webgl/shaderGraph/techniques/dotDensity/DotDensityResources.js +1 -1
  14. package/views/2d/engine/webgl/shaderGraph/techniques/dotDensity/DotDensityTechnique.js +1 -1
  15. package/views/2d/engine/webgl/shaderGraph/techniques/overlay/OverlayTechnique.js +1 -1
  16. package/views/2d/input/MapViewInputManager.js +1 -1
  17. package/views/2d/input/handlers/DragPan.js +1 -1
  18. package/views/2d/input/handlers/DragRotate.js +1 -1
  19. package/views/2d/input/handlers/MouseWheelZoom.js +1 -1
  20. package/views/3d/analysis/LineOfSight/LineOfSightRayIntersector.js +1 -1
  21. package/views/3d/input/SceneInputManager.js +1 -1
  22. package/views/3d/input/handlers/DragRotate.js +1 -1
  23. package/views/3d/input/handlers/DragZoom.js +1 -1
  24. package/views/3d/input/handlers/MouseWheelZoom.js +1 -1
  25. package/views/3d/input/handlers/PinchAndPanNavigation.js +1 -1
  26. package/views/3d/layerViewModuleImportUtils.js +1 -1
  27. package/views/3d/layers/GroupLayerView3D.js +5 -0
  28. package/views/3d/terrain/OverlayManager.js +1 -1
  29. package/views/3d/webgl-engine/lib/Intersector.js +1 -1
  30. package/views/View2D.js +1 -1
  31. package/views/input/handlers/support.js +1 -1
  32. package/views/navigation/Navigation.js +1 -1
  33. package/views/navigation/NavigationActionMap.d.ts +4 -0
  34. package/views/navigation/NavigationActionMap.js +5 -0
  35. package/widgets/ElevationProfile/ElevationProfileLineView.js +1 -1
  36. package/widgets/NavigationToggle/NavigationToggleViewModel.js +1 -1
  37. package/assets/esri/core/workers/chunks/3582836342fa78873fe4.js +0 -1
@@ -159,7 +159,7 @@ posProj = alignToPixelOrigin(posProj, viewport.zw);
159
159
  ${U}
160
160
  outputObjectAndLayerIdColor();`);break;case a.V.Highlight:t.include(p.Q,e),B.main.add(O.H`
161
161
  ${U}
162
- outputHighlight(${(0,O.If)(H,O.H`voccluded == 1.0`,O.H`false`)});`)}return t}function F(e){return e.outlineColor[3]>0&&e.outlineSize>0}function L(e,t=D){return e.textureIsSignedDistanceField?function(e,t,i){null!=t?(0,r.hZ)(i,e[0]*(t[2]-t[0])+t[0],e[1]*(t[3]-t[1])+t[1]):(0,r.hZ)(i,0,0)}(e.anchorPosition,e.distanceFieldBoundingBox,t):(0,r.C)(t,e.anchorPosition),t}const D=(0,s.vt)(),P=Object.freeze(Object.defineProperty({__proto__:null,build:E,calculateAnchorPosForRendering:L,shaderSettings:C},Symbol.toStringTag,{value:"Module"}))},4902:(e,t,i)=>{i.d(t,{A:()=>h});var r=i(90237),s=i(40608);let n=0;const o=e=>{let t=class extends e{constructor(...e){super(...e),Object.defineProperty(this,"uid",{writable:!1,configurable:!1,value:Date.now().toString(16)+"-object-"+n++})}};return t=(0,r._)([(0,s.$)("esri.core.Identifiable")],t),t},a=e=>{let t=class extends e{constructor(...e){super(...e),Object.defineProperty(this,"uid",{writable:!1,configurable:!1,value:n++})}};return t=(0,r._)([(0,s.$)("esri.core.Identifiable.NumericIdentifiable")],t),t};let l=class extends(o(class{})){};var c;l=(0,r._)([(0,s.$)("esri.core.Identifiable")],l),(c=l||(l={})).IdentifiableMixin=o,c.NumericIdentifiableMixin=a;const h=l},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 o{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 o=this._db.get(t);if(o&&(this._size-=o.size,e.size-=o.size,this._db.delete(t),o.entry!==i&&this._notifyRemove(t,o.entry,o.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 a(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 a{constructor(e,t,i){this.entry=e,this.size=t,this.lifetime=i,this.lives=i}}class l{constructor(e,t){this._storage=new o,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(){}}},21818:(e,t,i)=>{function r(e){}i.d(t,{Xb:()=>r}),i(44208)},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 o(){return r()}function a(){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=o(),u=a(),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:a,unitX:l,unitY:c,unitZ:h,zeros:o},Symbol.toStringTag,{value:"Module"}))},75503:(e,t,i)=>{i.d(t,{E:()=>O,w:()=>a});var r=i(4576),s=(i(44208),i(4718)),n=i(3694),o=i(11006);class a{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(),w.prune(),b.prune(),T.prune(),A.prune()}all(e){l(this._data,e)}search(e,t){let i=this._data;const r=this._toBBox;if(y(e,i))for(w.clear();i;){for(let s=0,n=i.children.length;s<n;s++){const n=i.children[s],o=i.leaf?r(n):n;y(e,o)&&(i.leaf?t(n):v(e,o)?l(n,t):w.push(n))}i=w.pop()}}collides(e){let t=this._data;const i=this._toBBox;if(!y(e,t))return!1;for(w.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(y(e,n)){if(t.leaf||v(e,n))return!0;w.push(s)}}t=w.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 S([]),this}remove(e){if(!e)return this;let t,i=this._data,s=null,n=0,o=!1;const a=this._toBBox(e);for(T.clear(),A.clear();i||T.length>0;){if(i||(i=T.pop(),s=T.data[T.length-1],n=A.pop()??0,o=!0),i.leaf&&(t=(0,r.qh)(i.children,e,i.children.length,i.indexHint),-1!==t))return i.children.splice(t,1),T.push(i),this._condense(T),this;o||i.leaf||!v(i,a)?s?(n++,i=s.children[n],o=!1):i=null:(T.push(i),A.push(n),n=0,s=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 S(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 o=new I([]);o.height=r;const a=Math.ceil(s/n),l=a*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,a,this._compareMinY);for(let i=s;i<=t;i+=a){const s=Math.min(i+a-1,t);o.children.push(this._build(e,i,s,r-1))}}return c(o,this._toBBox),o}_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,o=t.children.length;n<o;n++){const o=t.children[n],a=p(o),l=m(e,o)-a;l<s?(s=l,r=a<r?a:r,i=o):l===s&&a<r&&(r=a,i=o)}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 o=i.children.splice(n,i.children.length-n),a=i.leaf?new S(o):new I(o);a.height=i.height,c(i,this._toBBox),c(a,this._toBBox),t?e.data[t-1].children.push(a):this._splitRoot(i,a)}_splitRoot(e,t){this._data=new I([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 o=t;o<=i-t;o++){const t=h(e,0,o,this._toBBox),a=h(e,o,i,this._toBBox),l=g(t,a),c=p(t)+p(a);l<r?(r=l,n=o,s=c<s?c:s):l===r&&c<s&&(s=c,n=o)}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),o=h(e,i-t,i,s);let a=_(n)+_(o);for(let r=t;r<i-t;r++){const t=e.children[r];d(n,e.leaf?s(t):t),a+=_(n)}for(let r=i-t-1;r>=t;r--){const t=e.children[r];d(o,e.leaf?s(t):t),a+=_(o)}return a}_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(b.clear();i;){if(!0===i.leaf)for(const e of i.children)t((0,s.zI)(e));else b.pushArray(i.children);i=b.pop()??null}}function c(e,t){h(e,0,e.children.length,t,e)}function h(e,t,i,r,s){s||(s=new S([])),s.minX=1/0,s.minY=1/0,s.maxX=-1/0,s.maxY=-1/0;for(let n,o=t;o<i;o++)n=e.children[o],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 v(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function y(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 a=i+Math.ceil((t-i)/r/2)*r;(0,o.q)(e,a,i,t,s),n.push(i,a,a,t)}}const w=new n.A,b=new n.A,T=new n.A,A=new n.A({deallocator:void 0});class O{constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}}class M extends O{constructor(){super(...arguments),this.height=1,this.indexHint=new r.vW}}class S extends M{constructor(e){super(),this.children=e,this.leaf=!0}}class I extends M{constructor(e){super(),this.children=e,this.leaf=!1}}},95696:(e,t,i)=>{i.d(t,{A:()=>d});var r,s=i(90237),n=i(69540),o=i(25482),a=i(10107),l=(i(44208),i(53966),i(87811),i(93223)),c=i(40608);let h=r=class extends(n.A.ClonableMixin(o.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,a.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),o=i(10107),a=(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,a.e)({local:"local"},{readOnly:!0})],h.prototype,"type",void 0),(0,r._)([(0,o.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:()=>v,m7:()=>y});var r=i(4341),s=i(58083),n=i(38954),o=i(51850),a=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 v(e,t,i,r=T){const o=(0,s.lw)(_.Rc.get(),t,e);(0,s.B8)(o,o);for(let e=0;e<w;++e){const t=(0,a.t)(_.Km.get(),b[e],o);(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 y(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,w=8,b=[(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,o.vt)(),(0,o.vt)(),(0,o.vt)(),(0,o.vt)(),(0,o.vt)(),(0,o.vt)(),(0,o.vt)(),(0,o.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),o=i(86738),a=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 o.A({x:i,y:r,z:s,spatialReference:t})}function f(e,t){const{x:i,y:s,z:n,spatialReference:o}=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"}(o))?new l.A({origin:h}):new a.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)}},62025:(e,t,i)=>{i.r(t),i.d(t,{default:()=>es});var r=i(90237),s=i(65529),n=i(74887),o=i(36708),a=i(10107),l=i(44208),c=i(53966),h=(i(87811),i(40608)),d=i(16930),u=i(19730),f=i(61956),p=i(69622),_=i(4576),m=i(60999),g=i(32587);let v=class extends p.A{constructor(e){super(e),this._removing=0,this._tiles=new g.A,this._wanted=new g.A}destroy(){for(const e of this._tiles.values())e.abort();this._tiles.clear(),this._wanted.clear()}get updating(){return this._removing>0||this._loadingCount>0}get _loadingCount(){let e=0;for(const t of this._tiles.values())t.isLoaded||++e;return e}async onTileTreeChange(e){const{added:t,removed:i}=e,r=this._tiles,s=this._wanted,n=[];for(const e of i){const{id:i}=e;if(s.delete(i),t.some((t=>y(t,e)||y(e,t))))continue;const o=r.get(i);null!=o&&(o.abort(),o.isLoaded&&n.push(i),r.delete(i))}for(const e of t){const{id:t}=e;s.set(t,e),r.has(t)||r.set(t,this._loadTile(e))}await this._removeTiles(n)}async _addTile(e,t){const i=await this.addTile(e,t);return(0,n.Te)(t),i}async _removeTiles(e){this._removing++,await this.removeTiles(e),this._removing--}_loadTile(e){const t=(0,m.UT)((t=>this._addTile(e,t))),i=new x(e,t);return(0,n.QZ)(this._onTileLoad(t.promise)),i}async _onTileLoad(e){await e;const t=this._tiles,i=this._wanted,r=new Map(i),s=Array.from(this._tiles.values()).map((e=>e.data)).filter(_.Ru);for(const e of s)r.delete(e.descriptor.id);const n=Array.from(r.values()),o=new Array;for(const e of t.values()){const{descriptor:t}=e;i.has(t.id)||n.some((e=>y(e,t)||y(t,e)))||o.push(t.id)}if(0!==o.length){for(const e of o)t.delete(e);await this._removeTiles(o)}}};function y({lij:[e,t,i]},{lij:[r,s,n]}){const o=r-e;return o>=0&&t===s>>o&&i===n>>o}(0,r._)([(0,a.MZ)()],v.prototype,"updating",null),(0,r._)([(0,a.MZ)({constructOnly:!0})],v.prototype,"addTile",void 0),(0,r._)([(0,a.MZ)({constructOnly:!0})],v.prototype,"removeTiles",void 0),(0,r._)([(0,a.MZ)()],v.prototype,"_removing",void 0),(0,r._)([(0,a.MZ)()],v.prototype,"_loadingCount",null),v=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.Tile3DManager")],v);class x{constructor(e,t){this.descriptor=e,this._task=t}get id(){return this.descriptor.id}get data(){return this._task.value}get isLoaded(){return null!=this.data}abort(){this._task.abort()}}var w=i(69397),b=i(75503),T=i(27647),A=i(92722);class O{constructor(e,t){this._index=e,this._view=t}get usedMemory(){return w.qK+w.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 M(this._index,this._view,e)}}class M extends O{constructor(e,t,i){super(e,t),this._geometryOverride=i}getOptimizedGeometry(){return this._geometryOverride}getCentroid(e){return(0,T.Q)(new A.A,this._geometryOverride,e.hasZ,e.hasM)}}class S{constructor(){this._storedTiles=new Map,this._tileBounds=new Map,this.events=new s.A,this.featureAdapter=I.shared}get usedMemory(){return w.qK+w.qK*this._storedTiles.size+(w.qK+w.qK*this._tileBounds.size)}addTile(e){this._storedTiles.set(e.descriptor.id,e);const{featureCount:t}=e;if(0===t)return;const i=new b.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){const t=this._storedTiles,i=t.get(e);null!=i&&(t.delete(e),this._tileBounds.delete(i),this.events.emit("changed"))}clear(){this._storedTiles.clear(),this._tileBounds.clear(),this.events.emit("changed")}forEach(e){for(const[t,i]of this._tileBounds)i.all((i=>e(new O(i,t))))}forEachInBounds(e,t){R.minX=e[0],R.minY=e[1],R.maxX=e[2],R.maxY=e[3];for(const[e,i]of this._tileBounds)i.search(R,(i=>t(new O(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:o,maxX:a,maxY:l}=e.toJSON();t=Math.min(t,n),i=Math.min(i,o),r=Math.min(r,a),s=Math.min(s,l)}return{xmin:t,ymin:i,xmax:r,ymax:s,spatialReference:e}}}class I{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)}}I.shared=new I;const R=new b.E;var C=i(19419),E=i(80893);class F{constructor(e,t,i){this.descriptor=e,this._pageSize=t,this._pages=i,this.featureCount=i.reduce(((e,{featureCount:t})=>e+t),0);const r=w.ez+i.reduce(((e,{usedMemory:t})=>e+t),0),s=3*w.RS;this.usedMemory=w.qK+r+s}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,i=0){let r=i;if(null==t)for(const t of this._pages)r=t.readObjectIds(e,void 0,r);else this._readIndexed(t,((t,i)=>{r=t.readObjectIds(e,i,r)}));return r}readCoordinates(e,t,i=0){let r=i;if(null==t)for(const t of this._pages)r=t.readCoordinates(e,void 0,r);else this._readIndexed(t,((t,i)=>{r=t.readCoordinates(e,i,r)}));return r}_translateIndex(e){const{_pageSize:t}=this;return{pageIndex:Math.floor(e/t),featurePageIndex:e%t}}_readIndexed(e,t){const i=new Array;{let t=0,r=new Array;for(const s of e){const{pageIndex:e,featurePageIndex:n}=this._translateIndex(s);t!==e&&(0!==r.length&&i.push({pageIndex:t,indices:r}),t=e,r=[]),r.push(n)}0!==r.length&&i.push({pageIndex:t,indices:r})}const{_pages:r}=this;for(const{pageIndex:e,indices:s}of i)t(r[e],s)}}var L=i(49186),D=i(51624),P=i(51850),z=i(70328),B=i(62577),N=i(95466),H=i(53655);class j{constructor(e){this._reader=new D.A(new Uint8Array(e),new DataView(e)),this._index=function(e){for(;e.next();){if(2===e.tag())return G(e.getMessage());e.skip()}U()}(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],o=this._reader;return o.move(n),q(o)}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]=q(s)}return n}getCoordinates(e,t,i=0){const r=this._reader,{transform:s,featureIndices:n}=this._index,{scale:o,translate:a}=s;r.move(n[e]),this._readCoordinates(o,a,t,i)}getOptimizedGeometry(e){const t=(0,P.vt)();return this.getCoordinates(e,t),new A.A([],t)}getCentroid(e,{hasZ:t,hasM:i}){this.getCoordinates(e,Z);const[r,s,n]=Z,o=[r,s];return t&&(o[3]=n),i&&(o[t?4:3]=0),new A.A([],o)}getBounds(e){this.getCoordinates(e,Z);const[t,i]=Z,r=new b.E;return r.minX=t,r.minY=i,r.maxX=t,r.maxY=i,r}getBoundingBox(e){this.getCoordinates(e,Z);const[t,i,r]=Z;return(0,z.fA)(t,i,r,t,i,r)}readObjectIds(e,t=this._allFeatureIndices(),i=0){const r=this._reader,{_index:s}=this,{objectIdFieldName:n,attributeIndices:o,fieldsIndex:a}=s,l=a.get(n).index,c=a.fields.length;for(const s of t){const t=o[s*c+l];r.move(t),e[i++]=q(r)}return i}readCoordinates(e,t=this._allFeatureIndices(),i=0){const r=this._reader,{transform:s,featureIndices:n}=this._index,{scale:o,translate:a}=s;for(const s of t){const t=n[s];r.move(t),i=this._readCoordinates(o,a,e,i)}return i}*_allFeatureIndices(){const{featureCount:e}=this;for(let t=0;t<e;++t)yield t}_readCoordinates([e,t,i],[r,s,n],o,a){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(),o[a++]=r+e*l.getSInt64(),o[a++]=s+t*l.getSInt64(),o[a++]=n+i*l.getSInt64()):l.skip();break}default:l.skip()}return a}}function G(e){for(;e.next();){if(1===e.tag())return V(e.getMessage());e.skip()}U()}function V(e){let t,i,r=!1,s=!1,n=0;const o=new Array,a=new Array,l=new Array;for(;e.next();)switch(e.tag()){case 1:i=e.getString();break;case 7:0!==e.getEnum()&&U();break;case 9:r=e.getBool()??!1;break;case 12:t=(0,B.Q1)(e.processMessage(H.ae));break;case 13:{const t=e.processMessage(H.cn);t.index=n++,o.push(t);break}case 15:{a.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 N.A(o);return null!=t&&s&&null!=i&&c.has(i)||U(),{transform:t,exceededTransferLimit:r,fieldsIndex:c,objectIdFieldName:i,featureIndices:a,attributeIndices:l}}function U(){const e=new L.A("pbf-parsing-failed","Error while parsing PBF",new Error);throw console.error(e),e}function q(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 Z=(0,P.vt)();class k{constructor(e,t,i,r,s){this.spatialReference=e,this.url=i,this.objectIdField=r,this.capabilities=s;const{supportsMaxRecordCountFactor:n,maxRecordCount:o}=this.capabilities.query,a=n?4:1,l=(o??8e3)*a;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=a,c.num=this._pageSize,c.outFields=[r],this._baseQuery=c}async fetch(e,t){const{spatialReference:i}=this,r=(0,C.w1)(e.extent,i),s=this._baseQuery.clone();s.geometry=r;const o=new Array;let a=0,l=!1,c=1;for(;!l;){const e=[];for(let i=0;i<c;++i)e.push(this._fetchPage(s,a++,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&&o.push(e)}c=Math.min(c+1,4)}return new F(e,this._pageSize,o)}async _fetchPage(e,t,i){const r=e.clone();r.start=t*this._pageSize;const s=(await(0,E.kS)(this.url,r,{signal:i})).data;return(0,n.Te)(i),new j(s)}}var W=i(24151),Y=i(97146),$=i(36563),X=i(97768),J=i(91829),Q=i(37585),K=i(48163),ee=i(34727),te=i(26857);new Map,(()=>{let e="";for(let t=32;t<127;t++)e+=String.fromCharCode(t)})();const ie=[];{const e=16;for(let t=0;t<360;t+=360/e)ie.push([Math.cos(Math.PI*t/180),Math.sin(Math.PI*t/180)])}var re,se;(se=re||(re={}))[se.Left=0]="Left",se[se.Center=1]="Center",se[se.Right=2]="Right",Object.freeze({left:0,center:.5,right:1});const ne=Object.freeze({"bottom-left":(0,K.fA)(0,0),bottom:(0,K.fA)(.5,0),"bottom-right":(0,K.fA)(1,0),left:(0,K.fA)(0,.5),center:(0,K.fA)(.5,.5),right:(0,K.fA)(1,.5),"top-left":(0,K.fA)(0,1),top:(0,K.fA)(.5,1),"top-right":(0,K.fA)(1,1)});var oe=i(4431),ae=i(49255);const le={required:[]};ae.V.Depth;class ce extends p.A{precompile(e){const t=this.acquireTechniques(e);return function(e){Array.isArray(e)?e.forEach((e=>e?.release())):e?.release()}(t),null!=t}consumes(){return le}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 he extends ce{}class de extends ce{}var ue=i(89192);class fe{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)===ue.Am.LOADED)return s;this._repository.requestRender()}return null}}var pe=i(13464),_e=i(72824);class me extends _e.gy{constructor(e=(0,P.vt)()){super(),this.origin=e}get slicePlaneLocalOrigin(){return this.origin}}let ge=class extends he{constructor(e){super(e),this._hasHighlights=!1,this._glMaterials=null,this._produces=new Map,this._renderGeometries=new Map,this._vaoCache=null,this._drawParameters=new me,this._bufferWriter=null}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}initialize(){this._bufferWriter=this.material.createBufferWriter(),this.material.produces.forEach(((e,t)=>{this._produces.set(t,(t=>!!(t!==ae.V.Highlight&&t!==ae.V.ShadowHighlight||this._hasHighlights)&&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===ae.V.Highlight||i===ae.V.ShadowHighlight)&&!this._hasHighlights)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===pe.N.OCCLUDER_MATERIAL||r.slot===pe.N.TRANSPARENT_OCCLUDER_MATERIAL?r.slot:null,n=e.rctx;n.runAppleAmdDriverHelper(),n.bindTechnique(t,r,this.material.parameters);const o=t.program;for(const[e,a]of i)this._drawParameters.origin=a.localOrigin,o.bindDraw(r,this.material.parameters,this._drawParameters),t.ensureAttributeLocations(a.vao),n.bindVAO(a.vao),n.setPipelineState(t.getPipeline(!1,s)),n.drawArrays(t.primitiveType,0,a.numElements)}initializeRenderContext(e,t){this._glMaterials=new fe(this.material,e.materials),this._vaoCache=e.renderContext.rctx.getVaoCache(this.material.vertexAttributeLocations,(0,oe.U)(this._bufferWriter.vertexBufferLayout))}uninitializeRenderContext(){}addRenderGeometry(e,t,i){this.removeRenderGeometry(e);const r=this._vaoCache.newVao(t.data.byteLength);r.vertexBuffers.get("geometry").setSubData(new Uint8Array(t.data),0,0,t.data.byteLength);const s={localOrigin:i,vao:r,numElements:t.elementCount};return this._renderGeometries.set(e,s),s}removeRenderGeometry(e){const t=this._renderGeometries.get(e);null!=t&&(this._vaoCache.deleteVao(t.vao),this._renderGeometries.delete(e))}};(0,r._)([(0,a.MZ)({constructOnly:!0})],ge.prototype,"material",void 0),ge=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.rendering.DirectRenderer")],ge);var ve,ye,xe,we,be=i(69720),Te=i(46540),Ae=i(91869),Oe=i(9093),Me=i(38954),Se=i(1843),Ie=i(90629),Re=i(58083),Ce=i(87317),Ee=i(82919),Fe=i(71351),Le=i(44280);i(3694),(we=ve||(ve={}))[we.Default=0]="Default",we[we.Screenshot=1]="Screenshot",we[we.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"}(ye||(ye={}));let De=xe=class extends p.A{constructor(e){super(e),this._ray=(0,Fe.vt)(),this._viewport=(0,J.fA)(0,0,1,1),this._padding=(0,J.fA)(0,0,0,0),this._fov=55/180*Math.PI,this._nearFar=(0,K.fA)(1,1e3),this._viewDirty=!0,this._viewMatrix=(0,Oe.vt)(),this._viewProjectionDirty=!0,this._viewProjectionMatrix=(0,Oe.vt)(),this._viewInverseTransposeMatrixDirty=!0,this._viewInverseTransposeMatrix=(0,Oe.vt)(),this._frustumDirty=!0,this._frustum=(0,Ee.vt)(),this._fullViewport=(0,J.vt)(),this._pixelRatio=1,this.row=0,this.column=0,this._rows=1,this._columns=1,this._center=(0,P.vt)(),this._up=(0,P.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,Me.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,Re.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,Me.i)((0,P.vt)(),-this._viewMatrix[2],-this._viewMatrix[6],-this._viewMatrix[10])}get viewUp(){return this._ensureViewClean(),(0,Me.i)((0,P.vt)(),this._viewMatrix[1],this._viewMatrix[5],this._viewMatrix[9])}get viewRight(){return this._ensureViewClean(),(0,Me.i)((0,P.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,Ce.b)((0,J.vt)(),this._viewport,1/this.pixelRatio),t=this._get("screenViewport");return t&&(0,Ce.e)(e,t)?t:e}get screenPadding(){if(1===this.pixelRatio)return this._padding;const e=(0,Ce.b)((0,J.vt)(),this._padding,1/this.pixelRatio),t=this._get("screenPadding");return t&&(0,Ce.e)(e,t)?t:e}get x(){return this._viewport[0]}set x(e){e+=this._padding[ye.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[ye.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[ye.RIGHT]+this._padding[ye.LEFT]}set fullWidth(e){this.width=e-(this._padding[ye.RIGHT]+this._padding[ye.LEFT])}get fullHeight(){return this._viewport[3]+this._padding[ye.TOP]+this._padding[ye.BOTTOM]}set fullHeight(e){this.height=e-(this._padding[ye.TOP]+this._padding[ye.BOTTOM])}get fullViewport(){return this._fullViewport[0]=this._viewport[0]-this._padding[ye.LEFT],this._fullViewport[1]=this._viewport[1]-this._padding[ye.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,Ce.a)(this._padding,e)||(this._viewport[0]+=e[ye.LEFT]-this._padding[ye.LEFT],this._viewport[1]+=e[ye.BOTTOM]-this._padding[ye.BOTTOM],this._viewport[2]-=e[ye.RIGHT]+e[ye.LEFT]-(this._padding[ye.RIGHT]+this._padding[ye.LEFT]),this._viewport[3]-=e[ye.TOP]+e[ye.BOTTOM]-(this._padding[ye.TOP]+this._padding[ye.BOTTOM]),(0,Ce.c)(this._padding,e),this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_padding"),this.notifyChange("_viewport"))}get viewProjectionMatrix(){return this._viewProjectionDirty&&((0,Re.lw)(this._viewProjectionMatrix,this.projectionMatrix,this.viewMatrix),this._viewProjectionDirty=!1),this._viewProjectionMatrix}get projectionMatrix(){return this._projectionMatrixInternal}get inverseProjectionMatrix(){return(0,Re.B8)((0,Oe.vt)(),this.projectionMatrix)||this._get("inverseProjectionMatrix")||(0,Oe.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,Me.j)(this.center,this.eye)}get frustum(){return this._recomputeFrustum(),this._frustum}get viewInverseTransposeMatrix(){return(this._viewInverseTransposeMatrixDirty||this._viewDirty)&&((0,Re.B8)(this._viewInverseTransposeMatrix,this.viewMatrix),(0,Re.mg)(this._viewInverseTransposeMatrix,this._viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),this._viewInverseTransposeMatrix}depthNDCToWorld(e){const t=2*e-1;return 2*this.near*this.far/(this.far+this.near-t*(this.far-this.near))}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,o=-r/2+this.column*n,a=o+n,l=-i/2+this.row*s,c=l+s,h=(0,Re.$h)((0,Oe.vt)(),o*(1+2*this._padding[ye.LEFT]/e),a*(1+2*this._padding[ye.RIGHT]/e),l*(1+2*this._padding[ye.BOTTOM]/t),c*(1+2*this._padding[ye.TOP]/t),this.near,this.far),d=this._get("projectionMatrix");return d&&(0,Re.aI)(d,h)?d:h}copyFrom(e){(0,Me.c)(this._ray.origin,e.eye),this.center=e.center,this.up=e.up,(0,Ce.c)(this._viewport,e.viewport),this.notifyChange("_viewport"),(0,Ce.c)(this._padding,e.padding),this.notifyChange("_padding"),(0,Q.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,Re.C)(this._viewMatrix,e.viewMatrix),this.notifyChange("_viewMatrix")),this._viewProjectionDirty=!0,this._frustumDirty=t._frustumDirty,this._frustumDirty||((0,Ee.C)(this._frustum,e.frustum),this._frustumDirty=!1),t._viewInverseTransposeMatrixDirty?this._viewInverseTransposeMatrixDirty=!0:((0,Re.C)(this._viewInverseTransposeMatrix,e.viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),(0,Ce.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 xe).copyFrom(this)}equals(e){return(0,Me.p)(this.eye,e.eye)&&(0,Me.p)(this.center,e.center)&&(0,Me.p)(this.up,e.up)&&(0,Ce.a)(this._viewport,e.viewport)&&(0,Ce.a)(this._padding,e.padding)&&(0,Q.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,Ce.d)(e.screenPadding,this.screenPadding)>=t||(0,Ce.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,Me.a)(Ne,e.eye,e.center),(0,Me.a)(He,this.eye,this.center);const i=(0,Me.f)(Ne,He),r=(0,Me.z)(Ne),s=(0,Me.z)(He),n=5e-4;return i*i>=(1-1e-10)*r*s&&(0,Me.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,Le.gr)(this.viewForward,(0,Me.d)(Ne,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,Ie.gs)()){return e[0]=(this.padding[ye.LEFT]+this.width/2)/this.pixelRatio,e[1]=(this.padding[ye.TOP]+this.height/2)/this.pixelRatio,e}getRenderCenter(e,t=.5,i=.5){return e[0]=this.padding[ye.LEFT]+this.width*t,e[1]=this.padding[ye.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!==ze&&(0,Me.c)(ze,e),ze[3]=1,(0,Ce.t)(ze,ze,this.projectionMatrix);const i=Math.abs(ze[3]);(0,Me.h)(ze,ze,1/i);const r=this.fullViewport;t[0]=(0,ee.Cc)(0,r[0]+r[2],.5+.5*ze[0]),t[1]=(0,ee.Cc)(0,r[1]+r[3],.5+.5*ze[1]),t[2]=.5*(ze[2]+1),t[3]=i}unapplyProjection(e,t){const i=this.fullViewport;ze[0]=(e[0]/(i[0]+i[2])*2-1)*e[3],ze[1]=(e[1]/(i[1]+i[3])*2-1)*e[3],ze[2]=(2*e[2]-1)*e[3],ze[3]=e[3],null!=this.inverseProjectionMatrix&&((0,Ce.t)(ze,ze,this.inverseProjectionMatrix),t[0]=ze[0],t[1]=ze[1],t[2]=ze[2])}projectToScreen(e,t){return this.projectToRenderScreen(e,je),this.renderToScreen(je,t),t}projectToRenderScreen(e,t){if(ze[0]=e[0],ze[1]=e[1],ze[2]=e[2],ze[3]=1,(0,Ce.t)(ze,ze,this.viewProjectionMatrix),0===ze[3])return null;const i=ze;(0,Me.h)(i,i,1/Math.abs(ze[3]));const r=this.fullViewport,s=(0,ee.Cc)(0,r[0]+r[2],.5+.5*i[0]),n=(0,ee.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,je),t)}unprojectFromRenderScreen(e,t){if((0,Re.lw)(Be,this.projectionMatrix,this.viewMatrix),!(0,Re.B8)(Be,Be))return null;const i=this.fullViewport;return ze[0]=2*(e[0]-i[0])/i[2]-1,ze[1]=2*(e[1]-i[1])/i[3]-1,ze[2]=2*e[2]-1,ze[3]=1,(0,Ce.t)(ze,ze,Be),0===ze[3]?null:(t[0]=ze[0]/ze[3],t[1]=ze[1]/ze[3],t[2]=ze[2]/ze[3],t)}constrainWindowSize(e,t,i,r){const s=e*this.pixelRatio,n=t*this.pixelRatio,o=Math.max(s-i/2,0),a=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(o),Math.round(a),Math.round(h),Math.round(d)]}computeUp(e){e===W.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,Me.d)(Ne,this.center,this.eye);const e=(0,Me.l)(this.center);e<1?((0,Me.i)(this._up,0,0,1),this._markViewDirty(),this.notifyChange("_up")):Math.abs((0,Me.f)(Ne,this.center))>.9999*(0,Me.l)(Ne)*e||((0,Me.e)(this._up,Ne,this.center),(0,Me.e)(this._up,this._up,Ne),(0,Me.n)(this._up,this._up),this.notifyChange("_up"),this._markViewDirty())}_computeUpLocal(){(0,Me.o)(Ne,this.eye,this.center),Math.abs(Ne[2])<=.9999&&((0,Me.h)(Ne,Ne,Ne[2]),(0,Me.i)(this._up,-Ne[0],-Ne[1],1-Ne[2]),(0,Me.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,Me.p)(e,t)||((0,Me.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,Ee.ui)(this.viewMatrix,this.projectionMatrix,this._frustum),this._frustumDirty=!1)}_ensureViewClean(){this._viewDirty&&((0,Re.t5)(this._viewMatrix,this.eye,this.center,this.up),this.notifyChange("_viewMatrix"),this._viewDirty=!1,this._viewInverseTransposeMatrixDirty=!0)}};(0,r._)([(0,a.MZ)()],De.prototype,"_viewport",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"_padding",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"_fov",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"_nearFar",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"_viewDirty",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"_viewMatrix",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"_pixelRatio",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"pixelRatio",null),(0,r._)([(0,a.MZ)()],De.prototype,"row",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"column",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"_rows",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"rows",null),(0,r._)([(0,a.MZ)()],De.prototype,"_columns",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"columns",null),(0,r._)([(0,a.MZ)()],De.prototype,"eye",null),(0,r._)([(0,a.MZ)()],De.prototype,"center",null),(0,r._)([(0,a.MZ)()],De.prototype,"_center",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"up",null),(0,r._)([(0,a.MZ)()],De.prototype,"_up",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"viewMatrix",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"viewForward",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"viewUp",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"viewRight",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"nearFar",null),(0,r._)([(0,a.MZ)()],De.prototype,"near",null),(0,r._)([(0,a.MZ)()],De.prototype,"far",null),(0,r._)([(0,a.MZ)()],De.prototype,"viewport",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"screenViewport",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"screenPadding",null),(0,r._)([(0,a.MZ)()],De.prototype,"x",null),(0,r._)([(0,a.MZ)()],De.prototype,"y",null),(0,r._)([(0,a.MZ)()],De.prototype,"width",null),(0,r._)([(0,a.MZ)()],De.prototype,"height",null),(0,r._)([(0,a.MZ)()],De.prototype,"fullWidth",null),(0,r._)([(0,a.MZ)()],De.prototype,"fullHeight",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"_aspect",null),(0,r._)([(0,a.MZ)()],De.prototype,"padding",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"projectionMatrix",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"inverseProjectionMatrix",null),(0,r._)([(0,a.MZ)()],De.prototype,"fov",null),(0,r._)([(0,a.MZ)()],De.prototype,"fovX",null),(0,r._)([(0,a.MZ)()],De.prototype,"fovY",null),(0,r._)([(0,a.MZ)()],De.prototype,"viewInverseTransposeMatrix",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"_projectionMatrixInternal",null),(0,r._)([(0,a.MZ)()],De.prototype,"relativeElevation",void 0),De=xe=(0,r._)([(0,h.$)("esri.views.3d.webgl.RenderCamera")],De);const Pe=De,ze=(0,J.vt)(),Be=(0,Oe.vt)(),Ne=(0,P.vt)(),He=(0,P.vt)(),je=(0,Ie.r_)();var Ge=i(39341);class Ve{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}}Ve.zero=new Ve(0,0);var Ue=i(62258),qe=i(78230),Ze=i(620),ke=i(77690),We=i(29242),Ye=i(13030),$e=i(32728),Xe=i(48852),Je=i(63907);class Qe{constructor(e,t,i){this._elementSize=t,this._buffer=Xe.g.createVertex(e,Je._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 Ke{constructor(e){this.modelOriginHi=e.getField(Te.r.INSTANCEMODELORIGINHI,Ye.xs),this.modelOriginLo=e.getField(Te.r.INSTANCEMODELORIGINLO,Ye.xs),this.model=e.getField(Te.r.INSTANCEMODEL,Ye.jZ),this.modelNormal=e.getField(Te.r.INSTANCEMODELNORMAL,Ye.jZ),this.featureAttribute=e.getField(Te.r.INSTANCEFEATUREATTRIBUTE,Ye.Eq),this.color=e.getField(Te.r.INSTANCECOLOR,Ye.XP),this.objectAndLayerIdColor=e.getField(Te.r.INSTANCEOBJECTANDLAYERIDCOLOR,Ye.XP)}}class et{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,Ze.vA)(!this._updating,"already updating"),this._updating=!0,this._prevHeadIndex=this._headIndex}endUpdate(){(0,Ze.vA)(this._updating,"not updating"),this.size<_.$U*this.capacity&&this._shrink(),this._resized?(this._buffer.transferAll(),this._resized=!1):this._transferRange(this._prevHeadIndex,this._headIndex),this._updating=!1}allocateHead(){(0,Ze.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,Ze.vA)(this._headIndex!==this._tailIndex,"invalid pointers"),e}freeTail(){(0,Ze.vA)(this._updating,"not updating"),(0,Ze.vA)(this.size>0,"invalid size");const e=this._tailIndex===this._firstIndex;this._incrementTail(),e&&(this._firstIndex=this._tailIndex)}_grow(){const e=Math.max(tt,Math.floor(this._capacity*_.Ji));this._resize(e)}_shrink(){const e=Math.max(tt,Math.floor(this._capacity*_.He));this._resize(e)}_resize(e){if((0,Ze.vA)(this._updating,"not updating"),e===this._capacity)return;const t=new Qe(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,Ze.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 Ke(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 tt=64;var it;!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"}(it||(it={}));class rt{constructor(e){this.localTransform=e.getField(Te.r.LOCALTRANSFORM,Ye.E$),this.globalTransform=e.getField(Te.r.GLOBALTRANSFORM,Ye.E$),this.modelOrigin=e.getField(Te.r.MODELORIGIN,Ye.Xm),this.model=e.getField(Te.r.INSTANCEMODEL,Ye.jZ),this.modelNormal=e.getField(Te.r.INSTANCEMODELNORMAL,Ye.jZ),this.modelScaleFactors=e.getField(Te.r.MODELSCALEFACTORS,Ye.gH),this.boundingSphere=e.getField(Te.r.BOUNDINGSPHERE,Ye.Aj),this.featureAttribute=e.getField(Te.r.FEATUREATTRIBUTE,Ye.Eq),this.color=e.getField(Te.r.COLOR,Ye.XP),this.objectAndLayerIdColor=e.getField(Te.r.OBJECTANDLAYERIDCOLOR,Ye.XP),this.state=e.getField(Te.r.STATE,Ye.SL),this.lodLevel=e.getField(Te.r.LODLEVEL,Ye.SL)}}let st=class extends p.A{constructor(e,t){super(e),this.events=new s.A,this._capacity=0,this._size=0,this._next=0,this._highlightGroupMap=new Map,this._highlightGroupMapPrev=new Map,this._layout=function(e){let t=(0,Se.BP)().mat4f64(Te.r.LOCALTRANSFORM).mat4f64(Te.r.GLOBALTRANSFORM).vec4f64(Te.r.BOUNDINGSPHERE).vec3f64(Te.r.MODELORIGIN).mat3f(Te.r.INSTANCEMODEL).mat3f(Te.r.INSTANCEMODELNORMAL).vec2f(Te.r.MODELSCALEFACTORS);return e.includes(Te.r.FEATUREATTRIBUTE)&&(t=t.vec4f(Te.r.FEATUREATTRIBUTE)),e.includes(Te.r.COLOR)&&(t=t.vec4u8(Te.r.COLOR)),e.includes(Te.r.OBJECTANDLAYERIDCOLOR)&&(t=t.vec4u8(Te.r.OBJECTANDLAYERIDCOLOR)),t=t.u8(Te.r.STATE).u8(Te.r.LODLEVEL),t}(t),this._capacity=tt,this._buffer=this._layout.createBuffer(this._capacity),this._view=new rt(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,it.ALLOCATED),this._size++,this.events.emit("instances-changed"),e}removeInstance(e){const t=this._view.state;(0,Ze.vA)(e>=0&&e<this._capacity&&!!(t.get(e)&it.ALLOCATED),"invalid instance handle"),this._getStateFlag(e,it.ACTIVE)?this._setStateFlags(e,it.REMOVE):this.freeInstance(e),this.events.emit("instances-changed")}freeInstance(e){const t=this._view.state;(0,Ze.vA)(e>=0&&e<this._capacity&&!!(t.get(e)&it.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=nt,r=ot;t.localTransform.getMat(e,at),t.globalTransform.getMat(e,lt);const s=(0,Re.lw)(lt,lt,at);(0,Me.i)(i,s[12],s[13],s[14]),t.modelOrigin.setVec(e,i),(0,ke.z0)(r,s),t.model.setMat(e,r);const n=(0,$e.wp)(nt,s);n.sort(),t.modelScaleFactors.set(e,0,n[1]),t.modelScaleFactors.set(e,1,n[2]),(0,ke.B8)(r,r),(0,ke.mg)(r,r),t.modelNormal.setMat(e,r),this._setStateFlags(e,it.TRANSFORM_CHANGED),this.events.emit("instance-transform-changed",{index:e})}getModelTransform(e,t){const i=this._view;i.model.getMat(e,ot),i.modelOrigin.getVec(e,nt),t[0]=ot[0],t[1]=ot[1],t[2]=ot[2],t[3]=0,t[4]=ot[3],t[5]=ot[4],t[6]=ot[5],t[7]=0,t[8]=ot[6],t[9]=ot[7],t[10]=ot[8],t[11]=0,t[12]=nt[0],t[13]=nt[1],t[14]=nt[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(nt,this,e),t*=Math.max(nt[0],nt[1],nt[2])),t}getCombinedMedianScaleFactor(e){let t=this._view.modelScaleFactors.get(e,0);return null!=this.shaderTransformation&&(this.shaderTransformation.scaleFactor(nt,this,e),t*=function(e,t,i){return Math.max(Math.min(e,t),Math.min(Math.max(e,t),i))}(nt[0],nt[1],nt[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,it.VISIBLE,t),this.events.emit("instance-visibility-changed",{index:e}))}getVisible(e){return this._getStateFlag(e,it.VISIBLE)}setHighlight(e,t){const{_highlightGroupMap:i}=this,r=i.get(e);t?t!==r&&(i.set(e,t),this._setStateFlag(e,it.HIGHLIGHT,!0),this.events.emit("instance-highlight-changed")):r&&(i.delete(e),this._setStateFlag(e,it.HIGHLIGHT,!1),this.events.emit("instance-highlight-changed"))}get highlightGroupMap(){return this._highlightGroupMap}getHighlightStateFlag(e){return this._getStateFlag(e,it.HIGHLIGHT)}geHighlightGroupPrev(e){const t=this._highlightGroupMapPrev.get(e)??null;return this._highlightGroupMapPrev.delete(e),t}getHighlightGroup(e){const t=this.highlightGroupMap.get(e)??null;return t?this._highlightGroupMapPrev.set(e,t):this._highlightGroupMapPrev.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(tt,Math.floor(this._capacity*_.Ji)),this._buffer=this._layout.createBuffer(this._capacity).copyFrom(this._buffer),this._view=new rt(this._buffer)}_findSlot(){const e=this._view.state;let t=this._next;for(;e.get(t)&it.ALLOCATED;)t=t+1===this._capacity?0:t+1;return this._next=t+1===this._capacity?0:t+1,t}};(0,r._)([(0,a.MZ)({constructOnly:!0})],st.prototype,"shaderTransformation",void 0),(0,r._)([(0,a.MZ)()],st.prototype,"_size",void 0),(0,r._)([(0,a.MZ)({readOnly:!0})],st.prototype,"size",null),st=(0,r._)([(0,h.$)("esri.views.3d.webgl-engine.lib.lodRendering.InstanceData")],st);const nt=(0,P.vt)(),ot=(0,We.vt)(),at=(0,Oe.vt)(),lt=(0,Oe.vt)();var ct=i(97937);class ht extends qe.A{constructor(e,t){super((e=>(0,ct.w)(this._instanceData.view.boundingSphere.getVec(e,this._tmpSphere))),{maximumDepth:25}),this._instanceData=e,this._boundingSphere=t,this._tmpSphere=(0,ct.c)(),this._tmpMat4=(0,Oe.vt)()}addInstance(e){const t=this._instanceData.view.boundingSphere,i=this._instanceData.getCombinedModelTransform(e,this._tmpMat4);(0,Me.t)((0,ct.a)(this._tmpSphere),this._boundingSphere.center,i),this._tmpSphere[3]=this._boundingSphere.radius*(0,$e.hG)(i),t.setVec(e,this._tmpSphere),this.add([e])}removeInstance(e){this.remove([e])}}class dt{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}}i(65215);var ut=i(86305);i(16396);class ft{get ray(){return this._ray}get distanceInRenderSpace(){return null!=this.dist?((0,Me.h)(pt,this.ray.direction,this.dist),(0,Me.l)(pt)):null}getIntersectionPoint(e){return!!(0,ut.i3)(this)&&((0,Me.h)(pt,this.ray.direction,this.dist),(0,Me.g)(e,this.ray.origin,pt),!0)}getTransformedNormal(e){return(0,Me.c)(_t,this.normal),_t[3]=0,(0,Ce.t)(_t,_t,this.transformation),(0,Me.c)(e,_t),(0,Me.n)(e,e)}constructor(e){this.intersector=Ue.dz.OBJECT,this.normal=(0,P.vt)(),this.transformation=(0,Oe.vt)(),this._ray=(0,Fe.vt)(),this.init(e)}init(e){this.dist=null,this.target=null,this.drapedLayerOrder=null,this.drapedLayerGraphicOrder=null,this.intersector=Ue.dz.OBJECT,(0,Fe.C)(e,this._ray)}set(e,t,i,r,s,n,o){this.intersector=e,this.dist=i,(0,Me.c)(this.normal,r??P.Cb),(0,Re.C)(this.transformation,s??Oe.zK),this.target=t,this.drapedLayerOrder=n,this.drapedLayerGraphicOrder=o}copy(e){(0,Fe.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,Me.c)(this.normal,e.normal),(0,Re.C)(this.transformation,e.transformation)}}const pt=(0,P.vt)(),_t=(0,J.vt)();var mt=i(42293);const gt=()=>c.A.getLogger("esri.views.webgl.VertexArrayObject");let vt=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))*w.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,X.WD)(this._indexBuffer),this.disposeVAOOnly()):(this._glName||this._buffers.size>0)&&gt().warn("Leaked WebGL VAO")}disposeVAOOnly(){this._glName&&(this._context.gl.deleteVertexArray(this._glName),this._glName=null,this._context.instanceCounter.decrement(Je.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(Je.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||gt().error("Vertex buffer dictionary is empty!");const r=this._context.gl;this._buffers.forEach(((e,i)=>{const r=t.get(i);r?(0,mt.yu)(this._context,this._locations,e,r):gt().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 yt extends vt{}var xt=i(87582);class wt{constructor(e,t){const i=e.renderContext.rctx,r=t.geometry;let s=null;s=r instanceof be.J?function(e,t,i,r=null){const s=e.createBufferWriter(),n=s.vertexBufferLayout,o=s.elementCount(t),a=n.createBuffer(o);return s.write(null,null,t,r,a,0),{material:e,vertexBufferLayout:n,buffer:a.buffer,elementCount:o,boundingInfo:i}}(r.material,r.attributes,r.boundingInfo):r;const n=s.material;this._materials=e.materials,n.setParameters({instancedDoublePrecision:!0}),this.geometry=r,this.material=n,this.glMaterials=new fe(n,this._materials),this.vertexBufferLayout=s.vertexBufferLayout,this.vbo=Xe.g.createVertex(i,Je._U.STATIC_DRAW,s.buffer),this.vao=new yt(i,Ge.D,new Map([["geometry",(0,oe.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,o,a){if(!(this.geometry instanceof be.J))return;const l=this.geometry.id;this.material.intersect(this.geometry,e.transform.transform,e,i,r,((i,r,c,h,d)=>{if(i>=0){if(null!=t&&!t(e.rayBegin,e.rayEnd,i))return;const h=new xt.h(n.layerUid,n.graphicUid(s),l,c,o,a);if((null==e.results.min.drapedLayerOrder||d>=e.results.min.drapedLayerOrder)&&(null==e.results.min.dist||i<e.results.min.dist)&&e.results.min.set(Ue.dz.LOD,h,i,r,e.transform.transform,d),e.options.store!==Ue.oH.MIN&&(null==e.results.max.drapedLayerOrder||d>=e.results.max.drapedLayerOrder)&&(null==e.results.max.dist||i>e.results.max.dist)&&e.results.max.set(Ue.dz.LOD,h,i,r,e.transform.transform,d),e.options.store===Ue.oH.ALL){const t=function(e){return new ft(e)}(e.results.min.ray);t.set(Ue.dz.LOD,h,i,r,e.transform.transform,d),e.results.all.push(t)}}}))}}class bt{static async create(e,t,i){const r=await Promise.allSettled(t.components.map((t=>e.controller.schedule((()=>new wt(e,t)),i)))),s=r.map((e=>"fulfilled"===e.status?e.value:null)).filter(_.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 bt(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,o){this.components.forEach((a=>a.intersect(e,t,i,r,s,n,this.boundingSphere,o)))}get boundingBox(){if(null==this._boundingBox){const e=(0,z.Ie)();this.components.forEach((t=>{null!=t.boundingInfo&&((0,z.iT)(e,t.boundingInfo.bbMin),(0,z.iT)(e,t.boundingInfo.bbMax))})),this._boundingBox=e}return this._boundingBox}get boundingSphere(){if(null==this._boundingSphere){const e=this.boundingBox,t=(0,P.vt)();(0,z.gX)(e,t),this._boundingSphere={center:t,radius:.5*(0,z._F)(e)}}return this._boundingSphere}get triangleCount(){return this.components.reduce(((e,t)=>e+t.triangleCount),0)}}var Tt=i(43616),At=i(28449);const Ot=(0,P.vt)(),Mt=new Float32Array(6);var St=i(97225),It=i(63076);let Rt=class extends de{constructor(e,t){super(e),this.type=Ue.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 Pe,this._updateCyclesWithStaticCamera=-1,this._needFullCycle=!1,this.produces=new Map([[pe.N.OPAQUE_MATERIAL,e=>this._produces(e)],[pe.N.TRANSPARENT_MATERIAL,e=>!!this._hasTransparentLevels()&&this._produces(e)]]),this._instanceData=new st({shaderTransformation:e.shaderTransformation},e.optionalFields),this.addHandles(t.registerTask(It.W6.LOD_RENDERER,this))}initialize(){this._instanceBufferLayout=function(e){let t=(0,Se.BP)().vec3f(Te.r.INSTANCEMODELORIGINHI).vec3f(Te.r.INSTANCEMODELORIGINLO).mat3f(Te.r.INSTANCEMODEL).mat3f(Te.r.INSTANCEMODELNORMAL);return null!=e&&e.includes("featureAttribute")&&(t=t.vec4f(Te.r.INSTANCEFEATUREATTRIBUTE)),null!=e&&e.includes("color")&&(t=t.vec4u8(Te.r.INSTANCECOLOR)),null!=e&&e.includes("objectAndLayerIdColor")&&(t=t.vec4u8(Te.r.INSTANCEOBJECTANDLAYERIDCOLOR)),t}(this.optionalFields),this._glInstanceBufferLayout=(0,oe.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}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 et(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=>bt.create(e,i,t)))),r=i.map((e=>"fulfilled"===e.status?e.value:null)).filter(_.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 dt(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(pe.N.TRANSPARENT_MATERIAL);return t?.(ae.V.Color)}))))}hasHighlights(){return(0,Ae.Bs)(this._highlightRenderInstanceDataMap,(e=>e.some((e=>e.size>0))))}_produces(e){return e!==ae.V.Highlight&&e!==ae.V.ShadowHighlight||this.hasHighlights()}prepareRender(e){if(!te.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(It.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===ae.V.Highlight,s=!r&&t!==ae.V.ShadowHighlight,n=t!==ae.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,P.vt)();(0,Me.d)(s,r,i);const n=s=>{this._instanceData.getCombinedModelTransform(s,Lt),e.transform.set(Lt),(0,Me.t)(Dt,i,e.transform.inverse),(0,Me.t)(Pt,r,e.transform.inverse);const n=this._instanceData.getState(s),o=this._instanceData.getLodLevel(s),a=this._levels.length;(0,Ze.vA)(!!(n&it.ACTIVE),"invalid instance state"),(0,Ze.vA)(o>=0&&o<a,"invaid lod level"),this._levels[o].intersect(e,t,Dt,Pt,s,this.metadata,a)};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 ht(e,this.baseBoundingSphere);for(let i=0;i<e.capacity;++i)t.get(i)&it.ACTIVE&&this._octreeCached.addInstance(i)}return this._octreeCached}_invalidateOctree(){this._octreeCached=(0,X.pR)(this._octreeCached)}queryDepthRange(e){if(null==this._octree)return new Ve;const t=e.viewForward,i=this._octree.findClosest(t,qe.A.DepthOrder.FRONT_TO_BACK,e.frustum),r=this._octree.findClosest(t,qe.A.DepthOrder.BACK_TO_FRONT,e.frustum);if(null==i||null==r)return new Ve;const s=e.eye,n=this._instanceData.view;n.boundingSphere.getVec(i,Ft),(0,Me.d)(Ft,Ft,s);const o=(0,Me.f)(Ft,t)-Ft[3];n.boundingSphere.getVec(r,Ft),(0,Me.d)(Ft,Ft,s);const a=(0,Me.f)(Ft,t)+Ft[3];return new Ve(o,a)}_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 o=s.size;const a=s.capacity;let l=this._instanceIndex;const c=Math.ceil(a/500);for(let h=0;h<o&&!e.done;++h){l===this._cycleStartIndex&&this._startUpdateCycle();const h=n.state.get(l);let d=0;if(!(h&it.ALLOCATED)){l=l+1===a?0:l+1,o++;continue}const u=n.lodLevel.get(l);if(h&it.DEFAULT_ACTIVE&&this._defaultRenderInstanceData[u].freeTail(),h&it.HIGHLIGHT_ACTIVE){const e=s.geHighlightGroupPrev(l);if(e){const t=this._highlightRenderInstanceDataMap.get(e);if(!t)throw new L.A("Internal error in lodRenderer");t[u].freeTail()}}if(h&it.REMOVE)s.freeInstance(l);else if(h&it.VISIBLE){let e=0;if(t&&(n.modelOrigin.getVec(l,Et),e=r.selectLevel(Et,s.getCombinedMedianScaleFactor(l),i)),d=h&~(it.ACTIVE|it.TRANSFORM_CHANGED),e>=0)if(h&it.HIGHLIGHT){const t=s.getHighlightGroup(l);if(t){const i=()=>{const e=this._createRenderInstanceDataArray();return e.forEach((e=>e.beginUpdate())),e},r=(0,Ae.tE)(this._highlightRenderInstanceDataMap,t,i);if(e>=r.length)throw new L.A(`LodRenderer internal error - missing lodLevel ${e}`);Ct(r[e],n,l)}d|=it.HIGHLIGHT_ACTIVE}else Ct(this._defaultRenderInstanceData[e],n,l),d|=it.DEFAULT_ACTIVE;n.state.set(l,d),n.lodLevel.set(l,e)}else d=h&~(it.ACTIVE|it.TRANSFORM_CHANGED),n.state.set(l,d);if(null!=this._octreeCached){const e=!!(h&it.ACTIVE),t=!!(d&it.ACTIVE);!e&&t?this._octreeCached.addInstance(l):e&&!t?this._octreeCached.removeInstance(l):e&&t&&h&it.TRANSFORM_CHANGED&&(this._octreeCached.removeInstance(l),this._octreeCached.addInstance(l))}l=l+1===a?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:o}=e;o.runAppleAmdDriverHelper();const a=o.bindTechnique(t,n,r.material.parameters,Bt);o.bindVAO(r.vao),t.ensureAttributeLocations(r.vao),te.b.LOD_INSTANCE_RENDERER_COLORIZE_BY_LEVEL&&e.output===ae.V.Color&&(a.setUniform4fv("externalColor",zt[Math.min(s,zt.length-1)]),a.setUniform1i("colorMixMode",Tt.Um.replace));const l=i.capacity,c=i.headIndex,h=i.tailIndex,d=i.firstIndex,u=this._glInstanceBufferLayout,f=(e,s)=>{(0,mt.yu)(o,Ge.D,i.buffer,u,e),o.drawArraysInstanced(t.primitiveType,0,r.vertexCount,s-e),(0,mt.Hi)(o,Ge.D,i.buffer,u)};r.material.parameters.transparent&&null!=d?c>h?((0,Ze.vA)(d>=h&&d<=c,"invalid firstIndex"),f(d,c),f(h,d)):c<h&&(d<=c?((0,Ze.vA)(d>=0&&d<=c,"invalid firstIndex"),f(d,c),f(h,l),f(0,d)):((0,Ze.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)),o.bindVAO(null)}};function Ct(e,t,i){const r=e.allocateHead();!function(e,t,i,r){(function(e,t,i,r,s){Ot[0]=e.get(t,0),Ot[1]=e.get(t,1),Ot[2]=e.get(t,2),(0,At.jS)(Ot,Mt,3),i.set(s,0,Mt[0]),r.set(s,0,Mt[1]),i.set(s,1,Mt[2]),r.set(s,1,Mt[3]),i.set(s,2,Mt[4]),r.set(s,2,Mt[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,a.MZ)({constructOnly:!0})],Rt.prototype,"symbol",void 0),(0,r._)([(0,a.MZ)({constructOnly:!0})],Rt.prototype,"optionalFields",void 0),(0,r._)([(0,a.MZ)({constructOnly:!0})],Rt.prototype,"metadata",void 0),(0,r._)([(0,a.MZ)({constructOnly:!0})],Rt.prototype,"shaderTransformation",void 0),(0,r._)([(0,a.MZ)()],Rt.prototype,"_instanceData",void 0),(0,r._)([(0,a.MZ)()],Rt.prototype,"_cycleStartIndex",void 0),(0,r._)([(0,a.MZ)({readOnly:!0})],Rt.prototype,"_enableLevelSelection",null),(0,r._)([(0,a.MZ)()],Rt.prototype,"_updateCyclesWithStaticCamera",void 0),(0,r._)([(0,a.MZ)({readOnly:!0})],Rt.prototype,"running",null),Rt=(0,r._)([(0,h.$)("esri.views.3d.webgl-engine.lib.lodRendering.LodRenderer")],Rt);const Et=(0,P.vt)(),Ft=(0,J.vt)(),Lt=(0,Oe.vt)(),Dt=(0,P.vt)(),Pt=(0,P.vt)(),zt=[(0,J.fA)(1,0,1,1),(0,J.fA)(0,0,1,1),(0,J.fA)(0,1,0,1),(0,J.fA)(1,1,0,1),(0,J.fA)(1,0,0,1)],Bt=new St.V;class Nt{constructor(e,t=null){this.geometry=e,this.textures=t}get material(){return this.geometry.material}get numTriangles(){return this.geometry instanceof be.J?this.geometry.indexCount/3:this.geometry.elementCount/3}}class Ht{constructor(e,t,i){this.components=e,this.minScreenSpaceRadius=t,this.pivotOffset=i;const r=(0,_.Am)(this.components.map((e=>e.geometry)));this.numVertices=r.reduce(((e,t)=>e+function(e){return e instanceof be.J?e.attributes.get(Te.r.POSITION).indices.length:e.elementCount}(t)),0)}}class jt{constructor(e){this.levels=e,this.levels.sort(((e,t)=>e.minScreenSpaceRadius===t.minScreenSpaceRadius?e.numVertices-t.numVertices:e.minScreenSpaceRadius-t.minScreenSpaceRadius))}}let Gt=class{constructor(e){this._optionalFields=new Array,this._featureIdToInstanceIndex=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;let i=0;if(t){const e=[],r=[];t.levels.forEach((t=>t.components.forEach((t=>{t.geometry instanceof be.J||e.push(t.geometry),t.textures&&r.push(...t.textures)}))));const s=(0,_.Am)(e).reduce(((e,t)=>e+t.buffer.byteLength+w.i5),0);i=(0,_.Am)(r).reduce(((e,t)=>e+t.memoryEstimate),0)+s}return i+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(Te.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=i.createBufferWriter(),s={material:i,vertexBufferLayout:r.vertexBufferLayout,buffer:t.renderGeometryBuffer.data,elementCount:t.renderGeometryBuffer.elementCount,boundingInfo:t.boundingInfo};return new Nt(s)}));return new Ht(i,t.minScreenSpaceRadius)}));return new jt(i)}((e=>t(e)),e),s=this.view._stage,o=function(e){const t=[];return e.levels.forEach((e=>e.components.forEach((e=>t.push(e.geometry.material))))),(0,_.Am)(t)}(r);s.addMany(o),this._addDisposeResource((()=>s.removeMany(o)));const a=function(e){const t=new Array;return e.levels.forEach((e=>e.components.forEach((e=>{null!=e.textures&&t.push(...e.textures)})))),(0,_.Am)(t)}(r);s.addMany(a),this._addDisposeResource((()=>{a.forEach((e=>e.unload())),s.removeMany(a)})),await Promise.all(a.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:o,textures:a}}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 o=n.instanceData,a=i.length;for(let e=0;e<a;++e){const t=i[e],n=o.addInstance(),a=o.view,l=16*e;a.localTransform.copyFromTypedBuffer(n,r,l),a.globalTransform.copyFromTypedBuffer(n,s,l),o.updateModelTransform(n),o.setVisible(n,!0),this._featureIdToInstanceIndex.set(t,n)}}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))}}_addDisposeResource(e){this._disposeResourceHandles.push(e)}async _createLodRenderer(e,t){const i=this.view._stage,r={layerUid:this.layerUid,graphicUid:e=>1,notifyGraphicGeometryChanged:e=>1,notifyGraphicVisibilityChanged:e=>1},s=new Rt({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}};Gt=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.rendering.LodRenderer")],Gt);var Vt=i(40804),Ut=i(48833);function qt(e,t,i){return i&&(t/=Math.SQRT2),Yt(e,((r,s)=>{let n=r-.5*e+.25,o=.5*e-s-.75;if(i){const e=(n+o)/Math.SQRT2;o=(o-n)/Math.SQRT2,n=e}return Math.max(Math.abs(n),Math.abs(o))-.5*t}))}function Zt(e,t,i,r=0){t-=r,i&&(t*=Math.SQRT2);const s=.5*t;return Yt(e,((t,n)=>{let o,a=t-.5*e,l=.5*e-n-1;if(i){const e=(a+l)/Math.SQRT2;l=(l-a)/Math.SQRT2,a=e}return a=Math.abs(a),l=Math.abs(l),o=a>l?a>s?Math.sqrt((a-s)*(a-s)+l*l):l:l>s?Math.sqrt(a*a+(l-s)*(l-s)):a,o-=r/2,o}))}function kt(e,t,i){return(r,s)=>{const n=r-e,o=s-t;return Math.sqrt(n*n+o*o)-i}}function Wt(e,t,i){const r=Math.sqrt(t*t+i*i);return(s,n)=>{const o=Math.abs(s-e)-i,a=n-e+t/2+.75,l=(t*o+i*a)/r,c=-a;return Math.max(l,c)}}function Yt(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 o=t(s,r);o=o/e+.5,(0,Vt.U)(o,i,4*n)}return i}var $t=i(11787);var Xt=i(78662),Jt=i(40268),Qt=i(35093),Kt=i(16943),ei=i(25634),ti=i(11725),ii=i(77194);class ri{constructor(){this.scale=0,this.factor=0,this.minScaleFactor=0}}var si=i(59907),ni=i(13259),oi=i(97220),ai=i(98958),li=i(59643),ci=i(33524),hi=i(90644);class di extends ai.w{constructor(e,t,r){super(e,t,new oi.$(ni.H,(()=>i.e(8241).then(i.bind(i,48241)))),r),this.primitiveType=t.occlusionPass?Je.WR.POINTS:Je.WR.TRIANGLES}initializePipeline(e){const{oitPass:t,hasPolygonOffset:i,draped:r,output:s,depthTestEnabled:n,occlusionPass:o}=e,a=t===li.Y.NONE,l=t===li.Y.ColorAlpha,c=s===ae.V.Highlight,h=n&&!r&&!l&&!o&&!c;return(0,hi.Ey)({blending:(0,ae.RN)(s)?a?hi.Os:(0,ci.ez)(t):null,depthTest:n&&!r?{func:Je.MT.LEQUAL}:null,depthWrite:h?hi.Uy:null,drawBuffers:(0,ci.m6)(t,s),colorWrite:hi.kn,polygonOffset:i?ui:null})}}const ui={factor:0,units:-4};var fi=i(53466),pi=i(22911),_i=i(51976),mi=i(35256);class gi extends mi.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=fi.I.None,this.emissionSource=pi.ZX.None,this.discardInvisibleFragments=!0,this.hasVvInstancing=!1}}(0,r._)([(0,_i.W)()],gi.prototype,"screenCenterOffsetUnitsEnabled",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"occlusionTestEnabled",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"signedDistanceFieldEnabled",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"sampleSignedDistanceFieldTexelCenter",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"vvSize",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"vvColor",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"hasVerticalOffset",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"hasScreenSizePerspective",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"hasRotation",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"debugDrawLabelBorder",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"hasPolygonOffset",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"depthTestEnabled",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"pixelSnappingEnabled",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"draped",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"terrainDepthTest",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"cullAboveTerrain",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"occlusionPass",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"occludedFragmentFade",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"objectAndLayerIdColorInstanced",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"horizonCullingEnabled",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"isFocused",void 0);class vi extends ti.im{constructor(e,t){super(e,Gi),this.produces=new Map([[pe.N.HUD_MATERIAL,e=>(0,ae.Mb)(e)&&!this.parameters.drawAsLabel],[pe.N.LABEL_MATERIAL,e=>(0,ae.Mb)(e)&&this.parameters.drawAsLabel],[pe.N.OCCLUSION_PIXELS,()=>this.parameters.occlusionTest],[pe.N.DRAPED_MATERIAL,e=>this.parameters.draped&&(0,ae.Mb)(e)]]),this._visible=!0,this._configuration=new gi(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===pe.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===pe.N.OCCLUSION_PIXELS,(0,ae.RN)(e)&&(this._configuration.debugDrawLabelBorder=!!te.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:o,hud:a,excludeLabels:l},point:c,camera:h}=i,{parameters:d}=this;if(!o||!a||l&&d.isLabel||!e.visible||!c)return;const{scaleX:u,scaleY:f}=this._getScreenScale(e,h.pixelRatio);(0,ke.z0)(Ci,t),e.attributes.has(Te.r.FEATUREATTRIBUTE)&&function(e){const t=e[0],i=e[1],r=e[2],s=e[3],n=e[4],o=e[5],a=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+o*o),u=1/Math.sqrt(a*a+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]=o*d,e[6]=a*u,e[7]=l*u,e[8]=c*u}(Ci);const p=e.attributes.get(Te.r.POSITION),_=e.attributes.get(Te.r.SIZE),m=e.attributes.get(Te.r.NORMAL),g=e.attributes.get(Te.r.ROTATION),v=e.attributes.get(Te.r.CENTEROFFSETANDDISTANCE);(0,Ze.vA)(p.size>=3);const y=(0,ni.c)(d),x="screen"===this.parameters.centerOffsetUnits;for(let e=0;e<p.data.length/p.size;e++){const r=e*p.size;(0,Me.i)(Ti,p.data[r],p.data[r+1],p.data[r+2]),(0,Me.t)(Ti,Ti,t),(0,Me.t)(Ti,Ti,h.viewMatrix);const s=e*v.size;if((0,Me.i)(Li,v.data[s],v.data[s+1],v.data[s+2]),!x&&(Ti[0]+=Li[0],Ti[1]+=Li[1],0!==Li[2])){const e=Li[2];(0,Me.n)(Li,Ti),(0,Me.d)(Ti,Ti,(0,Me.h)(Li,Li,e))}const o=e*m.size;if((0,Me.i)(Ai,m.data[o],m.data[o+1],m.data[o+2]),xi(Ai,Ci,h,zi),this._applyVerticalOffsetTransformationView(Ti,zi,h,bi),h.applyProjection(Ti,Oi),Oi[0]>-1){x&&(Li[0]||Li[1])&&(Oi[0]+=Li[0]*h.pixelRatio,0!==Li[1]&&(Oi[1]+=(0,ii.m0)(Li[1],bi.factorAlignment)*h.pixelRatio),h.unapplyProjection(Oi,Ti)),Oi[0]+=this.parameters.screenOffset[0]*h.pixelRatio,Oi[1]+=this.parameters.screenOffset[1]*h.pixelRatio,Oi[0]=Math.floor(Oi[0]),Oi[1]=Math.floor(Oi[1]);const t=e*_.size;Hi[0]=_.data[t],Hi[1]=_.data[t+1],(0,ii.MD)(Hi,bi.factor,Hi);const r=Bi*h.pixelRatio;let s=0;d.textureIsSignedDistanceField&&(s=Math.min(d.outlineSize,.5*Hi[0])*h.pixelRatio/2),Hi[0]*=u,Hi[1]*=f;const o=e*g.size,a=d.rotation+g.data[o];if(wi(c,Oi[0],Oi[1],Hi,r,s,a,d,y)){const e=i.ray;if((0,Me.t)(Si,Ti,(0,Re.B8)(Fi,h.viewMatrix)),Oi[0]=c[0],Oi[1]=c[1],h.unprojectFromRenderScreen(Oi,Ti)){const t=(0,P.vt)();(0,Me.c)(t,e.direction);const i=1/(0,Me.l)(t);(0,Me.h)(t,t,i),n((0,Me.j)(e.origin,Ti)*i,t,-1,!0,1,Si)}}}}}intersectDraped(e,t,i,r,s,n){const o=e.attributes.get(Te.r.POSITION),a=e.attributes.get(Te.r.SIZE),l=e.attributes.get(Te.r.ROTATION),c=this.parameters,h=(0,ni.c)(c),{scaleX:d,scaleY:u}=this._getScreenScale(e,e.screenToWorldRatio),f=Ni*e.screenToWorldRatio;for(let t=0;t<o.data.length/o.size;t++){const i=t*o.size,p=o.data[i],_=o.data[i+1],m=t*a.size;Hi[0]=a.data[m],Hi[1]=a.data[m+1];let g=0;c.textureIsSignedDistanceField&&(g=Math.min(c.outlineSize,.5*Hi[0])*e.screenToWorldRatio/2),Hi[0]*=d,Hi[1]*=u;const v=t*l.size,y=c.rotation+l.data[v];wi(r,p,_,Hi,f,g,y,c,h)&&s(n.dist,n.normal,-1,!1)}}createBufferWriter(){return new qi}_updateScaleInfo(e,t,i){const r=this.parameters;null!=r.screenSizePerspective?(0,ii.cJ)(i,t,r.screenSizePerspective,e.factor):(e.factor.scale=1,e.factor.factor=0,e.factor.minScaleFactor=0),null!=r.screenSizePerspectiveAlignment?(0,ii.cJ)(i,t,r.screenSizePerspectiveAlignment,e.factorAlignment):(e.factorAlignment.factor=e.factor.factor,e.factorAlignment.scale=e.factor.scale,e.factorAlignment.minScaleFactor=e.factor.minScaleFactor)}applyShaderOffsetsView(e,t,i,r,s,n,o){const a=xi(t,i,s,zi);return this._applyVerticalGroundOffsetView(e,a,s,o),this._applyVerticalOffsetTransformationView(o,a,s,n),this._applyPolygonOffsetView(o,a,r[3],s,o),this._applyCenterOffsetView(o,r,o),o}applyShaderOffsetsNDC(e,t,i,r,s){return this._applyCenterOffsetNDC(e,t,i,r),null!=s&&(0,Me.c)(s,r),this._applyPolygonOffsetNDC(r,t,i,r),r}_applyPolygonOffsetView(e,t,i,r,s){const n=r.aboveGround?1:-1;let o=Math.sign(i);0===o&&(o=n);const a=n*o;if(this.parameters.shaderPolygonOffset<=0)return(0,Me.c)(s,e);const l=(0,ee.qE)(Math.abs(t.cosAngle),.01,1),c=1-Math.sqrt(1-l*l)/l/r.viewport[2];return(0,Me.h)(s,e,a>0?c:1/c),s}_applyVerticalGroundOffsetView(e,t,i,r){const s=(0,Me.l)(e),n=i.aboveGround?1:-1,o=i.computeRenderPixelSizeAtDist(s)*Jt.R,a=(0,Me.h)(Ti,t.normal,n*o);return(0,Me.g)(r,e,a),r}_applyVerticalOffsetTransformationView(e,t,i,r){const s=this.parameters;if(!s.verticalOffset?.screenLength){if(s.screenSizePerspective||s.screenSizePerspectiveAlignment){const i=(0,Me.l)(e);this._updateScaleInfo(r,i,t.cosAngle)}else r.factor.scale=1,r.factorAlignment.scale=1;return e}const n=(0,Me.l)(e),o=s.screenSizePerspectiveAlignment??s.screenSizePerspective,a=(0,Tt.kE)(i,n,s.verticalOffset,t.cosAngle,o);return this._updateScaleInfo(r,n,t.cosAngle),(0,Me.h)(t.normal,t.normal,a),(0,Me.g)(e,e,t.normal)}_applyCenterOffsetView(e,t,i){const r="screen"!==this.parameters.centerOffsetUnits;return i!==e&&(0,Me.c)(i,e),r&&(i[0]+=t[0],i[1]+=t[1],t[2]&&((0,Me.n)(Ai,i),(0,Me.g)(i,i,(0,Me.h)(Ai,Ai,t[2])))),i}_applyCenterOffsetNDC(e,t,i,r){const s="screen"!==this.parameters.centerOffsetUnits;return r!==e&&(0,Me.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,Me.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]>=Qt.Q||t>=Qt.Q&&i[3]>=Qt.Q;return this._visible&&r}createGLMaterial(e){return new yi(e)}calculateRelativeScreenBounds(e,t,i=(0,C.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}_getScreenScale(e,t){const i=e.attributes.get(Te.r.FEATUREATTRIBUTE);if(null==i)return{scaleX:t,scaleY:t};const r=(0,J.ci)(i.data,Pi);return(0,Xt.VC)(Di,this.parameters,r),{scaleX:Di[0]*t,scaleY:Di[1]*t}}}class yi extends ei.m8{constructor(e){super({...e,...e.material.parameters})}beginSlot(e){return this.updateTexture(this._material.parameters.textureId),this._material.setParameters(this.textureBindParameters),this.acquireTechnique(di,e)}}function xi(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,ke.z0)(Ei,t)),(0,Me.q)(r.normal,e,t),(0,Me.t)(r.normal,r.normal,i.viewInverseTransposeMatrix),r.cosAngle=(0,Me.f)(Mi,ji),r}function wi(e,t,i,r,s,n,o,a,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=a.distanceFieldBoundingBox;return a.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,Q.hZ)(Ri,t,i),(0,Q.e$)(Ii,e,Ri,(0,ee.kU)(o)),Ii[0]>c&&Ii[0]<h&&Ii[1]>d&&Ii[1]<u}const bi=new class{constructor(){this.factor=new ri,this.factorAlignment=new ri}},Ti=(0,P.vt)(),Ai=(0,P.vt)(),Oi=(0,J.vt)(),Mi=(0,P.vt)(),Si=(0,P.vt)(),Ii=(0,K.vt)(),Ri=(0,K.vt)(),Ci=(0,We.vt)(),Ei=(0,We.vt)(),Fi=(0,Oe.vt)(),Li=(0,P.vt)(),Di=(0,P.vt)(),Pi=(0,J.vt)(),zi={normal:Mi,cosAngle:0},Bi=1,Ni=2,Hi=[0,0],ji=(0,P.fA)(0,0,1);class Gi extends ei.NV{constructor(){super(...arguments),this.renderOccluded=ti.m$.Occlude,this.isDecoration=!1,this.color=(0,J.CN)(1,1,1,1),this.polygonOffset=!1,this.anchorPosition=(0,K.fA)(.5,.5),this.screenOffset=[0,0],this.shaderPolygonOffset=1e-5,this.textureIsSignedDistanceField=!1,this.sampleSignedDistanceFieldTexelCenter=!1,this.outlineColor=(0,J.CN)(1,1,1,1),this.outlineSize=0,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 Vi=(0,Se.BP)().vec3f(Te.r.POSITION).vec3f(Te.r.NORMAL).vec2f(Te.r.UV0).vec4u8(Te.r.COLOR).vec2f(Te.r.SIZE).f32(Te.r.ROTATION).vec4f(Te.r.CENTEROFFSETANDDISTANCE).vec4f(Te.r.FEATUREATTRIBUTE),Ui=Vi.clone().vec4u8(Te.r.OBJECTANDLAYERIDCOLOR);class qi{constructor(){this.vertexBufferLayout=(0,Kt.E)()?Ui:Vi}elementCount(e){return 6*e.get(Te.r.POSITION).indices.length}write(e,t,i,r,s,n){(0,si.Hk)(i.get(Te.r.POSITION),e,s.position,n,6),(0,si.p1)(i.get(Te.r.NORMAL),t,s.normal,n,6);const o=i.get(Te.r.UV0)?.data;let a=0,l=0,c=1,h=1;o&&o.length>=4&&(a=o[0],l=o[1],c=o[2],h=o[3]),c=Math.min(1.99999,c+1),h=Math.min(1.99999,h+1);let d=i.get(Te.r.POSITION).indices.length,u=n;const f=s.uv0;for(let e=0;e<d;++e)f.set(u,0,a),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,a),f.set(u,1,h),u++,f.set(u,0,a),f.set(u,1,l),u++;(0,si.tb)(i.get(Te.r.COLOR),4,s.color,n,6);const{data:p,indices:_}=i.get(Te.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,si.uO)(i.get(Te.r.ROTATION),s.rotation,n,6),i.get(Te.r.CENTEROFFSETANDDISTANCE)?(0,si.Ut)(i.get(Te.r.CENTEROFFSETANDDISTANCE),s.centerOffsetAndDistance,n,6):(0,si.Pq)(s.centerOffsetAndDistance,n,6*d),i.get(Te.r.FEATUREATTRIBUTE)?(0,si.Ut)(i.get(Te.r.FEATUREATTRIBUTE),s.featureAttribute,n,6):(0,si.Pq)(s.featureAttribute,n,6*d),null!=r){const e=i.get(Te.r.POSITION)?.indices;if(e){const t=e.length,i=s.getField(Te.r.OBJECTANDLAYERIDCOLOR,Ye.XP);(0,si.tH)(r,i,t,n,6)}}}}var Zi=i(74810);let ki=class extends p.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===W.RT.Global;let n=null;switch(e.type){case"default":n=function(e,t,i){const r={usePBR:t.physicalBasedRenderingEnabled,isSchematic:!0,mrrFactors:Zi.Bt,ambient:P.Un,diffuse:P.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?ue.s2.None:ue.s2.Back}(r),t.screenSizePerspectiveEnabled&&(r.screenSizePerspective=e.screenSizePerspectiveSettings),r.externalColor=J.Un,r.isInstanced=!0,new $t.$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]=Wi(r,s);this.addHandles([(0,$.hA)((()=>(0,X.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 ge({material:i});this._directRenderers.set(t,s),r._stage.addRenderPlugin(s),r._stage.renderView.renderer.updateHasFlags()}async _addDirectRendererGeometry(e){const t=e.renderGeometryId,i=e.materialId;await this._removeDirectRendererGeometry({renderGeometryId:t});const r=this._directRenderers.get(i);if(null==r)return void console.error("no renderer assigned to provided material");const s=r.addRenderGeometry(t,e.renderGeometryBuffer,e.localOrigin);this._renderGeometries.set(t,{renderGeometry:s,materialId:i}),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 Gt({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 Wi(e,t){const i={anchorPosition:ne.center,occlusionTest:!0,hasSlicePlane:!1,color:[1,0,0,1],outlineColor:[0,0,0,1],outlineSize:1,distanceFieldBoundingBox:Yi};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 Yt(e,kt(i,i,t/2))}(t,i);case"square":return function(e,t){return qt(e,t,!1)}(t,i);case"cross":return function(e,t,i=0){return Zt(e,t,!1,i)}(t,i,r);case"x":return function(e,t,i=0){return Zt(e,t,!0,i)}(t,i,r);case"kite":return function(e,t){return qt(e,t,!0)}(t,i);case"triangle":return function(e,t){return Yt(e,Wt(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,o=kt(s,(e-t)/2-n,Math.sqrt(n*n+r*r)),a=Wt(s,i,r);return Yt(e,((e,t)=>Math.max(a(e,t),-o(e,t))))}(t,i)}}(e,t,i,r);return new Ut.g(s,{mipmap:!1,wrap:{s:Je.pF.CLAMP_TO_EDGE,t:Je.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 vi(i,t),null]}(0,r._)([(0,a.MZ)({readOnly:!0})],ki.prototype,"totalFeatures",void 0),ki=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.rendering.FeaturePipelineRenderManager")],ki);const Yi=[.25,.25,.75,.75];class $i{constructor(e){this._bufferWriter=null,this._bufferWriter=e.createBufferWriter()}createBuffer(e,t){const i=this._bufferWriter;let r=null;if(e.transformation&&t)(0,Re.C)(Xi,e.transformation),Xi[12]-=t[0],Xi[13]-=t[1],Xi[14]-=t[2],r=Xi;else{if(t)throw new Error("not implemented");e.transformation&&(r=e.transformation)}let s=null;r&&((0,Re.B8)(Ji,Xi),(0,Re.mg)(Ji,Ji),s=Ji);const n=e.attributes,o=i.elementCount(n),a=i.vertexBufferLayout.stride/4;o>Math.floor(Qi/a)&&console.warn("geometry with very large number of elements encountered");const l=i.vertexBufferLayout.createBuffer(o);return i.write(r,s,n,e.objectAndLayerIdColor,l,0),{data:l.buffer,elementCount:o}}}const Xi=(0,Oe.vt)(),Ji=(0,Oe.vt)(),Qi=4194304;var Ki=i(29920);class er{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 $t.$U({},{spherical:this._context.globalViewingMode,doublePrecisionRequiresObfuscation:!0}),r=new $i(e);t.registerRenderGeometryBufferWriter(i,r)}break;case"hud":{const e=Wi(null,this._context.globalViewingMode)[0],r=new $i(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),this._commands.push({id:"add-direct-renderer-geometry",renderGeometryId:e,materialId:r,renderGeometryBuffer:n,localOrigin:i})}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(Te.r.POSITION);if(!t||0===t.indices.length)throw new Error("positions attribute expected");const i=(0,Y.tM)(t.indices.length/3),r=new Ki.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)}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 tr{constructor(e){this._idCounter=0,this._bufferWriters=new Map,this._dispatchRenderCommandsCallback=async()=>{},this.globalViewingMode=!1,this.globalViewingMode=e.viewingMode===W.RT.Global,this._dispatchRenderCommandsCallback=e.dispatchRenderCommandsCallback}generateId(e=""){return`${e}${this._idCounter++}`}createEncoder(){return new er(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 ir{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 w.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 ir(i,e);const r=new Uint32Array(e.length);for(let i=0;i<r.length;++i)r[i]=t[e[i]];return new ir(i,r)}}var rr=i(9762),sr=i(27993);async function nr(e,t){const{featureCount:i}=e;if(0===i)return new Uint32Array;const r=new Uint32Array(i);return e.readObjectIds(r),r}async function or(e,t){const{featureCount:i}=e;if(0===i)return new Float64Array;const r=new Float64Array(3*i);return e.readCoordinates(r),r}var ar=i(48353),lr=i(8887),cr=i(83047);function hr(e){const t=new Map;for(const[i,r]of e)t.set(i,{...r,indices:(0,Y.Dg)(r.indices)});return t}i(57251),i(12359),i(95108),i(27615),i(59456),i(52106),i(4718),i(34275),i(65864);var dr,ur,fr=i(57917),pr=i(72385),_r=(i(4197),i(11868)),mr=i(27921),gr=i(46610);(ur=dr||(dr={})).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)},ur.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},ur.scale=function(e,t,i){e[t]*=i,e[t+1]*=i,e[t+2]*=i},ur.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]},ur.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(96672),i(87170);const vr=new Array(36);for(let e=0;e<6;e++)for(let t=0;t<6;t++)vr[6*e+t]=e;const yr=new Array(36);for(let e=0;e<6;e++)yr[6*e]=0,yr[6*e+1]=1,yr[6*e+2]=2,yr[6*e+3]=2,yr[6*e+4]=3,yr[6*e+5]=0;const xr=(0,pr.fA)(-.5,0,-.5),wr=(0,pr.fA)(.5,0,-.5),br=(0,pr.fA)(0,0,.5),Tr=(0,pr.fA)(0,.5,0),Ar=(0,pr.vt)(),Or=(0,pr.vt)(),Mr=(0,pr.vt)(),Sr=(0,pr.vt)(),Ir=(0,pr.vt)();function Rr(e,t){switch(e){case"cone":return((e,i,r=!1)=>({levels:e.map((e=>{const s=hr(i(e.tesselation));return r&&function(e){const t=e,i=t.get(Te.r.POSITION).data,r=t.get(Te.r.NORMAL).data;if(r){const t=Cr(e,Te.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=Cr(e,Te.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}}))}))(Er,(e=>function(e,t,i,r,s=!0,n=!0){let o=0;const a=t,l=e;let c=(0,pr.fA)(0,o,0),h=(0,pr.fA)(0,o+l,0),d=(0,pr.fA)(0,-1,0),u=(0,pr.fA)(0,1,0);r&&(o=l,h=(0,pr.fA)(0,0,0),c=(0,pr.fA)(0,o,0),d=(0,pr.fA)(0,1,0),u=(0,pr.fA)(0,-1,0));const f=[h,c],p=[d,u],_=i+2,m=Math.sqrt(l*l+a*a);if(r)for(let e=i-1;e>=0;e--){const t=e*(2*Math.PI/i),r=(0,pr.fA)(Math.cos(t)*a,o,Math.sin(t)*a);f.push(r);const s=(0,pr.fA)(l*Math.cos(t)/m,-a/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,pr.fA)(Math.cos(t)*a,o,Math.sin(t)*a);f.push(r);const s=(0,pr.fA)(l*Math.cos(t)/m,a/m,l*Math.sin(t)/m);p.push(s)}const g=new Array,v=new Array;if(s){for(let e=3;e<f.length;e++)g.push(1),g.push(e-1),g.push(e),v.push(0),v.push(0),v.push(0);g.push(f.length-1),g.push(2),g.push(1),v.push(0),v.push(0),v.push(0)}if(n){for(let e=3;e<f.length;e++)g.push(e),g.push(e-1),g.push(0),v.push(e),v.push(e-1),v.push(1);g.push(0),g.push(2),g.push(f.length-1),v.push(1),v.push(2),v.push(p.length-1)}const y=(0,_r.oe)(3*_);for(let e=0;e<_;e++)y[3*e]=f[e][0],y[3*e+1]=f[e][1],y[3*e+2]=f[e][2];const x=(0,_r.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[[Te.r.POSITION,new gr.n(y,g,3,!0)],[Te.r.NORMAL,new gr.n(x,v,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 Cr(e,t){let i=e.get(t);return i&&!i.exclusive&&(i={...i,exclusive:!0,data:(0,fr.S)(i.data)},e.set(t,i)),i}(0,Me.d)(Ar,xr,Tr),(0,Me.d)(Or,xr,wr),(0,Me.e)(Mr,Ar,Or),(0,Me.n)(Mr,Mr),(0,Me.d)(Ar,wr,Tr),(0,Me.d)(Or,wr,br),(0,Me.e)(Sr,Ar,Or),(0,Me.n)(Sr,Sr),(0,Me.d)(Ar,br,Tr),(0,Me.d)(Or,br,xr),(0,Me.e)(Ir,Ar,Or),(0,Me.n)(Ir,Ir),Mr[0],Mr[1],Mr[2],Sr[0],Sr[1],Sr[2],Ir[0],Ir[1],Ir[2],(0,P.vt)();const Er=[{tesselation:6,minScreenSpaceRadius:0},{tesselation:18,minScreenSpaceRadius:7},{tesselation:64,minScreenSpaceRadius:65}];let Fr=class extends p.A{constructor(e){super(),this._context=e,this.lodRendererId=null,this._loaded=!1,this._loadingPromise=null}get loaded(){return this._loaded}load(e){return null==this._loadingPromise&&(this._loadingPromise=this._load(e)),this._loadingPromise}async _load(e){const t=Rr("cone",e.createMaterial("default"));this.lodRendererId=e.createLodRenderer(t),await e.dispatch(),this._loaded=!0}async add(e,t){if(null==this.lodRendererId)throw new Error("expected lod renderer id to not be null");const{featureCount:i}=e;if(0===i)return;const r=(0,z.vt)((0,lr.Fq)("cone")),s=(0,P.ci)((0,z.Ej)(r)),n=(0,P.ci)((0,lr.Bb)(s,{isPrimitive:!0,width:100,depth:null,height:null})),o=new Float64Array(16*i),a=new Float64Array(16*i),l=await or(e,this._context);if(null==l)throw new Error("unabled to get map coordinates");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,Pr),d=this._computeLocalTransform(n,s,Dr);this._writeMatrixToTypedBuffer(o,t,d),this._writeMatrixToTypedBuffer(a,t,h)}const c=await nr(e,this._context);if(null==c)throw new Error("unable to fetch objectIds");const h={featureIds:new Uint32Array(c),localTransforms:o,globalTransforms:a};t.addLodInstances(this.lodRendererId,h)}async remove(e,t){if(null==this.lodRendererId)return;const i=await nr(e,this._context);if(null==i)throw new Error("unable to fetch objectIds");t.removeLodInstances(this.lodRendererId,i)}_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 Lr[0]=e,Lr[1]=t,Lr[2]=i,(0,ar.l)(r,Lr,s,this._context.renderSpatialReference),s}_computeLocalTransform(e,t,i){return(0,Re.D_)(i),this._applyObjectScale(e,t,i),i}_applyObjectScale(e,t,i){const r=function(e=P.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 o=2;o>=0;o--){const a=e[o],l=null!=a,c=0===o&&!r&&!l,h=i[o];let d;"symbol-value"===a||c?d=0!==h?t[o]/h:1:l&&"proportional"!==a&&isFinite(a)&&(d=0!==h?a/h:1),null!=d&&(s[o]=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,P.ci)(s)}(e,e,t,this._context.renderCoordsHelper.unitInMeters);1===r[0]&&1===r[1]&&1===r[2]||(0,Re.hs)(i,i,r)}};Fr=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.symbolization.TestObjectSymbol")],Fr);const Lr=(0,P.vt)(),Dr=(0,Oe.vt)(),Pr=(0,Oe.vt)();let zr=class extends p.A{constructor(e){super(),this._context=e,this.materialId=null,this._loaded=!1,this._loadingPromise=null}get loaded(){return this._loaded}load(e){return null==this._loadingPromise&&(this._loadingPromise=this._load(e)),this._loadingPromise}async _load(e){this.materialId=e.createMaterial("hud"),e.createDirectRenderer(this.materialId),await e.dispatch(),this._loaded=!0}async add(e,t){if(null==this.materialId)throw new Error("expected material not to be null");const{featureCount:i,id:r}=e;if(0===i)return;const s=await async function(e,t){const{featureCount:i}=e,r=await or(e);if(null==r)return null;if(0===i)return new Float64Array;const s=t.viewSpatialReference,n=t.renderSpatialReference,o=new Float64Array(3*i);if(!(0,rr.projectBuffer)(r,s,0,o,n,0,i))throw new Error("Failed to project coordinates");return o}(e,this._context);if(null==s)throw new Error("failed to retrieve render coordinates");const n=await async function(e,t){const i=t.viewSpatialReference,r=t.renderSpatialReference,{extent:s}=e,n=(0,C.gX)(s),o=(0,P.vt)();return(0,sr.F)([n[0],n[1],0],i,o,r),o}(e,this._context);if(null==n)throw new Error("unable to compute tile center in render coordinates");const o=new Float64Array([0,0,1]),a=new Float64Array([255,255,255,255]),l=new Float64Array([24,24]),c=new Float64Array([0,0,0,1]),h=new Float64Array([0,0]),d=new Float64Array([0]),u=new Uint32Array(i);for(let e=0;e<i;++e)u[e]=e;const f=new Uint32Array(i);for(let e=0;e<i;++e)f[e]=0;const p=new gr.n(s,u,3,!0),_=new gr.n(o,f,3,!0),m=new gr.n(h,f,2,!0),g=new gr.n(a,f,4,!0),v=new gr.n(d,f,1,!0),y=new gr.n(l,f,2,!0),x=new gr.n(c,f,4,!0),w={attributes:hr([[Te.r.POSITION,p],[Te.r.NORMAL,_],[Te.r.UV0,m],[Te.r.COLOR,g],[Te.r.ROTATION,v],[Te.r.SIZE,y],[Te.r.CENTEROFFSETANDDISTANCE,x]]),objectAndLayerIdColor:void 0,transformation:(0,Oe.vt)(),materialId:this.materialId};t.addDirectRendererGeometry(r,w,n)}async remove(e,t){t.removeDirectRendererGeometry(e.id)}};zr=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.symbolization.TestSymbol")],zr);class Br{constructor(e){this._symbols=new Map,this._featureDataPartitioning=new Map,this._context=e}async load(){this._symbols.set(0,new zr(this._context)),this._symbols.set(1,new Fr(this._context))}async add(e,t){if(null!=this._featureDataPartitioning.get(e))throw new Error("featureData was already added");const i=await this._partition(e);this._featureDataPartitioning.set(e,i),await Promise.all(i.partitions.map((async e=>{const i=await this._provisionSymbol(e.index,t);i&&await i.add(e.features,t)})))}async remove(e,t){const i=this._featureDataPartitioning.get(e);if(null==i)throw new Error("featureData partitions expected");await Promise.all(i.partitions.map((async e=>{const i=await this._provisionSymbol(e.index,t);i&&await i.remove(e.features,t)}))),this._featureDataPartitioning.delete(e)}async _provisionSymbol(e,t){if(null==e)return null;const i=this._symbols.get(e);return i?(i.loaded||await i.load(t),i):null}async _partition(e){const t=await nr(e,this._context);if(null==t)throw new Error("unable to fetch objectIds");return function(e,t){const{featureCount:i}=e,r=[[],[]],s=new Uint32Array(i);for(let e=0;e<i;++e){const i=t(e);r[i].push(e),s[e]=i}const n=r.map(((t,i)=>({index:i,features:e.subset(new Uint32Array(t))}))).filter((e=>e.features.featureCount>0));return{partitions:n,partitionIds:s}}(e,(e=>t[e]%2))}}var Nr=i(73941),Hr=i(98764),jr=i(65806);const Gr=(0,P.vt)();var Vr=i(88582),Ur=i(17352);function qr(e,t,i=function(e){return{operations:e,value:e.create()}}(e)){return i.operations=e,e.copy(t,i.value),i}const Zr=2**50;function kr(e,t,i,r){return e.operations.setAltitudeAt(e.value,t,i,r)}function Wr(e,t,i){return e.operations.elevate(e.value,t,i.value)}const Yr=(0,P.vt)();(0,P.vt)();var $r=i(32114);function Xr(e){return"point"===e.type}class Jr{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,Nr.tO)(t),this.sphericalPCPF=(0,Hr.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,C.vt)())}getAltitude(e){return function(e,t){return e.operations.altitudeAt(e.value,t)}(this._coordinateSystem,e)}setAltitude(e,t,i=e){return kr(this._coordinateSystem,i,t,e)}setAltitudeOfTransformation(e,t){!function(e,t,i,r){t!==r&&(0,Re.C)(r,t),(0,Me.i)(Yr,r[12],r[13],r[14]),kr(e,Yr,i,Yr),r[12]=Yr[0],r[13]=Yr[1],r[14]=Yr[2]}(this._coordinateSystem,t,e,t)}worldUpAtPosition(e,t){return function(e,t,i){return e.operations.axisAt(e.value,t,Vr._.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,Vr._.X,$r.rq.get()),r=this.worldBasisAtPosition(e,Vr._.Y,$r.rq.get()),s=this.worldBasisAtPosition(e,Vr._.Z,$r.rq.get());return(0,Re.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,$r.rq.get()),r=this.worldBasisAtPosition(e,Vr._.Y,$r.rq.get()),s=(0,Le.EJ)(t,r,i);return(0,ee.KJ)(s)}intersectManifoldClosestSilhouette(e,t,i){return Wr(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){Wr(this._coordinateSystem,t,this._tmpCoordinateSystem);const r=$r.rq.get();return function(e,t,i){return e.operations.intersectRay(e.value,t,i)}(this._tmpCoordinateSystem,e,r)?(0,Me.c)(i,r):null}intersectInfiniteManifold(e,t,i){if(this.viewingMode===W.RT.Global)return this.intersectManifold(e,t,i);Wr(this._coordinateSystem,t,this._tmpCoordinateSystem);const r=this._tmpCoordinateSystem.value,s=$r.rq.get();return(0,mr.Ui)(r.plane,e,s)?(0,Me.c)(i,s):null}toRenderCoords(e,t,i){return Xr(e)?(0,jr.g)(e,t,this.spatialReference):(0,sr.F)(e,t,i,this.spatialReference)}fromRenderCoords(e,t,i=null){return Xr(t)?(null!=i&&(t.spatialReference=i),function(e,t,i){return!!(0,sr.F)(e,t,Gr,i.spatialReference)&&(i.x=Gr[0],i.y=Gr[1],i.z=Gr[2],!0)}(e,this.spatialReference,t)?t:null):(0,sr.F)(e,this.spatialReference,t,i)?t:null}static create(e,t){switch(e){case W.RT.Local:return new Jr(W.RT.Local,t,(0,cr.GA)(t),qr(Ur.b,(0,Ur.f)([0,0,0],[Zr,0,0],[0,Zr,0])));case W.RT.Global:return new Jr(W.RT.Global,t,1,function(e){return qr(ct.s,(0,ct.f)(0,0,0,(0,Nr.tO)(e).radius))}(t))}}static renderUnitScaleFactor(e,t){return(0,cr.KX)(e)/(0,cr.KX)(t)}}class Qr{constructor(e){this._tileFeatureData=new Map,this._context={viewSpatialReference:e.viewSpatialReference,renderSpatialReference:e.renderSpatialReference,renderCoordsHelper:Jr.create(e.viewingMode,e.renderSpatialReference)}}async add(e,t){this._featureRenderer||(this._featureRenderer=new Br(this._context),await this._featureRenderer.load());const i=this._addTileFeatureData(e);await this._featureRenderer.add(i,t)}async remove(e,t){const i=this._getFeatureSetFromTileId(e);i&&(this._featureRenderer&&this._featureRenderer.remove(i,t),this._removeTileFeatureData(e))}_getFeatureSetFromTileId(e){return this._tileFeatureData.get(e)}_addTileFeatureData(e){const t=e.descriptor.id,i=new ir(e);return this._tileFeatureData.set(t,i),i}_removeTileFeatureData(e){this._tileFeatureData.get(e)&&this._tileFeatureData.delete(e)}}let Kr=class extends s.A.EventedAccessor{constructor(){super(...arguments),this.remoteClient=null,this._featureStore=new S,this._tileManager=new v({addTile:(e,t)=>this._addTile(e,t),removeTiles:e=>this._removeTiles(e)}),this._renderCommandContext=null,this._fetcher=null,this._symbolizer=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:a,fieldsIndex:l,timeInfo:c}){this._renderCommandContext=new tr({viewingMode:i,dispatchRenderCommandsCallback:(e,t)=>this.remoteClient.invoke("dispatchRenderCommands",e,{transferList:t})});const h=d.A.fromJSON(e),p=d.A.fromJSON(t);return this._fetcher=new k(h,f.A.fromJSON(r),s,n,a),this._symbolizer=new Qr({viewSpatialReference:h,renderSpatialReference:p,viewingMode:i}),this._queryEngine=new u.do({hasZ:!0,hasM:!1,geometryType:"esriGeometryPoint",objectIdField:n,fieldsIndex:l,availableFields:[n],spatialReference:e,featureStore:this._featureStore,timeInfo:c}),this._defaultQueryJSON=new f.A({outSpatialReference:h}).toJSON(),this.addHandles((0,o.wB)((()=>this.updating),(async e=>{this.emit("notify-updating",{updating:e})})),o.Vh),ts}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),ts}async _addTile(e,t){const i=await this._fetcher.fetch(e,t);(0,n.Te)(t);const r=this._renderCommandContext.createEncoder();return await this._symbolizer.add(i,r),r.dispatch(),this._featureStore.addTile(i),i}async _removeTiles(e){const t=this._renderCommandContext.createEncoder(),i=this._featureStore,r=this._symbolizer;for(const s of e)i.removeTile(s),await r.remove(s,t);await t.dispatch()}_ensureQuery(e){return e??this._defaultQueryJSON}};(0,r._)([(0,a.MZ)()],Kr.prototype,"updating",null),Kr=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.Feature3DPipelineWorker")],Kr);const es=Kr,ts={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),a=n.constructor.ElementCount,l=o(n.constructor.ElementType),c=n.offset,h=n.optional?.glNormalized??!1;return new s._(r,a,l,c,i,h,t)}))}function o(e){const t=a[e];if(t)return t;throw new Error("BufferType not supported in WebGL")}const a={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(95250),s=i(2597);function n(e){e.uniforms.add(new r.e("alignPixelEnabled",((e,t)=>t.alignPixelEnabled))),e.code.add(s.H`vec4 alignToPixelCenter(vec4 clipCoord, vec2 widthHeight) {
162
+ outputHighlight(${(0,O.If)(H,O.H`voccluded == 1.0`,O.H`false`)});`)}return t}function F(e){return e.outlineColor[3]>0&&e.outlineSize>0}function L(e,t=D){return e.textureIsSignedDistanceField?function(e,t,i){null!=t?(0,r.hZ)(i,e[0]*(t[2]-t[0])+t[0],e[1]*(t[3]-t[1])+t[1]):(0,r.hZ)(i,0,0)}(e.anchorPosition,e.distanceFieldBoundingBox,t):(0,r.C)(t,e.anchorPosition),t}const D=(0,s.vt)(),P=Object.freeze(Object.defineProperty({__proto__:null,build:E,calculateAnchorPosForRendering:L,shaderSettings:C},Symbol.toStringTag,{value:"Module"}))},4902:(e,t,i)=>{i.d(t,{A:()=>h});var r=i(90237),s=i(40608);let n=0;const o=e=>{let t=class extends e{constructor(...e){super(...e),Object.defineProperty(this,"uid",{writable:!1,configurable:!1,value:Date.now().toString(16)+"-object-"+n++})}};return t=(0,r._)([(0,s.$)("esri.core.Identifiable")],t),t},a=e=>{let t=class extends e{constructor(...e){super(...e),Object.defineProperty(this,"uid",{writable:!1,configurable:!1,value:n++})}};return t=(0,r._)([(0,s.$)("esri.core.Identifiable.NumericIdentifiable")],t),t};let l=class extends(o(class{})){};var c;l=(0,r._)([(0,s.$)("esri.core.Identifiable")],l),(c=l||(l={})).IdentifiableMixin=o,c.NumericIdentifiableMixin=a;const h=l},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 o{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 o=this._db.get(t);if(o&&(this._size-=o.size,e.size-=o.size,this._db.delete(t),o.entry!==i&&this._notifyRemove(t,o.entry,o.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 a(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 a{constructor(e,t,i){this.entry=e,this.size=t,this.lifetime=i,this.lives=i}}class l{constructor(e,t){this._storage=new o,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(){}}},21818:(e,t,i)=>{function r(e){}i.d(t,{Xb:()=>r}),i(44208)},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 o(){return r()}function a(){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=o(),u=a(),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:a,unitX:l,unitY:c,unitZ:h,zeros:o},Symbol.toStringTag,{value:"Module"}))},75503:(e,t,i)=>{i.d(t,{E:()=>O,w:()=>a});var r=i(4576),s=(i(44208),i(4718)),n=i(3694),o=i(11006);class a{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(),w.prune(),b.prune(),T.prune(),A.prune()}all(e){l(this._data,e)}search(e,t){let i=this._data;const r=this._toBBox;if(y(e,i))for(w.clear();i;){for(let s=0,n=i.children.length;s<n;s++){const n=i.children[s],o=i.leaf?r(n):n;y(e,o)&&(i.leaf?t(n):v(e,o)?l(n,t):w.push(n))}i=w.pop()}}collides(e){let t=this._data;const i=this._toBBox;if(!y(e,t))return!1;for(w.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(y(e,n)){if(t.leaf||v(e,n))return!0;w.push(s)}}t=w.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 S([]),this}remove(e){if(!e)return this;let t,i=this._data,s=null,n=0,o=!1;const a=this._toBBox(e);for(T.clear(),A.clear();i||T.length>0;){if(i||(i=T.pop(),s=T.data[T.length-1],n=A.pop()??0,o=!0),i.leaf&&(t=(0,r.qh)(i.children,e,i.children.length,i.indexHint),-1!==t))return i.children.splice(t,1),T.push(i),this._condense(T),this;o||i.leaf||!v(i,a)?s?(n++,i=s.children[n],o=!1):i=null:(T.push(i),A.push(n),n=0,s=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 S(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 o=new I([]);o.height=r;const a=Math.ceil(s/n),l=a*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,a,this._compareMinY);for(let i=s;i<=t;i+=a){const s=Math.min(i+a-1,t);o.children.push(this._build(e,i,s,r-1))}}return c(o,this._toBBox),o}_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,o=t.children.length;n<o;n++){const o=t.children[n],a=p(o),l=m(e,o)-a;l<s?(s=l,r=a<r?a:r,i=o):l===s&&a<r&&(r=a,i=o)}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 o=i.children.splice(n,i.children.length-n),a=i.leaf?new S(o):new I(o);a.height=i.height,c(i,this._toBBox),c(a,this._toBBox),t?e.data[t-1].children.push(a):this._splitRoot(i,a)}_splitRoot(e,t){this._data=new I([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 o=t;o<=i-t;o++){const t=h(e,0,o,this._toBBox),a=h(e,o,i,this._toBBox),l=g(t,a),c=p(t)+p(a);l<r?(r=l,n=o,s=c<s?c:s):l===r&&c<s&&(s=c,n=o)}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),o=h(e,i-t,i,s);let a=_(n)+_(o);for(let r=t;r<i-t;r++){const t=e.children[r];d(n,e.leaf?s(t):t),a+=_(n)}for(let r=i-t-1;r>=t;r--){const t=e.children[r];d(o,e.leaf?s(t):t),a+=_(o)}return a}_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(b.clear();i;){if(!0===i.leaf)for(const e of i.children)t((0,s.zI)(e));else b.pushArray(i.children);i=b.pop()??null}}function c(e,t){h(e,0,e.children.length,t,e)}function h(e,t,i,r,s){s||(s=new S([])),s.minX=1/0,s.minY=1/0,s.maxX=-1/0,s.maxY=-1/0;for(let n,o=t;o<i;o++)n=e.children[o],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 v(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function y(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 a=i+Math.ceil((t-i)/r/2)*r;(0,o.q)(e,a,i,t,s),n.push(i,a,a,t)}}const w=new n.A,b=new n.A,T=new n.A,A=new n.A({deallocator:void 0});class O{constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}}class M extends O{constructor(){super(...arguments),this.height=1,this.indexHint=new r.vW}}class S extends M{constructor(e){super(),this.children=e,this.leaf=!0}}class I extends M{constructor(e){super(),this.children=e,this.leaf=!1}}},95696:(e,t,i)=>{i.d(t,{A:()=>d});var r,s=i(90237),n=i(69540),o=i(25482),a=i(10107),l=(i(44208),i(53966),i(87811),i(93223)),c=i(40608);let h=r=class extends(n.A.ClonableMixin(o.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,a.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),o=i(10107),a=(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,a.e)({local:"local"},{readOnly:!0})],h.prototype,"type",void 0),(0,r._)([(0,o.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:()=>v,m7:()=>y});var r=i(4341),s=i(58083),n=i(38954),o=i(51850),a=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 v(e,t,i,r=T){const o=(0,s.lw)(_.Rc.get(),t,e);(0,s.B8)(o,o);for(let e=0;e<w;++e){const t=(0,a.t)(_.Km.get(),b[e],o);(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 y(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,w=8,b=[(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,o.vt)(),(0,o.vt)(),(0,o.vt)(),(0,o.vt)(),(0,o.vt)(),(0,o.vt)(),(0,o.vt)(),(0,o.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),o=i(86738),a=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 o.A({x:i,y:r,z:s,spatialReference:t})}function f(e,t){const{x:i,y:s,z:n,spatialReference:o}=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"}(o))?new l.A({origin:h}):new a.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)}},62025:(e,t,i)=>{i.r(t),i.d(t,{default:()=>es});var r=i(90237),s=i(65529),n=i(74887),o=i(36708),a=i(10107),l=i(44208),c=i(53966),h=(i(87811),i(40608)),d=i(16930),u=i(19730),f=i(61956),p=i(69622),_=i(4576),m=i(60999),g=i(32587);let v=class extends p.A{constructor(e){super(e),this._removing=0,this._tiles=new g.A,this._wanted=new g.A}destroy(){for(const e of this._tiles.values())e.abort();this._tiles.clear(),this._wanted.clear()}get updating(){return this._removing>0||this._loadingCount>0}get _loadingCount(){let e=0;for(const t of this._tiles.values())t.isLoaded||++e;return e}async onTileTreeChange(e){const{added:t,removed:i}=e,r=this._tiles,s=this._wanted,n=[];for(const e of i){const{id:i}=e;if(s.delete(i),t.some((t=>y(t,e)||y(e,t))))continue;const o=r.get(i);null!=o&&(o.abort(),o.isLoaded&&n.push(i),r.delete(i))}for(const e of t){const{id:t}=e;s.set(t,e),r.has(t)||r.set(t,this._loadTile(e))}await this._removeTiles(n)}async _addTile(e,t){const i=await this.addTile(e,t);return(0,n.Te)(t),i}async _removeTiles(e){this._removing++,await this.removeTiles(e),this._removing--}_loadTile(e){const t=(0,m.UT)((t=>this._addTile(e,t))),i=new x(e,t);return(0,n.QZ)(this._onTileLoad(t.promise)),i}async _onTileLoad(e){await e;const t=this._tiles,i=this._wanted,r=new Map(i),s=Array.from(this._tiles.values()).map((e=>e.data)).filter(_.Ru);for(const e of s)r.delete(e.descriptor.id);const n=Array.from(r.values()),o=new Array;for(const e of t.values()){const{descriptor:t}=e;i.has(t.id)||n.some((e=>y(e,t)||y(t,e)))||o.push(t.id)}if(0!==o.length){for(const e of o)t.delete(e);await this._removeTiles(o)}}};function y({lij:[e,t,i]},{lij:[r,s,n]}){const o=r-e;return o>=0&&t===s>>o&&i===n>>o}(0,r._)([(0,a.MZ)()],v.prototype,"updating",null),(0,r._)([(0,a.MZ)({constructOnly:!0})],v.prototype,"addTile",void 0),(0,r._)([(0,a.MZ)({constructOnly:!0})],v.prototype,"removeTiles",void 0),(0,r._)([(0,a.MZ)()],v.prototype,"_removing",void 0),(0,r._)([(0,a.MZ)()],v.prototype,"_loadingCount",null),v=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.Tile3DManager")],v);class x{constructor(e,t){this.descriptor=e,this._task=t}get id(){return this.descriptor.id}get data(){return this._task.value}get isLoaded(){return null!=this.data}abort(){this._task.abort()}}var w=i(69397),b=i(75503),T=i(27647),A=i(92722);class O{constructor(e,t){this._index=e,this._view=t}get usedMemory(){return w.qK+w.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 M(this._index,this._view,e)}}class M extends O{constructor(e,t,i){super(e,t),this._geometryOverride=i}getOptimizedGeometry(){return this._geometryOverride}getCentroid(e){return(0,T.Q)(new A.A,this._geometryOverride,e.hasZ,e.hasM)}}class S{constructor(){this._storedTiles=new Map,this._tileBounds=new Map,this.events=new s.A,this.featureAdapter=I.shared}get usedMemory(){return w.qK+w.qK*this._storedTiles.size+(w.qK+w.qK*this._tileBounds.size)}addTile(e){this._storedTiles.set(e.descriptor.id,e);const{featureCount:t}=e;if(0===t)return;const i=new b.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){const t=this._storedTiles,i=t.get(e);null!=i&&(t.delete(e),this._tileBounds.delete(i),this.events.emit("changed"))}clear(){this._storedTiles.clear(),this._tileBounds.clear(),this.events.emit("changed")}forEach(e){for(const[t,i]of this._tileBounds)i.all((i=>e(new O(i,t))))}forEachInBounds(e,t){R.minX=e[0],R.minY=e[1],R.maxX=e[2],R.maxY=e[3];for(const[e,i]of this._tileBounds)i.search(R,(i=>t(new O(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:o,maxX:a,maxY:l}=e.toJSON();t=Math.min(t,n),i=Math.min(i,o),r=Math.min(r,a),s=Math.min(s,l)}return{xmin:t,ymin:i,xmax:r,ymax:s,spatialReference:e}}}class I{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)}}I.shared=new I;const R=new b.E;var C=i(19419),E=i(80893);class F{constructor(e,t,i){this.descriptor=e,this._pageSize=t,this._pages=i,this.featureCount=i.reduce(((e,{featureCount:t})=>e+t),0);const r=w.ez+i.reduce(((e,{usedMemory:t})=>e+t),0),s=3*w.RS;this.usedMemory=w.qK+r+s}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,i=0){let r=i;if(null==t)for(const t of this._pages)r=t.readObjectIds(e,void 0,r);else this._readIndexed(t,((t,i)=>{r=t.readObjectIds(e,i,r)}));return r}readCoordinates(e,t,i=0){let r=i;if(null==t)for(const t of this._pages)r=t.readCoordinates(e,void 0,r);else this._readIndexed(t,((t,i)=>{r=t.readCoordinates(e,i,r)}));return r}_translateIndex(e){const{_pageSize:t}=this;return{pageIndex:Math.floor(e/t),featurePageIndex:e%t}}_readIndexed(e,t){const i=new Array;{let t=0,r=new Array;for(const s of e){const{pageIndex:e,featurePageIndex:n}=this._translateIndex(s);t!==e&&(0!==r.length&&i.push({pageIndex:t,indices:r}),t=e,r=[]),r.push(n)}0!==r.length&&i.push({pageIndex:t,indices:r})}const{_pages:r}=this;for(const{pageIndex:e,indices:s}of i)t(r[e],s)}}var L=i(49186),D=i(51624),P=i(51850),z=i(70328),B=i(62577),N=i(95466),H=i(53655);class j{constructor(e){this._reader=new D.A(new Uint8Array(e),new DataView(e)),this._index=function(e){for(;e.next();){if(2===e.tag())return G(e.getMessage());e.skip()}U()}(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],o=this._reader;return o.move(n),q(o)}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]=q(s)}return n}getCoordinates(e,t,i=0){const r=this._reader,{transform:s,featureIndices:n}=this._index,{scale:o,translate:a}=s;r.move(n[e]),this._readCoordinates(o,a,t,i)}getOptimizedGeometry(e){const t=(0,P.vt)();return this.getCoordinates(e,t),new A.A([],t)}getCentroid(e,{hasZ:t,hasM:i}){this.getCoordinates(e,Z);const[r,s,n]=Z,o=[r,s];return t&&(o[3]=n),i&&(o[t?4:3]=0),new A.A([],o)}getBounds(e){this.getCoordinates(e,Z);const[t,i]=Z,r=new b.E;return r.minX=t,r.minY=i,r.maxX=t,r.maxY=i,r}getBoundingBox(e){this.getCoordinates(e,Z);const[t,i,r]=Z;return(0,z.fA)(t,i,r,t,i,r)}readObjectIds(e,t=this._allFeatureIndices(),i=0){const r=this._reader,{_index:s}=this,{objectIdFieldName:n,attributeIndices:o,fieldsIndex:a}=s,l=a.get(n).index,c=a.fields.length;for(const s of t){const t=o[s*c+l];r.move(t),e[i++]=q(r)}return i}readCoordinates(e,t=this._allFeatureIndices(),i=0){const r=this._reader,{transform:s,featureIndices:n}=this._index,{scale:o,translate:a}=s;for(const s of t){const t=n[s];r.move(t),i=this._readCoordinates(o,a,e,i)}return i}*_allFeatureIndices(){const{featureCount:e}=this;for(let t=0;t<e;++t)yield t}_readCoordinates([e,t,i],[r,s,n],o,a){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(),o[a++]=r+e*l.getSInt64(),o[a++]=s+t*l.getSInt64(),o[a++]=n+i*l.getSInt64()):l.skip();break}default:l.skip()}return a}}function G(e){for(;e.next();){if(1===e.tag())return V(e.getMessage());e.skip()}U()}function V(e){let t,i,r=!1,s=!1,n=0;const o=new Array,a=new Array,l=new Array;for(;e.next();)switch(e.tag()){case 1:i=e.getString();break;case 7:0!==e.getEnum()&&U();break;case 9:r=e.getBool()??!1;break;case 12:t=(0,B.Q1)(e.processMessage(H.ae));break;case 13:{const t=e.processMessage(H.cn);t.index=n++,o.push(t);break}case 15:{a.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 N.A(o);return null!=t&&s&&null!=i&&c.has(i)||U(),{transform:t,exceededTransferLimit:r,fieldsIndex:c,objectIdFieldName:i,featureIndices:a,attributeIndices:l}}function U(){const e=new L.A("pbf-parsing-failed","Error while parsing PBF",new Error);throw console.error(e),e}function q(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 Z=(0,P.vt)();class k{constructor(e,t,i,r,s){this.spatialReference=e,this.url=i,this.objectIdField=r,this.capabilities=s;const{supportsMaxRecordCountFactor:n,maxRecordCount:o}=this.capabilities.query,a=n?4:1,l=(o??8e3)*a;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=a,c.num=this._pageSize,c.outFields=[r],this._baseQuery=c}async fetch(e,t){const{spatialReference:i}=this,r=(0,C.w1)(e.extent,i),s=this._baseQuery.clone();s.geometry=r;const o=new Array;let a=0,l=!1,c=1;for(;!l;){const e=[];for(let i=0;i<c;++i)e.push(this._fetchPage(s,a++,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&&o.push(e)}c=Math.min(c+1,4)}return new F(e,this._pageSize,o)}async _fetchPage(e,t,i){const r=e.clone();r.start=t*this._pageSize;const s=(await(0,E.kS)(this.url,r,{signal:i})).data;return(0,n.Te)(i),new j(s)}}var W=i(24151),Y=i(97146),$=i(36563),X=i(97768),J=i(91829),Q=i(37585),K=i(48163),ee=i(34727),te=i(26857);new Map,(()=>{let e="";for(let t=32;t<127;t++)e+=String.fromCharCode(t)})();const ie=[];{const e=16;for(let t=0;t<360;t+=360/e)ie.push([Math.cos(Math.PI*t/180),Math.sin(Math.PI*t/180)])}var re,se;(se=re||(re={}))[se.Left=0]="Left",se[se.Center=1]="Center",se[se.Right=2]="Right",Object.freeze({left:0,center:.5,right:1});const ne=Object.freeze({"bottom-left":(0,K.fA)(0,0),bottom:(0,K.fA)(.5,0),"bottom-right":(0,K.fA)(1,0),left:(0,K.fA)(0,.5),center:(0,K.fA)(.5,.5),right:(0,K.fA)(1,.5),"top-left":(0,K.fA)(0,1),top:(0,K.fA)(.5,1),"top-right":(0,K.fA)(1,1)});var oe=i(4431),ae=i(49255);const le={required:[]};ae.V.Depth;class ce extends p.A{precompile(e){const t=this.acquireTechniques(e);return function(e){Array.isArray(e)?e.forEach((e=>e?.release())):e?.release()}(t),null!=t}consumes(){return le}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 he extends ce{}class de extends ce{}var ue=i(89192);class fe{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)===ue.Am.LOADED)return s;this._repository.requestRender()}return null}}var pe=i(13464),_e=i(72824);class me extends _e.gy{constructor(e=(0,P.vt)()){super(),this.origin=e}get slicePlaneLocalOrigin(){return this.origin}}let ge=class extends he{constructor(e){super(e),this._hasHighlights=!1,this._glMaterials=null,this._produces=new Map,this._renderGeometries=new Map,this._vaoCache=null,this._drawParameters=new me,this._bufferWriter=null}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}initialize(){this._bufferWriter=this.material.createBufferWriter(),this.material.produces.forEach(((e,t)=>{this._produces.set(t,(t=>!!(t!==ae.V.Highlight&&t!==ae.V.ShadowHighlight||this._hasHighlights)&&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===ae.V.Highlight||i===ae.V.ShadowHighlight)&&!this._hasHighlights)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===pe.N.OCCLUDER_MATERIAL||r.slot===pe.N.TRANSPARENT_OCCLUDER_MATERIAL?r.slot:null,n=e.rctx;n.runAppleAmdDriverHelper(),n.bindTechnique(t,r,this.material.parameters);const o=t.program;for(const[e,a]of i)this._drawParameters.origin=a.localOrigin,o.bindDraw(r,this.material.parameters,this._drawParameters),t.ensureAttributeLocations(a.vao),n.bindVAO(a.vao),n.setPipelineState(t.getPipeline(!1,s)),n.drawArrays(t.primitiveType,0,a.numElements)}initializeRenderContext(e,t){this._glMaterials=new fe(this.material,e.materials),this._vaoCache=e.renderContext.rctx.getVaoCache(this.material.vertexAttributeLocations,(0,oe.U)(this._bufferWriter.vertexBufferLayout))}uninitializeRenderContext(){}addRenderGeometry(e,t,i){this.removeRenderGeometry(e);const r=this._vaoCache.newVao(t.data.byteLength);r.vertexBuffers.get("geometry").setSubData(new Uint8Array(t.data),0,0,t.data.byteLength);const s={localOrigin:i,vao:r,numElements:t.elementCount};return this._renderGeometries.set(e,s),s}removeRenderGeometry(e){const t=this._renderGeometries.get(e);null!=t&&(this._vaoCache.deleteVao(t.vao),this._renderGeometries.delete(e))}};(0,r._)([(0,a.MZ)({constructOnly:!0})],ge.prototype,"material",void 0),ge=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.rendering.DirectRenderer")],ge);var ve,ye,xe,we,be=i(69720),Te=i(46540),Ae=i(91869),Oe=i(9093),Me=i(38954),Se=i(1843),Ie=i(90629),Re=i(58083),Ce=i(87317),Ee=i(82919),Fe=i(71351),Le=i(44280);i(3694),(we=ve||(ve={}))[we.Default=0]="Default",we[we.Screenshot=1]="Screenshot",we[we.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"}(ye||(ye={}));let De=xe=class extends p.A{constructor(e){super(e),this._ray=(0,Fe.vt)(),this._viewport=(0,J.fA)(0,0,1,1),this._padding=(0,J.fA)(0,0,0,0),this._fov=55/180*Math.PI,this._nearFar=(0,K.fA)(1,1e3),this._viewDirty=!0,this._viewMatrix=(0,Oe.vt)(),this._viewProjectionDirty=!0,this._viewProjectionMatrix=(0,Oe.vt)(),this._viewInverseTransposeMatrixDirty=!0,this._viewInverseTransposeMatrix=(0,Oe.vt)(),this._frustumDirty=!0,this._frustum=(0,Ee.vt)(),this._fullViewport=(0,J.vt)(),this._pixelRatio=1,this.row=0,this.column=0,this._rows=1,this._columns=1,this._center=(0,P.vt)(),this._up=(0,P.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,Me.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,Re.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,Me.i)((0,P.vt)(),-this._viewMatrix[2],-this._viewMatrix[6],-this._viewMatrix[10])}get viewUp(){return this._ensureViewClean(),(0,Me.i)((0,P.vt)(),this._viewMatrix[1],this._viewMatrix[5],this._viewMatrix[9])}get viewRight(){return this._ensureViewClean(),(0,Me.i)((0,P.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,Ce.b)((0,J.vt)(),this._viewport,1/this.pixelRatio),t=this._get("screenViewport");return t&&(0,Ce.e)(e,t)?t:e}get screenPadding(){if(1===this.pixelRatio)return this._padding;const e=(0,Ce.b)((0,J.vt)(),this._padding,1/this.pixelRatio),t=this._get("screenPadding");return t&&(0,Ce.e)(e,t)?t:e}get x(){return this._viewport[0]}set x(e){e+=this._padding[ye.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[ye.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[ye.RIGHT]+this._padding[ye.LEFT]}set fullWidth(e){this.width=e-(this._padding[ye.RIGHT]+this._padding[ye.LEFT])}get fullHeight(){return this._viewport[3]+this._padding[ye.TOP]+this._padding[ye.BOTTOM]}set fullHeight(e){this.height=e-(this._padding[ye.TOP]+this._padding[ye.BOTTOM])}get fullViewport(){return this._fullViewport[0]=this._viewport[0]-this._padding[ye.LEFT],this._fullViewport[1]=this._viewport[1]-this._padding[ye.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,Ce.a)(this._padding,e)||(this._viewport[0]+=e[ye.LEFT]-this._padding[ye.LEFT],this._viewport[1]+=e[ye.BOTTOM]-this._padding[ye.BOTTOM],this._viewport[2]-=e[ye.RIGHT]+e[ye.LEFT]-(this._padding[ye.RIGHT]+this._padding[ye.LEFT]),this._viewport[3]-=e[ye.TOP]+e[ye.BOTTOM]-(this._padding[ye.TOP]+this._padding[ye.BOTTOM]),(0,Ce.c)(this._padding,e),this._viewProjectionDirty=!0,this._frustumDirty=!0,this.notifyChange("_padding"),this.notifyChange("_viewport"))}get viewProjectionMatrix(){return this._viewProjectionDirty&&((0,Re.lw)(this._viewProjectionMatrix,this.projectionMatrix,this.viewMatrix),this._viewProjectionDirty=!1),this._viewProjectionMatrix}get projectionMatrix(){return this._projectionMatrixInternal}get inverseProjectionMatrix(){return(0,Re.B8)((0,Oe.vt)(),this.projectionMatrix)||this._get("inverseProjectionMatrix")||(0,Oe.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,Me.j)(this.center,this.eye)}get frustum(){return this._recomputeFrustum(),this._frustum}get viewInverseTransposeMatrix(){return(this._viewInverseTransposeMatrixDirty||this._viewDirty)&&((0,Re.B8)(this._viewInverseTransposeMatrix,this.viewMatrix),(0,Re.mg)(this._viewInverseTransposeMatrix,this._viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),this._viewInverseTransposeMatrix}depthNDCToWorld(e){const t=2*e-1;return 2*this.near*this.far/(this.far+this.near-t*(this.far-this.near))}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,o=-r/2+this.column*n,a=o+n,l=-i/2+this.row*s,c=l+s,h=(0,Re.$h)((0,Oe.vt)(),o*(1+2*this._padding[ye.LEFT]/e),a*(1+2*this._padding[ye.RIGHT]/e),l*(1+2*this._padding[ye.BOTTOM]/t),c*(1+2*this._padding[ye.TOP]/t),this.near,this.far),d=this._get("projectionMatrix");return d&&(0,Re.aI)(d,h)?d:h}copyFrom(e){(0,Me.c)(this._ray.origin,e.eye),this.center=e.center,this.up=e.up,(0,Ce.c)(this._viewport,e.viewport),this.notifyChange("_viewport"),(0,Ce.c)(this._padding,e.padding),this.notifyChange("_padding"),(0,Q.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,Re.C)(this._viewMatrix,e.viewMatrix),this.notifyChange("_viewMatrix")),this._viewProjectionDirty=!0,this._frustumDirty=t._frustumDirty,this._frustumDirty||((0,Ee.C)(this._frustum,e.frustum),this._frustumDirty=!1),t._viewInverseTransposeMatrixDirty?this._viewInverseTransposeMatrixDirty=!0:((0,Re.C)(this._viewInverseTransposeMatrix,e.viewInverseTransposeMatrix),this._viewInverseTransposeMatrixDirty=!1),(0,Ce.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 xe).copyFrom(this)}equals(e){return(0,Me.p)(this.eye,e.eye)&&(0,Me.p)(this.center,e.center)&&(0,Me.p)(this.up,e.up)&&(0,Ce.a)(this._viewport,e.viewport)&&(0,Ce.a)(this._padding,e.padding)&&(0,Q.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,Ce.d)(e.screenPadding,this.screenPadding)>=t||(0,Ce.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,Me.a)(Ne,e.eye,e.center),(0,Me.a)(He,this.eye,this.center);const i=(0,Me.f)(Ne,He),r=(0,Me.z)(Ne),s=(0,Me.z)(He),n=5e-4;return i*i>=(1-1e-10)*r*s&&(0,Me.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,Le.gr)(this.viewForward,(0,Me.d)(Ne,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,Ie.gs)()){return e[0]=(this.padding[ye.LEFT]+this.width/2)/this.pixelRatio,e[1]=(this.padding[ye.TOP]+this.height/2)/this.pixelRatio,e}getRenderCenter(e,t=.5,i=.5){return e[0]=this.padding[ye.LEFT]+this.width*t,e[1]=this.padding[ye.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!==ze&&(0,Me.c)(ze,e),ze[3]=1,(0,Ce.t)(ze,ze,this.projectionMatrix);const i=Math.abs(ze[3]);(0,Me.h)(ze,ze,1/i);const r=this.fullViewport;t[0]=(0,ee.Cc)(0,r[0]+r[2],.5+.5*ze[0]),t[1]=(0,ee.Cc)(0,r[1]+r[3],.5+.5*ze[1]),t[2]=.5*(ze[2]+1),t[3]=i}unapplyProjection(e,t){const i=this.fullViewport;ze[0]=(e[0]/(i[0]+i[2])*2-1)*e[3],ze[1]=(e[1]/(i[1]+i[3])*2-1)*e[3],ze[2]=(2*e[2]-1)*e[3],ze[3]=e[3],null!=this.inverseProjectionMatrix&&((0,Ce.t)(ze,ze,this.inverseProjectionMatrix),t[0]=ze[0],t[1]=ze[1],t[2]=ze[2])}projectToScreen(e,t){return this.projectToRenderScreen(e,je),this.renderToScreen(je,t),t}projectToRenderScreen(e,t){if(ze[0]=e[0],ze[1]=e[1],ze[2]=e[2],ze[3]=1,(0,Ce.t)(ze,ze,this.viewProjectionMatrix),0===ze[3])return null;const i=ze;(0,Me.h)(i,i,1/Math.abs(ze[3]));const r=this.fullViewport,s=(0,ee.Cc)(0,r[0]+r[2],.5+.5*i[0]),n=(0,ee.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,je),t)}unprojectFromRenderScreen(e,t){if((0,Re.lw)(Be,this.projectionMatrix,this.viewMatrix),!(0,Re.B8)(Be,Be))return null;const i=this.fullViewport;return ze[0]=2*(e[0]-i[0])/i[2]-1,ze[1]=2*(e[1]-i[1])/i[3]-1,ze[2]=2*e[2]-1,ze[3]=1,(0,Ce.t)(ze,ze,Be),0===ze[3]?null:(t[0]=ze[0]/ze[3],t[1]=ze[1]/ze[3],t[2]=ze[2]/ze[3],t)}constrainWindowSize(e,t,i,r){const s=e*this.pixelRatio,n=t*this.pixelRatio,o=Math.max(s-i/2,0),a=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(o),Math.round(a),Math.round(h),Math.round(d)]}computeUp(e){e===W.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,Me.d)(Ne,this.center,this.eye);const e=(0,Me.l)(this.center);e<1?((0,Me.i)(this._up,0,0,1),this._markViewDirty(),this.notifyChange("_up")):Math.abs((0,Me.f)(Ne,this.center))>.9999*(0,Me.l)(Ne)*e||((0,Me.e)(this._up,Ne,this.center),(0,Me.e)(this._up,this._up,Ne),(0,Me.n)(this._up,this._up),this.notifyChange("_up"),this._markViewDirty())}_computeUpLocal(){(0,Me.o)(Ne,this.eye,this.center),Math.abs(Ne[2])<=.9999&&((0,Me.h)(Ne,Ne,Ne[2]),(0,Me.i)(this._up,-Ne[0],-Ne[1],1-Ne[2]),(0,Me.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,Me.p)(e,t)||((0,Me.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,Ee.ui)(this.viewMatrix,this.projectionMatrix,this._frustum),this._frustumDirty=!1)}_ensureViewClean(){this._viewDirty&&((0,Re.t5)(this._viewMatrix,this.eye,this.center,this.up),this.notifyChange("_viewMatrix"),this._viewDirty=!1,this._viewInverseTransposeMatrixDirty=!0)}};(0,r._)([(0,a.MZ)()],De.prototype,"_viewport",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"_padding",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"_fov",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"_nearFar",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"_viewDirty",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"_viewMatrix",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"_pixelRatio",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"pixelRatio",null),(0,r._)([(0,a.MZ)()],De.prototype,"row",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"column",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"_rows",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"rows",null),(0,r._)([(0,a.MZ)()],De.prototype,"_columns",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"columns",null),(0,r._)([(0,a.MZ)()],De.prototype,"eye",null),(0,r._)([(0,a.MZ)()],De.prototype,"center",null),(0,r._)([(0,a.MZ)()],De.prototype,"_center",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"up",null),(0,r._)([(0,a.MZ)()],De.prototype,"_up",void 0),(0,r._)([(0,a.MZ)()],De.prototype,"viewMatrix",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"viewForward",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"viewUp",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"viewRight",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"nearFar",null),(0,r._)([(0,a.MZ)()],De.prototype,"near",null),(0,r._)([(0,a.MZ)()],De.prototype,"far",null),(0,r._)([(0,a.MZ)()],De.prototype,"viewport",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"screenViewport",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"screenPadding",null),(0,r._)([(0,a.MZ)()],De.prototype,"x",null),(0,r._)([(0,a.MZ)()],De.prototype,"y",null),(0,r._)([(0,a.MZ)()],De.prototype,"width",null),(0,r._)([(0,a.MZ)()],De.prototype,"height",null),(0,r._)([(0,a.MZ)()],De.prototype,"fullWidth",null),(0,r._)([(0,a.MZ)()],De.prototype,"fullHeight",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"_aspect",null),(0,r._)([(0,a.MZ)()],De.prototype,"padding",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"projectionMatrix",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"inverseProjectionMatrix",null),(0,r._)([(0,a.MZ)()],De.prototype,"fov",null),(0,r._)([(0,a.MZ)()],De.prototype,"fovX",null),(0,r._)([(0,a.MZ)()],De.prototype,"fovY",null),(0,r._)([(0,a.MZ)()],De.prototype,"viewInverseTransposeMatrix",null),(0,r._)([(0,a.MZ)({readOnly:!0})],De.prototype,"_projectionMatrixInternal",null),(0,r._)([(0,a.MZ)()],De.prototype,"relativeElevation",void 0),De=xe=(0,r._)([(0,h.$)("esri.views.3d.webgl.RenderCamera")],De);const Pe=De,ze=(0,J.vt)(),Be=(0,Oe.vt)(),Ne=(0,P.vt)(),He=(0,P.vt)(),je=(0,Ie.r_)();var Ge=i(39341);class Ve{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}}Ve.zero=new Ve(0,0);var Ue=i(62258),qe=i(78230),Ze=i(620),ke=i(77690),We=i(29242),Ye=i(13030),$e=i(32728),Xe=i(48852),Je=i(63907);class Qe{constructor(e,t,i){this._elementSize=t,this._buffer=Xe.g.createVertex(e,Je._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 Ke{constructor(e){this.modelOriginHi=e.getField(Te.r.INSTANCEMODELORIGINHI,Ye.xs),this.modelOriginLo=e.getField(Te.r.INSTANCEMODELORIGINLO,Ye.xs),this.model=e.getField(Te.r.INSTANCEMODEL,Ye.jZ),this.modelNormal=e.getField(Te.r.INSTANCEMODELNORMAL,Ye.jZ),this.featureAttribute=e.getField(Te.r.INSTANCEFEATUREATTRIBUTE,Ye.Eq),this.color=e.getField(Te.r.INSTANCECOLOR,Ye.XP),this.objectAndLayerIdColor=e.getField(Te.r.INSTANCEOBJECTANDLAYERIDCOLOR,Ye.XP)}}class et{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,Ze.vA)(!this._updating,"already updating"),this._updating=!0,this._prevHeadIndex=this._headIndex}endUpdate(){(0,Ze.vA)(this._updating,"not updating"),this.size<_.$U*this.capacity&&this._shrink(),this._resized?(this._buffer.transferAll(),this._resized=!1):this._transferRange(this._prevHeadIndex,this._headIndex),this._updating=!1}allocateHead(){(0,Ze.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,Ze.vA)(this._headIndex!==this._tailIndex,"invalid pointers"),e}freeTail(){(0,Ze.vA)(this._updating,"not updating"),(0,Ze.vA)(this.size>0,"invalid size");const e=this._tailIndex===this._firstIndex;this._incrementTail(),e&&(this._firstIndex=this._tailIndex)}_grow(){const e=Math.max(tt,Math.floor(this._capacity*_.Ji));this._resize(e)}_shrink(){const e=Math.max(tt,Math.floor(this._capacity*_.He));this._resize(e)}_resize(e){if((0,Ze.vA)(this._updating,"not updating"),e===this._capacity)return;const t=new Qe(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,Ze.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 Ke(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 tt=64;var it;!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"}(it||(it={}));class rt{constructor(e){this.localTransform=e.getField(Te.r.LOCALTRANSFORM,Ye.E$),this.globalTransform=e.getField(Te.r.GLOBALTRANSFORM,Ye.E$),this.modelOrigin=e.getField(Te.r.MODELORIGIN,Ye.Xm),this.model=e.getField(Te.r.INSTANCEMODEL,Ye.jZ),this.modelNormal=e.getField(Te.r.INSTANCEMODELNORMAL,Ye.jZ),this.modelScaleFactors=e.getField(Te.r.MODELSCALEFACTORS,Ye.gH),this.boundingSphere=e.getField(Te.r.BOUNDINGSPHERE,Ye.Aj),this.featureAttribute=e.getField(Te.r.FEATUREATTRIBUTE,Ye.Eq),this.color=e.getField(Te.r.COLOR,Ye.XP),this.objectAndLayerIdColor=e.getField(Te.r.OBJECTANDLAYERIDCOLOR,Ye.XP),this.state=e.getField(Te.r.STATE,Ye.SL),this.lodLevel=e.getField(Te.r.LODLEVEL,Ye.SL)}}let st=class extends p.A{constructor(e,t){super(e),this.events=new s.A,this._capacity=0,this._size=0,this._next=0,this._highlightGroupMap=new Map,this._highlightGroupMapPrev=new Map,this._layout=function(e){let t=(0,Se.BP)().mat4f64(Te.r.LOCALTRANSFORM).mat4f64(Te.r.GLOBALTRANSFORM).vec4f64(Te.r.BOUNDINGSPHERE).vec3f64(Te.r.MODELORIGIN).mat3f(Te.r.INSTANCEMODEL).mat3f(Te.r.INSTANCEMODELNORMAL).vec2f(Te.r.MODELSCALEFACTORS);return e.includes(Te.r.FEATUREATTRIBUTE)&&(t=t.vec4f(Te.r.FEATUREATTRIBUTE)),e.includes(Te.r.COLOR)&&(t=t.vec4u8(Te.r.COLOR)),e.includes(Te.r.OBJECTANDLAYERIDCOLOR)&&(t=t.vec4u8(Te.r.OBJECTANDLAYERIDCOLOR)),t=t.u8(Te.r.STATE).u8(Te.r.LODLEVEL),t}(t),this._capacity=tt,this._buffer=this._layout.createBuffer(this._capacity),this._view=new rt(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,it.ALLOCATED),this._size++,this.events.emit("instances-changed"),e}removeInstance(e){const t=this._view.state;(0,Ze.vA)(e>=0&&e<this._capacity&&!!(t.get(e)&it.ALLOCATED),"invalid instance handle"),this._getStateFlag(e,it.ACTIVE)?this._setStateFlags(e,it.REMOVE):this.freeInstance(e),this.events.emit("instances-changed")}freeInstance(e){const t=this._view.state;(0,Ze.vA)(e>=0&&e<this._capacity&&!!(t.get(e)&it.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=nt,r=ot;t.localTransform.getMat(e,at),t.globalTransform.getMat(e,lt);const s=(0,Re.lw)(lt,lt,at);(0,Me.i)(i,s[12],s[13],s[14]),t.modelOrigin.setVec(e,i),(0,ke.z0)(r,s),t.model.setMat(e,r);const n=(0,$e.wp)(nt,s);n.sort(),t.modelScaleFactors.set(e,0,n[1]),t.modelScaleFactors.set(e,1,n[2]),(0,ke.B8)(r,r),(0,ke.mg)(r,r),t.modelNormal.setMat(e,r),this._setStateFlags(e,it.TRANSFORM_CHANGED),this.events.emit("instance-transform-changed",{index:e})}getModelTransform(e,t){const i=this._view;i.model.getMat(e,ot),i.modelOrigin.getVec(e,nt),t[0]=ot[0],t[1]=ot[1],t[2]=ot[2],t[3]=0,t[4]=ot[3],t[5]=ot[4],t[6]=ot[5],t[7]=0,t[8]=ot[6],t[9]=ot[7],t[10]=ot[8],t[11]=0,t[12]=nt[0],t[13]=nt[1],t[14]=nt[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(nt,this,e),t*=Math.max(nt[0],nt[1],nt[2])),t}getCombinedMedianScaleFactor(e){let t=this._view.modelScaleFactors.get(e,0);return null!=this.shaderTransformation&&(this.shaderTransformation.scaleFactor(nt,this,e),t*=function(e,t,i){return Math.max(Math.min(e,t),Math.min(Math.max(e,t),i))}(nt[0],nt[1],nt[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,it.VISIBLE,t),this.events.emit("instance-visibility-changed",{index:e}))}getVisible(e){return this._getStateFlag(e,it.VISIBLE)}setHighlight(e,t){const{_highlightGroupMap:i}=this,r=i.get(e);t?t!==r&&(i.set(e,t),this._setStateFlag(e,it.HIGHLIGHT,!0),this.events.emit("instance-highlight-changed")):r&&(i.delete(e),this._setStateFlag(e,it.HIGHLIGHT,!1),this.events.emit("instance-highlight-changed"))}get highlightGroupMap(){return this._highlightGroupMap}getHighlightStateFlag(e){return this._getStateFlag(e,it.HIGHLIGHT)}geHighlightGroupPrev(e){const t=this._highlightGroupMapPrev.get(e)??null;return this._highlightGroupMapPrev.delete(e),t}getHighlightGroup(e){const t=this.highlightGroupMap.get(e)??null;return t?this._highlightGroupMapPrev.set(e,t):this._highlightGroupMapPrev.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(tt,Math.floor(this._capacity*_.Ji)),this._buffer=this._layout.createBuffer(this._capacity).copyFrom(this._buffer),this._view=new rt(this._buffer)}_findSlot(){const e=this._view.state;let t=this._next;for(;e.get(t)&it.ALLOCATED;)t=t+1===this._capacity?0:t+1;return this._next=t+1===this._capacity?0:t+1,t}};(0,r._)([(0,a.MZ)({constructOnly:!0})],st.prototype,"shaderTransformation",void 0),(0,r._)([(0,a.MZ)()],st.prototype,"_size",void 0),(0,r._)([(0,a.MZ)({readOnly:!0})],st.prototype,"size",null),st=(0,r._)([(0,h.$)("esri.views.3d.webgl-engine.lib.lodRendering.InstanceData")],st);const nt=(0,P.vt)(),ot=(0,We.vt)(),at=(0,Oe.vt)(),lt=(0,Oe.vt)();var ct=i(97937);class ht extends qe.A{constructor(e,t){super((e=>(0,ct.w)(this._instanceData.view.boundingSphere.getVec(e,this._tmpSphere))),{maximumDepth:25}),this._instanceData=e,this._boundingSphere=t,this._tmpSphere=(0,ct.c)(),this._tmpMat4=(0,Oe.vt)()}addInstance(e){const t=this._instanceData.view.boundingSphere,i=this._instanceData.getCombinedModelTransform(e,this._tmpMat4);(0,Me.t)((0,ct.a)(this._tmpSphere),this._boundingSphere.center,i),this._tmpSphere[3]=this._boundingSphere.radius*(0,$e.hG)(i),t.setVec(e,this._tmpSphere),this.add([e])}removeInstance(e){this.remove([e])}}class dt{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}}i(65215);var ut=i(86305);i(16396);class ft{get ray(){return this._ray}get distanceInRenderSpace(){return null!=this.dist?((0,Me.h)(pt,this.ray.direction,this.dist),(0,Me.l)(pt)):null}withinDistance(e){return!!(0,ut.i3)(this)&&this.distanceInRenderSpace<=e}getIntersectionPoint(e){return!!(0,ut.i3)(this)&&((0,Me.h)(pt,this.ray.direction,this.dist),(0,Me.g)(e,this.ray.origin,pt),!0)}getTransformedNormal(e){return(0,Me.c)(_t,this.normal),_t[3]=0,(0,Ce.t)(_t,_t,this.transformation),(0,Me.c)(e,_t),(0,Me.n)(e,e)}constructor(e){this.intersector=Ue.dz.OBJECT,this.normal=(0,P.vt)(),this.transformation=(0,Oe.vt)(),this._ray=(0,Fe.vt)(),this.init(e)}init(e){this.dist=null,this.target=null,this.drapedLayerOrder=null,this.drapedLayerGraphicOrder=null,this.intersector=Ue.dz.OBJECT,(0,Fe.C)(e,this._ray)}set(e,t,i,r,s,n,o){this.intersector=e,this.dist=i,(0,Me.c)(this.normal,r??P.Cb),(0,Re.C)(this.transformation,s??Oe.zK),this.target=t,this.drapedLayerOrder=n,this.drapedLayerGraphicOrder=o}copy(e){(0,Fe.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,Me.c)(this.normal,e.normal),(0,Re.C)(this.transformation,e.transformation)}}const pt=(0,P.vt)(),_t=(0,J.vt)();var mt=i(42293);const gt=()=>c.A.getLogger("esri.views.webgl.VertexArrayObject");let vt=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))*w.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,X.WD)(this._indexBuffer),this.disposeVAOOnly()):(this._glName||this._buffers.size>0)&&gt().warn("Leaked WebGL VAO")}disposeVAOOnly(){this._glName&&(this._context.gl.deleteVertexArray(this._glName),this._glName=null,this._context.instanceCounter.decrement(Je.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(Je.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||gt().error("Vertex buffer dictionary is empty!");const r=this._context.gl;this._buffers.forEach(((e,i)=>{const r=t.get(i);r?(0,mt.yu)(this._context,this._locations,e,r):gt().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 yt extends vt{}var xt=i(87582);class wt{constructor(e,t){const i=e.renderContext.rctx,r=t.geometry;let s=null;s=r instanceof be.J?function(e,t,i,r=null){const s=e.createBufferWriter(),n=s.vertexBufferLayout,o=s.elementCount(t),a=n.createBuffer(o);return s.write(null,null,t,r,a,0),{material:e,vertexBufferLayout:n,buffer:a.buffer,elementCount:o,boundingInfo:i}}(r.material,r.attributes,r.boundingInfo):r;const n=s.material;this._materials=e.materials,n.setParameters({instancedDoublePrecision:!0}),this.geometry=r,this.material=n,this.glMaterials=new fe(n,this._materials),this.vertexBufferLayout=s.vertexBufferLayout,this.vbo=Xe.g.createVertex(i,Je._U.STATIC_DRAW,s.buffer),this.vao=new yt(i,Ge.D,new Map([["geometry",(0,oe.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,o,a){if(!(this.geometry instanceof be.J))return;const l=this.geometry.id;this.material.intersect(this.geometry,e.transform.transform,e,i,r,((i,r,c,h,d)=>{if(i>=0){if(null!=t&&!t(e.rayBegin,e.rayEnd,i))return;const h=new xt.h(n.layerUid,n.graphicUid(s),l,c,o,a);if((null==e.results.min.drapedLayerOrder||d>=e.results.min.drapedLayerOrder)&&(null==e.results.min.dist||i<e.results.min.dist)&&e.results.min.set(Ue.dz.LOD,h,i,r,e.transform.transform,d),e.options.store!==Ue.oH.MIN&&(null==e.results.max.drapedLayerOrder||d>=e.results.max.drapedLayerOrder)&&(null==e.results.max.dist||i>e.results.max.dist)&&e.results.max.set(Ue.dz.LOD,h,i,r,e.transform.transform,d),e.options.store===Ue.oH.ALL){const t=function(e){return new ft(e)}(e.results.min.ray);t.set(Ue.dz.LOD,h,i,r,e.transform.transform,d),e.results.all.push(t)}}}))}}class bt{static async create(e,t,i){const r=await Promise.allSettled(t.components.map((t=>e.controller.schedule((()=>new wt(e,t)),i)))),s=r.map((e=>"fulfilled"===e.status?e.value:null)).filter(_.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 bt(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,o){this.components.forEach((a=>a.intersect(e,t,i,r,s,n,this.boundingSphere,o)))}get boundingBox(){if(null==this._boundingBox){const e=(0,z.Ie)();this.components.forEach((t=>{null!=t.boundingInfo&&((0,z.iT)(e,t.boundingInfo.bbMin),(0,z.iT)(e,t.boundingInfo.bbMax))})),this._boundingBox=e}return this._boundingBox}get boundingSphere(){if(null==this._boundingSphere){const e=this.boundingBox,t=(0,P.vt)();(0,z.gX)(e,t),this._boundingSphere={center:t,radius:.5*(0,z._F)(e)}}return this._boundingSphere}get triangleCount(){return this.components.reduce(((e,t)=>e+t.triangleCount),0)}}var Tt=i(43616),At=i(28449);const Ot=(0,P.vt)(),Mt=new Float32Array(6);var St=i(97225),It=i(63076);let Rt=class extends de{constructor(e,t){super(e),this.type=Ue.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 Pe,this._updateCyclesWithStaticCamera=-1,this._needFullCycle=!1,this.produces=new Map([[pe.N.OPAQUE_MATERIAL,e=>this._produces(e)],[pe.N.TRANSPARENT_MATERIAL,e=>!!this._hasTransparentLevels()&&this._produces(e)]]),this._instanceData=new st({shaderTransformation:e.shaderTransformation},e.optionalFields),this.addHandles(t.registerTask(It.W6.LOD_RENDERER,this))}initialize(){this._instanceBufferLayout=function(e){let t=(0,Se.BP)().vec3f(Te.r.INSTANCEMODELORIGINHI).vec3f(Te.r.INSTANCEMODELORIGINLO).mat3f(Te.r.INSTANCEMODEL).mat3f(Te.r.INSTANCEMODELNORMAL);return null!=e&&e.includes("featureAttribute")&&(t=t.vec4f(Te.r.INSTANCEFEATUREATTRIBUTE)),null!=e&&e.includes("color")&&(t=t.vec4u8(Te.r.INSTANCECOLOR)),null!=e&&e.includes("objectAndLayerIdColor")&&(t=t.vec4u8(Te.r.INSTANCEOBJECTANDLAYERIDCOLOR)),t}(this.optionalFields),this._glInstanceBufferLayout=(0,oe.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}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 et(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=>bt.create(e,i,t)))),r=i.map((e=>"fulfilled"===e.status?e.value:null)).filter(_.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 dt(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(pe.N.TRANSPARENT_MATERIAL);return t?.(ae.V.Color)}))))}hasHighlights(){return(0,Ae.Bs)(this._highlightRenderInstanceDataMap,(e=>e.some((e=>e.size>0))))}_produces(e){return e!==ae.V.Highlight&&e!==ae.V.ShadowHighlight||this.hasHighlights()}prepareRender(e){if(!te.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(It.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===ae.V.Highlight,s=!r&&t!==ae.V.ShadowHighlight,n=t!==ae.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,P.vt)();(0,Me.d)(s,r,i);const n=s=>{this._instanceData.getCombinedModelTransform(s,Lt),e.transform.set(Lt),(0,Me.t)(Dt,i,e.transform.inverse),(0,Me.t)(Pt,r,e.transform.inverse);const n=this._instanceData.getState(s),o=this._instanceData.getLodLevel(s),a=this._levels.length;(0,Ze.vA)(!!(n&it.ACTIVE),"invalid instance state"),(0,Ze.vA)(o>=0&&o<a,"invaid lod level"),this._levels[o].intersect(e,t,Dt,Pt,s,this.metadata,a)};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 ht(e,this.baseBoundingSphere);for(let i=0;i<e.capacity;++i)t.get(i)&it.ACTIVE&&this._octreeCached.addInstance(i)}return this._octreeCached}_invalidateOctree(){this._octreeCached=(0,X.pR)(this._octreeCached)}queryDepthRange(e){if(null==this._octree)return new Ve;const t=e.viewForward,i=this._octree.findClosest(t,qe.A.DepthOrder.FRONT_TO_BACK,e.frustum),r=this._octree.findClosest(t,qe.A.DepthOrder.BACK_TO_FRONT,e.frustum);if(null==i||null==r)return new Ve;const s=e.eye,n=this._instanceData.view;n.boundingSphere.getVec(i,Ft),(0,Me.d)(Ft,Ft,s);const o=(0,Me.f)(Ft,t)-Ft[3];n.boundingSphere.getVec(r,Ft),(0,Me.d)(Ft,Ft,s);const a=(0,Me.f)(Ft,t)+Ft[3];return new Ve(o,a)}_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 o=s.size;const a=s.capacity;let l=this._instanceIndex;const c=Math.ceil(a/500);for(let h=0;h<o&&!e.done;++h){l===this._cycleStartIndex&&this._startUpdateCycle();const h=n.state.get(l);let d=0;if(!(h&it.ALLOCATED)){l=l+1===a?0:l+1,o++;continue}const u=n.lodLevel.get(l);if(h&it.DEFAULT_ACTIVE&&this._defaultRenderInstanceData[u].freeTail(),h&it.HIGHLIGHT_ACTIVE){const e=s.geHighlightGroupPrev(l);if(e){const t=this._highlightRenderInstanceDataMap.get(e);if(!t)throw new L.A("Internal error in lodRenderer");t[u].freeTail()}}if(h&it.REMOVE)s.freeInstance(l);else if(h&it.VISIBLE){let e=0;if(t&&(n.modelOrigin.getVec(l,Et),e=r.selectLevel(Et,s.getCombinedMedianScaleFactor(l),i)),d=h&~(it.ACTIVE|it.TRANSFORM_CHANGED),e>=0)if(h&it.HIGHLIGHT){const t=s.getHighlightGroup(l);if(t){const i=()=>{const e=this._createRenderInstanceDataArray();return e.forEach((e=>e.beginUpdate())),e},r=(0,Ae.tE)(this._highlightRenderInstanceDataMap,t,i);if(e>=r.length)throw new L.A(`LodRenderer internal error - missing lodLevel ${e}`);Ct(r[e],n,l)}d|=it.HIGHLIGHT_ACTIVE}else Ct(this._defaultRenderInstanceData[e],n,l),d|=it.DEFAULT_ACTIVE;n.state.set(l,d),n.lodLevel.set(l,e)}else d=h&~(it.ACTIVE|it.TRANSFORM_CHANGED),n.state.set(l,d);if(null!=this._octreeCached){const e=!!(h&it.ACTIVE),t=!!(d&it.ACTIVE);!e&&t?this._octreeCached.addInstance(l):e&&!t?this._octreeCached.removeInstance(l):e&&t&&h&it.TRANSFORM_CHANGED&&(this._octreeCached.removeInstance(l),this._octreeCached.addInstance(l))}l=l+1===a?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:o}=e;o.runAppleAmdDriverHelper();const a=o.bindTechnique(t,n,r.material.parameters,Bt);o.bindVAO(r.vao),t.ensureAttributeLocations(r.vao),te.b.LOD_INSTANCE_RENDERER_COLORIZE_BY_LEVEL&&e.output===ae.V.Color&&(a.setUniform4fv("externalColor",zt[Math.min(s,zt.length-1)]),a.setUniform1i("colorMixMode",Tt.Um.replace));const l=i.capacity,c=i.headIndex,h=i.tailIndex,d=i.firstIndex,u=this._glInstanceBufferLayout,f=(e,s)=>{(0,mt.yu)(o,Ge.D,i.buffer,u,e),o.drawArraysInstanced(t.primitiveType,0,r.vertexCount,s-e),(0,mt.Hi)(o,Ge.D,i.buffer,u)};r.material.parameters.transparent&&null!=d?c>h?((0,Ze.vA)(d>=h&&d<=c,"invalid firstIndex"),f(d,c),f(h,d)):c<h&&(d<=c?((0,Ze.vA)(d>=0&&d<=c,"invalid firstIndex"),f(d,c),f(h,l),f(0,d)):((0,Ze.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)),o.bindVAO(null)}};function Ct(e,t,i){const r=e.allocateHead();!function(e,t,i,r){(function(e,t,i,r,s){Ot[0]=e.get(t,0),Ot[1]=e.get(t,1),Ot[2]=e.get(t,2),(0,At.jS)(Ot,Mt,3),i.set(s,0,Mt[0]),r.set(s,0,Mt[1]),i.set(s,1,Mt[2]),r.set(s,1,Mt[3]),i.set(s,2,Mt[4]),r.set(s,2,Mt[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,a.MZ)({constructOnly:!0})],Rt.prototype,"symbol",void 0),(0,r._)([(0,a.MZ)({constructOnly:!0})],Rt.prototype,"optionalFields",void 0),(0,r._)([(0,a.MZ)({constructOnly:!0})],Rt.prototype,"metadata",void 0),(0,r._)([(0,a.MZ)({constructOnly:!0})],Rt.prototype,"shaderTransformation",void 0),(0,r._)([(0,a.MZ)()],Rt.prototype,"_instanceData",void 0),(0,r._)([(0,a.MZ)()],Rt.prototype,"_cycleStartIndex",void 0),(0,r._)([(0,a.MZ)({readOnly:!0})],Rt.prototype,"_enableLevelSelection",null),(0,r._)([(0,a.MZ)()],Rt.prototype,"_updateCyclesWithStaticCamera",void 0),(0,r._)([(0,a.MZ)({readOnly:!0})],Rt.prototype,"running",null),Rt=(0,r._)([(0,h.$)("esri.views.3d.webgl-engine.lib.lodRendering.LodRenderer")],Rt);const Et=(0,P.vt)(),Ft=(0,J.vt)(),Lt=(0,Oe.vt)(),Dt=(0,P.vt)(),Pt=(0,P.vt)(),zt=[(0,J.fA)(1,0,1,1),(0,J.fA)(0,0,1,1),(0,J.fA)(0,1,0,1),(0,J.fA)(1,1,0,1),(0,J.fA)(1,0,0,1)],Bt=new St.V;class Nt{constructor(e,t=null){this.geometry=e,this.textures=t}get material(){return this.geometry.material}get numTriangles(){return this.geometry instanceof be.J?this.geometry.indexCount/3:this.geometry.elementCount/3}}class Ht{constructor(e,t,i){this.components=e,this.minScreenSpaceRadius=t,this.pivotOffset=i;const r=(0,_.Am)(this.components.map((e=>e.geometry)));this.numVertices=r.reduce(((e,t)=>e+function(e){return e instanceof be.J?e.attributes.get(Te.r.POSITION).indices.length:e.elementCount}(t)),0)}}class jt{constructor(e){this.levels=e,this.levels.sort(((e,t)=>e.minScreenSpaceRadius===t.minScreenSpaceRadius?e.numVertices-t.numVertices:e.minScreenSpaceRadius-t.minScreenSpaceRadius))}}let Gt=class{constructor(e){this._optionalFields=new Array,this._featureIdToInstanceIndex=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;let i=0;if(t){const e=[],r=[];t.levels.forEach((t=>t.components.forEach((t=>{t.geometry instanceof be.J||e.push(t.geometry),t.textures&&r.push(...t.textures)}))));const s=(0,_.Am)(e).reduce(((e,t)=>e+t.buffer.byteLength+w.i5),0);i=(0,_.Am)(r).reduce(((e,t)=>e+t.memoryEstimate),0)+s}return i+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(Te.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=i.createBufferWriter(),s={material:i,vertexBufferLayout:r.vertexBufferLayout,buffer:t.renderGeometryBuffer.data,elementCount:t.renderGeometryBuffer.elementCount,boundingInfo:t.boundingInfo};return new Nt(s)}));return new Ht(i,t.minScreenSpaceRadius)}));return new jt(i)}((e=>t(e)),e),s=this.view._stage,o=function(e){const t=[];return e.levels.forEach((e=>e.components.forEach((e=>t.push(e.geometry.material))))),(0,_.Am)(t)}(r);s.addMany(o),this._addDisposeResource((()=>s.removeMany(o)));const a=function(e){const t=new Array;return e.levels.forEach((e=>e.components.forEach((e=>{null!=e.textures&&t.push(...e.textures)})))),(0,_.Am)(t)}(r);s.addMany(a),this._addDisposeResource((()=>{a.forEach((e=>e.unload())),s.removeMany(a)})),await Promise.all(a.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:o,textures:a}}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 o=n.instanceData,a=i.length;for(let e=0;e<a;++e){const t=i[e],n=o.addInstance(),a=o.view,l=16*e;a.localTransform.copyFromTypedBuffer(n,r,l),a.globalTransform.copyFromTypedBuffer(n,s,l),o.updateModelTransform(n),o.setVisible(n,!0),this._featureIdToInstanceIndex.set(t,n)}}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))}}_addDisposeResource(e){this._disposeResourceHandles.push(e)}async _createLodRenderer(e,t){const i=this.view._stage,r={layerUid:this.layerUid,graphicUid:e=>1,notifyGraphicGeometryChanged:e=>1,notifyGraphicVisibilityChanged:e=>1},s=new Rt({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}};Gt=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.rendering.LodRenderer")],Gt);var Vt=i(40804),Ut=i(48833);function qt(e,t,i){return i&&(t/=Math.SQRT2),Yt(e,((r,s)=>{let n=r-.5*e+.25,o=.5*e-s-.75;if(i){const e=(n+o)/Math.SQRT2;o=(o-n)/Math.SQRT2,n=e}return Math.max(Math.abs(n),Math.abs(o))-.5*t}))}function Zt(e,t,i,r=0){t-=r,i&&(t*=Math.SQRT2);const s=.5*t;return Yt(e,((t,n)=>{let o,a=t-.5*e,l=.5*e-n-1;if(i){const e=(a+l)/Math.SQRT2;l=(l-a)/Math.SQRT2,a=e}return a=Math.abs(a),l=Math.abs(l),o=a>l?a>s?Math.sqrt((a-s)*(a-s)+l*l):l:l>s?Math.sqrt(a*a+(l-s)*(l-s)):a,o-=r/2,o}))}function kt(e,t,i){return(r,s)=>{const n=r-e,o=s-t;return Math.sqrt(n*n+o*o)-i}}function Wt(e,t,i){const r=Math.sqrt(t*t+i*i);return(s,n)=>{const o=Math.abs(s-e)-i,a=n-e+t/2+.75,l=(t*o+i*a)/r,c=-a;return Math.max(l,c)}}function Yt(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 o=t(s,r);o=o/e+.5,(0,Vt.U)(o,i,4*n)}return i}var $t=i(11787);var Xt=i(78662),Jt=i(40268),Qt=i(35093),Kt=i(16943),ei=i(25634),ti=i(11725),ii=i(77194);class ri{constructor(){this.scale=0,this.factor=0,this.minScaleFactor=0}}var si=i(59907),ni=i(13259),oi=i(97220),ai=i(98958),li=i(59643),ci=i(33524),hi=i(90644);class di extends ai.w{constructor(e,t,r){super(e,t,new oi.$(ni.H,(()=>i.e(8241).then(i.bind(i,48241)))),r),this.primitiveType=t.occlusionPass?Je.WR.POINTS:Je.WR.TRIANGLES}initializePipeline(e){const{oitPass:t,hasPolygonOffset:i,draped:r,output:s,depthTestEnabled:n,occlusionPass:o}=e,a=t===li.Y.NONE,l=t===li.Y.ColorAlpha,c=s===ae.V.Highlight,h=n&&!r&&!l&&!o&&!c;return(0,hi.Ey)({blending:(0,ae.RN)(s)?a?hi.Os:(0,ci.ez)(t):null,depthTest:n&&!r?{func:Je.MT.LEQUAL}:null,depthWrite:h?hi.Uy:null,drawBuffers:(0,ci.m6)(t,s),colorWrite:hi.kn,polygonOffset:i?ui:null})}}const ui={factor:0,units:-4};var fi=i(53466),pi=i(22911),_i=i(51976),mi=i(35256);class gi extends mi.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=fi.I.None,this.emissionSource=pi.ZX.None,this.discardInvisibleFragments=!0,this.hasVvInstancing=!1}}(0,r._)([(0,_i.W)()],gi.prototype,"screenCenterOffsetUnitsEnabled",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"occlusionTestEnabled",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"signedDistanceFieldEnabled",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"sampleSignedDistanceFieldTexelCenter",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"vvSize",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"vvColor",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"hasVerticalOffset",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"hasScreenSizePerspective",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"hasRotation",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"debugDrawLabelBorder",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"hasPolygonOffset",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"depthTestEnabled",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"pixelSnappingEnabled",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"draped",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"terrainDepthTest",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"cullAboveTerrain",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"occlusionPass",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"occludedFragmentFade",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"objectAndLayerIdColorInstanced",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"horizonCullingEnabled",void 0),(0,r._)([(0,_i.W)()],gi.prototype,"isFocused",void 0);class vi extends ti.im{constructor(e,t){super(e,Gi),this.produces=new Map([[pe.N.HUD_MATERIAL,e=>(0,ae.Mb)(e)&&!this.parameters.drawAsLabel],[pe.N.LABEL_MATERIAL,e=>(0,ae.Mb)(e)&&this.parameters.drawAsLabel],[pe.N.OCCLUSION_PIXELS,()=>this.parameters.occlusionTest],[pe.N.DRAPED_MATERIAL,e=>this.parameters.draped&&(0,ae.Mb)(e)]]),this._visible=!0,this._configuration=new gi(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===pe.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===pe.N.OCCLUSION_PIXELS,(0,ae.RN)(e)&&(this._configuration.debugDrawLabelBorder=!!te.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:o,hud:a,excludeLabels:l},point:c,camera:h}=i,{parameters:d}=this;if(!o||!a||l&&d.isLabel||!e.visible||!c)return;const{scaleX:u,scaleY:f}=this._getScreenScale(e,h.pixelRatio);(0,ke.z0)(Ci,t),e.attributes.has(Te.r.FEATUREATTRIBUTE)&&function(e){const t=e[0],i=e[1],r=e[2],s=e[3],n=e[4],o=e[5],a=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+o*o),u=1/Math.sqrt(a*a+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]=o*d,e[6]=a*u,e[7]=l*u,e[8]=c*u}(Ci);const p=e.attributes.get(Te.r.POSITION),_=e.attributes.get(Te.r.SIZE),m=e.attributes.get(Te.r.NORMAL),g=e.attributes.get(Te.r.ROTATION),v=e.attributes.get(Te.r.CENTEROFFSETANDDISTANCE);(0,Ze.vA)(p.size>=3);const y=(0,ni.c)(d),x="screen"===this.parameters.centerOffsetUnits;for(let e=0;e<p.data.length/p.size;e++){const r=e*p.size;(0,Me.i)(Ti,p.data[r],p.data[r+1],p.data[r+2]),(0,Me.t)(Ti,Ti,t),(0,Me.t)(Ti,Ti,h.viewMatrix);const s=e*v.size;if((0,Me.i)(Li,v.data[s],v.data[s+1],v.data[s+2]),!x&&(Ti[0]+=Li[0],Ti[1]+=Li[1],0!==Li[2])){const e=Li[2];(0,Me.n)(Li,Ti),(0,Me.d)(Ti,Ti,(0,Me.h)(Li,Li,e))}const o=e*m.size;if((0,Me.i)(Ai,m.data[o],m.data[o+1],m.data[o+2]),xi(Ai,Ci,h,zi),this._applyVerticalOffsetTransformationView(Ti,zi,h,bi),h.applyProjection(Ti,Oi),Oi[0]>-1){x&&(Li[0]||Li[1])&&(Oi[0]+=Li[0]*h.pixelRatio,0!==Li[1]&&(Oi[1]+=(0,ii.m0)(Li[1],bi.factorAlignment)*h.pixelRatio),h.unapplyProjection(Oi,Ti)),Oi[0]+=this.parameters.screenOffset[0]*h.pixelRatio,Oi[1]+=this.parameters.screenOffset[1]*h.pixelRatio,Oi[0]=Math.floor(Oi[0]),Oi[1]=Math.floor(Oi[1]);const t=e*_.size;Hi[0]=_.data[t],Hi[1]=_.data[t+1],(0,ii.MD)(Hi,bi.factor,Hi);const r=Bi*h.pixelRatio;let s=0;d.textureIsSignedDistanceField&&(s=Math.min(d.outlineSize,.5*Hi[0])*h.pixelRatio/2),Hi[0]*=u,Hi[1]*=f;const o=e*g.size,a=d.rotation+g.data[o];if(wi(c,Oi[0],Oi[1],Hi,r,s,a,d,y)){const e=i.ray;if((0,Me.t)(Si,Ti,(0,Re.B8)(Fi,h.viewMatrix)),Oi[0]=c[0],Oi[1]=c[1],h.unprojectFromRenderScreen(Oi,Ti)){const t=(0,P.vt)();(0,Me.c)(t,e.direction);const i=1/(0,Me.l)(t);(0,Me.h)(t,t,i),n((0,Me.j)(e.origin,Ti)*i,t,-1,!0,1,Si)}}}}}intersectDraped(e,t,i,r,s,n){const o=e.attributes.get(Te.r.POSITION),a=e.attributes.get(Te.r.SIZE),l=e.attributes.get(Te.r.ROTATION),c=this.parameters,h=(0,ni.c)(c),{scaleX:d,scaleY:u}=this._getScreenScale(e,e.screenToWorldRatio),f=Ni*e.screenToWorldRatio;for(let t=0;t<o.data.length/o.size;t++){const i=t*o.size,p=o.data[i],_=o.data[i+1],m=t*a.size;Hi[0]=a.data[m],Hi[1]=a.data[m+1];let g=0;c.textureIsSignedDistanceField&&(g=Math.min(c.outlineSize,.5*Hi[0])*e.screenToWorldRatio/2),Hi[0]*=d,Hi[1]*=u;const v=t*l.size,y=c.rotation+l.data[v];wi(r,p,_,Hi,f,g,y,c,h)&&s(n.dist,n.normal,-1,!1)}}createBufferWriter(){return new qi}_updateScaleInfo(e,t,i){const r=this.parameters;null!=r.screenSizePerspective?(0,ii.cJ)(i,t,r.screenSizePerspective,e.factor):(e.factor.scale=1,e.factor.factor=0,e.factor.minScaleFactor=0),null!=r.screenSizePerspectiveAlignment?(0,ii.cJ)(i,t,r.screenSizePerspectiveAlignment,e.factorAlignment):(e.factorAlignment.factor=e.factor.factor,e.factorAlignment.scale=e.factor.scale,e.factorAlignment.minScaleFactor=e.factor.minScaleFactor)}applyShaderOffsetsView(e,t,i,r,s,n,o){const a=xi(t,i,s,zi);return this._applyVerticalGroundOffsetView(e,a,s,o),this._applyVerticalOffsetTransformationView(o,a,s,n),this._applyPolygonOffsetView(o,a,r[3],s,o),this._applyCenterOffsetView(o,r,o),o}applyShaderOffsetsNDC(e,t,i,r,s){return this._applyCenterOffsetNDC(e,t,i,r),null!=s&&(0,Me.c)(s,r),this._applyPolygonOffsetNDC(r,t,i,r),r}_applyPolygonOffsetView(e,t,i,r,s){const n=r.aboveGround?1:-1;let o=Math.sign(i);0===o&&(o=n);const a=n*o;if(this.parameters.shaderPolygonOffset<=0)return(0,Me.c)(s,e);const l=(0,ee.qE)(Math.abs(t.cosAngle),.01,1),c=1-Math.sqrt(1-l*l)/l/r.viewport[2];return(0,Me.h)(s,e,a>0?c:1/c),s}_applyVerticalGroundOffsetView(e,t,i,r){const s=(0,Me.l)(e),n=i.aboveGround?1:-1,o=i.computeRenderPixelSizeAtDist(s)*Jt.R,a=(0,Me.h)(Ti,t.normal,n*o);return(0,Me.g)(r,e,a),r}_applyVerticalOffsetTransformationView(e,t,i,r){const s=this.parameters;if(!s.verticalOffset?.screenLength){if(s.screenSizePerspective||s.screenSizePerspectiveAlignment){const i=(0,Me.l)(e);this._updateScaleInfo(r,i,t.cosAngle)}else r.factor.scale=1,r.factorAlignment.scale=1;return e}const n=(0,Me.l)(e),o=s.screenSizePerspectiveAlignment??s.screenSizePerspective,a=(0,Tt.kE)(i,n,s.verticalOffset,t.cosAngle,o);return this._updateScaleInfo(r,n,t.cosAngle),(0,Me.h)(t.normal,t.normal,a),(0,Me.g)(e,e,t.normal)}_applyCenterOffsetView(e,t,i){const r="screen"!==this.parameters.centerOffsetUnits;return i!==e&&(0,Me.c)(i,e),r&&(i[0]+=t[0],i[1]+=t[1],t[2]&&((0,Me.n)(Ai,i),(0,Me.g)(i,i,(0,Me.h)(Ai,Ai,t[2])))),i}_applyCenterOffsetNDC(e,t,i,r){const s="screen"!==this.parameters.centerOffsetUnits;return r!==e&&(0,Me.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,Me.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]>=Qt.Q||t>=Qt.Q&&i[3]>=Qt.Q;return this._visible&&r}createGLMaterial(e){return new yi(e)}calculateRelativeScreenBounds(e,t,i=(0,C.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}_getScreenScale(e,t){const i=e.attributes.get(Te.r.FEATUREATTRIBUTE);if(null==i)return{scaleX:t,scaleY:t};const r=(0,J.ci)(i.data,Pi);return(0,Xt.VC)(Di,this.parameters,r),{scaleX:Di[0]*t,scaleY:Di[1]*t}}}class yi extends ei.m8{constructor(e){super({...e,...e.material.parameters})}beginSlot(e){return this.updateTexture(this._material.parameters.textureId),this._material.setParameters(this.textureBindParameters),this.acquireTechnique(di,e)}}function xi(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,ke.z0)(Ei,t)),(0,Me.q)(r.normal,e,t),(0,Me.t)(r.normal,r.normal,i.viewInverseTransposeMatrix),r.cosAngle=(0,Me.f)(Mi,ji),r}function wi(e,t,i,r,s,n,o,a,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=a.distanceFieldBoundingBox;return a.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,Q.hZ)(Ri,t,i),(0,Q.e$)(Ii,e,Ri,(0,ee.kU)(o)),Ii[0]>c&&Ii[0]<h&&Ii[1]>d&&Ii[1]<u}const bi=new class{constructor(){this.factor=new ri,this.factorAlignment=new ri}},Ti=(0,P.vt)(),Ai=(0,P.vt)(),Oi=(0,J.vt)(),Mi=(0,P.vt)(),Si=(0,P.vt)(),Ii=(0,K.vt)(),Ri=(0,K.vt)(),Ci=(0,We.vt)(),Ei=(0,We.vt)(),Fi=(0,Oe.vt)(),Li=(0,P.vt)(),Di=(0,P.vt)(),Pi=(0,J.vt)(),zi={normal:Mi,cosAngle:0},Bi=1,Ni=2,Hi=[0,0],ji=(0,P.fA)(0,0,1);class Gi extends ei.NV{constructor(){super(...arguments),this.renderOccluded=ti.m$.Occlude,this.isDecoration=!1,this.color=(0,J.CN)(1,1,1,1),this.polygonOffset=!1,this.anchorPosition=(0,K.fA)(.5,.5),this.screenOffset=[0,0],this.shaderPolygonOffset=1e-5,this.textureIsSignedDistanceField=!1,this.sampleSignedDistanceFieldTexelCenter=!1,this.outlineColor=(0,J.CN)(1,1,1,1),this.outlineSize=0,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 Vi=(0,Se.BP)().vec3f(Te.r.POSITION).vec3f(Te.r.NORMAL).vec2f(Te.r.UV0).vec4u8(Te.r.COLOR).vec2f(Te.r.SIZE).f32(Te.r.ROTATION).vec4f(Te.r.CENTEROFFSETANDDISTANCE).vec4f(Te.r.FEATUREATTRIBUTE),Ui=Vi.clone().vec4u8(Te.r.OBJECTANDLAYERIDCOLOR);class qi{constructor(){this.vertexBufferLayout=(0,Kt.E)()?Ui:Vi}elementCount(e){return 6*e.get(Te.r.POSITION).indices.length}write(e,t,i,r,s,n){(0,si.Hk)(i.get(Te.r.POSITION),e,s.position,n,6),(0,si.p1)(i.get(Te.r.NORMAL),t,s.normal,n,6);const o=i.get(Te.r.UV0)?.data;let a=0,l=0,c=1,h=1;o&&o.length>=4&&(a=o[0],l=o[1],c=o[2],h=o[3]),c=Math.min(1.99999,c+1),h=Math.min(1.99999,h+1);let d=i.get(Te.r.POSITION).indices.length,u=n;const f=s.uv0;for(let e=0;e<d;++e)f.set(u,0,a),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,a),f.set(u,1,h),u++,f.set(u,0,a),f.set(u,1,l),u++;(0,si.tb)(i.get(Te.r.COLOR),4,s.color,n,6);const{data:p,indices:_}=i.get(Te.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,si.uO)(i.get(Te.r.ROTATION),s.rotation,n,6),i.get(Te.r.CENTEROFFSETANDDISTANCE)?(0,si.Ut)(i.get(Te.r.CENTEROFFSETANDDISTANCE),s.centerOffsetAndDistance,n,6):(0,si.Pq)(s.centerOffsetAndDistance,n,6*d),i.get(Te.r.FEATUREATTRIBUTE)?(0,si.Ut)(i.get(Te.r.FEATUREATTRIBUTE),s.featureAttribute,n,6):(0,si.Pq)(s.featureAttribute,n,6*d),null!=r){const e=i.get(Te.r.POSITION)?.indices;if(e){const t=e.length,i=s.getField(Te.r.OBJECTANDLAYERIDCOLOR,Ye.XP);(0,si.tH)(r,i,t,n,6)}}}}var Zi=i(74810);let ki=class extends p.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===W.RT.Global;let n=null;switch(e.type){case"default":n=function(e,t,i){const r={usePBR:t.physicalBasedRenderingEnabled,isSchematic:!0,mrrFactors:Zi.Bt,ambient:P.Un,diffuse:P.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?ue.s2.None:ue.s2.Back}(r),t.screenSizePerspectiveEnabled&&(r.screenSizePerspective=e.screenSizePerspectiveSettings),r.externalColor=J.Un,r.isInstanced=!0,new $t.$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]=Wi(r,s);this.addHandles([(0,$.hA)((()=>(0,X.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 ge({material:i});this._directRenderers.set(t,s),r._stage.addRenderPlugin(s),r._stage.renderView.renderer.updateHasFlags()}async _addDirectRendererGeometry(e){const t=e.renderGeometryId,i=e.materialId;await this._removeDirectRendererGeometry({renderGeometryId:t});const r=this._directRenderers.get(i);if(null==r)return void console.error("no renderer assigned to provided material");const s=r.addRenderGeometry(t,e.renderGeometryBuffer,e.localOrigin);this._renderGeometries.set(t,{renderGeometry:s,materialId:i}),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 Gt({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 Wi(e,t){const i={anchorPosition:ne.center,occlusionTest:!0,hasSlicePlane:!1,color:[1,0,0,1],outlineColor:[0,0,0,1],outlineSize:1,distanceFieldBoundingBox:Yi};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 Yt(e,kt(i,i,t/2))}(t,i);case"square":return function(e,t){return qt(e,t,!1)}(t,i);case"cross":return function(e,t,i=0){return Zt(e,t,!1,i)}(t,i,r);case"x":return function(e,t,i=0){return Zt(e,t,!0,i)}(t,i,r);case"kite":return function(e,t){return qt(e,t,!0)}(t,i);case"triangle":return function(e,t){return Yt(e,Wt(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,o=kt(s,(e-t)/2-n,Math.sqrt(n*n+r*r)),a=Wt(s,i,r);return Yt(e,((e,t)=>Math.max(a(e,t),-o(e,t))))}(t,i)}}(e,t,i,r);return new Ut.g(s,{mipmap:!1,wrap:{s:Je.pF.CLAMP_TO_EDGE,t:Je.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 vi(i,t),null]}(0,r._)([(0,a.MZ)({readOnly:!0})],ki.prototype,"totalFeatures",void 0),ki=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.rendering.FeaturePipelineRenderManager")],ki);const Yi=[.25,.25,.75,.75];class $i{constructor(e){this._bufferWriter=null,this._bufferWriter=e.createBufferWriter()}createBuffer(e,t){const i=this._bufferWriter;let r=null;if(e.transformation&&t)(0,Re.C)(Xi,e.transformation),Xi[12]-=t[0],Xi[13]-=t[1],Xi[14]-=t[2],r=Xi;else{if(t)throw new Error("not implemented");e.transformation&&(r=e.transformation)}let s=null;r&&((0,Re.B8)(Ji,Xi),(0,Re.mg)(Ji,Ji),s=Ji);const n=e.attributes,o=i.elementCount(n),a=i.vertexBufferLayout.stride/4;o>Math.floor(Qi/a)&&console.warn("geometry with very large number of elements encountered");const l=i.vertexBufferLayout.createBuffer(o);return i.write(r,s,n,e.objectAndLayerIdColor,l,0),{data:l.buffer,elementCount:o}}}const Xi=(0,Oe.vt)(),Ji=(0,Oe.vt)(),Qi=4194304;var Ki=i(29920);class er{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 $t.$U({},{spherical:this._context.globalViewingMode,doublePrecisionRequiresObfuscation:!0}),r=new $i(e);t.registerRenderGeometryBufferWriter(i,r)}break;case"hud":{const e=Wi(null,this._context.globalViewingMode)[0],r=new $i(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),this._commands.push({id:"add-direct-renderer-geometry",renderGeometryId:e,materialId:r,renderGeometryBuffer:n,localOrigin:i})}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(Te.r.POSITION);if(!t||0===t.indices.length)throw new Error("positions attribute expected");const i=(0,Y.tM)(t.indices.length/3),r=new Ki.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)}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 tr{constructor(e){this._idCounter=0,this._bufferWriters=new Map,this._dispatchRenderCommandsCallback=async()=>{},this.globalViewingMode=!1,this.globalViewingMode=e.viewingMode===W.RT.Global,this._dispatchRenderCommandsCallback=e.dispatchRenderCommandsCallback}generateId(e=""){return`${e}${this._idCounter++}`}createEncoder(){return new er(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 ir{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 w.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 ir(i,e);const r=new Uint32Array(e.length);for(let i=0;i<r.length;++i)r[i]=t[e[i]];return new ir(i,r)}}var rr=i(9762),sr=i(27993);async function nr(e,t){const{featureCount:i}=e;if(0===i)return new Uint32Array;const r=new Uint32Array(i);return e.readObjectIds(r),r}async function or(e,t){const{featureCount:i}=e;if(0===i)return new Float64Array;const r=new Float64Array(3*i);return e.readCoordinates(r),r}var ar=i(48353),lr=i(8887),cr=i(83047);function hr(e){const t=new Map;for(const[i,r]of e)t.set(i,{...r,indices:(0,Y.Dg)(r.indices)});return t}i(57251),i(12359),i(95108),i(27615),i(59456),i(52106),i(4718),i(34275),i(65864);var dr,ur,fr=i(57917),pr=i(72385),_r=(i(4197),i(11868)),mr=i(27921),gr=i(46610);(ur=dr||(dr={})).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)},ur.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},ur.scale=function(e,t,i){e[t]*=i,e[t+1]*=i,e[t+2]*=i},ur.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]},ur.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(96672),i(87170);const vr=new Array(36);for(let e=0;e<6;e++)for(let t=0;t<6;t++)vr[6*e+t]=e;const yr=new Array(36);for(let e=0;e<6;e++)yr[6*e]=0,yr[6*e+1]=1,yr[6*e+2]=2,yr[6*e+3]=2,yr[6*e+4]=3,yr[6*e+5]=0;const xr=(0,pr.fA)(-.5,0,-.5),wr=(0,pr.fA)(.5,0,-.5),br=(0,pr.fA)(0,0,.5),Tr=(0,pr.fA)(0,.5,0),Ar=(0,pr.vt)(),Or=(0,pr.vt)(),Mr=(0,pr.vt)(),Sr=(0,pr.vt)(),Ir=(0,pr.vt)();function Rr(e,t){switch(e){case"cone":return((e,i,r=!1)=>({levels:e.map((e=>{const s=hr(i(e.tesselation));return r&&function(e){const t=e,i=t.get(Te.r.POSITION).data,r=t.get(Te.r.NORMAL).data;if(r){const t=Cr(e,Te.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=Cr(e,Te.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}}))}))(Er,(e=>function(e,t,i,r,s=!0,n=!0){let o=0;const a=t,l=e;let c=(0,pr.fA)(0,o,0),h=(0,pr.fA)(0,o+l,0),d=(0,pr.fA)(0,-1,0),u=(0,pr.fA)(0,1,0);r&&(o=l,h=(0,pr.fA)(0,0,0),c=(0,pr.fA)(0,o,0),d=(0,pr.fA)(0,1,0),u=(0,pr.fA)(0,-1,0));const f=[h,c],p=[d,u],_=i+2,m=Math.sqrt(l*l+a*a);if(r)for(let e=i-1;e>=0;e--){const t=e*(2*Math.PI/i),r=(0,pr.fA)(Math.cos(t)*a,o,Math.sin(t)*a);f.push(r);const s=(0,pr.fA)(l*Math.cos(t)/m,-a/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,pr.fA)(Math.cos(t)*a,o,Math.sin(t)*a);f.push(r);const s=(0,pr.fA)(l*Math.cos(t)/m,a/m,l*Math.sin(t)/m);p.push(s)}const g=new Array,v=new Array;if(s){for(let e=3;e<f.length;e++)g.push(1),g.push(e-1),g.push(e),v.push(0),v.push(0),v.push(0);g.push(f.length-1),g.push(2),g.push(1),v.push(0),v.push(0),v.push(0)}if(n){for(let e=3;e<f.length;e++)g.push(e),g.push(e-1),g.push(0),v.push(e),v.push(e-1),v.push(1);g.push(0),g.push(2),g.push(f.length-1),v.push(1),v.push(2),v.push(p.length-1)}const y=(0,_r.oe)(3*_);for(let e=0;e<_;e++)y[3*e]=f[e][0],y[3*e+1]=f[e][1],y[3*e+2]=f[e][2];const x=(0,_r.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[[Te.r.POSITION,new gr.n(y,g,3,!0)],[Te.r.NORMAL,new gr.n(x,v,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 Cr(e,t){let i=e.get(t);return i&&!i.exclusive&&(i={...i,exclusive:!0,data:(0,fr.S)(i.data)},e.set(t,i)),i}(0,Me.d)(Ar,xr,Tr),(0,Me.d)(Or,xr,wr),(0,Me.e)(Mr,Ar,Or),(0,Me.n)(Mr,Mr),(0,Me.d)(Ar,wr,Tr),(0,Me.d)(Or,wr,br),(0,Me.e)(Sr,Ar,Or),(0,Me.n)(Sr,Sr),(0,Me.d)(Ar,br,Tr),(0,Me.d)(Or,br,xr),(0,Me.e)(Ir,Ar,Or),(0,Me.n)(Ir,Ir),Mr[0],Mr[1],Mr[2],Sr[0],Sr[1],Sr[2],Ir[0],Ir[1],Ir[2],(0,P.vt)();const Er=[{tesselation:6,minScreenSpaceRadius:0},{tesselation:18,minScreenSpaceRadius:7},{tesselation:64,minScreenSpaceRadius:65}];let Fr=class extends p.A{constructor(e){super(),this._context=e,this.lodRendererId=null,this._loaded=!1,this._loadingPromise=null}get loaded(){return this._loaded}load(e){return null==this._loadingPromise&&(this._loadingPromise=this._load(e)),this._loadingPromise}async _load(e){const t=Rr("cone",e.createMaterial("default"));this.lodRendererId=e.createLodRenderer(t),await e.dispatch(),this._loaded=!0}async add(e,t){if(null==this.lodRendererId)throw new Error("expected lod renderer id to not be null");const{featureCount:i}=e;if(0===i)return;const r=(0,z.vt)((0,lr.Fq)("cone")),s=(0,P.ci)((0,z.Ej)(r)),n=(0,P.ci)((0,lr.Bb)(s,{isPrimitive:!0,width:100,depth:null,height:null})),o=new Float64Array(16*i),a=new Float64Array(16*i),l=await or(e,this._context);if(null==l)throw new Error("unabled to get map coordinates");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,Pr),d=this._computeLocalTransform(n,s,Dr);this._writeMatrixToTypedBuffer(o,t,d),this._writeMatrixToTypedBuffer(a,t,h)}const c=await nr(e,this._context);if(null==c)throw new Error("unable to fetch objectIds");const h={featureIds:new Uint32Array(c),localTransforms:o,globalTransforms:a};t.addLodInstances(this.lodRendererId,h)}async remove(e,t){if(null==this.lodRendererId)return;const i=await nr(e,this._context);if(null==i)throw new Error("unable to fetch objectIds");t.removeLodInstances(this.lodRendererId,i)}_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 Lr[0]=e,Lr[1]=t,Lr[2]=i,(0,ar.l)(r,Lr,s,this._context.renderSpatialReference),s}_computeLocalTransform(e,t,i){return(0,Re.D_)(i),this._applyObjectScale(e,t,i),i}_applyObjectScale(e,t,i){const r=function(e=P.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 o=2;o>=0;o--){const a=e[o],l=null!=a,c=0===o&&!r&&!l,h=i[o];let d;"symbol-value"===a||c?d=0!==h?t[o]/h:1:l&&"proportional"!==a&&isFinite(a)&&(d=0!==h?a/h:1),null!=d&&(s[o]=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,P.ci)(s)}(e,e,t,this._context.renderCoordsHelper.unitInMeters);1===r[0]&&1===r[1]&&1===r[2]||(0,Re.hs)(i,i,r)}};Fr=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.symbolization.TestObjectSymbol")],Fr);const Lr=(0,P.vt)(),Dr=(0,Oe.vt)(),Pr=(0,Oe.vt)();let zr=class extends p.A{constructor(e){super(),this._context=e,this.materialId=null,this._loaded=!1,this._loadingPromise=null}get loaded(){return this._loaded}load(e){return null==this._loadingPromise&&(this._loadingPromise=this._load(e)),this._loadingPromise}async _load(e){this.materialId=e.createMaterial("hud"),e.createDirectRenderer(this.materialId),await e.dispatch(),this._loaded=!0}async add(e,t){if(null==this.materialId)throw new Error("expected material not to be null");const{featureCount:i,id:r}=e;if(0===i)return;const s=await async function(e,t){const{featureCount:i}=e,r=await or(e);if(null==r)return null;if(0===i)return new Float64Array;const s=t.viewSpatialReference,n=t.renderSpatialReference,o=new Float64Array(3*i);if(!(0,rr.projectBuffer)(r,s,0,o,n,0,i))throw new Error("Failed to project coordinates");return o}(e,this._context);if(null==s)throw new Error("failed to retrieve render coordinates");const n=await async function(e,t){const i=t.viewSpatialReference,r=t.renderSpatialReference,{extent:s}=e,n=(0,C.gX)(s),o=(0,P.vt)();return(0,sr.F)([n[0],n[1],0],i,o,r),o}(e,this._context);if(null==n)throw new Error("unable to compute tile center in render coordinates");const o=new Float64Array([0,0,1]),a=new Float64Array([255,255,255,255]),l=new Float64Array([24,24]),c=new Float64Array([0,0,0,1]),h=new Float64Array([0,0]),d=new Float64Array([0]),u=new Uint32Array(i);for(let e=0;e<i;++e)u[e]=e;const f=new Uint32Array(i);for(let e=0;e<i;++e)f[e]=0;const p=new gr.n(s,u,3,!0),_=new gr.n(o,f,3,!0),m=new gr.n(h,f,2,!0),g=new gr.n(a,f,4,!0),v=new gr.n(d,f,1,!0),y=new gr.n(l,f,2,!0),x=new gr.n(c,f,4,!0),w={attributes:hr([[Te.r.POSITION,p],[Te.r.NORMAL,_],[Te.r.UV0,m],[Te.r.COLOR,g],[Te.r.ROTATION,v],[Te.r.SIZE,y],[Te.r.CENTEROFFSETANDDISTANCE,x]]),objectAndLayerIdColor:void 0,transformation:(0,Oe.vt)(),materialId:this.materialId};t.addDirectRendererGeometry(r,w,n)}async remove(e,t){t.removeDirectRendererGeometry(e.id)}};zr=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.symbolization.TestSymbol")],zr);class Br{constructor(e){this._symbols=new Map,this._featureDataPartitioning=new Map,this._context=e}async load(){this._symbols.set(0,new zr(this._context)),this._symbols.set(1,new Fr(this._context))}async add(e,t){if(null!=this._featureDataPartitioning.get(e))throw new Error("featureData was already added");const i=await this._partition(e);this._featureDataPartitioning.set(e,i),await Promise.all(i.partitions.map((async e=>{const i=await this._provisionSymbol(e.index,t);i&&await i.add(e.features,t)})))}async remove(e,t){const i=this._featureDataPartitioning.get(e);if(null==i)throw new Error("featureData partitions expected");await Promise.all(i.partitions.map((async e=>{const i=await this._provisionSymbol(e.index,t);i&&await i.remove(e.features,t)}))),this._featureDataPartitioning.delete(e)}async _provisionSymbol(e,t){if(null==e)return null;const i=this._symbols.get(e);return i?(i.loaded||await i.load(t),i):null}async _partition(e){const t=await nr(e,this._context);if(null==t)throw new Error("unable to fetch objectIds");return function(e,t){const{featureCount:i}=e,r=[[],[]],s=new Uint32Array(i);for(let e=0;e<i;++e){const i=t(e);r[i].push(e),s[e]=i}const n=r.map(((t,i)=>({index:i,features:e.subset(new Uint32Array(t))}))).filter((e=>e.features.featureCount>0));return{partitions:n,partitionIds:s}}(e,(e=>t[e]%2))}}var Nr=i(73941),Hr=i(98764),jr=i(65806);const Gr=(0,P.vt)();var Vr=i(88582),Ur=i(17352);function qr(e,t,i=function(e){return{operations:e,value:e.create()}}(e)){return i.operations=e,e.copy(t,i.value),i}const Zr=2**50;function kr(e,t,i,r){return e.operations.setAltitudeAt(e.value,t,i,r)}function Wr(e,t,i){return e.operations.elevate(e.value,t,i.value)}const Yr=(0,P.vt)();(0,P.vt)();var $r=i(32114);function Xr(e){return"point"===e.type}class Jr{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,Nr.tO)(t),this.sphericalPCPF=(0,Hr.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,C.vt)())}getAltitude(e){return function(e,t){return e.operations.altitudeAt(e.value,t)}(this._coordinateSystem,e)}setAltitude(e,t,i=e){return kr(this._coordinateSystem,i,t,e)}setAltitudeOfTransformation(e,t){!function(e,t,i,r){t!==r&&(0,Re.C)(r,t),(0,Me.i)(Yr,r[12],r[13],r[14]),kr(e,Yr,i,Yr),r[12]=Yr[0],r[13]=Yr[1],r[14]=Yr[2]}(this._coordinateSystem,t,e,t)}worldUpAtPosition(e,t){return function(e,t,i){return e.operations.axisAt(e.value,t,Vr._.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,Vr._.X,$r.rq.get()),r=this.worldBasisAtPosition(e,Vr._.Y,$r.rq.get()),s=this.worldBasisAtPosition(e,Vr._.Z,$r.rq.get());return(0,Re.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,$r.rq.get()),r=this.worldBasisAtPosition(e,Vr._.Y,$r.rq.get()),s=(0,Le.EJ)(t,r,i);return(0,ee.KJ)(s)}intersectManifoldClosestSilhouette(e,t,i){return Wr(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){Wr(this._coordinateSystem,t,this._tmpCoordinateSystem);const r=$r.rq.get();return function(e,t,i){return e.operations.intersectRay(e.value,t,i)}(this._tmpCoordinateSystem,e,r)?(0,Me.c)(i,r):null}intersectInfiniteManifold(e,t,i){if(this.viewingMode===W.RT.Global)return this.intersectManifold(e,t,i);Wr(this._coordinateSystem,t,this._tmpCoordinateSystem);const r=this._tmpCoordinateSystem.value,s=$r.rq.get();return(0,mr.Ui)(r.plane,e,s)?(0,Me.c)(i,s):null}toRenderCoords(e,t,i){return Xr(e)?(0,jr.g)(e,t,this.spatialReference):(0,sr.F)(e,t,i,this.spatialReference)}fromRenderCoords(e,t,i=null){return Xr(t)?(null!=i&&(t.spatialReference=i),function(e,t,i){return!!(0,sr.F)(e,t,Gr,i.spatialReference)&&(i.x=Gr[0],i.y=Gr[1],i.z=Gr[2],!0)}(e,this.spatialReference,t)?t:null):(0,sr.F)(e,this.spatialReference,t,i)?t:null}static create(e,t){switch(e){case W.RT.Local:return new Jr(W.RT.Local,t,(0,cr.GA)(t),qr(Ur.b,(0,Ur.f)([0,0,0],[Zr,0,0],[0,Zr,0])));case W.RT.Global:return new Jr(W.RT.Global,t,1,function(e){return qr(ct.s,(0,ct.f)(0,0,0,(0,Nr.tO)(e).radius))}(t))}}static renderUnitScaleFactor(e,t){return(0,cr.KX)(e)/(0,cr.KX)(t)}}class Qr{constructor(e){this._tileFeatureData=new Map,this._context={viewSpatialReference:e.viewSpatialReference,renderSpatialReference:e.renderSpatialReference,renderCoordsHelper:Jr.create(e.viewingMode,e.renderSpatialReference)}}async add(e,t){this._featureRenderer||(this._featureRenderer=new Br(this._context),await this._featureRenderer.load());const i=this._addTileFeatureData(e);await this._featureRenderer.add(i,t)}async remove(e,t){const i=this._getFeatureSetFromTileId(e);i&&(this._featureRenderer&&this._featureRenderer.remove(i,t),this._removeTileFeatureData(e))}_getFeatureSetFromTileId(e){return this._tileFeatureData.get(e)}_addTileFeatureData(e){const t=e.descriptor.id,i=new ir(e);return this._tileFeatureData.set(t,i),i}_removeTileFeatureData(e){this._tileFeatureData.get(e)&&this._tileFeatureData.delete(e)}}let Kr=class extends s.A.EventedAccessor{constructor(){super(...arguments),this.remoteClient=null,this._featureStore=new S,this._tileManager=new v({addTile:(e,t)=>this._addTile(e,t),removeTiles:e=>this._removeTiles(e)}),this._renderCommandContext=null,this._fetcher=null,this._symbolizer=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:a,fieldsIndex:l,timeInfo:c}){this._renderCommandContext=new tr({viewingMode:i,dispatchRenderCommandsCallback:(e,t)=>this.remoteClient.invoke("dispatchRenderCommands",e,{transferList:t})});const h=d.A.fromJSON(e),p=d.A.fromJSON(t);return this._fetcher=new k(h,f.A.fromJSON(r),s,n,a),this._symbolizer=new Qr({viewSpatialReference:h,renderSpatialReference:p,viewingMode:i}),this._queryEngine=new u.do({hasZ:!0,hasM:!1,geometryType:"esriGeometryPoint",objectIdField:n,fieldsIndex:l,availableFields:[n],spatialReference:e,featureStore:this._featureStore,timeInfo:c}),this._defaultQueryJSON=new f.A({outSpatialReference:h}).toJSON(),this.addHandles((0,o.wB)((()=>this.updating),(async e=>{this.emit("notify-updating",{updating:e})})),o.Vh),ts}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),ts}async _addTile(e,t){const i=await this._fetcher.fetch(e,t);(0,n.Te)(t);const r=this._renderCommandContext.createEncoder();return await this._symbolizer.add(i,r),r.dispatch(),this._featureStore.addTile(i),i}async _removeTiles(e){const t=this._renderCommandContext.createEncoder(),i=this._featureStore,r=this._symbolizer;for(const s of e)i.removeTile(s),await r.remove(s,t);await t.dispatch()}_ensureQuery(e){return e??this._defaultQueryJSON}};(0,r._)([(0,a.MZ)()],Kr.prototype,"updating",null),Kr=(0,r._)([(0,h.$)("esri.views.3d.layers.graphics.pipeline.Feature3DPipelineWorker")],Kr);const es=Kr,ts={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),a=n.constructor.ElementCount,l=o(n.constructor.ElementType),c=n.offset,h=n.optional?.glNormalized??!1;return new s._(r,a,l,c,i,h,t)}))}function o(e){const t=a[e];if(t)return t;throw new Error("BufferType not supported in WebGL")}const a={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(95250),s=i(2597);function n(e){e.uniforms.add(new r.e("alignPixelEnabled",((e,t)=>t.alignPixelEnabled))),e.code.add(s.H`vec4 alignToPixelCenter(vec4 clipCoord, vec2 widthHeight) {
163
163
  if (!alignPixelEnabled)
164
164
  return clipCoord;
165
165
  vec2 xy = vec2(0.500123) + 0.5 * clipCoord.xy / clipCoord.w;