@thatopen/components 2.3.0-alpha.8 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/Components/index.d.ts +20 -3
- package/dist/core/Grids/src/simple-grid-config.d.ts +34 -0
- package/dist/core/MiniMap/index.d.ts +2 -0
- package/dist/core/MiniMap/src/index.d.ts +2 -89
- package/dist/core/MiniMap/src/mini-map-config.d.ts +112 -0
- package/dist/core/MiniMap/src/mini-map.d.ts +100 -0
- package/dist/core/Viewpoints/index.d.ts +1 -0
- package/dist/core/Viewpoints/src/types.d.ts +3 -0
- package/dist/core/Viewpoints/src/viewpoint.d.ts +12 -5
- package/dist/core/Worlds/index.d.ts +2 -16
- package/dist/core/Worlds/src/simple-world.d.ts +2 -2
- package/dist/fragments/Classifier/index.d.ts +1 -1
- package/dist/fragments/FragmentsManager/index.d.ts +8 -0
- package/dist/fragments/IfcLoader/index.d.ts +1 -1
- package/dist/ifc/IfcFinder/index.d.ts +50 -0
- package/dist/ifc/IfcFinder/src/ifc-basic-query.d.ts +35 -0
- package/dist/ifc/IfcFinder/src/ifc-finder-query.d.ts +96 -0
- package/dist/ifc/IfcFinder/src/ifc-property-query.d.ts +36 -0
- package/dist/ifc/IfcFinder/src/ifc-query-group.d.ts +69 -0
- package/dist/ifc/IfcFinder/src/index.d.ts +4 -0
- package/dist/ifc/IfcFinder/src/types.d.ts +84 -0
- package/dist/ifc/IfcPropertiesManager/index.d.ts +24 -6
- package/dist/ifc/IfcPropertiesManager/src/index.d.ts +3 -0
- package/dist/ifc/IfcPropertiesManager/src/rel-attrs.d.ts +7 -0
- package/dist/ifc/IfcPropertiesManager/src/rel-names.d.ts +3 -0
- package/dist/ifc/IfcPropertiesManager/src/types.d.ts +18 -0
- package/dist/ifc/IfcRelationsIndexer/index.d.ts +36 -6
- package/dist/ifc/IfcRelationsIndexer/src/index.d.ts +2 -0
- package/dist/ifc/IfcRelationsIndexer/src/relToAttributesMap.d.ts +1 -1
- package/dist/ifc/IfcRelationsIndexer/src/types.d.ts +4 -2
- package/dist/ifc/Utils/ifc-category-case.d.ts +3 -0
- package/dist/ifc/Utils/index.d.ts +1 -0
- package/dist/ifc/index.d.ts +1 -0
- package/dist/index.cjs +100 -57
- package/dist/index.mjs +14274 -11195
- package/dist/namespace.d.ts +3927 -3001
- package/dist/openbim/BCFTopics/index.d.ts +4 -0
- package/dist/openbim/IDSSpecifications/index.d.ts +61 -0
- package/dist/openbim/IDSSpecifications/src/Specification.d.ts +39 -0
- package/dist/openbim/IDSSpecifications/src/exporters/parameter.d.ts +2 -0
- package/dist/openbim/IDSSpecifications/src/facets/Attribute.d.ts +12 -0
- package/dist/openbim/IDSSpecifications/src/facets/Classification.d.ts +20 -0
- package/dist/openbim/IDSSpecifications/src/facets/Entity.d.ts +14 -0
- package/dist/openbim/IDSSpecifications/src/facets/Facet.d.ts +25 -0
- package/dist/openbim/IDSSpecifications/src/facets/Material.d.ts +9 -0
- package/dist/openbim/IDSSpecifications/src/facets/PartOf.d.ts +25 -0
- package/dist/openbim/IDSSpecifications/src/facets/Property.d.ts +22 -0
- package/dist/openbim/IDSSpecifications/src/facets/index.d.ts +5 -0
- package/dist/openbim/IDSSpecifications/src/importers/attribute.d.ts +3 -0
- package/dist/openbim/IDSSpecifications/src/importers/classification.d.ts +3 -0
- package/dist/openbim/IDSSpecifications/src/importers/entity.d.ts +3 -0
- package/dist/openbim/IDSSpecifications/src/importers/index.d.ts +3 -0
- package/dist/openbim/IDSSpecifications/src/importers/parameter.d.ts +2 -0
- package/dist/openbim/IDSSpecifications/src/importers/property.d.ts +3 -0
- package/dist/openbim/IDSSpecifications/src/index.d.ts +3 -0
- package/dist/openbim/IDSSpecifications/src/types.d.ts +51 -0
- package/dist/openbim/index.d.ts +1 -0
- package/package.json +5 -5
package/dist/index.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
"use strict";var uo=Object.defineProperty;var fo=(c,e,t)=>e in c?uo(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t;var g=(c,e,t)=>(fo(c,typeof e!="symbol"?e+"":e,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("three"),Cr=require("@thatopen/fragments"),po=require("web-ifc");function gn(c){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(c){for(const t in c)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(c,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>c[t]})}}return e.default=c,Object.freeze(e)}const M=gn(S),Ie=gn(Cr),K=gn(po),Tr=0,Eo=1,mo=2,Pn=2,Li=1.25,Ln=1,qs=6*4+4+4,Ri=65535,Io=Math.pow(2,-24),vi=Symbol("SKIP_GENERATION");function go(c){return c.index?c.index.count:c.attributes.position.count}function je(c){return go(c)/3}function Co(c,e=ArrayBuffer){return c>65535?new Uint32Array(new e(4*c)):new Uint16Array(new e(2*c))}function To(c,e){if(!c.index){const t=c.attributes.position.count,s=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i=Co(t,s);c.setIndex(new S.BufferAttribute(i,1));for(let n=0;n<t;n++)i[n]=n}}function _r(c){const e=je(c),t=c.drawRange,s=t.start/3,i=(t.start+t.count)/3,n=Math.max(0,s),r=Math.min(e,i)-n;return[{offset:Math.floor(n),count:Math.floor(r)}]}function Ar(c){if(!c.groups||!c.groups.length)return _r(c);const e=[],t=new Set,s=c.drawRange,i=s.start/3,n=(s.start+s.count)/3;for(const o of c.groups){const a=o.start/3,l=(o.start+o.count)/3;t.add(Math.max(i,a)),t.add(Math.min(n,l))}const r=Array.from(t.values()).sort((o,a)=>o-a);for(let o=0;o<r.length-1;o++){const a=r[o],l=r[o+1];e.push({offset:Math.floor(a),count:Math.floor(l-a)})}return e}function _o(c){if(c.groups.length===0)return!1;const e=je(c),t=Ar(c).sort((n,r)=>n.offset-r.offset),s=t[t.length-1];s.count=Math.min(e-s.offset,s.count);let i=0;return t.forEach(({count:n})=>i+=n),e!==i}function wt(c,e,t){return t.min.x=e[c],t.min.y=e[c+1],t.min.z=e[c+2],t.max.x=e[c+3],t.max.y=e[c+4],t.max.z=e[c+5],t}function Ao(c){c[0]=c[1]=c[2]=1/0,c[3]=c[4]=c[5]=-1/0}function vn(c){let e=-1,t=-1/0;for(let s=0;s<3;s++){const i=c[s+3]-c[s];i>t&&(t=i,e=s)}return e}function Mn(c,e){e.set(c)}function xn(c,e,t){let s,i;for(let n=0;n<3;n++){const r=n+3;s=c[n],i=e[n],t[n]=s<i?s:i,s=c[r],i=e[r],t[r]=s>i?s:i}}function Fs(c,e,t){for(let s=0;s<3;s++){const i=e[c+2*s],n=e[c+2*s+1],r=i-n,o=i+n;r<t[s]&&(t[s]=r),o>t[s+3]&&(t[s+3]=o)}}function Je(c){const e=c[3]-c[0],t=c[4]-c[1],s=c[5]-c[2];return 2*(e*t+t*s+s*e)}function Mi(c,e,t,s,i=null){let n=1/0,r=1/0,o=1/0,a=-1/0,l=-1/0,h=-1/0,u=1/0,d=1/0,f=1/0,E=-1/0,p=-1/0,I=-1/0;const m=i!==null;for(let _=e*6,R=(e+t)*6;_<R;_+=6){const C=c[_+0],y=c[_+1],F=C-y,O=C+y;F<n&&(n=F),O>a&&(a=O),m&&C<u&&(u=C),m&&C>E&&(E=C);const v=c[_+2],N=c[_+3],x=v-N,G=v+N;x<r&&(r=x),G>l&&(l=G),m&&v<d&&(d=v),m&&v>p&&(p=v);const w=c[_+4],L=c[_+5],T=w-L,D=w+L;T<o&&(o=T),D>h&&(h=D),m&&w<f&&(f=w),m&&w>I&&(I=w)}s[0]=n,s[1]=r,s[2]=o,s[3]=a,s[4]=l,s[5]=h,m&&(i[0]=u,i[1]=d,i[2]=f,i[3]=E,i[4]=p,i[5]=I)}function yo(c,e,t,s){let i=1/0,n=1/0,r=1/0,o=-1/0,a=-1/0,l=-1/0;for(let h=e*6,u=(e+t)*6;h<u;h+=6){const d=c[h+0];d<i&&(i=d),d>o&&(o=d);const f=c[h+2];f<n&&(n=f),f>a&&(a=f);const E=c[h+4];E<r&&(r=E),E>l&&(l=E)}s[0]=i,s[1]=n,s[2]=r,s[3]=o,s[4]=a,s[5]=l}function Ro(c,e){Ao(e);const t=c.attributes.position,s=c.index?c.index.array:null,i=je(c),n=new Float32Array(i*6),r=t.normalized,o=t.array,a=t.offset||0;let l=3;t.isInterleavedBufferAttribute&&(l=t.data.stride);const h=["getX","getY","getZ"];for(let u=0;u<i;u++){const d=u*3,f=u*6;let E=d+0,p=d+1,I=d+2;s&&(E=s[E],p=s[p],I=s[I]),r||(E=E*l+a,p=p*l+a,I=I*l+a);for(let m=0;m<3;m++){let _,R,C;r?(_=t[h[m]](E),R=t[h[m]](p),C=t[h[m]](I)):(_=o[E+m],R=o[p+m],C=o[I+m]);let y=_;R<y&&(y=R),C<y&&(y=C);let F=_;R>F&&(F=R),C>F&&(F=C);const O=(F-y)/2,v=m*2;n[f+v+0]=y+O,n[f+v+1]=O+(Math.abs(y)+O)*Io,y<e[m]&&(e[m]=y),F>e[m+3]&&(e[m+3]=F)}}return n}const ae=32,wo=(c,e)=>c.candidate-e.candidate,ue=new Array(ae).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),Ss=new Float32Array(6);function Fo(c,e,t,s,i,n){let r=-1,o=0;if(n===Tr)r=vn(e),r!==-1&&(o=(e[r]+e[r+3])/2);else if(n===Eo)r=vn(c),r!==-1&&(o=So(t,s,i,r));else if(n===mo){const a=Je(c);let l=Li*i;const h=s*6,u=(s+i)*6;for(let d=0;d<3;d++){const f=e[d],I=(e[d+3]-f)/ae;if(i<ae/4){const m=[...ue];m.length=i;let _=0;for(let C=h;C<u;C+=6,_++){const y=m[_];y.candidate=t[C+2*d],y.count=0;const{bounds:F,leftCacheBounds:O,rightCacheBounds:v}=y;for(let N=0;N<3;N++)v[N]=1/0,v[N+3]=-1/0,O[N]=1/0,O[N+3]=-1/0,F[N]=1/0,F[N+3]=-1/0;Fs(C,t,F)}m.sort(wo);let R=i;for(let C=0;C<R;C++){const y=m[C];for(;C+1<R&&m[C+1].candidate===y.candidate;)m.splice(C+1,1),R--}for(let C=h;C<u;C+=6){const y=t[C+2*d];for(let F=0;F<R;F++){const O=m[F];y>=O.candidate?Fs(C,t,O.rightCacheBounds):(Fs(C,t,O.leftCacheBounds),O.count++)}}for(let C=0;C<R;C++){const y=m[C],F=y.count,O=i-y.count,v=y.leftCacheBounds,N=y.rightCacheBounds;let x=0;F!==0&&(x=Je(v)/a);let G=0;O!==0&&(G=Je(N)/a);const w=Ln+Li*(x*F+G*O);w<l&&(r=d,l=w,o=y.candidate)}}else{for(let R=0;R<ae;R++){const C=ue[R];C.count=0,C.candidate=f+I+R*I;const y=C.bounds;for(let F=0;F<3;F++)y[F]=1/0,y[F+3]=-1/0}for(let R=h;R<u;R+=6){let F=~~((t[R+2*d]-f)/I);F>=ae&&(F=ae-1);const O=ue[F];O.count++,Fs(R,t,O.bounds)}const m=ue[ae-1];Mn(m.bounds,m.rightCacheBounds);for(let R=ae-2;R>=0;R--){const C=ue[R],y=ue[R+1];xn(C.bounds,y.rightCacheBounds,C.rightCacheBounds)}let _=0;for(let R=0;R<ae-1;R++){const C=ue[R],y=C.count,F=C.bounds,v=ue[R+1].rightCacheBounds;y!==0&&(_===0?Mn(F,Ss):xn(F,Ss,Ss)),_+=y;let N=0,x=0;_!==0&&(N=Je(Ss)/a);const G=i-_;G!==0&&(x=Je(v)/a);const w=Ln+Li*(N*_+x*G);w<l&&(r=d,l=w,o=C.candidate)}}}}else console.warn(`MeshBVH: Invalid build strategy value ${n} used.`);return{axis:r,pos:o}}function So(c,e,t,s){let i=0;for(let n=e,r=e+t;n<r;n++)i+=c[n*6+s*2];return i/t}class Os{constructor(){}}function Oo(c,e,t,s,i,n){let r=s,o=s+i-1;const a=n.pos,l=n.axis*2;for(;;){for(;r<=o&&t[r*6+l]<a;)r++;for(;r<=o&&t[o*6+l]>=a;)o--;if(r<o){for(let h=0;h<3;h++){let u=e[r*3+h];e[r*3+h]=e[o*3+h],e[o*3+h]=u}for(let h=0;h<6;h++){let u=t[r*6+h];t[r*6+h]=t[o*6+h],t[o*6+h]=u}r++,o--}else return r}}function No(c,e,t,s,i,n){let r=s,o=s+i-1;const a=n.pos,l=n.axis*2;for(;;){for(;r<=o&&t[r*6+l]<a;)r++;for(;r<=o&&t[o*6+l]>=a;)o--;if(r<o){let h=c[r];c[r]=c[o],c[o]=h;for(let u=0;u<6;u++){let d=t[r*6+u];t[r*6+u]=t[o*6+u],t[o*6+u]=d}r++,o--}else return r}}function bo(c,e){const t=(c.index?c.index.count:c.attributes.position.count)/3,s=t>2**16,i=s?4:2,n=e?new SharedArrayBuffer(t*i):new ArrayBuffer(t*i),r=s?new Uint32Array(n):new Uint16Array(n);for(let o=0,a=r.length;o<a;o++)r[o]=o;return r}function Po(c,e){const t=c.geometry,s=t.index?t.index.array:null,i=e.maxDepth,n=e.verbose,r=e.maxLeafTris,o=e.strategy,a=e.onProgress,l=je(t),h=c._indirectBuffer;let u=!1;const d=new Float32Array(6),f=new Float32Array(6),E=Ro(t,d),p=e.indirect?No:Oo,I=[],m=e.indirect?_r(t):Ar(t);if(m.length===1){const C=m[0],y=new Os;y.boundingData=d,yo(E,C.offset,C.count,f),R(y,C.offset,C.count,f),I.push(y)}else for(let C of m){const y=new Os;y.boundingData=new Float32Array(6),Mi(E,C.offset,C.count,y.boundingData,f),R(y,C.offset,C.count,f),I.push(y)}return I;function _(C){a&&a(C/l)}function R(C,y,F,O=null,v=0){if(!u&&v>=i&&(u=!0,n&&(console.warn(`MeshBVH: Max depth of ${i} reached when generating BVH. Consider increasing maxDepth.`),console.warn(t))),F<=r||v>=i)return _(y+F),C.offset=y,C.count=F,C;const N=Fo(C.boundingData,O,E,y,F,o);if(N.axis===-1)return _(y+F),C.offset=y,C.count=F,C;const x=p(h,s,E,y,F,N);if(x===y||x===y+F)_(y+F),C.offset=y,C.count=F;else{C.splitAxis=N.axis;const G=new Os,w=y,L=x-y;C.left=G,G.boundingData=new Float32Array(6),Mi(E,w,L,G.boundingData,f),R(G,w,L,f,v+1);const T=new Os,D=x,$=F-L;C.right=T,T.boundingData=new Float32Array(6),Mi(E,D,$,T.boundingData,f),R(T,D,$,f,v+1)}return C}}function Lo(c,e){const t=c.geometry;e.indirect&&(c._indirectBuffer=bo(t,e.useSharedArrayBuffer),_o(t)&&!e.verbose&&console.warn('MeshBVH: Provided geometry contains groups that do not fully span the vertex contents while using the "indirect" option. BVH may incorrectly report intersections on unrendered portions of the geometry.')),c._indirectBuffer||To(t,e);const s=Po(c,e);let i,n,r;const o=[],a=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;for(let u=0;u<s.length;u++){const d=s[u];let f=l(d);const E=new a(qs*f);i=new Float32Array(E),n=new Uint32Array(E),r=new Uint16Array(E),h(0,d),o.push(E)}c._roots=o;return;function l(u){return u.count?1:1+l(u.left)+l(u.right)}function h(u,d){const f=u/4,E=u/2,p=!!d.count,I=d.boundingData;for(let m=0;m<6;m++)i[f+m]=I[m];if(p){const m=d.offset,_=d.count;return n[f+6]=m,r[E+14]=_,r[E+15]=Ri,u+qs}else{const m=d.left,_=d.right,R=d.splitAxis;let C;if(C=h(u+qs,m),C/4>Math.pow(2,32))throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return n[f+6]=C/4,C=h(C,_),n[f+7]=R,C}}}class ce{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let s=1/0,i=-1/0;for(let n=0,r=e.length;n<r;n++){const a=e[n][t];s=a<s?a:s,i=a>i?a:i}this.min=s,this.max=i}setFromPoints(e,t){let s=1/0,i=-1/0;for(let n=0,r=t.length;n<r;n++){const o=t[n],a=e.dot(o);s=a<s?a:s,i=a>i?a:i}this.min=s,this.max=i}isSeparated(e){return this.min>e.max||e.min>this.max}}ce.prototype.setFromBox=function(){const c=new S.Vector3;return function(t,s){const i=s.min,n=s.max;let r=1/0,o=-1/0;for(let a=0;a<=1;a++)for(let l=0;l<=1;l++)for(let h=0;h<=1;h++){c.x=i.x*a+n.x*(1-a),c.y=i.y*l+n.y*(1-l),c.z=i.z*h+n.z*(1-h);const u=t.dot(c);r=Math.min(u,r),o=Math.max(u,o)}this.min=r,this.max=o}}();const vo=function(){const c=new S.Vector3,e=new S.Vector3,t=new S.Vector3;return function(i,n,r){const o=i.start,a=c,l=n.start,h=e;t.subVectors(o,l),c.subVectors(i.end,i.start),e.subVectors(n.end,n.start);const u=t.dot(h),d=h.dot(a),f=h.dot(h),E=t.dot(a),I=a.dot(a)*f-d*d;let m,_;I!==0?m=(u*d-E*f)/I:m=0,_=(u+m*d)/f,r.x=m,r.y=_}}(),Cn=function(){const c=new S.Vector2,e=new S.Vector3,t=new S.Vector3;return function(i,n,r,o){vo(i,n,c);let a=c.x,l=c.y;if(a>=0&&a<=1&&l>=0&&l<=1){i.at(a,r),n.at(l,o);return}else if(a>=0&&a<=1){l<0?n.at(0,o):n.at(1,o),i.closestPointToPoint(o,!0,r);return}else if(l>=0&&l<=1){a<0?i.at(0,r):i.at(1,r),n.closestPointToPoint(r,!0,o);return}else{let h;a<0?h=i.start:h=i.end;let u;l<0?u=n.start:u=n.end;const d=e,f=t;if(i.closestPointToPoint(u,!0,e),n.closestPointToPoint(h,!0,t),d.distanceToSquared(u)<=f.distanceToSquared(h)){r.copy(d),o.copy(u);return}else{r.copy(h),o.copy(f);return}}}}(),Mo=function(){const c=new S.Vector3,e=new S.Vector3,t=new S.Plane,s=new S.Line3;return function(n,r){const{radius:o,center:a}=n,{a:l,b:h,c:u}=r;if(s.start=l,s.end=h,s.closestPointToPoint(a,!0,c).distanceTo(a)<=o||(s.start=l,s.end=u,s.closestPointToPoint(a,!0,c).distanceTo(a)<=o)||(s.start=h,s.end=u,s.closestPointToPoint(a,!0,c).distanceTo(a)<=o))return!0;const p=r.getPlane(t);if(Math.abs(p.distanceToPoint(a))<=o){const m=p.projectPoint(a,e);if(r.containsPoint(m))return!0}return!1}}(),xo=1e-15;function xi(c){return Math.abs(c)<xo}class Jt extends S.Triangle{constructor(...e){super(...e),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new S.Vector3),this.satBounds=new Array(4).fill().map(()=>new ce),this.points=[this.a,this.b,this.c],this.sphere=new S.Sphere,this.plane=new S.Plane,this.needsUpdate=!0}intersectsSphere(e){return Mo(e,this)}update(){const e=this.a,t=this.b,s=this.c,i=this.points,n=this.satAxes,r=this.satBounds,o=n[0],a=r[0];this.getNormal(o),a.setFromPoints(o,i);const l=n[1],h=r[1];l.subVectors(e,t),h.setFromPoints(l,i);const u=n[2],d=r[2];u.subVectors(t,s),d.setFromPoints(u,i);const f=n[3],E=r[3];f.subVectors(s,e),E.setFromPoints(f,i),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(o,e),this.needsUpdate=!1}}Jt.prototype.closestPointToSegment=function(){const c=new S.Vector3,e=new S.Vector3,t=new S.Line3;return function(i,n=null,r=null){const{start:o,end:a}=i,l=this.points;let h,u=1/0;for(let d=0;d<3;d++){const f=(d+1)%3;t.start.copy(l[d]),t.end.copy(l[f]),Cn(t,i,c,e),h=c.distanceToSquared(e),h<u&&(u=h,n&&n.copy(c),r&&r.copy(e))}return this.closestPointToPoint(o,c),h=o.distanceToSquared(c),h<u&&(u=h,n&&n.copy(c),r&&r.copy(o)),this.closestPointToPoint(a,c),h=a.distanceToSquared(c),h<u&&(u=h,n&&n.copy(c),r&&r.copy(a)),Math.sqrt(u)}}();Jt.prototype.intersectsTriangle=function(){const c=new Jt,e=new Array(3),t=new Array(3),s=new ce,i=new ce,n=new S.Vector3,r=new S.Vector3,o=new S.Vector3,a=new S.Vector3,l=new S.Vector3,h=new S.Line3,u=new S.Line3,d=new S.Line3,f=new S.Vector3;function E(p,I,m){const _=p.points;let R=0,C=-1;for(let y=0;y<3;y++){const{start:F,end:O}=h;F.copy(_[y]),O.copy(_[(y+1)%3]),h.delta(r);const v=xi(I.distanceToPoint(F));if(xi(I.normal.dot(r))&&v){m.copy(h),R=2;break}const N=I.intersectLine(h,f);if(!N&&v&&f.copy(F),(N||v)&&!xi(f.distanceTo(O))){if(R<=1)(R===1?m.start:m.end).copy(f),v&&(C=R);else if(R>=2){(C===1?m.start:m.end).copy(f),R=2;break}if(R++,R===2&&C===-1)break}}return R}return function(I,m=null,_=!1){this.needsUpdate&&this.update(),I.isExtendedTriangle?I.needsUpdate&&I.update():(c.copy(I),c.update(),I=c);const R=this.plane,C=I.plane;if(Math.abs(R.normal.dot(C.normal))>1-1e-10){const y=this.satBounds,F=this.satAxes;t[0]=I.a,t[1]=I.b,t[2]=I.c;for(let N=0;N<4;N++){const x=y[N],G=F[N];if(s.setFromPoints(G,t),x.isSeparated(s))return!1}const O=I.satBounds,v=I.satAxes;e[0]=this.a,e[1]=this.b,e[2]=this.c;for(let N=0;N<4;N++){const x=O[N],G=v[N];if(s.setFromPoints(G,e),x.isSeparated(s))return!1}for(let N=0;N<4;N++){const x=F[N];for(let G=0;G<4;G++){const w=v[G];if(n.crossVectors(x,w),s.setFromPoints(n,e),i.setFromPoints(n,t),s.isSeparated(i))return!1}}return m&&(_||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),m.start.set(0,0,0),m.end.set(0,0,0)),!0}else{const y=E(this,C,u);if(y===1&&I.containsPoint(u.end))return m&&(m.start.copy(u.end),m.end.copy(u.end)),!0;if(y!==2)return!1;const F=E(I,R,d);if(F===1&&this.containsPoint(d.end))return m&&(m.start.copy(d.end),m.end.copy(d.end)),!0;if(F!==2)return!1;if(u.delta(o),d.delta(a),o.dot(a)<0){let L=d.start;d.start=d.end,d.end=L}const O=u.start.dot(o),v=u.end.dot(o),N=d.start.dot(o),x=d.end.dot(o),G=v<N,w=O<x;return O!==x&&N!==v&&G===w?!1:(m&&(l.subVectors(u.start,d.start),l.dot(o)>0?m.start.copy(u.start):m.start.copy(d.start),l.subVectors(u.end,d.end),l.dot(o)<0?m.end.copy(u.end):m.end.copy(d.end)),!0)}}}();Jt.prototype.distanceToPoint=function(){const c=new S.Vector3;return function(t){return this.closestPointToPoint(t,c),t.distanceTo(c)}}();Jt.prototype.distanceToTriangle=function(){const c=new S.Vector3,e=new S.Vector3,t=["a","b","c"],s=new S.Line3,i=new S.Line3;return function(r,o=null,a=null){const l=o||a?s:null;if(this.intersectsTriangle(r,l))return(o||a)&&(o&&l.getCenter(o),a&&l.getCenter(a)),0;let h=1/0;for(let u=0;u<3;u++){let d;const f=t[u],E=r[f];this.closestPointToPoint(E,c),d=E.distanceToSquared(c),d<h&&(h=d,o&&o.copy(c),a&&a.copy(E));const p=this[f];r.closestPointToPoint(p,c),d=p.distanceToSquared(c),d<h&&(h=d,o&&o.copy(p),a&&a.copy(c))}for(let u=0;u<3;u++){const d=t[u],f=t[(u+1)%3];s.set(this[d],this[f]);for(let E=0;E<3;E++){const p=t[E],I=t[(E+1)%3];i.set(r[p],r[I]),Cn(s,i,c,e);const m=c.distanceToSquared(e);m<h&&(h=m,o&&o.copy(c),a&&a.copy(e))}}return Math.sqrt(h)}}();class Dt{constructor(e,t,s){this.isOrientedBox=!0,this.min=new S.Vector3,this.max=new S.Vector3,this.matrix=new S.Matrix4,this.invMatrix=new S.Matrix4,this.points=new Array(8).fill().map(()=>new S.Vector3),this.satAxes=new Array(3).fill().map(()=>new S.Vector3),this.satBounds=new Array(3).fill().map(()=>new ce),this.alignedSatBounds=new Array(3).fill().map(()=>new ce),this.needsUpdate=!1,e&&this.min.copy(e),t&&this.max.copy(t),s&&this.matrix.copy(s)}set(e,t,s){this.min.copy(e),this.max.copy(t),this.matrix.copy(s),this.needsUpdate=!0}copy(e){this.min.copy(e.min),this.max.copy(e.max),this.matrix.copy(e.matrix),this.needsUpdate=!0}}Dt.prototype.update=function(){return function(){const e=this.matrix,t=this.min,s=this.max,i=this.points;for(let l=0;l<=1;l++)for(let h=0;h<=1;h++)for(let u=0;u<=1;u++){const d=1*l|2*h|4*u,f=i[d];f.x=l?s.x:t.x,f.y=h?s.y:t.y,f.z=u?s.z:t.z,f.applyMatrix4(e)}const n=this.satBounds,r=this.satAxes,o=i[0];for(let l=0;l<3;l++){const h=r[l],u=n[l],d=1<<l,f=i[d];h.subVectors(o,f),u.setFromPoints(h,i)}const a=this.alignedSatBounds;a[0].setFromPointsField(i,"x"),a[1].setFromPointsField(i,"y"),a[2].setFromPointsField(i,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}}();Dt.prototype.intersectsBox=function(){const c=new ce;return function(t){this.needsUpdate&&this.update();const s=t.min,i=t.max,n=this.satBounds,r=this.satAxes,o=this.alignedSatBounds;if(c.min=s.x,c.max=i.x,o[0].isSeparated(c)||(c.min=s.y,c.max=i.y,o[1].isSeparated(c))||(c.min=s.z,c.max=i.z,o[2].isSeparated(c)))return!1;for(let a=0;a<3;a++){const l=r[a],h=n[a];if(c.setFromBox(l,t),h.isSeparated(c))return!1}return!0}}();Dt.prototype.intersectsTriangle=function(){const c=new Jt,e=new Array(3),t=new ce,s=new ce,i=new S.Vector3;return function(r){this.needsUpdate&&this.update(),r.isExtendedTriangle?r.needsUpdate&&r.update():(c.copy(r),c.update(),r=c);const o=this.satBounds,a=this.satAxes;e[0]=r.a,e[1]=r.b,e[2]=r.c;for(let d=0;d<3;d++){const f=o[d],E=a[d];if(t.setFromPoints(E,e),f.isSeparated(t))return!1}const l=r.satBounds,h=r.satAxes,u=this.points;for(let d=0;d<3;d++){const f=l[d],E=h[d];if(t.setFromPoints(E,u),f.isSeparated(t))return!1}for(let d=0;d<3;d++){const f=a[d];for(let E=0;E<4;E++){const p=h[E];if(i.crossVectors(f,p),t.setFromPoints(i,e),s.setFromPoints(i,u),t.isSeparated(s))return!1}}return!0}}();Dt.prototype.closestPointToPoint=function(){return function(e,t){return this.needsUpdate&&this.update(),t.copy(e).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),t}}();Dt.prototype.distanceToPoint=function(){const c=new S.Vector3;return function(t){return this.closestPointToPoint(t,c),t.distanceTo(c)}}();Dt.prototype.distanceToBox=function(){const c=["x","y","z"],e=new Array(12).fill().map(()=>new S.Line3),t=new Array(12).fill().map(()=>new S.Line3),s=new S.Vector3,i=new S.Vector3;return function(r,o=0,a=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(r))return(a||l)&&(r.getCenter(i),this.closestPointToPoint(i,s),r.closestPointToPoint(s,i),a&&a.copy(s),l&&l.copy(i)),0;const h=o*o,u=r.min,d=r.max,f=this.points;let E=1/0;for(let I=0;I<8;I++){const m=f[I];i.copy(m).clamp(u,d);const _=m.distanceToSquared(i);if(_<E&&(E=_,a&&a.copy(m),l&&l.copy(i),_<h))return Math.sqrt(_)}let p=0;for(let I=0;I<3;I++)for(let m=0;m<=1;m++)for(let _=0;_<=1;_++){const R=(I+1)%3,C=(I+2)%3,y=m<<R|_<<C,F=1<<I|m<<R|_<<C,O=f[y],v=f[F];e[p].set(O,v);const x=c[I],G=c[R],w=c[C],L=t[p],T=L.start,D=L.end;T[x]=u[x],T[G]=m?u[G]:d[G],T[w]=_?u[w]:d[G],D[x]=d[x],D[G]=m?u[G]:d[G],D[w]=_?u[w]:d[G],p++}for(let I=0;I<=1;I++)for(let m=0;m<=1;m++)for(let _=0;_<=1;_++){i.x=I?d.x:u.x,i.y=m?d.y:u.y,i.z=_?d.z:u.z,this.closestPointToPoint(i,s);const R=i.distanceToSquared(s);if(R<E&&(E=R,a&&a.copy(s),l&&l.copy(i),R<h))return Math.sqrt(R)}for(let I=0;I<12;I++){const m=e[I];for(let _=0;_<12;_++){const R=t[_];Cn(m,R,s,i);const C=s.distanceToSquared(i);if(C<E&&(E=C,a&&a.copy(s),l&&l.copy(i),C<h))return Math.sqrt(C)}}return Math.sqrt(E)}}();class Tn{constructor(e){this._getNewPrimitive=e,this._primitives=[]}getPrimitive(){const e=this._primitives;return e.length===0?this._getNewPrimitive():e.pop()}releasePrimitive(e){this._primitives.push(e)}}class Do extends Tn{constructor(){super(()=>new Jt)}}const Yt=new Do;function Bt(c,e){return e[c+15]===65535}function zt(c,e){return e[c+6]}function Ht(c,e){return e[c+14]}function Wt(c){return c+8}function Xt(c,e){return e[c+6]}function yr(c,e){return e[c+7]}class Uo{constructor(){this.float32Array=null,this.uint16Array=null,this.uint32Array=null;const e=[];let t=null;this.setBuffer=s=>{t&&e.push(t),t=s,this.float32Array=new Float32Array(s),this.uint16Array=new Uint16Array(s),this.uint32Array=new Uint32Array(s)},this.clearBuffer=()=>{t=null,this.float32Array=null,this.uint16Array=null,this.uint32Array=null,e.length!==0&&this.setBuffer(e.pop())}}}const _t=new Uo;let me,Xe;const Le=[],Ns=new Tn(()=>new S.Box3);function Bo(c,e,t,s,i,n){me=Ns.getPrimitive(),Xe=Ns.getPrimitive(),Le.push(me,Xe),_t.setBuffer(c._roots[e]);const r=Ji(0,c.geometry,t,s,i,n);_t.clearBuffer(),Ns.releasePrimitive(me),Ns.releasePrimitive(Xe),Le.pop(),Le.pop();const o=Le.length;return o>0&&(Xe=Le[o-1],me=Le[o-2]),r}function Ji(c,e,t,s,i=null,n=0,r=0){const{float32Array:o,uint16Array:a,uint32Array:l}=_t;let h=c*2;if(Bt(h,a)){const d=zt(c,l),f=Ht(h,a);return wt(c,o,me),s(d,f,!1,r,n+c,me)}else{let x=function(w){const{uint16Array:L,uint32Array:T}=_t;let D=w*2;for(;!Bt(D,L);)w=Wt(w),D=w*2;return zt(w,T)},G=function(w){const{uint16Array:L,uint32Array:T}=_t;let D=w*2;for(;!Bt(D,L);)w=Xt(w,T),D=w*2;return zt(w,T)+Ht(D,L)};const d=Wt(c),f=Xt(c,l);let E=d,p=f,I,m,_,R;if(i&&(_=me,R=Xe,wt(E,o,_),wt(p,o,R),I=i(_),m=i(R),m<I)){E=f,p=d;const w=I;I=m,m=w,_=R}_||(_=me,wt(E,o,_));const C=Bt(E*2,a),y=t(_,C,I,r+1,n+E);let F;if(y===Pn){const w=x(E),T=G(E)-w;F=s(w,T,!0,r+1,n+E,_)}else F=y&&Ji(E,e,t,s,i,n,r+1);if(F)return!0;R=Xe,wt(p,o,R);const O=Bt(p*2,a),v=t(R,O,m,r+1,n+p);let N;if(v===Pn){const w=x(p),T=G(p)-w;N=s(w,T,!0,r+1,n+p,R)}else N=v&&Ji(p,e,t,s,i,n,r+1);return!!N}}const ts=new S.Vector3,Di=new S.Vector3;function zo(c,e,t={},s=0,i=1/0){const n=s*s,r=i*i;let o=1/0,a=null;if(c.shapecast({boundsTraverseOrder:h=>(ts.copy(e).clamp(h.min,h.max),ts.distanceToSquared(e)),intersectsBounds:(h,u,d)=>d<o&&d<r,intersectsTriangle:(h,u)=>{h.closestPointToPoint(e,ts);const d=e.distanceToSquared(ts);return d<o&&(Di.copy(ts),o=d,a=u),d<n}}),o===1/0)return null;const l=Math.sqrt(o);return t.point?t.point.copy(Di):t.point=Di.clone(),t.distance=l,t.faceIndex=a,t}const ve=new S.Vector3,Me=new S.Vector3,xe=new S.Vector3,bs=new S.Vector2,Ps=new S.Vector2,Ls=new S.Vector2,Dn=new S.Vector3,Un=new S.Vector3,Bn=new S.Vector3,vs=new S.Vector3;function Vo(c,e,t,s,i,n){let r;return n===S.BackSide?r=c.intersectTriangle(s,t,e,!0,i):r=c.intersectTriangle(e,t,s,n!==S.DoubleSide,i),r===null?null:{distance:c.origin.distanceTo(i),point:i.clone()}}function ko(c,e,t,s,i,n,r,o,a){ve.fromBufferAttribute(e,n),Me.fromBufferAttribute(e,r),xe.fromBufferAttribute(e,o);const l=Vo(c,ve,Me,xe,vs,a);if(l){s&&(bs.fromBufferAttribute(s,n),Ps.fromBufferAttribute(s,r),Ls.fromBufferAttribute(s,o),l.uv=S.Triangle.getInterpolation(vs,ve,Me,xe,bs,Ps,Ls,new S.Vector2)),i&&(bs.fromBufferAttribute(i,n),Ps.fromBufferAttribute(i,r),Ls.fromBufferAttribute(i,o),l.uv1=S.Triangle.getInterpolation(vs,ve,Me,xe,bs,Ps,Ls,new S.Vector2)),t&&(Dn.fromBufferAttribute(t,n),Un.fromBufferAttribute(t,r),Bn.fromBufferAttribute(t,o),l.normal=S.Triangle.getInterpolation(vs,ve,Me,xe,Dn,Un,Bn,new S.Vector3),l.normal.dot(c.direction)>0&&l.normal.multiplyScalar(-1));const h={a:n,b:r,c:o,normal:new S.Vector3,materialIndex:0};S.Triangle.getNormal(ve,Me,xe,h.normal),l.face=h,l.faceIndex=n}return l}function wi(c,e,t,s,i){const n=s*3;let r=n+0,o=n+1,a=n+2;const l=c.index;c.index&&(r=l.getX(r),o=l.getX(o),a=l.getX(a));const{position:h,normal:u,uv:d,uv1:f}=c.attributes,E=ko(t,h,u,d,f,r,o,a,e);return E?(E.faceIndex=s,i&&i.push(E),E):null}function bt(c,e,t,s){const i=c.a,n=c.b,r=c.c;let o=e,a=e+1,l=e+2;t&&(o=t.getX(o),a=t.getX(a),l=t.getX(l)),i.x=s.getX(o),i.y=s.getY(o),i.z=s.getZ(o),n.x=s.getX(a),n.y=s.getY(a),n.z=s.getZ(a),r.x=s.getX(l),r.y=s.getY(l),r.z=s.getZ(l)}function Go(c,e,t,s,i,n){const{geometry:r,_indirectBuffer:o}=c;for(let a=s,l=s+i;a<l;a++)wi(r,e,t,a,n)}function Yo(c,e,t,s,i){const{geometry:n,_indirectBuffer:r}=c;let o=1/0,a=null;for(let l=s,h=s+i;l<h;l++){let u;u=wi(n,e,t,l),u&&u.distance<o&&(a=u,o=u.distance)}return a}function Ho(c,e,t,s,i,n,r){const{geometry:o}=t,{index:a}=o,l=o.attributes.position;for(let h=c,u=e+c;h<u;h++){let d;if(d=h,bt(r,d*3,a,l),r.needsUpdate=!0,s(r,d,i,n))return!0}return!1}function Wo(c,e=null){e&&Array.isArray(e)&&(e=new Set(e));const t=c.geometry,s=t.index?t.index.array:null,i=t.attributes.position;let n,r,o,a,l=0;const h=c._roots;for(let d=0,f=h.length;d<f;d++)n=h[d],r=new Uint32Array(n),o=new Uint16Array(n),a=new Float32Array(n),u(0,l),l+=n.byteLength;function u(d,f,E=!1){const p=d*2;if(o[p+15]===Ri){const m=r[d+6],_=o[p+14];let R=1/0,C=1/0,y=1/0,F=-1/0,O=-1/0,v=-1/0;for(let N=3*m,x=3*(m+_);N<x;N++){let G=s[N];const w=i.getX(G),L=i.getY(G),T=i.getZ(G);w<R&&(R=w),w>F&&(F=w),L<C&&(C=L),L>O&&(O=L),T<y&&(y=T),T>v&&(v=T)}return a[d+0]!==R||a[d+1]!==C||a[d+2]!==y||a[d+3]!==F||a[d+4]!==O||a[d+5]!==v?(a[d+0]=R,a[d+1]=C,a[d+2]=y,a[d+3]=F,a[d+4]=O,a[d+5]=v,!0):!1}else{const m=d+8,_=r[d+6],R=m+f,C=_+f;let y=E,F=!1,O=!1;e?y||(F=e.has(R),O=e.has(C),y=!F&&!O):(F=!0,O=!0);const v=y||F,N=y||O;let x=!1;v&&(x=u(m,f,y));let G=!1;N&&(G=u(_,f,y));const w=x||G;if(w)for(let L=0;L<3;L++){const T=m+L,D=_+L,$=a[T],V=a[T+3],et=a[D],W=a[D+3];a[d+L]=$<et?$:et,a[d+L+3]=V>W?V:W}return w}}}const zn=new S.Box3;function Ce(c,e,t,s){return wt(c,e,zn),t.intersectBox(zn,s)}function Xo(c,e,t,s,i,n){const{geometry:r,_indirectBuffer:o}=c;for(let a=s,l=s+i;a<l;a++){let h=o?o[a]:a;wi(r,e,t,h,n)}}function Zo(c,e,t,s,i){const{geometry:n,_indirectBuffer:r}=c;let o=1/0,a=null;for(let l=s,h=s+i;l<h;l++){let u;u=wi(n,e,t,r?r[l]:l),u&&u.distance<o&&(a=u,o=u.distance)}return a}function $o(c,e,t,s,i,n,r){const{geometry:o}=t,{index:a}=o,l=o.attributes.position;for(let h=c,u=e+c;h<u;h++){let d;if(d=t.resolveTriangleIndex(h),bt(r,d*3,a,l),r.needsUpdate=!0,s(r,d,i,n))return!0}return!1}const Vn=new S.Vector3;function jo(c,e,t,s,i){_t.setBuffer(c._roots[e]),tn(0,c,t,s,i),_t.clearBuffer()}function tn(c,e,t,s,i){const{float32Array:n,uint16Array:r,uint32Array:o}=_t,a=c*2;if(Bt(a,r)){const h=zt(c,o),u=Ht(a,r);Go(e,t,s,h,u,i)}else{const h=Wt(c);Ce(h,n,s,Vn)&&tn(h,e,t,s,i);const u=Xt(c,o);Ce(u,n,s,Vn)&&tn(u,e,t,s,i)}}const kn=new S.Vector3,Qo=["x","y","z"];function qo(c,e,t,s){_t.setBuffer(c._roots[e]);const i=en(0,c,t,s);return _t.clearBuffer(),i}function en(c,e,t,s){const{float32Array:i,uint16Array:n,uint32Array:r}=_t;let o=c*2;if(Bt(o,n)){const l=zt(c,r),h=Ht(o,n);return Yo(e,t,s,l,h)}else{const l=yr(c,r),h=Qo[l],d=s.direction[h]>=0;let f,E;d?(f=Wt(c),E=Xt(c,r)):(f=Xt(c,r),E=Wt(c));const I=Ce(f,i,s,kn)?en(f,e,t,s):null;if(I){const R=I.point[h];if(d?R<=i[E+l]:R>=i[E+l+3])return I}const _=Ce(E,i,s,kn)?en(E,e,t,s):null;return I&&_?I.distance<=_.distance?I:_:I||_||null}}const Ms=new S.Box3,De=new Jt,Ue=new Jt,es=new S.Matrix4,Gn=new Dt,xs=new Dt;function Ko(c,e,t,s){_t.setBuffer(c._roots[e]);const i=sn(0,c,t,s);return _t.clearBuffer(),i}function sn(c,e,t,s,i=null){const{float32Array:n,uint16Array:r,uint32Array:o}=_t;let a=c*2;if(i===null&&(t.boundingBox||t.computeBoundingBox(),Gn.set(t.boundingBox.min,t.boundingBox.max,s),i=Gn),Bt(a,r)){const h=e.geometry,u=h.index,d=h.attributes.position,f=t.index,E=t.attributes.position,p=zt(c,o),I=Ht(a,r);if(es.copy(s).invert(),t.boundsTree)return wt(c,n,xs),xs.matrix.copy(es),xs.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:_=>xs.intersectsBox(_),intersectsTriangle:_=>{_.a.applyMatrix4(s),_.b.applyMatrix4(s),_.c.applyMatrix4(s),_.needsUpdate=!0;for(let R=p*3,C=(I+p)*3;R<C;R+=3)if(bt(Ue,R,u,d),Ue.needsUpdate=!0,_.intersectsTriangle(Ue))return!0;return!1}});for(let m=p*3,_=(I+p)*3;m<_;m+=3){bt(De,m,u,d),De.a.applyMatrix4(es),De.b.applyMatrix4(es),De.c.applyMatrix4(es),De.needsUpdate=!0;for(let R=0,C=f.count;R<C;R+=3)if(bt(Ue,R,f,E),Ue.needsUpdate=!0,De.intersectsTriangle(Ue))return!0}}else{const h=c+8,u=o[c+6];return wt(h,n,Ms),!!(i.intersectsBox(Ms)&&sn(h,e,t,s,i)||(wt(u,n,Ms),i.intersectsBox(Ms)&&sn(u,e,t,s,i)))}}const Ds=new S.Matrix4,Ui=new Dt,ss=new Dt,Jo=new S.Vector3,ta=new S.Vector3,ea=new S.Vector3,sa=new S.Vector3;function ia(c,e,t,s={},i={},n=0,r=1/0){e.boundingBox||e.computeBoundingBox(),Ui.set(e.boundingBox.min,e.boundingBox.max,t),Ui.needsUpdate=!0;const o=c.geometry,a=o.attributes.position,l=o.index,h=e.attributes.position,u=e.index,d=Yt.getPrimitive(),f=Yt.getPrimitive();let E=Jo,p=ta,I=null,m=null;i&&(I=ea,m=sa);let _=1/0,R=null,C=null;return Ds.copy(t).invert(),ss.matrix.copy(Ds),c.shapecast({boundsTraverseOrder:y=>Ui.distanceToBox(y),intersectsBounds:(y,F,O)=>O<_&&O<r?(F&&(ss.min.copy(y.min),ss.max.copy(y.max),ss.needsUpdate=!0),!0):!1,intersectsRange:(y,F)=>{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:v=>ss.distanceToBox(v),intersectsBounds:(v,N,x)=>x<_&&x<r,intersectsRange:(v,N)=>{for(let x=v,G=v+N;x<G;x++){bt(f,3*x,u,h),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let w=y,L=y+F;w<L;w++){bt(d,3*w,l,a),d.needsUpdate=!0;const T=d.distanceToTriangle(f,E,I);if(T<_&&(p.copy(E),m&&m.copy(I),_=T,R=w,C=x),T<n)return!0}}}});{const O=je(e);for(let v=0,N=O;v<N;v++){bt(f,3*v,u,h),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let x=y,G=y+F;x<G;x++){bt(d,3*x,l,a),d.needsUpdate=!0;const w=d.distanceToTriangle(f,E,I);if(w<_&&(p.copy(E),m&&m.copy(I),_=w,R=x,C=v),w<n)return!0}}}}}),Yt.releasePrimitive(d),Yt.releasePrimitive(f),_===1/0?null:(s.point?s.point.copy(p):s.point=p.clone(),s.distance=_,s.faceIndex=R,i&&(i.point?i.point.copy(m):i.point=m.clone(),i.point.applyMatrix4(Ds),p.applyMatrix4(Ds),i.distance=p.sub(i.point).length(),i.faceIndex=C),s)}function na(c,e=null){e&&Array.isArray(e)&&(e=new Set(e));const t=c.geometry,s=t.index?t.index.array:null,i=t.attributes.position;let n,r,o,a,l=0;const h=c._roots;for(let d=0,f=h.length;d<f;d++)n=h[d],r=new Uint32Array(n),o=new Uint16Array(n),a=new Float32Array(n),u(0,l),l+=n.byteLength;function u(d,f,E=!1){const p=d*2;if(o[p+15]===Ri){const m=r[d+6],_=o[p+14];let R=1/0,C=1/0,y=1/0,F=-1/0,O=-1/0,v=-1/0;for(let N=m,x=m+_;N<x;N++){const G=3*c.resolveTriangleIndex(N);for(let w=0;w<3;w++){let L=G+w;L=s?s[L]:L;const T=i.getX(L),D=i.getY(L),$=i.getZ(L);T<R&&(R=T),T>F&&(F=T),D<C&&(C=D),D>O&&(O=D),$<y&&(y=$),$>v&&(v=$)}}return a[d+0]!==R||a[d+1]!==C||a[d+2]!==y||a[d+3]!==F||a[d+4]!==O||a[d+5]!==v?(a[d+0]=R,a[d+1]=C,a[d+2]=y,a[d+3]=F,a[d+4]=O,a[d+5]=v,!0):!1}else{const m=d+8,_=r[d+6],R=m+f,C=_+f;let y=E,F=!1,O=!1;e?y||(F=e.has(R),O=e.has(C),y=!F&&!O):(F=!0,O=!0);const v=y||F,N=y||O;let x=!1;v&&(x=u(m,f,y));let G=!1;N&&(G=u(_,f,y));const w=x||G;if(w)for(let L=0;L<3;L++){const T=m+L,D=_+L,$=a[T],V=a[T+3],et=a[D],W=a[D+3];a[d+L]=$<et?$:et,a[d+L+3]=V>W?V:W}return w}}}const Yn=new S.Vector3;function ra(c,e,t,s,i){_t.setBuffer(c._roots[e]),nn(0,c,t,s,i),_t.clearBuffer()}function nn(c,e,t,s,i){const{float32Array:n,uint16Array:r,uint32Array:o}=_t,a=c*2;if(Bt(a,r)){const h=zt(c,o),u=Ht(a,r);Xo(e,t,s,h,u,i)}else{const h=Wt(c);Ce(h,n,s,Yn)&&nn(h,e,t,s,i);const u=Xt(c,o);Ce(u,n,s,Yn)&&nn(u,e,t,s,i)}}const Hn=new S.Vector3,oa=["x","y","z"];function aa(c,e,t,s){_t.setBuffer(c._roots[e]);const i=rn(0,c,t,s);return _t.clearBuffer(),i}function rn(c,e,t,s){const{float32Array:i,uint16Array:n,uint32Array:r}=_t;let o=c*2;if(Bt(o,n)){const l=zt(c,r),h=Ht(o,n);return Zo(e,t,s,l,h)}else{const l=yr(c,r),h=oa[l],d=s.direction[h]>=0;let f,E;d?(f=Wt(c),E=Xt(c,r)):(f=Xt(c,r),E=Wt(c));const I=Ce(f,i,s,Hn)?rn(f,e,t,s):null;if(I){const R=I.point[h];if(d?R<=i[E+l]:R>=i[E+l+3])return I}const _=Ce(E,i,s,Hn)?rn(E,e,t,s):null;return I&&_?I.distance<=_.distance?I:_:I||_||null}}const Us=new S.Box3,Be=new Jt,ze=new Jt,is=new S.Matrix4,Wn=new Dt,Bs=new Dt;function ca(c,e,t,s){_t.setBuffer(c._roots[e]);const i=on(0,c,t,s);return _t.clearBuffer(),i}function on(c,e,t,s,i=null){const{float32Array:n,uint16Array:r,uint32Array:o}=_t;let a=c*2;if(i===null&&(t.boundingBox||t.computeBoundingBox(),Wn.set(t.boundingBox.min,t.boundingBox.max,s),i=Wn),Bt(a,r)){const h=e.geometry,u=h.index,d=h.attributes.position,f=t.index,E=t.attributes.position,p=zt(c,o),I=Ht(a,r);if(is.copy(s).invert(),t.boundsTree)return wt(c,n,Bs),Bs.matrix.copy(is),Bs.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:_=>Bs.intersectsBox(_),intersectsTriangle:_=>{_.a.applyMatrix4(s),_.b.applyMatrix4(s),_.c.applyMatrix4(s),_.needsUpdate=!0;for(let R=p,C=I+p;R<C;R++)if(bt(ze,3*e.resolveTriangleIndex(R),u,d),ze.needsUpdate=!0,_.intersectsTriangle(ze))return!0;return!1}});for(let m=p,_=I+p;m<_;m++){const R=e.resolveTriangleIndex(m);bt(Be,3*R,u,d),Be.a.applyMatrix4(is),Be.b.applyMatrix4(is),Be.c.applyMatrix4(is),Be.needsUpdate=!0;for(let C=0,y=f.count;C<y;C+=3)if(bt(ze,C,f,E),ze.needsUpdate=!0,Be.intersectsTriangle(ze))return!0}}else{const h=c+8,u=o[c+6];return wt(h,n,Us),!!(i.intersectsBox(Us)&&on(h,e,t,s,i)||(wt(u,n,Us),i.intersectsBox(Us)&&on(u,e,t,s,i)))}}const zs=new S.Matrix4,Bi=new Dt,ns=new Dt,la=new S.Vector3,ha=new S.Vector3,ua=new S.Vector3,da=new S.Vector3;function fa(c,e,t,s={},i={},n=0,r=1/0){e.boundingBox||e.computeBoundingBox(),Bi.set(e.boundingBox.min,e.boundingBox.max,t),Bi.needsUpdate=!0;const o=c.geometry,a=o.attributes.position,l=o.index,h=e.attributes.position,u=e.index,d=Yt.getPrimitive(),f=Yt.getPrimitive();let E=la,p=ha,I=null,m=null;i&&(I=ua,m=da);let _=1/0,R=null,C=null;return zs.copy(t).invert(),ns.matrix.copy(zs),c.shapecast({boundsTraverseOrder:y=>Bi.distanceToBox(y),intersectsBounds:(y,F,O)=>O<_&&O<r?(F&&(ns.min.copy(y.min),ns.max.copy(y.max),ns.needsUpdate=!0),!0):!1,intersectsRange:(y,F)=>{if(e.boundsTree){const O=e.boundsTree;return O.shapecast({boundsTraverseOrder:v=>ns.distanceToBox(v),intersectsBounds:(v,N,x)=>x<_&&x<r,intersectsRange:(v,N)=>{for(let x=v,G=v+N;x<G;x++){const w=O.resolveTriangleIndex(x);bt(f,3*w,u,h),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let L=y,T=y+F;L<T;L++){const D=c.resolveTriangleIndex(L);bt(d,3*D,l,a),d.needsUpdate=!0;const $=d.distanceToTriangle(f,E,I);if($<_&&(p.copy(E),m&&m.copy(I),_=$,R=L,C=x),$<n)return!0}}}})}else{const O=je(e);for(let v=0,N=O;v<N;v++){bt(f,3*v,u,h),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let x=y,G=y+F;x<G;x++){const w=c.resolveTriangleIndex(x);bt(d,3*w,l,a),d.needsUpdate=!0;const L=d.distanceToTriangle(f,E,I);if(L<_&&(p.copy(E),m&&m.copy(I),_=L,R=x,C=v),L<n)return!0}}}}}),Yt.releasePrimitive(d),Yt.releasePrimitive(f),_===1/0?null:(s.point?s.point.copy(p):s.point=p.clone(),s.distance=_,s.faceIndex=R,i&&(i.point?i.point.copy(m):i.point=m.clone(),i.point.applyMatrix4(zs),p.applyMatrix4(zs),i.distance=p.sub(i.point).length(),i.faceIndex=C),s)}function pa(){return typeof SharedArrayBuffer<"u"}const ms=new _t.constructor,ti=new _t.constructor,pe=new Tn(()=>new S.Box3),Ve=new S.Box3,ke=new S.Box3,zi=new S.Box3,Vi=new S.Box3;let ki=!1;function Ea(c,e,t,s){if(ki)throw new Error("MeshBVH: Recursive calls to bvhcast not supported.");ki=!0;const i=c._roots,n=e._roots;let r,o=0,a=0;const l=new S.Matrix4().copy(t).invert();for(let h=0,u=i.length;h<u;h++){ms.setBuffer(i[h]),a=0;const d=pe.getPrimitive();wt(0,ms.float32Array,d),d.applyMatrix4(l);for(let f=0,E=n.length;f<E&&(ti.setBuffer(n[h]),r=jt(0,0,t,l,s,o,a,0,0,d),ti.clearBuffer(),a+=n[f].length,!r);f++);if(pe.releasePrimitive(d),ms.clearBuffer(),o+=i[h].length,r)break}return ki=!1,r}function jt(c,e,t,s,i,n=0,r=0,o=0,a=0,l=null,h=!1){let u,d;h?(u=ti,d=ms):(u=ms,d=ti);const f=u.float32Array,E=u.uint32Array,p=u.uint16Array,I=d.float32Array,m=d.uint32Array,_=d.uint16Array,R=c*2,C=e*2,y=Bt(R,p),F=Bt(C,_);let O=!1;if(F&&y)h?O=i(zt(e,m),Ht(e*2,_),zt(c,E),Ht(c*2,p),a,r+e,o,n+c):O=i(zt(c,E),Ht(c*2,p),zt(e,m),Ht(e*2,_),o,n+c,a,r+e);else if(F){const v=pe.getPrimitive();wt(e,I,v),v.applyMatrix4(t);const N=Wt(c),x=Xt(c,E);wt(N,f,Ve),wt(x,f,ke);const G=v.intersectsBox(Ve),w=v.intersectsBox(ke);O=G&&jt(e,N,s,t,i,r,n,a,o+1,v,!h)||w&&jt(e,x,s,t,i,r,n,a,o+1,v,!h),pe.releasePrimitive(v)}else{const v=Wt(e),N=Xt(e,m);wt(v,I,zi),wt(N,I,Vi);const x=l.intersectsBox(zi),G=l.intersectsBox(Vi);if(x&&G)O=jt(c,v,t,s,i,n,r,o,a+1,l,h)||jt(c,N,t,s,i,n,r,o,a+1,l,h);else if(x)if(y)O=jt(c,v,t,s,i,n,r,o,a+1,l,h);else{const w=pe.getPrimitive();w.copy(zi).applyMatrix4(t);const L=Wt(c),T=Xt(c,E);wt(L,f,Ve),wt(T,f,ke);const D=w.intersectsBox(Ve),$=w.intersectsBox(ke);O=D&&jt(v,L,s,t,i,r,n,a,o+1,w,!h)||$&&jt(v,T,s,t,i,r,n,a,o+1,w,!h),pe.releasePrimitive(w)}else if(G)if(y)O=jt(c,N,t,s,i,n,r,o,a+1,l,h);else{const w=pe.getPrimitive();w.copy(Vi).applyMatrix4(t);const L=Wt(c),T=Xt(c,E);wt(L,f,Ve),wt(T,f,ke);const D=w.intersectsBox(Ve),$=w.intersectsBox(ke);O=D&&jt(N,L,s,t,i,r,n,a,o+1,w,!h)||$&&jt(N,T,s,t,i,r,n,a,o+1,w,!h),pe.releasePrimitive(w)}}return O}const Vs=new Dt,Xn=new S.Box3;class _n{static serialize(e,t={}){t={cloneBuffers:!0,...t};const s=e.geometry,i=e._roots,n=e._indirectBuffer,r=s.getIndex();let o;return t.cloneBuffers?o={roots:i.map(a=>a.slice()),index:r.array.slice(),indirectBuffer:n?n.slice():null}:o={roots:i,index:r.array,indirectBuffer:n},o}static deserialize(e,t,s={}){s={setIndex:!0,indirect:!!e.indirectBuffer,...s};const{index:i,roots:n,indirectBuffer:r}=e,o=new _n(t,{...s,[vi]:!0});if(o._roots=n,o._indirectBuffer=r||null,s.setIndex){const a=t.getIndex();if(a===null){const l=new S.BufferAttribute(e.index,1,!1);t.setIndex(l)}else a.array!==i&&(a.array.set(i),a.needsUpdate=!0)}return o}get indirect(){return!!this._indirectBuffer}constructor(e,t={}){if(e.isBufferGeometry){if(e.index&&e.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(t=Object.assign({strategy:Tr,maxDepth:40,maxLeafTris:10,verbose:!0,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,indirect:!1,[vi]:!1},t),t.useSharedArrayBuffer&&!pa())throw new Error("MeshBVH: SharedArrayBuffer is not available.");this.geometry=e,this._roots=null,this._indirectBuffer=null,t[vi]||(Lo(this,t),!e.boundingBox&&t.setBoundingBox&&(e.boundingBox=this.getBoundingBox(new S.Box3)));const{_indirectBuffer:s}=this;this.resolveTriangleIndex=t.indirect?i=>s[i]:i=>i}refit(e=null){return(this.indirect?na:Wo)(this,e)}traverse(e,t=0){const s=this._roots[t],i=new Uint32Array(s),n=new Uint16Array(s);r(0);function r(o,a=0){const l=o*2,h=n[l+15]===Ri;if(h){const u=i[o+6],d=n[l+14];e(a,h,new Float32Array(s,o*4,6),u,d)}else{const u=o+qs/4,d=i[o+6],f=i[o+7];e(a,h,new Float32Array(s,o*4,6),f)||(r(u,a+1),r(d,a+1))}}}raycast(e,t=S.FrontSide){const s=this._roots,i=this.geometry,n=[],r=t.isMaterial,o=Array.isArray(t),a=i.groups,l=r?t.side:t,h=this.indirect?ra:jo;for(let u=0,d=s.length;u<d;u++){const f=o?t[a[u].materialIndex].side:l,E=n.length;if(h(this,u,f,e,n),o){const p=a[u].materialIndex;for(let I=E,m=n.length;I<m;I++)n[I].face.materialIndex=p}}return n}raycastFirst(e,t=S.FrontSide){const s=this._roots,i=this.geometry,n=t.isMaterial,r=Array.isArray(t);let o=null;const a=i.groups,l=n?t.side:t,h=this.indirect?aa:qo;for(let u=0,d=s.length;u<d;u++){const f=r?t[a[u].materialIndex].side:l,E=h(this,u,f,e);E!=null&&(o==null||E.distance<o.distance)&&(o=E,r&&(E.face.materialIndex=a[u].materialIndex))}return o}intersectsGeometry(e,t){let s=!1;const i=this._roots,n=this.indirect?ca:Ko;for(let r=0,o=i.length;r<o&&(s=n(this,r,e,t),!s);r++);return s}shapecast(e){const t=Yt.getPrimitive(),s=this.indirect?$o:Ho;let{boundsTraverseOrder:i,intersectsBounds:n,intersectsRange:r,intersectsTriangle:o}=e;if(r&&o){const u=r;r=(d,f,E,p,I)=>u(d,f,E,p,I)?!0:s(d,f,this,o,E,p,t)}else r||(o?r=(u,d,f,E)=>s(u,d,this,o,f,E,t):r=(u,d,f)=>f);let a=!1,l=0;const h=this._roots;for(let u=0,d=h.length;u<d;u++){const f=h[u];if(a=Bo(this,u,n,r,i,l),a)break;l+=f.byteLength}return Yt.releasePrimitive(t),a}bvhcast(e,t,s){let{intersectsRanges:i,intersectsTriangles:n}=s;const r=Yt.getPrimitive(),o=this.geometry.index,a=this.geometry.attributes.position,l=this.indirect?E=>{const p=this.resolveTriangleIndex(E);bt(r,p*3,o,a)}:E=>{bt(r,E*3,o,a)},h=Yt.getPrimitive(),u=e.geometry.index,d=e.geometry.attributes.position,f=e.indirect?E=>{const p=e.resolveTriangleIndex(E);bt(h,p*3,u,d)}:E=>{bt(h,E*3,u,d)};if(n){const E=(p,I,m,_,R,C,y,F)=>{for(let O=m,v=m+_;O<v;O++){f(O),h.a.applyMatrix4(t),h.b.applyMatrix4(t),h.c.applyMatrix4(t),h.needsUpdate=!0;for(let N=p,x=p+I;N<x;N++)if(l(N),r.needsUpdate=!0,n(r,h,N,O,R,C,y,F))return!0}return!1};if(i){const p=i;i=function(I,m,_,R,C,y,F,O){return p(I,m,_,R,C,y,F,O)?!0:E(I,m,_,R,C,y,F,O)}}else i=E}return Ea(this,e,t,i)}intersectsBox(e,t){return Vs.set(e.min,e.max,t),Vs.needsUpdate=!0,this.shapecast({intersectsBounds:s=>Vs.intersectsBox(s),intersectsTriangle:s=>Vs.intersectsTriangle(s)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,s={},i={},n=0,r=1/0){return(this.indirect?fa:ia)(this,e,t,s,i,n,r)}closestPointToPoint(e,t={},s=0,i=1/0){return zo(this,e,t,s,i)}getBoundingBox(e){return e.makeEmpty(),this._roots.forEach(s=>{wt(0,new Float32Array(s),Xn),e.union(Xn)}),e}}function Zn(c,e,t){return c===null||(c.point.applyMatrix4(e.matrixWorld),c.distance=c.point.distanceTo(t.ray.origin),c.object=e,c.distance<t.near||c.distance>t.far)?null:c}const Gi=new S.Ray,$n=new S.Matrix4,ma=S.Mesh.prototype.raycast;function Ia(c,e){if(this.geometry.boundsTree){if(this.material===void 0)return;$n.copy(this.matrixWorld).invert(),Gi.copy(c.ray).applyMatrix4($n);const t=this.geometry.boundsTree;if(c.firstHitOnly===!0){const s=Zn(t.raycastFirst(Gi,this.material),this,c);s&&e.push(s)}else{const s=t.raycast(Gi,this.material);for(let i=0,n=s.length;i<n;i++){const r=Zn(s[i],this,c);r&&e.push(r)}}}else ma.call(this,c,e)}function ga(c){return this.boundsTree=new _n(this,c),this.boundsTree}function Ca(){this.boundsTree=null}class Q{constructor(){g(this,"trigger",e=>{const t=this.handlers.slice(0);for(const s of t)s(e)});g(this,"handlers",[])}add(e){this.handlers.push(e)}remove(e){this.handlers=this.handlers.filter(t=>t!==e)}reset(){this.handlers.length=0}}class Is{constructor(){g(this,"trigger",async e=>{const t=this.handlers.slice(0);for(const s of t)await s(e)});g(this,"handlers",[])}add(e){this.handlers.push(e)}remove(e){this.handlers=this.handlers.filter(t=>t!==e)}reset(){this.handlers.length=0}}class Fi{constructor(e){g(this,"isDisposeable",()=>"dispose"in this&&"onDisposed"in this);g(this,"isResizeable",()=>"resize"in this&&"getSize"in this);g(this,"isUpdateable",()=>"onAfterUpdate"in this&&"onBeforeUpdate"in this&&"update"in this);g(this,"isHideable",()=>"visible"in this);g(this,"isConfigurable",()=>"setup"in this&&"config"in this&&"onSetup"in this);this.components=e}}class At extends Fi{}class Si extends Fi{constructor(t){super(t);g(this,"worlds",new Map);g(this,"onWorldChanged",new Q);g(this,"currentWorld",null);this.onWorldChanged.add(({world:s,action:i})=>{i==="removed"&&this.worlds.delete(s.uuid)})}}class Rr extends Si{constructor(){super(...arguments);g(this,"hasCameraControls",()=>"controls"in this)}}class wr extends Si{constructor(){super(...arguments);g(this,"onAfterUpdate",new Q);g(this,"onBeforeUpdate",new Q);g(this,"onDisposed",new Q);g(this,"onResize",new Q);g(this,"onClippingPlanesUpdated",new Q);g(this,"clippingPlanes",[])}updateClippingPlanes(){this.onClippingPlanesUpdated.trigger()}setPlane(t,s,i){s.isLocal=i;const n=this.clippingPlanes.indexOf(s);t&&n===-1?this.clippingPlanes.push(s):!t&&n>-1&&this.clippingPlanes.splice(n,1),this.three.clippingPlanes=this.clippingPlanes.filter(r=>!r.isLocal)}}const gs=class gs extends At{constructor(t){super(t);g(this,"_disposedComponents",new Set);g(this,"enabled",!0);t.add(gs.uuid,this)}get(){return this._disposedComponents}destroy(t,s=!0,i=!0){t.removeFromParent();const n=t;n.dispose&&n.dispose(),this.disposeGeometryAndMaterials(t,s),i&&n.children&&n.children.length&&this.disposeChildren(n),t.children.length=0}disposeGeometry(t){t.boundsTree&&t.disposeBoundsTree&&t.disposeBoundsTree(),t.dispose()}disposeGeometryAndMaterials(t,s){const i=t;i.geometry&&this.disposeGeometry(i.geometry),s&&i.material&&gs.disposeMaterial(i),i.material=[],i.geometry=null}disposeChildren(t){for(const s of t.children)this.destroy(s)}static disposeMaterial(t){if(t.material)if(Array.isArray(t.material))for(const s of t.material)s.dispose();else t.material.dispose()}};g(gs,"uuid","76e9cd8e-ad8f-4753-9ef6-cbc60f7247fe");let le=gs;class Fr extends Si{constructor(t){super(t);g(this,"onDisposed",new Q);g(this,"directionalLights",new Map);g(this,"ambientLights",new Map)}dispose(){const t=this.components.get(le);for(const s of this.three.children){const i=s;i.geometry&&t.destroy(i)}this.deleteAllLights(),this.three.children=[],this.onDisposed.trigger(),this.onDisposed.reset()}deleteAllLights(){for(const[,t]of this.directionalLights)t.removeFromParent(),t.target.removeFromParent(),t.dispose();this.directionalLights.clear();for(const[,t]of this.ambientLights)t.removeFromParent(),t.dispose();this.ambientLights.clear()}}class Se extends Set{constructor(t){super(t);g(this,"onItemAdded",new Q);g(this,"onItemDeleted",new Q);g(this,"onCleared",new Q);g(this,"guard",()=>!0)}clear(){super.clear(),this.onCleared.trigger()}add(...t){for(const s of t)this.has(s)||!this.guard(s)||(super.add(s),this.onItemAdded||(this.onItemAdded=new Q),this.onItemAdded.trigger(s));return this}delete(t){const s=super.delete(t);return s&&this.onItemDeleted.trigger(),s}dispose(){this.clear(),this.onItemAdded.reset(),this.onItemDeleted.reset(),this.onCleared.reset()}}class Oe extends Map{constructor(t){super(t);g(this,"onItemSet",new Q);g(this,"onItemUpdated",new Q);g(this,"onItemDeleted",new Q);g(this,"onCleared",new Q);g(this,"guard",()=>!0)}clear(){super.clear(),this.onCleared.trigger()}set(t,s){const i=this.has(t);if(!this.guard(t,s))return this;const r=super.set(t,s);return i?(this.onItemUpdated||(this.onItemUpdated=new Q),this.onItemUpdated.trigger({key:t,value:s})):(this.onItemSet||(this.onItemSet=new Q),this.onItemSet.trigger({key:t,value:s})),r}delete(t){const s=super.delete(t);return s&&this.onItemDeleted.trigger(t),s}dispose(){this.clear(),this.onItemSet.reset(),this.onItemDeleted.reset(),this.onCleared.reset()}}class Ta extends At{}const Ks=0,_a=1,Aa=new S.Vector3,jn=new S.Line3,Yi=new S.Plane,Qn=new S.Vector3,ks=new S.Triangle;class ya{constructor(){this.tolerance=-1,this.faces=[],this.newFaces=[],this.assigned=new qn,this.unassigned=new qn,this.vertices=[]}setFromPoints(e){if(e.length>=4){this.makeEmpty();for(let t=0,s=e.length;t<s;t++)this.vertices.push(new Ra(e[t]));this.compute()}return this}setFromObject(e){const t=[];return e.updateMatrixWorld(!0),e.traverse(function(s){const i=s.geometry;if(i!==void 0){const n=i.attributes.position;if(n!==void 0)for(let r=0,o=n.count;r<o;r++){const a=new S.Vector3;a.fromBufferAttribute(n,r).applyMatrix4(s.matrixWorld),t.push(a)}}}),this.setFromPoints(t)}containsPoint(e){const t=this.faces;for(let s=0,i=t.length;s<i;s++)if(t[s].distanceToPoint(e)>this.tolerance)return!1;return!0}intersectRay(e,t){const s=this.faces;let i=-1/0,n=1/0;for(let r=0,o=s.length;r<o;r++){const a=s[r],l=a.distanceToPoint(e.origin),h=a.normal.dot(e.direction);if(l>0&&h>=0)return null;const u=h!==0?-l/h:0;if(!(u<=0)&&(h>0?n=Math.min(u,n):i=Math.max(u,i),i>n))return null}return i!==-1/0?e.at(i,t):e.at(n,t),t}intersectsRay(e){return this.intersectRay(e,Aa)!==null}makeEmpty(){return this.faces=[],this.vertices=[],this}addVertexToFace(e,t){return e.face=t,t.outside===null?this.assigned.append(e):this.assigned.insertBefore(t.outside,e),t.outside=e,this}removeVertexFromFace(e,t){return e===t.outside&&(e.next!==null&&e.next.face===t?t.outside=e.next:t.outside=null),this.assigned.remove(e),this}removeAllVerticesFromFace(e){if(e.outside!==null){const t=e.outside;let s=e.outside;for(;s.next!==null&&s.next.face===e;)s=s.next;return this.assigned.removeSubList(t,s),t.prev=s.next=null,e.outside=null,t}}deleteFaceVertices(e,t){const s=this.removeAllVerticesFromFace(e);if(s!==void 0)if(t===void 0)this.unassigned.appendChain(s);else{let i=s;do{const n=i.next;t.distanceToPoint(i.point)>this.tolerance?this.addVertexToFace(i,t):this.unassigned.append(i),i=n}while(i!==null)}return this}resolveUnassignedPoints(e){if(this.unassigned.isEmpty()===!1){let t=this.unassigned.first();do{const s=t.next;let i=this.tolerance,n=null;for(let r=0;r<e.length;r++){const o=e[r];if(o.mark===Ks){const a=o.distanceToPoint(t.point);if(a>i&&(i=a,n=o),i>1e3*this.tolerance)break}}n!==null&&this.addVertexToFace(t,n),t=s}while(t!==null)}return this}computeExtremes(){const e=new S.Vector3,t=new S.Vector3,s=[],i=[];for(let n=0;n<3;n++)s[n]=i[n]=this.vertices[0];e.copy(this.vertices[0].point),t.copy(this.vertices[0].point);for(let n=0,r=this.vertices.length;n<r;n++){const o=this.vertices[n],a=o.point;for(let l=0;l<3;l++)a.getComponent(l)<e.getComponent(l)&&(e.setComponent(l,a.getComponent(l)),s[l]=o);for(let l=0;l<3;l++)a.getComponent(l)>t.getComponent(l)&&(t.setComponent(l,a.getComponent(l)),i[l]=o)}return this.tolerance=3*Number.EPSILON*(Math.max(Math.abs(e.x),Math.abs(t.x))+Math.max(Math.abs(e.y),Math.abs(t.y))+Math.max(Math.abs(e.z),Math.abs(t.z))),{min:s,max:i}}computeInitialHull(){const e=this.vertices,t=this.computeExtremes(),s=t.min,i=t.max;let n=0,r=0;for(let d=0;d<3;d++){const f=i[d].point.getComponent(d)-s[d].point.getComponent(d);f>n&&(n=f,r=d)}const o=s[r],a=i[r];let l,h;n=0,jn.set(o.point,a.point);for(let d=0,f=this.vertices.length;d<f;d++){const E=e[d];if(E!==o&&E!==a){jn.closestPointToPoint(E.point,!0,Qn);const p=Qn.distanceToSquared(E.point);p>n&&(n=p,l=E)}}n=-1,Yi.setFromCoplanarPoints(o.point,a.point,l.point);for(let d=0,f=this.vertices.length;d<f;d++){const E=e[d];if(E!==o&&E!==a&&E!==l){const p=Math.abs(Yi.distanceToPoint(E.point));p>n&&(n=p,h=E)}}const u=[];if(Yi.distanceToPoint(h.point)<0){u.push(qt.create(o,a,l),qt.create(h,a,o),qt.create(h,l,a),qt.create(h,o,l));for(let d=0;d<3;d++){const f=(d+1)%3;u[d+1].getEdge(2).setTwin(u[0].getEdge(f)),u[d+1].getEdge(1).setTwin(u[f+1].getEdge(0))}}else{u.push(qt.create(o,l,a),qt.create(h,o,a),qt.create(h,a,l),qt.create(h,l,o));for(let d=0;d<3;d++){const f=(d+1)%3;u[d+1].getEdge(2).setTwin(u[0].getEdge((3-d)%3)),u[d+1].getEdge(0).setTwin(u[f+1].getEdge(1))}}for(let d=0;d<4;d++)this.faces.push(u[d]);for(let d=0,f=e.length;d<f;d++){const E=e[d];if(E!==o&&E!==a&&E!==l&&E!==h){n=this.tolerance;let p=null;for(let I=0;I<4;I++){const m=this.faces[I].distanceToPoint(E.point);m>n&&(n=m,p=this.faces[I])}p!==null&&this.addVertexToFace(E,p)}}return this}reindexFaces(){const e=[];for(let t=0;t<this.faces.length;t++){const s=this.faces[t];s.mark===Ks&&e.push(s)}return this.faces=e,this}nextVertexToAdd(){if(this.assigned.isEmpty()===!1){let e,t=0;const s=this.assigned.first().face;let i=s.outside;do{const n=s.distanceToPoint(i.point);n>t&&(t=n,e=i),i=i.next}while(i!==null&&i.face===s);return e}}computeHorizon(e,t,s,i){this.deleteFaceVertices(s),s.mark=_a;let n;t===null?n=t=s.getEdge(0):n=t.next;do{const r=n.twin,o=r.face;o.mark===Ks&&(o.distanceToPoint(e)>this.tolerance?this.computeHorizon(e,r,o,i):i.push(n)),n=n.next}while(n!==t);return this}addAdjoiningFace(e,t){const s=qt.create(e,t.tail(),t.head());return this.faces.push(s),s.getEdge(-1).setTwin(t.twin),s.getEdge(0)}addNewFaces(e,t){this.newFaces=[];let s=null,i=null;for(let n=0;n<t.length;n++){const r=t[n],o=this.addAdjoiningFace(e,r);s===null?s=o:o.next.setTwin(i),this.newFaces.push(o.face),i=o}return s.next.setTwin(i),this}addVertexToHull(e){const t=[];return this.unassigned.clear(),this.removeVertexFromFace(e,e.face),this.computeHorizon(e.point,null,e.face,t),this.addNewFaces(e,t),this.resolveUnassignedPoints(this.newFaces),this}cleanup(){return this.assigned.clear(),this.unassigned.clear(),this.newFaces=[],this}compute(){let e;for(this.computeInitialHull();(e=this.nextVertexToAdd())!==void 0;)this.addVertexToHull(e);return this.reindexFaces(),this.cleanup(),this}}class qt{constructor(){this.normal=new S.Vector3,this.midpoint=new S.Vector3,this.area=0,this.constant=0,this.outside=null,this.mark=Ks,this.edge=null}static create(e,t,s){const i=new qt,n=new Hi(e,i),r=new Hi(t,i),o=new Hi(s,i);return n.next=o.prev=r,r.next=n.prev=o,o.next=r.prev=n,i.edge=n,i.compute()}getEdge(e){let t=this.edge;for(;e>0;)t=t.next,e--;for(;e<0;)t=t.prev,e++;return t}compute(){const e=this.edge.tail(),t=this.edge.head(),s=this.edge.next.head();return ks.set(e.point,t.point,s.point),ks.getNormal(this.normal),ks.getMidpoint(this.midpoint),this.area=ks.getArea(),this.constant=this.normal.dot(this.midpoint),this}distanceToPoint(e){return this.normal.dot(e)-this.constant}}class Hi{constructor(e,t){this.vertex=e,this.prev=null,this.next=null,this.twin=null,this.face=t}head(){return this.vertex}tail(){return this.prev?this.prev.vertex:null}length(){const e=this.head(),t=this.tail();return t!==null?t.point.distanceTo(e.point):-1}lengthSquared(){const e=this.head(),t=this.tail();return t!==null?t.point.distanceToSquared(e.point):-1}setTwin(e){return this.twin=e,e.twin=this,this}}class Ra{constructor(e){this.point=e,this.prev=null,this.next=null,this.face=null}}class qn{constructor(){this.head=null,this.tail=null}first(){return this.head}last(){return this.tail}clear(){return this.head=this.tail=null,this}insertBefore(e,t){return t.prev=e.prev,t.next=e,t.prev===null?this.head=t:t.prev.next=t,e.prev=t,this}insertAfter(e,t){return t.prev=e,t.next=e.next,t.next===null?this.tail=t:t.next.prev=t,e.next=t,this}append(e){return this.head===null?this.head=e:this.tail.next=e,e.prev=this.tail,e.next=null,this.tail=e,this}appendChain(e){for(this.head===null?this.head=e:this.tail.next=e,e.prev=this.tail;e.next!==null;)e=e.next;return this.tail=e,this}remove(e){return e.prev===null?this.head=e.next:e.prev.next=e.next,e.next===null?this.tail=e.prev:e.next.prev=e.prev,this}removeSubList(e,t){return e.prev===null?this.head=t.next:e.prev.next=t.next,t.next===null?this.tail=e.prev:t.next.prev=e.prev,this}isEmpty(){return this.head===null}}const an=[2,2,1],cn=[1,0,0];function ne(c,e){return c*3+e}function wa(c){const e=c.elements;let t=0;for(let s=0;s<9;s++)t+=e[s]*e[s];return Math.sqrt(t)}function Fa(c){const e=c.elements;let t=0;for(let s=0;s<3;s++){const i=e[ne(an[s],cn[s])];t+=2*i*i}return Math.sqrt(t)}function Sa(c,e){let t=0,s=1;const i=c.elements;for(let l=0;l<3;l++){const h=Math.abs(i[ne(an[l],cn[l])]);h>t&&(t=h,s=l)}let n=1,r=0;const o=cn[s],a=an[s];if(Math.abs(i[ne(a,o)])>Number.EPSILON){const l=i[ne(a,a)],h=i[ne(o,o)],u=i[ne(a,o)],d=(l-h)/2/u;let f;d<0?f=-1/(-d+Math.sqrt(1+d*d)):f=1/(d+Math.sqrt(1+d*d)),n=1/Math.sqrt(1+f*f),r=f*n}return e.identity(),e.elements[ne(o,o)]=n,e.elements[ne(a,a)]=n,e.elements[ne(a,o)]=r,e.elements[ne(o,a)]=-r,e}function Oa(c,e){let t=0,s=0;const i=10;e.unitary.identity(),e.diagonal.copy(c);const n=e.unitary,r=e.diagonal,o=new M.Matrix3,a=new M.Matrix3,l=Number.EPSILON*wa(r);for(;s<i&&Fa(r)>l;)Sa(r,o),a.copy(o).transpose(),r.multiply(o),r.premultiply(a),n.multiply(o),++t>2&&(s++,t=0);return e}function Sr(c){const e=[];for(let ot=0;ot<c.length-2;ot+=3){const dt=c[ot],ut=c[ot+1],mt=c[ot+2];e.push(new M.Vector3(dt,ut,mt))}const t=new ya;t.setFromPoints(e);const s={unitary:new M.Matrix3,diagonal:new M.Matrix3},i=t.faces,n=[],r=[];for(let ot=0,dt=i.length;ot<dt;ot++){const ut=i[ot];let mt=ut.edge;n.length=0;do n.push(mt),mt=mt.next;while(mt!==ut.edge);const Vt=n.length-2;for(let Lt=1,A=Vt;Lt<=A;Lt++){const X=n[0].vertex,Y=n[Lt+0].vertex,P=n[Lt+1].vertex;r.push(X.point.x,X.point.y,X.point.z),r.push(Y.point.x,Y.point.y,Y.point.z),r.push(P.point.x,P.point.y,P.point.z)}}const o=new M.Vector3,a=new M.Vector3,l=new M.Vector3,h=new M.Vector3,u=new M.Vector3,d=new M.Vector3,f=new M.Vector3,E=new M.Vector3;let p=0,I=0,m=0,_=0,R=0,C=0,y=0;for(let ot=0,dt=r.length;ot<dt;ot+=9){o.fromArray(r,ot),a.fromArray(r,ot+3),l.fromArray(r,ot+6),f.set(0,0,0),f.add(o).add(a).add(l).divideScalar(3),h.subVectors(a,o),u.subVectors(l,o);const ut=d.crossVectors(h,u).length()/2;E.add(d.copy(f).multiplyScalar(ut)),p+=ut,I+=(9*f.x*f.x+o.x*o.x+a.x*a.x+l.x*l.x)*(ut/12),m+=(9*f.x*f.y+o.x*o.y+a.x*a.y+l.x*l.y)*(ut/12),_+=(9*f.x*f.z+o.x*o.z+a.x*a.z+l.x*l.z)*(ut/12),R+=(9*f.y*f.y+o.y*o.y+a.y*a.y+l.y*l.y)*(ut/12),C+=(9*f.y*f.z+o.y*o.z+a.y*a.z+l.y*l.z)*(ut/12),y+=(9*f.z*f.z+o.z*o.z+a.z*a.z+l.z*l.z)*(ut/12)}E.divideScalar(p),I/=p,m/=p,_/=p,R/=p,C/=p,y/=p,I-=E.x*E.x,m-=E.x*E.y,_-=E.x*E.z,R-=E.y*E.y,C-=E.y*E.z,y-=E.z*E.z;const F=new M.Matrix3;F.elements[0]=I,F.elements[1]=m,F.elements[2]=_,F.elements[3]=m,F.elements[4]=R,F.elements[5]=C,F.elements[6]=_,F.elements[7]=C,F.elements[8]=y,Oa(F,s);const O=s.unitary,v=new M.Vector3,N=new M.Vector3,x=new M.Vector3;O.extractBasis(v,N,x);let G=-1/0,w=-1/0,L=-1/0,T=1/0,D=1/0,$=1/0;for(let ot=0,dt=e.length;ot<dt;ot++){const ut=e[ot];G=Math.max(v.dot(ut),G),w=Math.max(N.dot(ut),w),L=Math.max(x.dot(ut),L),T=Math.min(v.dot(ut),T),D=Math.min(N.dot(ut),D),$=Math.min(x.dot(ut),$)}v.multiplyScalar(.5*(T+G)),N.multiplyScalar(.5*(D+w)),x.multiplyScalar(.5*($+L));const V=new M.Vector3,et=new M.Vector3,W=new M.Matrix3;V.add(v).add(N).add(x),et.x=G-T,et.y=w-D,et.z=L-$,et.multiplyScalar(.5),W.copy(O);const{x:nt,y:k,z:B}=et,rt=new M.Matrix4;rt.makeScale(nt*2,k*2,B*2);const st=new M.Matrix4;st.makeTranslation(-nt,-k,-B);const tt=new M.Matrix4;tt.makeTranslation(V.x,V.y,V.z);const yt=new M.Matrix4;yt.setFromMatrix3(W);const Ft=new M.Matrix4;return Ft.multiply(tt),Ft.multiply(yt),Ft.multiply(st),Ft.multiply(rt),{center:V,halfSizes:et,rotation:W,transformation:Ft}}function Na(c,e,t){const s=[c[0]-e[0],c[1]-e[1],c[2]-e[2]];return t[0]*s[0]+t[1]*s[1]+t[2]*s[2]>0}class ln{static isTransparent(e){return e.transparent&&e.opacity<1}}const Ot=class Ot{static create(){const e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,s=Math.random()*4294967295|0,i=Math.random()*4294967295|0;return`${Ot._lut[e&255]+Ot._lut[e>>8&255]+Ot._lut[e>>16&255]+Ot._lut[e>>24&255]}-${Ot._lut[t&255]}${Ot._lut[t>>8&255]}-${Ot._lut[t>>16&15|64]}${Ot._lut[t>>24&255]}-${Ot._lut[s&63|128]}${Ot._lut[s>>8&255]}-${Ot._lut[s>>16&255]}${Ot._lut[s>>24&255]}${Ot._lut[i&255]}${Ot._lut[i>>8&255]}${Ot._lut[i>>16&255]}${Ot._lut[i>>24&255]}`.toLowerCase()}static validate(e){if(!Ot._pattern.test(e))throw new Error(`${e} is not a valid UUID v4.
|
|
1
|
+
"use strict";var Bo=Object.defineProperty;var Vo=(c,i,t)=>i in c?Bo(c,i,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[i]=t;var C=(c,i,t)=>(Vo(c,typeof i!="symbol"?i+"":i,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("three"),Dn=require("@thatopen/fragments"),Yo=require("web-ifc");function bn(c){const i=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(c){for(const t in c)if(t!=="default"){const e=Object.getOwnPropertyDescriptor(c,t);Object.defineProperty(i,t,e.get?e:{enumerable:!0,get:()=>c[t]})}}return i.default=c,Object.freeze(i)}const b=bn(y),qt=bn(Dn),k=bn(Yo),Ur=0,Go=1,zo=2,Xn=2,Ws=1.25,$n=1,as=6*4+4+4,xs=65535,ko=Math.pow(2,-24),Xs=Symbol("SKIP_GENERATION");function Ho(c){return c.index?c.index.count:c.attributes.position.count}function Je(c){return Ho(c)/3}function Wo(c,i=ArrayBuffer){return c>65535?new Uint32Array(new i(4*c)):new Uint16Array(new i(2*c))}function Xo(c,i){if(!c.index){const t=c.attributes.position.count,e=i.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,s=Wo(t,e);c.setIndex(new y.BufferAttribute(s,1));for(let n=0;n<t;n++)s[n]=n}}function xr(c){const i=Je(c),t=c.drawRange,e=t.start/3,s=(t.start+t.count)/3,n=Math.max(0,e),r=Math.min(i,s)-n;return[{offset:Math.floor(n),count:Math.floor(r)}]}function Br(c){if(!c.groups||!c.groups.length)return xr(c);const i=[],t=new Set,e=c.drawRange,s=e.start/3,n=(e.start+e.count)/3;for(const o of c.groups){const a=o.start/3,l=(o.start+o.count)/3;t.add(Math.max(s,a)),t.add(Math.min(n,l))}const r=Array.from(t.values()).sort((o,a)=>o-a);for(let o=0;o<r.length-1;o++){const a=r[o],l=r[o+1];i.push({offset:Math.floor(a),count:Math.floor(l-a)})}return i}function $o(c){if(c.groups.length===0)return!1;const i=Je(c),t=Br(c).sort((n,r)=>n.offset-r.offset),e=t[t.length-1];e.count=Math.min(i-e.offset,e.count);let s=0;return t.forEach(({count:n})=>s+=n),i!==s}function Ot(c,i,t){return t.min.x=i[c],t.min.y=i[c+1],t.min.z=i[c+2],t.max.x=i[c+3],t.max.y=i[c+4],t.max.z=i[c+5],t}function Zo(c){c[0]=c[1]=c[2]=1/0,c[3]=c[4]=c[5]=-1/0}function Zn(c){let i=-1,t=-1/0;for(let e=0;e<3;e++){const s=c[e+3]-c[e];s>t&&(t=s,i=e)}return i}function jn(c,i){i.set(c)}function qn(c,i,t){let e,s;for(let n=0;n<3;n++){const r=n+3;e=c[n],s=i[n],t[n]=e<s?e:s,e=c[r],s=i[r],t[r]=e>s?e:s}}function Ui(c,i,t){for(let e=0;e<3;e++){const s=i[c+2*e],n=i[c+2*e+1],r=s-n,o=s+n;r<t[e]&&(t[e]=r),o>t[e+3]&&(t[e+3]=o)}}function si(c){const i=c[3]-c[0],t=c[4]-c[1],e=c[5]-c[2];return 2*(i*t+t*e+e*i)}function $s(c,i,t,e,s=null){let n=1/0,r=1/0,o=1/0,a=-1/0,l=-1/0,h=-1/0,f=1/0,I=1/0,u=1/0,d=-1/0,E=-1/0,T=-1/0;const p=s!==null;for(let m=i*6,F=(i+t)*6;m<F;m+=6){const R=c[m+0],S=c[m+1],N=R-S,L=R+S;N<n&&(n=N),L>a&&(a=L),p&&R<f&&(f=R),p&&R>d&&(d=R);const D=c[m+2],P=c[m+3],v=D-P,z=D+P;v<r&&(r=v),z>l&&(l=z),p&&D<I&&(I=D),p&&D>E&&(E=D);const O=c[m+4],w=c[m+5],g=O-w,U=O+w;g<o&&(o=g),U>h&&(h=U),p&&O<u&&(u=O),p&&O>T&&(T=O)}e[0]=n,e[1]=r,e[2]=o,e[3]=a,e[4]=l,e[5]=h,p&&(s[0]=f,s[1]=I,s[2]=u,s[3]=d,s[4]=E,s[5]=T)}function jo(c,i,t,e){let s=1/0,n=1/0,r=1/0,o=-1/0,a=-1/0,l=-1/0;for(let h=i*6,f=(i+t)*6;h<f;h+=6){const I=c[h+0];I<s&&(s=I),I>o&&(o=I);const u=c[h+2];u<n&&(n=u),u>a&&(a=u);const d=c[h+4];d<r&&(r=d),d>l&&(l=d)}e[0]=s,e[1]=n,e[2]=r,e[3]=o,e[4]=a,e[5]=l}function qo(c,i){Zo(i);const t=c.attributes.position,e=c.index?c.index.array:null,s=Je(c),n=new Float32Array(s*6),r=t.normalized,o=t.array,a=t.offset||0;let l=3;t.isInterleavedBufferAttribute&&(l=t.data.stride);const h=["getX","getY","getZ"];for(let f=0;f<s;f++){const I=f*3,u=f*6;let d=I+0,E=I+1,T=I+2;e&&(d=e[d],E=e[E],T=e[T]),r||(d=d*l+a,E=E*l+a,T=T*l+a);for(let p=0;p<3;p++){let m,F,R;r?(m=t[h[p]](d),F=t[h[p]](E),R=t[h[p]](T)):(m=o[d+p],F=o[E+p],R=o[T+p]);let S=m;F<S&&(S=F),R<S&&(S=R);let N=m;F>N&&(N=F),R>N&&(N=R);const L=(N-S)/2,D=p*2;n[u+D+0]=S+L,n[u+D+1]=L+(Math.abs(S)+L)*ko,S<i[p]&&(i[p]=S),N>i[p+3]&&(i[p+3]=N)}}return n}const Ie=32,Qo=(c,i)=>c.candidate-i.candidate,Te=new Array(Ie).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),xi=new Float32Array(6);function Ko(c,i,t,e,s,n){let r=-1,o=0;if(n===Ur)r=Zn(i),r!==-1&&(o=(i[r]+i[r+3])/2);else if(n===Go)r=Zn(c),r!==-1&&(o=Jo(t,e,s,r));else if(n===zo){const a=si(c);let l=Ws*s;const h=e*6,f=(e+s)*6;for(let I=0;I<3;I++){const u=i[I],T=(i[I+3]-u)/Ie;if(s<Ie/4){const p=[...Te];p.length=s;let m=0;for(let R=h;R<f;R+=6,m++){const S=p[m];S.candidate=t[R+2*I],S.count=0;const{bounds:N,leftCacheBounds:L,rightCacheBounds:D}=S;for(let P=0;P<3;P++)D[P]=1/0,D[P+3]=-1/0,L[P]=1/0,L[P+3]=-1/0,N[P]=1/0,N[P+3]=-1/0;Ui(R,t,N)}p.sort(Qo);let F=s;for(let R=0;R<F;R++){const S=p[R];for(;R+1<F&&p[R+1].candidate===S.candidate;)p.splice(R+1,1),F--}for(let R=h;R<f;R+=6){const S=t[R+2*I];for(let N=0;N<F;N++){const L=p[N];S>=L.candidate?Ui(R,t,L.rightCacheBounds):(Ui(R,t,L.leftCacheBounds),L.count++)}}for(let R=0;R<F;R++){const S=p[R],N=S.count,L=s-S.count,D=S.leftCacheBounds,P=S.rightCacheBounds;let v=0;N!==0&&(v=si(D)/a);let z=0;L!==0&&(z=si(P)/a);const O=$n+Ws*(v*N+z*L);O<l&&(r=I,l=O,o=S.candidate)}}else{for(let F=0;F<Ie;F++){const R=Te[F];R.count=0,R.candidate=u+T+F*T;const S=R.bounds;for(let N=0;N<3;N++)S[N]=1/0,S[N+3]=-1/0}for(let F=h;F<f;F+=6){let N=~~((t[F+2*I]-u)/T);N>=Ie&&(N=Ie-1);const L=Te[N];L.count++,Ui(F,t,L.bounds)}const p=Te[Ie-1];jn(p.bounds,p.rightCacheBounds);for(let F=Ie-2;F>=0;F--){const R=Te[F],S=Te[F+1];qn(R.bounds,S.rightCacheBounds,R.rightCacheBounds)}let m=0;for(let F=0;F<Ie-1;F++){const R=Te[F],S=R.count,N=R.bounds,D=Te[F+1].rightCacheBounds;S!==0&&(m===0?jn(N,xi):qn(N,xi,xi)),m+=S;let P=0,v=0;m!==0&&(P=si(xi)/a);const z=s-m;z!==0&&(v=si(D)/a);const O=$n+Ws*(P*m+v*z);O<l&&(r=I,l=O,o=R.candidate)}}}}else console.warn(`MeshBVH: Invalid build strategy value ${n} used.`);return{axis:r,pos:o}}function Jo(c,i,t,e){let s=0;for(let n=i,r=i+t;n<r;n++)s+=c[n*6+e*2];return s/t}class Bi{constructor(){}}function ta(c,i,t,e,s,n){let r=e,o=e+s-1;const a=n.pos,l=n.axis*2;for(;;){for(;r<=o&&t[r*6+l]<a;)r++;for(;r<=o&&t[o*6+l]>=a;)o--;if(r<o){for(let h=0;h<3;h++){let f=i[r*3+h];i[r*3+h]=i[o*3+h],i[o*3+h]=f}for(let h=0;h<6;h++){let f=t[r*6+h];t[r*6+h]=t[o*6+h],t[o*6+h]=f}r++,o--}else return r}}function ea(c,i,t,e,s,n){let r=e,o=e+s-1;const a=n.pos,l=n.axis*2;for(;;){for(;r<=o&&t[r*6+l]<a;)r++;for(;r<=o&&t[o*6+l]>=a;)o--;if(r<o){let h=c[r];c[r]=c[o],c[o]=h;for(let f=0;f<6;f++){let I=t[r*6+f];t[r*6+f]=t[o*6+f],t[o*6+f]=I}r++,o--}else return r}}function ia(c,i){const t=(c.index?c.index.count:c.attributes.position.count)/3,e=t>2**16,s=e?4:2,n=i?new SharedArrayBuffer(t*s):new ArrayBuffer(t*s),r=e?new Uint32Array(n):new Uint16Array(n);for(let o=0,a=r.length;o<a;o++)r[o]=o;return r}function sa(c,i){const t=c.geometry,e=t.index?t.index.array:null,s=i.maxDepth,n=i.verbose,r=i.maxLeafTris,o=i.strategy,a=i.onProgress,l=Je(t),h=c._indirectBuffer;let f=!1;const I=new Float32Array(6),u=new Float32Array(6),d=qo(t,I),E=i.indirect?ea:ta,T=[],p=i.indirect?xr(t):Br(t);if(p.length===1){const R=p[0],S=new Bi;S.boundingData=I,jo(d,R.offset,R.count,u),F(S,R.offset,R.count,u),T.push(S)}else for(let R of p){const S=new Bi;S.boundingData=new Float32Array(6),$s(d,R.offset,R.count,S.boundingData,u),F(S,R.offset,R.count,u),T.push(S)}return T;function m(R){a&&a(R/l)}function F(R,S,N,L=null,D=0){if(!f&&D>=s&&(f=!0,n&&(console.warn(`MeshBVH: Max depth of ${s} reached when generating BVH. Consider increasing maxDepth.`),console.warn(t))),N<=r||D>=s)return m(S+N),R.offset=S,R.count=N,R;const P=Ko(R.boundingData,L,d,S,N,o);if(P.axis===-1)return m(S+N),R.offset=S,R.count=N,R;const v=E(h,e,d,S,N,P);if(v===S||v===S+N)m(S+N),R.offset=S,R.count=N;else{R.splitAxis=P.axis;const z=new Bi,O=S,w=v-S;R.left=z,z.boundingData=new Float32Array(6),$s(d,O,w,z.boundingData,u),F(z,O,w,u,D+1);const g=new Bi,U=v,q=N-w;R.right=g,g.boundingData=new Float32Array(6),$s(d,U,q,g.boundingData,u),F(g,U,q,u,D+1)}return R}}function na(c,i){const t=c.geometry;i.indirect&&(c._indirectBuffer=ia(t,i.useSharedArrayBuffer),$o(t)&&!i.verbose&&console.warn('MeshBVH: Provided geometry contains groups that do not fully span the vertex contents while using the "indirect" option. BVH may incorrectly report intersections on unrendered portions of the geometry.')),c._indirectBuffer||Xo(t,i);const e=sa(c,i);let s,n,r;const o=[],a=i.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;for(let f=0;f<e.length;f++){const I=e[f];let u=l(I);const d=new a(as*u);s=new Float32Array(d),n=new Uint32Array(d),r=new Uint16Array(d),h(0,I),o.push(d)}c._roots=o;return;function l(f){return f.count?1:1+l(f.left)+l(f.right)}function h(f,I){const u=f/4,d=f/2,E=!!I.count,T=I.boundingData;for(let p=0;p<6;p++)s[u+p]=T[p];if(E){const p=I.offset,m=I.count;return n[u+6]=p,r[d+14]=m,r[d+15]=xs,f+as}else{const p=I.left,m=I.right,F=I.splitAxis;let R;if(R=h(f+as,p),R/4>Math.pow(2,32))throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return n[u+6]=R/4,R=h(R,m),n[u+7]=F,R}}}class pe{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(i,t){let e=1/0,s=-1/0;for(let n=0,r=i.length;n<r;n++){const a=i[n][t];e=a<e?a:e,s=a>s?a:s}this.min=e,this.max=s}setFromPoints(i,t){let e=1/0,s=-1/0;for(let n=0,r=t.length;n<r;n++){const o=t[n],a=i.dot(o);e=a<e?a:e,s=a>s?a:s}this.min=e,this.max=s}isSeparated(i){return this.min>i.max||i.min>this.max}}pe.prototype.setFromBox=function(){const c=new y.Vector3;return function(t,e){const s=e.min,n=e.max;let r=1/0,o=-1/0;for(let a=0;a<=1;a++)for(let l=0;l<=1;l++)for(let h=0;h<=1;h++){c.x=s.x*a+n.x*(1-a),c.y=s.y*l+n.y*(1-l),c.z=s.z*h+n.z*(1-h);const f=t.dot(c);r=Math.min(f,r),o=Math.max(f,o)}this.min=r,this.max=o}}();const ra=function(){const c=new y.Vector3,i=new y.Vector3,t=new y.Vector3;return function(s,n,r){const o=s.start,a=c,l=n.start,h=i;t.subVectors(o,l),c.subVectors(s.end,s.start),i.subVectors(n.end,n.start);const f=t.dot(h),I=h.dot(a),u=h.dot(h),d=t.dot(a),T=a.dot(a)*u-I*I;let p,m;T!==0?p=(f*I-d*u)/T:p=0,m=(f+p*I)/u,r.x=p,r.y=m}}(),vn=function(){const c=new y.Vector2,i=new y.Vector3,t=new y.Vector3;return function(s,n,r,o){ra(s,n,c);let a=c.x,l=c.y;if(a>=0&&a<=1&&l>=0&&l<=1){s.at(a,r),n.at(l,o);return}else if(a>=0&&a<=1){l<0?n.at(0,o):n.at(1,o),s.closestPointToPoint(o,!0,r);return}else if(l>=0&&l<=1){a<0?s.at(0,r):s.at(1,r),n.closestPointToPoint(r,!0,o);return}else{let h;a<0?h=s.start:h=s.end;let f;l<0?f=n.start:f=n.end;const I=i,u=t;if(s.closestPointToPoint(f,!0,i),n.closestPointToPoint(h,!0,t),I.distanceToSquared(f)<=u.distanceToSquared(h)){r.copy(I),o.copy(f);return}else{r.copy(h),o.copy(u);return}}}}(),oa=function(){const c=new y.Vector3,i=new y.Vector3,t=new y.Plane,e=new y.Line3;return function(n,r){const{radius:o,center:a}=n,{a:l,b:h,c:f}=r;if(e.start=l,e.end=h,e.closestPointToPoint(a,!0,c).distanceTo(a)<=o||(e.start=l,e.end=f,e.closestPointToPoint(a,!0,c).distanceTo(a)<=o)||(e.start=h,e.end=f,e.closestPointToPoint(a,!0,c).distanceTo(a)<=o))return!0;const E=r.getPlane(t);if(Math.abs(E.distanceToPoint(a))<=o){const p=E.projectPoint(a,i);if(r.containsPoint(p))return!0}return!1}}(),aa=1e-15;function Zs(c){return Math.abs(c)<aa}class ie extends y.Triangle{constructor(...i){super(...i),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new y.Vector3),this.satBounds=new Array(4).fill().map(()=>new pe),this.points=[this.a,this.b,this.c],this.sphere=new y.Sphere,this.plane=new y.Plane,this.needsUpdate=!0}intersectsSphere(i){return oa(i,this)}update(){const i=this.a,t=this.b,e=this.c,s=this.points,n=this.satAxes,r=this.satBounds,o=n[0],a=r[0];this.getNormal(o),a.setFromPoints(o,s);const l=n[1],h=r[1];l.subVectors(i,t),h.setFromPoints(l,s);const f=n[2],I=r[2];f.subVectors(t,e),I.setFromPoints(f,s);const u=n[3],d=r[3];u.subVectors(e,i),d.setFromPoints(u,s),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(o,i),this.needsUpdate=!1}}ie.prototype.closestPointToSegment=function(){const c=new y.Vector3,i=new y.Vector3,t=new y.Line3;return function(s,n=null,r=null){const{start:o,end:a}=s,l=this.points;let h,f=1/0;for(let I=0;I<3;I++){const u=(I+1)%3;t.start.copy(l[I]),t.end.copy(l[u]),vn(t,s,c,i),h=c.distanceToSquared(i),h<f&&(f=h,n&&n.copy(c),r&&r.copy(i))}return this.closestPointToPoint(o,c),h=o.distanceToSquared(c),h<f&&(f=h,n&&n.copy(c),r&&r.copy(o)),this.closestPointToPoint(a,c),h=a.distanceToSquared(c),h<f&&(f=h,n&&n.copy(c),r&&r.copy(a)),Math.sqrt(f)}}();ie.prototype.intersectsTriangle=function(){const c=new ie,i=new Array(3),t=new Array(3),e=new pe,s=new pe,n=new y.Vector3,r=new y.Vector3,o=new y.Vector3,a=new y.Vector3,l=new y.Vector3,h=new y.Line3,f=new y.Line3,I=new y.Line3,u=new y.Vector3;function d(E,T,p){const m=E.points;let F=0,R=-1;for(let S=0;S<3;S++){const{start:N,end:L}=h;N.copy(m[S]),L.copy(m[(S+1)%3]),h.delta(r);const D=Zs(T.distanceToPoint(N));if(Zs(T.normal.dot(r))&&D){p.copy(h),F=2;break}const P=T.intersectLine(h,u);if(!P&&D&&u.copy(N),(P||D)&&!Zs(u.distanceTo(L))){if(F<=1)(F===1?p.start:p.end).copy(u),D&&(R=F);else if(F>=2){(R===1?p.start:p.end).copy(u),F=2;break}if(F++,F===2&&R===-1)break}}return F}return function(T,p=null,m=!1){this.needsUpdate&&this.update(),T.isExtendedTriangle?T.needsUpdate&&T.update():(c.copy(T),c.update(),T=c);const F=this.plane,R=T.plane;if(Math.abs(F.normal.dot(R.normal))>1-1e-10){const S=this.satBounds,N=this.satAxes;t[0]=T.a,t[1]=T.b,t[2]=T.c;for(let P=0;P<4;P++){const v=S[P],z=N[P];if(e.setFromPoints(z,t),v.isSeparated(e))return!1}const L=T.satBounds,D=T.satAxes;i[0]=this.a,i[1]=this.b,i[2]=this.c;for(let P=0;P<4;P++){const v=L[P],z=D[P];if(e.setFromPoints(z,i),v.isSeparated(e))return!1}for(let P=0;P<4;P++){const v=N[P];for(let z=0;z<4;z++){const O=D[z];if(n.crossVectors(v,O),e.setFromPoints(n,i),s.setFromPoints(n,t),e.isSeparated(s))return!1}}return p&&(m||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),p.start.set(0,0,0),p.end.set(0,0,0)),!0}else{const S=d(this,R,f);if(S===1&&T.containsPoint(f.end))return p&&(p.start.copy(f.end),p.end.copy(f.end)),!0;if(S!==2)return!1;const N=d(T,F,I);if(N===1&&this.containsPoint(I.end))return p&&(p.start.copy(I.end),p.end.copy(I.end)),!0;if(N!==2)return!1;if(f.delta(o),I.delta(a),o.dot(a)<0){let w=I.start;I.start=I.end,I.end=w}const L=f.start.dot(o),D=f.end.dot(o),P=I.start.dot(o),v=I.end.dot(o),z=D<P,O=L<v;return L!==v&&P!==D&&z===O?!1:(p&&(l.subVectors(f.start,I.start),l.dot(o)>0?p.start.copy(f.start):p.start.copy(I.start),l.subVectors(f.end,I.end),l.dot(o)<0?p.end.copy(f.end):p.end.copy(I.end)),!0)}}}();ie.prototype.distanceToPoint=function(){const c=new y.Vector3;return function(t){return this.closestPointToPoint(t,c),t.distanceTo(c)}}();ie.prototype.distanceToTriangle=function(){const c=new y.Vector3,i=new y.Vector3,t=["a","b","c"],e=new y.Line3,s=new y.Line3;return function(r,o=null,a=null){const l=o||a?e:null;if(this.intersectsTriangle(r,l))return(o||a)&&(o&&l.getCenter(o),a&&l.getCenter(a)),0;let h=1/0;for(let f=0;f<3;f++){let I;const u=t[f],d=r[u];this.closestPointToPoint(d,c),I=d.distanceToSquared(c),I<h&&(h=I,o&&o.copy(c),a&&a.copy(d));const E=this[u];r.closestPointToPoint(E,c),I=E.distanceToSquared(c),I<h&&(h=I,o&&o.copy(E),a&&a.copy(c))}for(let f=0;f<3;f++){const I=t[f],u=t[(f+1)%3];e.set(this[I],this[u]);for(let d=0;d<3;d++){const E=t[d],T=t[(d+1)%3];s.set(r[E],r[T]),vn(e,s,c,i);const p=c.distanceToSquared(i);p<h&&(h=p,o&&o.copy(c),a&&a.copy(i))}}return Math.sqrt(h)}}();class Ut{constructor(i,t,e){this.isOrientedBox=!0,this.min=new y.Vector3,this.max=new y.Vector3,this.matrix=new y.Matrix4,this.invMatrix=new y.Matrix4,this.points=new Array(8).fill().map(()=>new y.Vector3),this.satAxes=new Array(3).fill().map(()=>new y.Vector3),this.satBounds=new Array(3).fill().map(()=>new pe),this.alignedSatBounds=new Array(3).fill().map(()=>new pe),this.needsUpdate=!1,i&&this.min.copy(i),t&&this.max.copy(t),e&&this.matrix.copy(e)}set(i,t,e){this.min.copy(i),this.max.copy(t),this.matrix.copy(e),this.needsUpdate=!0}copy(i){this.min.copy(i.min),this.max.copy(i.max),this.matrix.copy(i.matrix),this.needsUpdate=!0}}Ut.prototype.update=function(){return function(){const i=this.matrix,t=this.min,e=this.max,s=this.points;for(let l=0;l<=1;l++)for(let h=0;h<=1;h++)for(let f=0;f<=1;f++){const I=1*l|2*h|4*f,u=s[I];u.x=l?e.x:t.x,u.y=h?e.y:t.y,u.z=f?e.z:t.z,u.applyMatrix4(i)}const n=this.satBounds,r=this.satAxes,o=s[0];for(let l=0;l<3;l++){const h=r[l],f=n[l],I=1<<l,u=s[I];h.subVectors(o,u),f.setFromPoints(h,s)}const a=this.alignedSatBounds;a[0].setFromPointsField(s,"x"),a[1].setFromPointsField(s,"y"),a[2].setFromPointsField(s,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}}();Ut.prototype.intersectsBox=function(){const c=new pe;return function(t){this.needsUpdate&&this.update();const e=t.min,s=t.max,n=this.satBounds,r=this.satAxes,o=this.alignedSatBounds;if(c.min=e.x,c.max=s.x,o[0].isSeparated(c)||(c.min=e.y,c.max=s.y,o[1].isSeparated(c))||(c.min=e.z,c.max=s.z,o[2].isSeparated(c)))return!1;for(let a=0;a<3;a++){const l=r[a],h=n[a];if(c.setFromBox(l,t),h.isSeparated(c))return!1}return!0}}();Ut.prototype.intersectsTriangle=function(){const c=new ie,i=new Array(3),t=new pe,e=new pe,s=new y.Vector3;return function(r){this.needsUpdate&&this.update(),r.isExtendedTriangle?r.needsUpdate&&r.update():(c.copy(r),c.update(),r=c);const o=this.satBounds,a=this.satAxes;i[0]=r.a,i[1]=r.b,i[2]=r.c;for(let I=0;I<3;I++){const u=o[I],d=a[I];if(t.setFromPoints(d,i),u.isSeparated(t))return!1}const l=r.satBounds,h=r.satAxes,f=this.points;for(let I=0;I<3;I++){const u=l[I],d=h[I];if(t.setFromPoints(d,f),u.isSeparated(t))return!1}for(let I=0;I<3;I++){const u=a[I];for(let d=0;d<4;d++){const E=h[d];if(s.crossVectors(u,E),t.setFromPoints(s,i),e.setFromPoints(s,f),t.isSeparated(e))return!1}}return!0}}();Ut.prototype.closestPointToPoint=function(){return function(i,t){return this.needsUpdate&&this.update(),t.copy(i).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),t}}();Ut.prototype.distanceToPoint=function(){const c=new y.Vector3;return function(t){return this.closestPointToPoint(t,c),t.distanceTo(c)}}();Ut.prototype.distanceToBox=function(){const c=["x","y","z"],i=new Array(12).fill().map(()=>new y.Line3),t=new Array(12).fill().map(()=>new y.Line3),e=new y.Vector3,s=new y.Vector3;return function(r,o=0,a=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(r))return(a||l)&&(r.getCenter(s),this.closestPointToPoint(s,e),r.closestPointToPoint(e,s),a&&a.copy(e),l&&l.copy(s)),0;const h=o*o,f=r.min,I=r.max,u=this.points;let d=1/0;for(let T=0;T<8;T++){const p=u[T];s.copy(p).clamp(f,I);const m=p.distanceToSquared(s);if(m<d&&(d=m,a&&a.copy(p),l&&l.copy(s),m<h))return Math.sqrt(m)}let E=0;for(let T=0;T<3;T++)for(let p=0;p<=1;p++)for(let m=0;m<=1;m++){const F=(T+1)%3,R=(T+2)%3,S=p<<F|m<<R,N=1<<T|p<<F|m<<R,L=u[S],D=u[N];i[E].set(L,D);const v=c[T],z=c[F],O=c[R],w=t[E],g=w.start,U=w.end;g[v]=f[v],g[z]=p?f[z]:I[z],g[O]=m?f[O]:I[z],U[v]=I[v],U[z]=p?f[z]:I[z],U[O]=m?f[O]:I[z],E++}for(let T=0;T<=1;T++)for(let p=0;p<=1;p++)for(let m=0;m<=1;m++){s.x=T?I.x:f.x,s.y=p?I.y:f.y,s.z=m?I.z:f.z,this.closestPointToPoint(s,e);const F=s.distanceToSquared(e);if(F<d&&(d=F,a&&a.copy(e),l&&l.copy(s),F<h))return Math.sqrt(F)}for(let T=0;T<12;T++){const p=i[T];for(let m=0;m<12;m++){const F=t[m];vn(p,F,e,s);const R=e.distanceToSquared(s);if(R<d&&(d=R,a&&a.copy(e),l&&l.copy(s),R<h))return Math.sqrt(R)}}return Math.sqrt(d)}}();class Un{constructor(i){this._getNewPrimitive=i,this._primitives=[]}getPrimitive(){const i=this._primitives;return i.length===0?this._getNewPrimitive():i.pop()}releasePrimitive(i){this._primitives.push(i)}}class ca extends Un{constructor(){super(()=>new ie)}}const Wt=new ca;function Vt(c,i){return i[c+15]===65535}function Yt(c,i){return i[c+6]}function Xt(c,i){return i[c+14]}function $t(c){return c+8}function Zt(c,i){return i[c+6]}function Vr(c,i){return i[c+7]}class la{constructor(){this.float32Array=null,this.uint16Array=null,this.uint32Array=null;const i=[];let t=null;this.setBuffer=e=>{t&&i.push(t),t=e,this.float32Array=new Float32Array(e),this.uint16Array=new Uint16Array(e),this.uint32Array=new Uint32Array(e)},this.clearBuffer=()=>{t=null,this.float32Array=null,this.uint16Array=null,this.uint32Array=null,i.length!==0&&this.setBuffer(i.pop())}}}const At=new la;let Fe,je;const ve=[],Vi=new Un(()=>new y.Box3);function ha(c,i,t,e,s,n){Fe=Vi.getPrimitive(),je=Vi.getPrimitive(),ve.push(Fe,je),At.setBuffer(c._roots[i]);const r=In(0,c.geometry,t,e,s,n);At.clearBuffer(),Vi.releasePrimitive(Fe),Vi.releasePrimitive(je),ve.pop(),ve.pop();const o=ve.length;return o>0&&(je=ve[o-1],Fe=ve[o-2]),r}function In(c,i,t,e,s=null,n=0,r=0){const{float32Array:o,uint16Array:a,uint32Array:l}=At;let h=c*2;if(Vt(h,a)){const I=Yt(c,l),u=Xt(h,a);return Ot(c,o,Fe),e(I,u,!1,r,n+c,Fe)}else{let v=function(O){const{uint16Array:w,uint32Array:g}=At;let U=O*2;for(;!Vt(U,w);)O=$t(O),U=O*2;return Yt(O,g)},z=function(O){const{uint16Array:w,uint32Array:g}=At;let U=O*2;for(;!Vt(U,w);)O=Zt(O,g),U=O*2;return Yt(O,g)+Xt(U,w)};const I=$t(c),u=Zt(c,l);let d=I,E=u,T,p,m,F;if(s&&(m=Fe,F=je,Ot(d,o,m),Ot(E,o,F),T=s(m),p=s(F),p<T)){d=u,E=I;const O=T;T=p,p=O,m=F}m||(m=Fe,Ot(d,o,m));const R=Vt(d*2,a),S=t(m,R,T,r+1,n+d);let N;if(S===Xn){const O=v(d),g=z(d)-O;N=e(O,g,!0,r+1,n+d,m)}else N=S&&In(d,i,t,e,s,n,r+1);if(N)return!0;F=je,Ot(E,o,F);const L=Vt(E*2,a),D=t(F,L,p,r+1,n+E);let P;if(D===Xn){const O=v(E),g=z(E)-O;P=e(O,g,!0,r+1,n+E,F)}else P=D&&In(E,i,t,e,s,n,r+1);return!!P}}const ni=new y.Vector3,js=new y.Vector3;function ua(c,i,t={},e=0,s=1/0){const n=e*e,r=s*s;let o=1/0,a=null;if(c.shapecast({boundsTraverseOrder:h=>(ni.copy(i).clamp(h.min,h.max),ni.distanceToSquared(i)),intersectsBounds:(h,f,I)=>I<o&&I<r,intersectsTriangle:(h,f)=>{h.closestPointToPoint(i,ni);const I=i.distanceToSquared(ni);return I<o&&(js.copy(ni),o=I,a=f),I<n}}),o===1/0)return null;const l=Math.sqrt(o);return t.point?t.point.copy(js):t.point=js.clone(),t.distance=l,t.faceIndex=a,t}const Ue=new y.Vector3,xe=new y.Vector3,Be=new y.Vector3,Yi=new y.Vector2,Gi=new y.Vector2,zi=new y.Vector2,Qn=new y.Vector3,Kn=new y.Vector3,Jn=new y.Vector3,ki=new y.Vector3;function fa(c,i,t,e,s,n){let r;return n===y.BackSide?r=c.intersectTriangle(e,t,i,!0,s):r=c.intersectTriangle(i,t,e,n!==y.DoubleSide,s),r===null?null:{distance:c.origin.distanceTo(s),point:s.clone()}}function Ia(c,i,t,e,s,n,r,o,a){Ue.fromBufferAttribute(i,n),xe.fromBufferAttribute(i,r),Be.fromBufferAttribute(i,o);const l=fa(c,Ue,xe,Be,ki,a);if(l){e&&(Yi.fromBufferAttribute(e,n),Gi.fromBufferAttribute(e,r),zi.fromBufferAttribute(e,o),l.uv=y.Triangle.getInterpolation(ki,Ue,xe,Be,Yi,Gi,zi,new y.Vector2)),s&&(Yi.fromBufferAttribute(s,n),Gi.fromBufferAttribute(s,r),zi.fromBufferAttribute(s,o),l.uv1=y.Triangle.getInterpolation(ki,Ue,xe,Be,Yi,Gi,zi,new y.Vector2)),t&&(Qn.fromBufferAttribute(t,n),Kn.fromBufferAttribute(t,r),Jn.fromBufferAttribute(t,o),l.normal=y.Triangle.getInterpolation(ki,Ue,xe,Be,Qn,Kn,Jn,new y.Vector3),l.normal.dot(c.direction)>0&&l.normal.multiplyScalar(-1));const h={a:n,b:r,c:o,normal:new y.Vector3,materialIndex:0};y.Triangle.getNormal(Ue,xe,Be,h.normal),l.face=h,l.faceIndex=n}return l}function Bs(c,i,t,e,s){const n=e*3;let r=n+0,o=n+1,a=n+2;const l=c.index;c.index&&(r=l.getX(r),o=l.getX(o),a=l.getX(a));const{position:h,normal:f,uv:I,uv1:u}=c.attributes,d=Ia(t,h,f,I,u,r,o,a,i);return d?(d.faceIndex=e,s&&s.push(d),d):null}function _t(c,i,t,e){const s=c.a,n=c.b,r=c.c;let o=i,a=i+1,l=i+2;t&&(o=t.getX(o),a=t.getX(a),l=t.getX(l)),s.x=e.getX(o),s.y=e.getY(o),s.z=e.getZ(o),n.x=e.getX(a),n.y=e.getY(a),n.z=e.getZ(a),r.x=e.getX(l),r.y=e.getY(l),r.z=e.getZ(l)}function da(c,i,t,e,s,n){const{geometry:r,_indirectBuffer:o}=c;for(let a=e,l=e+s;a<l;a++)Bs(r,i,t,a,n)}function Ea(c,i,t,e,s){const{geometry:n,_indirectBuffer:r}=c;let o=1/0,a=null;for(let l=e,h=e+s;l<h;l++){let f;f=Bs(n,i,t,l),f&&f.distance<o&&(a=f,o=f.distance)}return a}function pa(c,i,t,e,s,n,r){const{geometry:o}=t,{index:a}=o,l=o.attributes.position;for(let h=c,f=i+c;h<f;h++){let I;if(I=h,_t(r,I*3,a,l),r.needsUpdate=!0,e(r,I,s,n))return!0}return!1}function Ca(c,i=null){i&&Array.isArray(i)&&(i=new Set(i));const t=c.geometry,e=t.index?t.index.array:null,s=t.attributes.position;let n,r,o,a,l=0;const h=c._roots;for(let I=0,u=h.length;I<u;I++)n=h[I],r=new Uint32Array(n),o=new Uint16Array(n),a=new Float32Array(n),f(0,l),l+=n.byteLength;function f(I,u,d=!1){const E=I*2;if(o[E+15]===xs){const p=r[I+6],m=o[E+14];let F=1/0,R=1/0,S=1/0,N=-1/0,L=-1/0,D=-1/0;for(let P=3*p,v=3*(p+m);P<v;P++){let z=e[P];const O=s.getX(z),w=s.getY(z),g=s.getZ(z);O<F&&(F=O),O>N&&(N=O),w<R&&(R=w),w>L&&(L=w),g<S&&(S=g),g>D&&(D=g)}return a[I+0]!==F||a[I+1]!==R||a[I+2]!==S||a[I+3]!==N||a[I+4]!==L||a[I+5]!==D?(a[I+0]=F,a[I+1]=R,a[I+2]=S,a[I+3]=N,a[I+4]=L,a[I+5]=D,!0):!1}else{const p=I+8,m=r[I+6],F=p+u,R=m+u;let S=d,N=!1,L=!1;i?S||(N=i.has(F),L=i.has(R),S=!N&&!L):(N=!0,L=!0);const D=S||N,P=S||L;let v=!1;D&&(v=f(p,u,S));let z=!1;P&&(z=f(m,u,S));const O=v||z;if(O)for(let w=0;w<3;w++){const g=p+w,U=m+w,q=a[g],Y=a[g+3],et=a[U],X=a[U+3];a[I+w]=q<et?q:et,a[I+w+3]=Y>X?Y:X}return O}}}const tr=new y.Box3;function Se(c,i,t,e){return Ot(c,i,tr),t.intersectBox(tr,e)}function Ta(c,i,t,e,s,n){const{geometry:r,_indirectBuffer:o}=c;for(let a=e,l=e+s;a<l;a++){let h=o?o[a]:a;Bs(r,i,t,h,n)}}function ma(c,i,t,e,s){const{geometry:n,_indirectBuffer:r}=c;let o=1/0,a=null;for(let l=e,h=e+s;l<h;l++){let f;f=Bs(n,i,t,r?r[l]:l),f&&f.distance<o&&(a=f,o=f.distance)}return a}function Ra(c,i,t,e,s,n,r){const{geometry:o}=t,{index:a}=o,l=o.attributes.position;for(let h=c,f=i+c;h<f;h++){let I;if(I=t.resolveTriangleIndex(h),_t(r,I*3,a,l),r.needsUpdate=!0,e(r,I,s,n))return!0}return!1}const er=new y.Vector3;function ga(c,i,t,e,s){At.setBuffer(c._roots[i]),dn(0,c,t,e,s),At.clearBuffer()}function dn(c,i,t,e,s){const{float32Array:n,uint16Array:r,uint32Array:o}=At,a=c*2;if(Vt(a,r)){const h=Yt(c,o),f=Xt(a,r);da(i,t,e,h,f,s)}else{const h=$t(c);Se(h,n,e,er)&&dn(h,i,t,e,s);const f=Zt(c,o);Se(f,n,e,er)&&dn(f,i,t,e,s)}}const ir=new y.Vector3,Aa=["x","y","z"];function Fa(c,i,t,e){At.setBuffer(c._roots[i]);const s=En(0,c,t,e);return At.clearBuffer(),s}function En(c,i,t,e){const{float32Array:s,uint16Array:n,uint32Array:r}=At;let o=c*2;if(Vt(o,n)){const l=Yt(c,r),h=Xt(o,n);return Ea(i,t,e,l,h)}else{const l=Vr(c,r),h=Aa[l],I=e.direction[h]>=0;let u,d;I?(u=$t(c),d=Zt(c,r)):(u=Zt(c,r),d=$t(c));const T=Se(u,s,e,ir)?En(u,i,t,e):null;if(T){const F=T.point[h];if(I?F<=s[d+l]:F>=s[d+l+3])return T}const m=Se(d,s,e,ir)?En(d,i,t,e):null;return T&&m?T.distance<=m.distance?T:m:T||m||null}}const Hi=new y.Box3,Ve=new ie,Ye=new ie,ri=new y.Matrix4,sr=new Ut,Wi=new Ut;function Sa(c,i,t,e){At.setBuffer(c._roots[i]);const s=pn(0,c,t,e);return At.clearBuffer(),s}function pn(c,i,t,e,s=null){const{float32Array:n,uint16Array:r,uint32Array:o}=At;let a=c*2;if(s===null&&(t.boundingBox||t.computeBoundingBox(),sr.set(t.boundingBox.min,t.boundingBox.max,e),s=sr),Vt(a,r)){const h=i.geometry,f=h.index,I=h.attributes.position,u=t.index,d=t.attributes.position,E=Yt(c,o),T=Xt(a,r);if(ri.copy(e).invert(),t.boundsTree)return Ot(c,n,Wi),Wi.matrix.copy(ri),Wi.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:m=>Wi.intersectsBox(m),intersectsTriangle:m=>{m.a.applyMatrix4(e),m.b.applyMatrix4(e),m.c.applyMatrix4(e),m.needsUpdate=!0;for(let F=E*3,R=(T+E)*3;F<R;F+=3)if(_t(Ye,F,f,I),Ye.needsUpdate=!0,m.intersectsTriangle(Ye))return!0;return!1}});for(let p=E*3,m=(T+E)*3;p<m;p+=3){_t(Ve,p,f,I),Ve.a.applyMatrix4(ri),Ve.b.applyMatrix4(ri),Ve.c.applyMatrix4(ri),Ve.needsUpdate=!0;for(let F=0,R=u.count;F<R;F+=3)if(_t(Ye,F,u,d),Ye.needsUpdate=!0,Ve.intersectsTriangle(Ye))return!0}}else{const h=c+8,f=o[c+6];return Ot(h,n,Hi),!!(s.intersectsBox(Hi)&&pn(h,i,t,e,s)||(Ot(f,n,Hi),s.intersectsBox(Hi)&&pn(f,i,t,e,s)))}}const Xi=new y.Matrix4,qs=new Ut,oi=new Ut,Oa=new y.Vector3,Na=new y.Vector3,ya=new y.Vector3,La=new y.Vector3;function Pa(c,i,t,e={},s={},n=0,r=1/0){i.boundingBox||i.computeBoundingBox(),qs.set(i.boundingBox.min,i.boundingBox.max,t),qs.needsUpdate=!0;const o=c.geometry,a=o.attributes.position,l=o.index,h=i.attributes.position,f=i.index,I=Wt.getPrimitive(),u=Wt.getPrimitive();let d=Oa,E=Na,T=null,p=null;s&&(T=ya,p=La);let m=1/0,F=null,R=null;return Xi.copy(t).invert(),oi.matrix.copy(Xi),c.shapecast({boundsTraverseOrder:S=>qs.distanceToBox(S),intersectsBounds:(S,N,L)=>L<m&&L<r?(N&&(oi.min.copy(S.min),oi.max.copy(S.max),oi.needsUpdate=!0),!0):!1,intersectsRange:(S,N)=>{if(i.boundsTree)return i.boundsTree.shapecast({boundsTraverseOrder:D=>oi.distanceToBox(D),intersectsBounds:(D,P,v)=>v<m&&v<r,intersectsRange:(D,P)=>{for(let v=D,z=D+P;v<z;v++){_t(u,3*v,f,h),u.a.applyMatrix4(t),u.b.applyMatrix4(t),u.c.applyMatrix4(t),u.needsUpdate=!0;for(let O=S,w=S+N;O<w;O++){_t(I,3*O,l,a),I.needsUpdate=!0;const g=I.distanceToTriangle(u,d,T);if(g<m&&(E.copy(d),p&&p.copy(T),m=g,F=O,R=v),g<n)return!0}}}});{const L=Je(i);for(let D=0,P=L;D<P;D++){_t(u,3*D,f,h),u.a.applyMatrix4(t),u.b.applyMatrix4(t),u.c.applyMatrix4(t),u.needsUpdate=!0;for(let v=S,z=S+N;v<z;v++){_t(I,3*v,l,a),I.needsUpdate=!0;const O=I.distanceToTriangle(u,d,T);if(O<m&&(E.copy(d),p&&p.copy(T),m=O,F=v,R=D),O<n)return!0}}}}}),Wt.releasePrimitive(I),Wt.releasePrimitive(u),m===1/0?null:(e.point?e.point.copy(E):e.point=E.clone(),e.distance=m,e.faceIndex=F,s&&(s.point?s.point.copy(p):s.point=p.clone(),s.point.applyMatrix4(Xi),E.applyMatrix4(Xi),s.distance=E.sub(s.point).length(),s.faceIndex=R),e)}function _a(c,i=null){i&&Array.isArray(i)&&(i=new Set(i));const t=c.geometry,e=t.index?t.index.array:null,s=t.attributes.position;let n,r,o,a,l=0;const h=c._roots;for(let I=0,u=h.length;I<u;I++)n=h[I],r=new Uint32Array(n),o=new Uint16Array(n),a=new Float32Array(n),f(0,l),l+=n.byteLength;function f(I,u,d=!1){const E=I*2;if(o[E+15]===xs){const p=r[I+6],m=o[E+14];let F=1/0,R=1/0,S=1/0,N=-1/0,L=-1/0,D=-1/0;for(let P=p,v=p+m;P<v;P++){const z=3*c.resolveTriangleIndex(P);for(let O=0;O<3;O++){let w=z+O;w=e?e[w]:w;const g=s.getX(w),U=s.getY(w),q=s.getZ(w);g<F&&(F=g),g>N&&(N=g),U<R&&(R=U),U>L&&(L=U),q<S&&(S=q),q>D&&(D=q)}}return a[I+0]!==F||a[I+1]!==R||a[I+2]!==S||a[I+3]!==N||a[I+4]!==L||a[I+5]!==D?(a[I+0]=F,a[I+1]=R,a[I+2]=S,a[I+3]=N,a[I+4]=L,a[I+5]=D,!0):!1}else{const p=I+8,m=r[I+6],F=p+u,R=m+u;let S=d,N=!1,L=!1;i?S||(N=i.has(F),L=i.has(R),S=!N&&!L):(N=!0,L=!0);const D=S||N,P=S||L;let v=!1;D&&(v=f(p,u,S));let z=!1;P&&(z=f(m,u,S));const O=v||z;if(O)for(let w=0;w<3;w++){const g=p+w,U=m+w,q=a[g],Y=a[g+3],et=a[U],X=a[U+3];a[I+w]=q<et?q:et,a[I+w+3]=Y>X?Y:X}return O}}}const nr=new y.Vector3;function Ma(c,i,t,e,s){At.setBuffer(c._roots[i]),Cn(0,c,t,e,s),At.clearBuffer()}function Cn(c,i,t,e,s){const{float32Array:n,uint16Array:r,uint32Array:o}=At,a=c*2;if(Vt(a,r)){const h=Yt(c,o),f=Xt(a,r);Ta(i,t,e,h,f,s)}else{const h=$t(c);Se(h,n,e,nr)&&Cn(h,i,t,e,s);const f=Zt(c,o);Se(f,n,e,nr)&&Cn(f,i,t,e,s)}}const rr=new y.Vector3,wa=["x","y","z"];function Da(c,i,t,e){At.setBuffer(c._roots[i]);const s=Tn(0,c,t,e);return At.clearBuffer(),s}function Tn(c,i,t,e){const{float32Array:s,uint16Array:n,uint32Array:r}=At;let o=c*2;if(Vt(o,n)){const l=Yt(c,r),h=Xt(o,n);return ma(i,t,e,l,h)}else{const l=Vr(c,r),h=wa[l],I=e.direction[h]>=0;let u,d;I?(u=$t(c),d=Zt(c,r)):(u=Zt(c,r),d=$t(c));const T=Se(u,s,e,rr)?Tn(u,i,t,e):null;if(T){const F=T.point[h];if(I?F<=s[d+l]:F>=s[d+l+3])return T}const m=Se(d,s,e,rr)?Tn(d,i,t,e):null;return T&&m?T.distance<=m.distance?T:m:T||m||null}}const $i=new y.Box3,Ge=new ie,ze=new ie,ai=new y.Matrix4,or=new Ut,Zi=new Ut;function ba(c,i,t,e){At.setBuffer(c._roots[i]);const s=mn(0,c,t,e);return At.clearBuffer(),s}function mn(c,i,t,e,s=null){const{float32Array:n,uint16Array:r,uint32Array:o}=At;let a=c*2;if(s===null&&(t.boundingBox||t.computeBoundingBox(),or.set(t.boundingBox.min,t.boundingBox.max,e),s=or),Vt(a,r)){const h=i.geometry,f=h.index,I=h.attributes.position,u=t.index,d=t.attributes.position,E=Yt(c,o),T=Xt(a,r);if(ai.copy(e).invert(),t.boundsTree)return Ot(c,n,Zi),Zi.matrix.copy(ai),Zi.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:m=>Zi.intersectsBox(m),intersectsTriangle:m=>{m.a.applyMatrix4(e),m.b.applyMatrix4(e),m.c.applyMatrix4(e),m.needsUpdate=!0;for(let F=E,R=T+E;F<R;F++)if(_t(ze,3*i.resolveTriangleIndex(F),f,I),ze.needsUpdate=!0,m.intersectsTriangle(ze))return!0;return!1}});for(let p=E,m=T+E;p<m;p++){const F=i.resolveTriangleIndex(p);_t(Ge,3*F,f,I),Ge.a.applyMatrix4(ai),Ge.b.applyMatrix4(ai),Ge.c.applyMatrix4(ai),Ge.needsUpdate=!0;for(let R=0,S=u.count;R<S;R+=3)if(_t(ze,R,u,d),ze.needsUpdate=!0,Ge.intersectsTriangle(ze))return!0}}else{const h=c+8,f=o[c+6];return Ot(h,n,$i),!!(s.intersectsBox($i)&&mn(h,i,t,e,s)||(Ot(f,n,$i),s.intersectsBox($i)&&mn(f,i,t,e,s)))}}const ji=new y.Matrix4,Qs=new Ut,ci=new Ut,va=new y.Vector3,Ua=new y.Vector3,xa=new y.Vector3,Ba=new y.Vector3;function Va(c,i,t,e={},s={},n=0,r=1/0){i.boundingBox||i.computeBoundingBox(),Qs.set(i.boundingBox.min,i.boundingBox.max,t),Qs.needsUpdate=!0;const o=c.geometry,a=o.attributes.position,l=o.index,h=i.attributes.position,f=i.index,I=Wt.getPrimitive(),u=Wt.getPrimitive();let d=va,E=Ua,T=null,p=null;s&&(T=xa,p=Ba);let m=1/0,F=null,R=null;return ji.copy(t).invert(),ci.matrix.copy(ji),c.shapecast({boundsTraverseOrder:S=>Qs.distanceToBox(S),intersectsBounds:(S,N,L)=>L<m&&L<r?(N&&(ci.min.copy(S.min),ci.max.copy(S.max),ci.needsUpdate=!0),!0):!1,intersectsRange:(S,N)=>{if(i.boundsTree){const L=i.boundsTree;return L.shapecast({boundsTraverseOrder:D=>ci.distanceToBox(D),intersectsBounds:(D,P,v)=>v<m&&v<r,intersectsRange:(D,P)=>{for(let v=D,z=D+P;v<z;v++){const O=L.resolveTriangleIndex(v);_t(u,3*O,f,h),u.a.applyMatrix4(t),u.b.applyMatrix4(t),u.c.applyMatrix4(t),u.needsUpdate=!0;for(let w=S,g=S+N;w<g;w++){const U=c.resolveTriangleIndex(w);_t(I,3*U,l,a),I.needsUpdate=!0;const q=I.distanceToTriangle(u,d,T);if(q<m&&(E.copy(d),p&&p.copy(T),m=q,F=w,R=v),q<n)return!0}}}})}else{const L=Je(i);for(let D=0,P=L;D<P;D++){_t(u,3*D,f,h),u.a.applyMatrix4(t),u.b.applyMatrix4(t),u.c.applyMatrix4(t),u.needsUpdate=!0;for(let v=S,z=S+N;v<z;v++){const O=c.resolveTriangleIndex(v);_t(I,3*O,l,a),I.needsUpdate=!0;const w=I.distanceToTriangle(u,d,T);if(w<m&&(E.copy(d),p&&p.copy(T),m=w,F=v,R=D),w<n)return!0}}}}}),Wt.releasePrimitive(I),Wt.releasePrimitive(u),m===1/0?null:(e.point?e.point.copy(E):e.point=E.clone(),e.distance=m,e.faceIndex=F,s&&(s.point?s.point.copy(p):s.point=p.clone(),s.point.applyMatrix4(ji),E.applyMatrix4(ji),s.distance=E.sub(s.point).length(),s.faceIndex=R),e)}function Ya(){return typeof SharedArrayBuffer<"u"}const Ri=new At.constructor,hs=new At.constructor,ge=new Un(()=>new y.Box3),ke=new y.Box3,He=new y.Box3,Ks=new y.Box3,Js=new y.Box3;let tn=!1;function Ga(c,i,t,e){if(tn)throw new Error("MeshBVH: Recursive calls to bvhcast not supported.");tn=!0;const s=c._roots,n=i._roots;let r,o=0,a=0;const l=new y.Matrix4().copy(t).invert();for(let h=0,f=s.length;h<f;h++){Ri.setBuffer(s[h]),a=0;const I=ge.getPrimitive();Ot(0,Ri.float32Array,I),I.applyMatrix4(l);for(let u=0,d=n.length;u<d&&(hs.setBuffer(n[h]),r=Kt(0,0,t,l,e,o,a,0,0,I),hs.clearBuffer(),a+=n[u].length,!r);u++);if(ge.releasePrimitive(I),Ri.clearBuffer(),o+=s[h].length,r)break}return tn=!1,r}function Kt(c,i,t,e,s,n=0,r=0,o=0,a=0,l=null,h=!1){let f,I;h?(f=hs,I=Ri):(f=Ri,I=hs);const u=f.float32Array,d=f.uint32Array,E=f.uint16Array,T=I.float32Array,p=I.uint32Array,m=I.uint16Array,F=c*2,R=i*2,S=Vt(F,E),N=Vt(R,m);let L=!1;if(N&&S)h?L=s(Yt(i,p),Xt(i*2,m),Yt(c,d),Xt(c*2,E),a,r+i,o,n+c):L=s(Yt(c,d),Xt(c*2,E),Yt(i,p),Xt(i*2,m),o,n+c,a,r+i);else if(N){const D=ge.getPrimitive();Ot(i,T,D),D.applyMatrix4(t);const P=$t(c),v=Zt(c,d);Ot(P,u,ke),Ot(v,u,He);const z=D.intersectsBox(ke),O=D.intersectsBox(He);L=z&&Kt(i,P,e,t,s,r,n,a,o+1,D,!h)||O&&Kt(i,v,e,t,s,r,n,a,o+1,D,!h),ge.releasePrimitive(D)}else{const D=$t(i),P=Zt(i,p);Ot(D,T,Ks),Ot(P,T,Js);const v=l.intersectsBox(Ks),z=l.intersectsBox(Js);if(v&&z)L=Kt(c,D,t,e,s,n,r,o,a+1,l,h)||Kt(c,P,t,e,s,n,r,o,a+1,l,h);else if(v)if(S)L=Kt(c,D,t,e,s,n,r,o,a+1,l,h);else{const O=ge.getPrimitive();O.copy(Ks).applyMatrix4(t);const w=$t(c),g=Zt(c,d);Ot(w,u,ke),Ot(g,u,He);const U=O.intersectsBox(ke),q=O.intersectsBox(He);L=U&&Kt(D,w,e,t,s,r,n,a,o+1,O,!h)||q&&Kt(D,g,e,t,s,r,n,a,o+1,O,!h),ge.releasePrimitive(O)}else if(z)if(S)L=Kt(c,P,t,e,s,n,r,o,a+1,l,h);else{const O=ge.getPrimitive();O.copy(Js).applyMatrix4(t);const w=$t(c),g=Zt(c,d);Ot(w,u,ke),Ot(g,u,He);const U=O.intersectsBox(ke),q=O.intersectsBox(He);L=U&&Kt(P,w,e,t,s,r,n,a,o+1,O,!h)||q&&Kt(P,g,e,t,s,r,n,a,o+1,O,!h),ge.releasePrimitive(O)}}return L}const qi=new Ut,ar=new y.Box3;class xn{static serialize(i,t={}){t={cloneBuffers:!0,...t};const e=i.geometry,s=i._roots,n=i._indirectBuffer,r=e.getIndex();let o;return t.cloneBuffers?o={roots:s.map(a=>a.slice()),index:r.array.slice(),indirectBuffer:n?n.slice():null}:o={roots:s,index:r.array,indirectBuffer:n},o}static deserialize(i,t,e={}){e={setIndex:!0,indirect:!!i.indirectBuffer,...e};const{index:s,roots:n,indirectBuffer:r}=i,o=new xn(t,{...e,[Xs]:!0});if(o._roots=n,o._indirectBuffer=r||null,e.setIndex){const a=t.getIndex();if(a===null){const l=new y.BufferAttribute(i.index,1,!1);t.setIndex(l)}else a.array!==s&&(a.array.set(s),a.needsUpdate=!0)}return o}get indirect(){return!!this._indirectBuffer}constructor(i,t={}){if(i.isBufferGeometry){if(i.index&&i.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(t=Object.assign({strategy:Ur,maxDepth:40,maxLeafTris:10,verbose:!0,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,indirect:!1,[Xs]:!1},t),t.useSharedArrayBuffer&&!Ya())throw new Error("MeshBVH: SharedArrayBuffer is not available.");this.geometry=i,this._roots=null,this._indirectBuffer=null,t[Xs]||(na(this,t),!i.boundingBox&&t.setBoundingBox&&(i.boundingBox=this.getBoundingBox(new y.Box3)));const{_indirectBuffer:e}=this;this.resolveTriangleIndex=t.indirect?s=>e[s]:s=>s}refit(i=null){return(this.indirect?_a:Ca)(this,i)}traverse(i,t=0){const e=this._roots[t],s=new Uint32Array(e),n=new Uint16Array(e);r(0);function r(o,a=0){const l=o*2,h=n[l+15]===xs;if(h){const f=s[o+6],I=n[l+14];i(a,h,new Float32Array(e,o*4,6),f,I)}else{const f=o+as/4,I=s[o+6],u=s[o+7];i(a,h,new Float32Array(e,o*4,6),u)||(r(f,a+1),r(I,a+1))}}}raycast(i,t=y.FrontSide){const e=this._roots,s=this.geometry,n=[],r=t.isMaterial,o=Array.isArray(t),a=s.groups,l=r?t.side:t,h=this.indirect?Ma:ga;for(let f=0,I=e.length;f<I;f++){const u=o?t[a[f].materialIndex].side:l,d=n.length;if(h(this,f,u,i,n),o){const E=a[f].materialIndex;for(let T=d,p=n.length;T<p;T++)n[T].face.materialIndex=E}}return n}raycastFirst(i,t=y.FrontSide){const e=this._roots,s=this.geometry,n=t.isMaterial,r=Array.isArray(t);let o=null;const a=s.groups,l=n?t.side:t,h=this.indirect?Da:Fa;for(let f=0,I=e.length;f<I;f++){const u=r?t[a[f].materialIndex].side:l,d=h(this,f,u,i);d!=null&&(o==null||d.distance<o.distance)&&(o=d,r&&(d.face.materialIndex=a[f].materialIndex))}return o}intersectsGeometry(i,t){let e=!1;const s=this._roots,n=this.indirect?ba:Sa;for(let r=0,o=s.length;r<o&&(e=n(this,r,i,t),!e);r++);return e}shapecast(i){const t=Wt.getPrimitive(),e=this.indirect?Ra:pa;let{boundsTraverseOrder:s,intersectsBounds:n,intersectsRange:r,intersectsTriangle:o}=i;if(r&&o){const f=r;r=(I,u,d,E,T)=>f(I,u,d,E,T)?!0:e(I,u,this,o,d,E,t)}else r||(o?r=(f,I,u,d)=>e(f,I,this,o,u,d,t):r=(f,I,u)=>u);let a=!1,l=0;const h=this._roots;for(let f=0,I=h.length;f<I;f++){const u=h[f];if(a=ha(this,f,n,r,s,l),a)break;l+=u.byteLength}return Wt.releasePrimitive(t),a}bvhcast(i,t,e){let{intersectsRanges:s,intersectsTriangles:n}=e;const r=Wt.getPrimitive(),o=this.geometry.index,a=this.geometry.attributes.position,l=this.indirect?d=>{const E=this.resolveTriangleIndex(d);_t(r,E*3,o,a)}:d=>{_t(r,d*3,o,a)},h=Wt.getPrimitive(),f=i.geometry.index,I=i.geometry.attributes.position,u=i.indirect?d=>{const E=i.resolveTriangleIndex(d);_t(h,E*3,f,I)}:d=>{_t(h,d*3,f,I)};if(n){const d=(E,T,p,m,F,R,S,N)=>{for(let L=p,D=p+m;L<D;L++){u(L),h.a.applyMatrix4(t),h.b.applyMatrix4(t),h.c.applyMatrix4(t),h.needsUpdate=!0;for(let P=E,v=E+T;P<v;P++)if(l(P),r.needsUpdate=!0,n(r,h,P,L,F,R,S,N))return!0}return!1};if(s){const E=s;s=function(T,p,m,F,R,S,N,L){return E(T,p,m,F,R,S,N,L)?!0:d(T,p,m,F,R,S,N,L)}}else s=d}return Ga(this,i,t,s)}intersectsBox(i,t){return qi.set(i.min,i.max,t),qi.needsUpdate=!0,this.shapecast({intersectsBounds:e=>qi.intersectsBox(e),intersectsTriangle:e=>qi.intersectsTriangle(e)})}intersectsSphere(i){return this.shapecast({intersectsBounds:t=>i.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(i)})}closestPointToGeometry(i,t,e={},s={},n=0,r=1/0){return(this.indirect?Va:Pa)(this,i,t,e,s,n,r)}closestPointToPoint(i,t={},e=0,s=1/0){return ua(this,i,t,e,s)}getBoundingBox(i){return i.makeEmpty(),this._roots.forEach(e=>{Ot(0,new Float32Array(e),ar),i.union(ar)}),i}}function cr(c,i,t){return c===null||(c.point.applyMatrix4(i.matrixWorld),c.distance=c.point.distanceTo(t.ray.origin),c.object=i,c.distance<t.near||c.distance>t.far)?null:c}const en=new y.Ray,lr=new y.Matrix4,za=y.Mesh.prototype.raycast;function ka(c,i){if(this.geometry.boundsTree){if(this.material===void 0)return;lr.copy(this.matrixWorld).invert(),en.copy(c.ray).applyMatrix4(lr);const t=this.geometry.boundsTree;if(c.firstHitOnly===!0){const e=cr(t.raycastFirst(en,this.material),this,c);e&&i.push(e)}else{const e=t.raycast(en,this.material);for(let s=0,n=e.length;s<n;s++){const r=cr(e[s],this,c);r&&i.push(r)}}}else za.call(this,c,i)}function Ha(c){return this.boundsTree=new xn(this,c),this.boundsTree}function Wa(){this.boundsTree=null}class j{constructor(){C(this,"trigger",i=>{const t=this.handlers.slice(0);for(const e of t)e(i)});C(this,"handlers",[])}add(i){this.handlers.push(i)}remove(i){this.handlers=this.handlers.filter(t=>t!==i)}reset(){this.handlers.length=0}}class gi{constructor(){C(this,"trigger",async i=>{const t=this.handlers.slice(0);for(const e of t)await e(i)});C(this,"handlers",[])}add(i){this.handlers.push(i)}remove(i){this.handlers=this.handlers.filter(t=>t!==i)}reset(){this.handlers.length=0}}class Vs{constructor(i){C(this,"isDisposeable",()=>"dispose"in this&&"onDisposed"in this);C(this,"isResizeable",()=>"resize"in this&&"getSize"in this);C(this,"isUpdateable",()=>"onAfterUpdate"in this&&"onBeforeUpdate"in this&&"update"in this);C(this,"isHideable",()=>"visible"in this);C(this,"isConfigurable",()=>"setup"in this&&"config"in this&&"onSetup"in this);this.components=i}}class mt extends Vs{}class Ys extends Vs{constructor(t){super(t);C(this,"worlds",new Map);C(this,"onWorldChanged",new j);C(this,"currentWorld",null);this.onWorldChanged.add(({world:e,action:s})=>{s==="removed"&&this.worlds.delete(e.uuid)})}}class Yr extends Ys{constructor(){super(...arguments);C(this,"hasCameraControls",()=>"controls"in this)}}class Gr extends Ys{constructor(){super(...arguments);C(this,"onAfterUpdate",new j);C(this,"onBeforeUpdate",new j);C(this,"onDisposed",new j);C(this,"onResize",new j);C(this,"onClippingPlanesUpdated",new j);C(this,"clippingPlanes",[])}updateClippingPlanes(){this.onClippingPlanesUpdated.trigger()}setPlane(t,e,s){e.isLocal=s;const n=this.clippingPlanes.indexOf(e);t&&n===-1?this.clippingPlanes.push(e):!t&&n>-1&&this.clippingPlanes.splice(n,1),this.three.clippingPlanes=this.clippingPlanes.filter(r=>!r.isLocal)}}const Ai=class Ai extends mt{constructor(t){super(t);C(this,"_disposedComponents",new Set);C(this,"enabled",!0);t.add(Ai.uuid,this)}get(){return this._disposedComponents}destroy(t,e=!0,s=!0){t.removeFromParent();const n=t;n.dispose&&n.dispose(),this.disposeGeometryAndMaterials(t,e),s&&n.children&&n.children.length&&this.disposeChildren(n),t.children.length=0}disposeGeometry(t){t.boundsTree&&t.disposeBoundsTree&&t.disposeBoundsTree(),t.dispose()}disposeGeometryAndMaterials(t,e){const s=t;s.geometry&&this.disposeGeometry(s.geometry),e&&s.material&&Ai.disposeMaterial(s),s.material=[],s.geometry=null}disposeChildren(t){for(const e of t.children)this.destroy(e)}static disposeMaterial(t){if(t.material)if(Array.isArray(t.material))for(const e of t.material)e.dispose();else t.material.dispose()}};C(Ai,"uuid","76e9cd8e-ad8f-4753-9ef6-cbc60f7247fe");let Ce=Ai;class zr extends Ys{constructor(t){super(t);C(this,"onDisposed",new j);C(this,"directionalLights",new Map);C(this,"ambientLights",new Map)}dispose(){const t=this.components.get(Ce);for(const e of this.three.children){const s=e;s.geometry&&t.destroy(s)}this.deleteAllLights(),this.three.children=[],this.onDisposed.trigger(),this.onDisposed.reset()}deleteAllLights(){for(const[,t]of this.directionalLights)t.removeFromParent(),t.target.removeFromParent(),t.dispose();this.directionalLights.clear();for(const[,t]of this.ambientLights)t.removeFromParent(),t.dispose();this.ambientLights.clear()}}class ue extends Set{constructor(t){super(t);C(this,"onItemAdded",new j);C(this,"onItemDeleted",new j);C(this,"onCleared",new j);C(this,"guard",()=>!0)}clear(){super.clear(),this.onCleared.trigger()}add(...t){for(const e of t)this.has(e)||!this.guard(e)||(super.add(e),this.onItemAdded||(this.onItemAdded=new j),this.onItemAdded.trigger(e));return this}delete(t){const e=super.delete(t);return e&&this.onItemDeleted.trigger(),e}dispose(){this.clear(),this.onItemAdded.reset(),this.onItemDeleted.reset(),this.onCleared.reset()}}class se extends Map{constructor(t){super(t);C(this,"onItemSet",new j);C(this,"onItemUpdated",new j);C(this,"onItemDeleted",new j);C(this,"onCleared",new j);C(this,"guard",()=>!0)}clear(){super.clear(),this.onCleared.trigger()}set(t,e){const s=this.has(t);if(!(this.guard??(()=>!0))(t,e))return this;const o=super.set(t,e);return s?(this.onItemUpdated||(this.onItemUpdated=new j),this.onItemUpdated.trigger({key:t,value:e})):(this.onItemSet||(this.onItemSet=new j),this.onItemSet.trigger({key:t,value:e})),o}delete(t){const e=super.delete(t);return e&&this.onItemDeleted.trigger(t),e}dispose(){this.clear(),this.onItemSet.reset(),this.onItemDeleted.reset(),this.onCleared.reset()}}class Xa extends mt{}const cs=0,$a=1,Za=new y.Vector3,hr=new y.Line3,sn=new y.Plane,ur=new y.Vector3,Qi=new y.Triangle;class ja{constructor(){this.tolerance=-1,this.faces=[],this.newFaces=[],this.assigned=new fr,this.unassigned=new fr,this.vertices=[]}setFromPoints(i){if(i.length>=4){this.makeEmpty();for(let t=0,e=i.length;t<e;t++)this.vertices.push(new qa(i[t]));this.compute()}return this}setFromObject(i){const t=[];return i.updateMatrixWorld(!0),i.traverse(function(e){const s=e.geometry;if(s!==void 0){const n=s.attributes.position;if(n!==void 0)for(let r=0,o=n.count;r<o;r++){const a=new y.Vector3;a.fromBufferAttribute(n,r).applyMatrix4(e.matrixWorld),t.push(a)}}}),this.setFromPoints(t)}containsPoint(i){const t=this.faces;for(let e=0,s=t.length;e<s;e++)if(t[e].distanceToPoint(i)>this.tolerance)return!1;return!0}intersectRay(i,t){const e=this.faces;let s=-1/0,n=1/0;for(let r=0,o=e.length;r<o;r++){const a=e[r],l=a.distanceToPoint(i.origin),h=a.normal.dot(i.direction);if(l>0&&h>=0)return null;const f=h!==0?-l/h:0;if(!(f<=0)&&(h>0?n=Math.min(f,n):s=Math.max(f,s),s>n))return null}return s!==-1/0?i.at(s,t):i.at(n,t),t}intersectsRay(i){return this.intersectRay(i,Za)!==null}makeEmpty(){return this.faces=[],this.vertices=[],this}addVertexToFace(i,t){return i.face=t,t.outside===null?this.assigned.append(i):this.assigned.insertBefore(t.outside,i),t.outside=i,this}removeVertexFromFace(i,t){return i===t.outside&&(i.next!==null&&i.next.face===t?t.outside=i.next:t.outside=null),this.assigned.remove(i),this}removeAllVerticesFromFace(i){if(i.outside!==null){const t=i.outside;let e=i.outside;for(;e.next!==null&&e.next.face===i;)e=e.next;return this.assigned.removeSubList(t,e),t.prev=e.next=null,i.outside=null,t}}deleteFaceVertices(i,t){const e=this.removeAllVerticesFromFace(i);if(e!==void 0)if(t===void 0)this.unassigned.appendChain(e);else{let s=e;do{const n=s.next;t.distanceToPoint(s.point)>this.tolerance?this.addVertexToFace(s,t):this.unassigned.append(s),s=n}while(s!==null)}return this}resolveUnassignedPoints(i){if(this.unassigned.isEmpty()===!1){let t=this.unassigned.first();do{const e=t.next;let s=this.tolerance,n=null;for(let r=0;r<i.length;r++){const o=i[r];if(o.mark===cs){const a=o.distanceToPoint(t.point);if(a>s&&(s=a,n=o),s>1e3*this.tolerance)break}}n!==null&&this.addVertexToFace(t,n),t=e}while(t!==null)}return this}computeExtremes(){const i=new y.Vector3,t=new y.Vector3,e=[],s=[];for(let n=0;n<3;n++)e[n]=s[n]=this.vertices[0];i.copy(this.vertices[0].point),t.copy(this.vertices[0].point);for(let n=0,r=this.vertices.length;n<r;n++){const o=this.vertices[n],a=o.point;for(let l=0;l<3;l++)a.getComponent(l)<i.getComponent(l)&&(i.setComponent(l,a.getComponent(l)),e[l]=o);for(let l=0;l<3;l++)a.getComponent(l)>t.getComponent(l)&&(t.setComponent(l,a.getComponent(l)),s[l]=o)}return this.tolerance=3*Number.EPSILON*(Math.max(Math.abs(i.x),Math.abs(t.x))+Math.max(Math.abs(i.y),Math.abs(t.y))+Math.max(Math.abs(i.z),Math.abs(t.z))),{min:e,max:s}}computeInitialHull(){const i=this.vertices,t=this.computeExtremes(),e=t.min,s=t.max;let n=0,r=0;for(let I=0;I<3;I++){const u=s[I].point.getComponent(I)-e[I].point.getComponent(I);u>n&&(n=u,r=I)}const o=e[r],a=s[r];let l,h;n=0,hr.set(o.point,a.point);for(let I=0,u=this.vertices.length;I<u;I++){const d=i[I];if(d!==o&&d!==a){hr.closestPointToPoint(d.point,!0,ur);const E=ur.distanceToSquared(d.point);E>n&&(n=E,l=d)}}n=-1,sn.setFromCoplanarPoints(o.point,a.point,l.point);for(let I=0,u=this.vertices.length;I<u;I++){const d=i[I];if(d!==o&&d!==a&&d!==l){const E=Math.abs(sn.distanceToPoint(d.point));E>n&&(n=E,h=d)}}const f=[];if(sn.distanceToPoint(h.point)<0){f.push(te.create(o,a,l),te.create(h,a,o),te.create(h,l,a),te.create(h,o,l));for(let I=0;I<3;I++){const u=(I+1)%3;f[I+1].getEdge(2).setTwin(f[0].getEdge(u)),f[I+1].getEdge(1).setTwin(f[u+1].getEdge(0))}}else{f.push(te.create(o,l,a),te.create(h,o,a),te.create(h,a,l),te.create(h,l,o));for(let I=0;I<3;I++){const u=(I+1)%3;f[I+1].getEdge(2).setTwin(f[0].getEdge((3-I)%3)),f[I+1].getEdge(0).setTwin(f[u+1].getEdge(1))}}for(let I=0;I<4;I++)this.faces.push(f[I]);for(let I=0,u=i.length;I<u;I++){const d=i[I];if(d!==o&&d!==a&&d!==l&&d!==h){n=this.tolerance;let E=null;for(let T=0;T<4;T++){const p=this.faces[T].distanceToPoint(d.point);p>n&&(n=p,E=this.faces[T])}E!==null&&this.addVertexToFace(d,E)}}return this}reindexFaces(){const i=[];for(let t=0;t<this.faces.length;t++){const e=this.faces[t];e.mark===cs&&i.push(e)}return this.faces=i,this}nextVertexToAdd(){if(this.assigned.isEmpty()===!1){let i,t=0;const e=this.assigned.first().face;let s=e.outside;do{const n=e.distanceToPoint(s.point);n>t&&(t=n,i=s),s=s.next}while(s!==null&&s.face===e);return i}}computeHorizon(i,t,e,s){this.deleteFaceVertices(e),e.mark=$a;let n;t===null?n=t=e.getEdge(0):n=t.next;do{const r=n.twin,o=r.face;o.mark===cs&&(o.distanceToPoint(i)>this.tolerance?this.computeHorizon(i,r,o,s):s.push(n)),n=n.next}while(n!==t);return this}addAdjoiningFace(i,t){const e=te.create(i,t.tail(),t.head());return this.faces.push(e),e.getEdge(-1).setTwin(t.twin),e.getEdge(0)}addNewFaces(i,t){this.newFaces=[];let e=null,s=null;for(let n=0;n<t.length;n++){const r=t[n],o=this.addAdjoiningFace(i,r);e===null?e=o:o.next.setTwin(s),this.newFaces.push(o.face),s=o}return e.next.setTwin(s),this}addVertexToHull(i){const t=[];return this.unassigned.clear(),this.removeVertexFromFace(i,i.face),this.computeHorizon(i.point,null,i.face,t),this.addNewFaces(i,t),this.resolveUnassignedPoints(this.newFaces),this}cleanup(){return this.assigned.clear(),this.unassigned.clear(),this.newFaces=[],this}compute(){let i;for(this.computeInitialHull();(i=this.nextVertexToAdd())!==void 0;)this.addVertexToHull(i);return this.reindexFaces(),this.cleanup(),this}}class te{constructor(){this.normal=new y.Vector3,this.midpoint=new y.Vector3,this.area=0,this.constant=0,this.outside=null,this.mark=cs,this.edge=null}static create(i,t,e){const s=new te,n=new nn(i,s),r=new nn(t,s),o=new nn(e,s);return n.next=o.prev=r,r.next=n.prev=o,o.next=r.prev=n,s.edge=n,s.compute()}getEdge(i){let t=this.edge;for(;i>0;)t=t.next,i--;for(;i<0;)t=t.prev,i++;return t}compute(){const i=this.edge.tail(),t=this.edge.head(),e=this.edge.next.head();return Qi.set(i.point,t.point,e.point),Qi.getNormal(this.normal),Qi.getMidpoint(this.midpoint),this.area=Qi.getArea(),this.constant=this.normal.dot(this.midpoint),this}distanceToPoint(i){return this.normal.dot(i)-this.constant}}class nn{constructor(i,t){this.vertex=i,this.prev=null,this.next=null,this.twin=null,this.face=t}head(){return this.vertex}tail(){return this.prev?this.prev.vertex:null}length(){const i=this.head(),t=this.tail();return t!==null?t.point.distanceTo(i.point):-1}lengthSquared(){const i=this.head(),t=this.tail();return t!==null?t.point.distanceToSquared(i.point):-1}setTwin(i){return this.twin=i,i.twin=this,this}}class qa{constructor(i){this.point=i,this.prev=null,this.next=null,this.face=null}}class fr{constructor(){this.head=null,this.tail=null}first(){return this.head}last(){return this.tail}clear(){return this.head=this.tail=null,this}insertBefore(i,t){return t.prev=i.prev,t.next=i,t.prev===null?this.head=t:t.prev.next=t,i.prev=t,this}insertAfter(i,t){return t.prev=i,t.next=i.next,t.next===null?this.tail=t:t.next.prev=t,i.next=t,this}append(i){return this.head===null?this.head=i:this.tail.next=i,i.prev=this.tail,i.next=null,this.tail=i,this}appendChain(i){for(this.head===null?this.head=i:this.tail.next=i,i.prev=this.tail;i.next!==null;)i=i.next;return this.tail=i,this}remove(i){return i.prev===null?this.head=i.next:i.prev.next=i.next,i.next===null?this.tail=i.prev:i.next.prev=i.prev,this}removeSubList(i,t){return i.prev===null?this.head=t.next:i.prev.next=t.next,t.next===null?this.tail=i.prev:t.next.prev=i.prev,this}isEmpty(){return this.head===null}}const Rn=[2,2,1],gn=[1,0,0];function le(c,i){return c*3+i}function Qa(c){const i=c.elements;let t=0;for(let e=0;e<9;e++)t+=i[e]*i[e];return Math.sqrt(t)}function Ka(c){const i=c.elements;let t=0;for(let e=0;e<3;e++){const s=i[le(Rn[e],gn[e])];t+=2*s*s}return Math.sqrt(t)}function Ja(c,i){let t=0,e=1;const s=c.elements;for(let l=0;l<3;l++){const h=Math.abs(s[le(Rn[l],gn[l])]);h>t&&(t=h,e=l)}let n=1,r=0;const o=gn[e],a=Rn[e];if(Math.abs(s[le(a,o)])>Number.EPSILON){const l=s[le(a,a)],h=s[le(o,o)],f=s[le(a,o)],I=(l-h)/2/f;let u;I<0?u=-1/(-I+Math.sqrt(1+I*I)):u=1/(I+Math.sqrt(1+I*I)),n=1/Math.sqrt(1+u*u),r=u*n}return i.identity(),i.elements[le(o,o)]=n,i.elements[le(a,a)]=n,i.elements[le(a,o)]=r,i.elements[le(o,a)]=-r,i}function tc(c,i){let t=0,e=0;const s=10;i.unitary.identity(),i.diagonal.copy(c);const n=i.unitary,r=i.diagonal,o=new b.Matrix3,a=new b.Matrix3,l=Number.EPSILON*Qa(r);for(;e<s&&Ka(r)>l;)Ja(r,o),a.copy(o).transpose(),r.multiply(o),r.premultiply(a),n.multiply(o),++t>2&&(e++,t=0);return i}function kr(c){const i=[];for(let ot=0;ot<c.length-2;ot+=3){const ft=c[ot],ut=c[ot+1],Ct=c[ot+2];i.push(new b.Vector3(ft,ut,Ct))}const t=new ja;t.setFromPoints(i);const e={unitary:new b.Matrix3,diagonal:new b.Matrix3},s=t.faces,n=[],r=[];for(let ot=0,ft=s.length;ot<ft;ot++){const ut=s[ot];let Ct=ut.edge;n.length=0;do n.push(Ct),Ct=Ct.next;while(Ct!==ut.edge);const zt=n.length-2;for(let wt=1,A=zt;wt<=A;wt++){const $=n[0].vertex,H=n[wt+0].vertex,M=n[wt+1].vertex;r.push($.point.x,$.point.y,$.point.z),r.push(H.point.x,H.point.y,H.point.z),r.push(M.point.x,M.point.y,M.point.z)}}const o=new b.Vector3,a=new b.Vector3,l=new b.Vector3,h=new b.Vector3,f=new b.Vector3,I=new b.Vector3,u=new b.Vector3,d=new b.Vector3;let E=0,T=0,p=0,m=0,F=0,R=0,S=0;for(let ot=0,ft=r.length;ot<ft;ot+=9){o.fromArray(r,ot),a.fromArray(r,ot+3),l.fromArray(r,ot+6),u.set(0,0,0),u.add(o).add(a).add(l).divideScalar(3),h.subVectors(a,o),f.subVectors(l,o);const ut=I.crossVectors(h,f).length()/2;d.add(I.copy(u).multiplyScalar(ut)),E+=ut,T+=(9*u.x*u.x+o.x*o.x+a.x*a.x+l.x*l.x)*(ut/12),p+=(9*u.x*u.y+o.x*o.y+a.x*a.y+l.x*l.y)*(ut/12),m+=(9*u.x*u.z+o.x*o.z+a.x*a.z+l.x*l.z)*(ut/12),F+=(9*u.y*u.y+o.y*o.y+a.y*a.y+l.y*l.y)*(ut/12),R+=(9*u.y*u.z+o.y*o.z+a.y*a.z+l.y*l.z)*(ut/12),S+=(9*u.z*u.z+o.z*o.z+a.z*a.z+l.z*l.z)*(ut/12)}d.divideScalar(E),T/=E,p/=E,m/=E,F/=E,R/=E,S/=E,T-=d.x*d.x,p-=d.x*d.y,m-=d.x*d.z,F-=d.y*d.y,R-=d.y*d.z,S-=d.z*d.z;const N=new b.Matrix3;N.elements[0]=T,N.elements[1]=p,N.elements[2]=m,N.elements[3]=p,N.elements[4]=F,N.elements[5]=R,N.elements[6]=m,N.elements[7]=R,N.elements[8]=S,tc(N,e);const L=e.unitary,D=new b.Vector3,P=new b.Vector3,v=new b.Vector3;L.extractBasis(D,P,v);let z=-1/0,O=-1/0,w=-1/0,g=1/0,U=1/0,q=1/0;for(let ot=0,ft=i.length;ot<ft;ot++){const ut=i[ot];z=Math.max(D.dot(ut),z),O=Math.max(P.dot(ut),O),w=Math.max(v.dot(ut),w),g=Math.min(D.dot(ut),g),U=Math.min(P.dot(ut),U),q=Math.min(v.dot(ut),q)}D.multiplyScalar(.5*(g+z)),P.multiplyScalar(.5*(U+O)),v.multiplyScalar(.5*(q+w));const Y=new b.Vector3,et=new b.Vector3,X=new b.Matrix3;Y.add(D).add(P).add(v),et.x=z-g,et.y=O-U,et.z=w-q,et.multiplyScalar(.5),X.copy(L);const{x:nt,y:G,z:B}=et,rt=new b.Matrix4;rt.makeScale(nt*2,G*2,B*2);const it=new b.Matrix4;it.makeTranslation(-nt,-G,-B);const tt=new b.Matrix4;tt.makeTranslation(Y.x,Y.y,Y.z);const Ft=new b.Matrix4;Ft.setFromMatrix3(X);const Nt=new b.Matrix4;return Nt.multiply(tt),Nt.multiply(Ft),Nt.multiply(it),Nt.multiply(rt),{center:Y,halfSizes:et,rotation:X,transformation:Nt}}function ec(c,i,t){const e=[c[0]-i[0],c[1]-i[1],c[2]-i[2]];return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]>0}class An{static isTransparent(i){return i.transparent&&i.opacity<1}}const Lt=class Lt{static create(){const i=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,s=Math.random()*4294967295|0;return`${Lt._lut[i&255]+Lt._lut[i>>8&255]+Lt._lut[i>>16&255]+Lt._lut[i>>24&255]}-${Lt._lut[t&255]}${Lt._lut[t>>8&255]}-${Lt._lut[t>>16&15|64]}${Lt._lut[t>>24&255]}-${Lt._lut[e&63|128]}${Lt._lut[e>>8&255]}-${Lt._lut[e>>16&255]}${Lt._lut[e>>24&255]}${Lt._lut[s&255]}${Lt._lut[s>>8&255]}${Lt._lut[s>>16&255]}${Lt._lut[s>>24&255]}`.toLowerCase()}static validate(i){if(!Lt._pattern.test(i))throw new Error(`${i} is not a valid UUID v4.
|
|
2
2
|
|
|
3
3
|
- If you're the tool creator, you can take one from https://www.uuidgenerator.net/.
|
|
4
4
|
|
|
5
|
-
- If you're using a platform tool, verify the uuid isn't misspelled or contact the tool creator.`)}};g(Ot,"_pattern",/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/),g(Ot,"_lut",["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"]);let he=Ot;class ba extends At{constructor(t,s){super(t);g(this,"onDisposed",new Q);g(this,"onVertexFound",new Q);g(this,"onVertexLost",new Q);g(this,"onEnabled",new Q);g(this,"components");g(this,"workingPlane",null);g(this,"_pickedPoint",null);g(this,"_config");g(this,"_enabled",!1);this.components=t,this.config={snapDistance:.25,showOnlyVertex:!1,...s},this.enabled=!1}set enabled(t){this._enabled=t,t||(this._pickedPoint=null),this.onEnabled.trigger(t)}get enabled(){return this._enabled}set config(t){this._config={...this._config,...t}}get config(){return this._config}dispose(){this.onVertexFound.reset(),this.onVertexLost.reset(),this.components=null,this.onDisposed.trigger(),this.onDisposed.reset()}get(t){if(!this.enabled)return this._pickedPoint;const n=this.components.get(Ne).get(t).castRay();if(!n)return this._pickedPoint!==null&&(this.onVertexLost.trigger(),this._pickedPoint=null),this._pickedPoint;const r=this.getClosestVertex(n);return r?(this.workingPlane?Math.abs(this.workingPlane.distanceToPoint(r))<.001:!0)?((this._pickedPoint===null||!this._pickedPoint.equals(r))&&(this._pickedPoint=r.clone(),this.onVertexFound.trigger(this._pickedPoint)),this._pickedPoint):(this._pickedPoint=null,this._pickedPoint):(this._pickedPoint!==null&&(this.onVertexLost.trigger(),this._pickedPoint=null),this._pickedPoint)}getClosestVertex(t){let s=new M.Vector3,i=!1,n=Number.MAX_SAFE_INTEGER;const r=this.getVertices(t);if(r===null)return null;for(const o of r){if(!o)continue;const a=t.point.distanceTo(o);a>n||a>this._config.snapDistance||(i=!0,s=o,n=t.point.distanceTo(o))}return i?s:this.config.showOnlyVertex?null:t.point}getVertices(t){const s=t.object;if(!t.face||!s)return null;const i=s.geometry,n=new M.Matrix4,{instanceId:r}=t,o=r!==void 0,a=s instanceof M.InstancedMesh;return a&&o&&s.getMatrixAt(r,n),[this.getVertex(t.face.a,i),this.getVertex(t.face.b,i),this.getVertex(t.face.c,i)].map(l=>(l&&(a&&o&&l.applyMatrix4(n),l.applyMatrix4(s.matrixWorld)),l))}getVertex(t,s){if(t===void 0)return null;const i=s.attributes.position;return new M.Vector3(i.getX(t),i.getY(t),i.getZ(t))}}const hi=class hi{constructor(){g(this,"onDisposed",new Q);g(this,"list",new Map);g(this,"enabled",!1);g(this,"_clock");g(this,"update",()=>{if(!this.enabled)return;const e=this._clock.getDelta();for(const[t,s]of this.list)s.enabled&&s.isUpdateable()&&s.update(e);requestAnimationFrame(this.update)});this._clock=new M.Clock,hi.setupBVH()}add(e,t){if(this.list.has(e))throw new Error("You're trying to add a component that already exists in the components instance. Use Components.get() instead.");he.validate(e),this.list.set(e,t)}get(e){const t=e.uuid;if(!this.list.has(t)){const s=new e(this);return this.list.has(t)||this.add(t,s),s}return this.list.get(t)}init(){this.enabled=!0,this._clock.start(),this.update()}dispose(){this.enabled=!1;for(const[e,t]of this.list)t.enabled=!1,t.isDisposeable()&&t.dispose();this._clock.stop(),this.onDisposed.trigger(),this.onDisposed.reset()}static setupBVH(){M.BufferGeometry.prototype.computeBoundsTree=ga,M.BufferGeometry.prototype.disposeBoundsTree=Ca,M.Mesh.prototype.raycast=Ia}};g(hi,"release","2.3.0-alpha.1");let ei=hi;class Or extends Fi{constructor(){super(...arguments);g(this,"meshes",new Set);g(this,"onAfterUpdate",new Q);g(this,"onBeforeUpdate",new Q);g(this,"onDisposed",new Q);g(this,"isDisposing",!1);g(this,"enabled",!0);g(this,"uuid",he.create());g(this,"name");g(this,"_scene");g(this,"_camera");g(this,"_renderer",null)}get scene(){if(!this._scene)throw new Error("No scene initialized!");return this._scene}set scene(t){this._scene=t,t.worlds.set(this.uuid,this),t.currentWorld=this,t.onWorldChanged.trigger({world:this,action:"added"})}get camera(){if(!this._camera)throw new Error("No camera initialized!");return this._camera}set camera(t){this._camera=t,t.worlds.set(this.uuid,this),t.currentWorld=this,t.onWorldChanged.trigger({world:this,action:"added"})}get renderer(){return this._renderer}set renderer(t){this._renderer=t,t&&(t.worlds.set(this.uuid,this),t.currentWorld=this,t.onWorldChanged.trigger({world:this,action:"added"}))}update(t){this.enabled&&(!this._scene||!this._camera||(this.scene.currentWorld=this,this.camera.currentWorld=this,this.renderer&&(this.renderer.currentWorld=this),this.onBeforeUpdate.trigger(),this.scene.isUpdateable()&&this.scene.update(t),this.camera.isUpdateable()&&this.camera.update(t),this.renderer&&this.renderer.update(t),this.onAfterUpdate.trigger()))}dispose(t=!0){if(this.enabled=!1,this.isDisposing=!0,this.scene.onWorldChanged.trigger({world:this,action:"removed"}),this.camera.onWorldChanged.trigger({world:this,action:"removed"}),this.renderer&&this.renderer.onWorldChanged.trigger({world:this,action:"removed"}),t){const s=this.components.get(le);this.scene.dispose(),this.camera.isDisposeable()&&this.camera.dispose(),this.renderer&&this.renderer.dispose();for(const i of this.meshes)s.destroy(i);this.meshes.clear()}this._scene=null,this._camera=null,this._renderer=null,this.onDisposed.trigger()}}class Pe{constructor(e,t,s){g(this,"_component");g(this,"name");this._component=e,this.name=s,t.get($t).list.add(this)}get controls(){const e={};for(const t in this._config){const s=this._config[t];e[t]=this.copyEntry(s)}return e}copyEntry(e){if(e.type==="Boolean"){const t=e;return{type:t.type,value:t.value}}if(e.type==="Color"){const t=e;return{type:t.type,value:t.value.clone()}}if(e.type==="Text"){const t=e;return{type:t.type,value:t.value}}if(e.type==="Number"){const t=e;return{type:t.type,value:t.value,min:t.min,max:t.max,interpolable:t.interpolable}}if(e.type==="Select"){const t=e;return{type:t.type,value:t.value,multiple:t.multiple,options:new Set(t.options)}}if(e.type==="Vector3"){const t=e;return{type:t.type,value:t.value.clone()}}if(e.type==="TextSet"){const t=e;return{type:t.type,value:new Set(t.value)}}if(e.type==="None"){const t=e;return{type:t.type,value:t.value}}throw new Error("Invalid entry!")}}const ui=class ui extends At{constructor(t){super(t);g(this,"list",new Se);g(this,"enabled",!0);t.add(ui.uuid,this)}};g(ui,"uuid","b8c764e0-6b24-4e77-9a32-35fa728ee5b4");let $t=ui;class Pa{constructor(e,t){g(this,"_list");g(this,"_scene");this._list=e,this._scene=t}get color(){return this._list.directionalLight.color.value}set color(e){this._list.directionalLight.color.value=e;for(const[,t]of this._scene.directionalLights)t.color.copy(e)}get intensity(){return this._list.directionalLight.intensity.value}set intensity(e){this._list.directionalLight.intensity.value=e;for(const[,t]of this._scene.directionalLights)t.intensity=e}get position(){return this._list.directionalLight.position.value.clone()}set position(e){this._list.directionalLight.position.value=e;for(const[,t]of this._scene.directionalLights)t.position.copy(e)}}class La{constructor(e,t){g(this,"_list");g(this,"_scene");this._list=e,this._scene=t}get color(){return this._list.ambientLight.color.value}set color(e){this._list.ambientLight.color.value=e;for(const[,t]of this._scene.ambientLights)t.color.copy(e)}get intensity(){return this._list.ambientLight.intensity.value}set intensity(e){this._list.ambientLight.intensity.value=e;for(const[,t]of this._scene.ambientLights)t.intensity=e}}class Nr extends Pe{constructor(){super(...arguments);g(this,"_config",{backgroundColor:{value:new M.Color,type:"Color"},ambientLight:{color:{type:"Color",value:new M.Color},intensity:{type:"Number",interpolable:!0,min:0,max:10,value:2}},directionalLight:{color:{type:"Color",value:new M.Color},intensity:{type:"Number",interpolable:!0,min:0,max:10,value:2},position:{type:"Vector3",value:new M.Vector3}}});g(this,"ambientLight",new La(this._config,this._component));g(this,"directionalLight",new Pa(this._config,this._component))}get backgroundColor(){return this._config.backgroundColor.value}set backgroundColor(t){this._config.backgroundColor.value=t,this._component.three.background=t}}class br extends Fr{constructor(t){super(t);g(this,"onSetup",new Q);g(this,"isSetup",!1);g(this,"three");g(this,"config",new Nr(this,this.components,"Scene"));g(this,"_defaultConfig",{backgroundColor:new M.Color(2107698),directionalLight:{color:new M.Color("white"),intensity:1.5,position:new M.Vector3(5,10,3)},ambientLight:{color:new M.Color("white"),intensity:1}});this.three=new M.Scene,this.three.background=new M.Color(2107698),this.components.get($t).list.add(this.config)}setup(t){const s={...this._defaultConfig,...t};this.config.backgroundColor=s.backgroundColor;const i=s.ambientLight;this.config.ambientLight.color=i.color,this.config.ambientLight.intensity=i.intensity;const n=s.directionalLight;this.config.directionalLight.color=n.color,this.config.directionalLight.intensity=n.intensity,this.config.directionalLight.position=n.position,this.deleteAllLights();const{color:r,intensity:o}=this.config.directionalLight,a=new M.DirectionalLight(r,o);a.position.copy(n.position);const{color:l,intensity:h}=this.config.directionalLight,u=new M.AmbientLight(l,h);this.three.add(a,u),this.directionalLights.set(a.uuid,a),this.ambientLights.set(u.uuid,u),this.isSetup=!0,this.onSetup.trigger()}dispose(){super.dispose(),this.components.get($t).list.delete(this.config)}}class va extends wr{constructor(t,s,i){super(t);g(this,"enabled",!0);g(this,"container");g(this,"three");g(this,"_canvas");g(this,"_parameters");g(this,"_resizeObserver",null);g(this,"onContainerUpdated",new Q);g(this,"_resizing",!1);g(this,"resize",t=>{if(this._resizing)return;this._resizing=!0,this.onContainerUpdated.trigger();const s=t?t.x:this.container.clientWidth,i=t?t.y:this.container.clientHeight;this.three.setSize(s,i),this.onResize.trigger(new M.Vector2(s,i)),this._resizing=!1});g(this,"resizeEvent",()=>{this.resize()});g(this,"onContextLost",t=>{t.preventDefault(),this.enabled=!1});g(this,"onContextBack",()=>{this.three.setRenderTarget(null),this.three.dispose(),this.three=new M.WebGLRenderer({canvas:this._canvas,antialias:!0,alpha:!0,...this._parameters}),this.enabled=!0});this.container=s,this._parameters=i,this.three=new M.WebGLRenderer({antialias:!0,alpha:!0,...i}),this.three.setPixelRatio(Math.min(window.devicePixelRatio,2)),this.setupRenderer(),this.setupEvents(!0),this.resize(),this._canvas=this.three.domElement;const n=this.three.getContext(),{canvas:r}=n;r.addEventListener("webglcontextlost",this.onContextLost,!1),r.addEventListener("webglcontextrestored",this.onContextBack,!1)}update(){if(!this.enabled||!this.currentWorld)return;this.onBeforeUpdate.trigger(this);const t=this.currentWorld.scene.three,s=this.currentWorld.camera.three;this.three.render(t,s),this.onAfterUpdate.trigger(this)}dispose(){this.enabled=!1,this.setupEvents(!1),this.three.domElement.remove(),this.three.forceContextLoss(),this.three.dispose(),this.onResize.reset(),this.onAfterUpdate.reset(),this.onBeforeUpdate.reset(),this.onDisposed.trigger(),this.onDisposed.reset()}getSize(){return new M.Vector2(this.three.domElement.clientWidth,this.three.domElement.clientHeight)}setupEvents(t){const s=this.three.domElement.parentElement;if(!s)throw new Error("This renderer needs to have an HTML container!");this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=null),window.removeEventListener("resize",this.resizeEvent),t&&(this._resizeObserver=new ResizeObserver(this.resizeEvent),this._resizeObserver.observe(s),window.addEventListener("resize",this.resizeEvent))}setupRenderer(){this.three.localClippingEnabled=!0,this.container&&this.container.appendChild(this.three.domElement),this.onContainerUpdated.trigger()}}/*!
|
|
5
|
+
- If you're using a platform tool, verify the uuid isn't misspelled or contact the tool creator.`)}};C(Lt,"_pattern",/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/),C(Lt,"_lut",["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"]);let ne=Lt;class ic extends mt{constructor(t,e){super(t);C(this,"onDisposed",new j);C(this,"onVertexFound",new j);C(this,"onVertexLost",new j);C(this,"onEnabled",new j);C(this,"components");C(this,"workingPlane",null);C(this,"_pickedPoint",null);C(this,"_config");C(this,"_enabled",!1);this.components=t,this.config={snapDistance:.25,showOnlyVertex:!1,...e},this.enabled=!1}set enabled(t){this._enabled=t,t||(this._pickedPoint=null),this.onEnabled.trigger(t)}get enabled(){return this._enabled}set config(t){this._config={...this._config,...t}}get config(){return this._config}dispose(){this.onVertexFound.reset(),this.onVertexLost.reset(),this.components=null,this.onDisposed.trigger(),this.onDisposed.reset()}get(t){if(!this.enabled)return this._pickedPoint;const n=this.components.get(be).get(t).castRay();if(!n)return this._pickedPoint!==null&&(this.onVertexLost.trigger(),this._pickedPoint=null),this._pickedPoint;const r=this.getClosestVertex(n);return r?(this.workingPlane?Math.abs(this.workingPlane.distanceToPoint(r))<.001:!0)?((this._pickedPoint===null||!this._pickedPoint.equals(r))&&(this._pickedPoint=r.clone(),this.onVertexFound.trigger(this._pickedPoint)),this._pickedPoint):(this._pickedPoint=null,this._pickedPoint):(this._pickedPoint!==null&&(this.onVertexLost.trigger(),this._pickedPoint=null),this._pickedPoint)}getClosestVertex(t){let e=new b.Vector3,s=!1,n=Number.MAX_SAFE_INTEGER;const r=this.getVertices(t);if(r===null)return null;for(const o of r){if(!o)continue;const a=t.point.distanceTo(o);a>n||a>this._config.snapDistance||(s=!0,e=o,n=t.point.distanceTo(o))}return s?e:this.config.showOnlyVertex?null:t.point}getVertices(t){const e=t.object;if(!t.face||!e)return null;const s=e.geometry,n=new b.Matrix4,{instanceId:r}=t,o=r!==void 0,a=e instanceof b.InstancedMesh;return a&&o&&e.getMatrixAt(r,n),[this.getVertex(t.face.a,s),this.getVertex(t.face.b,s),this.getVertex(t.face.c,s)].map(l=>(l&&(a&&o&&l.applyMatrix4(n),l.applyMatrix4(e.matrixWorld)),l))}getVertex(t,e){if(t===void 0)return null;const s=e.attributes.position;return new b.Vector3(s.getX(t),s.getY(t),s.getZ(t))}}const ms=class ms{constructor(){C(this,"onDisposed",new j);C(this,"list",new Map);C(this,"enabled",!1);C(this,"_clock");C(this,"onInit",new j);C(this,"update",()=>{if(!this.enabled)return;const i=this._clock.getDelta();for(const[t,e]of this.list)e.enabled&&e.isUpdateable()&&e.update(i);requestAnimationFrame(this.update)});this._clock=new b.Clock,ms.setupBVH()}add(i,t){if(this.list.has(i))throw new Error("You're trying to add a component that already exists in the components instance. Use Components.get() instead.");ne.validate(i),this.list.set(i,t)}get(i){const t=i.uuid;if(!this.list.has(t)){const e=new i(this);return this.list.has(t)||this.add(t,e),e}return this.list.get(t)}init(){this.enabled=!0,this._clock.start(),this.update(),this.onInit.trigger()}dispose(){this.enabled=!1;for(const[i,t]of this.list)t.enabled=!1,t.isDisposeable()&&t.dispose();this._clock.stop(),this.onDisposed.trigger(),this.onDisposed.reset()}static setupBVH(){b.BufferGeometry.prototype.computeBoundsTree=Ha,b.BufferGeometry.prototype.disposeBoundsTree=Wa,b.Mesh.prototype.raycast=ka}};C(ms,"release","2.3.0");let yi=ms;class Hr extends Vs{constructor(){super(...arguments);C(this,"meshes",new Set);C(this,"onAfterUpdate",new j);C(this,"onBeforeUpdate",new j);C(this,"onDisposed",new j);C(this,"isDisposing",!1);C(this,"enabled",!0);C(this,"uuid",ne.create());C(this,"name");C(this,"_scene");C(this,"_camera");C(this,"_renderer",null)}get scene(){if(!this._scene)throw new Error("No scene initialized!");return this._scene}set scene(t){this._scene=t,t.worlds.set(this.uuid,this),t.currentWorld=this,t.onWorldChanged.trigger({world:this,action:"added"})}get camera(){if(!this._camera)throw new Error("No camera initialized!");return this._camera}set camera(t){this._camera=t,t.worlds.set(this.uuid,this),t.currentWorld=this,t.onWorldChanged.trigger({world:this,action:"added"})}get renderer(){return this._renderer}set renderer(t){this._renderer=t,t&&(t.worlds.set(this.uuid,this),t.currentWorld=this,t.onWorldChanged.trigger({world:this,action:"added"}))}update(t){this.enabled&&(!this._scene||!this._camera||(this.scene.currentWorld=this,this.camera.currentWorld=this,this.renderer&&(this.renderer.currentWorld=this),this.onBeforeUpdate.trigger(),this.scene.isUpdateable()&&this.scene.update(t),this.camera.isUpdateable()&&this.camera.update(t),this.renderer&&this.renderer.update(t),this.onAfterUpdate.trigger()))}dispose(t=!0){if(this.enabled=!1,this.isDisposing=!0,this.scene.onWorldChanged.trigger({world:this,action:"removed"}),this.camera.onWorldChanged.trigger({world:this,action:"removed"}),this.renderer&&this.renderer.onWorldChanged.trigger({world:this,action:"removed"}),t){const s=this.components.get(Ce);this.scene.dispose(),this.camera.isDisposeable()&&this.camera.dispose(),this.renderer&&this.renderer.dispose();for(const n of this.meshes)s.destroy(n);this.meshes.clear()}this._scene=null,this._camera=null,this._renderer=null,this.components.get(Li).list.delete(this.uuid),this.onDisposed.trigger(),this.onDisposed.reset()}}class Oe{constructor(i,t,e){C(this,"_component");C(this,"name");this._component=i,this.name=e,t.get(Gt).list.add(this)}get controls(){const i={};for(const t in this._config){const e=this._config[t];i[t]=this.copyEntry(e)}return i}copyEntry(i){if(i.type==="Boolean"){const t=i;return{type:t.type,value:t.value}}if(i.type==="Color"){const t=i;return{type:t.type,value:t.value.clone()}}if(i.type==="Text"){const t=i;return{type:t.type,value:t.value}}if(i.type==="Number"){const t=i;return{type:t.type,value:t.value,min:t.min,max:t.max,interpolable:t.interpolable}}if(i.type==="Select"){const t=i;return{type:t.type,value:t.value,multiple:t.multiple,options:new Set(t.options)}}if(i.type==="Vector3"){const t=i;return{type:t.type,value:t.value.clone()}}if(i.type==="TextSet"){const t=i;return{type:t.type,value:new Set(t.value)}}if(i.type==="None"){const t=i;return{type:t.type,value:t.value}}throw new Error("Invalid entry!")}}const Rs=class Rs extends mt{constructor(t){super(t);C(this,"list",new ue);C(this,"enabled",!0);t.add(Rs.uuid,this)}};C(Rs,"uuid","b8c764e0-6b24-4e77-9a32-35fa728ee5b4");let Gt=Rs;class sc{constructor(i,t){C(this,"_list");C(this,"_scene");this._list=i,this._scene=t}get color(){return this._list.directionalLight.color.value}set color(i){this._list.directionalLight.color.value=i;for(const[,t]of this._scene.directionalLights)t.color.copy(i)}get intensity(){return this._list.directionalLight.intensity.value}set intensity(i){this._list.directionalLight.intensity.value=i;for(const[,t]of this._scene.directionalLights)t.intensity=i}get position(){return this._list.directionalLight.position.value.clone()}set position(i){this._list.directionalLight.position.value=i;for(const[,t]of this._scene.directionalLights)t.position.copy(i)}}class nc{constructor(i,t){C(this,"_list");C(this,"_scene");this._list=i,this._scene=t}get color(){return this._list.ambientLight.color.value}set color(i){this._list.ambientLight.color.value=i;for(const[,t]of this._scene.ambientLights)t.color.copy(i)}get intensity(){return this._list.ambientLight.intensity.value}set intensity(i){this._list.ambientLight.intensity.value=i;for(const[,t]of this._scene.ambientLights)t.intensity=i}}class Wr extends Oe{constructor(){super(...arguments);C(this,"_config",{backgroundColor:{value:new b.Color,type:"Color"},ambientLight:{color:{type:"Color",value:new b.Color},intensity:{type:"Number",interpolable:!0,min:0,max:10,value:2}},directionalLight:{color:{type:"Color",value:new b.Color},intensity:{type:"Number",interpolable:!0,min:0,max:10,value:2},position:{type:"Vector3",value:new b.Vector3}}});C(this,"ambientLight",new nc(this._config,this._component));C(this,"directionalLight",new sc(this._config,this._component))}get backgroundColor(){return this._config.backgroundColor.value}set backgroundColor(t){this._config.backgroundColor.value=t,this._component.three.background=t}}class Xr extends zr{constructor(t){super(t);C(this,"onSetup",new j);C(this,"isSetup",!1);C(this,"three");C(this,"config",new Wr(this,this.components,"Scene"));C(this,"_defaultConfig",{backgroundColor:new b.Color(2107698),directionalLight:{color:new b.Color("white"),intensity:1.5,position:new b.Vector3(5,10,3)},ambientLight:{color:new b.Color("white"),intensity:1}});this.three=new b.Scene,this.three.background=new b.Color(2107698),this.components.get(Gt).list.add(this.config)}setup(t){const e={...this._defaultConfig,...t};this.config.backgroundColor=e.backgroundColor;const s=e.ambientLight;this.config.ambientLight.color=s.color,this.config.ambientLight.intensity=s.intensity;const n=e.directionalLight;this.config.directionalLight.color=n.color,this.config.directionalLight.intensity=n.intensity,this.config.directionalLight.position=n.position,this.deleteAllLights();const{color:r,intensity:o}=this.config.directionalLight,a=new b.DirectionalLight(r,o);a.position.copy(n.position);const{color:l,intensity:h}=this.config.directionalLight,f=new b.AmbientLight(l,h);this.three.add(a,f),this.directionalLights.set(a.uuid,a),this.ambientLights.set(f.uuid,f),this.isSetup=!0,this.onSetup.trigger()}dispose(){super.dispose(),this.components.get(Gt).list.delete(this.config)}}class rc extends Gr{constructor(t,e,s){super(t);C(this,"enabled",!0);C(this,"container");C(this,"three");C(this,"_canvas");C(this,"_parameters");C(this,"_resizeObserver",null);C(this,"onContainerUpdated",new j);C(this,"_resizing",!1);C(this,"resize",t=>{if(this._resizing)return;this._resizing=!0,this.onContainerUpdated.trigger();const e=t?t.x:this.container.clientWidth,s=t?t.y:this.container.clientHeight;this.three.setSize(e,s),this.onResize.trigger(new b.Vector2(e,s)),this._resizing=!1});C(this,"resizeEvent",()=>{this.resize()});C(this,"onContextLost",t=>{t.preventDefault(),this.enabled=!1});C(this,"onContextBack",()=>{this.three.setRenderTarget(null),this.three.dispose(),this.three=new b.WebGLRenderer({canvas:this._canvas,antialias:!0,alpha:!0,...this._parameters}),this.enabled=!0});this.container=e,this._parameters=s,this.three=new b.WebGLRenderer({antialias:!0,alpha:!0,...s}),this.three.setPixelRatio(Math.min(window.devicePixelRatio,2)),this.setupRenderer(),this.setupEvents(!0),this.resize(),this._canvas=this.three.domElement;const n=this.three.getContext(),{canvas:r}=n;r.addEventListener("webglcontextlost",this.onContextLost,!1),r.addEventListener("webglcontextrestored",this.onContextBack,!1)}update(){if(!this.enabled||!this.currentWorld)return;this.onBeforeUpdate.trigger(this);const t=this.currentWorld.scene.three,e=this.currentWorld.camera.three;this.three.render(t,e),this.onAfterUpdate.trigger(this)}dispose(){this.enabled=!1,this.setupEvents(!1),this.three.domElement.remove(),this.three.forceContextLoss(),this.three.dispose(),this.onResize.reset(),this.onAfterUpdate.reset(),this.onBeforeUpdate.reset(),this.onDisposed.trigger(),this.onDisposed.reset()}getSize(){return new b.Vector2(this.three.domElement.clientWidth,this.three.domElement.clientHeight)}setupEvents(t){const e=this.three.domElement.parentElement;if(!e)throw new Error("This renderer needs to have an HTML container!");this._resizeObserver&&(this._resizeObserver.disconnect(),this._resizeObserver=null),window.removeEventListener("resize",this.resizeEvent),t&&(this._resizeObserver=new ResizeObserver(this.resizeEvent),this._resizeObserver.observe(e),window.addEventListener("resize",this.resizeEvent))}setupRenderer(){this.three.localClippingEnabled=!0,this.container&&this.container.appendChild(this.three.domElement),this.onContainerUpdated.trigger()}}/*!
|
|
6
6
|
* camera-controls
|
|
7
7
|
* https://github.com/yomotsu/camera-controls
|
|
8
8
|
* (c) 2017 @yomotsu
|
|
9
9
|
* Released under the MIT License.
|
|
10
|
-
*/const lt={LEFT:1,RIGHT:2,MIDDLE:4},H=Object.freeze({NONE:0,ROTATE:1,TRUCK:2,OFFSET:4,DOLLY:8,ZOOM:16,TOUCH_ROTATE:32,TOUCH_TRUCK:64,TOUCH_OFFSET:128,TOUCH_DOLLY:256,TOUCH_ZOOM:512,TOUCH_DOLLY_TRUCK:1024,TOUCH_DOLLY_OFFSET:2048,TOUCH_DOLLY_ROTATE:4096,TOUCH_ZOOM_TRUCK:8192,TOUCH_ZOOM_OFFSET:16384,TOUCH_ZOOM_ROTATE:32768}),Ge={NONE:0,IN:1,OUT:-1};function _e(c){return c.isPerspectiveCamera}function fe(c){return c.isOrthographicCamera}const Ye=Math.PI*2,Kn=Math.PI/2,Pr=1e-5,rs=Math.PI/180;function Qt(c,e,t){return Math.max(e,Math.min(t,c))}function Ct(c,e=Pr){return Math.abs(c)<e}function Et(c,e,t=Pr){return Ct(c-e,t)}function Jn(c,e){return Math.round(c/e)*e}function os(c){return isFinite(c)?c:c<0?-Number.MAX_VALUE:Number.MAX_VALUE}function as(c){return Math.abs(c)<Number.MAX_VALUE?c:c*(1/0)}function Gs(c,e,t,s,i=1/0,n){s=Math.max(1e-4,s);const r=2/s,o=r*n,a=1/(1+o+.48*o*o+.235*o*o*o);let l=c-e;const h=e,u=i*s;l=Qt(l,-u,u),e=c-l;const d=(t.value+r*l)*n;t.value=(t.value-r*d)*a;let f=e+(l+d)*a;return h-c>0==f>h&&(f=h,t.value=(f-h)/n),f}function tr(c,e,t,s,i=1/0,n,r){s=Math.max(1e-4,s);const o=2/s,a=o*n,l=1/(1+a+.48*a*a+.235*a*a*a);let h=e.x,u=e.y,d=e.z,f=c.x-h,E=c.y-u,p=c.z-d;const I=h,m=u,_=d,R=i*s,C=R*R,y=f*f+E*E+p*p;if(y>C){const D=Math.sqrt(y);f=f/D*R,E=E/D*R,p=p/D*R}h=c.x-f,u=c.y-E,d=c.z-p;const F=(t.x+o*f)*n,O=(t.y+o*E)*n,v=(t.z+o*p)*n;t.x=(t.x-o*F)*l,t.y=(t.y-o*O)*l,t.z=(t.z-o*v)*l,r.x=h+(f+F)*l,r.y=u+(E+O)*l,r.z=d+(p+v)*l;const N=I-c.x,x=m-c.y,G=_-c.z,w=r.x-I,L=r.y-m,T=r.z-_;return N*w+x*L+G*T>0&&(r.x=I,r.y=m,r.z=_,t.x=(r.x-I)/n,t.y=(r.y-m)/n,t.z=(r.z-_)/n),r}function Wi(c,e){e.set(0,0),c.forEach(t=>{e.x+=t.clientX,e.y+=t.clientY}),e.x/=c.length,e.y/=c.length}function Xi(c,e){return fe(c)?(console.warn(`${e} is not supported in OrthographicCamera`),!0):!1}class Ma{constructor(){this._listeners={}}addEventListener(e,t){const s=this._listeners;s[e]===void 0&&(s[e]=[]),s[e].indexOf(t)===-1&&s[e].push(t)}hasEventListener(e,t){const s=this._listeners;return s[e]!==void 0&&s[e].indexOf(t)!==-1}removeEventListener(e,t){const i=this._listeners[e];if(i!==void 0){const n=i.indexOf(t);n!==-1&&i.splice(n,1)}}removeAllEventListeners(e){if(!e){this._listeners={};return}Array.isArray(this._listeners[e])&&(this._listeners[e].length=0)}dispatchEvent(e){const s=this._listeners[e.type];if(s!==void 0){e.target=this;const i=s.slice(0);for(let n=0,r=i.length;n<r;n++)i[n].call(this,e)}}}const xa="2.7.3",Ys=1/8,Lr=typeof window<"u",Da=Lr&&/Mac/.test(navigator.platform),Ua=!(Lr&&"PointerEvent"in window);let ct,er,Hs,Zi,Ut,ht,pt,He,cs,ee,se,Ae,sr,ir,Gt,ls,We,nr,$i,rr,ji,Qi,Ws;class Mt extends Ma{static install(e){ct=e.THREE,er=Object.freeze(new ct.Vector3(0,0,0)),Hs=Object.freeze(new ct.Vector3(0,1,0)),Zi=Object.freeze(new ct.Vector3(0,0,1)),Ut=new ct.Vector2,ht=new ct.Vector3,pt=new ct.Vector3,He=new ct.Vector3,cs=new ct.Vector3,ee=new ct.Vector3,se=new ct.Vector3,Ae=new ct.Vector3,sr=new ct.Vector3,ir=new ct.Vector3,Gt=new ct.Spherical,ls=new ct.Spherical,We=new ct.Box3,nr=new ct.Box3,$i=new ct.Sphere,rr=new ct.Quaternion,ji=new ct.Quaternion,Qi=new ct.Matrix4,Ws=new ct.Raycaster}static get ACTION(){return H}constructor(e,t){super(),this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.minDistance=Number.EPSILON,this.maxDistance=1/0,this.infinityDolly=!1,this.minZoom=.01,this.maxZoom=1/0,this.smoothTime=.25,this.draggingSmoothTime=.125,this.maxSpeed=1/0,this.azimuthRotateSpeed=1,this.polarRotateSpeed=1,this.dollySpeed=1,this.dollyDragInverted=!1,this.truckSpeed=2,this.dollyToCursor=!1,this.dragToOffset=!1,this.verticalDragToForward=!1,this.boundaryFriction=0,this.restThreshold=.01,this.colliderMeshes=[],this.cancel=()=>{},this._enabled=!0,this._state=H.NONE,this._viewport=null,this._changedDolly=0,this._changedZoom=0,this._hasRested=!0,this._boundaryEnclosesCamera=!1,this._needsUpdate=!0,this._updatedLastTime=!1,this._elementRect=new DOMRect,this._isDragging=!1,this._dragNeedsUpdate=!0,this._activePointers=[],this._lockedPointer=null,this._interactiveArea=new DOMRect(0,0,1,1),this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._isUserControllingOffset=!1,this._isUserControllingZoom=!1,this._lastDollyDirection=Ge.NONE,this._thetaVelocity={value:0},this._phiVelocity={value:0},this._radiusVelocity={value:0},this._targetVelocity=new ct.Vector3,this._focalOffsetVelocity=new ct.Vector3,this._zoomVelocity={value:0},this._truckInternal=(C,y,F)=>{let O,v;if(_e(this._camera)){const N=ht.copy(this._camera.position).sub(this._target),x=this._camera.getEffectiveFOV()*rs,G=N.length()*Math.tan(x*.5);O=this.truckSpeed*C*G/this._elementRect.height,v=this.truckSpeed*y*G/this._elementRect.height}else if(fe(this._camera)){const N=this._camera;O=C*(N.right-N.left)/N.zoom/this._elementRect.width,v=y*(N.top-N.bottom)/N.zoom/this._elementRect.height}else return;this.verticalDragToForward?(F?this.setFocalOffset(this._focalOffsetEnd.x+O,this._focalOffsetEnd.y,this._focalOffsetEnd.z,!0):this.truck(O,0,!0),this.forward(-v,!0)):F?this.setFocalOffset(this._focalOffsetEnd.x+O,this._focalOffsetEnd.y+v,this._focalOffsetEnd.z,!0):this.truck(O,v,!0)},this._rotateInternal=(C,y)=>{const F=Ye*this.azimuthRotateSpeed*C/this._elementRect.height,O=Ye*this.polarRotateSpeed*y/this._elementRect.height;this.rotate(F,O,!0)},this._dollyInternal=(C,y,F)=>{const O=Math.pow(.95,-C*this.dollySpeed),v=this._sphericalEnd.radius,N=this._sphericalEnd.radius*O,x=Qt(N,this.minDistance,this.maxDistance),G=x-N;this.infinityDolly&&this.dollyToCursor?this._dollyToNoClamp(N,!0):this.infinityDolly&&!this.dollyToCursor?(this.dollyInFixed(G,!0),this._dollyToNoClamp(x,!0)):this._dollyToNoClamp(x,!0),this.dollyToCursor&&(this._changedDolly+=(this.infinityDolly?N:x)-v,this._dollyControlCoord.set(y,F)),this._lastDollyDirection=Math.sign(-C)},this._zoomInternal=(C,y,F)=>{const O=Math.pow(.95,C*this.dollySpeed),v=this._zoom,N=this._zoom*O;this.zoomTo(N,!0),this.dollyToCursor&&(this._changedZoom+=N-v,this._dollyControlCoord.set(y,F))},typeof ct>"u"&&console.error("camera-controls: `THREE` is undefined. You must first run `CameraControls.install( { THREE: THREE } )`. Check the docs for further information."),this._camera=e,this._yAxisUpSpace=new ct.Quaternion().setFromUnitVectors(this._camera.up,Hs),this._yAxisUpSpaceInverse=this._yAxisUpSpace.clone().invert(),this._state=H.NONE,this._target=new ct.Vector3,this._targetEnd=this._target.clone(),this._focalOffset=new ct.Vector3,this._focalOffsetEnd=this._focalOffset.clone(),this._spherical=new ct.Spherical().setFromVector3(ht.copy(this._camera.position).applyQuaternion(this._yAxisUpSpace)),this._sphericalEnd=this._spherical.clone(),this._lastDistance=this._spherical.radius,this._zoom=this._camera.zoom,this._zoomEnd=this._zoom,this._lastZoom=this._zoom,this._nearPlaneCorners=[new ct.Vector3,new ct.Vector3,new ct.Vector3,new ct.Vector3],this._updateNearPlaneCorners(),this._boundary=new ct.Box3(new ct.Vector3(-1/0,-1/0,-1/0),new ct.Vector3(1/0,1/0,1/0)),this._cameraUp0=this._camera.up.clone(),this._target0=this._target.clone(),this._position0=this._camera.position.clone(),this._zoom0=this._zoom,this._focalOffset0=this._focalOffset.clone(),this._dollyControlCoord=new ct.Vector2,this.mouseButtons={left:H.ROTATE,middle:H.DOLLY,right:H.TRUCK,wheel:_e(this._camera)?H.DOLLY:fe(this._camera)?H.ZOOM:H.NONE},this.touches={one:H.TOUCH_ROTATE,two:_e(this._camera)?H.TOUCH_DOLLY_TRUCK:fe(this._camera)?H.TOUCH_ZOOM_TRUCK:H.NONE,three:H.TOUCH_TRUCK};const s=new ct.Vector2,i=new ct.Vector2,n=new ct.Vector2,r=C=>{if(!this._enabled||!this._domElement)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const O=this._domElement.getBoundingClientRect(),v=C.clientX/O.width,N=C.clientY/O.height;if(v<this._interactiveArea.left||v>this._interactiveArea.right||N<this._interactiveArea.top||N>this._interactiveArea.bottom)return}const y=C.pointerType!=="mouse"?null:(C.buttons<.LEFT)===lt.LEFT?lt.LEFT:(C.buttons<.MIDDLE)===lt.MIDDLE?lt.MIDDLE:(C.buttons<.RIGHT)===lt.RIGHT?lt.RIGHT:null;if(y!==null){const O=this._findPointerByMouseButton(y);O&&this._disposePointer(O)}if((C.buttons<.LEFT)===lt.LEFT&&this._lockedPointer)return;const F={pointerId:C.pointerId,clientX:C.clientX,clientY:C.clientY,deltaX:0,deltaY:0,mouseButton:y};this._activePointers.push(F),this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.ownerDocument.addEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",h),this._isDragging=!0,p(C)},o=C=>{if(!this._enabled||!this._domElement||this._lockedPointer)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const O=this._domElement.getBoundingClientRect(),v=C.clientX/O.width,N=C.clientY/O.height;if(v<this._interactiveArea.left||v>this._interactiveArea.right||N<this._interactiveArea.top||N>this._interactiveArea.bottom)return}const y=(C.buttons<.LEFT)===lt.LEFT?lt.LEFT:(C.buttons<.MIDDLE)===lt.MIDDLE?lt.MIDDLE:(C.buttons<.RIGHT)===lt.RIGHT?lt.RIGHT:null;if(y!==null){const O=this._findPointerByMouseButton(y);O&&this._disposePointer(O)}const F={pointerId:1,clientX:C.clientX,clientY:C.clientY,deltaX:0,deltaY:0,mouseButton:(C.buttons<.LEFT)===lt.LEFT?lt.LEFT:(C.buttons<.MIDDLE)===lt.LEFT?lt.MIDDLE:(C.buttons<.RIGHT)===lt.LEFT?lt.RIGHT:null};this._activePointers.push(F),this._domElement.ownerDocument.removeEventListener("mousemove",l),this._domElement.ownerDocument.removeEventListener("mouseup",u),this._domElement.ownerDocument.addEventListener("mousemove",l),this._domElement.ownerDocument.addEventListener("mouseup",u),this._isDragging=!0,p(C)},a=C=>{C.cancelable&&C.preventDefault();const y=C.pointerId,F=this._lockedPointer||this._findPointerById(y);if(F){if(F.clientX=C.clientX,F.clientY=C.clientY,F.deltaX=C.movementX,F.deltaY=C.movementY,this._state=0,C.pointerType==="touch")switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else(!this._isDragging&&this._lockedPointer||this._isDragging&&(C.buttons<.LEFT)===lt.LEFT)&&(this._state=this._state|this.mouseButtons.left),this._isDragging&&(C.buttons<.MIDDLE)===lt.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),this._isDragging&&(C.buttons<.RIGHT)===lt.RIGHT&&(this._state=this._state|this.mouseButtons.right);I()}},l=C=>{const y=this._lockedPointer||this._findPointerById(1);y&&(y.clientX=C.clientX,y.clientY=C.clientY,y.deltaX=C.movementX,y.deltaY=C.movementY,this._state=0,(this._lockedPointer||(C.buttons<.LEFT)===lt.LEFT)&&(this._state=this._state|this.mouseButtons.left),(C.buttons<.MIDDLE)===lt.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(C.buttons<.RIGHT)===lt.RIGHT&&(this._state=this._state|this.mouseButtons.right),I())},h=C=>{const y=this._findPointerById(C.pointerId);if(!(y&&y===this._lockedPointer)){if(y&&this._disposePointer(y),C.pointerType==="touch")switch(this._activePointers.length){case 0:this._state=H.NONE;break;case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else this._state=H.NONE;m()}},u=()=>{const C=this._findPointerById(1);C&&C===this._lockedPointer||(C&&this._disposePointer(C),this._state=H.NONE,m())};let d=-1;const f=C=>{if(!this._domElement||!this._enabled||this.mouseButtons.wheel===H.NONE)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const N=this._domElement.getBoundingClientRect(),x=C.clientX/N.width,G=C.clientY/N.height;if(x<this._interactiveArea.left||x>this._interactiveArea.right||G<this._interactiveArea.top||G>this._interactiveArea.bottom)return}if(C.preventDefault(),this.dollyToCursor||this.mouseButtons.wheel===H.ROTATE||this.mouseButtons.wheel===H.TRUCK){const N=performance.now();d-N<1e3&&this._getClientRect(this._elementRect),d=N}const y=Da?-1:-3,F=C.deltaMode===1?C.deltaY/y:C.deltaY/(y*10),O=this.dollyToCursor?(C.clientX-this._elementRect.x)/this._elementRect.width*2-1:0,v=this.dollyToCursor?(C.clientY-this._elementRect.y)/this._elementRect.height*-2+1:0;switch(this.mouseButtons.wheel){case H.ROTATE:{this._rotateInternal(C.deltaX,C.deltaY),this._isUserControllingRotate=!0;break}case H.TRUCK:{this._truckInternal(C.deltaX,C.deltaY,!1),this._isUserControllingTruck=!0;break}case H.OFFSET:{this._truckInternal(C.deltaX,C.deltaY,!0),this._isUserControllingOffset=!0;break}case H.DOLLY:{this._dollyInternal(-F,O,v),this._isUserControllingDolly=!0;break}case H.ZOOM:{this._zoomInternal(-F,O,v),this._isUserControllingZoom=!0;break}}this.dispatchEvent({type:"control"})},E=C=>{if(!(!this._domElement||!this._enabled)){if(this.mouseButtons.right===Mt.ACTION.NONE){const y=C instanceof PointerEvent?C.pointerId:(C instanceof MouseEvent,0),F=this._findPointerById(y);F&&this._disposePointer(F),this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.ownerDocument.removeEventListener("mousemove",l),this._domElement.ownerDocument.removeEventListener("mouseup",u);return}C.preventDefault()}},p=C=>{if(!this._enabled)return;if(Wi(this._activePointers,Ut),this._getClientRect(this._elementRect),s.copy(Ut),i.copy(Ut),this._activePointers.length>=2){const F=Ut.x-this._activePointers[1].clientX,O=Ut.y-this._activePointers[1].clientY,v=Math.sqrt(F*F+O*O);n.set(0,v);const N=(this._activePointers[0].clientX+this._activePointers[1].clientX)*.5,x=(this._activePointers[0].clientY+this._activePointers[1].clientY)*.5;i.set(N,x)}if(this._state=0,!C)this._lockedPointer&&(this._state=this._state|this.mouseButtons.left);else if("pointerType"in C&&C.pointerType==="touch")switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else!this._lockedPointer&&(C.buttons<.LEFT)===lt.LEFT&&(this._state=this._state|this.mouseButtons.left),(C.buttons<.MIDDLE)===lt.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(C.buttons<.RIGHT)===lt.RIGHT&&(this._state=this._state|this.mouseButtons.right);((this._state&H.ROTATE)===H.ROTATE||(this._state&H.TOUCH_ROTATE)===H.TOUCH_ROTATE||(this._state&H.TOUCH_DOLLY_ROTATE)===H.TOUCH_DOLLY_ROTATE||(this._state&H.TOUCH_ZOOM_ROTATE)===H.TOUCH_ZOOM_ROTATE)&&(this._sphericalEnd.theta=this._spherical.theta,this._sphericalEnd.phi=this._spherical.phi,this._thetaVelocity.value=0,this._phiVelocity.value=0),((this._state&H.TRUCK)===H.TRUCK||(this._state&H.TOUCH_TRUCK)===H.TOUCH_TRUCK||(this._state&H.TOUCH_DOLLY_TRUCK)===H.TOUCH_DOLLY_TRUCK||(this._state&H.TOUCH_ZOOM_TRUCK)===H.TOUCH_ZOOM_TRUCK)&&(this._targetEnd.copy(this._target),this._targetVelocity.set(0,0,0)),((this._state&H.DOLLY)===H.DOLLY||(this._state&H.TOUCH_DOLLY)===H.TOUCH_DOLLY||(this._state&H.TOUCH_DOLLY_TRUCK)===H.TOUCH_DOLLY_TRUCK||(this._state&H.TOUCH_DOLLY_OFFSET)===H.TOUCH_DOLLY_OFFSET||(this._state&H.TOUCH_DOLLY_ROTATE)===H.TOUCH_DOLLY_ROTATE)&&(this._sphericalEnd.radius=this._spherical.radius,this._radiusVelocity.value=0),((this._state&H.ZOOM)===H.ZOOM||(this._state&H.TOUCH_ZOOM)===H.TOUCH_ZOOM||(this._state&H.TOUCH_ZOOM_TRUCK)===H.TOUCH_ZOOM_TRUCK||(this._state&H.TOUCH_ZOOM_OFFSET)===H.TOUCH_ZOOM_OFFSET||(this._state&H.TOUCH_ZOOM_ROTATE)===H.TOUCH_ZOOM_ROTATE)&&(this._zoomEnd=this._zoom,this._zoomVelocity.value=0),((this._state&H.OFFSET)===H.OFFSET||(this._state&H.TOUCH_OFFSET)===H.TOUCH_OFFSET||(this._state&H.TOUCH_DOLLY_OFFSET)===H.TOUCH_DOLLY_OFFSET||(this._state&H.TOUCH_ZOOM_OFFSET)===H.TOUCH_ZOOM_OFFSET)&&(this._focalOffsetEnd.copy(this._focalOffset),this._focalOffsetVelocity.set(0,0,0)),this.dispatchEvent({type:"controlstart"})},I=()=>{if(!this._enabled||!this._dragNeedsUpdate)return;this._dragNeedsUpdate=!1,Wi(this._activePointers,Ut);const y=this._domElement&&document.pointerLockElement===this._domElement?this._lockedPointer||this._activePointers[0]:null,F=y?-y.deltaX:i.x-Ut.x,O=y?-y.deltaY:i.y-Ut.y;if(i.copy(Ut),((this._state&H.ROTATE)===H.ROTATE||(this._state&H.TOUCH_ROTATE)===H.TOUCH_ROTATE||(this._state&H.TOUCH_DOLLY_ROTATE)===H.TOUCH_DOLLY_ROTATE||(this._state&H.TOUCH_ZOOM_ROTATE)===H.TOUCH_ZOOM_ROTATE)&&(this._rotateInternal(F,O),this._isUserControllingRotate=!0),(this._state&H.DOLLY)===H.DOLLY||(this._state&H.ZOOM)===H.ZOOM){const v=this.dollyToCursor?(s.x-this._elementRect.x)/this._elementRect.width*2-1:0,N=this.dollyToCursor?(s.y-this._elementRect.y)/this._elementRect.height*-2+1:0,x=this.dollyDragInverted?-1:1;(this._state&H.DOLLY)===H.DOLLY?(this._dollyInternal(x*O*Ys,v,N),this._isUserControllingDolly=!0):(this._zoomInternal(x*O*Ys,v,N),this._isUserControllingZoom=!0)}if((this._state&H.TOUCH_DOLLY)===H.TOUCH_DOLLY||(this._state&H.TOUCH_ZOOM)===H.TOUCH_ZOOM||(this._state&H.TOUCH_DOLLY_TRUCK)===H.TOUCH_DOLLY_TRUCK||(this._state&H.TOUCH_ZOOM_TRUCK)===H.TOUCH_ZOOM_TRUCK||(this._state&H.TOUCH_DOLLY_OFFSET)===H.TOUCH_DOLLY_OFFSET||(this._state&H.TOUCH_ZOOM_OFFSET)===H.TOUCH_ZOOM_OFFSET||(this._state&H.TOUCH_DOLLY_ROTATE)===H.TOUCH_DOLLY_ROTATE||(this._state&H.TOUCH_ZOOM_ROTATE)===H.TOUCH_ZOOM_ROTATE){const v=Ut.x-this._activePointers[1].clientX,N=Ut.y-this._activePointers[1].clientY,x=Math.sqrt(v*v+N*N),G=n.y-x;n.set(0,x);const w=this.dollyToCursor?(i.x-this._elementRect.x)/this._elementRect.width*2-1:0,L=this.dollyToCursor?(i.y-this._elementRect.y)/this._elementRect.height*-2+1:0;(this._state&H.TOUCH_DOLLY)===H.TOUCH_DOLLY||(this._state&H.TOUCH_DOLLY_ROTATE)===H.TOUCH_DOLLY_ROTATE||(this._state&H.TOUCH_DOLLY_TRUCK)===H.TOUCH_DOLLY_TRUCK||(this._state&H.TOUCH_DOLLY_OFFSET)===H.TOUCH_DOLLY_OFFSET?(this._dollyInternal(G*Ys,w,L),this._isUserControllingDolly=!0):(this._zoomInternal(G*Ys,w,L),this._isUserControllingZoom=!0)}((this._state&H.TRUCK)===H.TRUCK||(this._state&H.TOUCH_TRUCK)===H.TOUCH_TRUCK||(this._state&H.TOUCH_DOLLY_TRUCK)===H.TOUCH_DOLLY_TRUCK||(this._state&H.TOUCH_ZOOM_TRUCK)===H.TOUCH_ZOOM_TRUCK)&&(this._truckInternal(F,O,!1),this._isUserControllingTruck=!0),((this._state&H.OFFSET)===H.OFFSET||(this._state&H.TOUCH_OFFSET)===H.TOUCH_OFFSET||(this._state&H.TOUCH_DOLLY_OFFSET)===H.TOUCH_DOLLY_OFFSET||(this._state&H.TOUCH_ZOOM_OFFSET)===H.TOUCH_ZOOM_OFFSET)&&(this._truckInternal(F,O,!0),this._isUserControllingOffset=!0),this.dispatchEvent({type:"control"})},m=()=>{Wi(this._activePointers,Ut),i.copy(Ut),this._dragNeedsUpdate=!1,(this._activePointers.length===0||this._activePointers.length===1&&this._activePointers[0]===this._lockedPointer)&&(this._isDragging=!1),this._activePointers.length===0&&this._domElement&&(this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("mousemove",l),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.ownerDocument.removeEventListener("mouseup",u),this.dispatchEvent({type:"controlend"}))};this.lockPointer=()=>{!this._enabled||!this._domElement||(this.cancel(),this._lockedPointer={pointerId:-1,clientX:0,clientY:0,deltaX:0,deltaY:0,mouseButton:null},this._activePointers.push(this._lockedPointer),this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.requestPointerLock(),this._domElement.ownerDocument.addEventListener("pointerlockchange",_),this._domElement.ownerDocument.addEventListener("pointerlockerror",R),this._domElement.ownerDocument.addEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",h),p())},this.unlockPointer=()=>{this._lockedPointer!==null&&(this._disposePointer(this._lockedPointer),this._lockedPointer=null),document.exitPointerLock(),this.cancel(),this._domElement&&(this._domElement.ownerDocument.removeEventListener("pointerlockchange",_),this._domElement.ownerDocument.removeEventListener("pointerlockerror",R))};const _=()=>{this._domElement&&this._domElement.ownerDocument.pointerLockElement===this._domElement||this.unlockPointer()},R=()=>{this.unlockPointer()};this._addAllEventListeners=C=>{this._domElement=C,this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none",this._domElement.addEventListener("pointerdown",r),Ua&&this._domElement.addEventListener("mousedown",o),this._domElement.addEventListener("pointercancel",h),this._domElement.addEventListener("wheel",f,{passive:!1}),this._domElement.addEventListener("contextmenu",E)},this._removeAllEventListeners=()=>{this._domElement&&(this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect="",this._domElement.removeEventListener("pointerdown",r),this._domElement.removeEventListener("mousedown",o),this._domElement.removeEventListener("pointercancel",h),this._domElement.removeEventListener("wheel",f,{passive:!1}),this._domElement.removeEventListener("contextmenu",E),this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("mousemove",l),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.ownerDocument.removeEventListener("mouseup",u),this._domElement.ownerDocument.removeEventListener("pointerlockchange",_),this._domElement.ownerDocument.removeEventListener("pointerlockerror",R))},this.cancel=()=>{this._state!==H.NONE&&(this._state=H.NONE,this._activePointers.length=0,m())},t&&this.connect(t),this.update(0)}get camera(){return this._camera}set camera(e){this._camera=e,this.updateCameraUp(),this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0}get enabled(){return this._enabled}set enabled(e){this._enabled=e,this._domElement&&(e?(this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none"):(this.cancel(),this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect=""))}get active(){return!this._hasRested}get currentAction(){return this._state}get distance(){return this._spherical.radius}set distance(e){this._spherical.radius===e&&this._sphericalEnd.radius===e||(this._spherical.radius=e,this._sphericalEnd.radius=e,this._needsUpdate=!0)}get azimuthAngle(){return this._spherical.theta}set azimuthAngle(e){this._spherical.theta===e&&this._sphericalEnd.theta===e||(this._spherical.theta=e,this._sphericalEnd.theta=e,this._needsUpdate=!0)}get polarAngle(){return this._spherical.phi}set polarAngle(e){this._spherical.phi===e&&this._sphericalEnd.phi===e||(this._spherical.phi=e,this._sphericalEnd.phi=e,this._needsUpdate=!0)}get boundaryEnclosesCamera(){return this._boundaryEnclosesCamera}set boundaryEnclosesCamera(e){this._boundaryEnclosesCamera=e,this._needsUpdate=!0}set interactiveArea(e){this._interactiveArea.width=Qt(e.width,0,1),this._interactiveArea.height=Qt(e.height,0,1),this._interactiveArea.x=Qt(e.x,0,1-this._interactiveArea.width),this._interactiveArea.y=Qt(e.y,0,1-this._interactiveArea.height)}addEventListener(e,t){super.addEventListener(e,t)}removeEventListener(e,t){super.removeEventListener(e,t)}rotate(e,t,s=!1){return this.rotateTo(this._sphericalEnd.theta+e,this._sphericalEnd.phi+t,s)}rotateAzimuthTo(e,t=!1){return this.rotateTo(e,this._sphericalEnd.phi,t)}rotatePolarTo(e,t=!1){return this.rotateTo(this._sphericalEnd.theta,e,t)}rotateTo(e,t,s=!1){this._isUserControllingRotate=!1;const i=Qt(e,this.minAzimuthAngle,this.maxAzimuthAngle),n=Qt(t,this.minPolarAngle,this.maxPolarAngle);this._sphericalEnd.theta=i,this._sphericalEnd.phi=n,this._sphericalEnd.makeSafe(),this._needsUpdate=!0,s||(this._spherical.theta=this._sphericalEnd.theta,this._spherical.phi=this._sphericalEnd.phi);const r=!s||Et(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Et(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold);return this._createOnRestPromise(r)}dolly(e,t=!1){return this.dollyTo(this._sphericalEnd.radius-e,t)}dollyTo(e,t=!1){return this._isUserControllingDolly=!1,this._lastDollyDirection=Ge.NONE,this._changedDolly=0,this._dollyToNoClamp(Qt(e,this.minDistance,this.maxDistance),t)}_dollyToNoClamp(e,t=!1){const s=this._sphericalEnd.radius;if(this.colliderMeshes.length>=1){const r=this._collisionTest(),o=Et(r,this._spherical.radius);if(!(s>e)&&o)return Promise.resolve();this._sphericalEnd.radius=Math.min(e,r)}else this._sphericalEnd.radius=e;this._needsUpdate=!0,t||(this._spherical.radius=this._sphericalEnd.radius);const n=!t||Et(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(n)}dollyInFixed(e,t=!1){this._targetEnd.add(this._getCameraDirection(cs).multiplyScalar(e)),t||this._target.copy(this._targetEnd);const s=!t||Et(this._target.x,this._targetEnd.x,this.restThreshold)&&Et(this._target.y,this._targetEnd.y,this.restThreshold)&&Et(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(s)}zoom(e,t=!1){return this.zoomTo(this._zoomEnd+e,t)}zoomTo(e,t=!1){this._isUserControllingZoom=!1,this._zoomEnd=Qt(e,this.minZoom,this.maxZoom),this._needsUpdate=!0,t||(this._zoom=this._zoomEnd);const s=!t||Et(this._zoom,this._zoomEnd,this.restThreshold);return this._changedZoom=0,this._createOnRestPromise(s)}pan(e,t,s=!1){return console.warn("`pan` has been renamed to `truck`"),this.truck(e,t,s)}truck(e,t,s=!1){this._camera.updateMatrix(),ee.setFromMatrixColumn(this._camera.matrix,0),se.setFromMatrixColumn(this._camera.matrix,1),ee.multiplyScalar(e),se.multiplyScalar(-t);const i=ht.copy(ee).add(se),n=pt.copy(this._targetEnd).add(i);return this.moveTo(n.x,n.y,n.z,s)}forward(e,t=!1){ht.setFromMatrixColumn(this._camera.matrix,0),ht.crossVectors(this._camera.up,ht),ht.multiplyScalar(e);const s=pt.copy(this._targetEnd).add(ht);return this.moveTo(s.x,s.y,s.z,t)}elevate(e,t=!1){return ht.copy(this._camera.up).multiplyScalar(e),this.moveTo(this._targetEnd.x+ht.x,this._targetEnd.y+ht.y,this._targetEnd.z+ht.z,t)}moveTo(e,t,s,i=!1){this._isUserControllingTruck=!1;const n=ht.set(e,t,s).sub(this._targetEnd);this._encloseToBoundary(this._targetEnd,n,this.boundaryFriction),this._needsUpdate=!0,i||this._target.copy(this._targetEnd);const r=!i||Et(this._target.x,this._targetEnd.x,this.restThreshold)&&Et(this._target.y,this._targetEnd.y,this.restThreshold)&&Et(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(r)}lookInDirectionOf(e,t,s,i=!1){const o=ht.set(e,t,s).sub(this._targetEnd).normalize().multiplyScalar(-this._sphericalEnd.radius);return this.setPosition(o.x,o.y,o.z,i)}fitToBox(e,t,{cover:s=!1,paddingLeft:i=0,paddingRight:n=0,paddingBottom:r=0,paddingTop:o=0}={}){const a=[],l=e.isBox3?We.copy(e):We.setFromObject(e);l.isEmpty()&&(console.warn("camera-controls: fitTo() cannot be used with an empty box. Aborting"),Promise.resolve());const h=Jn(this._sphericalEnd.theta,Kn),u=Jn(this._sphericalEnd.phi,Kn);a.push(this.rotateTo(h,u,t));const d=ht.setFromSpherical(this._sphericalEnd).normalize(),f=rr.setFromUnitVectors(d,Zi),E=Et(Math.abs(d.y),1);E&&f.multiply(ji.setFromAxisAngle(Hs,h)),f.multiply(this._yAxisUpSpaceInverse);const p=nr.makeEmpty();pt.copy(l.min).applyQuaternion(f),p.expandByPoint(pt),pt.copy(l.min).setX(l.max.x).applyQuaternion(f),p.expandByPoint(pt),pt.copy(l.min).setY(l.max.y).applyQuaternion(f),p.expandByPoint(pt),pt.copy(l.max).setZ(l.min.z).applyQuaternion(f),p.expandByPoint(pt),pt.copy(l.min).setZ(l.max.z).applyQuaternion(f),p.expandByPoint(pt),pt.copy(l.max).setY(l.min.y).applyQuaternion(f),p.expandByPoint(pt),pt.copy(l.max).setX(l.min.x).applyQuaternion(f),p.expandByPoint(pt),pt.copy(l.max).applyQuaternion(f),p.expandByPoint(pt),p.min.x-=i,p.min.y-=r,p.max.x+=n,p.max.y+=o,f.setFromUnitVectors(Zi,d),E&&f.premultiply(ji.invert()),f.premultiply(this._yAxisUpSpace);const I=p.getSize(ht),m=p.getCenter(pt).applyQuaternion(f);if(_e(this._camera)){const _=this.getDistanceToFitBox(I.x,I.y,I.z,s);a.push(this.moveTo(m.x,m.y,m.z,t)),a.push(this.dollyTo(_,t)),a.push(this.setFocalOffset(0,0,0,t))}else if(fe(this._camera)){const _=this._camera,R=_.right-_.left,C=_.top-_.bottom,y=s?Math.max(R/I.x,C/I.y):Math.min(R/I.x,C/I.y);a.push(this.moveTo(m.x,m.y,m.z,t)),a.push(this.zoomTo(y,t)),a.push(this.setFocalOffset(0,0,0,t))}return Promise.all(a)}fitToSphere(e,t){const s=[],n=e instanceof ct.Sphere?$i.copy(e):Mt.createBoundingSphere(e,$i);if(s.push(this.moveTo(n.center.x,n.center.y,n.center.z,t)),_e(this._camera)){const r=this.getDistanceToFitSphere(n.radius);s.push(this.dollyTo(r,t))}else if(fe(this._camera)){const r=this._camera.right-this._camera.left,o=this._camera.top-this._camera.bottom,a=2*n.radius,l=Math.min(r/a,o/a);s.push(this.zoomTo(l,t))}return s.push(this.setFocalOffset(0,0,0,t)),Promise.all(s)}setLookAt(e,t,s,i,n,r,o=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=Ge.NONE,this._changedDolly=0;const a=pt.set(i,n,r),l=ht.set(e,t,s);this._targetEnd.copy(a),this._sphericalEnd.setFromVector3(l.sub(a).applyQuaternion(this._yAxisUpSpace)),this.normalizeRotations(),this._needsUpdate=!0,o||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const h=!o||Et(this._target.x,this._targetEnd.x,this.restThreshold)&&Et(this._target.y,this._targetEnd.y,this.restThreshold)&&Et(this._target.z,this._targetEnd.z,this.restThreshold)&&Et(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Et(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&Et(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(h)}lerpLookAt(e,t,s,i,n,r,o,a,l,h,u,d,f,E=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=Ge.NONE,this._changedDolly=0;const p=ht.set(i,n,r),I=pt.set(e,t,s);Gt.setFromVector3(I.sub(p).applyQuaternion(this._yAxisUpSpace));const m=He.set(h,u,d),_=pt.set(o,a,l);ls.setFromVector3(_.sub(m).applyQuaternion(this._yAxisUpSpace)),this._targetEnd.copy(p.lerp(m,f));const R=ls.theta-Gt.theta,C=ls.phi-Gt.phi,y=ls.radius-Gt.radius;this._sphericalEnd.set(Gt.radius+y*f,Gt.phi+C*f,Gt.theta+R*f),this.normalizeRotations(),this._needsUpdate=!0,E||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const F=!E||Et(this._target.x,this._targetEnd.x,this.restThreshold)&&Et(this._target.y,this._targetEnd.y,this.restThreshold)&&Et(this._target.z,this._targetEnd.z,this.restThreshold)&&Et(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Et(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&Et(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(F)}setPosition(e,t,s,i=!1){return this.setLookAt(e,t,s,this._targetEnd.x,this._targetEnd.y,this._targetEnd.z,i)}setTarget(e,t,s,i=!1){const n=this.getPosition(ht),r=this.setLookAt(n.x,n.y,n.z,e,t,s,i);return this._sphericalEnd.phi=Qt(this._sphericalEnd.phi,this.minPolarAngle,this.maxPolarAngle),r}setFocalOffset(e,t,s,i=!1){this._isUserControllingOffset=!1,this._focalOffsetEnd.set(e,t,s),this._needsUpdate=!0,i||this._focalOffset.copy(this._focalOffsetEnd);const n=!i||Et(this._focalOffset.x,this._focalOffsetEnd.x,this.restThreshold)&&Et(this._focalOffset.y,this._focalOffsetEnd.y,this.restThreshold)&&Et(this._focalOffset.z,this._focalOffsetEnd.z,this.restThreshold);return this._createOnRestPromise(n)}setOrbitPoint(e,t,s){this._camera.updateMatrixWorld(),ee.setFromMatrixColumn(this._camera.matrixWorldInverse,0),se.setFromMatrixColumn(this._camera.matrixWorldInverse,1),Ae.setFromMatrixColumn(this._camera.matrixWorldInverse,2);const i=ht.set(e,t,s),n=i.distanceTo(this._camera.position),r=i.sub(this._camera.position);ee.multiplyScalar(r.x),se.multiplyScalar(r.y),Ae.multiplyScalar(r.z),ht.copy(ee).add(se).add(Ae),ht.z=ht.z+n,this.dollyTo(n,!1),this.setFocalOffset(-ht.x,ht.y,-ht.z,!1),this.moveTo(e,t,s,!1)}setBoundary(e){if(!e){this._boundary.min.set(-1/0,-1/0,-1/0),this._boundary.max.set(1/0,1/0,1/0),this._needsUpdate=!0;return}this._boundary.copy(e),this._boundary.clampPoint(this._targetEnd,this._targetEnd),this._needsUpdate=!0}setViewport(e,t,s,i){if(e===null){this._viewport=null;return}this._viewport=this._viewport||new ct.Vector4,typeof e=="number"?this._viewport.set(e,t,s,i):this._viewport.copy(e)}getDistanceToFitBox(e,t,s,i=!1){if(Xi(this._camera,"getDistanceToFitBox"))return this._spherical.radius;const n=e/t,r=this._camera.getEffectiveFOV()*rs,o=this._camera.aspect;return((i?n>o:n<o)?t:e/o)*.5/Math.tan(r*.5)+s*.5}getDistanceToFitSphere(e){if(Xi(this._camera,"getDistanceToFitSphere"))return this._spherical.radius;const t=this._camera.getEffectiveFOV()*rs,s=Math.atan(Math.tan(t*.5)*this._camera.aspect)*2,i=1<this._camera.aspect?t:s;return e/Math.sin(i*.5)}getTarget(e,t=!0){return(e&&e.isVector3?e:new ct.Vector3).copy(t?this._targetEnd:this._target)}getPosition(e,t=!0){return(e&&e.isVector3?e:new ct.Vector3).setFromSpherical(t?this._sphericalEnd:this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(t?this._targetEnd:this._target)}getSpherical(e,t=!0){return(e&&e instanceof ct.Spherical?e:new ct.Spherical).copy(t?this._sphericalEnd:this._spherical)}getFocalOffset(e,t=!0){return(e&&e.isVector3?e:new ct.Vector3).copy(t?this._focalOffsetEnd:this._focalOffset)}normalizeRotations(){this._sphericalEnd.theta=this._sphericalEnd.theta%Ye,this._sphericalEnd.theta<0&&(this._sphericalEnd.theta+=Ye),this._spherical.theta+=Ye*Math.round((this._sphericalEnd.theta-this._spherical.theta)/Ye)}reset(e=!1){if(!Et(this._camera.up.x,this._cameraUp0.x)||!Et(this._camera.up.y,this._cameraUp0.y)||!Et(this._camera.up.z,this._cameraUp0.z)){this._camera.up.copy(this._cameraUp0);const s=this.getPosition(ht);this.updateCameraUp(),this.setPosition(s.x,s.y,s.z)}const t=[this.setLookAt(this._position0.x,this._position0.y,this._position0.z,this._target0.x,this._target0.y,this._target0.z,e),this.setFocalOffset(this._focalOffset0.x,this._focalOffset0.y,this._focalOffset0.z,e),this.zoomTo(this._zoom0,e)];return Promise.all(t)}saveState(){this._cameraUp0.copy(this._camera.up),this.getTarget(this._target0),this.getPosition(this._position0),this._zoom0=this._zoom,this._focalOffset0.copy(this._focalOffset)}updateCameraUp(){this._yAxisUpSpace.setFromUnitVectors(this._camera.up,Hs),this._yAxisUpSpaceInverse.copy(this._yAxisUpSpace).invert()}applyCameraUp(){const e=ht.subVectors(this._target,this._camera.position).normalize(),t=pt.crossVectors(e,this._camera.up);this._camera.up.crossVectors(t,e).normalize(),this._camera.updateMatrixWorld();const s=this.getPosition(ht);this.updateCameraUp(),this.setPosition(s.x,s.y,s.z)}update(e){const t=this._sphericalEnd.theta-this._spherical.theta,s=this._sphericalEnd.phi-this._spherical.phi,i=this._sphericalEnd.radius-this._spherical.radius,n=sr.subVectors(this._targetEnd,this._target),r=ir.subVectors(this._focalOffsetEnd,this._focalOffset),o=this._zoomEnd-this._zoom;if(Ct(t))this._thetaVelocity.value=0,this._spherical.theta=this._sphericalEnd.theta;else{const u=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.theta=Gs(this._spherical.theta,this._sphericalEnd.theta,this._thetaVelocity,u,1/0,e),this._needsUpdate=!0}if(Ct(s))this._phiVelocity.value=0,this._spherical.phi=this._sphericalEnd.phi;else{const u=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.phi=Gs(this._spherical.phi,this._sphericalEnd.phi,this._phiVelocity,u,1/0,e),this._needsUpdate=!0}if(Ct(i))this._radiusVelocity.value=0,this._spherical.radius=this._sphericalEnd.radius;else{const u=this._isUserControllingDolly?this.draggingSmoothTime:this.smoothTime;this._spherical.radius=Gs(this._spherical.radius,this._sphericalEnd.radius,this._radiusVelocity,u,this.maxSpeed,e),this._needsUpdate=!0}if(Ct(n.x)&&Ct(n.y)&&Ct(n.z))this._targetVelocity.set(0,0,0),this._target.copy(this._targetEnd);else{const u=this._isUserControllingTruck?this.draggingSmoothTime:this.smoothTime;tr(this._target,this._targetEnd,this._targetVelocity,u,this.maxSpeed,e,this._target),this._needsUpdate=!0}if(Ct(r.x)&&Ct(r.y)&&Ct(r.z))this._focalOffsetVelocity.set(0,0,0),this._focalOffset.copy(this._focalOffsetEnd);else{const u=this._isUserControllingOffset?this.draggingSmoothTime:this.smoothTime;tr(this._focalOffset,this._focalOffsetEnd,this._focalOffsetVelocity,u,this.maxSpeed,e,this._focalOffset),this._needsUpdate=!0}if(Ct(o))this._zoomVelocity.value=0,this._zoom=this._zoomEnd;else{const u=this._isUserControllingZoom?this.draggingSmoothTime:this.smoothTime;this._zoom=Gs(this._zoom,this._zoomEnd,this._zoomVelocity,u,1/0,e)}if(this.dollyToCursor){if(_e(this._camera)&&this._changedDolly!==0){const u=this._spherical.radius-this._lastDistance,d=this._camera,f=this._getCameraDirection(cs),E=ht.copy(f).cross(d.up).normalize();E.lengthSq()===0&&(E.x=1);const p=pt.crossVectors(E,f),I=this._sphericalEnd.radius*Math.tan(d.getEffectiveFOV()*rs*.5),_=(this._sphericalEnd.radius-u-this._sphericalEnd.radius)/this._sphericalEnd.radius,R=He.copy(this._targetEnd).add(E.multiplyScalar(this._dollyControlCoord.x*I*d.aspect)).add(p.multiplyScalar(this._dollyControlCoord.y*I)),C=ht.copy(this._targetEnd).lerp(R,_),y=this._lastDollyDirection===Ge.IN&&this._spherical.radius<=this.minDistance,F=this._lastDollyDirection===Ge.OUT&&this.maxDistance<=this._spherical.radius;if(this.infinityDolly&&(y||F)){this._sphericalEnd.radius-=u,this._spherical.radius-=u;const v=pt.copy(f).multiplyScalar(-u);C.add(v)}this._boundary.clampPoint(C,C);const O=pt.subVectors(C,this._targetEnd);this._targetEnd.copy(C),this._target.add(O),this._changedDolly-=u,Ct(this._changedDolly)&&(this._changedDolly=0)}else if(fe(this._camera)&&this._changedZoom!==0){const u=this._zoom-this._lastZoom,d=this._camera,f=ht.set(this._dollyControlCoord.x,this._dollyControlCoord.y,(d.near+d.far)/(d.near-d.far)).unproject(d),E=pt.set(0,0,-1).applyQuaternion(d.quaternion),p=He.copy(f).add(E.multiplyScalar(-f.dot(d.up))),m=-(this._zoom-u-this._zoom)/this._zoom,_=this._getCameraDirection(cs),R=this._targetEnd.dot(_),C=ht.copy(this._targetEnd).lerp(p,m),y=C.dot(_),F=_.multiplyScalar(y-R);C.sub(F),this._boundary.clampPoint(C,C);const O=pt.subVectors(C,this._targetEnd);this._targetEnd.copy(C),this._target.add(O),this._changedZoom-=u,Ct(this._changedZoom)&&(this._changedZoom=0)}}this._camera.zoom!==this._zoom&&(this._camera.zoom=this._zoom,this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0),this._dragNeedsUpdate=!0;const a=this._collisionTest();this._spherical.radius=Math.min(this._spherical.radius,a),this._spherical.makeSafe(),this._camera.position.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(this._target),this._camera.lookAt(this._target),(!Ct(this._focalOffset.x)||!Ct(this._focalOffset.y)||!Ct(this._focalOffset.z))&&(this._camera.updateMatrixWorld(),ee.setFromMatrixColumn(this._camera.matrix,0),se.setFromMatrixColumn(this._camera.matrix,1),Ae.setFromMatrixColumn(this._camera.matrix,2),ee.multiplyScalar(this._focalOffset.x),se.multiplyScalar(-this._focalOffset.y),Ae.multiplyScalar(this._focalOffset.z),ht.copy(ee).add(se).add(Ae),this._camera.position.add(ht)),this._boundaryEnclosesCamera&&this._encloseToBoundary(this._camera.position.copy(this._target),ht.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse),1);const h=this._needsUpdate;return h&&!this._updatedLastTime?(this._hasRested=!1,this.dispatchEvent({type:"wake"}),this.dispatchEvent({type:"update"})):h?(this.dispatchEvent({type:"update"}),Ct(t,this.restThreshold)&&Ct(s,this.restThreshold)&&Ct(i,this.restThreshold)&&Ct(n.x,this.restThreshold)&&Ct(n.y,this.restThreshold)&&Ct(n.z,this.restThreshold)&&Ct(r.x,this.restThreshold)&&Ct(r.y,this.restThreshold)&&Ct(r.z,this.restThreshold)&&Ct(o,this.restThreshold)&&!this._hasRested&&(this._hasRested=!0,this.dispatchEvent({type:"rest"}))):!h&&this._updatedLastTime&&this.dispatchEvent({type:"sleep"}),this._lastDistance=this._spherical.radius,this._lastZoom=this._zoom,this._updatedLastTime=h,this._needsUpdate=!1,h}toJSON(){return JSON.stringify({enabled:this._enabled,minDistance:this.minDistance,maxDistance:os(this.maxDistance),minZoom:this.minZoom,maxZoom:os(this.maxZoom),minPolarAngle:this.minPolarAngle,maxPolarAngle:os(this.maxPolarAngle),minAzimuthAngle:os(this.minAzimuthAngle),maxAzimuthAngle:os(this.maxAzimuthAngle),smoothTime:this.smoothTime,draggingSmoothTime:this.draggingSmoothTime,dollySpeed:this.dollySpeed,truckSpeed:this.truckSpeed,dollyToCursor:this.dollyToCursor,verticalDragToForward:this.verticalDragToForward,target:this._targetEnd.toArray(),position:ht.setFromSpherical(this._sphericalEnd).add(this._targetEnd).toArray(),zoom:this._zoomEnd,focalOffset:this._focalOffsetEnd.toArray(),target0:this._target0.toArray(),position0:this._position0.toArray(),zoom0:this._zoom0,focalOffset0:this._focalOffset0.toArray()})}fromJSON(e,t=!1){const s=JSON.parse(e);this.enabled=s.enabled,this.minDistance=s.minDistance,this.maxDistance=as(s.maxDistance),this.minZoom=s.minZoom,this.maxZoom=as(s.maxZoom),this.minPolarAngle=s.minPolarAngle,this.maxPolarAngle=as(s.maxPolarAngle),this.minAzimuthAngle=as(s.minAzimuthAngle),this.maxAzimuthAngle=as(s.maxAzimuthAngle),this.smoothTime=s.smoothTime,this.draggingSmoothTime=s.draggingSmoothTime,this.dollySpeed=s.dollySpeed,this.truckSpeed=s.truckSpeed,this.dollyToCursor=s.dollyToCursor,this.verticalDragToForward=s.verticalDragToForward,this._target0.fromArray(s.target0),this._position0.fromArray(s.position0),this._zoom0=s.zoom0,this._focalOffset0.fromArray(s.focalOffset0),this.moveTo(s.target[0],s.target[1],s.target[2],t),Gt.setFromVector3(ht.fromArray(s.position).sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace)),this.rotateTo(Gt.theta,Gt.phi,t),this.dollyTo(Gt.radius,t),this.zoomTo(s.zoom,t),this.setFocalOffset(s.focalOffset[0],s.focalOffset[1],s.focalOffset[2],t),this._needsUpdate=!0}connect(e){if(this._domElement){console.warn("camera-controls is already connected.");return}e.setAttribute("data-camera-controls-version",xa),this._addAllEventListeners(e),this._getClientRect(this._elementRect)}disconnect(){this.cancel(),this._removeAllEventListeners(),this._domElement&&(this._domElement.removeAttribute("data-camera-controls-version"),this._domElement=void 0)}dispose(){this.removeAllEventListeners(),this.disconnect()}_getTargetDirection(e){return e.setFromSpherical(this._spherical).divideScalar(this._spherical.radius).applyQuaternion(this._yAxisUpSpaceInverse)}_getCameraDirection(e){return this._getTargetDirection(e).negate()}_findPointerById(e){return this._activePointers.find(t=>t.pointerId===e)}_findPointerByMouseButton(e){return this._activePointers.find(t=>t.mouseButton===e)}_disposePointer(e){this._activePointers.splice(this._activePointers.indexOf(e),1)}_encloseToBoundary(e,t,s){const i=t.lengthSq();if(i===0)return e;const n=pt.copy(t).add(e),o=this._boundary.clampPoint(n,He).sub(n),a=o.lengthSq();if(a===0)return e.add(t);if(a===i)return e;if(s===0)return e.add(t).add(o);{const l=1+s*a/t.dot(o);return e.add(pt.copy(t).multiplyScalar(l)).add(o.multiplyScalar(1-s))}}_updateNearPlaneCorners(){if(_e(this._camera)){const e=this._camera,t=e.near,s=e.getEffectiveFOV()*rs,i=Math.tan(s*.5)*t,n=i*e.aspect;this._nearPlaneCorners[0].set(-n,-i,0),this._nearPlaneCorners[1].set(n,-i,0),this._nearPlaneCorners[2].set(n,i,0),this._nearPlaneCorners[3].set(-n,i,0)}else if(fe(this._camera)){const e=this._camera,t=1/e.zoom,s=e.left*t,i=e.right*t,n=e.top*t,r=e.bottom*t;this._nearPlaneCorners[0].set(s,n,0),this._nearPlaneCorners[1].set(i,n,0),this._nearPlaneCorners[2].set(i,r,0),this._nearPlaneCorners[3].set(s,r,0)}}_collisionTest(){let e=1/0;if(!(this.colliderMeshes.length>=1)||Xi(this._camera,"_collisionTest"))return e;const s=this._getTargetDirection(cs);Qi.lookAt(er,s,this._camera.up);for(let i=0;i<4;i++){const n=pt.copy(this._nearPlaneCorners[i]);n.applyMatrix4(Qi);const r=He.addVectors(this._target,n);Ws.set(r,s),Ws.far=this._spherical.radius+1;const o=Ws.intersectObjects(this.colliderMeshes);o.length!==0&&o[0].distance<e&&(e=o[0].distance)}return e}_getClientRect(e){if(!this._domElement)return;const t=this._domElement.getBoundingClientRect();return e.x=t.left,e.y=t.top,this._viewport?(e.x+=this._viewport.x,e.y+=t.height-this._viewport.w-this._viewport.y,e.width=this._viewport.z,e.height=this._viewport.w):(e.width=t.width,e.height=t.height),e}_createOnRestPromise(e){return e?Promise.resolve():(this._hasRested=!1,this.dispatchEvent({type:"transitionstart"}),new Promise(t=>{const s=()=>{this.removeEventListener("rest",s),t()};this.addEventListener("rest",s)}))}_addAllEventListeners(e){}_removeAllEventListeners(){}get dampingFactor(){return console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead."),0}set dampingFactor(e){console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead.")}get draggingDampingFactor(){return console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead."),0}set draggingDampingFactor(e){console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.")}static createBoundingSphere(e,t=new ct.Sphere){const s=t,i=s.center;We.makeEmpty(),e.traverseVisible(r=>{r.isMesh&&We.expandByObject(r)}),We.getCenter(i);let n=0;return e.traverseVisible(r=>{if(!r.isMesh)return;const o=r,a=o.geometry.clone();a.applyMatrix4(o.matrixWorld);const h=a.attributes.position;for(let u=0,d=h.count;u<d;u++)ht.fromBufferAttribute(h,u),n=Math.max(n,i.distanceToSquared(ht))}),s.radius=Math.sqrt(n),s}}class Ze extends Rr{constructor(t){super(t);g(this,"onBeforeUpdate",new Q);g(this,"onAfterUpdate",new Q);g(this,"onAspectUpdated",new Q);g(this,"onDisposed",new Q);g(this,"three");g(this,"_allControls",new Map);g(this,"updateAspect",()=>{var t;if(!(!this.currentWorld||!this.currentWorld.renderer)){if(this.three instanceof M.OrthographicCamera){this.onAspectUpdated.trigger();return}if((t=this.currentWorld.renderer)!=null&&t.isResizeable()){const s=this.currentWorld.renderer.getSize();this.three.aspect=s.width/s.height,this.three.updateProjectionMatrix(),this.onAspectUpdated.trigger()}}});this.three=this.setupCamera(),this.setupEvents(!0),this.onWorldChanged.add(({action:s,world:i})=>{if(s==="added"){const n=this.newCameraControls();this._allControls.set(i.uuid,n)}if(s==="removed"){const n=this._allControls.get(i.uuid);n&&(n.dispose(),this._allControls.delete(i.uuid))}})}get controls(){if(!this.currentWorld)throw new Error("This camera needs a world to work!");const t=this._allControls.get(this.currentWorld.uuid);if(!t)throw new Error("Controls not found!");return t}get enabled(){return this.currentWorld===null?!1:this.controls.enabled}set enabled(t){this.currentWorld!==null&&(this.controls.enabled=t)}dispose(){this.setupEvents(!1),this.onAspectUpdated.reset(),this.onBeforeUpdate.reset(),this.onAfterUpdate.reset(),this.three.removeFromParent(),this.onDisposed.trigger(),this.onDisposed.reset();for(const[t,s]of this._allControls)s.dispose()}update(t){this.enabled&&(this.onBeforeUpdate.trigger(this),this.controls.update(t),this.onAfterUpdate.trigger(this))}setupCamera(){const t=window.innerWidth/window.innerHeight,s=new M.PerspectiveCamera(60,t,1,1e3);return s.position.set(50,50,50),s.lookAt(new M.Vector3(0,0,0)),s}newCameraControls(){if(!this.currentWorld)throw new Error("This camera needs a world to work!");if(!this.currentWorld.renderer)throw new Error("This camera needs a renderer to work!");Mt.install({THREE:Ze.getSubsetOfThree()});const{domElement:t}=this.currentWorld.renderer.three,s=new Mt(this.three,t);return s.smoothTime=.2,s.dollyToCursor=!0,s.infinityDolly=!0,s.minDistance=6,s}setupEvents(t){t?window.addEventListener("resize",this.updateAspect):window.removeEventListener("resize",this.updateAspect)}static getSubsetOfThree(){return{MOUSE:M.MOUSE,Vector2:M.Vector2,Vector3:M.Vector3,Vector4:M.Vector4,Quaternion:M.Quaternion,Matrix4:M.Matrix4,Spherical:M.Spherical,Box3:M.Box3,Sphere:M.Sphere,Raycaster:M.Raycaster,MathUtils:M.MathUtils}}}const di=class di extends At{constructor(t){super(t);g(this,"onAfterUpdate",new Q);g(this,"onBeforeUpdate",new Q);g(this,"onDisposed",new Q);g(this,"onWorldCreated",new Q);g(this,"onWorldDeleted",new Q);g(this,"list",new Map);g(this,"enabled",!0);t.add(di.uuid,this)}create(){const t=new Or(this.components),s=t.uuid;if(this.list.has(s))throw new Error("There is already a world with this name!");return this.list.set(s,t),this.onWorldCreated.trigger(t),t}delete(t){if(!this.list.has(t.uuid))throw new Error("The provided world is not found in the list!");const s=t.uuid;this.list.delete(t.uuid),t.dispose(),this.onWorldDeleted.trigger(s)}dispose(){this.enabled=!1;for(const[t,s]of this.list)s.dispose();this.list.clear(),this.onDisposed.trigger()}update(t){if(this.enabled)for(const[s,i]of this.list)i.update(t)}};g(di,"uuid","fdb61dc4-2ec1-4966-b83d-54ea795fad4a");let si=di;function Ba(c,e,t,s){return new Promise((i,n)=>{function r(){const o=c.clientWaitSync(e,t,0);if(o===c.WAIT_FAILED){n();return}if(o===c.TIMEOUT_EXPIRED){setTimeout(r,s);return}i()}r()})}async function za(c,e,t,s,i,n,r){const o=c.fenceSync(c.SYNC_GPU_COMMANDS_COMPLETE,0);c.flush(),await Ba(c,o,0,10),c.deleteSync(o),c.bindBuffer(e,t),c.getBufferSubData(e,s,i,n,r),c.bindBuffer(e,null)}async function An(c,e,t,s,i,n,r,o){const a=c.createBuffer();return c.bindBuffer(c.PIXEL_PACK_BUFFER,a),c.bufferData(c.PIXEL_PACK_BUFFER,o.byteLength,c.STREAM_READ),c.readPixels(e,t,s,i,n,r,0),c.bindBuffer(c.PIXEL_PACK_BUFFER,null),await za(c,c.PIXEL_PACK_BUFFER,a,0,o),c.deleteBuffer(a),o}class Va extends Pe{constructor(){super(...arguments);g(this,"_config",{enabled:{value:!0,type:"Boolean"},width:{type:"Number",interpolable:!0,value:512,min:32,max:1024},height:{type:"Number",interpolable:!0,value:512,min:32,max:1024},autoUpdate:{value:!0,type:"Boolean"},renderDebugFrame:{value:!1,type:"Boolean"},updateInterval:{type:"Number",interpolable:!0,value:1,min:0,max:1},threshold:{type:"Number",interpolable:!0,value:100,min:1,max:512}});g(this,"_interval",null)}get enabled(){return this._config.enabled.value}set enabled(t){this._config.enabled.value=t,this._component.enabled=t}get width(){return this._config.width.value}set width(t){this.setWidthHeight(t,this.height)}get height(){return this._config.height.value}set height(t){this.setWidthHeight(this.width,t)}get autoUpdate(){return this._config.autoUpdate.value}set autoUpdate(t){this.setAutoAndInterval(t,this.updateInterval)}get updateInterval(){return this._config.updateInterval.value}set updateInterval(t){this.setAutoAndInterval(this.autoUpdate,t)}get renderDebugFrame(){return this._config.renderDebugFrame.value}set renderDebugFrame(t){this._config.renderDebugFrame.value=t}get threshold(){return this._config.threshold.value}set threshold(t){this._config.threshold.value=t}setWidthHeight(t,s){if(t<=0||s<=0)throw new Error("The width and height of the culler renderer must be more than 0!");this._config.width.value=t,this._config.height.value=s,this.resetRenderTarget()}setAutoAndInterval(t,s){if(s<=0)throw new Error("The updateInterval of the culler renderer must be more than 0!");this._config.autoUpdate.value=t,this._config.updateInterval.value=s,this.resetInterval(t)}resetRenderTarget(){this._component.renderTarget.dispose(),this._component.renderTarget=new M.WebGLRenderTarget(this.width,this.height),this._component.bufferSize=this.width*this.height*4,this._component.buffer=new Uint8Array(this._component.bufferSize)}resetInterval(t){this._interval!==null&&window.clearInterval(this._interval),t&&(this._interval=window.setInterval(async()=>{this._component.preventUpdate||await this._component.updateVisibility()},this.updateInterval))}}class vr{constructor(e,t){g(this,"onSetup",new Q);g(this,"onDisposed",new Q);g(this,"onViewUpdated",new Is);g(this,"enabled",!0);g(this,"needsUpdate",!1);g(this,"components");g(this,"renderTarget",new M.WebGLRenderTarget);g(this,"bufferSize",1);g(this,"buffer",new Uint8Array);g(this,"preventUpdate",!1);g(this,"config");g(this,"isSetup",!1);g(this,"world");g(this,"renderer");g(this,"_defaultConfig",{enabled:!0,height:512,width:512,updateInterval:1e3,autoUpdate:!0,renderDebugFrame:!1,threshold:100});g(this,"worker");g(this,"scene",new M.Scene);g(this,"_availableColor",1);g(this,"_isWorkerBusy",!1);g(this,"updateVisibility",async e=>{if(!this.enabled||!this.needsUpdate&&!e||this._isWorkerBusy)return;this._isWorkerBusy=!0;const t=this.world.camera.three;t.updateMatrix();const{width:s,height:i}=this.config;this.renderer.setSize(s,i),this.renderer.setRenderTarget(this.renderTarget),this.renderer.render(this.scene,t);const n=this.renderer.getContext();await An(n,0,0,s,i,n.RGBA,n.UNSIGNED_BYTE,this.buffer),this.renderer.setRenderTarget(null),this.config.renderDebugFrame&&this.renderer.render(this.scene,t),this.worker.postMessage({buffer:this.buffer}),this.needsUpdate=!1});if(!t.renderer)throw new Error("The given world must have a renderer!");this.components=e,this.config=new Va(this,this.components,"Culler renderer"),this.components.get($t).list.add(this.config),this.world=t,this.renderer=new M.WebGLRenderer,this.renderer.clippingPlanes=t.renderer.clippingPlanes;const i=`
|
|
10
|
+
*/const lt={LEFT:1,RIGHT:2,MIDDLE:4},W=Object.freeze({NONE:0,ROTATE:1,TRUCK:2,OFFSET:4,DOLLY:8,ZOOM:16,TOUCH_ROTATE:32,TOUCH_TRUCK:64,TOUCH_OFFSET:128,TOUCH_DOLLY:256,TOUCH_ZOOM:512,TOUCH_DOLLY_TRUCK:1024,TOUCH_DOLLY_OFFSET:2048,TOUCH_DOLLY_ROTATE:4096,TOUCH_ZOOM_TRUCK:8192,TOUCH_ZOOM_OFFSET:16384,TOUCH_ZOOM_ROTATE:32768}),We={NONE:0,IN:1,OUT:-1};function ye(c){return c.isPerspectiveCamera}function Re(c){return c.isOrthographicCamera}const Xe=Math.PI*2,Ir=Math.PI/2,$r=1e-5,li=Math.PI/180;function Jt(c,i,t){return Math.max(i,Math.min(t,c))}function gt(c,i=$r){return Math.abs(c)<i}function Et(c,i,t=$r){return gt(c-i,t)}function dr(c,i){return Math.round(c/i)*i}function hi(c){return isFinite(c)?c:c<0?-Number.MAX_VALUE:Number.MAX_VALUE}function ui(c){return Math.abs(c)<Number.MAX_VALUE?c:c*(1/0)}function Ki(c,i,t,e,s=1/0,n){e=Math.max(1e-4,e);const r=2/e,o=r*n,a=1/(1+o+.48*o*o+.235*o*o*o);let l=c-i;const h=i,f=s*e;l=Jt(l,-f,f),i=c-l;const I=(t.value+r*l)*n;t.value=(t.value-r*I)*a;let u=i+(l+I)*a;return h-c>0==u>h&&(u=h,t.value=(u-h)/n),u}function Er(c,i,t,e,s=1/0,n,r){e=Math.max(1e-4,e);const o=2/e,a=o*n,l=1/(1+a+.48*a*a+.235*a*a*a);let h=i.x,f=i.y,I=i.z,u=c.x-h,d=c.y-f,E=c.z-I;const T=h,p=f,m=I,F=s*e,R=F*F,S=u*u+d*d+E*E;if(S>R){const U=Math.sqrt(S);u=u/U*F,d=d/U*F,E=E/U*F}h=c.x-u,f=c.y-d,I=c.z-E;const N=(t.x+o*u)*n,L=(t.y+o*d)*n,D=(t.z+o*E)*n;t.x=(t.x-o*N)*l,t.y=(t.y-o*L)*l,t.z=(t.z-o*D)*l,r.x=h+(u+N)*l,r.y=f+(d+L)*l,r.z=I+(E+D)*l;const P=T-c.x,v=p-c.y,z=m-c.z,O=r.x-T,w=r.y-p,g=r.z-m;return P*O+v*w+z*g>0&&(r.x=T,r.y=p,r.z=m,t.x=(r.x-T)/n,t.y=(r.y-p)/n,t.z=(r.z-m)/n),r}function rn(c,i){i.set(0,0),c.forEach(t=>{i.x+=t.clientX,i.y+=t.clientY}),i.x/=c.length,i.y/=c.length}function on(c,i){return Re(c)?(console.warn(`${i} is not supported in OrthographicCamera`),!0):!1}class oc{constructor(){this._listeners={}}addEventListener(i,t){const e=this._listeners;e[i]===void 0&&(e[i]=[]),e[i].indexOf(t)===-1&&e[i].push(t)}hasEventListener(i,t){const e=this._listeners;return e[i]!==void 0&&e[i].indexOf(t)!==-1}removeEventListener(i,t){const s=this._listeners[i];if(s!==void 0){const n=s.indexOf(t);n!==-1&&s.splice(n,1)}}removeAllEventListeners(i){if(!i){this._listeners={};return}Array.isArray(this._listeners[i])&&(this._listeners[i].length=0)}dispatchEvent(i){const e=this._listeners[i.type];if(e!==void 0){i.target=this;const s=e.slice(0);for(let n=0,r=s.length;n<r;n++)s[n].call(this,i)}}}const ac="2.7.3",Ji=1/8,Zr=typeof window<"u",cc=Zr&&/Mac/.test(navigator.platform),lc=!(Zr&&"PointerEvent"in window);let ct,pr,ts,an,xt,ht,dt,$e,fi,oe,ae,Le,Cr,Tr,Ht,Ii,Ze,mr,cn,Rr,ln,hn,es;class bt extends oc{static install(i){ct=i.THREE,pr=Object.freeze(new ct.Vector3(0,0,0)),ts=Object.freeze(new ct.Vector3(0,1,0)),an=Object.freeze(new ct.Vector3(0,0,1)),xt=new ct.Vector2,ht=new ct.Vector3,dt=new ct.Vector3,$e=new ct.Vector3,fi=new ct.Vector3,oe=new ct.Vector3,ae=new ct.Vector3,Le=new ct.Vector3,Cr=new ct.Vector3,Tr=new ct.Vector3,Ht=new ct.Spherical,Ii=new ct.Spherical,Ze=new ct.Box3,mr=new ct.Box3,cn=new ct.Sphere,Rr=new ct.Quaternion,ln=new ct.Quaternion,hn=new ct.Matrix4,es=new ct.Raycaster}static get ACTION(){return W}constructor(i,t){super(),this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.minDistance=Number.EPSILON,this.maxDistance=1/0,this.infinityDolly=!1,this.minZoom=.01,this.maxZoom=1/0,this.smoothTime=.25,this.draggingSmoothTime=.125,this.maxSpeed=1/0,this.azimuthRotateSpeed=1,this.polarRotateSpeed=1,this.dollySpeed=1,this.dollyDragInverted=!1,this.truckSpeed=2,this.dollyToCursor=!1,this.dragToOffset=!1,this.verticalDragToForward=!1,this.boundaryFriction=0,this.restThreshold=.01,this.colliderMeshes=[],this.cancel=()=>{},this._enabled=!0,this._state=W.NONE,this._viewport=null,this._changedDolly=0,this._changedZoom=0,this._hasRested=!0,this._boundaryEnclosesCamera=!1,this._needsUpdate=!0,this._updatedLastTime=!1,this._elementRect=new DOMRect,this._isDragging=!1,this._dragNeedsUpdate=!0,this._activePointers=[],this._lockedPointer=null,this._interactiveArea=new DOMRect(0,0,1,1),this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._isUserControllingOffset=!1,this._isUserControllingZoom=!1,this._lastDollyDirection=We.NONE,this._thetaVelocity={value:0},this._phiVelocity={value:0},this._radiusVelocity={value:0},this._targetVelocity=new ct.Vector3,this._focalOffsetVelocity=new ct.Vector3,this._zoomVelocity={value:0},this._truckInternal=(R,S,N)=>{let L,D;if(ye(this._camera)){const P=ht.copy(this._camera.position).sub(this._target),v=this._camera.getEffectiveFOV()*li,z=P.length()*Math.tan(v*.5);L=this.truckSpeed*R*z/this._elementRect.height,D=this.truckSpeed*S*z/this._elementRect.height}else if(Re(this._camera)){const P=this._camera;L=R*(P.right-P.left)/P.zoom/this._elementRect.width,D=S*(P.top-P.bottom)/P.zoom/this._elementRect.height}else return;this.verticalDragToForward?(N?this.setFocalOffset(this._focalOffsetEnd.x+L,this._focalOffsetEnd.y,this._focalOffsetEnd.z,!0):this.truck(L,0,!0),this.forward(-D,!0)):N?this.setFocalOffset(this._focalOffsetEnd.x+L,this._focalOffsetEnd.y+D,this._focalOffsetEnd.z,!0):this.truck(L,D,!0)},this._rotateInternal=(R,S)=>{const N=Xe*this.azimuthRotateSpeed*R/this._elementRect.height,L=Xe*this.polarRotateSpeed*S/this._elementRect.height;this.rotate(N,L,!0)},this._dollyInternal=(R,S,N)=>{const L=Math.pow(.95,-R*this.dollySpeed),D=this._sphericalEnd.radius,P=this._sphericalEnd.radius*L,v=Jt(P,this.minDistance,this.maxDistance),z=v-P;this.infinityDolly&&this.dollyToCursor?this._dollyToNoClamp(P,!0):this.infinityDolly&&!this.dollyToCursor?(this.dollyInFixed(z,!0),this._dollyToNoClamp(v,!0)):this._dollyToNoClamp(v,!0),this.dollyToCursor&&(this._changedDolly+=(this.infinityDolly?P:v)-D,this._dollyControlCoord.set(S,N)),this._lastDollyDirection=Math.sign(-R)},this._zoomInternal=(R,S,N)=>{const L=Math.pow(.95,R*this.dollySpeed),D=this._zoom,P=this._zoom*L;this.zoomTo(P,!0),this.dollyToCursor&&(this._changedZoom+=P-D,this._dollyControlCoord.set(S,N))},typeof ct>"u"&&console.error("camera-controls: `THREE` is undefined. You must first run `CameraControls.install( { THREE: THREE } )`. Check the docs for further information."),this._camera=i,this._yAxisUpSpace=new ct.Quaternion().setFromUnitVectors(this._camera.up,ts),this._yAxisUpSpaceInverse=this._yAxisUpSpace.clone().invert(),this._state=W.NONE,this._target=new ct.Vector3,this._targetEnd=this._target.clone(),this._focalOffset=new ct.Vector3,this._focalOffsetEnd=this._focalOffset.clone(),this._spherical=new ct.Spherical().setFromVector3(ht.copy(this._camera.position).applyQuaternion(this._yAxisUpSpace)),this._sphericalEnd=this._spherical.clone(),this._lastDistance=this._spherical.radius,this._zoom=this._camera.zoom,this._zoomEnd=this._zoom,this._lastZoom=this._zoom,this._nearPlaneCorners=[new ct.Vector3,new ct.Vector3,new ct.Vector3,new ct.Vector3],this._updateNearPlaneCorners(),this._boundary=new ct.Box3(new ct.Vector3(-1/0,-1/0,-1/0),new ct.Vector3(1/0,1/0,1/0)),this._cameraUp0=this._camera.up.clone(),this._target0=this._target.clone(),this._position0=this._camera.position.clone(),this._zoom0=this._zoom,this._focalOffset0=this._focalOffset.clone(),this._dollyControlCoord=new ct.Vector2,this.mouseButtons={left:W.ROTATE,middle:W.DOLLY,right:W.TRUCK,wheel:ye(this._camera)?W.DOLLY:Re(this._camera)?W.ZOOM:W.NONE},this.touches={one:W.TOUCH_ROTATE,two:ye(this._camera)?W.TOUCH_DOLLY_TRUCK:Re(this._camera)?W.TOUCH_ZOOM_TRUCK:W.NONE,three:W.TOUCH_TRUCK};const e=new ct.Vector2,s=new ct.Vector2,n=new ct.Vector2,r=R=>{if(!this._enabled||!this._domElement)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const L=this._domElement.getBoundingClientRect(),D=R.clientX/L.width,P=R.clientY/L.height;if(D<this._interactiveArea.left||D>this._interactiveArea.right||P<this._interactiveArea.top||P>this._interactiveArea.bottom)return}const S=R.pointerType!=="mouse"?null:(R.buttons<.LEFT)===lt.LEFT?lt.LEFT:(R.buttons<.MIDDLE)===lt.MIDDLE?lt.MIDDLE:(R.buttons<.RIGHT)===lt.RIGHT?lt.RIGHT:null;if(S!==null){const L=this._findPointerByMouseButton(S);L&&this._disposePointer(L)}if((R.buttons<.LEFT)===lt.LEFT&&this._lockedPointer)return;const N={pointerId:R.pointerId,clientX:R.clientX,clientY:R.clientY,deltaX:0,deltaY:0,mouseButton:S};this._activePointers.push(N),this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.ownerDocument.addEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",h),this._isDragging=!0,E(R)},o=R=>{if(!this._enabled||!this._domElement||this._lockedPointer)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const L=this._domElement.getBoundingClientRect(),D=R.clientX/L.width,P=R.clientY/L.height;if(D<this._interactiveArea.left||D>this._interactiveArea.right||P<this._interactiveArea.top||P>this._interactiveArea.bottom)return}const S=(R.buttons<.LEFT)===lt.LEFT?lt.LEFT:(R.buttons<.MIDDLE)===lt.MIDDLE?lt.MIDDLE:(R.buttons<.RIGHT)===lt.RIGHT?lt.RIGHT:null;if(S!==null){const L=this._findPointerByMouseButton(S);L&&this._disposePointer(L)}const N={pointerId:1,clientX:R.clientX,clientY:R.clientY,deltaX:0,deltaY:0,mouseButton:(R.buttons<.LEFT)===lt.LEFT?lt.LEFT:(R.buttons<.MIDDLE)===lt.LEFT?lt.MIDDLE:(R.buttons<.RIGHT)===lt.LEFT?lt.RIGHT:null};this._activePointers.push(N),this._domElement.ownerDocument.removeEventListener("mousemove",l),this._domElement.ownerDocument.removeEventListener("mouseup",f),this._domElement.ownerDocument.addEventListener("mousemove",l),this._domElement.ownerDocument.addEventListener("mouseup",f),this._isDragging=!0,E(R)},a=R=>{R.cancelable&&R.preventDefault();const S=R.pointerId,N=this._lockedPointer||this._findPointerById(S);if(N){if(N.clientX=R.clientX,N.clientY=R.clientY,N.deltaX=R.movementX,N.deltaY=R.movementY,this._state=0,R.pointerType==="touch")switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else(!this._isDragging&&this._lockedPointer||this._isDragging&&(R.buttons<.LEFT)===lt.LEFT)&&(this._state=this._state|this.mouseButtons.left),this._isDragging&&(R.buttons<.MIDDLE)===lt.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),this._isDragging&&(R.buttons<.RIGHT)===lt.RIGHT&&(this._state=this._state|this.mouseButtons.right);T()}},l=R=>{const S=this._lockedPointer||this._findPointerById(1);S&&(S.clientX=R.clientX,S.clientY=R.clientY,S.deltaX=R.movementX,S.deltaY=R.movementY,this._state=0,(this._lockedPointer||(R.buttons<.LEFT)===lt.LEFT)&&(this._state=this._state|this.mouseButtons.left),(R.buttons<.MIDDLE)===lt.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(R.buttons<.RIGHT)===lt.RIGHT&&(this._state=this._state|this.mouseButtons.right),T())},h=R=>{const S=this._findPointerById(R.pointerId);if(!(S&&S===this._lockedPointer)){if(S&&this._disposePointer(S),R.pointerType==="touch")switch(this._activePointers.length){case 0:this._state=W.NONE;break;case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else this._state=W.NONE;p()}},f=()=>{const R=this._findPointerById(1);R&&R===this._lockedPointer||(R&&this._disposePointer(R),this._state=W.NONE,p())};let I=-1;const u=R=>{if(!this._domElement||!this._enabled||this.mouseButtons.wheel===W.NONE)return;if(this._interactiveArea.left!==0||this._interactiveArea.top!==0||this._interactiveArea.width!==1||this._interactiveArea.height!==1){const P=this._domElement.getBoundingClientRect(),v=R.clientX/P.width,z=R.clientY/P.height;if(v<this._interactiveArea.left||v>this._interactiveArea.right||z<this._interactiveArea.top||z>this._interactiveArea.bottom)return}if(R.preventDefault(),this.dollyToCursor||this.mouseButtons.wheel===W.ROTATE||this.mouseButtons.wheel===W.TRUCK){const P=performance.now();I-P<1e3&&this._getClientRect(this._elementRect),I=P}const S=cc?-1:-3,N=R.deltaMode===1?R.deltaY/S:R.deltaY/(S*10),L=this.dollyToCursor?(R.clientX-this._elementRect.x)/this._elementRect.width*2-1:0,D=this.dollyToCursor?(R.clientY-this._elementRect.y)/this._elementRect.height*-2+1:0;switch(this.mouseButtons.wheel){case W.ROTATE:{this._rotateInternal(R.deltaX,R.deltaY),this._isUserControllingRotate=!0;break}case W.TRUCK:{this._truckInternal(R.deltaX,R.deltaY,!1),this._isUserControllingTruck=!0;break}case W.OFFSET:{this._truckInternal(R.deltaX,R.deltaY,!0),this._isUserControllingOffset=!0;break}case W.DOLLY:{this._dollyInternal(-N,L,D),this._isUserControllingDolly=!0;break}case W.ZOOM:{this._zoomInternal(-N,L,D),this._isUserControllingZoom=!0;break}}this.dispatchEvent({type:"control"})},d=R=>{if(!(!this._domElement||!this._enabled)){if(this.mouseButtons.right===bt.ACTION.NONE){const S=R instanceof PointerEvent?R.pointerId:(R instanceof MouseEvent,0),N=this._findPointerById(S);N&&this._disposePointer(N),this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.ownerDocument.removeEventListener("mousemove",l),this._domElement.ownerDocument.removeEventListener("mouseup",f);return}R.preventDefault()}},E=R=>{if(!this._enabled)return;if(rn(this._activePointers,xt),this._getClientRect(this._elementRect),e.copy(xt),s.copy(xt),this._activePointers.length>=2){const N=xt.x-this._activePointers[1].clientX,L=xt.y-this._activePointers[1].clientY,D=Math.sqrt(N*N+L*L);n.set(0,D);const P=(this._activePointers[0].clientX+this._activePointers[1].clientX)*.5,v=(this._activePointers[0].clientY+this._activePointers[1].clientY)*.5;s.set(P,v)}if(this._state=0,!R)this._lockedPointer&&(this._state=this._state|this.mouseButtons.left);else if("pointerType"in R&&R.pointerType==="touch")switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else!this._lockedPointer&&(R.buttons<.LEFT)===lt.LEFT&&(this._state=this._state|this.mouseButtons.left),(R.buttons<.MIDDLE)===lt.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(R.buttons<.RIGHT)===lt.RIGHT&&(this._state=this._state|this.mouseButtons.right);((this._state&W.ROTATE)===W.ROTATE||(this._state&W.TOUCH_ROTATE)===W.TOUCH_ROTATE||(this._state&W.TOUCH_DOLLY_ROTATE)===W.TOUCH_DOLLY_ROTATE||(this._state&W.TOUCH_ZOOM_ROTATE)===W.TOUCH_ZOOM_ROTATE)&&(this._sphericalEnd.theta=this._spherical.theta,this._sphericalEnd.phi=this._spherical.phi,this._thetaVelocity.value=0,this._phiVelocity.value=0),((this._state&W.TRUCK)===W.TRUCK||(this._state&W.TOUCH_TRUCK)===W.TOUCH_TRUCK||(this._state&W.TOUCH_DOLLY_TRUCK)===W.TOUCH_DOLLY_TRUCK||(this._state&W.TOUCH_ZOOM_TRUCK)===W.TOUCH_ZOOM_TRUCK)&&(this._targetEnd.copy(this._target),this._targetVelocity.set(0,0,0)),((this._state&W.DOLLY)===W.DOLLY||(this._state&W.TOUCH_DOLLY)===W.TOUCH_DOLLY||(this._state&W.TOUCH_DOLLY_TRUCK)===W.TOUCH_DOLLY_TRUCK||(this._state&W.TOUCH_DOLLY_OFFSET)===W.TOUCH_DOLLY_OFFSET||(this._state&W.TOUCH_DOLLY_ROTATE)===W.TOUCH_DOLLY_ROTATE)&&(this._sphericalEnd.radius=this._spherical.radius,this._radiusVelocity.value=0),((this._state&W.ZOOM)===W.ZOOM||(this._state&W.TOUCH_ZOOM)===W.TOUCH_ZOOM||(this._state&W.TOUCH_ZOOM_TRUCK)===W.TOUCH_ZOOM_TRUCK||(this._state&W.TOUCH_ZOOM_OFFSET)===W.TOUCH_ZOOM_OFFSET||(this._state&W.TOUCH_ZOOM_ROTATE)===W.TOUCH_ZOOM_ROTATE)&&(this._zoomEnd=this._zoom,this._zoomVelocity.value=0),((this._state&W.OFFSET)===W.OFFSET||(this._state&W.TOUCH_OFFSET)===W.TOUCH_OFFSET||(this._state&W.TOUCH_DOLLY_OFFSET)===W.TOUCH_DOLLY_OFFSET||(this._state&W.TOUCH_ZOOM_OFFSET)===W.TOUCH_ZOOM_OFFSET)&&(this._focalOffsetEnd.copy(this._focalOffset),this._focalOffsetVelocity.set(0,0,0)),this.dispatchEvent({type:"controlstart"})},T=()=>{if(!this._enabled||!this._dragNeedsUpdate)return;this._dragNeedsUpdate=!1,rn(this._activePointers,xt);const S=this._domElement&&document.pointerLockElement===this._domElement?this._lockedPointer||this._activePointers[0]:null,N=S?-S.deltaX:s.x-xt.x,L=S?-S.deltaY:s.y-xt.y;if(s.copy(xt),((this._state&W.ROTATE)===W.ROTATE||(this._state&W.TOUCH_ROTATE)===W.TOUCH_ROTATE||(this._state&W.TOUCH_DOLLY_ROTATE)===W.TOUCH_DOLLY_ROTATE||(this._state&W.TOUCH_ZOOM_ROTATE)===W.TOUCH_ZOOM_ROTATE)&&(this._rotateInternal(N,L),this._isUserControllingRotate=!0),(this._state&W.DOLLY)===W.DOLLY||(this._state&W.ZOOM)===W.ZOOM){const D=this.dollyToCursor?(e.x-this._elementRect.x)/this._elementRect.width*2-1:0,P=this.dollyToCursor?(e.y-this._elementRect.y)/this._elementRect.height*-2+1:0,v=this.dollyDragInverted?-1:1;(this._state&W.DOLLY)===W.DOLLY?(this._dollyInternal(v*L*Ji,D,P),this._isUserControllingDolly=!0):(this._zoomInternal(v*L*Ji,D,P),this._isUserControllingZoom=!0)}if((this._state&W.TOUCH_DOLLY)===W.TOUCH_DOLLY||(this._state&W.TOUCH_ZOOM)===W.TOUCH_ZOOM||(this._state&W.TOUCH_DOLLY_TRUCK)===W.TOUCH_DOLLY_TRUCK||(this._state&W.TOUCH_ZOOM_TRUCK)===W.TOUCH_ZOOM_TRUCK||(this._state&W.TOUCH_DOLLY_OFFSET)===W.TOUCH_DOLLY_OFFSET||(this._state&W.TOUCH_ZOOM_OFFSET)===W.TOUCH_ZOOM_OFFSET||(this._state&W.TOUCH_DOLLY_ROTATE)===W.TOUCH_DOLLY_ROTATE||(this._state&W.TOUCH_ZOOM_ROTATE)===W.TOUCH_ZOOM_ROTATE){const D=xt.x-this._activePointers[1].clientX,P=xt.y-this._activePointers[1].clientY,v=Math.sqrt(D*D+P*P),z=n.y-v;n.set(0,v);const O=this.dollyToCursor?(s.x-this._elementRect.x)/this._elementRect.width*2-1:0,w=this.dollyToCursor?(s.y-this._elementRect.y)/this._elementRect.height*-2+1:0;(this._state&W.TOUCH_DOLLY)===W.TOUCH_DOLLY||(this._state&W.TOUCH_DOLLY_ROTATE)===W.TOUCH_DOLLY_ROTATE||(this._state&W.TOUCH_DOLLY_TRUCK)===W.TOUCH_DOLLY_TRUCK||(this._state&W.TOUCH_DOLLY_OFFSET)===W.TOUCH_DOLLY_OFFSET?(this._dollyInternal(z*Ji,O,w),this._isUserControllingDolly=!0):(this._zoomInternal(z*Ji,O,w),this._isUserControllingZoom=!0)}((this._state&W.TRUCK)===W.TRUCK||(this._state&W.TOUCH_TRUCK)===W.TOUCH_TRUCK||(this._state&W.TOUCH_DOLLY_TRUCK)===W.TOUCH_DOLLY_TRUCK||(this._state&W.TOUCH_ZOOM_TRUCK)===W.TOUCH_ZOOM_TRUCK)&&(this._truckInternal(N,L,!1),this._isUserControllingTruck=!0),((this._state&W.OFFSET)===W.OFFSET||(this._state&W.TOUCH_OFFSET)===W.TOUCH_OFFSET||(this._state&W.TOUCH_DOLLY_OFFSET)===W.TOUCH_DOLLY_OFFSET||(this._state&W.TOUCH_ZOOM_OFFSET)===W.TOUCH_ZOOM_OFFSET)&&(this._truckInternal(N,L,!0),this._isUserControllingOffset=!0),this.dispatchEvent({type:"control"})},p=()=>{rn(this._activePointers,xt),s.copy(xt),this._dragNeedsUpdate=!1,(this._activePointers.length===0||this._activePointers.length===1&&this._activePointers[0]===this._lockedPointer)&&(this._isDragging=!1),this._activePointers.length===0&&this._domElement&&(this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("mousemove",l),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.ownerDocument.removeEventListener("mouseup",f),this.dispatchEvent({type:"controlend"}))};this.lockPointer=()=>{!this._enabled||!this._domElement||(this.cancel(),this._lockedPointer={pointerId:-1,clientX:0,clientY:0,deltaX:0,deltaY:0,mouseButton:null},this._activePointers.push(this._lockedPointer),this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.requestPointerLock(),this._domElement.ownerDocument.addEventListener("pointerlockchange",m),this._domElement.ownerDocument.addEventListener("pointerlockerror",F),this._domElement.ownerDocument.addEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",h),E())},this.unlockPointer=()=>{this._lockedPointer!==null&&(this._disposePointer(this._lockedPointer),this._lockedPointer=null),document.exitPointerLock(),this.cancel(),this._domElement&&(this._domElement.ownerDocument.removeEventListener("pointerlockchange",m),this._domElement.ownerDocument.removeEventListener("pointerlockerror",F))};const m=()=>{this._domElement&&this._domElement.ownerDocument.pointerLockElement===this._domElement||this.unlockPointer()},F=()=>{this.unlockPointer()};this._addAllEventListeners=R=>{this._domElement=R,this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none",this._domElement.addEventListener("pointerdown",r),lc&&this._domElement.addEventListener("mousedown",o),this._domElement.addEventListener("pointercancel",h),this._domElement.addEventListener("wheel",u,{passive:!1}),this._domElement.addEventListener("contextmenu",d)},this._removeAllEventListeners=()=>{this._domElement&&(this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect="",this._domElement.removeEventListener("pointerdown",r),this._domElement.removeEventListener("mousedown",o),this._domElement.removeEventListener("pointercancel",h),this._domElement.removeEventListener("wheel",u,{passive:!1}),this._domElement.removeEventListener("contextmenu",d),this._domElement.ownerDocument.removeEventListener("pointermove",a,{passive:!1}),this._domElement.ownerDocument.removeEventListener("mousemove",l),this._domElement.ownerDocument.removeEventListener("pointerup",h),this._domElement.ownerDocument.removeEventListener("mouseup",f),this._domElement.ownerDocument.removeEventListener("pointerlockchange",m),this._domElement.ownerDocument.removeEventListener("pointerlockerror",F))},this.cancel=()=>{this._state!==W.NONE&&(this._state=W.NONE,this._activePointers.length=0,p())},t&&this.connect(t),this.update(0)}get camera(){return this._camera}set camera(i){this._camera=i,this.updateCameraUp(),this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0}get enabled(){return this._enabled}set enabled(i){this._enabled=i,this._domElement&&(i?(this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none"):(this.cancel(),this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect=""))}get active(){return!this._hasRested}get currentAction(){return this._state}get distance(){return this._spherical.radius}set distance(i){this._spherical.radius===i&&this._sphericalEnd.radius===i||(this._spherical.radius=i,this._sphericalEnd.radius=i,this._needsUpdate=!0)}get azimuthAngle(){return this._spherical.theta}set azimuthAngle(i){this._spherical.theta===i&&this._sphericalEnd.theta===i||(this._spherical.theta=i,this._sphericalEnd.theta=i,this._needsUpdate=!0)}get polarAngle(){return this._spherical.phi}set polarAngle(i){this._spherical.phi===i&&this._sphericalEnd.phi===i||(this._spherical.phi=i,this._sphericalEnd.phi=i,this._needsUpdate=!0)}get boundaryEnclosesCamera(){return this._boundaryEnclosesCamera}set boundaryEnclosesCamera(i){this._boundaryEnclosesCamera=i,this._needsUpdate=!0}set interactiveArea(i){this._interactiveArea.width=Jt(i.width,0,1),this._interactiveArea.height=Jt(i.height,0,1),this._interactiveArea.x=Jt(i.x,0,1-this._interactiveArea.width),this._interactiveArea.y=Jt(i.y,0,1-this._interactiveArea.height)}addEventListener(i,t){super.addEventListener(i,t)}removeEventListener(i,t){super.removeEventListener(i,t)}rotate(i,t,e=!1){return this.rotateTo(this._sphericalEnd.theta+i,this._sphericalEnd.phi+t,e)}rotateAzimuthTo(i,t=!1){return this.rotateTo(i,this._sphericalEnd.phi,t)}rotatePolarTo(i,t=!1){return this.rotateTo(this._sphericalEnd.theta,i,t)}rotateTo(i,t,e=!1){this._isUserControllingRotate=!1;const s=Jt(i,this.minAzimuthAngle,this.maxAzimuthAngle),n=Jt(t,this.minPolarAngle,this.maxPolarAngle);this._sphericalEnd.theta=s,this._sphericalEnd.phi=n,this._sphericalEnd.makeSafe(),this._needsUpdate=!0,e||(this._spherical.theta=this._sphericalEnd.theta,this._spherical.phi=this._sphericalEnd.phi);const r=!e||Et(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Et(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold);return this._createOnRestPromise(r)}dolly(i,t=!1){return this.dollyTo(this._sphericalEnd.radius-i,t)}dollyTo(i,t=!1){return this._isUserControllingDolly=!1,this._lastDollyDirection=We.NONE,this._changedDolly=0,this._dollyToNoClamp(Jt(i,this.minDistance,this.maxDistance),t)}_dollyToNoClamp(i,t=!1){const e=this._sphericalEnd.radius;if(this.colliderMeshes.length>=1){const r=this._collisionTest(),o=Et(r,this._spherical.radius);if(!(e>i)&&o)return Promise.resolve();this._sphericalEnd.radius=Math.min(i,r)}else this._sphericalEnd.radius=i;this._needsUpdate=!0,t||(this._spherical.radius=this._sphericalEnd.radius);const n=!t||Et(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(n)}dollyInFixed(i,t=!1){this._targetEnd.add(this._getCameraDirection(fi).multiplyScalar(i)),t||this._target.copy(this._targetEnd);const e=!t||Et(this._target.x,this._targetEnd.x,this.restThreshold)&&Et(this._target.y,this._targetEnd.y,this.restThreshold)&&Et(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(e)}zoom(i,t=!1){return this.zoomTo(this._zoomEnd+i,t)}zoomTo(i,t=!1){this._isUserControllingZoom=!1,this._zoomEnd=Jt(i,this.minZoom,this.maxZoom),this._needsUpdate=!0,t||(this._zoom=this._zoomEnd);const e=!t||Et(this._zoom,this._zoomEnd,this.restThreshold);return this._changedZoom=0,this._createOnRestPromise(e)}pan(i,t,e=!1){return console.warn("`pan` has been renamed to `truck`"),this.truck(i,t,e)}truck(i,t,e=!1){this._camera.updateMatrix(),oe.setFromMatrixColumn(this._camera.matrix,0),ae.setFromMatrixColumn(this._camera.matrix,1),oe.multiplyScalar(i),ae.multiplyScalar(-t);const s=ht.copy(oe).add(ae),n=dt.copy(this._targetEnd).add(s);return this.moveTo(n.x,n.y,n.z,e)}forward(i,t=!1){ht.setFromMatrixColumn(this._camera.matrix,0),ht.crossVectors(this._camera.up,ht),ht.multiplyScalar(i);const e=dt.copy(this._targetEnd).add(ht);return this.moveTo(e.x,e.y,e.z,t)}elevate(i,t=!1){return ht.copy(this._camera.up).multiplyScalar(i),this.moveTo(this._targetEnd.x+ht.x,this._targetEnd.y+ht.y,this._targetEnd.z+ht.z,t)}moveTo(i,t,e,s=!1){this._isUserControllingTruck=!1;const n=ht.set(i,t,e).sub(this._targetEnd);this._encloseToBoundary(this._targetEnd,n,this.boundaryFriction),this._needsUpdate=!0,s||this._target.copy(this._targetEnd);const r=!s||Et(this._target.x,this._targetEnd.x,this.restThreshold)&&Et(this._target.y,this._targetEnd.y,this.restThreshold)&&Et(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(r)}lookInDirectionOf(i,t,e,s=!1){const o=ht.set(i,t,e).sub(this._targetEnd).normalize().multiplyScalar(-this._sphericalEnd.radius);return this.setPosition(o.x,o.y,o.z,s)}fitToBox(i,t,{cover:e=!1,paddingLeft:s=0,paddingRight:n=0,paddingBottom:r=0,paddingTop:o=0}={}){const a=[],l=i.isBox3?Ze.copy(i):Ze.setFromObject(i);l.isEmpty()&&(console.warn("camera-controls: fitTo() cannot be used with an empty box. Aborting"),Promise.resolve());const h=dr(this._sphericalEnd.theta,Ir),f=dr(this._sphericalEnd.phi,Ir);a.push(this.rotateTo(h,f,t));const I=ht.setFromSpherical(this._sphericalEnd).normalize(),u=Rr.setFromUnitVectors(I,an),d=Et(Math.abs(I.y),1);d&&u.multiply(ln.setFromAxisAngle(ts,h)),u.multiply(this._yAxisUpSpaceInverse);const E=mr.makeEmpty();dt.copy(l.min).applyQuaternion(u),E.expandByPoint(dt),dt.copy(l.min).setX(l.max.x).applyQuaternion(u),E.expandByPoint(dt),dt.copy(l.min).setY(l.max.y).applyQuaternion(u),E.expandByPoint(dt),dt.copy(l.max).setZ(l.min.z).applyQuaternion(u),E.expandByPoint(dt),dt.copy(l.min).setZ(l.max.z).applyQuaternion(u),E.expandByPoint(dt),dt.copy(l.max).setY(l.min.y).applyQuaternion(u),E.expandByPoint(dt),dt.copy(l.max).setX(l.min.x).applyQuaternion(u),E.expandByPoint(dt),dt.copy(l.max).applyQuaternion(u),E.expandByPoint(dt),E.min.x-=s,E.min.y-=r,E.max.x+=n,E.max.y+=o,u.setFromUnitVectors(an,I),d&&u.premultiply(ln.invert()),u.premultiply(this._yAxisUpSpace);const T=E.getSize(ht),p=E.getCenter(dt).applyQuaternion(u);if(ye(this._camera)){const m=this.getDistanceToFitBox(T.x,T.y,T.z,e);a.push(this.moveTo(p.x,p.y,p.z,t)),a.push(this.dollyTo(m,t)),a.push(this.setFocalOffset(0,0,0,t))}else if(Re(this._camera)){const m=this._camera,F=m.right-m.left,R=m.top-m.bottom,S=e?Math.max(F/T.x,R/T.y):Math.min(F/T.x,R/T.y);a.push(this.moveTo(p.x,p.y,p.z,t)),a.push(this.zoomTo(S,t)),a.push(this.setFocalOffset(0,0,0,t))}return Promise.all(a)}fitToSphere(i,t){const e=[],n=i instanceof ct.Sphere?cn.copy(i):bt.createBoundingSphere(i,cn);if(e.push(this.moveTo(n.center.x,n.center.y,n.center.z,t)),ye(this._camera)){const r=this.getDistanceToFitSphere(n.radius);e.push(this.dollyTo(r,t))}else if(Re(this._camera)){const r=this._camera.right-this._camera.left,o=this._camera.top-this._camera.bottom,a=2*n.radius,l=Math.min(r/a,o/a);e.push(this.zoomTo(l,t))}return e.push(this.setFocalOffset(0,0,0,t)),Promise.all(e)}setLookAt(i,t,e,s,n,r,o=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=We.NONE,this._changedDolly=0;const a=dt.set(s,n,r),l=ht.set(i,t,e);this._targetEnd.copy(a),this._sphericalEnd.setFromVector3(l.sub(a).applyQuaternion(this._yAxisUpSpace)),this.normalizeRotations(),this._needsUpdate=!0,o||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const h=!o||Et(this._target.x,this._targetEnd.x,this.restThreshold)&&Et(this._target.y,this._targetEnd.y,this.restThreshold)&&Et(this._target.z,this._targetEnd.z,this.restThreshold)&&Et(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Et(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&Et(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(h)}lerpLookAt(i,t,e,s,n,r,o,a,l,h,f,I,u,d=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._lastDollyDirection=We.NONE,this._changedDolly=0;const E=ht.set(s,n,r),T=dt.set(i,t,e);Ht.setFromVector3(T.sub(E).applyQuaternion(this._yAxisUpSpace));const p=$e.set(h,f,I),m=dt.set(o,a,l);Ii.setFromVector3(m.sub(p).applyQuaternion(this._yAxisUpSpace)),this._targetEnd.copy(E.lerp(p,u));const F=Ii.theta-Ht.theta,R=Ii.phi-Ht.phi,S=Ii.radius-Ht.radius;this._sphericalEnd.set(Ht.radius+S*u,Ht.phi+R*u,Ht.theta+F*u),this.normalizeRotations(),this._needsUpdate=!0,d||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));const N=!d||Et(this._target.x,this._targetEnd.x,this.restThreshold)&&Et(this._target.y,this._targetEnd.y,this.restThreshold)&&Et(this._target.z,this._targetEnd.z,this.restThreshold)&&Et(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Et(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&Et(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(N)}setPosition(i,t,e,s=!1){return this.setLookAt(i,t,e,this._targetEnd.x,this._targetEnd.y,this._targetEnd.z,s)}setTarget(i,t,e,s=!1){const n=this.getPosition(ht),r=this.setLookAt(n.x,n.y,n.z,i,t,e,s);return this._sphericalEnd.phi=Jt(this._sphericalEnd.phi,this.minPolarAngle,this.maxPolarAngle),r}setFocalOffset(i,t,e,s=!1){this._isUserControllingOffset=!1,this._focalOffsetEnd.set(i,t,e),this._needsUpdate=!0,s||this._focalOffset.copy(this._focalOffsetEnd);const n=!s||Et(this._focalOffset.x,this._focalOffsetEnd.x,this.restThreshold)&&Et(this._focalOffset.y,this._focalOffsetEnd.y,this.restThreshold)&&Et(this._focalOffset.z,this._focalOffsetEnd.z,this.restThreshold);return this._createOnRestPromise(n)}setOrbitPoint(i,t,e){this._camera.updateMatrixWorld(),oe.setFromMatrixColumn(this._camera.matrixWorldInverse,0),ae.setFromMatrixColumn(this._camera.matrixWorldInverse,1),Le.setFromMatrixColumn(this._camera.matrixWorldInverse,2);const s=ht.set(i,t,e),n=s.distanceTo(this._camera.position),r=s.sub(this._camera.position);oe.multiplyScalar(r.x),ae.multiplyScalar(r.y),Le.multiplyScalar(r.z),ht.copy(oe).add(ae).add(Le),ht.z=ht.z+n,this.dollyTo(n,!1),this.setFocalOffset(-ht.x,ht.y,-ht.z,!1),this.moveTo(i,t,e,!1)}setBoundary(i){if(!i){this._boundary.min.set(-1/0,-1/0,-1/0),this._boundary.max.set(1/0,1/0,1/0),this._needsUpdate=!0;return}this._boundary.copy(i),this._boundary.clampPoint(this._targetEnd,this._targetEnd),this._needsUpdate=!0}setViewport(i,t,e,s){if(i===null){this._viewport=null;return}this._viewport=this._viewport||new ct.Vector4,typeof i=="number"?this._viewport.set(i,t,e,s):this._viewport.copy(i)}getDistanceToFitBox(i,t,e,s=!1){if(on(this._camera,"getDistanceToFitBox"))return this._spherical.radius;const n=i/t,r=this._camera.getEffectiveFOV()*li,o=this._camera.aspect;return((s?n>o:n<o)?t:i/o)*.5/Math.tan(r*.5)+e*.5}getDistanceToFitSphere(i){if(on(this._camera,"getDistanceToFitSphere"))return this._spherical.radius;const t=this._camera.getEffectiveFOV()*li,e=Math.atan(Math.tan(t*.5)*this._camera.aspect)*2,s=1<this._camera.aspect?t:e;return i/Math.sin(s*.5)}getTarget(i,t=!0){return(i&&i.isVector3?i:new ct.Vector3).copy(t?this._targetEnd:this._target)}getPosition(i,t=!0){return(i&&i.isVector3?i:new ct.Vector3).setFromSpherical(t?this._sphericalEnd:this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(t?this._targetEnd:this._target)}getSpherical(i,t=!0){return(i&&i instanceof ct.Spherical?i:new ct.Spherical).copy(t?this._sphericalEnd:this._spherical)}getFocalOffset(i,t=!0){return(i&&i.isVector3?i:new ct.Vector3).copy(t?this._focalOffsetEnd:this._focalOffset)}normalizeRotations(){this._sphericalEnd.theta=this._sphericalEnd.theta%Xe,this._sphericalEnd.theta<0&&(this._sphericalEnd.theta+=Xe),this._spherical.theta+=Xe*Math.round((this._sphericalEnd.theta-this._spherical.theta)/Xe)}reset(i=!1){if(!Et(this._camera.up.x,this._cameraUp0.x)||!Et(this._camera.up.y,this._cameraUp0.y)||!Et(this._camera.up.z,this._cameraUp0.z)){this._camera.up.copy(this._cameraUp0);const e=this.getPosition(ht);this.updateCameraUp(),this.setPosition(e.x,e.y,e.z)}const t=[this.setLookAt(this._position0.x,this._position0.y,this._position0.z,this._target0.x,this._target0.y,this._target0.z,i),this.setFocalOffset(this._focalOffset0.x,this._focalOffset0.y,this._focalOffset0.z,i),this.zoomTo(this._zoom0,i)];return Promise.all(t)}saveState(){this._cameraUp0.copy(this._camera.up),this.getTarget(this._target0),this.getPosition(this._position0),this._zoom0=this._zoom,this._focalOffset0.copy(this._focalOffset)}updateCameraUp(){this._yAxisUpSpace.setFromUnitVectors(this._camera.up,ts),this._yAxisUpSpaceInverse.copy(this._yAxisUpSpace).invert()}applyCameraUp(){const i=ht.subVectors(this._target,this._camera.position).normalize(),t=dt.crossVectors(i,this._camera.up);this._camera.up.crossVectors(t,i).normalize(),this._camera.updateMatrixWorld();const e=this.getPosition(ht);this.updateCameraUp(),this.setPosition(e.x,e.y,e.z)}update(i){const t=this._sphericalEnd.theta-this._spherical.theta,e=this._sphericalEnd.phi-this._spherical.phi,s=this._sphericalEnd.radius-this._spherical.radius,n=Cr.subVectors(this._targetEnd,this._target),r=Tr.subVectors(this._focalOffsetEnd,this._focalOffset),o=this._zoomEnd-this._zoom;if(gt(t))this._thetaVelocity.value=0,this._spherical.theta=this._sphericalEnd.theta;else{const f=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.theta=Ki(this._spherical.theta,this._sphericalEnd.theta,this._thetaVelocity,f,1/0,i),this._needsUpdate=!0}if(gt(e))this._phiVelocity.value=0,this._spherical.phi=this._sphericalEnd.phi;else{const f=this._isUserControllingRotate?this.draggingSmoothTime:this.smoothTime;this._spherical.phi=Ki(this._spherical.phi,this._sphericalEnd.phi,this._phiVelocity,f,1/0,i),this._needsUpdate=!0}if(gt(s))this._radiusVelocity.value=0,this._spherical.radius=this._sphericalEnd.radius;else{const f=this._isUserControllingDolly?this.draggingSmoothTime:this.smoothTime;this._spherical.radius=Ki(this._spherical.radius,this._sphericalEnd.radius,this._radiusVelocity,f,this.maxSpeed,i),this._needsUpdate=!0}if(gt(n.x)&>(n.y)&>(n.z))this._targetVelocity.set(0,0,0),this._target.copy(this._targetEnd);else{const f=this._isUserControllingTruck?this.draggingSmoothTime:this.smoothTime;Er(this._target,this._targetEnd,this._targetVelocity,f,this.maxSpeed,i,this._target),this._needsUpdate=!0}if(gt(r.x)&>(r.y)&>(r.z))this._focalOffsetVelocity.set(0,0,0),this._focalOffset.copy(this._focalOffsetEnd);else{const f=this._isUserControllingOffset?this.draggingSmoothTime:this.smoothTime;Er(this._focalOffset,this._focalOffsetEnd,this._focalOffsetVelocity,f,this.maxSpeed,i,this._focalOffset),this._needsUpdate=!0}if(gt(o))this._zoomVelocity.value=0,this._zoom=this._zoomEnd;else{const f=this._isUserControllingZoom?this.draggingSmoothTime:this.smoothTime;this._zoom=Ki(this._zoom,this._zoomEnd,this._zoomVelocity,f,1/0,i)}if(this.dollyToCursor){if(ye(this._camera)&&this._changedDolly!==0){const f=this._spherical.radius-this._lastDistance,I=this._camera,u=this._getCameraDirection(fi),d=ht.copy(u).cross(I.up).normalize();d.lengthSq()===0&&(d.x=1);const E=dt.crossVectors(d,u),T=this._sphericalEnd.radius*Math.tan(I.getEffectiveFOV()*li*.5),m=(this._sphericalEnd.radius-f-this._sphericalEnd.radius)/this._sphericalEnd.radius,F=$e.copy(this._targetEnd).add(d.multiplyScalar(this._dollyControlCoord.x*T*I.aspect)).add(E.multiplyScalar(this._dollyControlCoord.y*T)),R=ht.copy(this._targetEnd).lerp(F,m),S=this._lastDollyDirection===We.IN&&this._spherical.radius<=this.minDistance,N=this._lastDollyDirection===We.OUT&&this.maxDistance<=this._spherical.radius;if(this.infinityDolly&&(S||N)){this._sphericalEnd.radius-=f,this._spherical.radius-=f;const D=dt.copy(u).multiplyScalar(-f);R.add(D)}this._boundary.clampPoint(R,R);const L=dt.subVectors(R,this._targetEnd);this._targetEnd.copy(R),this._target.add(L),this._changedDolly-=f,gt(this._changedDolly)&&(this._changedDolly=0)}else if(Re(this._camera)&&this._changedZoom!==0){const f=this._zoom-this._lastZoom,I=this._camera,u=ht.set(this._dollyControlCoord.x,this._dollyControlCoord.y,(I.near+I.far)/(I.near-I.far)).unproject(I),d=dt.set(0,0,-1).applyQuaternion(I.quaternion),E=$e.copy(u).add(d.multiplyScalar(-u.dot(I.up))),p=-(this._zoom-f-this._zoom)/this._zoom,m=this._getCameraDirection(fi),F=this._targetEnd.dot(m),R=ht.copy(this._targetEnd).lerp(E,p),S=R.dot(m),N=m.multiplyScalar(S-F);R.sub(N),this._boundary.clampPoint(R,R);const L=dt.subVectors(R,this._targetEnd);this._targetEnd.copy(R),this._target.add(L),this._changedZoom-=f,gt(this._changedZoom)&&(this._changedZoom=0)}}this._camera.zoom!==this._zoom&&(this._camera.zoom=this._zoom,this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0),this._dragNeedsUpdate=!0;const a=this._collisionTest();this._spherical.radius=Math.min(this._spherical.radius,a),this._spherical.makeSafe(),this._camera.position.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(this._target),this._camera.lookAt(this._target),(!gt(this._focalOffset.x)||!gt(this._focalOffset.y)||!gt(this._focalOffset.z))&&(this._camera.updateMatrixWorld(),oe.setFromMatrixColumn(this._camera.matrix,0),ae.setFromMatrixColumn(this._camera.matrix,1),Le.setFromMatrixColumn(this._camera.matrix,2),oe.multiplyScalar(this._focalOffset.x),ae.multiplyScalar(-this._focalOffset.y),Le.multiplyScalar(this._focalOffset.z),ht.copy(oe).add(ae).add(Le),this._camera.position.add(ht)),this._boundaryEnclosesCamera&&this._encloseToBoundary(this._camera.position.copy(this._target),ht.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse),1);const h=this._needsUpdate;return h&&!this._updatedLastTime?(this._hasRested=!1,this.dispatchEvent({type:"wake"}),this.dispatchEvent({type:"update"})):h?(this.dispatchEvent({type:"update"}),gt(t,this.restThreshold)&>(e,this.restThreshold)&>(s,this.restThreshold)&>(n.x,this.restThreshold)&>(n.y,this.restThreshold)&>(n.z,this.restThreshold)&>(r.x,this.restThreshold)&>(r.y,this.restThreshold)&>(r.z,this.restThreshold)&>(o,this.restThreshold)&&!this._hasRested&&(this._hasRested=!0,this.dispatchEvent({type:"rest"}))):!h&&this._updatedLastTime&&this.dispatchEvent({type:"sleep"}),this._lastDistance=this._spherical.radius,this._lastZoom=this._zoom,this._updatedLastTime=h,this._needsUpdate=!1,h}toJSON(){return JSON.stringify({enabled:this._enabled,minDistance:this.minDistance,maxDistance:hi(this.maxDistance),minZoom:this.minZoom,maxZoom:hi(this.maxZoom),minPolarAngle:this.minPolarAngle,maxPolarAngle:hi(this.maxPolarAngle),minAzimuthAngle:hi(this.minAzimuthAngle),maxAzimuthAngle:hi(this.maxAzimuthAngle),smoothTime:this.smoothTime,draggingSmoothTime:this.draggingSmoothTime,dollySpeed:this.dollySpeed,truckSpeed:this.truckSpeed,dollyToCursor:this.dollyToCursor,verticalDragToForward:this.verticalDragToForward,target:this._targetEnd.toArray(),position:ht.setFromSpherical(this._sphericalEnd).add(this._targetEnd).toArray(),zoom:this._zoomEnd,focalOffset:this._focalOffsetEnd.toArray(),target0:this._target0.toArray(),position0:this._position0.toArray(),zoom0:this._zoom0,focalOffset0:this._focalOffset0.toArray()})}fromJSON(i,t=!1){const e=JSON.parse(i);this.enabled=e.enabled,this.minDistance=e.minDistance,this.maxDistance=ui(e.maxDistance),this.minZoom=e.minZoom,this.maxZoom=ui(e.maxZoom),this.minPolarAngle=e.minPolarAngle,this.maxPolarAngle=ui(e.maxPolarAngle),this.minAzimuthAngle=ui(e.minAzimuthAngle),this.maxAzimuthAngle=ui(e.maxAzimuthAngle),this.smoothTime=e.smoothTime,this.draggingSmoothTime=e.draggingSmoothTime,this.dollySpeed=e.dollySpeed,this.truckSpeed=e.truckSpeed,this.dollyToCursor=e.dollyToCursor,this.verticalDragToForward=e.verticalDragToForward,this._target0.fromArray(e.target0),this._position0.fromArray(e.position0),this._zoom0=e.zoom0,this._focalOffset0.fromArray(e.focalOffset0),this.moveTo(e.target[0],e.target[1],e.target[2],t),Ht.setFromVector3(ht.fromArray(e.position).sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace)),this.rotateTo(Ht.theta,Ht.phi,t),this.dollyTo(Ht.radius,t),this.zoomTo(e.zoom,t),this.setFocalOffset(e.focalOffset[0],e.focalOffset[1],e.focalOffset[2],t),this._needsUpdate=!0}connect(i){if(this._domElement){console.warn("camera-controls is already connected.");return}i.setAttribute("data-camera-controls-version",ac),this._addAllEventListeners(i),this._getClientRect(this._elementRect)}disconnect(){this.cancel(),this._removeAllEventListeners(),this._domElement&&(this._domElement.removeAttribute("data-camera-controls-version"),this._domElement=void 0)}dispose(){this.removeAllEventListeners(),this.disconnect()}_getTargetDirection(i){return i.setFromSpherical(this._spherical).divideScalar(this._spherical.radius).applyQuaternion(this._yAxisUpSpaceInverse)}_getCameraDirection(i){return this._getTargetDirection(i).negate()}_findPointerById(i){return this._activePointers.find(t=>t.pointerId===i)}_findPointerByMouseButton(i){return this._activePointers.find(t=>t.mouseButton===i)}_disposePointer(i){this._activePointers.splice(this._activePointers.indexOf(i),1)}_encloseToBoundary(i,t,e){const s=t.lengthSq();if(s===0)return i;const n=dt.copy(t).add(i),o=this._boundary.clampPoint(n,$e).sub(n),a=o.lengthSq();if(a===0)return i.add(t);if(a===s)return i;if(e===0)return i.add(t).add(o);{const l=1+e*a/t.dot(o);return i.add(dt.copy(t).multiplyScalar(l)).add(o.multiplyScalar(1-e))}}_updateNearPlaneCorners(){if(ye(this._camera)){const i=this._camera,t=i.near,e=i.getEffectiveFOV()*li,s=Math.tan(e*.5)*t,n=s*i.aspect;this._nearPlaneCorners[0].set(-n,-s,0),this._nearPlaneCorners[1].set(n,-s,0),this._nearPlaneCorners[2].set(n,s,0),this._nearPlaneCorners[3].set(-n,s,0)}else if(Re(this._camera)){const i=this._camera,t=1/i.zoom,e=i.left*t,s=i.right*t,n=i.top*t,r=i.bottom*t;this._nearPlaneCorners[0].set(e,n,0),this._nearPlaneCorners[1].set(s,n,0),this._nearPlaneCorners[2].set(s,r,0),this._nearPlaneCorners[3].set(e,r,0)}}_collisionTest(){let i=1/0;if(!(this.colliderMeshes.length>=1)||on(this._camera,"_collisionTest"))return i;const e=this._getTargetDirection(fi);hn.lookAt(pr,e,this._camera.up);for(let s=0;s<4;s++){const n=dt.copy(this._nearPlaneCorners[s]);n.applyMatrix4(hn);const r=$e.addVectors(this._target,n);es.set(r,e),es.far=this._spherical.radius+1;const o=es.intersectObjects(this.colliderMeshes);o.length!==0&&o[0].distance<i&&(i=o[0].distance)}return i}_getClientRect(i){if(!this._domElement)return;const t=this._domElement.getBoundingClientRect();return i.x=t.left,i.y=t.top,this._viewport?(i.x+=this._viewport.x,i.y+=t.height-this._viewport.w-this._viewport.y,i.width=this._viewport.z,i.height=this._viewport.w):(i.width=t.width,i.height=t.height),i}_createOnRestPromise(i){return i?Promise.resolve():(this._hasRested=!1,this.dispatchEvent({type:"transitionstart"}),new Promise(t=>{const e=()=>{this.removeEventListener("rest",e),t()};this.addEventListener("rest",e)}))}_addAllEventListeners(i){}_removeAllEventListeners(){}get dampingFactor(){return console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead."),0}set dampingFactor(i){console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead.")}get draggingDampingFactor(){return console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead."),0}set draggingDampingFactor(i){console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.")}static createBoundingSphere(i,t=new ct.Sphere){const e=t,s=e.center;Ze.makeEmpty(),i.traverseVisible(r=>{r.isMesh&&Ze.expandByObject(r)}),Ze.getCenter(s);let n=0;return i.traverseVisible(r=>{if(!r.isMesh)return;const o=r,a=o.geometry.clone();a.applyMatrix4(o.matrixWorld);const h=a.attributes.position;for(let f=0,I=h.count;f<I;f++)ht.fromBufferAttribute(h,f),n=Math.max(n,s.distanceToSquared(ht))}),e.radius=Math.sqrt(n),e}}class Qe extends Yr{constructor(t){super(t);C(this,"onBeforeUpdate",new j);C(this,"onAfterUpdate",new j);C(this,"onAspectUpdated",new j);C(this,"onDisposed",new j);C(this,"three");C(this,"_allControls",new Map);C(this,"updateAspect",()=>{var t;if(!(!this.currentWorld||!this.currentWorld.renderer)){if(this.three instanceof b.OrthographicCamera){this.onAspectUpdated.trigger();return}if((t=this.currentWorld.renderer)!=null&&t.isResizeable()){const e=this.currentWorld.renderer.getSize();this.three.aspect=e.width/e.height,this.three.updateProjectionMatrix(),this.onAspectUpdated.trigger()}}});this.three=this.setupCamera(),this.setupEvents(!0),this.onWorldChanged.add(({action:e,world:s})=>{if(e==="added"){const n=this.newCameraControls();this._allControls.set(s.uuid,n)}if(e==="removed"){const n=this._allControls.get(s.uuid);n&&(n.dispose(),this._allControls.delete(s.uuid))}})}get controls(){if(!this.currentWorld)throw new Error("This camera needs a world to work!");const t=this._allControls.get(this.currentWorld.uuid);if(!t)throw new Error("Controls not found!");return t}get enabled(){return this.currentWorld===null?!1:this.controls.enabled}set enabled(t){this.currentWorld!==null&&(this.controls.enabled=t)}dispose(){this.setupEvents(!1),this.onAspectUpdated.reset(),this.onBeforeUpdate.reset(),this.onAfterUpdate.reset(),this.three.removeFromParent(),this.onDisposed.trigger(),this.onDisposed.reset();for(const[t,e]of this._allControls)e.dispose()}update(t){this.enabled&&(this.onBeforeUpdate.trigger(this),this.controls.update(t),this.onAfterUpdate.trigger(this))}setupCamera(){const t=window.innerWidth/window.innerHeight,e=new b.PerspectiveCamera(60,t,1,1e3);return e.position.set(50,50,50),e.lookAt(new b.Vector3(0,0,0)),e}newCameraControls(){if(!this.currentWorld)throw new Error("This camera needs a world to work!");if(!this.currentWorld.renderer)throw new Error("This camera needs a renderer to work!");bt.install({THREE:Qe.getSubsetOfThree()});const{domElement:t}=this.currentWorld.renderer.three,e=new bt(this.three,t);return e.smoothTime=.2,e.dollyToCursor=!0,e.infinityDolly=!0,e.minDistance=6,e}setupEvents(t){t?window.addEventListener("resize",this.updateAspect):window.removeEventListener("resize",this.updateAspect)}static getSubsetOfThree(){return{MOUSE:b.MOUSE,Vector2:b.Vector2,Vector3:b.Vector3,Vector4:b.Vector4,Quaternion:b.Quaternion,Matrix4:b.Matrix4,Spherical:b.Spherical,Box3:b.Box3,Sphere:b.Sphere,Raycaster:b.Raycaster,MathUtils:b.MathUtils}}}const gs=class gs extends mt{constructor(t){super(t);C(this,"onAfterUpdate",new j);C(this,"onBeforeUpdate",new j);C(this,"onDisposed",new j);C(this,"list",new se);C(this,"enabled",!0);t.add(gs.uuid,this)}create(){const t=new Hr(this.components),e=t.uuid;if(this.list.has(e))throw new Error("There is already a world with this name!");return this.list.set(e,t),t}delete(t){if(!this.list.has(t.uuid))throw new Error("The provided world is not found in the list!");this.list.delete(t.uuid),t.dispose()}dispose(){this.enabled=!1;for(const[t,e]of this.list)e.dispose();this.list.clear(),this.onDisposed.trigger()}update(t){if(this.enabled)for(const[e,s]of this.list)s.update(t)}};C(gs,"uuid","fdb61dc4-2ec1-4966-b83d-54ea795fad4a");let Li=gs;function hc(c,i,t,e){return new Promise((s,n)=>{function r(){const o=c.clientWaitSync(i,t,0);if(o===c.WAIT_FAILED){n();return}if(o===c.TIMEOUT_EXPIRED){setTimeout(r,e);return}s()}r()})}async function uc(c,i,t,e,s,n,r){const o=c.fenceSync(c.SYNC_GPU_COMMANDS_COMPLETE,0);c.flush(),await hc(c,o,0,10),c.deleteSync(o),c.bindBuffer(i,t),c.getBufferSubData(i,e,s,n,r),c.bindBuffer(i,null)}async function Bn(c,i,t,e,s,n,r,o){const a=c.createBuffer();return c.bindBuffer(c.PIXEL_PACK_BUFFER,a),c.bufferData(c.PIXEL_PACK_BUFFER,o.byteLength,c.STREAM_READ),c.readPixels(i,t,e,s,n,r,0),c.bindBuffer(c.PIXEL_PACK_BUFFER,null),await uc(c,c.PIXEL_PACK_BUFFER,a,0,o),c.deleteBuffer(a),o}class fc extends Oe{constructor(){super(...arguments);C(this,"_config",{enabled:{value:!0,type:"Boolean"},width:{type:"Number",interpolable:!0,value:512,min:32,max:1024},height:{type:"Number",interpolable:!0,value:512,min:32,max:1024},autoUpdate:{value:!0,type:"Boolean"},renderDebugFrame:{value:!1,type:"Boolean"},updateInterval:{type:"Number",interpolable:!0,value:1,min:0,max:1},threshold:{type:"Number",interpolable:!0,value:100,min:1,max:512}});C(this,"_interval",null)}get enabled(){return this._config.enabled.value}set enabled(t){this._config.enabled.value=t,this._component.enabled=t}get width(){return this._config.width.value}set width(t){this.setWidthHeight(t,this.height)}get height(){return this._config.height.value}set height(t){this.setWidthHeight(this.width,t)}get autoUpdate(){return this._config.autoUpdate.value}set autoUpdate(t){this.setAutoAndInterval(t,this.updateInterval)}get updateInterval(){return this._config.updateInterval.value}set updateInterval(t){this.setAutoAndInterval(this.autoUpdate,t)}get renderDebugFrame(){return this._config.renderDebugFrame.value}set renderDebugFrame(t){this._config.renderDebugFrame.value=t}get threshold(){return this._config.threshold.value}set threshold(t){this._config.threshold.value=t}setWidthHeight(t,e){if(t<=0||e<=0)throw new Error("The width and height of the culler renderer must be more than 0!");this._config.width.value=t,this._config.height.value=e,this.resetRenderTarget()}setAutoAndInterval(t,e){if(e<=0)throw new Error("The updateInterval of the culler renderer must be more than 0!");this._config.autoUpdate.value=t,this._config.updateInterval.value=e,this.resetInterval(t)}resetRenderTarget(){this._component.renderTarget.dispose(),this._component.renderTarget=new b.WebGLRenderTarget(this.width,this.height),this._component.bufferSize=this.width*this.height*4,this._component.buffer=new Uint8Array(this._component.bufferSize)}resetInterval(t){this._interval!==null&&window.clearInterval(this._interval),t&&(this._interval=window.setInterval(async()=>{this._component.preventUpdate||await this._component.updateVisibility()},this.updateInterval))}}class jr{constructor(i,t){C(this,"onSetup",new j);C(this,"onDisposed",new j);C(this,"onViewUpdated",new gi);C(this,"enabled",!0);C(this,"needsUpdate",!1);C(this,"components");C(this,"renderTarget",new b.WebGLRenderTarget);C(this,"bufferSize",1);C(this,"buffer",new Uint8Array);C(this,"preventUpdate",!1);C(this,"config");C(this,"isSetup",!1);C(this,"world");C(this,"renderer");C(this,"_defaultConfig",{enabled:!0,height:512,width:512,updateInterval:1e3,autoUpdate:!0,renderDebugFrame:!1,threshold:100});C(this,"worker");C(this,"scene",new b.Scene);C(this,"_availableColor",1);C(this,"_isWorkerBusy",!1);C(this,"updateVisibility",async i=>{if(!this.enabled||!this.needsUpdate&&!i||this._isWorkerBusy)return;this._isWorkerBusy=!0;const t=this.world.camera.three;t.updateMatrix();const{width:e,height:s}=this.config;this.renderer.setSize(e,s),this.renderer.setRenderTarget(this.renderTarget),this.renderer.render(this.scene,t);const n=this.renderer.getContext();await Bn(n,0,0,e,s,n.RGBA,n.UNSIGNED_BYTE,this.buffer),this.renderer.setRenderTarget(null),this.config.renderDebugFrame&&this.renderer.render(this.scene,t),this.worker.postMessage({buffer:this.buffer}),this.needsUpdate=!1});if(!t.renderer)throw new Error("The given world must have a renderer!");this.components=i,this.config=new fc(this,this.components,"Culler renderer"),this.components.get(Gt).list.add(this.config),this.world=t,this.renderer=new b.WebGLRenderer,this.renderer.clippingPlanes=t.renderer.clippingPlanes;const s=`
|
|
11
11
|
addEventListener("message", (event) => {
|
|
12
12
|
const { buffer } = event.data;
|
|
13
13
|
const colors = new Map();
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
}
|
|
25
25
|
postMessage({ colors });
|
|
26
26
|
});
|
|
27
|
-
`,n=new Blob([
|
|
27
|
+
`,n=new Blob([s],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(n)),this.setup()}dispose(){this.enabled=!1,this.config.autoUpdate=!1,this.components.get(Gt).list.delete(this.config);for(const t of this.scene.children)t.removeFromParent();this.onViewUpdated.reset(),this.worker.terminate(),this.renderer.forceContextLoss(),this.renderer.dispose(),this.renderTarget.dispose(),this.buffer=null,this.onDisposed.reset()}setup(i){const t={...this._defaultConfig,...i},{width:e,height:s}=t;this.config.setWidthHeight(e,s);const{updateInterval:n,autoUpdate:r}=t;this.config.setAutoAndInterval(r,n),this.config.threshold=t.threshold,this.isSetup=!0,this.onSetup.trigger()}getAvailableColor(){let i=BigInt(this._availableColor.toString());const t=[];do t.unshift(Number(i%256n)),i/=256n;while(i);for(;t.length!==3;)t.unshift(0);const[e,s,n]=t,r=`${e}-${s}-${n}`;return{r:e,g:s,b:n,code:r}}increaseColor(){if(this._availableColor===256*256*256){console.warn("Color can't be increased over 256 x 256 x 256!");return}this._availableColor++}decreaseColor(){if(this._availableColor===1){console.warn("Color can't be decreased under 0!");return}this._availableColor--}}class qr extends jr{constructor(t,e){super(t,e);C(this,"onViewUpdated",new j);C(this,"colorMeshes",new Map);C(this,"_colorCodeMeshMap",new Map);C(this,"_meshIDColorCodeMap",new Map);C(this,"_currentVisibleMeshes",new Set);C(this,"_recentlyHiddenMeshes",new Set);C(this,"_transparentMat",new b.MeshBasicMaterial({transparent:!0,opacity:0}));C(this,"handleWorkerMessage",async t=>{if(this.preventUpdate)return;const e=t.data.colors;this._recentlyHiddenMeshes=new Set(this._currentVisibleMeshes),this._currentVisibleMeshes.clear();for(const[s,n]of e){if(n<this.config.threshold)continue;const r=this._colorCodeMeshMap.get(s);r&&(this._currentVisibleMeshes.add(r),this._recentlyHiddenMeshes.delete(r))}this.onViewUpdated.trigger({seen:this._currentVisibleMeshes,unseen:this._recentlyHiddenMeshes}),this._isWorkerBusy=!1});this.worker.addEventListener("message",this.handleWorkerMessage),this.onViewUpdated.add(({seen:s,unseen:n})=>{for(const r of s)r.visible=!0;for(const r of n)r.visible=!1})}get threshold(){return this.config.threshold}set threshold(t){this.config.threshold=t}dispose(){super.dispose(),this._currentVisibleMeshes.clear(),this._recentlyHiddenMeshes.clear(),this._meshIDColorCodeMap.clear(),this._transparentMat.dispose(),this._colorCodeMeshMap.clear();const t=this.components.get(Ce);for(const e in this.colorMeshes){const s=this.colorMeshes.get(e);s&&t.destroy(s,!0)}this.colorMeshes.clear()}add(t){if(!this.enabled)return;if(this.preventUpdate){console.log("Culler processing not finished yet.");return}this.preventUpdate=!0;const e=t instanceof b.InstancedMesh,{geometry:s,material:n}=t,{colorMaterial:r,code:o}=this.getAvailableMaterial();let a;if(Array.isArray(n)){let f=!0;const I=[];for(const u of n)An.isTransparent(u)?I.push(this._transparentMat):(f=!1,I.push(r));if(f){r.dispose(),this.preventUpdate=!1;return}a=I}else if(An.isTransparent(n)){r.dispose(),this.preventUpdate=!1;return}else a=r;this._colorCodeMeshMap.set(o,t),this._meshIDColorCodeMap.set(t.uuid,o);const l=e?t.count:1,h=new b.InstancedMesh(s,a,l);e?h.instanceMatrix=t.instanceMatrix:h.setMatrixAt(0,new b.Matrix4),t.visible=!1,t.updateWorldMatrix(!0,!1),h.applyMatrix4(t.matrixWorld),h.updateMatrix(),this.scene.add(h),this.colorMeshes.set(t.uuid,h),this.increaseColor(),this.preventUpdate=!1}remove(t){if(this.preventUpdate){console.log("Culler processing not finished yet.");return}this.preventUpdate=!0;const e=this.components.get(Ce);this._currentVisibleMeshes.delete(t),this._recentlyHiddenMeshes.delete(t);const s=this.colorMeshes.get(t.uuid),n=this._meshIDColorCodeMap.get(t.uuid);if(!s||!n){this.preventUpdate=!1;return}this._colorCodeMeshMap.delete(n),this._meshIDColorCodeMap.delete(t.uuid),this.colorMeshes.delete(t.uuid),s.geometry=void 0,s.material=[],e.destroy(s,!0),this._recentlyHiddenMeshes.delete(t),this._currentVisibleMeshes.delete(t),this.preventUpdate=!1}updateInstanced(t){for(const e of t){const s=this.colorMeshes.get(e.uuid);s&&(s.count=e.count)}}getAvailableMaterial(){const{r:t,g:e,b:s,code:n}=this.getAvailableColor(),r=b.ColorManagement.enabled;b.ColorManagement.enabled=!1;const o=new b.Color(`rgb(${t}, ${e}, ${s})`);if(!this.world.renderer)throw new Error("Renderer not found in the world!");const a=this.world.renderer.clippingPlanes,l=new b.MeshBasicMaterial({color:o,clippingPlanes:a,side:b.DoubleSide});return b.ColorManagement.enabled=r,{colorMaterial:l,code:n}}}const Fi=class Fi extends mt{constructor(t){super(t);C(this,"onDisposed",new j);C(this,"_enabled",!0);C(this,"list",new Map);t.add(Fi.uuid,this)}get enabled(){return this._enabled}set enabled(t){this._enabled=t;for(const[e,s]of this.list)s.enabled=t}create(t){if(this.list.has(t.uuid))return this.list.get(t.uuid);const e=new qr(this.components,t);return this.list.set(t.uuid,e),e}delete(t){const e=this.list.get(t.uuid);e&&e.dispose(),this.list.delete(t.uuid)}dispose(){this.enabled=!1,this.onDisposed.trigger(Fi.uuid),this.onDisposed.reset();for(const[t,e]of this.list)e.dispose();this.list.clear()}updateInstanced(t){for(const[,e]of this.list)e.updateInstanced(t)}};C(Fi,"uuid","69f2a50d-c266-44fc-b1bd-fa4d34be89e6");let us=Fi;class Ic{constructor(i,t){C(this,"onDisposed",new j);C(this,"onDistanceComputed",new j);C(this,"excludedObjects",new Set);C(this,"enabled",!0);C(this,"renderDebugFrame",!1);C(this,"components");C(this,"scene",new b.Scene);C(this,"camera",new b.OrthographicCamera(-1,1,1,-1,0,1));C(this,"depthMaterial");C(this,"world");C(this,"renderer");C(this,"worker");C(this,"_width",512);C(this,"_height",512);C(this,"_postQuad");C(this,"tempRT");C(this,"resultRT");C(this,"bufferSize");C(this,"_buffer");C(this,"_isWorkerBusy",!1);C(this,"compute",async()=>{if(!this.enabled||this.world.isDisposing||this._isWorkerBusy)return;this._isWorkerBusy=!0,this.world.camera.three.updateMatrix(),this.renderer.setSize(this._width,this._height),this.renderer.setRenderTarget(this.tempRT);const i="visibilityBeforeDistanceCheck";for(const e of this.excludedObjects)e.userData[i]=e.visible,e.visible=!1;this.renderer.render(this.world.scene.three,this.world.camera.three);for(const e of this.excludedObjects)e.userData[i]!==void 0&&(e.visible=e.userData[i]);this.depthMaterial.uniforms.tDiffuse.value=this.tempRT.texture,this.depthMaterial.uniforms.tDepth.value=this.tempRT.depthTexture,this.renderer.setRenderTarget(this.resultRT),this.renderer.render(this.scene,this.camera);const t=this.renderer.getContext();try{await Bn(t,0,0,this._width,this._height,t.RGBA,t.UNSIGNED_BYTE,this._buffer)}catch{this.renderer.setRenderTarget(null),this._isWorkerBusy=!1;return}this.renderer.setRenderTarget(null),this.renderDebugFrame&&this.renderer.render(this.scene,this.camera),this.worker.postMessage({buffer:this._buffer})});C(this,"handleWorkerMessage",i=>{if(!this.enabled||this.world.isDisposing)return;const t=i.data.colors;let e=Number.MAX_VALUE;for(const a of t)a!==0&&a<e&&(e=a);const s=this.world.camera.three||b.OrthographicCamera,r=(e/255-1)*-1*(s.far-s.near),o=Math.min(r,s.far);this.onDistanceComputed.trigger(o),this._isWorkerBusy=!1});if(!t.renderer)throw new Error("The given world must have a renderer!");this.components=i,this.world=t;const e=t.camera.three;this.renderer=new b.WebGLRenderer,this.tempRT=new b.WebGLRenderTarget(this._width,this._height),this.bufferSize=this._width*this._height*4,this._buffer=new Uint8Array(this.bufferSize),this.tempRT.texture.minFilter=b.NearestFilter,this.tempRT.texture.magFilter=b.NearestFilter,this.tempRT.stencilBuffer=!1,this.tempRT.samples=0,this.tempRT.depthTexture=new b.DepthTexture(this._width,this._height),this.tempRT.depthTexture.format=b.DepthFormat,this.tempRT.depthTexture.type=b.UnsignedShortType,this.resultRT=new b.WebGLRenderTarget(this._width,this._height),this.depthMaterial=new b.ShaderMaterial({vertexShader:`
|
|
28
28
|
varying vec2 vUv;
|
|
29
29
|
|
|
30
30
|
void main() {
|
|
@@ -54,7 +54,7 @@ void main() {
|
|
|
54
54
|
gl_FragColor.rgb = 1.0 - vec3( depth );
|
|
55
55
|
gl_FragColor.a = 1.0;
|
|
56
56
|
}
|
|
57
|
-
`,uniforms:{cameraNear:{value:
|
|
57
|
+
`,uniforms:{cameraNear:{value:e.near},cameraFar:{value:e.far},tDiffuse:{value:null},tDepth:{value:null}}});const s=new b.PlaneGeometry(2,2);this._postQuad=new b.Mesh(s,this.depthMaterial),this.scene.add(this._postQuad),this.renderer.clippingPlanes=t.renderer.clippingPlanes;const n=`
|
|
58
58
|
addEventListener("message", (event) => {
|
|
59
59
|
const { buffer } = event.data;
|
|
60
60
|
const colors = new Set();
|
|
@@ -64,7 +64,7 @@ void main() {
|
|
|
64
64
|
}
|
|
65
65
|
postMessage({ colors });
|
|
66
66
|
});
|
|
67
|
-
`,r=new Blob([n],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(r)),this.worker.addEventListener("message",this.handleWorkerMessage)}dispose(){this.enabled=!1,this.onDistanceComputed.reset(),this.worker.terminate(),this.renderer.forceContextLoss(),this.renderer.dispose(),this.tempRT.dispose(),this.resultRT.dispose();const
|
|
67
|
+
`,r=new Blob([n],{type:"application/javascript"});this.worker=new Worker(URL.createObjectURL(r)),this.worker.addEventListener("message",this.handleWorkerMessage)}dispose(){this.enabled=!1,this.onDistanceComputed.reset(),this.worker.terminate(),this.renderer.forceContextLoss(),this.renderer.dispose(),this.tempRT.dispose(),this.resultRT.dispose();const i=[...this.scene.children];this.excludedObjects.clear();for(const t of i)t.removeFromParent();this._postQuad.geometry.dispose(),this._postQuad.removeFromParent(),this._buffer=null,this.onDisposed.reset()}}class dc extends Xr{constructor(){super(...arguments);C(this,"_distanceRenderer");C(this,"autoBias",!0);C(this,"_defaultShadowConfig",{cascade:1,resolution:512});C(this,"_lightsWithShadow",new Map);C(this,"_isComputingShadows",!1);C(this,"_shadowsEnabled",!0);C(this,"_bias",0);C(this,"recomputeShadows",t=>{if(!this._shadowsEnabled)return;if(this.autoBias&&(this.bias=t/-1e5),t*=1.5,!this.currentWorld)throw new Error("A world needs to be assigned to the scene before computing shadows!");if(!this._lightsWithShadow.size)throw new Error("No shadows found!");const s=this.currentWorld.camera.three;if(!(s instanceof b.PerspectiveCamera)&&!(s instanceof b.OrthographicCamera))throw new Error("Invalid camera type!");const n=new b.Vector3;s.getWorldDirection(n);let r=t;const o=new b.Vector3;o.copy(this.config.directionalLight.position),o.normalize();for(const[a,l]of this._lightsWithShadow){const h=this.directionalLights.get(l);if(!h)throw new Error("Light not found.");const f=new b.Vector3;f.copy(n);const I=a===this._lightsWithShadow.size-1,u=I?r/2:r*2/3;f.multiplyScalar(u),f.add(s.position);const d=r-u,E=new b.Vector3;E.copy(o),E.multiplyScalar(d),h.target.position.copy(f),h.position.copy(f),h.position.add(E),h.shadow.camera.right=d,h.shadow.camera.left=-d,h.shadow.camera.top=d,h.shadow.camera.bottom=-d,h.shadow.camera.far=d*2,h.shadow.camera.updateProjectionMatrix(),h.shadow.camera.updateMatrix(),I||(r/=3)}this._isComputingShadows=!1})}get bias(){return this._bias}set bias(t){this._bias=t;for(const[,e]of this._lightsWithShadow){const s=this.directionalLights.get(e);s&&(s.shadow.bias=t)}}get shadowsEnabled(){return this._shadowsEnabled}set shadowsEnabled(t){this._shadowsEnabled=t;for(const[,e]of this.directionalLights)e.castShadow=t}get distanceRenderer(){if(!this._distanceRenderer)throw new Error("You must set up this component before accessing the distance renderer!");return this._distanceRenderer}setup(t){super.setup(t);const e={...this._defaultConfig,...this._defaultShadowConfig,...t};if(e.cascade<=0)throw new Error("Config.shadows.cascade must be a natural number greater than 0!");if(e.cascade>1)throw new Error("Multiple shadows not supported yet!");if(!this.currentWorld)throw new Error("A world needs to be assigned to the scene before setting it up!");for(const[,s]of this.directionalLights)s.target.removeFromParent(),s.removeFromParent(),s.dispose();this.directionalLights.clear(),this._distanceRenderer||(this._distanceRenderer=new Ic(this.components,this.currentWorld),this._distanceRenderer.onDistanceComputed.add(this.recomputeShadows)),this._lightsWithShadow.clear();for(let s=0;s<e.cascade;s++){const n=new b.DirectionalLight;n.intensity=this.config.directionalLight.intensity,n.color=this.config.directionalLight.color,n.position.copy(this.config.directionalLight.position),n.shadow.mapSize.width=e.resolution,n.shadow.mapSize.height=e.resolution,this.three.add(n,n.target),this.directionalLights.set(n.uuid,n),this._lightsWithShadow.set(s,n.uuid),n.castShadow=!0,n.shadow.bias=this._bias}}dispose(){super.dispose(),this._distanceRenderer&&this._distanceRenderer.dispose(),this._lightsWithShadow.clear()}async updateShadows(){this._isComputingShadows||!this._shadowsEnabled||(this._isComputingShadows=!0,await this.distanceRenderer.compute())}}class Qr{constructor(i){C(this,"_event");C(this,"_position",new b.Vector2);C(this,"onDisposed",new j);C(this,"updateMouseInfo",i=>{this._event=i});this.dom=i,this.setupEvents(!0)}get position(){if(this._event){const i=this.dom.getBoundingClientRect();this._position.x=this.getPositionX(i,this._event),this._position.y=this.getPositionY(i,this._event)}return this._position}dispose(){this.setupEvents(!1),this.onDisposed.trigger(),this.onDisposed.reset()}getPositionY(i,t){return-((t.clientY-i.top)/(i.bottom-i.top))*2+1}getPositionX(i,t){return(t.clientX-i.left)/(i.right-i.left)*2-1}setupEvents(i){i?this.dom.addEventListener("pointermove",this.updateMouseInfo):this.dom.removeEventListener("pointermove",this.updateMouseInfo)}}class Kr{constructor(i,t){C(this,"enabled",!0);C(this,"components");C(this,"onDisposed",new j);C(this,"mouse");C(this,"three",new b.Raycaster);C(this,"world");const e=t.renderer;if(!e)throw new Error("A renderer is needed for the raycaster to work!");this.world=t,this.mouse=new Qr(e.three.domElement),this.components=i}dispose(){this.mouse.dispose(),this.onDisposed.trigger(),this.onDisposed.reset()}castRay(i=Array.from(this.world.meshes)){if(!this.world)throw new Error("A world is needed to cast rays!");const t=this.world.camera.three;return this.three.setFromCamera(this.mouse.position,t),this.intersect(i)}castRayFromVector(i,t,e=Array.from(this.world.meshes)){return this.three.set(i,t),this.intersect(e)}intersect(i=Array.from(this.world.meshes)){const t=this.three.intersectObjects(i),e=this.filterClippingPlanes(t);return e.length>0?e[0]:null}filterClippingPlanes(i){if(!this.world.renderer)throw new Error("Renderer not found!");const t=this.world.renderer.three;if(!t.clippingPlanes)return i;const e=t.clippingPlanes;return i.length<=0||!e||(e==null?void 0:e.length)<=0?i:i.filter(s=>e.every(n=>n.distanceToPoint(s.point)>0))}}const As=class As extends mt{constructor(t){super(t);C(this,"enabled",!0);C(this,"list",new Map);C(this,"onDisposed",new j);t.add(As.uuid,this)}get(t){if(this.list.has(t.uuid))return this.list.get(t.uuid);const e=new Kr(this.components,t);return this.list.set(t.uuid,e),t.onDisposed.add(()=>{this.delete(t)}),e}delete(t){const e=this.list.get(t.uuid);e&&e.dispose(),this.list.delete(t.uuid)}dispose(){for(const[t,e]of this.list)e.dispose();this.list.clear(),this.onDisposed.trigger()}};C(As,"uuid","d5d8bdf0-db25-4952-b951-b643af207ace");let be=As;class Jr extends Oe{constructor(){super(...arguments);C(this,"_config",{visible:{value:!0,type:"Boolean"},color:{value:new b.Color,type:"Color"},primarySize:{type:"Number",interpolable:!0,value:1,min:0,max:1e3},secondarySize:{type:"Number",interpolable:!0,value:10,min:0,max:1e3},distance:{type:"Number",interpolable:!0,value:500,min:0,max:500}})}get visible(){return this._config.visible.value}set visible(t){this._config.visible.value=t,this._component.visible=t}get color(){return this._config.color.value}set color(t){this._config.color.value=t,this._component.material.uniforms.uColor.value=t,this._component.material.uniformsNeedUpdate=!0}get primarySize(){return this._config.primarySize.value}set primarySize(t){this._config.primarySize.value=t,this._component.material.uniforms.uSize1.value=t,this._component.material.uniformsNeedUpdate=!0}get secondarySize(){return this._config.secondarySize.value}set secondarySize(t){this._config.secondarySize.value=t,this._component.material.uniforms.uSize2.value=t,this._component.material.uniformsNeedUpdate=!0}get distance(){return this._config.distance.value}set distance(t){this._config.distance.value=t,this._component.material.uniforms.uDistance.value=t,this._component.material.uniformsNeedUpdate=!0}}class to{constructor(i,t){C(this,"onDisposed",new j);C(this,"onSetup",new j);C(this,"isSetup",!1);C(this,"world");C(this,"components");C(this,"config");C(this,"_defaultConfig",{visible:!0,color:new b.Color(12303291),primarySize:1,secondarySize:10,distance:500});C(this,"three");C(this,"_fade",3);C(this,"updateZoom",()=>{this.world.camera instanceof Qe&&(this.material.uniforms.uZoom.value=this.world.camera.three.zoom)});this.world=t;const{color:e,primarySize:s,secondarySize:n,distance:r}=this._defaultConfig;this.components=i,this.config=new Jr(this,this.components,"Grid"),i.get(Gt).list.add(this.config);const a=new b.PlaneGeometry(2,2,1,1),l=new b.ShaderMaterial({side:b.DoubleSide,uniforms:{uSize1:{value:s},uSize2:{value:n},uColor:{value:e},uDistance:{value:r},uFade:{value:this._fade},uZoom:{value:1}},transparent:!0,vertexShader:`
|
|
68
68
|
|
|
69
69
|
varying vec3 worldPosition;
|
|
70
70
|
|
|
@@ -125,7 +125,7 @@ void main() {
|
|
|
125
125
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
`,extensions:{derivatives:!0}});this.three=new M.Mesh(a,l),this.three.frustumCulled=!1,t.scene.three.add(this.three),this.setupEvents(!0)}get visible(){return this.three.visible}set visible(e){e?this.world.scene.three.add(this.three):this.three.removeFromParent()}get material(){return this.three.material}get fade(){return this._fade===3}set fade(e){this._fade=e?3:0,this.material.uniforms.uFade.value=this._fade}setup(e){const t={...this._defaultConfig,...e};this.config.visible=!0,this.config.color=t.color,this.config.primarySize=t.primarySize,this.config.secondarySize=t.secondarySize,this.config.distance=t.distance,this.isSetup=!0,this.onSetup.trigger()}dispose(){this.setupEvents(!1),this.components.get($t).list.delete(this.config),this.components.get(le).destroy(this.three),this.onDisposed.trigger(),this.onDisposed.reset(),this.world=null,this.components=null}setupEvents(e){if(this.world.isDisposing||!(this.world.camera instanceof Ze))return;const t=this.world.camera.controls;e?t.addEventListener("update",this.updateZoom):t.removeEventListener("update",this.updateZoom)}}const pi=class pi extends At{constructor(t){super(t);g(this,"list",new Map);g(this,"onDisposed",new Q);g(this,"enabled",!0);t.add(pi.uuid,this)}create(t){if(this.list.has(t.uuid))throw new Error("This world already has a grid!");const s=new Br(this.components,t);return this.list.set(t.uuid,s),t.onDisposed.add(()=>{this.delete(t)}),s}delete(t){const s=this.list.get(t.uuid);s&&s.dispose(),this.list.delete(t.uuid)}dispose(){for(const[t,s]of this.list)s.dispose();this.list.clear(),this.onDisposed.trigger(),this.onDisposed.reset()}};g(pi,"uuid","d1e814d5-b81c-4452-87a2-f039375e0489");let hn=pi;const ye=new S.Raycaster,vt=new S.Vector3,de=new S.Vector3,Rt=new S.Quaternion,or={X:new S.Vector3(1,0,0),Y:new S.Vector3(0,1,0),Z:new S.Vector3(0,0,1)},qi={type:"change"},ar={type:"mouseDown"},cr={type:"mouseUp",mode:null},lr={type:"objectChange"};class Ya extends S.Object3D{constructor(e,t){super(),t===void 0&&(console.warn('THREE.TransformControls: The second parameter "domElement" is now mandatory.'),t=document),this.isTransformControls=!0,this.visible=!1,this.domElement=t,this.domElement.style.touchAction="none";const s=new ja;this._gizmo=s,this.add(s);const i=new Qa;this._plane=i,this.add(i);const n=this;function r(_,R){let C=R;Object.defineProperty(n,_,{get:function(){return C!==void 0?C:R},set:function(y){C!==y&&(C=y,i[_]=y,s[_]=y,n.dispatchEvent({type:_+"-changed",value:y}),n.dispatchEvent(qi))}}),n[_]=R,i[_]=R,s[_]=R}r("camera",e),r("object",void 0),r("enabled",!0),r("axis",null),r("mode","translate"),r("translationSnap",null),r("rotationSnap",null),r("scaleSnap",null),r("space","world"),r("size",1),r("dragging",!1),r("showX",!0),r("showY",!0),r("showZ",!0);const o=new S.Vector3,a=new S.Vector3,l=new S.Quaternion,h=new S.Quaternion,u=new S.Vector3,d=new S.Quaternion,f=new S.Vector3,E=new S.Vector3,p=new S.Vector3,I=0,m=new S.Vector3;r("worldPosition",o),r("worldPositionStart",a),r("worldQuaternion",l),r("worldQuaternionStart",h),r("cameraPosition",u),r("cameraQuaternion",d),r("pointStart",f),r("pointEnd",E),r("rotationAxis",p),r("rotationAngle",I),r("eye",m),this._offset=new S.Vector3,this._startNorm=new S.Vector3,this._endNorm=new S.Vector3,this._cameraScale=new S.Vector3,this._parentPosition=new S.Vector3,this._parentQuaternion=new S.Quaternion,this._parentQuaternionInv=new S.Quaternion,this._parentScale=new S.Vector3,this._worldScaleStart=new S.Vector3,this._worldQuaternionInv=new S.Quaternion,this._worldScale=new S.Vector3,this._positionStart=new S.Vector3,this._quaternionStart=new S.Quaternion,this._scaleStart=new S.Vector3,this._getPointer=Ha.bind(this),this._onPointerDown=Xa.bind(this),this._onPointerHover=Wa.bind(this),this._onPointerMove=Za.bind(this),this._onPointerUp=$a.bind(this),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointermove",this._onPointerHover),this.domElement.addEventListener("pointerup",this._onPointerUp)}updateMatrixWorld(){this.object!==void 0&&(this.object.updateMatrixWorld(),this.object.parent===null?console.error("TransformControls: The attached 3D object must be a part of the scene graph."):this.object.parent.matrixWorld.decompose(this._parentPosition,this._parentQuaternion,this._parentScale),this.object.matrixWorld.decompose(this.worldPosition,this.worldQuaternion,this._worldScale),this._parentQuaternionInv.copy(this._parentQuaternion).invert(),this._worldQuaternionInv.copy(this.worldQuaternion).invert()),this.camera.updateMatrixWorld(),this.camera.matrixWorld.decompose(this.cameraPosition,this.cameraQuaternion,this._cameraScale),this.camera.isOrthographicCamera?this.camera.getWorldDirection(this.eye).negate():this.eye.copy(this.cameraPosition).sub(this.worldPosition).normalize(),super.updateMatrixWorld(this)}pointerHover(e){if(this.object===void 0||this.dragging===!0)return;ye.setFromCamera(e,this.camera);const t=Ki(this._gizmo.picker[this.mode],ye);t?this.axis=t.object.name:this.axis=null}pointerDown(e){if(!(this.object===void 0||this.dragging===!0||e.button!==0)&&this.axis!==null){ye.setFromCamera(e,this.camera);const t=Ki(this._plane,ye,!0);t&&(this.object.updateMatrixWorld(),this.object.parent.updateMatrixWorld(),this._positionStart.copy(this.object.position),this._quaternionStart.copy(this.object.quaternion),this._scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this._worldScaleStart),this.pointStart.copy(t.point).sub(this.worldPositionStart)),this.dragging=!0,ar.mode=this.mode,this.dispatchEvent(ar)}}pointerMove(e){const t=this.axis,s=this.mode,i=this.object;let n=this.space;if(s==="scale"?n="local":(t==="E"||t==="XYZE"||t==="XYZ")&&(n="world"),i===void 0||t===null||this.dragging===!1||e.button!==-1)return;ye.setFromCamera(e,this.camera);const r=Ki(this._plane,ye,!0);if(r){if(this.pointEnd.copy(r.point).sub(this.worldPositionStart),s==="translate")this._offset.copy(this.pointEnd).sub(this.pointStart),n==="local"&&t!=="XYZ"&&this._offset.applyQuaternion(this._worldQuaternionInv),t.indexOf("X")===-1&&(this._offset.x=0),t.indexOf("Y")===-1&&(this._offset.y=0),t.indexOf("Z")===-1&&(this._offset.z=0),n==="local"&&t!=="XYZ"?this._offset.applyQuaternion(this._quaternionStart).divide(this._parentScale):this._offset.applyQuaternion(this._parentQuaternionInv).divide(this._parentScale),i.position.copy(this._offset).add(this._positionStart),this.translationSnap&&(n==="local"&&(i.position.applyQuaternion(Rt.copy(this._quaternionStart).invert()),t.search("X")!==-1&&(i.position.x=Math.round(i.position.x/this.translationSnap)*this.translationSnap),t.search("Y")!==-1&&(i.position.y=Math.round(i.position.y/this.translationSnap)*this.translationSnap),t.search("Z")!==-1&&(i.position.z=Math.round(i.position.z/this.translationSnap)*this.translationSnap),i.position.applyQuaternion(this._quaternionStart)),n==="world"&&(i.parent&&i.position.add(vt.setFromMatrixPosition(i.parent.matrixWorld)),t.search("X")!==-1&&(i.position.x=Math.round(i.position.x/this.translationSnap)*this.translationSnap),t.search("Y")!==-1&&(i.position.y=Math.round(i.position.y/this.translationSnap)*this.translationSnap),t.search("Z")!==-1&&(i.position.z=Math.round(i.position.z/this.translationSnap)*this.translationSnap),i.parent&&i.position.sub(vt.setFromMatrixPosition(i.parent.matrixWorld))));else if(s==="scale"){if(t.search("XYZ")!==-1){let o=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(o*=-1),de.set(o,o,o)}else vt.copy(this.pointStart),de.copy(this.pointEnd),vt.applyQuaternion(this._worldQuaternionInv),de.applyQuaternion(this._worldQuaternionInv),de.divide(vt),t.search("X")===-1&&(de.x=1),t.search("Y")===-1&&(de.y=1),t.search("Z")===-1&&(de.z=1);i.scale.copy(this._scaleStart).multiply(de),this.scaleSnap&&(t.search("X")!==-1&&(i.scale.x=Math.round(i.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),t.search("Y")!==-1&&(i.scale.y=Math.round(i.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),t.search("Z")!==-1&&(i.scale.z=Math.round(i.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(s==="rotate"){this._offset.copy(this.pointEnd).sub(this.pointStart);const o=20/this.worldPosition.distanceTo(vt.setFromMatrixPosition(this.camera.matrixWorld));let a=!1;t==="XYZE"?(this.rotationAxis.copy(this._offset).cross(this.eye).normalize(),this.rotationAngle=this._offset.dot(vt.copy(this.rotationAxis).cross(this.eye))*o):(t==="X"||t==="Y"||t==="Z")&&(this.rotationAxis.copy(or[t]),vt.copy(or[t]),n==="local"&&vt.applyQuaternion(this.worldQuaternion),vt.cross(this.eye),vt.length()===0?a=!0:this.rotationAngle=this._offset.dot(vt.normalize())*o),(t==="E"||a)&&(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this._startNorm.copy(this.pointStart).normalize(),this._endNorm.copy(this.pointEnd).normalize(),this.rotationAngle*=this._endNorm.cross(this._startNorm).dot(this.eye)<0?1:-1),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),n==="local"&&t!=="E"&&t!=="XYZE"?(i.quaternion.copy(this._quaternionStart),i.quaternion.multiply(Rt.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this._parentQuaternionInv),i.quaternion.copy(Rt.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),i.quaternion.multiply(this._quaternionStart).normalize())}this.dispatchEvent(qi),this.dispatchEvent(lr)}}pointerUp(e){e.button===0&&(this.dragging&&this.axis!==null&&(cr.mode=this.mode,this.dispatchEvent(cr)),this.dragging=!1,this.axis=null)}dispose(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerHover),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.traverse(function(e){e.geometry&&e.geometry.dispose(),e.material&&e.material.dispose()})}attach(e){return this.object=e,this.visible=!0,this}detach(){return this.object=void 0,this.visible=!1,this.axis=null,this}reset(){this.enabled&&this.dragging&&(this.object.position.copy(this._positionStart),this.object.quaternion.copy(this._quaternionStart),this.object.scale.copy(this._scaleStart),this.dispatchEvent(qi),this.dispatchEvent(lr),this.pointStart.copy(this.pointEnd))}getRaycaster(){return ye}getMode(){return this.mode}setMode(e){this.mode=e}setTranslationSnap(e){this.translationSnap=e}setRotationSnap(e){this.rotationSnap=e}setScaleSnap(e){this.scaleSnap=e}setSize(e){this.size=e}setSpace(e){this.space=e}}function Ha(c){if(this.domElement.ownerDocument.pointerLockElement)return{x:0,y:0,button:c.button};{const e=this.domElement.getBoundingClientRect();return{x:(c.clientX-e.left)/e.width*2-1,y:-(c.clientY-e.top)/e.height*2+1,button:c.button}}}function Wa(c){if(this.enabled)switch(c.pointerType){case"mouse":case"pen":this.pointerHover(this._getPointer(c));break}}function Xa(c){this.enabled&&(document.pointerLockElement||this.domElement.setPointerCapture(c.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),this.pointerHover(this._getPointer(c)),this.pointerDown(this._getPointer(c)))}function Za(c){this.enabled&&this.pointerMove(this._getPointer(c))}function $a(c){this.enabled&&(this.domElement.releasePointerCapture(c.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.pointerUp(this._getPointer(c)))}function Ki(c,e,t){const s=e.intersectObject(c,!0);for(let i=0;i<s.length;i++)if(s[i].object.visible||t)return s[i];return!1}const Xs=new S.Euler,It=new S.Vector3(0,1,0),hr=new S.Vector3(0,0,0),ur=new S.Matrix4,Zs=new S.Quaternion,Js=new S.Quaternion,ie=new S.Vector3,dr=new S.Matrix4,ps=new S.Vector3(1,0,0),Re=new S.Vector3(0,1,0),Es=new S.Vector3(0,0,1),$s=new S.Vector3,hs=new S.Vector3,us=new S.Vector3;class ja extends S.Object3D{constructor(){super(),this.isTransformControlsGizmo=!0,this.type="TransformControlsGizmo";const e=new S.MeshBasicMaterial({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),t=new S.LineBasicMaterial({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),s=e.clone();s.opacity=.15;const i=t.clone();i.opacity=.5;const n=e.clone();n.color.setHex(16711680);const r=e.clone();r.color.setHex(65280);const o=e.clone();o.color.setHex(255);const a=e.clone();a.color.setHex(16711680),a.opacity=.5;const l=e.clone();l.color.setHex(65280),l.opacity=.5;const h=e.clone();h.color.setHex(255),h.opacity=.5;const u=e.clone();u.opacity=.25;const d=e.clone();d.color.setHex(16776960),d.opacity=.25,e.clone().color.setHex(16776960);const E=e.clone();E.color.setHex(7895160);const p=new S.CylinderGeometry(0,.04,.1,12);p.translate(0,.05,0);const I=new S.BoxGeometry(.08,.08,.08);I.translate(0,.04,0);const m=new S.BufferGeometry;m.setAttribute("position",new S.Float32BufferAttribute([0,0,0,1,0,0],3));const _=new S.CylinderGeometry(.0075,.0075,.5,3);_.translate(0,.25,0);function R(D,$){const V=new S.TorusGeometry(D,.0075,3,64,$*Math.PI*2);return V.rotateY(Math.PI/2),V.rotateX(Math.PI/2),V}function C(){const D=new S.BufferGeometry;return D.setAttribute("position",new S.Float32BufferAttribute([0,0,0,1,1,1],3)),D}const y={X:[[new S.Mesh(p,n),[.5,0,0],[0,0,-Math.PI/2]],[new S.Mesh(p,n),[-.5,0,0],[0,0,Math.PI/2]],[new S.Mesh(_,n),[0,0,0],[0,0,-Math.PI/2]]],Y:[[new S.Mesh(p,r),[0,.5,0]],[new S.Mesh(p,r),[0,-.5,0],[Math.PI,0,0]],[new S.Mesh(_,r)]],Z:[[new S.Mesh(p,o),[0,0,.5],[Math.PI/2,0,0]],[new S.Mesh(p,o),[0,0,-.5],[-Math.PI/2,0,0]],[new S.Mesh(_,o),null,[Math.PI/2,0,0]]],XYZ:[[new S.Mesh(new S.OctahedronGeometry(.1,0),u.clone()),[0,0,0]]],XY:[[new S.Mesh(new S.BoxGeometry(.15,.15,.01),h.clone()),[.15,.15,0]]],YZ:[[new S.Mesh(new S.BoxGeometry(.15,.15,.01),a.clone()),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new S.Mesh(new S.BoxGeometry(.15,.15,.01),l.clone()),[.15,0,.15],[-Math.PI/2,0,0]]]},F={X:[[new S.Mesh(new S.CylinderGeometry(.2,0,.6,4),s),[.3,0,0],[0,0,-Math.PI/2]],[new S.Mesh(new S.CylinderGeometry(.2,0,.6,4),s),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new S.Mesh(new S.CylinderGeometry(.2,0,.6,4),s),[0,.3,0]],[new S.Mesh(new S.CylinderGeometry(.2,0,.6,4),s),[0,-.3,0],[0,0,Math.PI]]],Z:[[new S.Mesh(new S.CylinderGeometry(.2,0,.6,4),s),[0,0,.3],[Math.PI/2,0,0]],[new S.Mesh(new S.CylinderGeometry(.2,0,.6,4),s),[0,0,-.3],[-Math.PI/2,0,0]]],XYZ:[[new S.Mesh(new S.OctahedronGeometry(.2,0),s)]],XY:[[new S.Mesh(new S.BoxGeometry(.2,.2,.01),s),[.15,.15,0]]],YZ:[[new S.Mesh(new S.BoxGeometry(.2,.2,.01),s),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new S.Mesh(new S.BoxGeometry(.2,.2,.01),s),[.15,0,.15],[-Math.PI/2,0,0]]]},O={START:[[new S.Mesh(new S.OctahedronGeometry(.01,2),i),null,null,null,"helper"]],END:[[new S.Mesh(new S.OctahedronGeometry(.01,2),i),null,null,null,"helper"]],DELTA:[[new S.Line(C(),i),null,null,null,"helper"]],X:[[new S.Line(m,i.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new S.Line(m,i.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new S.Line(m,i.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},v={XYZE:[[new S.Mesh(R(.5,1),E),null,[0,Math.PI/2,0]]],X:[[new S.Mesh(R(.5,.5),n)]],Y:[[new S.Mesh(R(.5,.5),r),null,[0,0,-Math.PI/2]]],Z:[[new S.Mesh(R(.5,.5),o),null,[0,Math.PI/2,0]]],E:[[new S.Mesh(R(.75,1),d),null,[0,Math.PI/2,0]]]},N={AXIS:[[new S.Line(m,i.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},x={XYZE:[[new S.Mesh(new S.SphereGeometry(.25,10,8),s)]],X:[[new S.Mesh(new S.TorusGeometry(.5,.1,4,24),s),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new S.Mesh(new S.TorusGeometry(.5,.1,4,24),s),[0,0,0],[Math.PI/2,0,0]]],Z:[[new S.Mesh(new S.TorusGeometry(.5,.1,4,24),s),[0,0,0],[0,0,-Math.PI/2]]],E:[[new S.Mesh(new S.TorusGeometry(.75,.1,2,24),s)]]},G={X:[[new S.Mesh(I,n),[.5,0,0],[0,0,-Math.PI/2]],[new S.Mesh(_,n),[0,0,0],[0,0,-Math.PI/2]],[new S.Mesh(I,n),[-.5,0,0],[0,0,Math.PI/2]]],Y:[[new S.Mesh(I,r),[0,.5,0]],[new S.Mesh(_,r)],[new S.Mesh(I,r),[0,-.5,0],[0,0,Math.PI]]],Z:[[new S.Mesh(I,o),[0,0,.5],[Math.PI/2,0,0]],[new S.Mesh(_,o),[0,0,0],[Math.PI/2,0,0]],[new S.Mesh(I,o),[0,0,-.5],[-Math.PI/2,0,0]]],XY:[[new S.Mesh(new S.BoxGeometry(.15,.15,.01),h),[.15,.15,0]]],YZ:[[new S.Mesh(new S.BoxGeometry(.15,.15,.01),a),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new S.Mesh(new S.BoxGeometry(.15,.15,.01),l),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new S.Mesh(new S.BoxGeometry(.1,.1,.1),u.clone())]]},w={X:[[new S.Mesh(new S.CylinderGeometry(.2,0,.6,4),s),[.3,0,0],[0,0,-Math.PI/2]],[new S.Mesh(new S.CylinderGeometry(.2,0,.6,4),s),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new S.Mesh(new S.CylinderGeometry(.2,0,.6,4),s),[0,.3,0]],[new S.Mesh(new S.CylinderGeometry(.2,0,.6,4),s),[0,-.3,0],[0,0,Math.PI]]],Z:[[new S.Mesh(new S.CylinderGeometry(.2,0,.6,4),s),[0,0,.3],[Math.PI/2,0,0]],[new S.Mesh(new S.CylinderGeometry(.2,0,.6,4),s),[0,0,-.3],[-Math.PI/2,0,0]]],XY:[[new S.Mesh(new S.BoxGeometry(.2,.2,.01),s),[.15,.15,0]]],YZ:[[new S.Mesh(new S.BoxGeometry(.2,.2,.01),s),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new S.Mesh(new S.BoxGeometry(.2,.2,.01),s),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new S.Mesh(new S.BoxGeometry(.2,.2,.2),s),[0,0,0]]]},L={X:[[new S.Line(m,i.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new S.Line(m,i.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new S.Line(m,i.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]};function T(D){const $=new S.Object3D;for(const V in D)for(let et=D[V].length;et--;){const W=D[V][et][0].clone(),nt=D[V][et][1],k=D[V][et][2],B=D[V][et][3],rt=D[V][et][4];W.name=V,W.tag=rt,nt&&W.position.set(nt[0],nt[1],nt[2]),k&&W.rotation.set(k[0],k[1],k[2]),B&&W.scale.set(B[0],B[1],B[2]),W.updateMatrix();const st=W.geometry.clone();st.applyMatrix4(W.matrix),W.geometry=st,W.renderOrder=1/0,W.position.set(0,0,0),W.rotation.set(0,0,0),W.scale.set(1,1,1),$.add(W)}return $}this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=T(y)),this.add(this.gizmo.rotate=T(v)),this.add(this.gizmo.scale=T(G)),this.add(this.picker.translate=T(F)),this.add(this.picker.rotate=T(x)),this.add(this.picker.scale=T(w)),this.add(this.helper.translate=T(O)),this.add(this.helper.rotate=T(N)),this.add(this.helper.scale=T(L)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}updateMatrixWorld(e){const s=(this.mode==="scale"?"local":this.space)==="local"?this.worldQuaternion:Js;this.gizmo.translate.visible=this.mode==="translate",this.gizmo.rotate.visible=this.mode==="rotate",this.gizmo.scale.visible=this.mode==="scale",this.helper.translate.visible=this.mode==="translate",this.helper.rotate.visible=this.mode==="rotate",this.helper.scale.visible=this.mode==="scale";let i=[];i=i.concat(this.picker[this.mode].children),i=i.concat(this.gizmo[this.mode].children),i=i.concat(this.helper[this.mode].children);for(let n=0;n<i.length;n++){const r=i[n];r.visible=!0,r.rotation.set(0,0,0),r.position.copy(this.worldPosition);let o;if(this.camera.isOrthographicCamera?o=(this.camera.top-this.camera.bottom)/this.camera.zoom:o=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),r.scale.set(1,1,1).multiplyScalar(o*this.size/4),r.tag==="helper"){r.visible=!1,r.name==="AXIS"?(r.visible=!!this.axis,this.axis==="X"&&(Rt.setFromEuler(Xs.set(0,0,0)),r.quaternion.copy(s).multiply(Rt),Math.abs(It.copy(ps).applyQuaternion(s).dot(this.eye))>.9&&(r.visible=!1)),this.axis==="Y"&&(Rt.setFromEuler(Xs.set(0,0,Math.PI/2)),r.quaternion.copy(s).multiply(Rt),Math.abs(It.copy(Re).applyQuaternion(s).dot(this.eye))>.9&&(r.visible=!1)),this.axis==="Z"&&(Rt.setFromEuler(Xs.set(0,Math.PI/2,0)),r.quaternion.copy(s).multiply(Rt),Math.abs(It.copy(Es).applyQuaternion(s).dot(this.eye))>.9&&(r.visible=!1)),this.axis==="XYZE"&&(Rt.setFromEuler(Xs.set(0,Math.PI/2,0)),It.copy(this.rotationAxis),r.quaternion.setFromRotationMatrix(ur.lookAt(hr,It,Re)),r.quaternion.multiply(Rt),r.visible=this.dragging),this.axis==="E"&&(r.visible=!1)):r.name==="START"?(r.position.copy(this.worldPositionStart),r.visible=this.dragging):r.name==="END"?(r.position.copy(this.worldPosition),r.visible=this.dragging):r.name==="DELTA"?(r.position.copy(this.worldPositionStart),r.quaternion.copy(this.worldQuaternionStart),vt.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),vt.applyQuaternion(this.worldQuaternionStart.clone().invert()),r.scale.copy(vt),r.visible=this.dragging):(r.quaternion.copy(s),this.dragging?r.position.copy(this.worldPositionStart):r.position.copy(this.worldPosition),this.axis&&(r.visible=this.axis.search(r.name)!==-1));continue}r.quaternion.copy(s),this.mode==="translate"||this.mode==="scale"?(r.name==="X"&&Math.abs(It.copy(ps).applyQuaternion(s).dot(this.eye))>.99&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name==="Y"&&Math.abs(It.copy(Re).applyQuaternion(s).dot(this.eye))>.99&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name==="Z"&&Math.abs(It.copy(Es).applyQuaternion(s).dot(this.eye))>.99&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name==="XY"&&Math.abs(It.copy(Es).applyQuaternion(s).dot(this.eye))<.2&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name==="YZ"&&Math.abs(It.copy(ps).applyQuaternion(s).dot(this.eye))<.2&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name==="XZ"&&Math.abs(It.copy(Re).applyQuaternion(s).dot(this.eye))<.2&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1)):this.mode==="rotate"&&(Zs.copy(s),It.copy(this.eye).applyQuaternion(Rt.copy(s).invert()),r.name.search("E")!==-1&&r.quaternion.setFromRotationMatrix(ur.lookAt(this.eye,hr,Re)),r.name==="X"&&(Rt.setFromAxisAngle(ps,Math.atan2(-It.y,It.z)),Rt.multiplyQuaternions(Zs,Rt),r.quaternion.copy(Rt)),r.name==="Y"&&(Rt.setFromAxisAngle(Re,Math.atan2(It.x,It.z)),Rt.multiplyQuaternions(Zs,Rt),r.quaternion.copy(Rt)),r.name==="Z"&&(Rt.setFromAxisAngle(Es,Math.atan2(It.y,It.x)),Rt.multiplyQuaternions(Zs,Rt),r.quaternion.copy(Rt))),r.visible=r.visible&&(r.name.indexOf("X")===-1||this.showX),r.visible=r.visible&&(r.name.indexOf("Y")===-1||this.showY),r.visible=r.visible&&(r.name.indexOf("Z")===-1||this.showZ),r.visible=r.visible&&(r.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),r.material._color=r.material._color||r.material.color.clone(),r.material._opacity=r.material._opacity||r.material.opacity,r.material.color.copy(r.material._color),r.material.opacity=r.material._opacity,this.enabled&&this.axis&&(r.name===this.axis||this.axis.split("").some(function(a){return r.name===a}))&&(r.material.color.setHex(16776960),r.material.opacity=1)}super.updateMatrixWorld(e)}}class Qa extends S.Mesh{constructor(){super(new S.PlaneGeometry(1e5,1e5,2,2),new S.MeshBasicMaterial({visible:!1,wireframe:!0,side:S.DoubleSide,transparent:!0,opacity:.1,toneMapped:!1})),this.isTransformControlsPlane=!0,this.type="TransformControlsPlane"}updateMatrixWorld(e){let t=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(t="local"),$s.copy(ps).applyQuaternion(t==="local"?this.worldQuaternion:Js),hs.copy(Re).applyQuaternion(t==="local"?this.worldQuaternion:Js),us.copy(Es).applyQuaternion(t==="local"?this.worldQuaternion:Js),It.copy(hs),this.mode){case"translate":case"scale":switch(this.axis){case"X":It.copy(this.eye).cross($s),ie.copy($s).cross(It);break;case"Y":It.copy(this.eye).cross(hs),ie.copy(hs).cross(It);break;case"Z":It.copy(this.eye).cross(us),ie.copy(us).cross(It);break;case"XY":ie.copy(us);break;case"YZ":ie.copy($s);break;case"XZ":It.copy(us),ie.copy(hs);break;case"XYZ":case"E":ie.set(0,0,0);break}break;case"rotate":default:ie.set(0,0,0)}ie.length()===0?this.quaternion.copy(this.cameraQuaternion):(dr.lookAt(vt.set(0,0,0),ie,It),this.quaternion.setFromRotationMatrix(dr)),super.updateMatrixWorld(e)}}class Oi{constructor(e,t,s,i,n,r=5,o=!0){g(this,"onDraggingStarted",new Q);g(this,"onDraggingEnded",new Q);g(this,"onDisposed",new Q);g(this,"normal");g(this,"origin");g(this,"three",new M.Plane);g(this,"components");g(this,"world");g(this,"type","default");g(this,"_helper");g(this,"_visible",!0);g(this,"_enabled",!0);g(this,"_controlsActive",!1);g(this,"_arrowBoundBox",new M.Mesh);g(this,"_planeMesh");g(this,"_controls");g(this,"_hiddenMaterial",new M.MeshBasicMaterial({visible:!1}));g(this,"update",()=>{this._enabled&&this.three.setFromNormalAndCoplanarPoint(this.normal,this._helper.position)});g(this,"changeDrag",e=>{this._visible=!e.value,this.preventCameraMovement(),this.notifyDraggingChanged(e)});if(this.components=e,this.world=t,!t.renderer)throw new Error("The given world must have a renderer!");this.normal=i,this.origin=s,t.renderer.setPlane(!0,this.three),this._planeMesh=Oi.newPlaneMesh(r,n),this._helper=this.newHelper(),this._controls=this.newTransformControls(),this.three.setFromNormalAndCoplanarPoint(i,s),o&&this.toggleControls(!0)}get enabled(){return this._enabled}set enabled(e){if(!this.world.renderer)throw new Error("No renderer found for clipping plane!");this._enabled=e,this.world.renderer.setPlane(e,this.three)}get visible(){return this._visible}set visible(e){this._visible=e,this._controls.visible=e,this._helper.visible=e,this.toggleControls(e)}get meshes(){return[this._planeMesh,this._arrowBoundBox]}get planeMaterial(){return this._planeMesh.material}set planeMaterial(e){this._planeMesh.material=e}get size(){return this._planeMesh.scale.x}set size(e){this._planeMesh.scale.set(e,e,e)}get helper(){return this._helper}setFromNormalAndCoplanarPoint(e,t){this.reset(),this.normal.equals(e)||(this.normal.copy(e),this._helper.lookAt(e)),this.origin.copy(t),this._helper.position.copy(t),this._helper.updateMatrix(),this.update()}dispose(){this._enabled=!1,this.onDraggingStarted.reset(),this.onDraggingEnded.reset(),this._helper.removeFromParent(),this.world.renderer&&this.world.renderer.setPlane(!1,this.three),this._arrowBoundBox.removeFromParent(),this._arrowBoundBox.geometry.dispose(),this._planeMesh.geometry.dispose(),this._controls.removeFromParent(),this._controls.dispose(),this.onDisposed.trigger(),this.onDisposed.reset()}reset(){const e=new M.Vector3(1,0,0),t=new M.Vector3;this.normal.equals(e)||(this.normal.copy(e),this._helper.lookAt(e)),this.origin.copy(t),this._helper.position.copy(t),this._helper.updateMatrix()}toggleControls(e){if(e){if(this._controlsActive)return;this._controls.addEventListener("change",this.update),this._controls.addEventListener("dragging-changed",this.changeDrag)}else this._controls.removeEventListener("change",this.update),this._controls.removeEventListener("dragging-changed",this.changeDrag);this._controlsActive=e}newTransformControls(){if(!this.world.renderer)throw new Error("No renderer found for clipping plane!");const e=this.world.camera.three,t=this.world.renderer.three.domElement,s=new Ya(e,t);return this.initializeControls(s),this.world.scene.three.add(s),s}initializeControls(e){e.attach(this._helper),e.showX=!1,e.showY=!1,e.setSpace("local"),this.createArrowBoundingBox(),e.children[0].children[0].add(this._arrowBoundBox)}createArrowBoundingBox(){this._arrowBoundBox.geometry=new M.CylinderGeometry(.18,.18,1.2),this._arrowBoundBox.material=this._hiddenMaterial,this._arrowBoundBox.rotateX(Math.PI/2),this._arrowBoundBox.updateMatrix(),this._arrowBoundBox.geometry.applyMatrix4(this._arrowBoundBox.matrix)}notifyDraggingChanged(e){e.value?this.onDraggingStarted.trigger():this.onDraggingEnded.trigger()}preventCameraMovement(){this.world.camera.enabled=this._visible}newHelper(){const e=new M.Object3D;return e.lookAt(this.normal),e.position.copy(this.origin),this._planeMesh.position.z+=.01,e.add(this._planeMesh),this.world.scene.three.add(e),e}static newPlaneMesh(e,t){const s=new M.PlaneGeometry(1),i=new M.Mesh(s,t);return i.scale.set(e,e,e),i}}class qa extends Pe{constructor(){super(...arguments);g(this,"_config",{enabled:{value:!0,type:"Boolean"},visible:{value:!0,type:"Boolean"},color:{value:new M.Color,type:"Color"},opacity:{type:"Number",interpolable:!0,value:1,min:0,max:1},size:{type:"Number",interpolable:!0,value:2,min:0,max:100}})}get enabled(){return this._config.enabled.value}set enabled(t){this._config.enabled.value=t,this._component.enabled=t}get visible(){return this._config.visible.value}set visible(t){this._config.visible.value=t,this._component.visible=t}get color(){return this._config.color.value}set color(t){this._config.color.value=t,this._component.material.color.copy(t)}get opacity(){return this._config.opacity.value}set opacity(t){this._config.opacity.value=t,this._component.material.opacity=t}get size(){return this._config.size.value}set size(t){this._config.size.value=t,this._component.size=t}}const Ts=class Ts extends At{constructor(t){super(t);g(this,"onSetup",new Q);g(this,"onBeforeDrag",new Q);g(this,"onAfterDrag",new Q);g(this,"onBeforeCreate",new Q);g(this,"onBeforeCancel",new Q);g(this,"onAfterCancel",new Q);g(this,"onBeforeDelete",new Q);g(this,"onAfterCreate",new Q);g(this,"onAfterDelete",new Q);g(this,"onDisposed",new Q);g(this,"isSetup",!1);g(this,"orthogonalY",!1);g(this,"toleranceOrthogonalY",.7);g(this,"Type",Oi);g(this,"list",[]);g(this,"config",new qa(this,this.components,"Clipper"));g(this,"_defaultConfig",{color:new M.Color(12255487),opacity:.2,size:2});g(this,"_material",new M.MeshBasicMaterial({color:12255487,side:M.DoubleSide,transparent:!0,opacity:.2}));g(this,"_size",5);g(this,"_enabled",!1);g(this,"_visible",!0);g(this,"_onStartDragging",()=>{this.onBeforeDrag.trigger()});g(this,"_onEndDragging",()=>{this.onAfterDrag.trigger()});this.components.add(Ts.uuid,this),t.get($t).list.add(this.config)}get enabled(){return this._enabled}set enabled(t){this._enabled=t;for(const s of this.list)s.enabled=t;this.updateMaterialsAndPlanes()}get visible(){return this._visible}set visible(t){this._visible=t;for(const s of this.list)s.visible=t}get material(){return this._material}set material(t){this._material=t;for(const s of this.list)s.planeMaterial=t}get size(){return this._size}set size(t){this._size=t;for(const s of this.list)s.size=t}dispose(){this._enabled=!1,this.components.get($t).list.delete(this.config);for(const s of this.list)s.dispose();this.list.length=0,this._material.dispose(),this.onBeforeCreate.reset(),this.onBeforeCancel.reset(),this.onBeforeDelete.reset(),this.onBeforeDrag.reset(),this.onAfterCreate.reset(),this.onAfterCancel.reset(),this.onAfterDelete.reset(),this.onAfterDrag.reset(),this.onDisposed.trigger(Ts.uuid),this.onDisposed.reset()}create(t){const n=this.components.get(Ne).get(t).castRay();return n?this.createPlaneFromIntersection(t,n):null}createFromNormalAndCoplanarPoint(t,s,i){const n=this.newPlane(t,i,s);return this.updateMaterialsAndPlanes(),n}delete(t,s){s||(s=this.pickPlane(t)),s&&this.deletePlane(s)}deleteAll(t){const s=[...this.list];for(const i of s)if(!t||t.has(i.type)){this.delete(i.world,i);const n=this.list.indexOf(i);n!==-1&&this.list.splice(n,1)}}setup(t){const s={...this._defaultConfig,...t};this.config.color=s.color,this.config.opacity=s.opacity,this.config.size=s.size,this.isSetup=!0,this.onSetup.trigger()}deletePlane(t){const s=this.list.indexOf(t);if(s!==-1){if(this.list.splice(s,1),!t.world.renderer)throw new Error("Renderer not found for this plane's world!");t.world.renderer.setPlane(!1,t.three),t.dispose(),this.updateMaterialsAndPlanes(),this.onAfterDelete.trigger(t)}}pickPlane(t){const i=this.components.get(Ne).get(t),n=this.getAllPlaneMeshes(),r=i.castRay(n);if(r){const o=r.object;return this.list.find(a=>a.meshes.includes(o))}}getAllPlaneMeshes(){const t=[];for(const s of this.list)t.push(...s.meshes);return t}createPlaneFromIntersection(t,s){var a;if(!t.renderer)throw new Error("The given world must have a renderer!");const i=s.point.distanceTo(new M.Vector3(0,0,0)),n=(a=s.face)==null?void 0:a.normal;if(!i||!n)return null;const r=this.getWorldNormal(s,n),o=this.newPlane(t,s.point,r.negate());return o.visible=this._visible,o.size=this._size,t.renderer.setPlane(!0,o.three),this.updateMaterialsAndPlanes(),o}getWorldNormal(t,s){const i=t.object;let n=t.object.matrixWorld.clone();if(i instanceof M.InstancedMesh&&t.instanceId!==void 0){const l=new M.Matrix4;i.getMatrixAt(t.instanceId,l),n=l.multiply(n)}const o=new M.Matrix3().getNormalMatrix(n),a=s.clone().applyMatrix3(o).normalize();return this.normalizePlaneDirectionY(a),a}normalizePlaneDirectionY(t){this.orthogonalY&&(t.y>this.toleranceOrthogonalY&&(t.x=0,t.y=1,t.z=0),t.y<-this.toleranceOrthogonalY&&(t.x=0,t.y=-1,t.z=0))}newPlane(t,s,i){const n=new this.Type(this.components,t,s,i,this._material);return n.onDraggingStarted.add(this._onStartDragging),n.onDraggingEnded.add(this._onEndDragging),this.list.push(n),this.onAfterCreate.trigger(n),n}updateMaterialsAndPlanes(){const t=this.components.get(si);for(const[s,i]of t.list){if(!i.renderer)continue;i.renderer.updateClippingPlanes();const{clippingPlanes:n}=i.renderer;for(const r of i.meshes)if(r.material)if(Array.isArray(r.material))for(const o of r.material)o.clippingPlanes=n;else r.material.clippingPlanes=n}}};g(Ts,"uuid","66290bc5-18c4-4cd1-9379-2e17a0617611");let ni=Ts;class zr{constructor(e){g(this,"enabled",!1);g(this,"id","FirstPerson");this.camera=e}set(e){if(this.enabled=e,e){if(this.camera.projection.current!=="Perspective"){this.camera.set("Orbit");return}this.setupFirstPersonCamera()}}setupFirstPersonCamera(){const e=this.camera.controls,t=new M.Vector3;e.distance--,e.getPosition(t),e.minDistance=1,e.maxDistance=1,e.distance=1,e.moveTo(t.x,t.y,t.z),e.truckSpeed=50,e.mouseButtons.wheel=Mt.ACTION.DOLLY,e.touches.two=Mt.ACTION.TOUCH_ZOOM_TRUCK}}class Vr{constructor(e){g(this,"enabled",!0);g(this,"id","Orbit");this.camera=e,this.activateOrbitControls()}set(e){this.enabled=e,e&&this.activateOrbitControls()}activateOrbitControls(){const e=this.camera.controls;e.minDistance=1,e.maxDistance=300;const t=new M.Vector3;e.getPosition(t);const s=t.length();e.distance=s,e.truckSpeed=2;const{rotation:i}=this.camera.three,n=new M.Vector3(0,0,-1).applyEuler(i),r=t.addScaledVector(n,s);e.moveTo(r.x,r.y,r.z)}}class kr{constructor(e){g(this,"enabled",!1);g(this,"id","Plan");g(this,"mouseAction1");g(this,"mouseAction2");g(this,"mouseInitialized",!1);g(this,"defaultAzimuthSpeed");g(this,"defaultPolarSpeed");this.camera=e,this.defaultAzimuthSpeed=e.controls.azimuthRotateSpeed,this.defaultPolarSpeed=e.controls.polarRotateSpeed}set(e){this.enabled=e;const t=this.camera.controls;t.azimuthRotateSpeed=e?0:this.defaultAzimuthSpeed,t.polarRotateSpeed=e?0:this.defaultPolarSpeed,this.mouseInitialized||(this.mouseAction1=t.touches.one,this.mouseAction2=t.touches.two,this.mouseInitialized=!0),e?(t.mouseButtons.left=Mt.ACTION.TRUCK,t.touches.one=Mt.ACTION.TOUCH_TRUCK,t.touches.two=Mt.ACTION.TOUCH_ZOOM):(t.mouseButtons.left=Mt.ACTION.ROTATE,t.touches.one=this.mouseAction1,t.touches.two=this.mouseAction2)}}class Gr{constructor(e){g(this,"onChanged",new Q);g(this,"current","Perspective");g(this,"camera");g(this,"matchOrthoDistanceEnabled",!1);g(this,"_component");g(this,"_previousDistance",-1);this._component=e,this.camera=e.three}async set(e){this.current!==e&&(e==="Orthographic"?this.setOrthoCamera():await this.setPerspectiveCamera(),this.onChanged.trigger(this.camera))}async toggle(){const t=this.current==="Perspective"?"Orthographic":"Perspective";await this.set(t)}setOrthoCamera(){if(this._component.mode===null||this._component.mode.id==="FirstPerson")return;this._previousDistance=this._component.controls.distance,this._component.controls.distance=200;const e=this.getPerspectiveDims();if(!e)return;const{width:t,height:s}=e;this.setupOrthoCamera(s,t),this.camera=this._component.threeOrtho,this.current="Orthographic"}getPerspectiveDims(){const e=this._component.currentWorld;if(!e||!e.renderer)return null;const t=new M.Vector3;this._component.threePersp.getWorldDirection(t);const s=new M.Vector3;this._component.controls.getTarget(s);const n=s.clone().sub(this._component.threePersp.position).dot(t),r=e.renderer.getSize(),o=r.x/r.y,a=this._component.threePersp,l=n*2*Math.atan(a.fov*(Math.PI/180)/2);return{width:l*o,height:l}}setupOrthoCamera(e,t){this._component.controls.mouseButtons.wheel=Mt.ACTION.ZOOM,this._component.controls.mouseButtons.middle=Mt.ACTION.ZOOM;const s=this._component.threePersp,i=this._component.threeOrtho;i.zoom=1,i.left=t/-2,i.right=t/2,i.top=e/2,i.bottom=e/-2,i.updateProjectionMatrix(),i.position.copy(s.position),i.quaternion.copy(s.quaternion),this._component.controls.camera=i}getDistance(){const e=this._component.threePersp,t=this._component.threeOrtho;return(t.top-t.bottom)/t.zoom/(2*Math.atan(e.fov*(Math.PI/180)/2))}async setPerspectiveCamera(){this._component.controls.mouseButtons.wheel=Mt.ACTION.DOLLY,this._component.controls.mouseButtons.middle=Mt.ACTION.DOLLY;const e=this._component.threePersp,t=this._component.threeOrtho;e.position.copy(t.position),e.quaternion.copy(t.quaternion),this._component.controls.mouseButtons.wheel=Mt.ACTION.DOLLY,this.matchOrthoDistanceEnabled?this._component.controls.distance=this.getDistance():this._component.controls.distance=this._previousDistance,await this._component.controls.zoomTo(1),e.updateProjectionMatrix(),this._component.controls.camera=e,this.camera=e,this.current="Perspective"}}class Yr extends Ze{constructor(t){super(t);g(this,"projection");g(this,"threeOrtho");g(this,"threePersp");g(this,"_userInputButtons",{});g(this,"_frustumSize",50);g(this,"_navigationModes",new Map);g(this,"_mode",null);g(this,"previousSize",null);this.threePersp=this.three,this.threeOrtho=this.newOrthoCamera(),this.projection=new Gr(this),this.onAspectUpdated.add(()=>{this.setOrthoPerspCameraAspect()}),this.projection.onChanged.add(s=>{this.three=s,this.updateAspect()}),this.onWorldChanged.add(({action:s})=>{s==="added"&&(this._navigationModes.clear(),this._navigationModes.set("Orbit",new Vr(this)),this._navigationModes.set("FirstPerson",new zr(this)),this._navigationModes.set("Plan",new kr(this)),this._mode=this._navigationModes.get("Orbit"),this.mode.set(!0,{preventTargetAdjustment:!0}),this.currentWorld&&this.currentWorld.renderer&&(this.previousSize=this.currentWorld.renderer.getSize().clone()))})}get mode(){if(!this._mode)throw new Error("Mode not found, camera not initialized");return this._mode}dispose(){super.dispose(),this.threeOrtho.removeFromParent()}set(t){if(this.mode!==null&&this.mode.id!==t){if(this.mode.set(!1),!this._navigationModes.has(t))throw new Error("The specified mode does not exist!");this._mode=this._navigationModes.get(t),this.mode.set(!0)}}async fit(t,s=1.5){if(!this.enabled)return;const i=Number.MAX_VALUE,n=Number.MIN_VALUE,r=new M.Vector3(i,i,i),o=new M.Vector3(n,n,n);for(const f of t){const E=new M.Box3().setFromObject(f);E.min.x<r.x&&(r.x=E.min.x),E.min.y<r.y&&(r.y=E.min.y),E.min.z<r.z&&(r.z=E.min.z),E.max.x>o.x&&(o.x=E.max.x),E.max.y>o.y&&(o.y=E.max.y),E.max.z>o.z&&(o.z=E.max.z)}const a=new M.Box3(r,o),l=new M.Vector3;a.getSize(l);const h=new M.Vector3;a.getCenter(h);const u=Math.max(l.x,l.y,l.z)*s,d=new M.Sphere(h,u);await this.controls.fitToSphere(d,!0)}setUserInput(t){t?this.enableUserInput():this.disableUserInput()}disableUserInput(){this._userInputButtons.left=this.controls.mouseButtons.left,this._userInputButtons.right=this.controls.mouseButtons.right,this._userInputButtons.middle=this.controls.mouseButtons.middle,this._userInputButtons.wheel=this.controls.mouseButtons.wheel,this.controls.mouseButtons.left=0,this.controls.mouseButtons.right=0,this.controls.mouseButtons.middle=0,this.controls.mouseButtons.wheel=0}enableUserInput(){Object.keys(this._userInputButtons).length!==0&&(this.controls.mouseButtons.left=this._userInputButtons.left,this.controls.mouseButtons.right=this._userInputButtons.right,this.controls.mouseButtons.middle=this._userInputButtons.middle,this.controls.mouseButtons.wheel=this._userInputButtons.wheel)}newOrthoCamera(){const t=window.innerWidth/window.innerHeight;return new M.OrthographicCamera(this._frustumSize*t/-2,this._frustumSize*t/2,this._frustumSize/2,this._frustumSize/-2,.1,1e3)}setOrthoPerspCameraAspect(){if(!this.currentWorld||!this.currentWorld.renderer||!this.previousSize)return;const t=this.currentWorld.renderer.getSize(),s=this.threeOrtho.top,i=this.threeOrtho.right,n=t.y/this.previousSize.y,r=t.x/this.previousSize.x,o=s*n,a=i*r;this.threeOrtho.left=-a,this.threeOrtho.right=a,this.threeOrtho.top=o,this.threeOrtho.bottom=-o,this.threeOrtho.updateProjectionMatrix(),this.previousSize.copy(t)}}const Ka=new Map([[K.IFCRELAGGREGATES,{forRelated:"Decomposes",forRelating:"IsDecomposedBy"}],[K.IFCRELASSOCIATESMATERIAL,{forRelated:"HasAssociations",forRelating:"AssociatedTo"}],[K.IFCRELASSOCIATESCLASSIFICATION,{forRelated:"HasAssociations",forRelating:"ClassificationForObjects"}],[K.IFCRELASSIGNSTOGROUP,{forRelated:"HasAssignments",forRelating:"IsGroupedBy"}],[K.IFCRELDEFINESBYPROPERTIES,{forRelated:"IsDefinedBy",forRelating:"DefinesOcurrence"}],[K.IFCRELDEFINESBYTYPE,{forRelated:"IsTypedBy",forRelating:"Types"}],[K.IFCRELDEFINESBYTEMPLATE,{forRelated:"IsDefinedBy",forRelating:"Defines"}],[K.IFCRELCONTAINEDINSPATIALSTRUCTURE,{forRelated:"ContainedInStructure",forRelating:"ContainsElements"}],[K.IFCRELFLOWCONTROLELEMENTS,{forRelated:"AssignedToFlowElement",forRelating:"HasControlElements"}],[K.IFCRELCONNECTSELEMENTS,{forRelated:"ConnectedFrom",forRelating:"ConnectedTo"}],[K.IFCRELASSIGNSTOPRODUCT,{forRelated:"HasAssignments",forRelating:"ReferencedBy"}],[K.IFCRELDECLARES,{forRelated:"HasContext",forRelating:"Declares"}],[K.IFCRELASSIGNSTOCONTROL,{forRelated:"HasAssignments",forRelating:"Controls"}],[K.IFCRELNESTS,{forRelated:"Nests",forRelating:"IsNestedBy"}]]),_s=class _s extends At{constructor(t){super(t);g(this,"onDisposed",new Q);g(this,"onRelationsIndexed",new Q);g(this,"relationMaps",{});g(this,"enabled",!0);g(this,"_relToAttributesMap",Ka);g(this,"_inverseAttributes",["IsDecomposedBy","Decomposes","AssociatedTo","HasAssociations","ClassificationForObjects","IsGroupedBy","HasAssignments","IsDefinedBy","DefinesOcurrence","IsTypedBy","Types","Defines","ContainedInStructure","ContainsElements","HasControlElements","AssignedToFlowElement","ConnectedTo","ConnectedFrom","ReferencedBy","Declares","HasContext","Controls","IsNestedBy","Nests"]);g(this,"_ifcRels",[K.IFCRELAGGREGATES,K.IFCRELASSOCIATESMATERIAL,K.IFCRELASSOCIATESCLASSIFICATION,K.IFCRELASSIGNSTOGROUP,K.IFCRELDEFINESBYPROPERTIES,K.IFCRELDEFINESBYTYPE,K.IFCRELDEFINESBYTEMPLATE,K.IFCRELCONTAINEDINSPATIALSTRUCTURE,K.IFCRELFLOWCONTROLELEMENTS,K.IFCRELCONNECTSELEMENTS,K.IFCRELASSIGNSTOPRODUCT,K.IFCRELDECLARES,K.IFCRELASSIGNSTOCONTROL,K.IFCRELNESTS]);g(this,"onFragmentsDisposed",t=>{delete this.relationMaps[t.groupID]});this.components.add(_s.uuid,this),t.get(Tt).onFragmentsDisposed.add(this.onFragmentsDisposed)}indexRelations(t,s,i,n){const r=Object.keys(s).find(d=>d.startsWith("Relating")),o=Object.keys(s).find(d=>d.startsWith("Related"));if(!(r&&o))return;const a=s[r].value,l=s[o].map(d=>d.value),h=t.get(a)??new Map,u=this.getAttributeIndex(n);u!==null&&(h.set(u,l),t.set(a,h));for(const d of l){const f=t.get(d)??new Map,E=this.getAttributeIndex(i);if(!E)continue;const p=f.get(E)??[];p.push(a),f.set(E,p),t.set(d,f)}}getAttributeIndex(t){const s=this._inverseAttributes.indexOf(t);return s===-1?null:s}setRelationMap(t,s){this.relationMaps[t.uuid]=s,this.onRelationsIndexed.trigger({modelID:t.uuid,relationsMap:s})}async process(t){if(!t.hasProperties)throw new Error("FragmentsGroup properties not found");let s=this.relationMaps[t.uuid];if(s)return s;s=new Map;for(const i of this._ifcRels){const n=await t.getAllPropertiesOfType(i);if(!n)continue;const r=this._relToAttributesMap.get(i);if(!r)continue;const{forRelated:o,forRelating:a}=r;for(const l in n){const h=n[l];this.indexRelations(s,h,o,a)}}return this.setRelationMap(t,s),s}async processFromWebIfc(t,s){const i=new Map;for(const n of this._ifcRels){const r=this._relToAttributesMap.get(n);if(!r)continue;const{forRelated:o,forRelating:a}=r,l=t.GetLineIDsWithType(s,n);for(let h=0;h<l.size();h++){const u=await t.properties.getItemProperties(s,l.get(h));this.indexRelations(i,u,o,a)}}return this.onRelationsIndexed.trigger({modelID:s.toString(),relationsMap:i}),i}getEntityRelations(t,s,i){const n=this.relationMaps[t.uuid];if(!n)throw new Error(`IfcRelationsIndexer: model ${t.uuid} has no relations indexed.`);const r=n.get(s),o=this.getAttributeIndex(i);if(r===void 0||o===null)return null;const a=r.get(o);return a||null}serializeRelations(t){const s={};for(const[i,n]of t.entries()){s[i]||(s[i]={});for(const[r,o]of n.entries())s[i][r]=o}return JSON.stringify(s)}serializeModelRelations(t){const s=this.relationMaps[t.uuid];return s?this.serializeRelations(s):null}serializeAllRelations(){const t={};for(const s in this.relationMaps){const i=this.relationMaps[s],n={};for(const[r,o]of i.entries()){n[r]||(n[r]={});for(const[a,l]of o.entries())n[r][a]=l}t[s]=n}return JSON.stringify(t)}getRelationsMapFromJSON(t){const s=JSON.parse(t),i=new Map;for(const n in s){const r=s[n],o=new Map;for(const a in r)o.set(Number(a),r[a]);i.set(Number(n),o)}return i}dispose(){this.relationMaps={},this.components.get(Tt).onFragmentsDisposed.remove(this.onFragmentsDisposed),this.onDisposed.trigger(_s.uuid),this.onDisposed.reset()}getEntitiesWithRelation(t,s,i){const n=this.relationMaps[t.uuid];if(!n)throw new Error("IfcRelationsIndexer: the model relations are not indexed!");const r=new Set;for(const[o,a]of n){const l=this.getAttributeIndex(s);if(l===null)throw new Error("IfcRelationsIndexer: invalid inverse attribute name");const h=a.get(l);h&&h.includes(i)&&r.add(o)}return r}addEntityRelations(t,s,i,...n){const r=this.getEntityRelations(t,s,i);if(r)r.push(...n);else{const o=this.getAttributeIndex(i);if(!o)throw new Error(`IfcRelationsIndexer: ${i} is not a valid relation name.`);const a=this.relationMaps[t.uuid].get(s);a==null||a.set(o,n)}}getEntityChildren(t,s,i=new Set){if(i.add(s),this.relationMaps[t.uuid]===void 0)throw new Error("The provided model has no indices. You have to generate them first.");const r=this.getEntityRelations(t,s,"IsDecomposedBy");if(r)for(const a of r)this.getEntityChildren(t,a,i);const o=this.getEntityRelations(t,s,"ContainsElements");if(o)for(const a of o)this.getEntityChildren(t,a,i);return i}};g(_s,"uuid","23a889ab-83b3-44a4-8bee-ead83438370b");let be=_s;const Ei=class Ei extends At{constructor(t){super(t);g(this,"onDisposed",new Q);g(this,"onFragmentsLoaded",new Q);g(this,"onFragmentsDisposed",new Q);g(this,"list",new Oe);g(this,"groups",new Oe);g(this,"baseCoordinationModel","");g(this,"baseCoordinationMatrix",new M.Matrix4);g(this,"enabled",!0);g(this,"_loader",new Cr.Serializer);this.components.add(Ei.uuid,this)}get meshes(){const t=[];for(const[s,i]of this.list)t.push(i.mesh);return t}dispose(){for(const[t,s]of this.groups)s.dispose(!0);this.baseCoordinationModel="",this.groups.clear(),this.list.clear(),this.onFragmentsLoaded.reset(),this.onFragmentsDisposed.reset(),this.onDisposed.trigger(),this.onDisposed.reset()}disposeGroup(t){const{uuid:s}=t,i=[];for(const n of t.items)i.push(n.id),this.list.delete(n.id);t.dispose(!0),this.groups.delete(t.uuid),this.groups.size===0&&(this.baseCoordinationModel="",this.baseCoordinationMatrix=new M.Matrix4),this.onFragmentsDisposed.trigger({groupID:s,fragmentIDs:i})}load(t,s){const n={...{coordinate:!0},...s},{coordinate:r,name:o,properties:a,relationsMap:l}=n,h=this._loader.import(t);s&&(h.isStreamed=s.isStreamed||!1),o&&(h.name=o);for(const u of h.items)u.group=h,this.list.set(u.id,u);return r&&this.coordinate([h]),this.groups.set(h.uuid,h),a&&h.setLocalProperties(a),l&&this.components.get(be).setRelationMap(h,l),this.onFragmentsLoaded.trigger(h),h}export(t){return this._loader.export(t)}getModelIdMap(t){const s={};for(const i in t){const n=this.list.get(i);if(!(n&&n.group))continue;const r=n.group;r.uuid in s||(s[r.uuid]=new Set);const o=t[i];for(const a of o)s[r.uuid].add(a)}return s}modelIdToFragmentIdMap(t){let s={};for(const i in t){const n=this.groups.get(i);if(!n)continue;const r=t[i],o=n.getFragmentMap(r);s={...s,...o}}return s}guidToFragmentIdMap(t){const s={};for(const[n,r]of this.groups){n in s||(s[n]=new Set);for(const o of t){const a=r.globalToExpressIDs.get(o);a&&s[n].add(a)}}return this.modelIdToFragmentIdMap(s)}coordinate(t=Array.from(this.groups.values())){if(this.baseCoordinationModel.length===0){const i=t.pop();if(!i)return;this.baseCoordinationModel=i.uuid,this.baseCoordinationMatrix=i.coordinationMatrix.clone()}if(t.length)for(const i of t)i.coordinationMatrix.equals(this.baseCoordinationMatrix)||(i.position.set(0,0,0),i.rotation.set(0,0,0),i.scale.set(1,1,1),i.updateMatrix(),this.applyBaseCoordinateSystem(i,i.coordinationMatrix))}applyBaseCoordinateSystem(t,s){s&&t.applyMatrix4(s.clone().invert()),t.applyMatrix4(this.baseCoordinationMatrix)}clone(t,s){const i=t.cloneGroup(s);this.groups.set(i.uuid,i);for(const n of i.items)this.list.set(n.id,n);return i}};g(Ei,"uuid","fef46874-46a3-461b-8c44-2922ab77c806");let Tt=Ei;var js=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ja(c){return c&&c.__esModule&&Object.prototype.hasOwnProperty.call(c,"default")?c.default:c}function Qs(c){throw new Error('Could not dynamically require "'+c+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Hr={exports:{}};/*!
|
|
128
|
+
`,extensions:{derivatives:!0}});this.three=new b.Mesh(a,l),this.three.frustumCulled=!1,t.scene.three.add(this.three),this.setupEvents(!0)}get visible(){return this.three.visible}set visible(i){i?this.world.scene.three.add(this.three):this.three.removeFromParent()}get material(){return this.three.material}get fade(){return this._fade===3}set fade(i){this._fade=i?3:0,this.material.uniforms.uFade.value=this._fade}setup(i){const t={...this._defaultConfig,...i};this.config.visible=!0,this.config.color=t.color,this.config.primarySize=t.primarySize,this.config.secondarySize=t.secondarySize,this.config.distance=t.distance,this.isSetup=!0,this.onSetup.trigger()}dispose(){this.setupEvents(!1),this.components.get(Gt).list.delete(this.config),this.components.get(Ce).destroy(this.three),this.onDisposed.trigger(),this.onDisposed.reset(),this.world=null,this.components=null}setupEvents(i){if(this.world.isDisposing||!(this.world.camera instanceof Qe))return;const t=this.world.camera.controls;i?t.addEventListener("update",this.updateZoom):t.removeEventListener("update",this.updateZoom)}}const Fs=class Fs extends mt{constructor(t){super(t);C(this,"list",new Map);C(this,"onDisposed",new j);C(this,"enabled",!0);t.add(Fs.uuid,this)}create(t){if(this.list.has(t.uuid))throw new Error("This world already has a grid!");const e=new to(this.components,t);return this.list.set(t.uuid,e),t.onDisposed.add(()=>{this.delete(t)}),e}delete(t){const e=this.list.get(t.uuid);e&&e.dispose(),this.list.delete(t.uuid)}dispose(){for(const[t,e]of this.list)e.dispose();this.list.clear(),this.onDisposed.trigger(),this.onDisposed.reset()}};C(Fs,"uuid","d1e814d5-b81c-4452-87a2-f039375e0489");let Fn=Fs;const Pe=new y.Raycaster,Dt=new y.Vector3,me=new y.Vector3,St=new y.Quaternion,gr={X:new y.Vector3(1,0,0),Y:new y.Vector3(0,1,0),Z:new y.Vector3(0,0,1)},un={type:"change"},Ar={type:"mouseDown"},Fr={type:"mouseUp",mode:null},Sr={type:"objectChange"};class Ec extends y.Object3D{constructor(i,t){super(),t===void 0&&(console.warn('THREE.TransformControls: The second parameter "domElement" is now mandatory.'),t=document),this.isTransformControls=!0,this.visible=!1,this.domElement=t,this.domElement.style.touchAction="none";const e=new gc;this._gizmo=e,this.add(e);const s=new Ac;this._plane=s,this.add(s);const n=this;function r(m,F){let R=F;Object.defineProperty(n,m,{get:function(){return R!==void 0?R:F},set:function(S){R!==S&&(R=S,s[m]=S,e[m]=S,n.dispatchEvent({type:m+"-changed",value:S}),n.dispatchEvent(un))}}),n[m]=F,s[m]=F,e[m]=F}r("camera",i),r("object",void 0),r("enabled",!0),r("axis",null),r("mode","translate"),r("translationSnap",null),r("rotationSnap",null),r("scaleSnap",null),r("space","world"),r("size",1),r("dragging",!1),r("showX",!0),r("showY",!0),r("showZ",!0);const o=new y.Vector3,a=new y.Vector3,l=new y.Quaternion,h=new y.Quaternion,f=new y.Vector3,I=new y.Quaternion,u=new y.Vector3,d=new y.Vector3,E=new y.Vector3,T=0,p=new y.Vector3;r("worldPosition",o),r("worldPositionStart",a),r("worldQuaternion",l),r("worldQuaternionStart",h),r("cameraPosition",f),r("cameraQuaternion",I),r("pointStart",u),r("pointEnd",d),r("rotationAxis",E),r("rotationAngle",T),r("eye",p),this._offset=new y.Vector3,this._startNorm=new y.Vector3,this._endNorm=new y.Vector3,this._cameraScale=new y.Vector3,this._parentPosition=new y.Vector3,this._parentQuaternion=new y.Quaternion,this._parentQuaternionInv=new y.Quaternion,this._parentScale=new y.Vector3,this._worldScaleStart=new y.Vector3,this._worldQuaternionInv=new y.Quaternion,this._worldScale=new y.Vector3,this._positionStart=new y.Vector3,this._quaternionStart=new y.Quaternion,this._scaleStart=new y.Vector3,this._getPointer=pc.bind(this),this._onPointerDown=Tc.bind(this),this._onPointerHover=Cc.bind(this),this._onPointerMove=mc.bind(this),this._onPointerUp=Rc.bind(this),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointermove",this._onPointerHover),this.domElement.addEventListener("pointerup",this._onPointerUp)}updateMatrixWorld(){this.object!==void 0&&(this.object.updateMatrixWorld(),this.object.parent===null?console.error("TransformControls: The attached 3D object must be a part of the scene graph."):this.object.parent.matrixWorld.decompose(this._parentPosition,this._parentQuaternion,this._parentScale),this.object.matrixWorld.decompose(this.worldPosition,this.worldQuaternion,this._worldScale),this._parentQuaternionInv.copy(this._parentQuaternion).invert(),this._worldQuaternionInv.copy(this.worldQuaternion).invert()),this.camera.updateMatrixWorld(),this.camera.matrixWorld.decompose(this.cameraPosition,this.cameraQuaternion,this._cameraScale),this.camera.isOrthographicCamera?this.camera.getWorldDirection(this.eye).negate():this.eye.copy(this.cameraPosition).sub(this.worldPosition).normalize(),super.updateMatrixWorld(this)}pointerHover(i){if(this.object===void 0||this.dragging===!0)return;Pe.setFromCamera(i,this.camera);const t=fn(this._gizmo.picker[this.mode],Pe);t?this.axis=t.object.name:this.axis=null}pointerDown(i){if(!(this.object===void 0||this.dragging===!0||i.button!==0)&&this.axis!==null){Pe.setFromCamera(i,this.camera);const t=fn(this._plane,Pe,!0);t&&(this.object.updateMatrixWorld(),this.object.parent.updateMatrixWorld(),this._positionStart.copy(this.object.position),this._quaternionStart.copy(this.object.quaternion),this._scaleStart.copy(this.object.scale),this.object.matrixWorld.decompose(this.worldPositionStart,this.worldQuaternionStart,this._worldScaleStart),this.pointStart.copy(t.point).sub(this.worldPositionStart)),this.dragging=!0,Ar.mode=this.mode,this.dispatchEvent(Ar)}}pointerMove(i){const t=this.axis,e=this.mode,s=this.object;let n=this.space;if(e==="scale"?n="local":(t==="E"||t==="XYZE"||t==="XYZ")&&(n="world"),s===void 0||t===null||this.dragging===!1||i.button!==-1)return;Pe.setFromCamera(i,this.camera);const r=fn(this._plane,Pe,!0);if(r){if(this.pointEnd.copy(r.point).sub(this.worldPositionStart),e==="translate")this._offset.copy(this.pointEnd).sub(this.pointStart),n==="local"&&t!=="XYZ"&&this._offset.applyQuaternion(this._worldQuaternionInv),t.indexOf("X")===-1&&(this._offset.x=0),t.indexOf("Y")===-1&&(this._offset.y=0),t.indexOf("Z")===-1&&(this._offset.z=0),n==="local"&&t!=="XYZ"?this._offset.applyQuaternion(this._quaternionStart).divide(this._parentScale):this._offset.applyQuaternion(this._parentQuaternionInv).divide(this._parentScale),s.position.copy(this._offset).add(this._positionStart),this.translationSnap&&(n==="local"&&(s.position.applyQuaternion(St.copy(this._quaternionStart).invert()),t.search("X")!==-1&&(s.position.x=Math.round(s.position.x/this.translationSnap)*this.translationSnap),t.search("Y")!==-1&&(s.position.y=Math.round(s.position.y/this.translationSnap)*this.translationSnap),t.search("Z")!==-1&&(s.position.z=Math.round(s.position.z/this.translationSnap)*this.translationSnap),s.position.applyQuaternion(this._quaternionStart)),n==="world"&&(s.parent&&s.position.add(Dt.setFromMatrixPosition(s.parent.matrixWorld)),t.search("X")!==-1&&(s.position.x=Math.round(s.position.x/this.translationSnap)*this.translationSnap),t.search("Y")!==-1&&(s.position.y=Math.round(s.position.y/this.translationSnap)*this.translationSnap),t.search("Z")!==-1&&(s.position.z=Math.round(s.position.z/this.translationSnap)*this.translationSnap),s.parent&&s.position.sub(Dt.setFromMatrixPosition(s.parent.matrixWorld))));else if(e==="scale"){if(t.search("XYZ")!==-1){let o=this.pointEnd.length()/this.pointStart.length();this.pointEnd.dot(this.pointStart)<0&&(o*=-1),me.set(o,o,o)}else Dt.copy(this.pointStart),me.copy(this.pointEnd),Dt.applyQuaternion(this._worldQuaternionInv),me.applyQuaternion(this._worldQuaternionInv),me.divide(Dt),t.search("X")===-1&&(me.x=1),t.search("Y")===-1&&(me.y=1),t.search("Z")===-1&&(me.z=1);s.scale.copy(this._scaleStart).multiply(me),this.scaleSnap&&(t.search("X")!==-1&&(s.scale.x=Math.round(s.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),t.search("Y")!==-1&&(s.scale.y=Math.round(s.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),t.search("Z")!==-1&&(s.scale.z=Math.round(s.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap))}else if(e==="rotate"){this._offset.copy(this.pointEnd).sub(this.pointStart);const o=20/this.worldPosition.distanceTo(Dt.setFromMatrixPosition(this.camera.matrixWorld));let a=!1;t==="XYZE"?(this.rotationAxis.copy(this._offset).cross(this.eye).normalize(),this.rotationAngle=this._offset.dot(Dt.copy(this.rotationAxis).cross(this.eye))*o):(t==="X"||t==="Y"||t==="Z")&&(this.rotationAxis.copy(gr[t]),Dt.copy(gr[t]),n==="local"&&Dt.applyQuaternion(this.worldQuaternion),Dt.cross(this.eye),Dt.length()===0?a=!0:this.rotationAngle=this._offset.dot(Dt.normalize())*o),(t==="E"||a)&&(this.rotationAxis.copy(this.eye),this.rotationAngle=this.pointEnd.angleTo(this.pointStart),this._startNorm.copy(this.pointStart).normalize(),this._endNorm.copy(this.pointEnd).normalize(),this.rotationAngle*=this._endNorm.cross(this._startNorm).dot(this.eye)<0?1:-1),this.rotationSnap&&(this.rotationAngle=Math.round(this.rotationAngle/this.rotationSnap)*this.rotationSnap),n==="local"&&t!=="E"&&t!=="XYZE"?(s.quaternion.copy(this._quaternionStart),s.quaternion.multiply(St.setFromAxisAngle(this.rotationAxis,this.rotationAngle)).normalize()):(this.rotationAxis.applyQuaternion(this._parentQuaternionInv),s.quaternion.copy(St.setFromAxisAngle(this.rotationAxis,this.rotationAngle)),s.quaternion.multiply(this._quaternionStart).normalize())}this.dispatchEvent(un),this.dispatchEvent(Sr)}}pointerUp(i){i.button===0&&(this.dragging&&this.axis!==null&&(Fr.mode=this.mode,this.dispatchEvent(Fr)),this.dragging=!1,this.axis=null)}dispose(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointermove",this._onPointerHover),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerup",this._onPointerUp),this.traverse(function(i){i.geometry&&i.geometry.dispose(),i.material&&i.material.dispose()})}attach(i){return this.object=i,this.visible=!0,this}detach(){return this.object=void 0,this.visible=!1,this.axis=null,this}reset(){this.enabled&&this.dragging&&(this.object.position.copy(this._positionStart),this.object.quaternion.copy(this._quaternionStart),this.object.scale.copy(this._scaleStart),this.dispatchEvent(un),this.dispatchEvent(Sr),this.pointStart.copy(this.pointEnd))}getRaycaster(){return Pe}getMode(){return this.mode}setMode(i){this.mode=i}setTranslationSnap(i){this.translationSnap=i}setRotationSnap(i){this.rotationSnap=i}setScaleSnap(i){this.scaleSnap=i}setSize(i){this.size=i}setSpace(i){this.space=i}}function pc(c){if(this.domElement.ownerDocument.pointerLockElement)return{x:0,y:0,button:c.button};{const i=this.domElement.getBoundingClientRect();return{x:(c.clientX-i.left)/i.width*2-1,y:-(c.clientY-i.top)/i.height*2+1,button:c.button}}}function Cc(c){if(this.enabled)switch(c.pointerType){case"mouse":case"pen":this.pointerHover(this._getPointer(c));break}}function Tc(c){this.enabled&&(document.pointerLockElement||this.domElement.setPointerCapture(c.pointerId),this.domElement.addEventListener("pointermove",this._onPointerMove),this.pointerHover(this._getPointer(c)),this.pointerDown(this._getPointer(c)))}function mc(c){this.enabled&&this.pointerMove(this._getPointer(c))}function Rc(c){this.enabled&&(this.domElement.releasePointerCapture(c.pointerId),this.domElement.removeEventListener("pointermove",this._onPointerMove),this.pointerUp(this._getPointer(c)))}function fn(c,i,t){const e=i.intersectObject(c,!0);for(let s=0;s<e.length;s++)if(e[s].object.visible||t)return e[s];return!1}const is=new y.Euler,Tt=new y.Vector3(0,1,0),Or=new y.Vector3(0,0,0),Nr=new y.Matrix4,ss=new y.Quaternion,ls=new y.Quaternion,ce=new y.Vector3,yr=new y.Matrix4,Ti=new y.Vector3(1,0,0),_e=new y.Vector3(0,1,0),mi=new y.Vector3(0,0,1),ns=new y.Vector3,di=new y.Vector3,Ei=new y.Vector3;class gc extends y.Object3D{constructor(){super(),this.isTransformControlsGizmo=!0,this.type="TransformControlsGizmo";const i=new y.MeshBasicMaterial({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),t=new y.LineBasicMaterial({depthTest:!1,depthWrite:!1,fog:!1,toneMapped:!1,transparent:!0}),e=i.clone();e.opacity=.15;const s=t.clone();s.opacity=.5;const n=i.clone();n.color.setHex(16711680);const r=i.clone();r.color.setHex(65280);const o=i.clone();o.color.setHex(255);const a=i.clone();a.color.setHex(16711680),a.opacity=.5;const l=i.clone();l.color.setHex(65280),l.opacity=.5;const h=i.clone();h.color.setHex(255),h.opacity=.5;const f=i.clone();f.opacity=.25;const I=i.clone();I.color.setHex(16776960),I.opacity=.25,i.clone().color.setHex(16776960);const d=i.clone();d.color.setHex(7895160);const E=new y.CylinderGeometry(0,.04,.1,12);E.translate(0,.05,0);const T=new y.BoxGeometry(.08,.08,.08);T.translate(0,.04,0);const p=new y.BufferGeometry;p.setAttribute("position",new y.Float32BufferAttribute([0,0,0,1,0,0],3));const m=new y.CylinderGeometry(.0075,.0075,.5,3);m.translate(0,.25,0);function F(U,q){const Y=new y.TorusGeometry(U,.0075,3,64,q*Math.PI*2);return Y.rotateY(Math.PI/2),Y.rotateX(Math.PI/2),Y}function R(){const U=new y.BufferGeometry;return U.setAttribute("position",new y.Float32BufferAttribute([0,0,0,1,1,1],3)),U}const S={X:[[new y.Mesh(E,n),[.5,0,0],[0,0,-Math.PI/2]],[new y.Mesh(E,n),[-.5,0,0],[0,0,Math.PI/2]],[new y.Mesh(m,n),[0,0,0],[0,0,-Math.PI/2]]],Y:[[new y.Mesh(E,r),[0,.5,0]],[new y.Mesh(E,r),[0,-.5,0],[Math.PI,0,0]],[new y.Mesh(m,r)]],Z:[[new y.Mesh(E,o),[0,0,.5],[Math.PI/2,0,0]],[new y.Mesh(E,o),[0,0,-.5],[-Math.PI/2,0,0]],[new y.Mesh(m,o),null,[Math.PI/2,0,0]]],XYZ:[[new y.Mesh(new y.OctahedronGeometry(.1,0),f.clone()),[0,0,0]]],XY:[[new y.Mesh(new y.BoxGeometry(.15,.15,.01),h.clone()),[.15,.15,0]]],YZ:[[new y.Mesh(new y.BoxGeometry(.15,.15,.01),a.clone()),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new y.Mesh(new y.BoxGeometry(.15,.15,.01),l.clone()),[.15,0,.15],[-Math.PI/2,0,0]]]},N={X:[[new y.Mesh(new y.CylinderGeometry(.2,0,.6,4),e),[.3,0,0],[0,0,-Math.PI/2]],[new y.Mesh(new y.CylinderGeometry(.2,0,.6,4),e),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new y.Mesh(new y.CylinderGeometry(.2,0,.6,4),e),[0,.3,0]],[new y.Mesh(new y.CylinderGeometry(.2,0,.6,4),e),[0,-.3,0],[0,0,Math.PI]]],Z:[[new y.Mesh(new y.CylinderGeometry(.2,0,.6,4),e),[0,0,.3],[Math.PI/2,0,0]],[new y.Mesh(new y.CylinderGeometry(.2,0,.6,4),e),[0,0,-.3],[-Math.PI/2,0,0]]],XYZ:[[new y.Mesh(new y.OctahedronGeometry(.2,0),e)]],XY:[[new y.Mesh(new y.BoxGeometry(.2,.2,.01),e),[.15,.15,0]]],YZ:[[new y.Mesh(new y.BoxGeometry(.2,.2,.01),e),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new y.Mesh(new y.BoxGeometry(.2,.2,.01),e),[.15,0,.15],[-Math.PI/2,0,0]]]},L={START:[[new y.Mesh(new y.OctahedronGeometry(.01,2),s),null,null,null,"helper"]],END:[[new y.Mesh(new y.OctahedronGeometry(.01,2),s),null,null,null,"helper"]],DELTA:[[new y.Line(R(),s),null,null,null,"helper"]],X:[[new y.Line(p,s.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new y.Line(p,s.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new y.Line(p,s.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},D={XYZE:[[new y.Mesh(F(.5,1),d),null,[0,Math.PI/2,0]]],X:[[new y.Mesh(F(.5,.5),n)]],Y:[[new y.Mesh(F(.5,.5),r),null,[0,0,-Math.PI/2]]],Z:[[new y.Mesh(F(.5,.5),o),null,[0,Math.PI/2,0]]],E:[[new y.Mesh(F(.75,1),I),null,[0,Math.PI/2,0]]]},P={AXIS:[[new y.Line(p,s.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},v={XYZE:[[new y.Mesh(new y.SphereGeometry(.25,10,8),e)]],X:[[new y.Mesh(new y.TorusGeometry(.5,.1,4,24),e),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new y.Mesh(new y.TorusGeometry(.5,.1,4,24),e),[0,0,0],[Math.PI/2,0,0]]],Z:[[new y.Mesh(new y.TorusGeometry(.5,.1,4,24),e),[0,0,0],[0,0,-Math.PI/2]]],E:[[new y.Mesh(new y.TorusGeometry(.75,.1,2,24),e)]]},z={X:[[new y.Mesh(T,n),[.5,0,0],[0,0,-Math.PI/2]],[new y.Mesh(m,n),[0,0,0],[0,0,-Math.PI/2]],[new y.Mesh(T,n),[-.5,0,0],[0,0,Math.PI/2]]],Y:[[new y.Mesh(T,r),[0,.5,0]],[new y.Mesh(m,r)],[new y.Mesh(T,r),[0,-.5,0],[0,0,Math.PI]]],Z:[[new y.Mesh(T,o),[0,0,.5],[Math.PI/2,0,0]],[new y.Mesh(m,o),[0,0,0],[Math.PI/2,0,0]],[new y.Mesh(T,o),[0,0,-.5],[-Math.PI/2,0,0]]],XY:[[new y.Mesh(new y.BoxGeometry(.15,.15,.01),h),[.15,.15,0]]],YZ:[[new y.Mesh(new y.BoxGeometry(.15,.15,.01),a),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new y.Mesh(new y.BoxGeometry(.15,.15,.01),l),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new y.Mesh(new y.BoxGeometry(.1,.1,.1),f.clone())]]},O={X:[[new y.Mesh(new y.CylinderGeometry(.2,0,.6,4),e),[.3,0,0],[0,0,-Math.PI/2]],[new y.Mesh(new y.CylinderGeometry(.2,0,.6,4),e),[-.3,0,0],[0,0,Math.PI/2]]],Y:[[new y.Mesh(new y.CylinderGeometry(.2,0,.6,4),e),[0,.3,0]],[new y.Mesh(new y.CylinderGeometry(.2,0,.6,4),e),[0,-.3,0],[0,0,Math.PI]]],Z:[[new y.Mesh(new y.CylinderGeometry(.2,0,.6,4),e),[0,0,.3],[Math.PI/2,0,0]],[new y.Mesh(new y.CylinderGeometry(.2,0,.6,4),e),[0,0,-.3],[-Math.PI/2,0,0]]],XY:[[new y.Mesh(new y.BoxGeometry(.2,.2,.01),e),[.15,.15,0]]],YZ:[[new y.Mesh(new y.BoxGeometry(.2,.2,.01),e),[0,.15,.15],[0,Math.PI/2,0]]],XZ:[[new y.Mesh(new y.BoxGeometry(.2,.2,.01),e),[.15,0,.15],[-Math.PI/2,0,0]]],XYZ:[[new y.Mesh(new y.BoxGeometry(.2,.2,.2),e),[0,0,0]]]},w={X:[[new y.Line(p,s.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new y.Line(p,s.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new y.Line(p,s.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]};function g(U){const q=new y.Object3D;for(const Y in U)for(let et=U[Y].length;et--;){const X=U[Y][et][0].clone(),nt=U[Y][et][1],G=U[Y][et][2],B=U[Y][et][3],rt=U[Y][et][4];X.name=Y,X.tag=rt,nt&&X.position.set(nt[0],nt[1],nt[2]),G&&X.rotation.set(G[0],G[1],G[2]),B&&X.scale.set(B[0],B[1],B[2]),X.updateMatrix();const it=X.geometry.clone();it.applyMatrix4(X.matrix),X.geometry=it,X.renderOrder=1/0,X.position.set(0,0,0),X.rotation.set(0,0,0),X.scale.set(1,1,1),q.add(X)}return q}this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=g(S)),this.add(this.gizmo.rotate=g(D)),this.add(this.gizmo.scale=g(z)),this.add(this.picker.translate=g(N)),this.add(this.picker.rotate=g(v)),this.add(this.picker.scale=g(O)),this.add(this.helper.translate=g(L)),this.add(this.helper.rotate=g(P)),this.add(this.helper.scale=g(w)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1}updateMatrixWorld(i){const e=(this.mode==="scale"?"local":this.space)==="local"?this.worldQuaternion:ls;this.gizmo.translate.visible=this.mode==="translate",this.gizmo.rotate.visible=this.mode==="rotate",this.gizmo.scale.visible=this.mode==="scale",this.helper.translate.visible=this.mode==="translate",this.helper.rotate.visible=this.mode==="rotate",this.helper.scale.visible=this.mode==="scale";let s=[];s=s.concat(this.picker[this.mode].children),s=s.concat(this.gizmo[this.mode].children),s=s.concat(this.helper[this.mode].children);for(let n=0;n<s.length;n++){const r=s[n];r.visible=!0,r.rotation.set(0,0,0),r.position.copy(this.worldPosition);let o;if(this.camera.isOrthographicCamera?o=(this.camera.top-this.camera.bottom)/this.camera.zoom:o=this.worldPosition.distanceTo(this.cameraPosition)*Math.min(1.9*Math.tan(Math.PI*this.camera.fov/360)/this.camera.zoom,7),r.scale.set(1,1,1).multiplyScalar(o*this.size/4),r.tag==="helper"){r.visible=!1,r.name==="AXIS"?(r.visible=!!this.axis,this.axis==="X"&&(St.setFromEuler(is.set(0,0,0)),r.quaternion.copy(e).multiply(St),Math.abs(Tt.copy(Ti).applyQuaternion(e).dot(this.eye))>.9&&(r.visible=!1)),this.axis==="Y"&&(St.setFromEuler(is.set(0,0,Math.PI/2)),r.quaternion.copy(e).multiply(St),Math.abs(Tt.copy(_e).applyQuaternion(e).dot(this.eye))>.9&&(r.visible=!1)),this.axis==="Z"&&(St.setFromEuler(is.set(0,Math.PI/2,0)),r.quaternion.copy(e).multiply(St),Math.abs(Tt.copy(mi).applyQuaternion(e).dot(this.eye))>.9&&(r.visible=!1)),this.axis==="XYZE"&&(St.setFromEuler(is.set(0,Math.PI/2,0)),Tt.copy(this.rotationAxis),r.quaternion.setFromRotationMatrix(Nr.lookAt(Or,Tt,_e)),r.quaternion.multiply(St),r.visible=this.dragging),this.axis==="E"&&(r.visible=!1)):r.name==="START"?(r.position.copy(this.worldPositionStart),r.visible=this.dragging):r.name==="END"?(r.position.copy(this.worldPosition),r.visible=this.dragging):r.name==="DELTA"?(r.position.copy(this.worldPositionStart),r.quaternion.copy(this.worldQuaternionStart),Dt.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),Dt.applyQuaternion(this.worldQuaternionStart.clone().invert()),r.scale.copy(Dt),r.visible=this.dragging):(r.quaternion.copy(e),this.dragging?r.position.copy(this.worldPositionStart):r.position.copy(this.worldPosition),this.axis&&(r.visible=this.axis.search(r.name)!==-1));continue}r.quaternion.copy(e),this.mode==="translate"||this.mode==="scale"?(r.name==="X"&&Math.abs(Tt.copy(Ti).applyQuaternion(e).dot(this.eye))>.99&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name==="Y"&&Math.abs(Tt.copy(_e).applyQuaternion(e).dot(this.eye))>.99&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name==="Z"&&Math.abs(Tt.copy(mi).applyQuaternion(e).dot(this.eye))>.99&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name==="XY"&&Math.abs(Tt.copy(mi).applyQuaternion(e).dot(this.eye))<.2&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name==="YZ"&&Math.abs(Tt.copy(Ti).applyQuaternion(e).dot(this.eye))<.2&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1),r.name==="XZ"&&Math.abs(Tt.copy(_e).applyQuaternion(e).dot(this.eye))<.2&&(r.scale.set(1e-10,1e-10,1e-10),r.visible=!1)):this.mode==="rotate"&&(ss.copy(e),Tt.copy(this.eye).applyQuaternion(St.copy(e).invert()),r.name.search("E")!==-1&&r.quaternion.setFromRotationMatrix(Nr.lookAt(this.eye,Or,_e)),r.name==="X"&&(St.setFromAxisAngle(Ti,Math.atan2(-Tt.y,Tt.z)),St.multiplyQuaternions(ss,St),r.quaternion.copy(St)),r.name==="Y"&&(St.setFromAxisAngle(_e,Math.atan2(Tt.x,Tt.z)),St.multiplyQuaternions(ss,St),r.quaternion.copy(St)),r.name==="Z"&&(St.setFromAxisAngle(mi,Math.atan2(Tt.y,Tt.x)),St.multiplyQuaternions(ss,St),r.quaternion.copy(St))),r.visible=r.visible&&(r.name.indexOf("X")===-1||this.showX),r.visible=r.visible&&(r.name.indexOf("Y")===-1||this.showY),r.visible=r.visible&&(r.name.indexOf("Z")===-1||this.showZ),r.visible=r.visible&&(r.name.indexOf("E")===-1||this.showX&&this.showY&&this.showZ),r.material._color=r.material._color||r.material.color.clone(),r.material._opacity=r.material._opacity||r.material.opacity,r.material.color.copy(r.material._color),r.material.opacity=r.material._opacity,this.enabled&&this.axis&&(r.name===this.axis||this.axis.split("").some(function(a){return r.name===a}))&&(r.material.color.setHex(16776960),r.material.opacity=1)}super.updateMatrixWorld(i)}}class Ac extends y.Mesh{constructor(){super(new y.PlaneGeometry(1e5,1e5,2,2),new y.MeshBasicMaterial({visible:!1,wireframe:!0,side:y.DoubleSide,transparent:!0,opacity:.1,toneMapped:!1})),this.isTransformControlsPlane=!0,this.type="TransformControlsPlane"}updateMatrixWorld(i){let t=this.space;switch(this.position.copy(this.worldPosition),this.mode==="scale"&&(t="local"),ns.copy(Ti).applyQuaternion(t==="local"?this.worldQuaternion:ls),di.copy(_e).applyQuaternion(t==="local"?this.worldQuaternion:ls),Ei.copy(mi).applyQuaternion(t==="local"?this.worldQuaternion:ls),Tt.copy(di),this.mode){case"translate":case"scale":switch(this.axis){case"X":Tt.copy(this.eye).cross(ns),ce.copy(ns).cross(Tt);break;case"Y":Tt.copy(this.eye).cross(di),ce.copy(di).cross(Tt);break;case"Z":Tt.copy(this.eye).cross(Ei),ce.copy(Ei).cross(Tt);break;case"XY":ce.copy(Ei);break;case"YZ":ce.copy(ns);break;case"XZ":Tt.copy(Ei),ce.copy(di);break;case"XYZ":case"E":ce.set(0,0,0);break}break;case"rotate":default:ce.set(0,0,0)}ce.length()===0?this.quaternion.copy(this.cameraQuaternion):(yr.lookAt(Dt.set(0,0,0),ce,Tt),this.quaternion.setFromRotationMatrix(yr)),super.updateMatrixWorld(i)}}class Gs{constructor(i,t,e,s,n,r=5,o=!0){C(this,"onDraggingStarted",new j);C(this,"onDraggingEnded",new j);C(this,"onDisposed",new j);C(this,"normal");C(this,"origin");C(this,"three",new b.Plane);C(this,"components");C(this,"world");C(this,"type","default");C(this,"_helper");C(this,"_visible",!0);C(this,"_enabled",!0);C(this,"_controlsActive",!1);C(this,"_arrowBoundBox",new b.Mesh);C(this,"_planeMesh");C(this,"_controls");C(this,"_hiddenMaterial",new b.MeshBasicMaterial({visible:!1}));C(this,"update",()=>{this._enabled&&this.three.setFromNormalAndCoplanarPoint(this.normal,this._helper.position)});C(this,"changeDrag",i=>{this._visible=!i.value,this.preventCameraMovement(),this.notifyDraggingChanged(i)});if(this.components=i,this.world=t,!t.renderer)throw new Error("The given world must have a renderer!");this.normal=s,this.origin=e,t.renderer.setPlane(!0,this.three),this._planeMesh=Gs.newPlaneMesh(r,n),this._helper=this.newHelper(),this._controls=this.newTransformControls(),this.three.setFromNormalAndCoplanarPoint(s,e),o&&this.toggleControls(!0)}get enabled(){return this._enabled}set enabled(i){if(!this.world.renderer)throw new Error("No renderer found for clipping plane!");this._enabled=i,this.world.renderer.setPlane(i,this.three)}get visible(){return this._visible}set visible(i){this._visible=i,this._controls.visible=i,this._helper.visible=i,this.toggleControls(i)}get meshes(){return[this._planeMesh,this._arrowBoundBox]}get planeMaterial(){return this._planeMesh.material}set planeMaterial(i){this._planeMesh.material=i}get size(){return this._planeMesh.scale.x}set size(i){this._planeMesh.scale.set(i,i,i)}get helper(){return this._helper}setFromNormalAndCoplanarPoint(i,t){this.reset(),this.normal.equals(i)||(this.normal.copy(i),this._helper.lookAt(i)),this.origin.copy(t),this._helper.position.copy(t),this._helper.updateMatrix(),this.update()}dispose(){this._enabled=!1,this.onDraggingStarted.reset(),this.onDraggingEnded.reset(),this._helper.removeFromParent(),this.world.renderer&&this.world.renderer.setPlane(!1,this.three),this._arrowBoundBox.removeFromParent(),this._arrowBoundBox.geometry.dispose(),this._planeMesh.geometry.dispose(),this._controls.removeFromParent(),this._controls.dispose(),this.onDisposed.trigger(),this.onDisposed.reset()}reset(){const i=new b.Vector3(1,0,0),t=new b.Vector3;this.normal.equals(i)||(this.normal.copy(i),this._helper.lookAt(i)),this.origin.copy(t),this._helper.position.copy(t),this._helper.updateMatrix()}toggleControls(i){if(i){if(this._controlsActive)return;this._controls.addEventListener("change",this.update),this._controls.addEventListener("dragging-changed",this.changeDrag)}else this._controls.removeEventListener("change",this.update),this._controls.removeEventListener("dragging-changed",this.changeDrag);this._controlsActive=i}newTransformControls(){if(!this.world.renderer)throw new Error("No renderer found for clipping plane!");const i=this.world.camera.three,t=this.world.renderer.three.domElement,e=new Ec(i,t);return this.initializeControls(e),this.world.scene.three.add(e),e}initializeControls(i){i.attach(this._helper),i.showX=!1,i.showY=!1,i.setSpace("local"),this.createArrowBoundingBox(),i.children[0].children[0].add(this._arrowBoundBox)}createArrowBoundingBox(){this._arrowBoundBox.geometry=new b.CylinderGeometry(.18,.18,1.2),this._arrowBoundBox.material=this._hiddenMaterial,this._arrowBoundBox.rotateX(Math.PI/2),this._arrowBoundBox.updateMatrix(),this._arrowBoundBox.geometry.applyMatrix4(this._arrowBoundBox.matrix)}notifyDraggingChanged(i){i.value?this.onDraggingStarted.trigger():this.onDraggingEnded.trigger()}preventCameraMovement(){this.world.camera.enabled=this._visible}newHelper(){const i=new b.Object3D;return i.lookAt(this.normal),i.position.copy(this.origin),this._planeMesh.position.z+=.01,i.add(this._planeMesh),this.world.scene.three.add(i),i}static newPlaneMesh(i,t){const e=new b.PlaneGeometry(1),s=new b.Mesh(e,t);return s.scale.set(i,i,i),s}}class Fc extends Oe{constructor(){super(...arguments);C(this,"_config",{enabled:{value:!0,type:"Boolean"},visible:{value:!0,type:"Boolean"},color:{value:new b.Color,type:"Color"},opacity:{type:"Number",interpolable:!0,value:1,min:0,max:1},size:{type:"Number",interpolable:!0,value:2,min:0,max:100}})}get enabled(){return this._config.enabled.value}set enabled(t){this._config.enabled.value=t,this._component.enabled=t}get visible(){return this._config.visible.value}set visible(t){this._config.visible.value=t,this._component.visible=t}get color(){return this._config.color.value}set color(t){this._config.color.value=t,this._component.material.color.copy(t)}get opacity(){return this._config.opacity.value}set opacity(t){this._config.opacity.value=t,this._component.material.opacity=t}get size(){return this._config.size.value}set size(t){this._config.size.value=t,this._component.size=t}}const Si=class Si extends mt{constructor(t){super(t);C(this,"onSetup",new j);C(this,"onBeforeDrag",new j);C(this,"onAfterDrag",new j);C(this,"onBeforeCreate",new j);C(this,"onBeforeCancel",new j);C(this,"onAfterCancel",new j);C(this,"onBeforeDelete",new j);C(this,"onAfterCreate",new j);C(this,"onAfterDelete",new j);C(this,"onDisposed",new j);C(this,"isSetup",!1);C(this,"orthogonalY",!1);C(this,"toleranceOrthogonalY",.7);C(this,"Type",Gs);C(this,"list",[]);C(this,"config",new Fc(this,this.components,"Clipper"));C(this,"_defaultConfig",{color:new b.Color(12255487),opacity:.2,size:2});C(this,"_material",new b.MeshBasicMaterial({color:12255487,side:b.DoubleSide,transparent:!0,opacity:.2}));C(this,"_size",5);C(this,"_enabled",!1);C(this,"_visible",!0);C(this,"_onStartDragging",()=>{this.onBeforeDrag.trigger()});C(this,"_onEndDragging",()=>{this.onAfterDrag.trigger()});this.components.add(Si.uuid,this),t.get(Gt).list.add(this.config)}get enabled(){return this._enabled}set enabled(t){this._enabled=t;for(const e of this.list)e.enabled=t;this.updateMaterialsAndPlanes()}get visible(){return this._visible}set visible(t){this._visible=t;for(const e of this.list)e.visible=t}get material(){return this._material}set material(t){this._material=t;for(const e of this.list)e.planeMaterial=t}get size(){return this._size}set size(t){this._size=t;for(const e of this.list)e.size=t}dispose(){this._enabled=!1,this.components.get(Gt).list.delete(this.config);for(const e of this.list)e.dispose();this.list.length=0,this._material.dispose(),this.onBeforeCreate.reset(),this.onBeforeCancel.reset(),this.onBeforeDelete.reset(),this.onBeforeDrag.reset(),this.onAfterCreate.reset(),this.onAfterCancel.reset(),this.onAfterDelete.reset(),this.onAfterDrag.reset(),this.onDisposed.trigger(Si.uuid),this.onDisposed.reset()}create(t){const n=this.components.get(be).get(t).castRay();return n?this.createPlaneFromIntersection(t,n):null}createFromNormalAndCoplanarPoint(t,e,s){const n=this.newPlane(t,s,e);return this.updateMaterialsAndPlanes(),n}delete(t,e){e||(e=this.pickPlane(t)),e&&this.deletePlane(e)}deleteAll(t){const e=[...this.list];for(const s of e)if(!t||t.has(s.type)){this.delete(s.world,s);const n=this.list.indexOf(s);n!==-1&&this.list.splice(n,1)}}setup(t){const e={...this._defaultConfig,...t};this.config.color=e.color,this.config.opacity=e.opacity,this.config.size=e.size,this.isSetup=!0,this.onSetup.trigger()}deletePlane(t){const e=this.list.indexOf(t);if(e!==-1){if(this.list.splice(e,1),!t.world.renderer)throw new Error("Renderer not found for this plane's world!");t.world.renderer.setPlane(!1,t.three),t.dispose(),this.updateMaterialsAndPlanes(),this.onAfterDelete.trigger(t)}}pickPlane(t){const s=this.components.get(be).get(t),n=this.getAllPlaneMeshes(),r=s.castRay(n);if(r){const o=r.object;return this.list.find(a=>a.meshes.includes(o))}}getAllPlaneMeshes(){const t=[];for(const e of this.list)t.push(...e.meshes);return t}createPlaneFromIntersection(t,e){var a;if(!t.renderer)throw new Error("The given world must have a renderer!");const s=e.point.distanceTo(new b.Vector3(0,0,0)),n=(a=e.face)==null?void 0:a.normal;if(!s||!n)return null;const r=this.getWorldNormal(e,n),o=this.newPlane(t,e.point,r.negate());return o.visible=this._visible,o.size=this._size,t.renderer.setPlane(!0,o.three),this.updateMaterialsAndPlanes(),o}getWorldNormal(t,e){const s=t.object;let n=t.object.matrixWorld.clone();if(s instanceof b.InstancedMesh&&t.instanceId!==void 0){const l=new b.Matrix4;s.getMatrixAt(t.instanceId,l),n=l.multiply(n)}const o=new b.Matrix3().getNormalMatrix(n),a=e.clone().applyMatrix3(o).normalize();return this.normalizePlaneDirectionY(a),a}normalizePlaneDirectionY(t){this.orthogonalY&&(t.y>this.toleranceOrthogonalY&&(t.x=0,t.y=1,t.z=0),t.y<-this.toleranceOrthogonalY&&(t.x=0,t.y=-1,t.z=0))}newPlane(t,e,s){const n=new this.Type(this.components,t,e,s,this._material);return n.onDraggingStarted.add(this._onStartDragging),n.onDraggingEnded.add(this._onEndDragging),this.list.push(n),this.onAfterCreate.trigger(n),n}updateMaterialsAndPlanes(){const t=this.components.get(Li);for(const[e,s]of t.list){if(!s.renderer)continue;s.renderer.updateClippingPlanes();const{clippingPlanes:n}=s.renderer;for(const r of s.meshes)if(r.material)if(Array.isArray(r.material))for(const o of r.material)o.clippingPlanes=n;else r.material.clippingPlanes=n}}};C(Si,"uuid","66290bc5-18c4-4cd1-9379-2e17a0617611");let fs=Si;class eo{constructor(i){C(this,"enabled",!1);C(this,"id","FirstPerson");this.camera=i}set(i){if(this.enabled=i,i){if(this.camera.projection.current!=="Perspective"){this.camera.set("Orbit");return}this.setupFirstPersonCamera()}}setupFirstPersonCamera(){const i=this.camera.controls,t=new b.Vector3;i.distance--,i.getPosition(t),i.minDistance=1,i.maxDistance=1,i.distance=1,i.moveTo(t.x,t.y,t.z),i.truckSpeed=50,i.mouseButtons.wheel=bt.ACTION.DOLLY,i.touches.two=bt.ACTION.TOUCH_ZOOM_TRUCK}}class io{constructor(i){C(this,"enabled",!0);C(this,"id","Orbit");this.camera=i,this.activateOrbitControls()}set(i){this.enabled=i,i&&this.activateOrbitControls()}activateOrbitControls(){const i=this.camera.controls;i.minDistance=1,i.maxDistance=300;const t=new b.Vector3;i.getPosition(t);const e=t.length();i.distance=e,i.truckSpeed=2;const{rotation:s}=this.camera.three,n=new b.Vector3(0,0,-1).applyEuler(s),r=t.addScaledVector(n,e);i.moveTo(r.x,r.y,r.z)}}class so{constructor(i){C(this,"enabled",!1);C(this,"id","Plan");C(this,"mouseAction1");C(this,"mouseAction2");C(this,"mouseInitialized",!1);C(this,"defaultAzimuthSpeed");C(this,"defaultPolarSpeed");this.camera=i,this.defaultAzimuthSpeed=i.controls.azimuthRotateSpeed,this.defaultPolarSpeed=i.controls.polarRotateSpeed}set(i){this.enabled=i;const t=this.camera.controls;t.azimuthRotateSpeed=i?0:this.defaultAzimuthSpeed,t.polarRotateSpeed=i?0:this.defaultPolarSpeed,this.mouseInitialized||(this.mouseAction1=t.touches.one,this.mouseAction2=t.touches.two,this.mouseInitialized=!0),i?(t.mouseButtons.left=bt.ACTION.TRUCK,t.touches.one=bt.ACTION.TOUCH_TRUCK,t.touches.two=bt.ACTION.TOUCH_ZOOM):(t.mouseButtons.left=bt.ACTION.ROTATE,t.touches.one=this.mouseAction1,t.touches.two=this.mouseAction2)}}class no{constructor(i){C(this,"onChanged",new j);C(this,"current","Perspective");C(this,"camera");C(this,"matchOrthoDistanceEnabled",!1);C(this,"_component");C(this,"_previousDistance",-1);this._component=i,this.camera=i.three}async set(i){this.current!==i&&(i==="Orthographic"?this.setOrthoCamera():await this.setPerspectiveCamera(),this.onChanged.trigger(this.camera))}async toggle(){const t=this.current==="Perspective"?"Orthographic":"Perspective";await this.set(t)}setOrthoCamera(){if(this._component.mode===null||this._component.mode.id==="FirstPerson")return;this._previousDistance=this._component.controls.distance,this._component.controls.distance=200;const i=this.getPerspectiveDims();if(!i)return;const{width:t,height:e}=i;this.setupOrthoCamera(e,t),this.camera=this._component.threeOrtho,this.current="Orthographic"}getPerspectiveDims(){const i=this._component.currentWorld;if(!i||!i.renderer)return null;const t=new b.Vector3;this._component.threePersp.getWorldDirection(t);const e=new b.Vector3;this._component.controls.getTarget(e);const n=e.clone().sub(this._component.threePersp.position).dot(t),r=i.renderer.getSize(),o=r.x/r.y,a=this._component.threePersp,l=n*2*Math.atan(a.fov*(Math.PI/180)/2);return{width:l*o,height:l}}setupOrthoCamera(i,t){this._component.controls.mouseButtons.wheel=bt.ACTION.ZOOM,this._component.controls.mouseButtons.middle=bt.ACTION.ZOOM;const e=this._component.threePersp,s=this._component.threeOrtho;s.zoom=1,s.left=t/-2,s.right=t/2,s.top=i/2,s.bottom=i/-2,s.updateProjectionMatrix(),s.position.copy(e.position),s.quaternion.copy(e.quaternion),this._component.controls.camera=s}getDistance(){const i=this._component.threePersp,t=this._component.threeOrtho;return(t.top-t.bottom)/t.zoom/(2*Math.atan(i.fov*(Math.PI/180)/2))}async setPerspectiveCamera(){this._component.controls.mouseButtons.wheel=bt.ACTION.DOLLY,this._component.controls.mouseButtons.middle=bt.ACTION.DOLLY;const i=this._component.threePersp,t=this._component.threeOrtho;i.position.copy(t.position),i.quaternion.copy(t.quaternion),this._component.controls.mouseButtons.wheel=bt.ACTION.DOLLY,this.matchOrthoDistanceEnabled?this._component.controls.distance=this.getDistance():this._component.controls.distance=this._previousDistance,await this._component.controls.zoomTo(1),i.updateProjectionMatrix(),this._component.controls.camera=i,this.camera=i,this.current="Perspective"}}class ro extends Qe{constructor(t){super(t);C(this,"projection");C(this,"threeOrtho");C(this,"threePersp");C(this,"_userInputButtons",{});C(this,"_frustumSize",50);C(this,"_navigationModes",new Map);C(this,"_mode",null);C(this,"previousSize",null);this.threePersp=this.three,this.threeOrtho=this.newOrthoCamera(),this.projection=new no(this),this.onAspectUpdated.add(()=>{this.setOrthoPerspCameraAspect()}),this.projection.onChanged.add(e=>{this.three=e,this.updateAspect()}),this.onWorldChanged.add(({action:e})=>{e==="added"&&(this._navigationModes.clear(),this._navigationModes.set("Orbit",new io(this)),this._navigationModes.set("FirstPerson",new eo(this)),this._navigationModes.set("Plan",new so(this)),this._mode=this._navigationModes.get("Orbit"),this.mode.set(!0,{preventTargetAdjustment:!0}),this.currentWorld&&this.currentWorld.renderer&&(this.previousSize=this.currentWorld.renderer.getSize().clone()))})}get mode(){if(!this._mode)throw new Error("Mode not found, camera not initialized");return this._mode}dispose(){super.dispose(),this.threeOrtho.removeFromParent()}set(t){if(this.mode!==null&&this.mode.id!==t){if(this.mode.set(!1),!this._navigationModes.has(t))throw new Error("The specified mode does not exist!");this._mode=this._navigationModes.get(t),this.mode.set(!0)}}async fit(t,e=1.5){if(!this.enabled)return;const s=Number.MAX_VALUE,n=Number.MIN_VALUE,r=new b.Vector3(s,s,s),o=new b.Vector3(n,n,n);for(const u of t){const d=new b.Box3().setFromObject(u);d.min.x<r.x&&(r.x=d.min.x),d.min.y<r.y&&(r.y=d.min.y),d.min.z<r.z&&(r.z=d.min.z),d.max.x>o.x&&(o.x=d.max.x),d.max.y>o.y&&(o.y=d.max.y),d.max.z>o.z&&(o.z=d.max.z)}const a=new b.Box3(r,o),l=new b.Vector3;a.getSize(l);const h=new b.Vector3;a.getCenter(h);const f=Math.max(l.x,l.y,l.z)*e,I=new b.Sphere(h,f);await this.controls.fitToSphere(I,!0)}setUserInput(t){t?this.enableUserInput():this.disableUserInput()}disableUserInput(){this._userInputButtons.left=this.controls.mouseButtons.left,this._userInputButtons.right=this.controls.mouseButtons.right,this._userInputButtons.middle=this.controls.mouseButtons.middle,this._userInputButtons.wheel=this.controls.mouseButtons.wheel,this.controls.mouseButtons.left=0,this.controls.mouseButtons.right=0,this.controls.mouseButtons.middle=0,this.controls.mouseButtons.wheel=0}enableUserInput(){Object.keys(this._userInputButtons).length!==0&&(this.controls.mouseButtons.left=this._userInputButtons.left,this.controls.mouseButtons.right=this._userInputButtons.right,this.controls.mouseButtons.middle=this._userInputButtons.middle,this.controls.mouseButtons.wheel=this._userInputButtons.wheel)}newOrthoCamera(){const t=window.innerWidth/window.innerHeight;return new b.OrthographicCamera(this._frustumSize*t/-2,this._frustumSize*t/2,this._frustumSize/2,this._frustumSize/-2,.1,1e3)}setOrthoPerspCameraAspect(){if(!this.currentWorld||!this.currentWorld.renderer||!this.previousSize)return;const t=this.currentWorld.renderer.getSize(),e=this.threeOrtho.top,s=this.threeOrtho.right,n=t.y/this.previousSize.y,r=t.x/this.previousSize.x,o=e*n,a=s*r;this.threeOrtho.left=-a,this.threeOrtho.right=a,this.threeOrtho.top=o,this.threeOrtho.bottom=-o,this.threeOrtho.updateProjectionMatrix(),this.previousSize.copy(t)}}const Sn=new Map([[k.IFCRELAGGREGATES,{forRelated:"Decomposes",forRelating:"IsDecomposedBy"}],[k.IFCRELASSOCIATESMATERIAL,{forRelated:"HasAssociations",forRelating:"AssociatedTo"}],[k.IFCRELASSOCIATESCLASSIFICATION,{forRelated:"HasAssociations",forRelating:"ClassificationForObjects"}],[k.IFCRELASSIGNSTOGROUP,{forRelated:"HasAssignments",forRelating:"IsGroupedBy"}],[k.IFCRELDEFINESBYPROPERTIES,{forRelated:"IsDefinedBy",forRelating:"DefinesOcurrence"}],[k.IFCRELDEFINESBYTYPE,{forRelated:"IsTypedBy",forRelating:"Types"}],[k.IFCRELDEFINESBYTEMPLATE,{forRelated:"IsDefinedBy",forRelating:"Defines"}],[k.IFCRELCONTAINEDINSPATIALSTRUCTURE,{forRelated:"ContainedInStructure",forRelating:"ContainsElements"}],[k.IFCRELFLOWCONTROLELEMENTS,{forRelated:"AssignedToFlowElement",forRelating:"HasControlElements"}],[k.IFCRELCONNECTSELEMENTS,{forRelated:"ConnectedFrom",forRelating:"ConnectedTo"}],[k.IFCRELASSIGNSTOPRODUCT,{forRelated:"HasAssignments",forRelating:"ReferencedBy"}],[k.IFCRELDECLARES,{forRelated:"HasContext",forRelating:"Declares"}],[k.IFCRELASSIGNSTOCONTROL,{forRelated:"HasAssignments",forRelating:"Controls"}],[k.IFCRELNESTS,{forRelated:"Nests",forRelating:"IsNestedBy"}],[k.IFCRELASSOCIATESDOCUMENT,{forRelated:"HasAssociations",forRelating:"DocumentRefForObjects"}]]),oo={103090709:"IFCPROJECT",4097777520:"IFCSITE",4031249490:"IFCBUILDING",3124254112:"IFCBUILDINGSTOREY",3856911033:"IFCSPACE",1674181508:"IFCANNOTATION",25142252:"IFCCONTROLLER",32344328:"IFCBOILER",76236018:"IFCLAMP",90941305:"IFCPUMP",177149247:"IFCAIRTERMINALBOX",182646315:"IFCFLOWINSTRUMENT",263784265:"IFCFURNISHINGELEMENT",264262732:"IFCELECTRICGENERATOR",277319702:"IFCAUDIOVISUALAPPLIANCE",310824031:"IFCPIPEFITTING",331165859:"IFCSTAIR",342316401:"IFCDUCTFITTING",377706215:"IFCMECHANICALFASTENER",395920057:"IFCDOOR",402227799:"IFCELECTRICMOTOR",413509423:"IFCSYSTEMFURNITUREELEMENT",484807127:"IFCEVAPORATOR",486154966:"IFCWINDOWSTANDARDCASE",629592764:"IFCLIGHTFIXTURE",630975310:"IFCUNITARYCONTROLELEMENT",635142910:"IFCCABLECARRIERFITTING",639361253:"IFCCOIL",647756555:"IFCFASTENER",707683696:"IFCFLOWSTORAGEDEVICE",738039164:"IFCPROTECTIVEDEVICE",753842376:"IFCBEAM",812556717:"IFCTANK",819412036:"IFCFILTER",843113511:"IFCCOLUMN",862014818:"IFCELECTRICDISTRIBUTIONBOARD",900683007:"IFCFOOTING",905975707:"IFCCOLUMNSTANDARDCASE",926996030:"IFCVOIDINGFEATURE",979691226:"IFCREINFORCINGBAR",987401354:"IFCFLOWSEGMENT",1003880860:"IFCELECTRICTIMECONTROL",1051757585:"IFCCABLEFITTING",1052013943:"IFCDISTRIBUTIONCHAMBERELEMENT",1062813311:"IFCDISTRIBUTIONCONTROLELEMENT",1073191201:"IFCMEMBER",1095909175:"IFCBUILDINGELEMENTPROXY",1156407060:"IFCPLATESTANDARDCASE",1162798199:"IFCSWITCHINGDEVICE",1329646415:"IFCSHADINGDEVICE",1335981549:"IFCDISCRETEACCESSORY",1360408905:"IFCDUCTSILENCER",1404847402:"IFCSTACKTERMINAL",1426591983:"IFCFIRESUPPRESSIONTERMINAL",1437502449:"IFCMEDICALDEVICE",1509553395:"IFCFURNITURE",1529196076:"IFCSLAB",1620046519:"IFCTRANSPORTELEMENT",1634111441:"IFCAIRTERMINAL",1658829314:"IFCENERGYCONVERSIONDEVICE",1677625105:"IFCCIVILELEMENT",1687234759:"IFCPILE",1904799276:"IFCELECTRICAPPLIANCE",1911478936:"IFCMEMBERSTANDARDCASE",1945004755:"IFCDISTRIBUTIONELEMENT",1973544240:"IFCCOVERING",1999602285:"IFCSPACEHEATER",2016517767:"IFCROOF",2056796094:"IFCAIRTOAIRHEATRECOVERY",2058353004:"IFCFLOWCONTROLLER",2068733104:"IFCHUMIDIFIER",2176052936:"IFCJUNCTIONBOX",2188021234:"IFCFLOWMETER",2223149337:"IFCFLOWTERMINAL",2262370178:"IFCRAILING",2272882330:"IFCCONDENSER",2295281155:"IFCPROTECTIVEDEVICETRIPPINGUNIT",2320036040:"IFCREINFORCINGMESH",2347447852:"IFCTENDONANCHOR",2391383451:"IFCVIBRATIONISOLATOR",2391406946:"IFCWALL",2474470126:"IFCMOTORCONNECTION",2769231204:"IFCVIRTUALELEMENT",2814081492:"IFCENGINE",2906023776:"IFCBEAMSTANDARDCASE",2938176219:"IFCBURNER",2979338954:"IFCBUILDINGELEMENTPART",3024970846:"IFCRAMP",3026737570:"IFCTUBEBUNDLE",3027962421:"IFCSLABSTANDARDCASE",3040386961:"IFCDISTRIBUTIONFLOWELEMENT",3053780830:"IFCSANITARYTERMINAL",3079942009:"IFCOPENINGSTANDARDCASE",3087945054:"IFCALARM",3101698114:"IFCSURFACEFEATURE",3127900445:"IFCSLABELEMENTEDCASE",3132237377:"IFCFLOWMOVINGDEVICE",3171933400:"IFCPLATE",3221913625:"IFCCOMMUNICATIONSAPPLIANCE",3242481149:"IFCDOORSTANDARDCASE",3283111854:"IFCRAMPFLIGHT",3296154744:"IFCCHIMNEY",3304561284:"IFCWINDOW",3310460725:"IFCELECTRICFLOWSTORAGEDEVICE",3319311131:"IFCHEATEXCHANGER",3415622556:"IFCFAN",3420628829:"IFCSOLARDEVICE",3493046030:"IFCGEOGRAPHICELEMENT",3495092785:"IFCCURTAINWALL",3508470533:"IFCFLOWTREATMENTDEVICE",3512223829:"IFCWALLSTANDARDCASE",3518393246:"IFCDUCTSEGMENT",3571504051:"IFCCOMPRESSOR",3588315303:"IFCOPENINGELEMENT",3612865200:"IFCPIPESEGMENT",3640358203:"IFCCOOLINGTOWER",3651124850:"IFCPROJECTIONELEMENT",3694346114:"IFCOUTLET",3747195512:"IFCEVAPORATIVECOOLER",3758799889:"IFCCABLECARRIERSEGMENT",3824725483:"IFCTENDON",3825984169:"IFCTRANSFORMER",3902619387:"IFCCHILLER",4074379575:"IFCDAMPER",4086658281:"IFCSENSOR",4123344466:"IFCELEMENTASSEMBLY",4136498852:"IFCCOOLEDBEAM",4156078855:"IFCWALLELEMENTEDCASE",4175244083:"IFCINTERCEPTOR",4207607924:"IFCVALVE",4217484030:"IFCCABLESEGMENT",4237592921:"IFCWASTETERMINAL",4252922144:"IFCSTAIRFLIGHT",4278956645:"IFCFLOWFITTING",4288193352:"IFCACTUATOR",4292641817:"IFCUNITARYEQUIPMENT",3009204131:"IFCGRID"};class Sc{getAll(i,t){const e={},s=Object.keys(oo).map(n=>parseInt(n,10));for(let n=0;n<s.length;n++){const r=s[n],o=i.GetLineIDsWithType(t,r),a=o.size();for(let l=0;l<a;l++)e[o.get(l)]=r}return e}}const Pi={950732822:"IFCURIREFERENCE",4075327185:"IFCTIME",1209108979:"IFCTEMPERATURERATEOFCHANGEMEASURE",3457685358:"IFCSOUNDPRESSURELEVELMEASURE",4157543285:"IFCSOUNDPOWERLEVELMEASURE",2798247006:"IFCPROPERTYSETDEFINITIONSET",1790229001:"IFCPOSITIVEINTEGER",525895558:"IFCNONNEGATIVELENGTHMEASURE",1774176899:"IFCLINEINDEX",1275358634:"IFCLANGUAGEID",2541165894:"IFCDURATION",3701338814:"IFCDAYINWEEKNUMBER",2195413836:"IFCDATETIME",937566702:"IFCDATE",1683019596:"IFCCARDINALPOINTREFERENCE",2314439260:"IFCBINARY",1500781891:"IFCAREADENSITYMEASURE",3683503648:"IFCARCINDEX",4065007721:"IFCYEARNUMBER",1718600412:"IFCWARPINGMOMENTMEASURE",51269191:"IFCWARPINGCONSTANTMEASURE",2593997549:"IFCVOLUMETRICFLOWRATEMEASURE",3458127941:"IFCVOLUMEMEASURE",3345633955:"IFCVAPORPERMEABILITYMEASURE",1278329552:"IFCTORQUEMEASURE",2591213694:"IFCTIMESTAMP",2726807636:"IFCTIMEMEASURE",743184107:"IFCTHERMODYNAMICTEMPERATUREMEASURE",2016195849:"IFCTHERMALTRANSMITTANCEMEASURE",857959152:"IFCTHERMALRESISTANCEMEASURE",2281867870:"IFCTHERMALEXPANSIONCOEFFICIENTMEASURE",2645777649:"IFCTHERMALCONDUCTIVITYMEASURE",232962298:"IFCTHERMALADMITTANCEMEASURE",296282323:"IFCTEXTTRANSFORMATION",603696268:"IFCTEXTFONTNAME",3490877962:"IFCTEXTDECORATION",1460886941:"IFCTEXTALIGNMENT",2801250643:"IFCTEXT",58845555:"IFCTEMPERATUREGRADIENTMEASURE",361837227:"IFCSPECULARROUGHNESS",2757832317:"IFCSPECULAREXPONENT",3477203348:"IFCSPECIFICHEATCAPACITYMEASURE",993287707:"IFCSOUNDPRESSUREMEASURE",846465480:"IFCSOUNDPOWERMEASURE",3471399674:"IFCSOLIDANGLEMEASURE",408310005:"IFCSHEARMODULUSMEASURE",2190458107:"IFCSECTIONALAREAINTEGRALMEASURE",3467162246:"IFCSECTIONMODULUSMEASURE",2766185779:"IFCSECONDINMINUTE",3211557302:"IFCROTATIONALSTIFFNESSMEASURE",1755127002:"IFCROTATIONALMASSMEASURE",2133746277:"IFCROTATIONALFREQUENCYMEASURE",200335297:"IFCREAL",96294661:"IFCRATIOMEASURE",3972513137:"IFCRADIOACTIVITYMEASURE",3665567075:"IFCPRESSUREMEASURE",2169031380:"IFCPRESENTABLETEXT",1364037233:"IFCPOWERMEASURE",1245737093:"IFCPOSITIVERATIOMEASURE",3054510233:"IFCPOSITIVEPLANEANGLEMEASURE",2815919920:"IFCPOSITIVELENGTHMEASURE",4042175685:"IFCPLANEANGLEMEASURE",2642773653:"IFCPLANARFORCEMEASURE",2260317790:"IFCPARAMETERVALUE",929793134:"IFCPHMEASURE",2395907400:"IFCNUMERICMEASURE",2095195183:"IFCNORMALISEDRATIOMEASURE",765770214:"IFCMONTHINYEARNUMBER",2615040989:"IFCMONETARYMEASURE",3114022597:"IFCMOMENTOFINERTIAMEASURE",1648970520:"IFCMOLECULARWEIGHTMEASURE",3177669450:"IFCMOISTUREDIFFUSIVITYMEASURE",1753493141:"IFCMODULUSOFSUBGRADEREACTIONMEASURE",1052454078:"IFCMODULUSOFROTATIONALSUBGRADEREACTIONMEASURE",2173214787:"IFCMODULUSOFLINEARSUBGRADEREACTIONMEASURE",3341486342:"IFCMODULUSOFELASTICITYMEASURE",102610177:"IFCMINUTEINHOUR",3531705166:"IFCMASSPERLENGTHMEASURE",3124614049:"IFCMASSMEASURE",4017473158:"IFCMASSFLOWRATEMEASURE",1477762836:"IFCMASSDENSITYMEASURE",2486716878:"IFCMAGNETICFLUXMEASURE",286949696:"IFCMAGNETICFLUXDENSITYMEASURE",151039812:"IFCLUMINOUSINTENSITYMEASURE",2755797622:"IFCLUMINOUSINTENSITYDISTRIBUTIONMEASURE",2095003142:"IFCLUMINOUSFLUXMEASURE",503418787:"IFCLOGICAL",3086160713:"IFCLINEARVELOCITYMEASURE",1307019551:"IFCLINEARSTIFFNESSMEASURE",2128979029:"IFCLINEARMOMENTMEASURE",191860431:"IFCLINEARFORCEMEASURE",1243674935:"IFCLENGTHMEASURE",3258342251:"IFCLABEL",2054016361:"IFCKINEMATICVISCOSITYMEASURE",3192672207:"IFCISOTHERMALMOISTURECAPACITYMEASURE",3686016028:"IFCIONCONCENTRATIONMEASURE",3809634241:"IFCINTEGERCOUNTRATEMEASURE",1939436016:"IFCINTEGER",2679005408:"IFCINDUCTANCEMEASURE",3358199106:"IFCILLUMINANCEMEASURE",983778844:"IFCIDENTIFIER",2589826445:"IFCHOURINDAY",1158859006:"IFCHEATINGVALUEMEASURE",3113092358:"IFCHEATFLUXDENSITYMEASURE",3064340077:"IFCGLOBALLYUNIQUEID",3044325142:"IFCFREQUENCYMEASURE",1361398929:"IFCFORCEMEASURE",2590844177:"IFCFONTWEIGHT",2715512545:"IFCFONTVARIANT",1102727119:"IFCFONTSTYLE",2078135608:"IFCENERGYMEASURE",2506197118:"IFCELECTRICVOLTAGEMEASURE",2951915441:"IFCELECTRICRESISTANCEMEASURE",3790457270:"IFCELECTRICCURRENTMEASURE",2093906313:"IFCELECTRICCONDUCTANCEMEASURE",3818826038:"IFCELECTRICCHARGEMEASURE",1827137117:"IFCELECTRICCAPACITANCEMEASURE",69416015:"IFCDYNAMICVISCOSITYMEASURE",524656162:"IFCDOSEEQUIVALENTMEASURE",4134073009:"IFCDIMENSIONCOUNT",1514641115:"IFCDESCRIPTIVEMEASURE",300323983:"IFCDAYLIGHTSAVINGHOUR",86635668:"IFCDAYINMONTHNUMBER",94842927:"IFCCURVATUREMEASURE",1778710042:"IFCCOUNTMEASURE",3238673880:"IFCCONTEXTDEPENDENTMEASURE",3812528620:"IFCCOMPOUNDPLANEANGLEMEASURE",2991860651:"IFCCOMPLEXNUMBER",1867003952:"IFCBOXALIGNMENT",2735952531:"IFCBOOLEAN",2650437152:"IFCAREAMEASURE",632304761:"IFCANGULARVELOCITYMEASURE",360377573:"IFCAMOUNTOFSUBSTANCEMEASURE",4182062534:"IFCACCELERATIONMEASURE",3699917729:"IFCABSORBEDDOSEMEASURE",1971632696:"IFCGEOSLICE",2680139844:"IFCGEOMODEL",24726584:"IFCELECTRICFLOWTREATMENTDEVICE",3693000487:"IFCDISTRIBUTIONBOARD",3460952963:"IFCCONVEYORSEGMENT",3999819293:"IFCCAISSONFOUNDATION",3314249567:"IFCBOREHOLE",4196446775:"IFCBEARING",325726236:"IFCALIGNMENT",3425753595:"IFCTRACKELEMENT",991950508:"IFCSIGNAL",3798194928:"IFCREINFORCEDSOIL",3290496277:"IFCRAIL",1383356374:"IFCPAVEMENT",2182337498:"IFCNAVIGATIONELEMENT",234836483:"IFCMOORINGDEVICE",2078563270:"IFCMOBILETELECOMMUNICATIONSAPPLIANCE",1638804497:"IFCLIQUIDTERMINAL",1154579445:"IFCLINEARPOSITIONINGELEMENT",2696325953:"IFCKERB",2713699986:"IFCGEOTECHNICALASSEMBLY",2142170206:"IFCELECTRICFLOWTREATMENTDEVICETYPE",3376911765:"IFCEARTHWORKSFILL",1077100507:"IFCEARTHWORKSELEMENT",3071239417:"IFCEARTHWORKSCUT",479945903:"IFCDISTRIBUTIONBOARDTYPE",3426335179:"IFCDEEPFOUNDATION",1502416096:"IFCCOURSE",2940368186:"IFCCONVEYORSEGMENTTYPE",3203706013:"IFCCAISSONFOUNDATIONTYPE",3862327254:"IFCBUILTSYSTEM",1876633798:"IFCBUILTELEMENT",963979645:"IFCBRIDGEPART",644574406:"IFCBRIDGE",3649138523:"IFCBEARINGTYPE",1662888072:"IFCALIGNMENTVERTICAL",317615605:"IFCALIGNMENTSEGMENT",1545765605:"IFCALIGNMENTHORIZONTAL",4266260250:"IFCALIGNMENTCANT",3956297820:"IFCVIBRATIONDAMPERTYPE",1530820697:"IFCVIBRATIONDAMPER",840318589:"IFCVEHICLE",1953115116:"IFCTRANSPORTATIONDEVICE",618700268:"IFCTRACKELEMENTTYPE",2281632017:"IFCTENDONCONDUITTYPE",3663046924:"IFCTENDONCONDUIT",42703149:"IFCSINESPIRAL",1894708472:"IFCSIGNALTYPE",3599934289:"IFCSIGNTYPE",33720170:"IFCSIGN",1027922057:"IFCSEVENTHORDERPOLYNOMIALSPIRAL",544395925:"IFCSEGMENTEDREFERENCECURVE",3649235739:"IFCSECONDORDERPOLYNOMIALSPIRAL",550521510:"IFCROADPART",146592293:"IFCROAD",3818125796:"IFCRELADHERESTOELEMENT",4021432810:"IFCREFERENT",1891881377:"IFCRAILWAYPART",3992365140:"IFCRAILWAY",1763565496:"IFCRAILTYPE",1946335990:"IFCPOSITIONINGELEMENT",514975943:"IFCPAVEMENTTYPE",506776471:"IFCNAVIGATIONELEMENTTYPE",710110818:"IFCMOORINGDEVICETYPE",1950438474:"IFCMOBILETELECOMMUNICATIONSAPPLIANCETYPE",976884017:"IFCMARINEPART",525669439:"IFCMARINEFACILITY",1770583370:"IFCLIQUIDTERMINALTYPE",2176059722:"IFCLINEARELEMENT",679976338:"IFCKERBTYPE",3948183225:"IFCIMPACTPROTECTIONDEVICETYPE",2568555532:"IFCIMPACTPROTECTIONDEVICE",2898700619:"IFCGRADIENTCURVE",1594536857:"IFCGEOTECHNICALSTRATUM",4230923436:"IFCGEOTECHNICALELEMENT",4228831410:"IFCFACILITYPARTCOMMON",1310830890:"IFCFACILITYPART",24185140:"IFCFACILITY",4234616927:"IFCDIRECTRIXDERIVEDREFERENCESWEPTAREASOLID",1306400036:"IFCDEEPFOUNDATIONTYPE",4189326743:"IFCCOURSETYPE",2000195564:"IFCCOSINESPIRAL",3497074424:"IFCCLOTHOID",1626504194:"IFCBUILTELEMENTTYPE",3651464721:"IFCVEHICLETYPE",1229763772:"IFCTRIANGULATEDIRREGULARNETWORK",3665877780:"IFCTRANSPORTATIONDEVICETYPE",782932809:"IFCTHIRDORDERPOLYNOMIALSPIRAL",2735484536:"IFCSPIRAL",1356537516:"IFCSECTIONEDSURFACE",1290935644:"IFCSECTIONEDSOLIDHORIZONTAL",1862484736:"IFCSECTIONEDSOLID",1441486842:"IFCRELPOSITIONS",1033248425:"IFCRELASSOCIATESPROFILEDEF",3381221214:"IFCPOLYNOMIALCURVE",2485787929:"IFCOFFSETCURVEBYDISTANCES",590820931:"IFCOFFSETCURVE",3465909080:"IFCINDEXEDPOLYGONALTEXTUREMAP",593015953:"IFCDIRECTRIXCURVESWEPTAREASOLID",4212018352:"IFCCURVESEGMENT",3425423356:"IFCAXIS2PLACEMENTLINEAR",823603102:"IFCSEGMENT",2165702409:"IFCPOINTBYDISTANCEEXPRESSION",182550632:"IFCOPENCROSSPROFILEDEF",388784114:"IFCLINEARPLACEMENT",536804194:"IFCALIGNMENTHORIZONTALSEGMENT",3752311538:"IFCALIGNMENTCANTSEGMENT",1010789467:"IFCTEXTURECOORDINATEINDICESWITHVOIDS",222769930:"IFCTEXTURECOORDINATEINDICES",2691318326:"IFCQUANTITYNUMBER",3633395639:"IFCALIGNMENTVERTICALSEGMENT",2879124712:"IFCALIGNMENTPARAMETERSEGMENT",25142252:"IFCCONTROLLER",3087945054:"IFCALARM",4288193352:"IFCACTUATOR",630975310:"IFCUNITARYCONTROLELEMENT",4086658281:"IFCSENSOR",2295281155:"IFCPROTECTIVEDEVICETRIPPINGUNIT",182646315:"IFCFLOWINSTRUMENT",1426591983:"IFCFIRESUPPRESSIONTERMINAL",819412036:"IFCFILTER",3415622556:"IFCFAN",1003880860:"IFCELECTRICTIMECONTROL",402227799:"IFCELECTRICMOTOR",264262732:"IFCELECTRICGENERATOR",3310460725:"IFCELECTRICFLOWSTORAGEDEVICE",862014818:"IFCELECTRICDISTRIBUTIONBOARD",1904799276:"IFCELECTRICAPPLIANCE",1360408905:"IFCDUCTSILENCER",3518393246:"IFCDUCTSEGMENT",342316401:"IFCDUCTFITTING",562808652:"IFCDISTRIBUTIONCIRCUIT",4074379575:"IFCDAMPER",3640358203:"IFCCOOLINGTOWER",4136498852:"IFCCOOLEDBEAM",2272882330:"IFCCONDENSER",3571504051:"IFCCOMPRESSOR",3221913625:"IFCCOMMUNICATIONSAPPLIANCE",639361253:"IFCCOIL",3902619387:"IFCCHILLER",4217484030:"IFCCABLESEGMENT",1051757585:"IFCCABLEFITTING",3758799889:"IFCCABLECARRIERSEGMENT",635142910:"IFCCABLECARRIERFITTING",2938176219:"IFCBURNER",32344328:"IFCBOILER",2906023776:"IFCBEAMSTANDARDCASE",277319702:"IFCAUDIOVISUALAPPLIANCE",2056796094:"IFCAIRTOAIRHEATRECOVERY",177149247:"IFCAIRTERMINALBOX",1634111441:"IFCAIRTERMINAL",486154966:"IFCWINDOWSTANDARDCASE",4237592921:"IFCWASTETERMINAL",4156078855:"IFCWALLELEMENTEDCASE",4207607924:"IFCVALVE",4292641817:"IFCUNITARYEQUIPMENT",3179687236:"IFCUNITARYCONTROLELEMENTTYPE",3026737570:"IFCTUBEBUNDLE",3825984169:"IFCTRANSFORMER",812556717:"IFCTANK",1162798199:"IFCSWITCHINGDEVICE",385403989:"IFCSTRUCTURALLOADCASE",1404847402:"IFCSTACKTERMINAL",1999602285:"IFCSPACEHEATER",3420628829:"IFCSOLARDEVICE",3027962421:"IFCSLABSTANDARDCASE",3127900445:"IFCSLABELEMENTEDCASE",1329646415:"IFCSHADINGDEVICE",3053780830:"IFCSANITARYTERMINAL",2572171363:"IFCREINFORCINGBARTYPE",1232101972:"IFCRATIONALBSPLINECURVEWITHKNOTS",90941305:"IFCPUMP",655969474:"IFCPROTECTIVEDEVICETRIPPINGUNITTYPE",738039164:"IFCPROTECTIVEDEVICE",1156407060:"IFCPLATESTANDARDCASE",3612865200:"IFCPIPESEGMENT",310824031:"IFCPIPEFITTING",3694346114:"IFCOUTLET",144952367:"IFCOUTERBOUNDARYCURVE",2474470126:"IFCMOTORCONNECTION",1911478936:"IFCMEMBERSTANDARDCASE",1437502449:"IFCMEDICALDEVICE",629592764:"IFCLIGHTFIXTURE",76236018:"IFCLAMP",2176052936:"IFCJUNCTIONBOX",4175244083:"IFCINTERCEPTOR",2068733104:"IFCHUMIDIFIER",3319311131:"IFCHEATEXCHANGER",2188021234:"IFCFLOWMETER",1209101575:"IFCEXTERNALSPATIALELEMENT",484807127:"IFCEVAPORATOR",3747195512:"IFCEVAPORATIVECOOLER",2814081492:"IFCENGINE",2417008758:"IFCELECTRICDISTRIBUTIONBOARDTYPE",3242481149:"IFCDOORSTANDARDCASE",3205830791:"IFCDISTRIBUTIONSYSTEM",400855858:"IFCCOMMUNICATIONSAPPLIANCETYPE",905975707:"IFCCOLUMNSTANDARDCASE",1677625105:"IFCCIVILELEMENT",3296154744:"IFCCHIMNEY",2674252688:"IFCCABLEFITTINGTYPE",2188180465:"IFCBURNERTYPE",1177604601:"IFCBUILDINGSYSTEM",39481116:"IFCBUILDINGELEMENTPARTTYPE",1136057603:"IFCBOUNDARYCURVE",2461110595:"IFCBSPLINECURVEWITHKNOTS",1532957894:"IFCAUDIOVISUALAPPLIANCETYPE",4088093105:"IFCWORKCALENDAR",4009809668:"IFCWINDOWTYPE",926996030:"IFCVOIDINGFEATURE",2391383451:"IFCVIBRATIONISOLATOR",2415094496:"IFCTENDONTYPE",3081323446:"IFCTENDONANCHORTYPE",413509423:"IFCSYSTEMFURNITUREELEMENT",3101698114:"IFCSURFACEFEATURE",3657597509:"IFCSTRUCTURALSURFACEACTION",2757150158:"IFCSTRUCTURALCURVEREACTION",1004757350:"IFCSTRUCTURALCURVEACTION",338393293:"IFCSTAIRTYPE",1072016465:"IFCSOLARDEVICETYPE",4074543187:"IFCSHADINGDEVICETYPE",2157484638:"IFCSEAMCURVE",2781568857:"IFCROOFTYPE",2310774935:"IFCREINFORCINGMESHTYPE",964333572:"IFCREINFORCINGELEMENTTYPE",683857671:"IFCRATIONALBSPLINESURFACEWITHKNOTS",1469900589:"IFCRAMPTYPE",2839578677:"IFCPOLYGONALFACESET",1158309216:"IFCPILETYPE",3079942009:"IFCOPENINGSTANDARDCASE",1114901282:"IFCMEDICALDEVICETYPE",3113134337:"IFCINTERSECTIONCURVE",3946677679:"IFCINTERCEPTORTYPE",2571569899:"IFCINDEXEDPOLYCURVE",3493046030:"IFCGEOGRAPHICELEMENT",1509553395:"IFCFURNITURE",1893162501:"IFCFOOTINGTYPE",2853485674:"IFCEXTERNALSPATIALSTRUCTUREELEMENT",4148101412:"IFCEVENT",132023988:"IFCENGINETYPE",2397081782:"IFCELEMENTASSEMBLYTYPE",2323601079:"IFCDOORTYPE",1213902940:"IFCCYLINDRICALSURFACE",1525564444:"IFCCONSTRUCTIONPRODUCTRESOURCETYPE",4105962743:"IFCCONSTRUCTIONMATERIALRESOURCETYPE",2185764099:"IFCCONSTRUCTIONEQUIPMENTRESOURCETYPE",15328376:"IFCCOMPOSITECURVEONSURFACE",3875453745:"IFCCOMPLEXPROPERTYTEMPLATE",3893394355:"IFCCIVILELEMENTTYPE",2197970202:"IFCCHIMNEYTYPE",167062518:"IFCBSPLINESURFACEWITHKNOTS",2887950389:"IFCBSPLINESURFACE",2603310189:"IFCADVANCEDBREPWITHVOIDS",1635779807:"IFCADVANCEDBREP",2916149573:"IFCTRIANGULATEDFACESET",1935646853:"IFCTOROIDALSURFACE",2387106220:"IFCTESSELLATEDFACESET",3206491090:"IFCTASKTYPE",699246055:"IFCSURFACECURVE",4095615324:"IFCSUBCONTRACTRESOURCETYPE",603775116:"IFCSTRUCTURALSURFACEREACTION",4015995234:"IFCSPHERICALSURFACE",2481509218:"IFCSPATIALZONETYPE",463610769:"IFCSPATIALZONE",710998568:"IFCSPATIALELEMENTTYPE",1412071761:"IFCSPATIALELEMENT",3663146110:"IFCSIMPLEPROPERTYTEMPLATE",3243963512:"IFCREVOLVEDAREASOLIDTAPERED",816062949:"IFCREPARAMETRISEDCOMPOSITECURVESEGMENT",1521410863:"IFCRELSPACEBOUNDARY2NDLEVEL",3523091289:"IFCRELSPACEBOUNDARY1STLEVEL",427948657:"IFCRELINTERFERESELEMENTS",307848117:"IFCRELDEFINESBYTEMPLATE",1462361463:"IFCRELDEFINESBYOBJECT",2565941209:"IFCRELDECLARES",1027710054:"IFCRELASSIGNSTOGROUPBYFACTOR",3521284610:"IFCPROPERTYTEMPLATE",492091185:"IFCPROPERTYSETTEMPLATE",653396225:"IFCPROJECTLIBRARY",569719735:"IFCPROCEDURETYPE",3967405729:"IFCPREDEFINEDPROPERTYSET",1682466193:"IFCPCURVE",428585644:"IFCLABORRESOURCETYPE",2294589976:"IFCINDEXEDPOLYGONALFACEWITHVOIDS",178912537:"IFCINDEXEDPOLYGONALFACE",4095422895:"IFCGEOGRAPHICELEMENTTYPE",2652556860:"IFCFIXEDREFERENCESWEPTAREASOLID",2804161546:"IFCEXTRUDEDAREASOLIDTAPERED",4024345920:"IFCEVENTTYPE",2629017746:"IFCCURVEBOUNDEDSURFACE",1815067380:"IFCCREWRESOURCETYPE",3419103109:"IFCCONTEXT",2574617495:"IFCCONSTRUCTIONRESOURCETYPE",2059837836:"IFCCARTESIANPOINTLIST3D",1675464909:"IFCCARTESIANPOINTLIST2D",574549367:"IFCCARTESIANPOINTLIST",3406155212:"IFCADVANCEDFACE",3698973494:"IFCTYPERESOURCE",3736923433:"IFCTYPEPROCESS",901063453:"IFCTESSELLATEDITEM",1096409881:"IFCSWEPTDISKSOLIDPOLYGONAL",1042787934:"IFCRESOURCETIME",1608871552:"IFCRESOURCECONSTRAINTRELATIONSHIP",2943643501:"IFCRESOURCEAPPROVALRELATIONSHIP",2090586900:"IFCQUANTITYSET",1482703590:"IFCPROPERTYTEMPLATEDEFINITION",3778827333:"IFCPREDEFINEDPROPERTIES",2998442950:"IFCMIRROREDPROFILEDEF",853536259:"IFCMATERIALRELATIONSHIP",3404854881:"IFCMATERIALPROFILESETUSAGETAPERING",3079605661:"IFCMATERIALPROFILESETUSAGE",2852063980:"IFCMATERIALCONSTITUENTSET",3708119e3:"IFCMATERIALCONSTITUENT",1585845231:"IFCLAGTIME",2133299955:"IFCINDEXEDTRIANGLETEXTUREMAP",1437953363:"IFCINDEXEDTEXTUREMAP",3570813810:"IFCINDEXEDCOLOURMAP",1437805879:"IFCEXTERNALREFERENCERELATIONSHIP",297599258:"IFCEXTENDEDPROPERTIES",211053100:"IFCEVENTTIME",2713554722:"IFCCONVERSIONBASEDUNITWITHOFFSET",3285139300:"IFCCOLOURRGBLIST",1236880293:"IFCWORKTIME",1199560280:"IFCTIMEPERIOD",3611470254:"IFCTEXTUREVERTEXLIST",2771591690:"IFCTASKTIMERECURRING",1549132990:"IFCTASKTIME",2043862942:"IFCTABLECOLUMN",2934153892:"IFCSURFACEREINFORCEMENTAREA",609421318:"IFCSTRUCTURALLOADORRESULT",3478079324:"IFCSTRUCTURALLOADCONFIGURATION",1054537805:"IFCSCHEDULINGTIME",2439245199:"IFCRESOURCELEVELRELATIONSHIP",2433181523:"IFCREFERENCE",3915482550:"IFCRECURRENCEPATTERN",986844984:"IFCPROPERTYABSTRACTION",3843373140:"IFCPROJECTEDCRS",677532197:"IFCPRESENTATIONITEM",1507914824:"IFCMATERIALUSAGEDEFINITION",552965576:"IFCMATERIALPROFILEWITHOFFSETS",164193824:"IFCMATERIALPROFILESET",2235152071:"IFCMATERIALPROFILE",1847252529:"IFCMATERIALLAYERWITHOFFSETS",760658860:"IFCMATERIALDEFINITION",3057273783:"IFCMAPCONVERSION",4294318154:"IFCEXTERNALINFORMATION",1466758467:"IFCCOORDINATEREFERENCESYSTEM",1785450214:"IFCCOORDINATEOPERATION",775493141:"IFCCONNECTIONVOLUMEGEOMETRY",979691226:"IFCREINFORCINGBAR",3700593921:"IFCELECTRICDISTRIBUTIONPOINT",1062813311:"IFCDISTRIBUTIONCONTROLELEMENT",1052013943:"IFCDISTRIBUTIONCHAMBERELEMENT",578613899:"IFCCONTROLLERTYPE",2454782716:"IFCCHAMFEREDGEFEATURE",753842376:"IFCBEAM",3001207471:"IFCALARMTYPE",2874132201:"IFCACTUATORTYPE",3304561284:"IFCWINDOW",3512223829:"IFCWALLSTANDARDCASE",2391406946:"IFCWALL",3313531582:"IFCVIBRATIONISOLATORTYPE",2347447852:"IFCTENDONANCHOR",3824725483:"IFCTENDON",2515109513:"IFCSTRUCTURALANALYSISMODEL",4252922144:"IFCSTAIRFLIGHT",331165859:"IFCSTAIR",1529196076:"IFCSLAB",1783015770:"IFCSENSORTYPE",1376911519:"IFCROUNDEDEDGEFEATURE",2016517767:"IFCROOF",2320036040:"IFCREINFORCINGMESH",3027567501:"IFCREINFORCINGELEMENT",3055160366:"IFCRATIONALBEZIERCURVE",3283111854:"IFCRAMPFLIGHT",3024970846:"IFCRAMP",2262370178:"IFCRAILING",3171933400:"IFCPLATE",1687234759:"IFCPILE",1073191201:"IFCMEMBER",900683007:"IFCFOOTING",3508470533:"IFCFLOWTREATMENTDEVICE",2223149337:"IFCFLOWTERMINAL",707683696:"IFCFLOWSTORAGEDEVICE",987401354:"IFCFLOWSEGMENT",3132237377:"IFCFLOWMOVINGDEVICE",4037862832:"IFCFLOWINSTRUMENTTYPE",4278956645:"IFCFLOWFITTING",2058353004:"IFCFLOWCONTROLLER",4222183408:"IFCFIRESUPPRESSIONTERMINALTYPE",1810631287:"IFCFILTERTYPE",346874300:"IFCFANTYPE",1658829314:"IFCENERGYCONVERSIONDEVICE",857184966:"IFCELECTRICALELEMENT",1634875225:"IFCELECTRICALCIRCUIT",712377611:"IFCELECTRICTIMECONTROLTYPE",1217240411:"IFCELECTRICMOTORTYPE",1365060375:"IFCELECTRICHEATERTYPE",1534661035:"IFCELECTRICGENERATORTYPE",3277789161:"IFCELECTRICFLOWSTORAGEDEVICETYPE",663422040:"IFCELECTRICAPPLIANCETYPE",855621170:"IFCEDGEFEATURE",2030761528:"IFCDUCTSILENCERTYPE",3760055223:"IFCDUCTSEGMENTTYPE",869906466:"IFCDUCTFITTINGTYPE",395920057:"IFCDOOR",3041715199:"IFCDISTRIBUTIONPORT",3040386961:"IFCDISTRIBUTIONFLOWELEMENT",1945004755:"IFCDISTRIBUTIONELEMENT",2063403501:"IFCDISTRIBUTIONCONTROLELEMENTTYPE",1599208980:"IFCDISTRIBUTIONCHAMBERELEMENTTYPE",2635815018:"IFCDISCRETEACCESSORYTYPE",1335981549:"IFCDISCRETEACCESSORY",4147604152:"IFCDIAMETERDIMENSION",3961806047:"IFCDAMPERTYPE",3495092785:"IFCCURTAINWALL",1973544240:"IFCCOVERING",2954562838:"IFCCOOLINGTOWERTYPE",335055490:"IFCCOOLEDBEAMTYPE",488727124:"IFCCONSTRUCTIONPRODUCTRESOURCE",1060000209:"IFCCONSTRUCTIONMATERIALRESOURCE",3898045240:"IFCCONSTRUCTIONEQUIPMENTRESOURCE",1163958913:"IFCCONDITIONCRITERION",2188551683:"IFCCONDITION",2816379211:"IFCCONDENSERTYPE",3850581409:"IFCCOMPRESSORTYPE",843113511:"IFCCOLUMN",2301859152:"IFCCOILTYPE",2611217952:"IFCCIRCLE",2951183804:"IFCCHILLERTYPE",1285652485:"IFCCABLESEGMENTTYPE",3293546465:"IFCCABLECARRIERSEGMENTTYPE",395041908:"IFCCABLECARRIERFITTINGTYPE",1909888760:"IFCBUILDINGELEMENTPROXYTYPE",1095909175:"IFCBUILDINGELEMENTPROXY",2979338954:"IFCBUILDINGELEMENTPART",52481810:"IFCBUILDINGELEMENTCOMPONENT",3299480353:"IFCBUILDINGELEMENT",231477066:"IFCBOILERTYPE",1916977116:"IFCBEZIERCURVE",819618141:"IFCBEAMTYPE",1967976161:"IFCBSPLINECURVE",3460190687:"IFCASSET",2470393545:"IFCANGULARDIMENSION",1871374353:"IFCAIRTOAIRHEATRECOVERYTYPE",3352864051:"IFCAIRTERMINALTYPE",1411407467:"IFCAIRTERMINALBOXTYPE",3821786052:"IFCACTIONREQUEST",1213861670:"IFC2DCOMPOSITECURVE",1033361043:"IFCZONE",3342526732:"IFCWORKSCHEDULE",4218914973:"IFCWORKPLAN",1028945134:"IFCWORKCONTROL",1133259667:"IFCWASTETERMINALTYPE",1898987631:"IFCWALLTYPE",2769231204:"IFCVIRTUALELEMENT",728799441:"IFCVALVETYPE",1911125066:"IFCUNITARYEQUIPMENTTYPE",1600972822:"IFCTUBEBUNDLETYPE",3593883385:"IFCTRIMMEDCURVE",1620046519:"IFCTRANSPORTELEMENT",1692211062:"IFCTRANSFORMERTYPE",1637806684:"IFCTIMESERIESSCHEDULE",5716631:"IFCTANKTYPE",2254336722:"IFCSYSTEM",2315554128:"IFCSWITCHINGDEVICETYPE",148013059:"IFCSUBCONTRACTRESOURCE",1975003073:"IFCSTRUCTURALSURFACECONNECTION",2986769608:"IFCSTRUCTURALRESULTGROUP",1235345126:"IFCSTRUCTURALPOINTREACTION",734778138:"IFCSTRUCTURALPOINTCONNECTION",2082059205:"IFCSTRUCTURALPOINTACTION",3987759626:"IFCSTRUCTURALPLANARACTIONVARYING",1621171031:"IFCSTRUCTURALPLANARACTION",1252848954:"IFCSTRUCTURALLOADGROUP",1721250024:"IFCSTRUCTURALLINEARACTIONVARYING",1807405624:"IFCSTRUCTURALLINEARACTION",2445595289:"IFCSTRUCTURALCURVEMEMBERVARYING",214636428:"IFCSTRUCTURALCURVEMEMBER",4243806635:"IFCSTRUCTURALCURVECONNECTION",1179482911:"IFCSTRUCTURALCONNECTION",682877961:"IFCSTRUCTURALACTION",1039846685:"IFCSTAIRFLIGHTTYPE",3112655638:"IFCSTACKTERMINALTYPE",3812236995:"IFCSPACETYPE",652456506:"IFCSPACEPROGRAM",1305183839:"IFCSPACEHEATERTYPE",3856911033:"IFCSPACE",2533589738:"IFCSLABTYPE",4097777520:"IFCSITE",4105383287:"IFCSERVICELIFE",3517283431:"IFCSCHEDULETIMECONTROL",1768891740:"IFCSANITARYTERMINALTYPE",2863920197:"IFCRELASSIGNSTASKS",160246688:"IFCRELAGGREGATES",2324767716:"IFCRAMPFLIGHTTYPE",2893384427:"IFCRAILINGTYPE",3248260540:"IFCRADIUSDIMENSION",2250791053:"IFCPUMPTYPE",1842657554:"IFCPROTECTIVEDEVICETYPE",3651124850:"IFCPROJECTIONELEMENT",3642467123:"IFCPROJECTORDERRECORD",2904328755:"IFCPROJECTORDER",2744685151:"IFCPROCEDURE",3740093272:"IFCPORT",3724593414:"IFCPOLYLINE",4017108033:"IFCPLATETYPE",4231323485:"IFCPIPESEGMENTTYPE",804291784:"IFCPIPEFITTINGTYPE",3327091369:"IFCPERMIT",2382730787:"IFCPERFORMANCEHISTORY",2837617999:"IFCOUTLETTYPE",3425660407:"IFCORDERACTION",3588315303:"IFCOPENINGELEMENT",4143007308:"IFCOCCUPANT",1916936684:"IFCMOVE",977012517:"IFCMOTORCONNECTIONTYPE",3181161470:"IFCMEMBERTYPE",2108223431:"IFCMECHANICALFASTENERTYPE",377706215:"IFCMECHANICALFASTENER",2506943328:"IFCLINEARDIMENSION",1161773419:"IFCLIGHTFIXTURETYPE",1051575348:"IFCLAMPTYPE",3827777499:"IFCLABORRESOURCE",4288270099:"IFCJUNCTIONBOXTYPE",2391368822:"IFCINVENTORY",1806887404:"IFCHUMIDIFIERTYPE",1251058090:"IFCHEATEXCHANGERTYPE",2706460486:"IFCGROUP",3009204131:"IFCGRID",200128114:"IFCGASTERMINALTYPE",814719939:"IFCFURNITURESTANDARD",263784265:"IFCFURNISHINGELEMENT",3009222698:"IFCFLOWTREATMENTDEVICETYPE",2297155007:"IFCFLOWTERMINALTYPE",1339347760:"IFCFLOWSTORAGEDEVICETYPE",1834744321:"IFCFLOWSEGMENTTYPE",1482959167:"IFCFLOWMOVINGDEVICETYPE",3815607619:"IFCFLOWMETERTYPE",3198132628:"IFCFLOWFITTINGTYPE",3907093117:"IFCFLOWCONTROLLERTYPE",1287392070:"IFCFEATUREELEMENTSUBTRACTION",2143335405:"IFCFEATUREELEMENTADDITION",2827207264:"IFCFEATUREELEMENT",2489546625:"IFCFASTENERTYPE",647756555:"IFCFASTENER",3737207727:"IFCFACETEDBREPWITHVOIDS",807026263:"IFCFACETEDBREP",3390157468:"IFCEVAPORATORTYPE",3174744832:"IFCEVAPORATIVECOOLERTYPE",3272907226:"IFCEQUIPMENTSTANDARD",1962604670:"IFCEQUIPMENTELEMENT",2107101300:"IFCENERGYCONVERSIONDEVICETYPE",1704287377:"IFCELLIPSE",2590856083:"IFCELEMENTCOMPONENTTYPE",1623761950:"IFCELEMENTCOMPONENT",4123344466:"IFCELEMENTASSEMBLY",1758889154:"IFCELEMENT",360485395:"IFCELECTRICALBASEPROPERTIES",3849074793:"IFCDISTRIBUTIONFLOWELEMENTTYPE",3256556792:"IFCDISTRIBUTIONELEMENTTYPE",681481545:"IFCDIMENSIONCURVEDIRECTEDCALLOUT",1457835157:"IFCCURTAINWALLTYPE",3295246426:"IFCCREWRESOURCE",1916426348:"IFCCOVERINGTYPE",1419761937:"IFCCOSTSCHEDULE",3895139033:"IFCCOSTITEM",3293443760:"IFCCONTROL",2559216714:"IFCCONSTRUCTIONRESOURCE",2510884976:"IFCCONIC",3732776249:"IFCCOMPOSITECURVE",300633059:"IFCCOLUMNTYPE",2937912522:"IFCCIRCLEHOLLOWPROFILEDEF",3124254112:"IFCBUILDINGSTOREY",1950629157:"IFCBUILDINGELEMENTTYPE",4031249490:"IFCBUILDING",1260505505:"IFCBOUNDEDCURVE",3649129432:"IFCBOOLEANCLIPPINGRESULT",1334484129:"IFCBLOCK",3207858831:"IFCASYMMETRICISHAPEPROFILEDEF",1674181508:"IFCANNOTATION",2296667514:"IFCACTOR",2097647324:"IFCTRANSPORTELEMENTTYPE",3473067441:"IFCTASK",1580310250:"IFCSYSTEMFURNITUREELEMENTTYPE",4124788165:"IFCSURFACEOFREVOLUTION",2809605785:"IFCSURFACEOFLINEAREXTRUSION",2028607225:"IFCSURFACECURVESWEPTAREASOLID",4070609034:"IFCSTRUCTUREDDIMENSIONCALLOUT",2218152070:"IFCSTRUCTURALSURFACEMEMBERVARYING",3979015343:"IFCSTRUCTURALSURFACEMEMBER",3689010777:"IFCSTRUCTURALREACTION",530289379:"IFCSTRUCTURALMEMBER",3136571912:"IFCSTRUCTURALITEM",3544373492:"IFCSTRUCTURALACTIVITY",451544542:"IFCSPHERE",3893378262:"IFCSPATIALSTRUCTUREELEMENTTYPE",2706606064:"IFCSPATIALSTRUCTUREELEMENT",3626867408:"IFCRIGHTCIRCULARCYLINDER",4158566097:"IFCRIGHTCIRCULARCONE",1856042241:"IFCREVOLVEDAREASOLID",2914609552:"IFCRESOURCE",1401173127:"IFCRELVOIDSELEMENT",3451746338:"IFCRELSPACEBOUNDARY",366585022:"IFCRELSERVICESBUILDINGS",4122056220:"IFCRELSEQUENCE",1058617721:"IFCRELSCHEDULESCOSTITEMS",1245217292:"IFCRELREFERENCEDINSPATIALSTRUCTURE",750771296:"IFCRELPROJECTSELEMENT",202636808:"IFCRELOVERRIDESPROPERTIES",2051452291:"IFCRELOCCUPIESSPACES",3268803585:"IFCRELNESTS",4189434867:"IFCRELINTERACTIONREQUIREMENTS",279856033:"IFCRELFLOWCONTROLELEMENTS",3940055652:"IFCRELFILLSELEMENT",781010003:"IFCRELDEFINESBYTYPE",4186316022:"IFCRELDEFINESBYPROPERTIES",693640335:"IFCRELDEFINES",2551354335:"IFCRELDECOMPOSES",2802773753:"IFCRELCOVERSSPACES",886880790:"IFCRELCOVERSBLDGELEMENTS",3242617779:"IFCRELCONTAINEDINSPATIALSTRUCTURE",3678494232:"IFCRELCONNECTSWITHREALIZINGELEMENTS",504942748:"IFCRELCONNECTSWITHECCENTRICITY",1638771189:"IFCRELCONNECTSSTRUCTURALMEMBER",3912681535:"IFCRELCONNECTSSTRUCTURALELEMENT",2127690289:"IFCRELCONNECTSSTRUCTURALACTIVITY",3190031847:"IFCRELCONNECTSPORTS",4201705270:"IFCRELCONNECTSPORTTOELEMENT",3945020480:"IFCRELCONNECTSPATHELEMENTS",1204542856:"IFCRELCONNECTSELEMENTS",826625072:"IFCRELCONNECTS",2851387026:"IFCRELASSOCIATESPROFILEPROPERTIES",2655215786:"IFCRELASSOCIATESMATERIAL",3840914261:"IFCRELASSOCIATESLIBRARY",982818633:"IFCRELASSOCIATESDOCUMENT",2728634034:"IFCRELASSOCIATESCONSTRAINT",919958153:"IFCRELASSOCIATESCLASSIFICATION",4095574036:"IFCRELASSOCIATESAPPROVAL",1327628568:"IFCRELASSOCIATESAPPLIEDVALUE",1865459582:"IFCRELASSOCIATES",205026976:"IFCRELASSIGNSTORESOURCE",3372526763:"IFCRELASSIGNSTOPROJECTORDER",2857406711:"IFCRELASSIGNSTOPRODUCT",4278684876:"IFCRELASSIGNSTOPROCESS",1307041759:"IFCRELASSIGNSTOGROUP",2495723537:"IFCRELASSIGNSTOCONTROL",1683148259:"IFCRELASSIGNSTOACTOR",3939117080:"IFCRELASSIGNS",3454111270:"IFCRECTANGULARTRIMMEDSURFACE",2798486643:"IFCRECTANGULARPYRAMID",2770003689:"IFCRECTANGLEHOLLOWPROFILEDEF",3219374653:"IFCPROXY",1451395588:"IFCPROPERTYSET",4194566429:"IFCPROJECTIONCURVE",103090709:"IFCPROJECT",4208778838:"IFCPRODUCT",2945172077:"IFCPROCESS",220341763:"IFCPLANE",603570806:"IFCPLANARBOX",3566463478:"IFCPERMEABLECOVERINGPROPERTIES",3505215534:"IFCOFFSETCURVE3D",3388369263:"IFCOFFSETCURVE2D",3888040117:"IFCOBJECT",1425443689:"IFCMANIFOLDSOLIDBREP",1281925730:"IFCLINE",572779678:"IFCLSHAPEPROFILEDEF",1484403080:"IFCISHAPEPROFILEDEF",987898635:"IFCGEOMETRICCURVESET",1268542332:"IFCFURNITURETYPE",4238390223:"IFCFURNISHINGELEMENTTYPE",3455213021:"IFCFLUIDFLOWPROPERTIES",315944413:"IFCFILLAREASTYLETILES",4203026998:"IFCFILLAREASTYLETILESYMBOLWITHSTYLE",374418227:"IFCFILLAREASTYLEHATCHING",2047409740:"IFCFACEBASEDSURFACEMODEL",477187591:"IFCEXTRUDEDAREASOLID",80994333:"IFCENERGYPROPERTIES",2835456948:"IFCELLIPSEPROFILEDEF",2777663545:"IFCELEMENTARYSURFACE",339256511:"IFCELEMENTTYPE",1883228015:"IFCELEMENTQUANTITY",1472233963:"IFCEDGELOOP",4006246654:"IFCDRAUGHTINGPREDEFINEDCURVEFONT",445594917:"IFCDRAUGHTINGPREDEFINEDCOLOUR",3073041342:"IFCDRAUGHTINGCALLOUT",526551008:"IFCDOORSTYLE",1714330368:"IFCDOORPANELPROPERTIES",2963535650:"IFCDOORLININGPROPERTIES",32440307:"IFCDIRECTION",4054601972:"IFCDIMENSIONCURVETERMINATOR",606661476:"IFCDIMENSIONCURVE",693772133:"IFCDEFINEDSYMBOL",2827736869:"IFCCURVEBOUNDEDPLANE",2601014836:"IFCCURVE",2147822146:"IFCCSGSOLID",2506170314:"IFCCSGPRIMITIVE3D",194851669:"IFCCRANERAILFSHAPEPROFILEDEF",4133800736:"IFCCRANERAILASHAPEPROFILEDEF",2485617015:"IFCCOMPOSITECURVESEGMENT",2205249479:"IFCCLOSEDSHELL",1383045692:"IFCCIRCLEPROFILEDEF",1416205885:"IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORM",3331915920:"IFCCARTESIANTRANSFORMATIONOPERATOR3D",3486308946:"IFCCARTESIANTRANSFORMATIONOPERATOR2DNONUNIFORM",3749851601:"IFCCARTESIANTRANSFORMATIONOPERATOR2D",59481748:"IFCCARTESIANTRANSFORMATIONOPERATOR",1123145078:"IFCCARTESIANPOINT",2898889636:"IFCCSHAPEPROFILEDEF",2713105998:"IFCBOXEDHALFSPACE",2581212453:"IFCBOUNDINGBOX",4182860854:"IFCBOUNDEDSURFACE",2736907675:"IFCBOOLEANRESULT",2740243338:"IFCAXIS2PLACEMENT3D",3125803723:"IFCAXIS2PLACEMENT2D",4261334040:"IFCAXIS1PLACEMENT",1302238472:"IFCANNOTATIONSURFACE",2265737646:"IFCANNOTATIONFILLAREAOCCURRENCE",669184980:"IFCANNOTATIONFILLAREA",3288037868:"IFCANNOTATIONCURVEOCCURRENCE",2543172580:"IFCZSHAPEPROFILEDEF",1299126871:"IFCWINDOWSTYLE",512836454:"IFCWINDOWPANELPROPERTIES",336235671:"IFCWINDOWLININGPROPERTIES",2759199220:"IFCVERTEXLOOP",1417489154:"IFCVECTOR",427810014:"IFCUSHAPEPROFILEDEF",2347495698:"IFCTYPEPRODUCT",1628702193:"IFCTYPEOBJECT",1345879162:"IFCTWODIRECTIONREPEATFACTOR",2715220739:"IFCTRAPEZIUMPROFILEDEF",3124975700:"IFCTEXTLITERALWITHEXTENT",4282788508:"IFCTEXTLITERAL",3028897424:"IFCTERMINATORSYMBOL",3071757647:"IFCTSHAPEPROFILEDEF",230924584:"IFCSWEPTSURFACE",1260650574:"IFCSWEPTDISKSOLID",2247615214:"IFCSWEPTAREASOLID",1878645084:"IFCSURFACESTYLERENDERING",2513912981:"IFCSURFACE",2233826070:"IFCSUBEDGE",3653947884:"IFCSTRUCTURALSTEELPROFILEPROPERTIES",3843319758:"IFCSTRUCTURALPROFILEPROPERTIES",1190533807:"IFCSTRUCTURALLOADSINGLEFORCEWARPING",1597423693:"IFCSTRUCTURALLOADSINGLEFORCE",1973038258:"IFCSTRUCTURALLOADSINGLEDISPLACEMENTDISTORTION",2473145415:"IFCSTRUCTURALLOADSINGLEDISPLACEMENT",2668620305:"IFCSTRUCTURALLOADPLANARFORCE",1595516126:"IFCSTRUCTURALLOADLINEARFORCE",390701378:"IFCSPACETHERMALLOADPROPERTIES",1202362311:"IFCSOUNDVALUE",2485662743:"IFCSOUNDPROPERTIES",723233188:"IFCSOLIDMODEL",2609359061:"IFCSLIPPAGECONNECTIONCONDITION",4124623270:"IFCSHELLBASEDSURFACEMODEL",2411513650:"IFCSERVICELIFEFACTOR",1509187699:"IFCSECTIONEDSPINE",2778083089:"IFCROUNDEDRECTANGLEPROFILEDEF",478536968:"IFCRELATIONSHIP",3765753017:"IFCREINFORCEMENTDEFINITIONPROPERTIES",3413951693:"IFCREGULARTIMESERIES",3615266464:"IFCRECTANGLEPROFILEDEF",110355661:"IFCPROPERTYTABLEVALUE",3650150729:"IFCPROPERTYSINGLEVALUE",3357820518:"IFCPROPERTYSETDEFINITION",941946838:"IFCPROPERTYREFERENCEVALUE",2752243245:"IFCPROPERTYLISTVALUE",4166981789:"IFCPROPERTYENUMERATEDVALUE",1680319473:"IFCPROPERTYDEFINITION",871118103:"IFCPROPERTYBOUNDEDVALUE",673634403:"IFCPRODUCTDEFINITIONSHAPE",179317114:"IFCPREDEFINEDPOINTMARKERSYMBOL",433424934:"IFCPREDEFINEDDIMENSIONSYMBOL",2559016684:"IFCPREDEFINEDCURVEFONT",759155922:"IFCPREDEFINEDCOLOUR",2775532180:"IFCPOLYGONALBOUNDEDHALFSPACE",2924175390:"IFCPOLYLOOP",1423911732:"IFCPOINTONSURFACE",4022376103:"IFCPOINTONCURVE",2067069095:"IFCPOINT",1663979128:"IFCPLANAREXTENT",2004835150:"IFCPLACEMENT",597895409:"IFCPIXELTEXTURE",3021840470:"IFCPHYSICALCOMPLEXQUANTITY",2519244187:"IFCPATH",2529465313:"IFCPARAMETERIZEDPROFILEDEF",1029017970:"IFCORIENTEDEDGE",2665983363:"IFCOPENSHELL",2833995503:"IFCONEDIRECTIONREPEATFACTOR",219451334:"IFCOBJECTDEFINITION",1430189142:"IFCMECHANICALCONCRETEMATERIALPROPERTIES",2022407955:"IFCMATERIALDEFINITIONREPRESENTATION",2347385850:"IFCMAPPEDITEM",1008929658:"IFCLOOP",2624227202:"IFCLOCALPLACEMENT",3422422726:"IFCLIGHTSOURCESPOT",1520743889:"IFCLIGHTSOURCEPOSITIONAL",4266656042:"IFCLIGHTSOURCEGONIOMETRIC",2604431987:"IFCLIGHTSOURCEDIRECTIONAL",125510826:"IFCLIGHTSOURCEAMBIENT",1402838566:"IFCLIGHTSOURCE",3741457305:"IFCIRREGULARTIMESERIES",3905492369:"IFCIMAGETEXTURE",2445078500:"IFCHYGROSCOPICMATERIALPROPERTIES",812098782:"IFCHALFSPACESOLID",178086475:"IFCGRIDPLACEMENT",3590301190:"IFCGEOMETRICSET",4142052618:"IFCGEOMETRICREPRESENTATIONSUBCONTEXT",2453401579:"IFCGEOMETRICREPRESENTATIONITEM",3448662350:"IFCGEOMETRICREPRESENTATIONCONTEXT",1446786286:"IFCGENERALPROFILEPROPERTIES",803998398:"IFCGENERALMATERIALPROPERTIES",3857492461:"IFCFUELPROPERTIES",738692330:"IFCFILLAREASTYLE",4219587988:"IFCFAILURECONNECTIONCONDITION",3008276851:"IFCFACESURFACE",803316827:"IFCFACEOUTERBOUND",1809719519:"IFCFACEBOUND",2556980723:"IFCFACE",1860660968:"IFCEXTENDEDMATERIALPROPERTIES",476780140:"IFCEDGECURVE",3900360178:"IFCEDGE",4170525392:"IFCDRAUGHTINGPREDEFINEDTEXTFONT",3732053477:"IFCDOCUMENTREFERENCE",1694125774:"IFCDIMENSIONPAIR",2273265877:"IFCDIMENSIONCALLOUTRELATIONSHIP",3632507154:"IFCDERIVEDPROFILEDEF",3800577675:"IFCCURVESTYLE",2889183280:"IFCCONVERSIONBASEDUNIT",3050246964:"IFCCONTEXTDEPENDENTUNIT",45288368:"IFCCONNECTIONPOINTECCENTRICITY",1981873012:"IFCCONNECTIONCURVEGEOMETRY",370225590:"IFCCONNECTEDFACESET",1485152156:"IFCCOMPOSITEPROFILEDEF",2542286263:"IFCCOMPLEXPROPERTY",776857604:"IFCCOLOURRGB",647927063:"IFCCLASSIFICATIONREFERENCE",3150382593:"IFCCENTERLINEPROFILEDEF",616511568:"IFCBLOBTEXTURE",2705031697:"IFCARBITRARYPROFILEDEFWITHVOIDS",1310608509:"IFCARBITRARYOPENPROFILEDEF",3798115385:"IFCARBITRARYCLOSEDPROFILEDEF",2297822566:"IFCANNOTATIONTEXTOCCURRENCE",3612888222:"IFCANNOTATIONSYMBOLOCCURRENCE",962685235:"IFCANNOTATIONSURFACEOCCURRENCE",2442683028:"IFCANNOTATIONOCCURRENCE",1065908215:"IFCWATERPROPERTIES",891718957:"IFCVIRTUALGRIDINTERSECTION",1907098498:"IFCVERTEXPOINT",3304826586:"IFCVERTEXBASEDTEXTUREMAP",2799835756:"IFCVERTEX",180925521:"IFCUNITASSIGNMENT",1735638870:"IFCTOPOLOGYREPRESENTATION",1377556343:"IFCTOPOLOGICALREPRESENTATIONITEM",581633288:"IFCTIMESERIESVALUE",1718945513:"IFCTIMESERIESREFERENCERELATIONSHIP",3101149627:"IFCTIMESERIES",3317419933:"IFCTHERMALMATERIALPROPERTIES",1210645708:"IFCTEXTUREVERTEX",2552916305:"IFCTEXTUREMAP",1742049831:"IFCTEXTURECOORDINATEGENERATOR",280115917:"IFCTEXTURECOORDINATE",1484833681:"IFCTEXTSTYLEWITHBOXCHARACTERISTICS",1640371178:"IFCTEXTSTYLETEXTMODEL",2636378356:"IFCTEXTSTYLEFORDEFINEDFONT",1983826977:"IFCTEXTSTYLEFONTMODEL",1447204868:"IFCTEXTSTYLE",912023232:"IFCTELECOMADDRESS",531007025:"IFCTABLEROW",985171141:"IFCTABLE",1290481447:"IFCSYMBOLSTYLE",626085974:"IFCSURFACETEXTURE",1351298697:"IFCSURFACESTYLEWITHTEXTURES",846575682:"IFCSURFACESTYLESHADING",1607154358:"IFCSURFACESTYLEREFRACTION",3303107099:"IFCSURFACESTYLELIGHTING",1300840506:"IFCSURFACESTYLE",3049322572:"IFCSTYLEDREPRESENTATION",3958052878:"IFCSTYLEDITEM",2830218821:"IFCSTYLEMODEL",3408363356:"IFCSTRUCTURALLOADTEMPERATURE",2525727697:"IFCSTRUCTURALLOADSTATIC",2162789131:"IFCSTRUCTURALLOAD",2273995522:"IFCSTRUCTURALCONNECTIONCONDITION",3692461612:"IFCSIMPLEPROPERTY",4240577450:"IFCSHAPEREPRESENTATION",3982875396:"IFCSHAPEMODEL",867548509:"IFCSHAPEASPECT",4165799628:"IFCSECTIONREINFORCEMENTPROPERTIES",2042790032:"IFCSECTIONPROPERTIES",448429030:"IFCSIUNIT",2341007311:"IFCROOT",3679540991:"IFCRIBPLATEPROFILEPROPERTIES",1660063152:"IFCREPRESENTATIONMAP",3008791417:"IFCREPRESENTATIONITEM",3377609919:"IFCREPRESENTATIONCONTEXT",1076942058:"IFCREPRESENTATION",1222501353:"IFCRELAXATION",1580146022:"IFCREINFORCEMENTBARPROPERTIES",2692823254:"IFCREFERENCESVALUEDOCUMENT",825690147:"IFCQUANTITYWEIGHT",2405470396:"IFCQUANTITYVOLUME",3252649465:"IFCQUANTITYTIME",931644368:"IFCQUANTITYLENGTH",2093928680:"IFCQUANTITYCOUNT",2044713172:"IFCQUANTITYAREA",3710013099:"IFCPROPERTYENUMERATION",148025276:"IFCPROPERTYDEPENDENCYRELATIONSHIP",3896028662:"IFCPROPERTYCONSTRAINTRELATIONSHIP",2598011224:"IFCPROPERTY",2802850158:"IFCPROFILEPROPERTIES",3958567839:"IFCPROFILEDEF",2267347899:"IFCPRODUCTSOFCOMBUSTIONPROPERTIES",2095639259:"IFCPRODUCTREPRESENTATION",2417041796:"IFCPRESENTATIONSTYLEASSIGNMENT",3119450353:"IFCPRESENTATIONSTYLE",1304840413:"IFCPRESENTATIONLAYERWITHSTYLE",2022622350:"IFCPRESENTATIONLAYERASSIGNMENT",1775413392:"IFCPREDEFINEDTEXTFONT",3213052703:"IFCPREDEFINEDTERMINATORSYMBOL",990879717:"IFCPREDEFINEDSYMBOL",3727388367:"IFCPREDEFINEDITEM",3355820592:"IFCPOSTALADDRESS",2226359599:"IFCPHYSICALSIMPLEQUANTITY",2483315170:"IFCPHYSICALQUANTITY",101040310:"IFCPERSONANDORGANIZATION",2077209135:"IFCPERSON",1207048766:"IFCOWNERHISTORY",1411181986:"IFCORGANIZATIONRELATIONSHIP",4251960020:"IFCORGANIZATION",1227763645:"IFCOPTICALMATERIALPROPERTIES",2251480897:"IFCOBJECTIVE",3701648758:"IFCOBJECTPLACEMENT",1918398963:"IFCNAMEDUNIT",2706619895:"IFCMONETARYUNIT",3368373690:"IFCMETRIC",677618848:"IFCMECHANICALSTEELMATERIALPROPERTIES",4256014907:"IFCMECHANICALMATERIALPROPERTIES",2597039031:"IFCMEASUREWITHUNIT",3265635763:"IFCMATERIALPROPERTIES",2199411900:"IFCMATERIALLIST",1303795690:"IFCMATERIALLAYERSETUSAGE",3303938423:"IFCMATERIALLAYERSET",248100487:"IFCMATERIALLAYER",1847130766:"IFCMATERIALCLASSIFICATIONRELATIONSHIP",1838606355:"IFCMATERIAL",30780891:"IFCLOCALTIME",1566485204:"IFCLIGHTINTENSITYDISTRIBUTION",4162380809:"IFCLIGHTDISTRIBUTIONDATA",3452421091:"IFCLIBRARYREFERENCE",2655187982:"IFCLIBRARYINFORMATION",3020489413:"IFCIRREGULARTIMESERIESVALUE",852622518:"IFCGRIDAXIS",3548104201:"IFCEXTERNALLYDEFINEDTEXTFONT",3207319532:"IFCEXTERNALLYDEFINEDSYMBOL",1040185647:"IFCEXTERNALLYDEFINEDSURFACESTYLE",2242383968:"IFCEXTERNALLYDEFINEDHATCHSTYLE",3200245327:"IFCEXTERNALREFERENCE",1648886627:"IFCENVIRONMENTALIMPACTVALUE",3796139169:"IFCDRAUGHTINGCALLOUTRELATIONSHIP",770865208:"IFCDOCUMENTINFORMATIONRELATIONSHIP",1154170062:"IFCDOCUMENTINFORMATION",1376555844:"IFCDOCUMENTELECTRONICFORMAT",2949456006:"IFCDIMENSIONALEXPONENTS",1045800335:"IFCDERIVEDUNITELEMENT",1765591967:"IFCDERIVEDUNIT",1072939445:"IFCDATEANDTIME",3510044353:"IFCCURVESTYLEFONTPATTERN",2367409068:"IFCCURVESTYLEFONTANDSCALING",1105321065:"IFCCURVESTYLEFONT",539742890:"IFCCURRENCYRELATIONSHIP",602808272:"IFCCOSTVALUE",1065062679:"IFCCOORDINATEDUNIVERSALTIMEOFFSET",347226245:"IFCCONSTRAINTRELATIONSHIP",613356794:"IFCCONSTRAINTCLASSIFICATIONRELATIONSHIP",1658513725:"IFCCONSTRAINTAGGREGATIONRELATIONSHIP",1959218052:"IFCCONSTRAINT",2732653382:"IFCCONNECTIONSURFACEGEOMETRY",4257277454:"IFCCONNECTIONPORTGEOMETRY",2614616156:"IFCCONNECTIONPOINTGEOMETRY",2859738748:"IFCCONNECTIONGEOMETRY",3264961684:"IFCCOLOURSPECIFICATION",3639012971:"IFCCLASSIFICATIONNOTATIONFACET",938368621:"IFCCLASSIFICATIONNOTATION",1098599126:"IFCCLASSIFICATIONITEMRELATIONSHIP",1767535486:"IFCCLASSIFICATIONITEM",747523909:"IFCCLASSIFICATION",622194075:"IFCCALENDARDATE",2069777674:"IFCBOUNDARYNODECONDITIONWARPING",1387855156:"IFCBOUNDARYNODECONDITION",3367102660:"IFCBOUNDARYFACECONDITION",1560379544:"IFCBOUNDARYEDGECONDITION",4037036970:"IFCBOUNDARYCONDITION",3869604511:"IFCAPPROVALRELATIONSHIP",390851274:"IFCAPPROVALPROPERTYRELATIONSHIP",2080292479:"IFCAPPROVALACTORRELATIONSHIP",130549933:"IFCAPPROVAL",1110488051:"IFCAPPLIEDVALUERELATIONSHIP",411424972:"IFCAPPLIEDVALUE",639542469:"IFCAPPLICATION",618182010:"IFCADDRESS",3630933823:"IFCACTORROLE",599546466:"FILE_DESCRIPTION",1390159747:"FILE_NAME",1109904537:"FILE_SCHEMA"};class De{static async getUnits(i){var r,o,a;const{IFCUNITASSIGNMENT:t}=k,e=await i.getAllPropertiesOfType(t);if(!e)return 1;const s=Object.keys(e),n=e[parseInt(s[0],10)];for(const l of n.Units){if(l.value===void 0||l.value===null)continue;const h=await i.getProperties(l.value);if(!h||!h.UnitType||!h.UnitType.value||h.UnitType.value!=="LENGTHUNIT")continue;let I=1,u=1;return h.Name.value==="METRE"&&(u=1),h.Name.value==="FOOT"&&(u=.3048),((r=h.Prefix)==null?void 0:r.value)==="MILLI"?I=.001:((o=h.Prefix)==null?void 0:o.value)==="CENTI"?I=.01:((a=h.Prefix)==null?void 0:a.value)==="DECI"&&(I=.1),u*I}return 1}static async findItemByGuid(i,t){var s;const e=i.getAllPropertiesIDs();for(const n of e){const r=await i.getProperties(n);if(r&&((s=r.GlobalId)==null?void 0:s.value)===t)return r}return null}static async getRelationMap(i,t,e){var a;const n=e??(async()=>{}),r={},o=i.getAllPropertiesIDs();for(const l of o){const h=await i.getProperties(l);if(!h)continue;const f=h.type===t,I=Object.keys(h).find(p=>p.startsWith("Relating")),u=Object.keys(h).find(p=>p.startsWith("Related"));if(!(f&&I&&u))continue;const d=await i.getProperties((a=h[I])==null?void 0:a.value),E=h[u];if(!d||!E||!(E&&Array.isArray(E)))continue;const T=E.map(p=>p.value);await n(d.expressID,T),r[d.expressID]=T}return r}static async getQsetQuantities(i,t,e){const n=e??(()=>{}),r=await i.getProperties(t);return!r||r.type!==k.IFCELEMENTQUANTITY?null:(r.Quantities??[{}]).map(l=>(l.value&&n(l.value),l.value)).filter(l=>l!==null)}static async getPsetProps(i,t,e){const n=e??(()=>{}),r=await i.getProperties(t);return!r||r.type!==k.IFCPROPERTYSET?null:(r.HasProperties??[{}]).map(l=>(l.value&&n(l.value),l.value)).filter(l=>l!==null)}static async getPsetRel(i,t){var o;if(!await i.getProperties(t))return null;const s=await i.getAllPropertiesOfType(k.IFCRELDEFINESBYPROPERTIES);if(!s)return null;const n=Object.values(s);let r=null;for(const a of n)((o=a.RelatingPropertyDefinition)==null?void 0:o.value)===t&&(r=a.expressID);return r}static async getQsetRel(i,t){return De.getPsetRel(i,t)}static async getEntityName(i,t){var r;const e=await i.getProperties(t);if(!e)return{key:null,name:null};const s=Object.keys(e).find(o=>o.endsWith("Name"))??null,n=s?(r=e[s])==null?void 0:r.value:null;return{key:s,name:n}}static async getQuantityValue(i,t){const e=await i.getProperties(t);if(!e)return{key:null,value:null};const s=Object.keys(e).find(r=>r.endsWith("Value"))??null;let n;return s===null||e[s]===void 0||e[s]===null?n=null:n=e[s].value,{key:s,value:n}}static isRel(i){return Pi[i].startsWith("IFCREL")}static async attributeExists(i,t,e){const s=await i.getProperties(t);return s?Object.keys(s).includes(e):!1}static async groupEntitiesByType(i,t){var s;const e=new Map;for(const n of t){const r=await i.getProperties(n);if(!r)continue;const o=r.type;e.get(o)||e.set(o,new Set),(s=e.get(o))==null||s.add(n)}return e}}const ao={IFCURIREFERENCE:"IfcUriReference",IFCTIME:"IfcTime",IFCTEMPERATURERATEOFCHANGEMEASURE:"IfcTemperatureRateOfChangeMeasure",IFCSOUNDPRESSURELEVELMEASURE:"IfcSoundPressureLevelMeasure",IFCSOUNDPOWERLEVELMEASURE:"IfcSoundPowerLevelMeasure",IFCPROPERTYSETDEFINITIONSET:"IfcPropertySetDefinitionSet",IFCPOSITIVEINTEGER:"IfcPositiveInteger",IFCNONNEGATIVELENGTHMEASURE:"IfcNonNegativeLengthMeasure",IFCLINEINDEX:"IfcLineIndex",IFCLANGUAGEID:"IfcLanguageId",IFCDURATION:"IfcDuration",IFCDAYINWEEKNUMBER:"IfcDayInWeekNumber",IFCDATETIME:"IfcDateTime",IFCDATE:"IfcDate",IFCCARDINALPOINTREFERENCE:"IfcCardinalPointReference",IFCBINARY:"IfcBinary",IFCAREADENSITYMEASURE:"IfcAreaDensityMeasure",IFCARCINDEX:"IfcArcIndex",IFCYEARNUMBER:"IfcYearNumber",IFCWARPINGMOMENTMEASURE:"IfcWarpingMomentMeasure",IFCWARPINGCONSTANTMEASURE:"IfcWarpingConstantMeasure",IFCVOLUMETRICFLOWRATEMEASURE:"IfcVolumetricFlowRateMeasure",IFCVOLUMEMEASURE:"IfcVolumeMeasure",IFCVAPORPERMEABILITYMEASURE:"IfcVaporPermeabilityMeasure",IFCTORQUEMEASURE:"IfcTorqueMeasure",IFCTIMESTAMP:"IfcTimestamp",IFCTIMEMEASURE:"IfcTimeMeasure",IFCTHERMODYNAMICTEMPERATUREMEASURE:"IfcThermodynamicTemperatureMeasure",IFCTHERMALTRANSMITTANCEMEASURE:"IfcThermalTransmittanceMeasure",IFCTHERMALRESISTANCEMEASURE:"IfcThermalResistanceMeasure",IFCTHERMALEXPANSIONCOEFFICIENTMEASURE:"IfcThermalExpansionCoefficientMeasure",IFCTHERMALCONDUCTIVITYMEASURE:"IfcThermalConductivityMeasure",IFCTHERMALADMITTANCEMEASURE:"IfcThermalAdmittanceMeasure",IFCTEXTTRANSFORMATION:"IfcTextTransformation",IFCTEXTFONTNAME:"IfcTextFontName",IFCTEXTDECORATION:"IfcTextDecoration",IFCTEXTALIGNMENT:"IfcTextAlignment",IFCTEXT:"IfcText",IFCTEMPERATUREGRADIENTMEASURE:"IfcTemperatureGradientMeasure",IFCSPECULARROUGHNESS:"IfcSpecularRoughness",IFCSPECULAREXPONENT:"IfcSpecularExponent",IFCSPECIFICHEATCAPACITYMEASURE:"IfcSpecificHeatCapacityMeasure",IFCSOUNDPRESSUREMEASURE:"IfcSoundPressureMeasure",IFCSOUNDPOWERMEASURE:"IfcSoundPowerMeasure",IFCSOLIDANGLEMEASURE:"IfcSolidAngleMeasure",IFCSHEARMODULUSMEASURE:"IfcShearModulusMeasure",IFCSECTIONALAREAINTEGRALMEASURE:"IfcSectionalAreaIntegralMeasure",IFCSECTIONMODULUSMEASURE:"IfcSectionModulusMeasure",IFCSECONDINMINUTE:"IfcSecondInMinute",IFCROTATIONALSTIFFNESSMEASURE:"IfcRotationalStiffnessMeasure",IFCROTATIONALMASSMEASURE:"IfcRotationalMassMeasure",IFCROTATIONALFREQUENCYMEASURE:"IfcRotationalFrequencyMeasure",IFCREAL:"IfcReal",IFCRATIOMEASURE:"IfcRatioMeasure",IFCRADIOACTIVITYMEASURE:"IfcRadioactivityMeasure",IFCPRESSUREMEASURE:"IfcPressureMeasure",IFCPRESENTABLETEXT:"IfcPresentableText",IFCPOWERMEASURE:"IfcPowerMeasure",IFCPOSITIVERATIOMEASURE:"IfcPositiveRatioMeasure",IFCPOSITIVEPLANEANGLEMEASURE:"IfcPositivePlaneAngleMeasure",IFCPOSITIVELENGTHMEASURE:"IfcPositiveLengthMeasure",IFCPLANEANGLEMEASURE:"IfcPlaneAngleMeasure",IFCPLANARFORCEMEASURE:"IfcPlanarForceMeasure",IFCPARAMETERVALUE:"IfcParameterValue",IFCPHMEASURE:"IfcPhMeasure",IFCNUMERICMEASURE:"IfcNumericMeasure",IFCNORMALISEDRATIOMEASURE:"IfcNormalisedRatioMeasure",IFCMONTHINYEARNUMBER:"IfcMonthInYearNumber",IFCMONETARYMEASURE:"IfcMonetaryMeasure",IFCMOMENTOFINERTIAMEASURE:"IfcMomentOfInertiaMeasure",IFCMOLECULARWEIGHTMEASURE:"IfcMolecularWeightMeasure",IFCMOISTUREDIFFUSIVITYMEASURE:"IfcMoistureDiffusivityMeasure",IFCMODULUSOFSUBGRADEREACTIONMEASURE:"IfcModulusOfSubgradeReactionMeasure",IFCMODULUSOFROTATIONALSUBGRADEREACTIONMEASURE:"IfcModulusOfRotationalSubgradeReactionMeasure",IFCMODULUSOFLINEARSUBGRADEREACTIONMEASURE:"IfcModulusOfLinearSubgradeReactionMeasure",IFCMODULUSOFELASTICITYMEASURE:"IfcModulusOfElasticityMeasure",IFCMINUTEINHOUR:"IfcMinuteInHour",IFCMASSPERLENGTHMEASURE:"IfcMassPerLengthMeasure",IFCMASSMEASURE:"IfcMassMeasure",IFCMASSFLOWRATEMEASURE:"IfcMassFlowRateMeasure",IFCMASSDENSITYMEASURE:"IfcMassDensityMeasure",IFCMAGNETICFLUXMEASURE:"IfcMagneticFluxMeasure",IFCMAGNETICFLUXDENSITYMEASURE:"IfcMagneticFluxDensityMeasure",IFCLUMINOUSINTENSITYMEASURE:"IfcLuminousIntensityMeasure",IFCLUMINOUSINTENSITYDISTRIBUTIONMEASURE:"IfcLuminousIntensityDistributionMeasure",IFCLUMINOUSFLUXMEASURE:"IfcLuminousFluxMeasure",IFCLOGICAL:"IfcLogical",IFCLINEARVELOCITYMEASURE:"IfcLinearVelocityMeasure",IFCLINEARSTIFFNESSMEASURE:"IfcLinearStiffnessMeasure",IFCLINEARMOMENTMEASURE:"IfcLinearMomentMeasure",IFCLINEARFORCEMEASURE:"IfcLinearForceMeasure",IFCLENGTHMEASURE:"IfcLengthMeasure",IFCLABEL:"IfcLabel",IFCKINEMATICVISCOSITYMEASURE:"IfcKinematicViscosityMeasure",IFCISOTHERMALMOISTURECAPACITYMEASURE:"IfcIsothermalMoistureCapacityMeasure",IFCIONCONCENTRATIONMEASURE:"IfcIonConcentrationMeasure",IFCINTEGERCOUNTRATEMEASURE:"IfcIntegerCountRateMeasure",IFCINTEGER:"IfcInteger",IFCINDUCTANCEMEASURE:"IfcInductanceMeasure",IFCILLUMINANCEMEASURE:"IfcIlluminanceMeasure",IFCIDENTIFIER:"IfcIdentifier",IFCHOURINDAY:"IfcHourInDay",IFCHEATINGVALUEMEASURE:"IfcHeatingValueMeasure",IFCHEATFLUXDENSITYMEASURE:"IfcHeatFluxDensityMeasure",IFCGLOBALLYUNIQUEID:"IfcGloballyUniqueId",IFCFREQUENCYMEASURE:"IfcFrequencyMeasure",IFCFORCEMEASURE:"IfcForceMeasure",IFCFONTWEIGHT:"IfcFontWeight",IFCFONTVARIANT:"IfcFontVariant",IFCFONTSTYLE:"IfcFontStyle",IFCENERGYMEASURE:"IfcEnergyMeasure",IFCELECTRICVOLTAGEMEASURE:"IfcElectricVoltageMeasure",IFCELECTRICRESISTANCEMEASURE:"IfcElectricResistanceMeasure",IFCELECTRICCURRENTMEASURE:"IfcElectricCurrentMeasure",IFCELECTRICCONDUCTANCEMEASURE:"IfcElectricConductanceMeasure",IFCELECTRICCHARGEMEASURE:"IfcElectricChargeMeasure",IFCELECTRICCAPACITANCEMEASURE:"IfcElectricCapacitanceMeasure",IFCDYNAMICVISCOSITYMEASURE:"IfcDynamicViscosityMeasure",IFCDOSEEQUIVALENTMEASURE:"IfcDoseEquivalentMeasure",IFCDIMENSIONCOUNT:"IfcDimensionCount",IFCDESCRIPTIVEMEASURE:"IfcDescriptiveMeasure",IFCDAYLIGHTSAVINGHOUR:"IfcDaylightSavingHour",IFCDAYINMONTHNUMBER:"IfcDayInMonthNumber",IFCCURVATUREMEASURE:"IfcCurvatureMeasure",IFCCOUNTMEASURE:"IfcCountMeasure",IFCCONTEXTDEPENDENTMEASURE:"IfcContextDependentMeasure",IFCCOMPOUNDPLANEANGLEMEASURE:"IfcCompoundPlaneAngleMeasure",IFCCOMPLEXNUMBER:"IfcComplexNumber",IFCBOXALIGNMENT:"IfcBoxAlignment",IFCBOOLEAN:"IfcBoolean",IFCAREAMEASURE:"IfcAreaMeasure",IFCANGULARVELOCITYMEASURE:"IfcAngularVelocityMeasure",IFCAMOUNTOFSUBSTANCEMEASURE:"IfcAmountOfSubstanceMeasure",IFCACCELERATIONMEASURE:"IfcAccelerationMeasure",IFCABSORBEDDOSEMEASURE:"IfcAbsorbedDoseMeasure",IFCGEOSLICE:"IfcGeoSlice",IFCGEOMODEL:"IfcGeoModel",IFCELECTRICFLOWTREATMENTDEVICE:"IfcElectricFlowTreatmentDevice",IFCDISTRIBUTIONBOARD:"IfcDistributionBoard",IFCCONVEYORSEGMENT:"IfcConveyorSegment",IFCCAISSONFOUNDATION:"IfcCaissonFoundation",IFCBOREHOLE:"IfcBorehole",IFCBEARING:"IfcBearing",IFCALIGNMENT:"IfcAlignment",IFCTRACKELEMENT:"IfcTrackElement",IFCSIGNAL:"IfcSignal",IFCREINFORCEDSOIL:"IfcReinforcedSoil",IFCRAIL:"IfcRail",IFCPAVEMENT:"IfcPavement",IFCNAVIGATIONELEMENT:"IfcNavigationElement",IFCMOORINGDEVICE:"IfcMooringDevice",IFCMOBILETELECOMMUNICATIONSAPPLIANCE:"IfcMobileTelecommunicationsAppliance",IFCLIQUIDTERMINAL:"IfcLiquidTerminal",IFCLINEARPOSITIONINGELEMENT:"IfcLinearPositioningElement",IFCKERB:"IfcKerb",IFCGEOTECHNICALASSEMBLY:"IfcGeotechnicalAssembly",IFCELECTRICFLOWTREATMENTDEVICETYPE:"IfcElectricFlowTreatmentDeviceType",IFCEARTHWORKSFILL:"IfcEarthworksFill",IFCEARTHWORKSELEMENT:"IfcEarthworksElement",IFCEARTHWORKSCUT:"IfcEarthworksCut",IFCDISTRIBUTIONBOARDTYPE:"IfcDistributionBoardType",IFCDEEPFOUNDATION:"IfcDeepFoundation",IFCCOURSE:"IfcCourse",IFCCONVEYORSEGMENTTYPE:"IfcConveyorSegmentType",IFCCAISSONFOUNDATIONTYPE:"IfcCaissonFoundationType",IFCBUILTSYSTEM:"IfcBuiltSystem",IFCBUILTELEMENT:"IfcBuiltElement",IFCBRIDGEPART:"IfcBridgePart",IFCBRIDGE:"IfcBridge",IFCBEARINGTYPE:"IfcBearingType",IFCALIGNMENTVERTICAL:"IfcAlignmentVertical",IFCALIGNMENTSEGMENT:"IfcAlignmentSegment",IFCALIGNMENTHORIZONTAL:"IfcAlignmentHorizontal",IFCALIGNMENTCANT:"IfcAlignmentCant",IFCVIBRATIONDAMPERTYPE:"IfcVibrationDamperType",IFCVIBRATIONDAMPER:"IfcVibrationDamper",IFCVEHICLE:"IfcVehicle",IFCTRANSPORTATIONDEVICE:"IfcTransportationDevice",IFCTRACKELEMENTTYPE:"IfcTrackElementType",IFCTENDONCONDUITTYPE:"IfcTendonConduitType",IFCTENDONCONDUIT:"IfcTendonConduit",IFCSINESPIRAL:"IfcSineSpiral",IFCSIGNALTYPE:"IfcSignalType",IFCSIGNTYPE:"IfcSignType",IFCSIGN:"IfcSign",IFCSEVENTHORDERPOLYNOMIALSPIRAL:"IfcSeventhOrderPolynomialSpiral",IFCSEGMENTEDREFERENCECURVE:"IfcSegmentedReferenceCurve",IFCSECONDORDERPOLYNOMIALSPIRAL:"IfcSecondOrderPolynomialSpiral",IFCROADPART:"IfcRoadPart",IFCROAD:"IfcRoad",IFCRELADHERESTOELEMENT:"IfcRelAdheresToElement",IFCREFERENT:"IfcReferent",IFCRAILWAYPART:"IfcRailwayPart",IFCRAILWAY:"IfcRailway",IFCRAILTYPE:"IfcRailType",IFCPOSITIONINGELEMENT:"IfcPositioningElement",IFCPAVEMENTTYPE:"IfcPavementType",IFCNAVIGATIONELEMENTTYPE:"IfcNavigationElementType",IFCMOORINGDEVICETYPE:"IfcMooringDeviceType",IFCMOBILETELECOMMUNICATIONSAPPLIANCETYPE:"IfcMobileTelecommunicationsApplianceType",IFCMARINEPART:"IfcMarinePart",IFCMARINEFACILITY:"IfcMarineFacility",IFCLIQUIDTERMINALTYPE:"IfcLiquidTerminalType",IFCLINEARELEMENT:"IfcLinearElement",IFCKERBTYPE:"IfcKerbType",IFCIMPACTPROTECTIONDEVICETYPE:"IfcImpactProtectionDeviceType",IFCIMPACTPROTECTIONDEVICE:"IfcImpactProtectionDevice",IFCGRADIENTCURVE:"IfcGradientCurve",IFCGEOTECHNICALSTRATUM:"IfcGeotechnicalStratum",IFCGEOTECHNICALELEMENT:"IfcGeotechnicalElement",IFCFACILITYPARTCOMMON:"IfcFacilityPartCommon",IFCFACILITYPART:"IfcFacilityPart",IFCFACILITY:"IfcFacility",IFCDIRECTRIXDERIVEDREFERENCESWEPTAREASOLID:"IfcDirectrixDerivedReferenceSweptAreaSolid",IFCDEEPFOUNDATIONTYPE:"IfcDeepFoundationType",IFCCOURSETYPE:"IfcCourseType",IFCCOSINESPIRAL:"IfcCosineSpiral",IFCCLOTHOID:"IfcClothoid",IFCBUILTELEMENTTYPE:"IfcBuiltElementType",IFCVEHICLETYPE:"IfcVehicleType",IFCTRIANGULATEDIRREGULARNETWORK:"IfcTriangulatedIrregularNetwork",IFCTRANSPORTATIONDEVICETYPE:"IfcTransportationDeviceType",IFCTHIRDORDERPOLYNOMIALSPIRAL:"IfcThirdOrderPolynomialSpiral",IFCSPIRAL:"IfcSpiral",IFCSECTIONEDSURFACE:"IfcSectionedSurface",IFCSECTIONEDSOLIDHORIZONTAL:"IfcSectionedSolidHorizontal",IFCSECTIONEDSOLID:"IfcSectionedSolid",IFCRELPOSITIONS:"IfcRelPositions",IFCRELASSOCIATESPROFILEDEF:"IfcRelAssociatesProfileDef",IFCPOLYNOMIALCURVE:"IfcPolynomialCurve",IFCOFFSETCURVEBYDISTANCES:"IfcOffsetCurveByDistances",IFCOFFSETCURVE:"IfcOffsetCurve",IFCINDEXEDPOLYGONALTEXTUREMAP:"IfcIndexedPolygonalTextureMap",IFCDIRECTRIXCURVESWEPTAREASOLID:"IfcDirectrixCurveSweptAreaSolid",IFCCURVESEGMENT:"IfcCurveSegment",IFCAXIS2PLACEMENTLINEAR:"IfcAxis2PlacementLinear",IFCSEGMENT:"IfcSegment",IFCPOINTBYDISTANCEEXPRESSION:"IfcPointByDistanceExpression",IFCOPENCROSSPROFILEDEF:"IfcOpenCrossProfileDef",IFCLINEARPLACEMENT:"IfcLinearPlacement",IFCALIGNMENTHORIZONTALSEGMENT:"IfcAlignmentHorizontalSegment",IFCALIGNMENTCANTSEGMENT:"IfcAlignmentCantSegment",IFCTEXTURECOORDINATEINDICESWITHVOIDS:"IfcTextureCoordinateIndicesWithVoids",IFCTEXTURECOORDINATEINDICES:"IfcTextureCoordinateIndices",IFCQUANTITYNUMBER:"IfcQuantityNumber",IFCALIGNMENTVERTICALSEGMENT:"IfcAlignmentVerticalSegment",IFCALIGNMENTPARAMETERSEGMENT:"IfcAlignmentParameterSegment",IFCCONTROLLER:"IfcController",IFCALARM:"IfcAlarm",IFCACTUATOR:"IfcActuator",IFCUNITARYCONTROLELEMENT:"IfcUnitaryControlElement",IFCSENSOR:"IfcSensor",IFCPROTECTIVEDEVICETRIPPINGUNIT:"IfcProtectiveDeviceTrippingUnit",IFCFLOWINSTRUMENT:"IfcFlowInstrument",IFCFIRESUPPRESSIONTERMINAL:"IfcFireSuppressionTerminal",IFCFILTER:"IfcFilter",IFCFAN:"IfcFan",IFCELECTRICTIMECONTROL:"IfcElectricTimeControl",IFCELECTRICMOTOR:"IfcElectricMotor",IFCELECTRICGENERATOR:"IfcElectricGenerator",IFCELECTRICFLOWSTORAGEDEVICE:"IfcElectricFlowStorageDevice",IFCELECTRICDISTRIBUTIONBOARD:"IfcElectricDistributionBoard",IFCELECTRICAPPLIANCE:"IfcElectricAppliance",IFCDUCTSILENCER:"IfcDuctSilencer",IFCDUCTSEGMENT:"IfcDuctSegment",IFCDUCTFITTING:"IfcDuctFitting",IFCDISTRIBUTIONCIRCUIT:"IfcDistributionCircuit",IFCDAMPER:"IfcDamper",IFCCOOLINGTOWER:"IfcCoolingTower",IFCCOOLEDBEAM:"IfcCooledBeam",IFCCONDENSER:"IfcCondenser",IFCCOMPRESSOR:"IfcCompressor",IFCCOMMUNICATIONSAPPLIANCE:"IfcCommunicationsAppliance",IFCCOIL:"IfcCoil",IFCCHILLER:"IfcChiller",IFCCABLESEGMENT:"IfcCableSegment",IFCCABLEFITTING:"IfcCableFitting",IFCCABLECARRIERSEGMENT:"IfcCableCarrierSegment",IFCCABLECARRIERFITTING:"IfcCableCarrierFitting",IFCBURNER:"IfcBurner",IFCBOILER:"IfcBoiler",IFCBEAMSTANDARDCASE:"IfcBeamStandardCase",IFCAUDIOVISUALAPPLIANCE:"IfcAudioVisualAppliance",IFCAIRTOAIRHEATRECOVERY:"IfcAirToAirHeatRecovery",IFCAIRTERMINALBOX:"IfcAirTerminalBox",IFCAIRTERMINAL:"IfcAirTerminal",IFCWINDOWSTANDARDCASE:"IfcWindowStandardCase",IFCWASTETERMINAL:"IfcWasteTerminal",IFCWALLELEMENTEDCASE:"IfcWallElementedCase",IFCVALVE:"IfcValve",IFCUNITARYEQUIPMENT:"IfcUnitaryEquipment",IFCUNITARYCONTROLELEMENTTYPE:"IfcUnitaryControlElementType",IFCTUBEBUNDLE:"IfcTubeBundle",IFCTRANSFORMER:"IfcTransformer",IFCTANK:"IfcTank",IFCSWITCHINGDEVICE:"IfcSwitchingDevice",IFCSTRUCTURALLOADCASE:"IfcStructuralLoadCase",IFCSTACKTERMINAL:"IfcStackTerminal",IFCSPACEHEATER:"IfcSpaceHeater",IFCSOLARDEVICE:"IfcSolarDevice",IFCSLABSTANDARDCASE:"IfcSlabStandardCase",IFCSLABELEMENTEDCASE:"IfcSlabElementedCase",IFCSHADINGDEVICE:"IfcShadingDevice",IFCSANITARYTERMINAL:"IfcSanitaryTerminal",IFCREINFORCINGBARTYPE:"IfcReinforcingBarType",IFCRATIONALBSPLINECURVEWITHKNOTS:"IfcRationalBSplineCurveWithKnots",IFCPUMP:"IfcPump",IFCPROTECTIVEDEVICETRIPPINGUNITTYPE:"IfcProtectiveDeviceTrippingUnitType",IFCPROTECTIVEDEVICE:"IfcProtectiveDevice",IFCPLATESTANDARDCASE:"IfcPlateStandardCase",IFCPIPESEGMENT:"IfcPipeSegment",IFCPIPEFITTING:"IfcPipeFitting",IFCOUTLET:"IfcOutlet",IFCOUTERBOUNDARYCURVE:"IfcOuterBoundaryCurve",IFCMOTORCONNECTION:"IfcMotorConnection",IFCMEMBERSTANDARDCASE:"IfcMemberStandardCase",IFCMEDICALDEVICE:"IfcMedicalDevice",IFCLIGHTFIXTURE:"IfcLightFixture",IFCLAMP:"IfcLamp",IFCJUNCTIONBOX:"IfcJunctionBox",IFCINTERCEPTOR:"IfcInterceptor",IFCHUMIDIFIER:"IfcHumidifier",IFCHEATEXCHANGER:"IfcHeatExchanger",IFCFLOWMETER:"IfcFlowMeter",IFCEXTERNALSPATIALELEMENT:"IfcExternalSpatialElement",IFCEVAPORATOR:"IfcEvaporator",IFCEVAPORATIVECOOLER:"IfcEvaporativeCooler",IFCENGINE:"IfcEngine",IFCELECTRICDISTRIBUTIONBOARDTYPE:"IfcElectricDistributionBoardType",IFCDOORSTANDARDCASE:"IfcDoorStandardCase",IFCDISTRIBUTIONSYSTEM:"IfcDistributionSystem",IFCCOMMUNICATIONSAPPLIANCETYPE:"IfcCommunicationsApplianceType",IFCCOLUMNSTANDARDCASE:"IfcColumnStandardCase",IFCCIVILELEMENT:"IfcCivilElement",IFCCHIMNEY:"IfcChimney",IFCCABLEFITTINGTYPE:"IfcCableFittingType",IFCBURNERTYPE:"IfcBurnerType",IFCBUILDINGSYSTEM:"IfcBuildingSystem",IFCBUILDINGELEMENTPARTTYPE:"IfcBuildingElementPartType",IFCBOUNDARYCURVE:"IfcBoundaryCurve",IFCBSPLINECURVEWITHKNOTS:"IfcBSplineCurveWithKnots",IFCAUDIOVISUALAPPLIANCETYPE:"IfcAudioVisualApplianceType",IFCWORKCALENDAR:"IfcWorkCalendar",IFCWINDOWTYPE:"IfcWindowType",IFCVOIDINGFEATURE:"IfcVoidingFeature",IFCVIBRATIONISOLATOR:"IfcVibrationIsolator",IFCTENDONTYPE:"IfcTendonType",IFCTENDONANCHORTYPE:"IfcTendonAnchorType",IFCSYSTEMFURNITUREELEMENT:"IfcSystemFurnitureElement",IFCSURFACEFEATURE:"IfcSurfaceFeature",IFCSTRUCTURALSURFACEACTION:"IfcStructuralSurfaceAction",IFCSTRUCTURALCURVEREACTION:"IfcStructuralCurveReaction",IFCSTRUCTURALCURVEACTION:"IfcStructuralCurveAction",IFCSTAIRTYPE:"IfcStairType",IFCSOLARDEVICETYPE:"IfcSolarDeviceType",IFCSHADINGDEVICETYPE:"IfcShadingDeviceType",IFCSEAMCURVE:"IfcSeamCurve",IFCROOFTYPE:"IfcRoofType",IFCREINFORCINGMESHTYPE:"IfcReinforcingMeshType",IFCREINFORCINGELEMENTTYPE:"IfcReinforcingElementType",IFCRATIONALBSPLINESURFACEWITHKNOTS:"IfcRationalBSplineSurfaceWithKnots",IFCRAMPTYPE:"IfcRampType",IFCPOLYGONALFACESET:"IfcPolygonalFaceSet",IFCPILETYPE:"IfcPileType",IFCOPENINGSTANDARDCASE:"IfcOpeningStandardCase",IFCMEDICALDEVICETYPE:"IfcMedicalDeviceType",IFCINTERSECTIONCURVE:"IfcIntersectionCurve",IFCINTERCEPTORTYPE:"IfcInterceptorType",IFCINDEXEDPOLYCURVE:"IfcIndexedPolyCurve",IFCGEOGRAPHICELEMENT:"IfcGeographicElement",IFCFURNITURE:"IfcFurniture",IFCFOOTINGTYPE:"IfcFootingType",IFCEXTERNALSPATIALSTRUCTUREELEMENT:"IfcExternalSpatialStructureElement",IFCEVENT:"IfcEvent",IFCENGINETYPE:"IfcEngineType",IFCELEMENTASSEMBLYTYPE:"IfcElementAssemblyType",IFCDOORTYPE:"IfcDoorType",IFCCYLINDRICALSURFACE:"IfcCylindricalSurface",IFCCONSTRUCTIONPRODUCTRESOURCETYPE:"IfcConstructionProductResourceType",IFCCONSTRUCTIONMATERIALRESOURCETYPE:"IfcConstructionMaterialResourceType",IFCCONSTRUCTIONEQUIPMENTRESOURCETYPE:"IfcConstructionEquipmentResourceType",IFCCOMPOSITECURVEONSURFACE:"IfcCompositeCurveOnSurface",IFCCOMPLEXPROPERTYTEMPLATE:"IfcComplexPropertyTemplate",IFCCIVILELEMENTTYPE:"IfcCivilElementType",IFCCHIMNEYTYPE:"IfcChimneyType",IFCBSPLINESURFACEWITHKNOTS:"IfcBSplineSurfaceWithKnots",IFCBSPLINESURFACE:"IfcBSplineSurface",IFCADVANCEDBREPWITHVOIDS:"IfcAdvancedBrepWithVoids",IFCADVANCEDBREP:"IfcAdvancedBrep",IFCTRIANGULATEDFACESET:"IfcTriangulatedFaceSet",IFCTOROIDALSURFACE:"IfcToroidalSurface",IFCTESSELLATEDFACESET:"IfcTessellatedFaceSet",IFCTASKTYPE:"IfcTaskType",IFCSURFACECURVE:"IfcSurfaceCurve",IFCSUBCONTRACTRESOURCETYPE:"IfcSubContractResourceType",IFCSTRUCTURALSURFACEREACTION:"IfcStructuralSurfaceReaction",IFCSPHERICALSURFACE:"IfcSphericalSurface",IFCSPATIALZONETYPE:"IfcSpatialZoneType",IFCSPATIALZONE:"IfcSpatialZone",IFCSPATIALELEMENTTYPE:"IfcSpatialElementType",IFCSPATIALELEMENT:"IfcSpatialElement",IFCSIMPLEPROPERTYTEMPLATE:"IfcSimplePropertyTemplate",IFCREVOLVEDAREASOLIDTAPERED:"IfcRevolvedAreaSolidTapered",IFCREPARAMETRISEDCOMPOSITECURVESEGMENT:"IfcReparametrisedCompositeCurveSegment",IFCRELSPACEBOUNDARY2NDLEVEL:"IfcRelSpaceBoundary2ndLevel",IFCRELSPACEBOUNDARY1STLEVEL:"IfcRelSpaceBoundary1stLevel",IFCRELINTERFERESELEMENTS:"IfcRelInterferesElements",IFCRELDEFINESBYTEMPLATE:"IfcRelDefinesByTemplate",IFCRELDEFINESBYOBJECT:"IfcRelDefinesByObject",IFCRELDECLARES:"IfcRelDeclares",IFCRELASSIGNSTOGROUPBYFACTOR:"IfcRelAssignsToGroupByFactor",IFCPROPERTYTEMPLATE:"IfcPropertyTemplate",IFCPROPERTYSETTEMPLATE:"IfcPropertySetTemplate",IFCPROJECTLIBRARY:"IfcProjectLibrary",IFCPROCEDURETYPE:"IfcProcedureType",IFCPREDEFINEDPROPERTYSET:"IfcPredefinedPropertySet",IFCPCURVE:"IfcPCurve",IFCLABORRESOURCETYPE:"IfcLaborResourceType",IFCINDEXEDPOLYGONALFACEWITHVOIDS:"IfcIndexedPolygonalFaceWithVoids",IFCINDEXEDPOLYGONALFACE:"IfcIndexedPolygonalFace",IFCGEOGRAPHICELEMENTTYPE:"IfcGeographicElementType",IFCFIXEDREFERENCESWEPTAREASOLID:"IfcFixedReferenceSweptAreaSolid",IFCEXTRUDEDAREASOLIDTAPERED:"IfcExtrudedAreaSolidTapered",IFCEVENTTYPE:"IfcEventType",IFCCURVEBOUNDEDSURFACE:"IfcCurveBoundedSurface",IFCCREWRESOURCETYPE:"IfcCrewResourceType",IFCCONTEXT:"IfcContext",IFCCONSTRUCTIONRESOURCETYPE:"IfcConstructionResourceType",IFCCARTESIANPOINTLIST3D:"IfcCartesianPointList3D",IFCCARTESIANPOINTLIST2D:"IfcCartesianPointList2D",IFCCARTESIANPOINTLIST:"IfcCartesianPointList",IFCADVANCEDFACE:"IfcAdvancedFace",IFCTYPERESOURCE:"IfcTypeResource",IFCTYPEPROCESS:"IfcTypeProcess",IFCTESSELLATEDITEM:"IfcTessellatedItem",IFCSWEPTDISKSOLIDPOLYGONAL:"IfcSweptDiskSolidPolygonal",IFCRESOURCETIME:"IfcResourceTime",IFCRESOURCECONSTRAINTRELATIONSHIP:"IfcResourceConstraintRelationship",IFCRESOURCEAPPROVALRELATIONSHIP:"IfcResourceApprovalRelationship",IFCQUANTITYSET:"IfcQuantitySet",IFCPROPERTYTEMPLATEDEFINITION:"IfcPropertyTemplateDefinition",IFCPREDEFINEDPROPERTIES:"IfcPredefinedProperties",IFCMIRROREDPROFILEDEF:"IfcMirroredProfileDef",IFCMATERIALRELATIONSHIP:"IfcMaterialRelationship",IFCMATERIALPROFILESETUSAGETAPERING:"IfcMaterialProfileSetUsageTapering",IFCMATERIALPROFILESETUSAGE:"IfcMaterialProfileSetUsage",IFCMATERIALCONSTITUENTSET:"IfcMaterialConstituentSet",IFCMATERIALCONSTITUENT:"IfcMaterialConstituent",IFCLAGTIME:"IfcLagTime",IFCINDEXEDTRIANGLETEXTUREMAP:"IfcIndexedTriangleTextureMap",IFCINDEXEDTEXTUREMAP:"IfcIndexedTextureMap",IFCINDEXEDCOLOURMAP:"IfcIndexedColourMap",IFCEXTERNALREFERENCERELATIONSHIP:"IfcExternalReferenceRelationship",IFCEXTENDEDPROPERTIES:"IfcExtendedProperties",IFCEVENTTIME:"IfcEventTime",IFCCONVERSIONBASEDUNITWITHOFFSET:"IfcConversionBasedUnitWithOffset",IFCCOLOURRGBLIST:"IfcColourRgbList",IFCWORKTIME:"IfcWorkTime",IFCTIMEPERIOD:"IfcTimePeriod",IFCTEXTUREVERTEXLIST:"IfcTextureVertexList",IFCTASKTIMERECURRING:"IfcTaskTimeRecurring",IFCTASKTIME:"IfcTaskTime",IFCTABLECOLUMN:"IfcTableColumn",IFCSURFACEREINFORCEMENTAREA:"IfcSurfaceReinforcementArea",IFCSTRUCTURALLOADORRESULT:"IfcStructuralLoadOrResult",IFCSTRUCTURALLOADCONFIGURATION:"IfcStructuralLoadConfiguration",IFCSCHEDULINGTIME:"IfcSchedulingTime",IFCRESOURCELEVELRELATIONSHIP:"IfcResourceLevelRelationship",IFCREFERENCE:"IfcReference",IFCRECURRENCEPATTERN:"IfcRecurrencePattern",IFCPROPERTYABSTRACTION:"IfcPropertyAbstraction",IFCPROJECTEDCRS:"IfcProjectedCrs",IFCPRESENTATIONITEM:"IfcPresentationItem",IFCMATERIALUSAGEDEFINITION:"IfcMaterialUsageDefinition",IFCMATERIALPROFILEWITHOFFSETS:"IfcMaterialProfileWithOffsets",IFCMATERIALPROFILESET:"IfcMaterialProfileSet",IFCMATERIALPROFILE:"IfcMaterialProfile",IFCMATERIALLAYERWITHOFFSETS:"IfcMaterialLayerWithOffsets",IFCMATERIALDEFINITION:"IfcMaterialDefinition",IFCMAPCONVERSION:"IfcMapConversion",IFCEXTERNALINFORMATION:"IfcExternalInformation",IFCCOORDINATEREFERENCESYSTEM:"IfcCoordinateReferenceSystem",IFCCOORDINATEOPERATION:"IfcCoordinateOperation",IFCCONNECTIONVOLUMEGEOMETRY:"IfcConnectionVolumeGeometry",IFCREINFORCINGBAR:"IfcReinforcingBar",IFCELECTRICDISTRIBUTIONPOINT:"IfcElectricDistributionPoint",IFCDISTRIBUTIONCONTROLELEMENT:"IfcDistributionControlElement",IFCDISTRIBUTIONCHAMBERELEMENT:"IfcDistributionChamberElement",IFCCONTROLLERTYPE:"IfcControllerType",IFCCHAMFEREDGEFEATURE:"IfcChamferEdgeFeature",IFCBEAM:"IfcBeam",IFCALARMTYPE:"IfcAlarmType",IFCACTUATORTYPE:"IfcActuatorType",IFCWINDOW:"IfcWindow",IFCWALLSTANDARDCASE:"IfcWallStandardCase",IFCWALL:"IfcWall",IFCVIBRATIONISOLATORTYPE:"IfcVibrationIsolatorType",IFCTENDONANCHOR:"IfcTendonAnchor",IFCTENDON:"IfcTendon",IFCSTRUCTURALANALYSISMODEL:"IfcStructuralAnalysisModel",IFCSTAIRFLIGHT:"IfcStairFlight",IFCSTAIR:"IfcStair",IFCSLAB:"IfcSlab",IFCSENSORTYPE:"IfcSensorType",IFCROUNDEDEDGEFEATURE:"IfcRoundedEdgeFeature",IFCROOF:"IfcRoof",IFCREINFORCINGMESH:"IfcReinforcingMesh",IFCREINFORCINGELEMENT:"IfcReinforcingElement",IFCRATIONALBEZIERCURVE:"IfcRationalBezierCurve",IFCRAMPFLIGHT:"IfcRampFlight",IFCRAMP:"IfcRamp",IFCRAILING:"IfcRailing",IFCPLATE:"IfcPlate",IFCPILE:"IfcPile",IFCMEMBER:"IfcMember",IFCFOOTING:"IfcFooting",IFCFLOWTREATMENTDEVICE:"IfcFlowTreatmentDevice",IFCFLOWTERMINAL:"IfcFlowTerminal",IFCFLOWSTORAGEDEVICE:"IfcFlowStorageDevice",IFCFLOWSEGMENT:"IfcFlowSegment",IFCFLOWMOVINGDEVICE:"IfcFlowMovingDevice",IFCFLOWINSTRUMENTTYPE:"IfcFlowInstrumentType",IFCFLOWFITTING:"IfcFlowFitting",IFCFLOWCONTROLLER:"IfcFlowController",IFCFIRESUPPRESSIONTERMINALTYPE:"IfcFireSuppressionTerminalType",IFCFILTERTYPE:"IfcFilterType",IFCFANTYPE:"IfcFanType",IFCENERGYCONVERSIONDEVICE:"IfcEnergyConversionDevice",IFCELECTRICALELEMENT:"IfcElectricalElement",IFCELECTRICALCIRCUIT:"IfcElectricalCircuit",IFCELECTRICTIMECONTROLTYPE:"IfcElectricTimeControlType",IFCELECTRICMOTORTYPE:"IfcElectricMotorType",IFCELECTRICHEATERTYPE:"IfcElectricHeaterType",IFCELECTRICGENERATORTYPE:"IfcElectricGeneratorType",IFCELECTRICFLOWSTORAGEDEVICETYPE:"IfcElectricFlowStorageDeviceType",IFCELECTRICAPPLIANCETYPE:"IfcElectricApplianceType",IFCEDGEFEATURE:"IfcEdgeFeature",IFCDUCTSILENCERTYPE:"IfcDuctSilencerType",IFCDUCTSEGMENTTYPE:"IfcDuctSegmentType",IFCDUCTFITTINGTYPE:"IfcDuctFittingType",IFCDOOR:"IfcDoor",IFCDISTRIBUTIONPORT:"IfcDistributionPort",IFCDISTRIBUTIONFLOWELEMENT:"IfcDistributionFlowElement",IFCDISTRIBUTIONELEMENT:"IfcDistributionElement",IFCDISTRIBUTIONCONTROLELEMENTTYPE:"IfcDistributionControlElementType",IFCDISTRIBUTIONCHAMBERELEMENTTYPE:"IfcDistributionChamberElementType",IFCDISCRETEACCESSORYTYPE:"IfcDiscreteAccessoryType",IFCDISCRETEACCESSORY:"IfcDiscreteAccessory",IFCDIAMETERDIMENSION:"IfcDiameterDimension",IFCDAMPERTYPE:"IfcDamperType",IFCCURTAINWALL:"IfcCurtainWall",IFCCOVERING:"IfcCovering",IFCCOOLINGTOWERTYPE:"IfcCoolingTowerType",IFCCOOLEDBEAMTYPE:"IfcCooledBeamType",IFCCONSTRUCTIONPRODUCTRESOURCE:"IfcConstructionProductResource",IFCCONSTRUCTIONMATERIALRESOURCE:"IfcConstructionMaterialResource",IFCCONSTRUCTIONEQUIPMENTRESOURCE:"IfcConstructionEquipmentResource",IFCCONDITIONCRITERION:"IfcConditionCriterion",IFCCONDITION:"IfcCondition",IFCCONDENSERTYPE:"IfcCondenserType",IFCCOMPRESSORTYPE:"IfcCompressorType",IFCCOLUMN:"IfcColumn",IFCCOILTYPE:"IfcCoilType",IFCCIRCLE:"IfcCircle",IFCCHILLERTYPE:"IfcChillerType",IFCCABLESEGMENTTYPE:"IfcCableSegmentType",IFCCABLECARRIERSEGMENTTYPE:"IfcCableCarrierSegmentType",IFCCABLECARRIERFITTINGTYPE:"IfcCableCarrierFittingType",IFCBUILDINGELEMENTPROXYTYPE:"IfcBuildingElementProxyType",IFCBUILDINGELEMENTPROXY:"IfcBuildingElementProxy",IFCBUILDINGELEMENTPART:"IfcBuildingElementPart",IFCBUILDINGELEMENTCOMPONENT:"IfcBuildingElementComponent",IFCBUILDINGELEMENT:"IfcBuildingElement",IFCBOILERTYPE:"IfcBoilerType",IFCBEZIERCURVE:"IfcBezierCurve",IFCBEAMTYPE:"IfcBeamType",IFCBSPLINECURVE:"IfcBSplineCurve",IFCASSET:"IfcAsset",IFCANGULARDIMENSION:"IfcAngularDimension",IFCAIRTOAIRHEATRECOVERYTYPE:"IfcAirToAirHeatRecoveryType",IFCAIRTERMINALTYPE:"IfcAirTerminalType",IFCAIRTERMINALBOXTYPE:"IfcAirTerminalBoxType",IFCACTIONREQUEST:"IfcActionRequest",IFC2DCOMPOSITECURVE:"Ifc2DCompositeCurve",IFCZONE:"IfcZone",IFCWORKSCHEDULE:"IfcWorkSchedule",IFCWORKPLAN:"IfcWorkPlan",IFCWORKCONTROL:"IfcWorkControl",IFCWASTETERMINALTYPE:"IfcWasteTerminalType",IFCWALLTYPE:"IfcWallType",IFCVIRTUALELEMENT:"IfcVirtualElement",IFCVALVETYPE:"IfcValveType",IFCUNITARYEQUIPMENTTYPE:"IfcUnitaryEquipmentType",IFCTUBEBUNDLETYPE:"IfcTubeBundleType",IFCTRIMMEDCURVE:"IfcTrimmedCurve",IFCTRANSPORTELEMENT:"IfcTransportElement",IFCTRANSFORMERTYPE:"IfcTransformerType",IFCTIMESERIESSCHEDULE:"IfcTimeSeriesSchedule",IFCTANKTYPE:"IfcTankType",IFCSYSTEM:"IfcSystem",IFCSWITCHINGDEVICETYPE:"IfcSwitchingDeviceType",IFCSUBCONTRACTRESOURCE:"IfcSubContractResource",IFCSTRUCTURALSURFACECONNECTION:"IfcStructuralSurfaceConnection",IFCSTRUCTURALRESULTGROUP:"IfcStructuralResultGroup",IFCSTRUCTURALPOINTREACTION:"IfcStructuralPointReaction",IFCSTRUCTURALPOINTCONNECTION:"IfcStructuralPointConnection",IFCSTRUCTURALPOINTACTION:"IfcStructuralPointAction",IFCSTRUCTURALPLANARACTIONVARYING:"IfcStructuralPlanarActionVarying",IFCSTRUCTURALPLANARACTION:"IfcStructuralPlanarAction",IFCSTRUCTURALLOADGROUP:"IfcStructuralLoadGroup",IFCSTRUCTURALLINEARACTIONVARYING:"IfcStructuralLinearActionVarying",IFCSTRUCTURALLINEARACTION:"IfcStructuralLinearAction",IFCSTRUCTURALCURVEMEMBERVARYING:"IfcStructuralCurveMemberVarying",IFCSTRUCTURALCURVEMEMBER:"IfcStructuralCurveMember",IFCSTRUCTURALCURVECONNECTION:"IfcStructuralCurveConnection",IFCSTRUCTURALCONNECTION:"IfcStructuralConnection",IFCSTRUCTURALACTION:"IfcStructuralAction",IFCSTAIRFLIGHTTYPE:"IfcStairFlightType",IFCSTACKTERMINALTYPE:"IfcStackTerminalType",IFCSPACETYPE:"IfcSpaceType",IFCSPACEPROGRAM:"IfcSpaceProgram",IFCSPACEHEATERTYPE:"IfcSpaceHeaterType",IFCSPACE:"IfcSpace",IFCSLABTYPE:"IfcSlabType",IFCSITE:"IfcSite",IFCSERVICELIFE:"IfcServiceLife",IFCSCHEDULETIMECONTROL:"IfcScheduleTimeControl",IFCSANITARYTERMINALTYPE:"IfcSanitaryTerminalType",IFCRELASSIGNSTASKS:"IfcRelAssignsTasks",IFCRELAGGREGATES:"IfcRelAggregates",IFCRAMPFLIGHTTYPE:"IfcRampFlightType",IFCRAILINGTYPE:"IfcRailingType",IFCRADIUSDIMENSION:"IfcRadiusDimension",IFCPUMPTYPE:"IfcPumpType",IFCPROTECTIVEDEVICETYPE:"IfcProtectiveDeviceType",IFCPROJECTIONELEMENT:"IfcProjectionElement",IFCPROJECTORDERRECORD:"IfcProjectOrderRecord",IFCPROJECTORDER:"IfcProjectOrder",IFCPROCEDURE:"IfcProcedure",IFCPORT:"IfcPort",IFCPOLYLINE:"IfcPolyline",IFCPLATETYPE:"IfcPlateType",IFCPIPESEGMENTTYPE:"IfcPipeSegmentType",IFCPIPEFITTINGTYPE:"IfcPipeFittingType",IFCPERMIT:"IfcPermit",IFCPERFORMANCEHISTORY:"IfcPerformanceHistory",IFCOUTLETTYPE:"IfcOutletType",IFCORDERACTION:"IfcOrderAction",IFCOPENINGELEMENT:"IfcOpeningElement",IFCOCCUPANT:"IfcOccupant",IFCMOVE:"IfcMove",IFCMOTORCONNECTIONTYPE:"IfcMotorConnectionType",IFCMEMBERTYPE:"IfcMemberType",IFCMECHANICALFASTENERTYPE:"IfcMechanicalFastenerType",IFCMECHANICALFASTENER:"IfcMechanicalFastener",IFCLINEARDIMENSION:"IfcLinearDimension",IFCLIGHTFIXTURETYPE:"IfcLightFixtureType",IFCLAMPTYPE:"IfcLampType",IFCLABORRESOURCE:"IfcLaborResource",IFCJUNCTIONBOXTYPE:"IfcJunctionBoxType",IFCINVENTORY:"IfcInventory",IFCHUMIDIFIERTYPE:"IfcHumidifierType",IFCHEATEXCHANGERTYPE:"IfcHeatExchangerType",IFCGROUP:"IfcGroup",IFCGRID:"IfcGrid",IFCGASTERMINALTYPE:"IfcGasTerminalType",IFCFURNITURESTANDARD:"IfcFurnitureStandard",IFCFURNISHINGELEMENT:"IfcFurnishingElement",IFCFLOWTREATMENTDEVICETYPE:"IfcFlowTreatmentDeviceType",IFCFLOWTERMINALTYPE:"IfcFlowTerminalType",IFCFLOWSTORAGEDEVICETYPE:"IfcFlowStorageDeviceType",IFCFLOWSEGMENTTYPE:"IfcFlowSegmentType",IFCFLOWMOVINGDEVICETYPE:"IfcFlowMovingDeviceType",IFCFLOWMETERTYPE:"IfcFlowMeterType",IFCFLOWFITTINGTYPE:"IfcFlowFittingType",IFCFLOWCONTROLLERTYPE:"IfcFlowControllerType",IFCFEATUREELEMENTSUBTRACTION:"IfcFeatureElementSubtraction",IFCFEATUREELEMENTADDITION:"IfcFeatureElementAddition",IFCFEATUREELEMENT:"IfcFeatureElement",IFCFASTENERTYPE:"IfcFastenerType",IFCFASTENER:"IfcFastener",IFCFACETEDBREPWITHVOIDS:"IfcFacetedBrepWithVoids",IFCFACETEDBREP:"IfcFacetedBrep",IFCEVAPORATORTYPE:"IfcEvaporatorType",IFCEVAPORATIVECOOLERTYPE:"IfcEvaporativeCoolerType",IFCEQUIPMENTSTANDARD:"IfcEquipmentStandard",IFCEQUIPMENTELEMENT:"IfcEquipmentElement",IFCENERGYCONVERSIONDEVICETYPE:"IfcEnergyConversionDeviceType",IFCELLIPSE:"IfcEllipse",IFCELEMENTCOMPONENTTYPE:"IfcElementComponentType",IFCELEMENTCOMPONENT:"IfcElementComponent",IFCELEMENTASSEMBLY:"IfcElementAssembly",IFCELEMENT:"IfcElement",IFCELECTRICALBASEPROPERTIES:"IfcElectricalBaseProperties",IFCDISTRIBUTIONFLOWELEMENTTYPE:"IfcDistributionFlowElementType",IFCDISTRIBUTIONELEMENTTYPE:"IfcDistributionElementType",IFCDIMENSIONCURVEDIRECTEDCALLOUT:"IfcDimensionCurveDirectedCallout",IFCCURTAINWALLTYPE:"IfcCurtainWallType",IFCCREWRESOURCE:"IfcCrewResource",IFCCOVERINGTYPE:"IfcCoveringType",IFCCOSTSCHEDULE:"IfcCostSchedule",IFCCOSTITEM:"IfcCostItem",IFCCONTROL:"IfcControl",IFCCONSTRUCTIONRESOURCE:"IfcConstructionResource",IFCCONIC:"IfcConic",IFCCOMPOSITECURVE:"IfcCompositeCurve",IFCCOLUMNTYPE:"IfcColumnType",IFCCIRCLEHOLLOWPROFILEDEF:"IfcCircleHollowProfileDef",IFCBUILDINGSTOREY:"IfcBuildingStorey",IFCBUILDINGELEMENTTYPE:"IfcBuildingElementType",IFCBUILDING:"IfcBuilding",IFCBOUNDEDCURVE:"IfcBoundedCurve",IFCBOOLEANCLIPPINGRESULT:"IfcBooleanClippingResult",IFCBLOCK:"IfcBlock",IFCASYMMETRICISHAPEPROFILEDEF:"IfcAsymmetricIShapeProfileDef",IFCANNOTATION:"IfcAnnotation",IFCACTOR:"IfcActor",IFCTRANSPORTELEMENTTYPE:"IfcTransportElementType",IFCTASK:"IfcTask",IFCSYSTEMFURNITUREELEMENTTYPE:"IfcSystemFurnitureElementType",IFCSURFACEOFREVOLUTION:"IfcSurfaceOfRevolution",IFCSURFACEOFLINEAREXTRUSION:"IfcSurfaceOfLinearExtrusion",IFCSURFACECURVESWEPTAREASOLID:"IfcSurfaceCurveSweptAreaSolid",IFCSTRUCTUREDDIMENSIONCALLOUT:"IfcStructuredDimensionCallout",IFCSTRUCTURALSURFACEMEMBERVARYING:"IfcStructuralSurfaceMemberVarying",IFCSTRUCTURALSURFACEMEMBER:"IfcStructuralSurfaceMember",IFCSTRUCTURALREACTION:"IfcStructuralReaction",IFCSTRUCTURALMEMBER:"IfcStructuralMember",IFCSTRUCTURALITEM:"IfcStructuralItem",IFCSTRUCTURALACTIVITY:"IfcStructuralActivity",IFCSPHERE:"IfcSphere",IFCSPATIALSTRUCTUREELEMENTTYPE:"IfcSpatialStructureElementType",IFCSPATIALSTRUCTUREELEMENT:"IfcSpatialStructureElement",IFCRIGHTCIRCULARCYLINDER:"IfcRightCircularCylinder",IFCRIGHTCIRCULARCONE:"IfcRightCircularCone",IFCREVOLVEDAREASOLID:"IfcRevolvedAreaSolid",IFCRESOURCE:"IfcResource",IFCRELVOIDSELEMENT:"IfcRelVoidsElement",IFCRELSPACEBOUNDARY:"IfcRelSpaceBoundary",IFCRELSERVICESBUILDINGS:"IfcRelServicesBuildings",IFCRELSEQUENCE:"IfcRelSequence",IFCRELSCHEDULESCOSTITEMS:"IfcRelSchedulesCostItems",IFCRELREFERENCEDINSPATIALSTRUCTURE:"IfcRelReferencedInSpatialStructure",IFCRELPROJECTSELEMENT:"IfcRelProjectsElement",IFCRELOVERRIDESPROPERTIES:"IfcRelOverridesProperties",IFCRELOCCUPIESSPACES:"IfcRelOccupiesSpaces",IFCRELNESTS:"IfcRelNests",IFCRELINTERACTIONREQUIREMENTS:"IfcRelInteractionRequirements",IFCRELFLOWCONTROLELEMENTS:"IfcRelFlowControlElements",IFCRELFILLSELEMENT:"IfcRelFillsElement",IFCRELDEFINESBYTYPE:"IfcRelDefinesByType",IFCRELDEFINESBYPROPERTIES:"IfcRelDefinesByProperties",IFCRELDEFINES:"IfcRelDefines",IFCRELDECOMPOSES:"IfcRelDecomposes",IFCRELCOVERSSPACES:"IfcRelCoversSpaces",IFCRELCOVERSBLDGELEMENTS:"IfcRelCoversBldgElements",IFCRELCONTAINEDINSPATIALSTRUCTURE:"IfcRelContainedInSpatialStructure",IFCRELCONNECTSWITHREALIZINGELEMENTS:"IfcRelConnectsWithRealizingElements",IFCRELCONNECTSWITHECCENTRICITY:"IfcRelConnectsWithEccentricity",IFCRELCONNECTSSTRUCTURALMEMBER:"IfcRelConnectsStructuralMember",IFCRELCONNECTSSTRUCTURALELEMENT:"IfcRelConnectsStructuralElement",IFCRELCONNECTSSTRUCTURALACTIVITY:"IfcRelConnectsStructuralActivity",IFCRELCONNECTSPORTS:"IfcRelConnectsPorts",IFCRELCONNECTSPORTTOELEMENT:"IfcRelConnectsPortToElement",IFCRELCONNECTSPATHELEMENTS:"IfcRelConnectsPathElements",IFCRELCONNECTSELEMENTS:"IfcRelConnectsElements",IFCRELCONNECTS:"IfcRelConnects",IFCRELASSOCIATESPROFILEPROPERTIES:"IfcRelAssociatesProfileProperties",IFCRELASSOCIATESMATERIAL:"IfcRelAssociatesMaterial",IFCRELASSOCIATESLIBRARY:"IfcRelAssociatesLibrary",IFCRELASSOCIATESDOCUMENT:"IfcRelAssociatesDocument",IFCRELASSOCIATESCONSTRAINT:"IfcRelAssociatesConstraint",IFCRELASSOCIATESCLASSIFICATION:"IfcRelAssociatesClassification",IFCRELASSOCIATESAPPROVAL:"IfcRelAssociatesApproval",IFCRELASSOCIATESAPPLIEDVALUE:"IfcRelAssociatesAppliedValue",IFCRELASSOCIATES:"IfcRelAssociates",IFCRELASSIGNSTORESOURCE:"IfcRelAssignsToResource",IFCRELASSIGNSTOPROJECTORDER:"IfcRelAssignsToProjectOrder",IFCRELASSIGNSTOPRODUCT:"IfcRelAssignsToProduct",IFCRELASSIGNSTOPROCESS:"IfcRelAssignsToProcess",IFCRELASSIGNSTOGROUP:"IfcRelAssignsToGroup",IFCRELASSIGNSTOCONTROL:"IfcRelAssignsToControl",IFCRELASSIGNSTOACTOR:"IfcRelAssignsToActor",IFCRELASSIGNS:"IfcRelAssigns",IFCRECTANGULARTRIMMEDSURFACE:"IfcRectangularTrimmedSurface",IFCRECTANGULARPYRAMID:"IfcRectangularPyramid",IFCRECTANGLEHOLLOWPROFILEDEF:"IfcRectangleHollowProfileDef",IFCPROXY:"IfcProxy",IFCPROPERTYSET:"IfcPropertySet",IFCPROJECTIONCURVE:"IfcProjectionCurve",IFCPROJECT:"IfcProject",IFCPRODUCT:"IfcProduct",IFCPROCESS:"IfcProcess",IFCPLANE:"IfcPlane",IFCPLANARBOX:"IfcPlanarBox",IFCPERMEABLECOVERINGPROPERTIES:"IfcPermeableCoveringProperties",IFCOFFSETCURVE3D:"IfcOffsetCurve3D",IFCOFFSETCURVE2D:"IfcOffsetCurve2D",IFCOBJECT:"IfcObject",IFCMANIFOLDSOLIDBREP:"IfcManifoldSolidBrep",IFCLINE:"IfcLine",IFCLSHAPEPROFILEDEF:"IfcLShapeProfileDef",IFCISHAPEPROFILEDEF:"IfcIShapeProfileDef",IFCGEOMETRICCURVESET:"IfcGeometricCurveSet",IFCFURNITURETYPE:"IfcFurnitureType",IFCFURNISHINGELEMENTTYPE:"IfcFurnishingElementType",IFCFLUIDFLOWPROPERTIES:"IfcFluidFlowProperties",IFCFILLAREASTYLETILES:"IfcFillAreaStyleTiles",IFCFILLAREASTYLETILESYMBOLWITHSTYLE:"IfcFillAreaStyleTileSymbolWithStyle",IFCFILLAREASTYLEHATCHING:"IfcFillAreaStyleHatching",IFCFACEBASEDSURFACEMODEL:"IfcFaceBasedSurfaceModel",IFCEXTRUDEDAREASOLID:"IfcExtrudedAreaSolid",IFCENERGYPROPERTIES:"IfcEnergyProperties",IFCELLIPSEPROFILEDEF:"IfcEllipseProfileDef",IFCELEMENTARYSURFACE:"IfcElementarySurface",IFCELEMENTTYPE:"IfcElementType",IFCELEMENTQUANTITY:"IfcElementQuantity",IFCEDGELOOP:"IfcEdgeLoop",IFCDRAUGHTINGPREDEFINEDCURVEFONT:"IfcDraughtingPredefinedCurveFont",IFCDRAUGHTINGPREDEFINEDCOLOUR:"IfcDraughtingPredefinedColour",IFCDRAUGHTINGCALLOUT:"IfcDraughtingCallout",IFCDOORSTYLE:"IfcDoorStyle",IFCDOORPANELPROPERTIES:"IfcDoorPanelProperties",IFCDOORLININGPROPERTIES:"IfcDoorLiningProperties",IFCDIRECTION:"IfcDirection",IFCDIMENSIONCURVETERMINATOR:"IfcDimensionCurveTerminator",IFCDIMENSIONCURVE:"IfcDimensionCurve",IFCDEFINEDSYMBOL:"IfcDefinedSymbol",IFCCURVEBOUNDEDPLANE:"IfcCurveBoundedPlane",IFCCURVE:"IfcCurve",IFCCSGSOLID:"IfcCsgSolid",IFCCSGPRIMITIVE3D:"IfcCsgPrimitive3D",IFCCRANERAILFSHAPEPROFILEDEF:"IfcCraneRailFShapeProfileDef",IFCCRANERAILASHAPEPROFILEDEF:"IfcCraneRailAShapeProfileDef",IFCCOMPOSITECURVESEGMENT:"IfcCompositeCurveSegment",IFCCLOSEDSHELL:"IfcClosedShell",IFCCIRCLEPROFILEDEF:"IfcCircleProfileDef",IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORM:"IfcCartesianTransformationOperator3DNonUniform",IFCCARTESIANTRANSFORMATIONOPERATOR3D:"IfcCartesianTransformationOperator3D",IFCCARTESIANTRANSFORMATIONOPERATOR2DNONUNIFORM:"IfcCartesianTransformationOperator2DNonUniform",IFCCARTESIANTRANSFORMATIONOPERATOR2D:"IfcCartesianTransformationOperator2D",IFCCARTESIANTRANSFORMATIONOPERATOR:"IfcCartesianTransformationOperator",IFCCARTESIANPOINT:"IfcCartesianPoint",IFCCSHAPEPROFILEDEF:"IfcCShapeProfileDef",IFCBOXEDHALFSPACE:"IfcBoxedHalfSpace",IFCBOUNDINGBOX:"IfcBoundingBox",IFCBOUNDEDSURFACE:"IfcBoundedSurface",IFCBOOLEANRESULT:"IfcBooleanResult",IFCAXIS2PLACEMENT3D:"IfcAxis2Placement3D",IFCAXIS2PLACEMENT2D:"IfcAxis2Placement2D",IFCAXIS1PLACEMENT:"IfcAxis1Placement",IFCANNOTATIONSURFACE:"IfcAnnotationSurface",IFCANNOTATIONFILLAREAOCCURRENCE:"IfcAnnotationFillAreaOccurrence",IFCANNOTATIONFILLAREA:"IfcAnnotationFillArea",IFCANNOTATIONCURVEOCCURRENCE:"IfcAnnotationCurveOccurrence",IFCZSHAPEPROFILEDEF:"IfcZShapeProfileDef",IFCWINDOWSTYLE:"IfcWindowStyle",IFCWINDOWPANELPROPERTIES:"IfcWindowPanelProperties",IFCWINDOWLININGPROPERTIES:"IfcWindowLiningProperties",IFCVERTEXLOOP:"IfcVertexLoop",IFCVECTOR:"IfcVector",IFCUSHAPEPROFILEDEF:"IfcUShapeProfileDef",IFCTYPEPRODUCT:"IfcTypeProduct",IFCTYPEOBJECT:"IfcTypeObject",IFCTWODIRECTIONREPEATFACTOR:"IfcTwoDirectionRepeatFactor",IFCTRAPEZIUMPROFILEDEF:"IfcTrapeziumProfileDef",IFCTEXTLITERALWITHEXTENT:"IfcTextLiteralWithExtent",IFCTEXTLITERAL:"IfcTextLiteral",IFCTERMINATORSYMBOL:"IfcTerminatorSymbol",IFCTSHAPEPROFILEDEF:"IfcTShapeProfileDef",IFCSWEPTSURFACE:"IfcSweptSurface",IFCSWEPTDISKSOLID:"IfcSweptDiskSolid",IFCSWEPTAREASOLID:"IfcSweptAreaSolid",IFCSURFACESTYLERENDERING:"IfcSurfaceStyleRendering",IFCSURFACE:"IfcSurface",IFCSUBEDGE:"IfcSubedge",IFCSTRUCTURALSTEELPROFILEPROPERTIES:"IfcStructuralSteelProfileProperties",IFCSTRUCTURALPROFILEPROPERTIES:"IfcStructuralProfileProperties",IFCSTRUCTURALLOADSINGLEFORCEWARPING:"IfcStructuralLoadSingleForceWarping",IFCSTRUCTURALLOADSINGLEFORCE:"IfcStructuralLoadSingleForce",IFCSTRUCTURALLOADSINGLEDISPLACEMENTDISTORTION:"IfcStructuralLoadSingleDisplacementDistortion",IFCSTRUCTURALLOADSINGLEDISPLACEMENT:"IfcStructuralLoadSingleDisplacement",IFCSTRUCTURALLOADPLANARFORCE:"IfcStructuralLoadPlanarForce",IFCSTRUCTURALLOADLINEARFORCE:"IfcStructuralLoadLinearForce",IFCSPACETHERMALLOADPROPERTIES:"IfcSpaceThermalLoadProperties",IFCSOUNDVALUE:"IfcSoundValue",IFCSOUNDPROPERTIES:"IfcSoundProperties",IFCSOLIDMODEL:"IfcSolidModel",IFCSLIPPAGECONNECTIONCONDITION:"IfcSlippageConnectionCondition",IFCSHELLBASEDSURFACEMODEL:"IfcShellBasedSurfaceModel",IFCSERVICELIFEFACTOR:"IfcServiceLifeFactor",IFCSECTIONEDSPINE:"IfcSectionedSpine",IFCROUNDEDRECTANGLEPROFILEDEF:"IfcRoundedRectangleProfileDef",IFCRELATIONSHIP:"IfcRelationship",IFCREINFORCEMENTDEFINITIONPROPERTIES:"IfcReinforcementDefinitionProperties",IFCREGULARTIMESERIES:"IfcRegularTimeSeries",IFCRECTANGLEPROFILEDEF:"IfcRectangleProfileDef",IFCPROPERTYTABLEVALUE:"IfcPropertyTableValue",IFCPROPERTYSINGLEVALUE:"IfcPropertySingleValue",IFCPROPERTYSETDEFINITION:"IfcPropertySetDefinition",IFCPROPERTYREFERENCEVALUE:"IfcPropertyReferenceValue",IFCPROPERTYLISTVALUE:"IfcPropertyListValue",IFCPROPERTYENUMERATEDVALUE:"IfcPropertyEnumeratedValue",IFCPROPERTYDEFINITION:"IfcPropertyDefinition",IFCPROPERTYBOUNDEDVALUE:"IfcPropertyBoundedValue",IFCPRODUCTDEFINITIONSHAPE:"IfcProductDefinitionShape",IFCPREDEFINEDPOINTMARKERSYMBOL:"IfcPredefinedPointMarkerSymbol",IFCPREDEFINEDDIMENSIONSYMBOL:"IfcPredefinedDimensionSymbol",IFCPREDEFINEDCURVEFONT:"IfcPredefinedCurveFont",IFCPREDEFINEDCOLOUR:"IfcPredefinedColour",IFCPOLYGONALBOUNDEDHALFSPACE:"IfcPolygonalBoundedHalfSpace",IFCPOLYLOOP:"IfcPolyLoop",IFCPOINTONSURFACE:"IfcPointOnSurface",IFCPOINTONCURVE:"IfcPointOnCurve",IFCPOINT:"IfcPoint",IFCPLANAREXTENT:"IfcPlanarExtent",IFCPLACEMENT:"IfcPlacement",IFCPIXELTEXTURE:"IfcPixelTexture",IFCPHYSICALCOMPLEXQUANTITY:"IfcPhysicalComplexQuantity",IFCPATH:"IfcPath",IFCPARAMETERIZEDPROFILEDEF:"IfcParameterizedProfileDef",IFCORIENTEDEDGE:"IfcOrientedEdge",IFCOPENSHELL:"IfcOpenShell",IFCONEDIRECTIONREPEATFACTOR:"IfcOneDirectionRepeatFactor",IFCOBJECTDEFINITION:"IfcObjectDefinition",IFCMECHANICALCONCRETEMATERIALPROPERTIES:"IfcMechanicalConcreteMaterialProperties",IFCMATERIALDEFINITIONREPRESENTATION:"IfcMaterialDefinitionRepresentation",IFCMAPPEDITEM:"IfcMappedItem",IFCLOOP:"IfcLoop",IFCLOCALPLACEMENT:"IfcLocalPlacement",IFCLIGHTSOURCESPOT:"IfcLightSourceSpot",IFCLIGHTSOURCEPOSITIONAL:"IfcLightSourcePositional",IFCLIGHTSOURCEGONIOMETRIC:"IfcLightSourceGoniometric",IFCLIGHTSOURCEDIRECTIONAL:"IfcLightSourceDirectional",IFCLIGHTSOURCEAMBIENT:"IfcLightSourceAmbient",IFCLIGHTSOURCE:"IfcLightSource",IFCIRREGULARTIMESERIES:"IfcIrregularTimeSeries",IFCIMAGETEXTURE:"IfcImageTexture",IFCHYGROSCOPICMATERIALPROPERTIES:"IfcHygroscopicMaterialProperties",IFCHALFSPACESOLID:"IfcHalfSpaceSolid",IFCGRIDPLACEMENT:"IfcGridPlacement",IFCGEOMETRICSET:"IfcGeometricSet",IFCGEOMETRICREPRESENTATIONSUBCONTEXT:"IfcGeometricRepresentationSubContext",IFCGEOMETRICREPRESENTATIONITEM:"IfcGeometricRepresentationItem",IFCGEOMETRICREPRESENTATIONCONTEXT:"IfcGeometricRepresentationContext",IFCGENERALPROFILEPROPERTIES:"IfcGeneralProfileProperties",IFCGENERALMATERIALPROPERTIES:"IfcGeneralMaterialProperties",IFCFUELPROPERTIES:"IfcFuelProperties",IFCFILLAREASTYLE:"IfcFillAreaStyle",IFCFAILURECONNECTIONCONDITION:"IfcFailureConnectionCondition",IFCFACESURFACE:"IfcFaceSurface",IFCFACEOUTERBOUND:"IfcFaceOuterBound",IFCFACEBOUND:"IfcFaceBound",IFCFACE:"IfcFace",IFCEXTENDEDMATERIALPROPERTIES:"IfcExtendedMaterialProperties",IFCEDGECURVE:"IfcEdgeCurve",IFCEDGE:"IfcEdge",IFCDRAUGHTINGPREDEFINEDTEXTFONT:"IfcDraughtingPredefinedTextFont",IFCDOCUMENTREFERENCE:"IfcDocumentReference",IFCDIMENSIONPAIR:"IfcDimensionPair",IFCDIMENSIONCALLOUTRELATIONSHIP:"IfcDimensionCalloutRelationship",IFCDERIVEDPROFILEDEF:"IfcDerivedProfileDef",IFCCURVESTYLE:"IfcCurveStyle",IFCCONVERSIONBASEDUNIT:"IfcConversionBasedUnit",IFCCONTEXTDEPENDENTUNIT:"IfcContextDependentUnit",IFCCONNECTIONPOINTECCENTRICITY:"IfcConnectionPointEccentricity",IFCCONNECTIONCURVEGEOMETRY:"IfcConnectionCurveGeometry",IFCCONNECTEDFACESET:"IfcConnectedFaceSet",IFCCOMPOSITEPROFILEDEF:"IfcCompositeProfileDef",IFCCOMPLEXPROPERTY:"IfcComplexProperty",IFCCOLOURRGB:"IfcColourRgb",IFCCLASSIFICATIONREFERENCE:"IfcClassificationReference",IFCCENTERLINEPROFILEDEF:"IfcCenterLineProfileDef",IFCBLOBTEXTURE:"IfcBlobTexture",IFCARBITRARYPROFILEDEFWITHVOIDS:"IfcArbitraryProfileDefWithVoids",IFCARBITRARYOPENPROFILEDEF:"IfcArbitraryOpenProfileDef",IFCARBITRARYCLOSEDPROFILEDEF:"IfcArbitraryClosedProfileDef",IFCANNOTATIONTEXTOCCURRENCE:"IfcAnnotationTextOccurrence",IFCANNOTATIONSYMBOLOCCURRENCE:"IfcAnnotationSymbolOccurrence",IFCANNOTATIONSURFACEOCCURRENCE:"IfcAnnotationSurfaceOccurrence",IFCANNOTATIONOCCURRENCE:"IfcAnnotationOccurrence",IFCWATERPROPERTIES:"IfcWaterProperties",IFCVIRTUALGRIDINTERSECTION:"IfcVirtualGridIntersection",IFCVERTEXPOINT:"IfcVertexPoint",IFCVERTEXBASEDTEXTUREMAP:"IfcVertexBasedTextureMap",IFCVERTEX:"IfcVertex",IFCUNITASSIGNMENT:"IfcUnitAssignment",IFCTOPOLOGYREPRESENTATION:"IfcTopologyRepresentation",IFCTOPOLOGICALREPRESENTATIONITEM:"IfcTopologicalRepresentationItem",IFCTIMESERIESVALUE:"IfcTimeSeriesValue",IFCTIMESERIESREFERENCERELATIONSHIP:"IfcTimeSeriesReferenceRelationship",IFCTIMESERIES:"IfcTimeSeries",IFCTHERMALMATERIALPROPERTIES:"IfcThermalMaterialProperties",IFCTEXTUREVERTEX:"IfcTextureVertex",IFCTEXTUREMAP:"IfcTextureMap",IFCTEXTURECOORDINATEGENERATOR:"IfcTextureCoordinateGenerator",IFCTEXTURECOORDINATE:"IfcTextureCoordinate",IFCTEXTSTYLEWITHBOXCHARACTERISTICS:"IfcTextStyleWithBoxCharacteristics",IFCTEXTSTYLETEXTMODEL:"IfcTextStyleTextModel",IFCTEXTSTYLEFORDEFINEDFONT:"IfcTextStyleForDefinedFont",IFCTEXTSTYLEFONTMODEL:"IfcTextStyleFontModel",IFCTEXTSTYLE:"IfcTextStyle",IFCTELECOMADDRESS:"IfcTelecomAddress",IFCTABLEROW:"IfcTableRow",IFCTABLE:"IfcTable",IFCSYMBOLSTYLE:"IfcSymbolStyle",IFCSURFACETEXTURE:"IfcSurfaceTexture",IFCSURFACESTYLEWITHTEXTURES:"IfcSurfaceStyleWithTextures",IFCSURFACESTYLESHADING:"IfcSurfaceStyleShading",IFCSURFACESTYLEREFRACTION:"IfcSurfaceStyleRefraction",IFCSURFACESTYLELIGHTING:"IfcSurfaceStyleLighting",IFCSURFACESTYLE:"IfcSurfaceStyle",IFCSTYLEDREPRESENTATION:"IfcStyledRepresentation",IFCSTYLEDITEM:"IfcStyledItem",IFCSTYLEMODEL:"IfcStyleModel",IFCSTRUCTURALLOADTEMPERATURE:"IfcStructuralLoadTemperature",IFCSTRUCTURALLOADSTATIC:"IfcStructuralLoadStatic",IFCSTRUCTURALLOAD:"IfcStructuralLoad",IFCSTRUCTURALCONNECTIONCONDITION:"IfcStructuralConnectionCondition",IFCSIMPLEPROPERTY:"IfcSimpleProperty",IFCSHAPEREPRESENTATION:"IfcShapeRepresentation",IFCSHAPEMODEL:"IfcShapeModel",IFCSHAPEASPECT:"IfcShapeAspect",IFCSECTIONREINFORCEMENTPROPERTIES:"IfcSectionReinforcementProperties",IFCSECTIONPROPERTIES:"IfcSectionProperties",IFCSIUNIT:"IfcSIUnit",IFCROOT:"IfcRoot",IFCRIBPLATEPROFILEPROPERTIES:"IfcRibPlateProfileProperties",IFCREPRESENTATIONMAP:"IfcRepresentationMap",IFCREPRESENTATIONITEM:"IfcRepresentationItem",IFCREPRESENTATIONCONTEXT:"IfcRepresentationContext",IFCREPRESENTATION:"IfcRepresentation",IFCRELAXATION:"IfcRelaxation",IFCREINFORCEMENTBARPROPERTIES:"IfcReinforcementBarProperties",IFCREFERENCESVALUEDOCUMENT:"IfcReferencesValueDocument",IFCQUANTITYWEIGHT:"IfcQuantityWeight",IFCQUANTITYVOLUME:"IfcQuantityVolume",IFCQUANTITYTIME:"IfcQuantityTime",IFCQUANTITYLENGTH:"IfcQuantityLength",IFCQUANTITYCOUNT:"IfcQuantityCount",IFCQUANTITYAREA:"IfcQuantityArea",IFCPROPERTYENUMERATION:"IfcPropertyEnumeration",IFCPROPERTYDEPENDENCYRELATIONSHIP:"IfcPropertyDependencyRelationship",IFCPROPERTYCONSTRAINTRELATIONSHIP:"IfcPropertyConstraintRelationship",IFCPROPERTY:"IfcProperty",IFCPROFILEPROPERTIES:"IfcProfileProperties",IFCPROFILEDEF:"IfcProfileDef",IFCPRODUCTSOFCOMBUSTIONPROPERTIES:"IfcProductsOfCombustionProperties",IFCPRODUCTREPRESENTATION:"IfcProductRepresentation",IFCPRESENTATIONSTYLEASSIGNMENT:"IfcPresentationStyleAssignment",IFCPRESENTATIONSTYLE:"IfcPresentationStyle",IFCPRESENTATIONLAYERWITHSTYLE:"IfcPresentationLayerWithStyle",IFCPRESENTATIONLAYERASSIGNMENT:"IfcPresentationLayerAssignment",IFCPREDEFINEDTEXTFONT:"IfcPredefinedTextFont",IFCPREDEFINEDTERMINATORSYMBOL:"IfcPredefinedTerminatorSymbol",IFCPREDEFINEDSYMBOL:"IfcPredefinedSymbol",IFCPREDEFINEDITEM:"IfcPredefinedItem",IFCPOSTALADDRESS:"IfcPostalAddress",IFCPHYSICALSIMPLEQUANTITY:"IfcPhysicalSimpleQuantity",IFCPHYSICALQUANTITY:"IfcPhysicalQuantity",IFCPERSONANDORGANIZATION:"IfcPersonAndOrganization",IFCPERSON:"IfcPerson",IFCOWNERHISTORY:"IfcOwnerHistory",IFCORGANIZATIONRELATIONSHIP:"IfcOrganizationRelationship",IFCORGANIZATION:"IfcOrganization",IFCOPTICALMATERIALPROPERTIES:"IfcOpticalMaterialProperties",IFCOBJECTIVE:"IfcObjective",IFCOBJECTPLACEMENT:"IfcObjectPlacement",IFCNAMEDUNIT:"IfcNamedUnit",IFCMONETARYUNIT:"IfcMonetaryUnit",IFCMETRIC:"IfcMetric",IFCMECHANICALSTEELMATERIALPROPERTIES:"IfcMechanicalSteelMaterialProperties",IFCMECHANICALMATERIALPROPERTIES:"IfcMechanicalMaterialProperties",IFCMEASUREWITHUNIT:"IfcMeasureWithUnit",IFCMATERIALPROPERTIES:"IfcMaterialProperties",IFCMATERIALLIST:"IfcMaterialList",IFCMATERIALLAYERSETUSAGE:"IfcMaterialLayerSetUsage",IFCMATERIALLAYERSET:"IfcMaterialLayerSet",IFCMATERIALLAYER:"IfcMaterialLayer",IFCMATERIALCLASSIFICATIONRELATIONSHIP:"IfcMaterialClassificationRelationship",IFCMATERIAL:"IfcMaterial",IFCLOCALTIME:"IfcLocalTime",IFCLIGHTINTENSITYDISTRIBUTION:"IfcLightIntensityDistribution",IFCLIGHTDISTRIBUTIONDATA:"IfcLightDistributionData",IFCLIBRARYREFERENCE:"IfcLibraryReference",IFCLIBRARYINFORMATION:"IfcLibraryInformation",IFCIRREGULARTIMESERIESVALUE:"IfcIrregularTimeSeriesValue",IFCGRIDAXIS:"IfcGridAxis",IFCEXTERNALLYDEFINEDTEXTFONT:"IfcExternallyDefinedTextFont",IFCEXTERNALLYDEFINEDSYMBOL:"IfcExternallyDefinedSymbol",IFCEXTERNALLYDEFINEDSURFACESTYLE:"IfcExternallyDefinedSurfaceStyle",IFCEXTERNALLYDEFINEDHATCHSTYLE:"IfcExternallyDefinedHatchStyle",IFCEXTERNALREFERENCE:"IfcExternalReference",IFCENVIRONMENTALIMPACTVALUE:"IfcEnvironmentalImpactValue",IFCDRAUGHTINGCALLOUTRELATIONSHIP:"IfcDraughtingCalloutRelationship",IFCDOCUMENTINFORMATIONRELATIONSHIP:"IfcDocumentInformationRelationship",IFCDOCUMENTINFORMATION:"IfcDocumentInformation",IFCDOCUMENTELECTRONICFORMAT:"IfcDocumentElectronicFormat",IFCDIMENSIONALEXPONENTS:"IfcDimensionalExponents",IFCDERIVEDUNITELEMENT:"IfcDerivedUnitElement",IFCDERIVEDUNIT:"IfcDerivedUnit",IFCDATEANDTIME:"IfcDateAndTime",IFCCURVESTYLEFONTPATTERN:"IfcCurveStyleFontPattern",IFCCURVESTYLEFONTANDSCALING:"IfcCurveStyleFontAndScaling",IFCCURVESTYLEFONT:"IfcCurveStyleFont",IFCCURRENCYRELATIONSHIP:"IfcCurrencyRelationship",IFCCOSTVALUE:"IfcCostValue",IFCCOORDINATEDUNIVERSALTIMEOFFSET:"IfcCoordinatedUniversalTimeOffset",IFCCONSTRAINTRELATIONSHIP:"IfcConstraintRelationship",IFCCONSTRAINTCLASSIFICATIONRELATIONSHIP:"IfcConstraintClassificationRelationship",IFCCONSTRAINTAGGREGATIONRELATIONSHIP:"IfcConstraintAggregationRelationship",IFCCONSTRAINT:"IfcConstraint",IFCCONNECTIONSURFACEGEOMETRY:"IfcConnectionSurfaceGeometry",IFCCONNECTIONPORTGEOMETRY:"IfcConnectionPortGeometry",IFCCONNECTIONPOINTGEOMETRY:"IfcConnectionPointGeometry",IFCCONNECTIONGEOMETRY:"IfcConnectionGeometry",IFCCOLOURSPECIFICATION:"IfcColourSpecification",IFCCLASSIFICATIONNOTATIONFACET:"IfcClassificationNotationFacet",IFCCLASSIFICATIONNOTATION:"IfcClassificationNotation",IFCCLASSIFICATIONITEMRELATIONSHIP:"IfcClassificationItemRelationship",IFCCLASSIFICATIONITEM:"IfcClassificationItem",IFCCLASSIFICATION:"IfcClassification",IFCCALENDARDATE:"IfcCalendarDate",IFCBOUNDARYNODECONDITIONWARPING:"IfcBoundaryNodeConditionWarping",IFCBOUNDARYNODECONDITION:"IfcBoundaryNodeCondition",IFCBOUNDARYFACECONDITION:"IfcBoundaryFaceCondition",IFCBOUNDARYEDGECONDITION:"IfcBoundaryEdgeCondition",IFCBOUNDARYCONDITION:"IfcBoundaryCondition",IFCAPPROVALRELATIONSHIP:"IfcApprovalRelationship",IFCAPPROVALPROPERTYRELATIONSHIP:"IfcApprovalPropertyRelationship",IFCAPPROVALACTORRELATIONSHIP:"IfcApprovalActorRelationship",IFCAPPROVAL:"IfcApproval",IFCAPPLIEDVALUERELATIONSHIP:"IfcAppliedValueRelationship",IFCAPPLIEDVALUE:"IfcAppliedValue",IFCAPPLICATION:"IfcApplication",IFCADDRESS:"IfcAddress",IFCACTORROLE:"IfcActorRole"};class Oc{constructor(){C(this,"factor",1);C(this,"complement",1)}apply(i){const e=this.getScaleMatrix().multiply(i);i.copy(e)}setUp(i){var n,r,o;this.factor=1;const t=this.getLengthUnits(i);if(!t)return;const e=t==null,s=t.Name===void 0||t.Name===null;e||s||(t.Name.value==="FOOT"&&(this.factor=.3048),((n=t.Prefix)==null?void 0:n.value)==="MILLI"?this.complement=.001:((r=t.Prefix)==null?void 0:r.value)==="CENTI"?this.complement=.01:((o=t.Prefix)==null?void 0:o.value)==="DECI"&&(this.complement=.01))}getLengthUnits(i){try{const e=i.GetLineIDsWithType(0,k.IFCUNITASSIGNMENT).get(0),s=i.GetLine(0,e);for(const n of s.Units){if(!n||n.value===null||n.value===void 0)continue;const r=i.GetLine(0,n.value);if(r.UnitType&&r.UnitType.value==="LENGTHUNIT")return r}return null}catch{return console.log("Could not get units"),null}}getScaleMatrix(){const i=this.factor;return new b.Matrix4().fromArray([i,0,0,0,0,i,0,0,0,0,i,0,0,0,0,1])}}class co{constructor(){C(this,"itemsByFloor",{});C(this,"_units",new Oc)}setUp(i){this._units.setUp(i),this.cleanUp();try{const t=i.GetLineIDsWithType(0,k.IFCRELCONTAINEDINSPATIALSTRUCTURE),e=new Set,s=i.GetLineIDsWithType(0,k.IFCSPACE);for(let l=0;l<s.size();l++)e.add(s.get(l));const n=i.GetLineIDsWithType(0,k.IFCRELAGGREGATES),r=n.size();for(let l=0;l<r;l++){const h=n.get(l),f=i.GetLine(0,h);if(!f||!f.RelatingObject||!f.RelatedObjects)continue;const I=f.RelatingObject.value,u=f.RelatedObjects;for(const d of u){const E=d.value;e.has(E)&&(this.itemsByFloor[E]=I)}}const o={},a=t.size();for(let l=0;l<a;l++){const h=t.get(l),f=i.GetLine(0,h);if(!f||!f.RelatingStructure||!f.RelatedElements)continue;const I=f.RelatingStructure.value,u=f.RelatedElements;if(e.has(I))for(const d of u){o[I]||(o[I]=[]);const E=d.value;o[I].push(E)}else for(const d of u){const E=d.value;this.itemsByFloor[E]=I}}for(const l in o){const h=this.itemsByFloor[l];if(h!==void 0){const f=o[l];for(const I of f)this.itemsByFloor[I]=h}}for(let l=0;l<r;l++){const h=n.get(l),f=i.GetLine(0,h);if(!f||!f.RelatingObject||!f.RelatedObjects)continue;const I=f.RelatingObject.value,u=f.RelatedObjects;for(const d of u){const E=d.value,T=this.itemsByFloor[I];T!==void 0&&(this.itemsByFloor[E]=T)}}}catch{console.log("Could not get floors.")}}cleanUp(){this.itemsByFloor={}}}class zs{constructor(){C(this,"includeProperties",!0);C(this,"optionalCategories",[k.IFCSPACE]);C(this,"coordinate",!0);C(this,"wasm",{path:"",absolute:!1,logLevel:k.LogLevel.LOG_LEVEL_OFF});C(this,"excludedCategories",new Set);C(this,"includedCategories",new Set);C(this,"saveLocations",!1);C(this,"webIfc",{COORDINATE_TO_ORIGIN:!0});C(this,"autoSetWasm",!0);C(this,"customLocateFileHandler",null)}}class lo{constructor(){C(this,"defLineMat",new b.LineBasicMaterial({color:16777215}))}read(i){const t=i.GetAllAlignments(0),e=i.GetAllCrossSections2D(0),s=i.GetAllCrossSections3D(0),n={IfcAlignment:t,IfcCrossSection2D:e,IfcCrossSection3D:s};return this.get(n)}get(i){if(i.IfcAlignment){const t=new Map;for(const e of i.IfcAlignment){const s=new qt.Alignment;s.absolute=this.getCurves(e.curve3D,s),s.horizontal=this.getCurves(e.horizontal,s),s.vertical=this.getCurves(e.vertical,s),t.set(t.size,s)}return{alignments:t,coordinationMatrix:new b.Matrix4}}}getCurves(i,t){const e=[];let s=0;for(const n of i){const r={};if(n.data)for(const I of n.data){const[u,d]=I.split(": "),E=parseFloat(d);r[u]=E||d}const{points:o}=n,a=new Float32Array(o.length*3);for(let I=0;I<o.length;I++){const{x:u,y:d,z:E}=o[I];a[I*3]=u,a[I*3+1]=d,a[I*3+2]=E||0}const l=new b.BufferAttribute(a,3),h=new b.EdgesGeometry;h.setAttribute("position",l);const f=new qt.CurveMesh(s,r,t,h,this.defLineMat);e.push(f.curve),s++}return e}}class ho{getNameInfo(i){var f;const t={},{arguments:e}=i.GetHeaderLine(0,k.FILE_NAME)||{};if(!e)return t;const[s,n,r,o,a,l,h]=e;if(s!=null&&s.value&&(t.name=s.value),n!=null&&n.value&&(t.creationDate=new Date(n.value)),r){t.author={};const[I,u]=r;I!=null&&I.value&&(t.author.name=I.value),u!=null&&u.value&&(t.author.email=u.value)}return(f=o[0])!=null&&f.value&&(t.organization=o[0].value),a!=null&&a.value&&(t.preprocessorVersion=a==null?void 0:a.value),l!=null&&l.value&&(t.originatingSystem=l==null?void 0:l.value),h!=null&&h.value&&(t.authorization=h==null?void 0:h.value),t}getDescriptionInfo(i){var r;const t={},{arguments:e}=i.GetHeaderLine(0,k.FILE_DESCRIPTION)||{};if(!e)return t;const[s,n]=e;if((r=s[0])!=null&&r.value){const o=s[0].value.match(/\[([^\]]+)\]/);o&&o[1]&&(t.viewDefinition=o[1])}return n!=null&&n.value&&(t.implementationLevel=n.value),t}}class uo{static get(i,t){const e=[k.IFCPROJECT,k.IFCSITE,k.IFCBUILDING,k.IFCBUILDINGSTOREY,k.IFCSPACE,k.IFCROAD,k.IFCFACILITY,k.IFCFACILITYPART,k.IFCBRIDGE],s=i.data;for(const n of e){const r=t.GetLineIDsWithType(0,n),o=r.size();for(let a=0;a<o;a++){const l=r.get(a);s.has(l)||s.set(l,[[],[0,n]])}}}}const Vn=new Set([1123145078,574549367,1675464909,2059837836,3798115385,32440307,3125803723,3207858831,2740243338,2624227202,4240577450,3615266464,3724593414,220341763,477187591,1878645084,1300840506,3303107099,1607154358,1878645084,846575682,1351298697,2417041796,3049322572,3331915920,1416205885,776857604,3285139300,3958052878,2827736869,2732653382,673634403,3448662350,4142052618,2924175390,803316827,2556980723,1809719519,2205249479,807026263,3737207727,1660063152,2347385850,2705031697,3732776249,2485617015,2611217952,1704287377,2937912522,2770003689,1281925730,1484403080,3448662350,4142052618,3800577675,4006246654,3590301190,1383045692,2775532180,2047409740,370225590,3593883385,2665983363,4124623270,812098782,3649129432,987898635,1105321065,3510044353,1635779807,2603310189,3406155212,1310608509,4261334040,2736907675,3649129432,1136057603,1260505505,4182860854,2713105998,2898889636,59481748,3749851601,3486308946,3150382593,1062206242,3264961684,15328376,1485152156,370225590,1981873012,2859738748,45288368,2614616156,2732653382,775493141,2147822146,2601014836,2629017746,1186437898,2367409068,1213902940,3632507154,3900360178,476780140,1472233963,2804161546,3008276851,738692330,374418227,315944413,3905492369,3570813810,2571569899,178912537,2294589976,1437953363,2133299955,572779678,3092502836,388784114,2624227202,1425443689,3057273783,2347385850,1682466193,2519244187,2839578677,3958567839,2513912981,2830218821,427810014]),Ss=class Ss extends mt{constructor(t){super(t);C(this,"enabled",!0);t.add(Ss.uuid,this)}async export(t,e,s=!1,n=!0){const r={},o=new Set(t.GetIfcEntityList(e)),a=new Set([k.IFCPROJECT,k.IFCSITE,k.IFCBUILDING,k.IFCBUILDINGSTOREY,k.IFCSPACE]);for(const l of a)o.add(l);for(const l of o){if(Vn.has(l))continue;const h=a.has(l)&&n,f=t.GetLineIDsWithType(e,l);for(const I of f)try{const u=t.GetLine(0,I,h,s);r[u.expressID]=u}catch{console.log(`Could not get property ${I}, with recursive ${h} and indirect ${s}.`)}}return r}};C(Ss,"uuid","b32c4332-cd67-436e-ba7f-196646c7a635");let Is=Ss;const Oi=class Oi extends mt{constructor(t){super(t);C(this,"onDisposed",new j);C(this,"onIfcStartedLoading",new j);C(this,"onSetup",new j);C(this,"settings",new zs);C(this,"webIfc",new k.IfcAPI);C(this,"enabled",!0);C(this,"_material",new b.MeshLambertMaterial);C(this,"_spatialTree",new co);C(this,"_metaData",new ho);C(this,"_fragmentInstances",new Map);C(this,"_civil",new lo);C(this,"_visitedFragments",new Map);C(this,"_materialT",new b.MeshLambertMaterial({transparent:!0,opacity:.5}));this.components.add(Oi.uuid,this),this.settings.excludedCategories.add(k.IFCOPENINGELEMENT)}dispose(){this.webIfc=null,this.onDisposed.trigger(Oi.uuid),this.onDisposed.reset()}async setup(t){this.settings={...this.settings,...t},this.settings.autoSetWasm&&await this.autoSetWasm(),this.onSetup.trigger()}async load(t,e=!0,s=""){const n=performance.now();this.onIfcStartedLoading.trigger(),await this.readIfcFile(t);const r=await this.getAllGeometries();r.name=s;const a=await this.components.get(Is).export(this.webIfc,0);r.setLocalProperties(a);const l=this.components.get(pt);l.groups.set(r.uuid,r);for(const h of r.items)l.list.set(h.id,h),h.mesh.uuid=h.id,h.group=r;l.onFragmentsLoaded.trigger(r),e&&l.coordinate([r]);for(const[h]of r.data){const f=a[h];if(!f||!f.GlobalId)continue;const I=f.GlobalId.value||f.GlobalId;r.globalToExpressIDs.set(I,h)}return uo.get(r,this.webIfc),this.cleanUp(),console.log(`Streaming the IFC took ${performance.now()-n} ms!`),r}async readIfcFile(t){const{path:e,absolute:s,logLevel:n}=this.settings.wasm;return this.webIfc.SetWasmPath(e,s),await this.webIfc.Init(this.settings.customLocateFileHandler||void 0),n&&this.webIfc.SetLogLevel(n),this.webIfc.OpenModel(t,this.settings.webIfc)}cleanUp(){try{this.webIfc.Dispose()}catch{console.log("Web-ifc wasn't disposed.")}this.webIfc=null,this.webIfc=new k.IfcAPI,this._visitedFragments.clear(),this._fragmentInstances.clear()}async getAllGeometries(){this._spatialTree.setUp(this.webIfc);const t=this.webIfc.GetIfcEntityList(0),e=new qt.FragmentsGroup;e.ifcMetadata={name:"",description:"",...this._metaData.getNameInfo(this.webIfc),...this._metaData.getDescriptionInfo(this.webIfc),schema:this.webIfc.GetModelSchema(0)||"IFC2X3",maxExpressID:this.webIfc.GetMaxExpressID(0)};const s=[];for(const r of t){if(!this.webIfc.IsIfcElement(r)&&r!==k.IFCSPACE)continue;const o=this.settings.includedCategories;if(o.size>0&&!o.has(r))continue;if(this.settings.excludedCategories.has(r))continue;const a=this.webIfc.GetLineIDsWithType(0,r),l=a.size();for(let h=0;h<l;h++){const f=a.get(h);s.push(f);const I=this._spatialTree.itemsByFloor[f]||0;e.data.set(f,[[],[I,r]])}}this._spatialTree.cleanUp(),this.webIfc.StreamMeshes(0,s,r=>{this.getMesh(r,e)});for(const r of this._visitedFragments){const{index:o,fragment:a}=r[1];e.keyFragments.set(o,a.id)}for(const r of e.items){const o=this._fragmentInstances.get(r.id);if(!o)throw new Error("Fragment not found!");const a=[];for(const[l,h]of o)a.push(h);r.add(a)}const n=this.webIfc.GetCoordinationMatrix(0);return e.coordinationMatrix.fromArray(n),e.civilData=this._civil.read(this.webIfc),e}getMesh(t,e){const s=t.geometries.size(),n=t.expressID;for(let r=0;r<s;r++){const o=t.geometries.get(r),{x:a,y:l,z:h,w:f}=o.color,I=f!==1,{geometryExpressID:u}=o,d=`${u}-${I}`;if(!this._visitedFragments.has(d)){const S=this.getGeometry(this.webIfc,u),N=I?this._materialT:this._material,L=new qt.Fragment(S,N,1);e.add(L.mesh),e.items.push(L);const D=this._visitedFragments.size;this._visitedFragments.set(d,{index:D,fragment:L})}const E=new b.Color().setRGB(a,l,h,"srgb"),T=new b.Matrix4;T.fromArray(o.flatTransformation);const p=this._visitedFragments.get(d);if(p===void 0)throw new Error("Error getting geometry data for streaming!");const m=e.data.get(n);if(!m)throw new Error("Data not found!");m[0].push(p.index);const{fragment:F}=p;this._fragmentInstances.has(F.id)||this._fragmentInstances.set(F.id,new Map);const R=this._fragmentInstances.get(F.id);if(!R)throw new Error("Instances not found!");if(R.has(n)){const S=R.get(n);if(!S)throw new Error("Instance not found!");S.transforms.push(T),S.colors&&S.colors.push(E)}else R.set(n,{id:n,transforms:[T],colors:[E]})}}getGeometry(t,e){const s=t.GetGeometry(0,e),n=t.GetIndexArray(s.GetIndexData(),s.GetIndexDataSize()),r=t.GetVertexArray(s.GetVertexData(),s.GetVertexDataSize()),o=new Float32Array(r.length/2),a=new Float32Array(r.length/2);for(let I=0;I<r.length;I+=6)o[I/2]=r[I],o[I/2+1]=r[I+1],o[I/2+2]=r[I+2],a[I/2]=r[I+3],a[I/2+1]=r[I+4],a[I/2+2]=r[I+5];const l=new b.BufferGeometry,h=new b.BufferAttribute(o,3),f=new b.BufferAttribute(a,3);return l.setAttribute("position",h),l.setAttribute("normal",f),l.setIndex(Array.from(n)),s.delete(),l}async autoSetWasm(){const t=await fetch(`https://unpkg.com/@thatopen/components@${yi.release}/package.json`);if(!t.ok){console.warn("Couldn't get openbim-components package.json. Set wasm settings manually.");return}const e=await t.json();if(!("web-ifc"in e.peerDependencies))console.warn("Couldn't get web-ifc from peer dependencies in openbim-components. Set wasm settings manually.");else{const s=e.peerDependencies["web-ifc"];this.settings.wasm.path=`https://unpkg.com/web-ifc@${s}/`,this.settings.wasm.absolute=!0}}};C(Oi,"uuid","a659add7-1418-4771-a0d6-7d4d438e4624");let ds=Oi;const fo={IfcRelAssignsToControl:{related:5,relating:7},IfcRelAssignsToGroup:{related:5,relating:7},IfcRelAssignsToProduct:{related:5,relating:7},IfcRelAssociatesClassification:{related:5,relating:6},IfcRelAssociatesMaterial:{related:5,relating:6},IfcRelAssociatesDocument:{related:5,relating:6},IfcRelContainedInSpatialStructure:{related:5,relating:6},IfcRelFlowControlElements:{related:5,relating:6},IfcRelConnectsElements:{related:7,relating:6},IfcRelDeclares:{related:6,relating:5},IfcRelAggregates:{related:6,relating:5},IfcRelNests:{related:6,relating:5},IfcRelDefinesByProperties:{related:5,relating:6},IfcRelDefinesByType:{related:5,relating:6},IfcRelDefinesByTemplate:{related:5,relating:6}},Io={[k.IFCRELASSIGNSTOCONTROL]:"IfcRelAssignsToControl",[k.IFCRELASSIGNSTOGROUP]:"IfcRelAssignsToGroup",[k.IFCRELASSIGNSTOPRODUCT]:"IfcRelAssignsToProduct",[k.IFCRELASSOCIATESCLASSIFICATION]:"IfcRelAssociatesClassification",[k.IFCRELASSOCIATESMATERIAL]:"IfcRelAssociatesMaterial",[k.IFCRELASSOCIATESDOCUMENT]:"IfcRelAssociatesDocument",[k.IFCRELCONTAINEDINSPATIALSTRUCTURE]:"IfcRelContainedInSpatialStructure",[k.IFCRELCONNECTSELEMENTS]:"IfcRelConnectsElements",[k.IFCRELFLOWCONTROLELEMENTS]:"IfcRelFlowControlElements",[k.IFCRELDECLARES]:"IfcRelDeclares",[k.IFCRELAGGREGATES]:"IfcRelAggregates",[k.IFCRELNESTS]:"IfcRelNests",[k.IFCRELDEFINESBYPROPERTIES]:"IfcRelDefinesByProperties",[k.IFCRELDEFINESBYTYPE]:"IfcRelDefinesByType",[k.IFCRELDEFINESBYTEMPLATE]:"IfcRelDefinesByTemplate"},Ae=class Ae extends mt{constructor(t){super(t);C(this,"onDisposed",new j);C(this,"onRequestFile",new j);C(this,"ifcToExport",null);C(this,"onElementToPset",new j);C(this,"onPropToPset",new j);C(this,"onPsetRemoved",new j);C(this,"onDataChanged",new j);C(this,"wasm",{path:"/",absolute:!1});C(this,"enabled",!0);C(this,"attributeListeners",{});C(this,"selectedModel");C(this,"changeMap",{});this.components.add(Ae.uuid,this)}dispose(){this.selectedModel=void 0,this.attributeListeners={},this.changeMap={},this.onElementToPset.reset(),this.onPropToPset.reset(),this.onPsetRemoved.reset(),this.onDataChanged.reset(),this.onDisposed.trigger(Ae.uuid),this.onDisposed.reset()}static getIFCSchema(t){const e=t.ifcMetadata.schema;if(!e)throw new Error("IFC Schema not found");return e.startsWith("IFC2X3")?"IFC2X3":e.startsWith("IFC4")&&e.replace("IFC4","")===""?"IFC4":e.startsWith("IFC4X3")?"IFC4X3":e}async setData(t,...e){for(const s of e){const{expressID:n}=s;(!n||n===-1)&&(s.expressID=this.getNewExpressID(t)),await t.setProperties(s.expressID,s),this.registerChange(t,s.expressID)}}async newPset(t,e,s){const n=Ae.getIFCSchema(t),{ownerHistoryHandle:r}=await this.getOwnerHistory(t),o=this.newGUID(t),a=new k[n].IfcLabel(e),l=s?new k[n].IfcText(s):null,h=new k[n].IfcPropertySet(o,r,a,l,[]);h.expressID=this.getNewExpressID(t);const f=this.newGUID(t),I=new k[n].IfcRelDefinesByProperties(f,r,null,null,[],new k.Handle(h.expressID));return I.expressID=this.getNewExpressID(t),await this.setData(t,h,I),{pset:h,rel:I}}async removePset(t,...e){for(const s of e){const n=await t.getProperties(s);if((n==null?void 0:n.type)!==k.IFCPROPERTYSET)continue;const r=await De.getPsetRel(t,s);if(r&&(await t.setProperties(r,null),this.registerChange(t,r)),n){for(const o of n.HasProperties)await t.setProperties(o.value,null);await t.setProperties(s,null),this.onPsetRemoved.trigger({model:t,psetID:s}),this.registerChange(t,s)}}}newSingleStringProperty(t,e,s,n){return this.newSingleProperty(t,e,s,n)}newSingleNumericProperty(t,e,s,n){return this.newSingleProperty(t,e,s,n)}newSingleBooleanProperty(t,e,s,n){return this.newSingleProperty(t,e,s,n)}async removePsetProp(t,e,s){const n=await t.getProperties(e),r=await t.getProperties(s);!n||!r||n.type===k.IFCPROPERTYSET&&r&&(n.HasProperties=n.HasProperties.filter(o=>o.value!==s),await t.setProperties(s,null),this.registerChange(t,e,s))}addElementToPset(t,e,...s){this.components.get(Bt).addEntitiesRelation(t,e,{type:k.IFCRELDEFINESBYPROPERTIES,inv:"IsDefinedBy"},...s)}async addPropToPset(t,e,...s){const n=await t.getProperties(e);if(n){for(const r of s){if(n.HasProperties.includes(r))continue;const o=new k.Handle(r);n.HasProperties.push(o),this.onPropToPset.trigger({model:t,psetID:e,propID:r})}this.registerChange(t,e)}}async createIfcRel(t,e,s,n){const r=Io[e];if(!r)throw new Error(`IfcPropertiesManager: ${r} is unsoported.`);const o=t.ifcMetadata.schema,a=fo[r],l=k[o][r];if(!(a&&l))throw new Error(`IfcPropertiesManager: ${r} is unsoported.`);const h=[new k[o].IfcGloballyUniqueId(ne.create())],{related:f,relating:I}=a,d=[...new Set(n)].map(p=>new k.Handle(p)),E=(p,m)=>{for(let F=p;F<m-1;F++)h.push(null)};f<I?(E(1,f),h.push(d),E(f,I),h.push(new k.Handle(s))):(E(1,I),E(I,f),h.push(new k.Handle(s)),h.push(d));const T=new l(...h);return await this.setData(t,T),T}async saveToIfc(t,e){const s=this.components.get(ds),n=s.webIfc,r=await s.readIfcFile(e);await this.components.get(Bt).applyRelationChanges();const a=this.changeMap[t.uuid]??[];for(const h of a){const f=await t.getProperties(h);f?n.WriteLine(r,f):n.DeleteLine(r,h)}const l=n.SaveModel(r);return s.webIfc.CloseModel(r),s.cleanUp(),l}async getEntityRef(t,e){const s=await t.getAllPropertiesOfType(e);if(!s)return null;const n=[];for(const r in s){const o=new k.Handle(Number(r));n.push(o)}return n}async setAttributeListener(t,e,s){this.attributeListeners[t.uuid]||(this.attributeListeners[t.uuid]={});const n=this.attributeListeners[t.uuid][e]?this.attributeListeners[t.uuid][e][s]:null;if(n)return n;const r=await t.getProperties(e);if(!r)throw new Error(`Entity with expressID ${e} doesn't exists.`);const o=r[s];if(Array.isArray(o)||!o)throw new Error(`Attribute ${s} is array or null, and it can't have a listener.`);const a=o.value;if(a===void 0||a==null)throw new Error(`Attribute ${s} has a badly defined handle.`);const l=new j;return Object.defineProperty(r[s],"value",{get(){return this._value},async set(h){this._value=h,l.trigger(h)}}),r[s].value=a,this.attributeListeners[t.uuid][e]||(this.attributeListeners[t.uuid][e]={}),this.attributeListeners[t.uuid][e][s]=l,l}getNewExpressID(t){return t.ifcMetadata.maxExpressID++,t.ifcMetadata.maxExpressID}newGUID(t){const e=Ae.getIFCSchema(t);return new k[e].IfcGloballyUniqueId(ne.create())}async getOwnerHistory(t){const e=await t.getAllPropertiesOfType(k.IFCOWNERHISTORY);if(!e)throw new Error("No OwnerHistory was found.");const s=Object.keys(e).map(o=>parseInt(o,10)),n=e[s[0]],r=new k.Handle(n.expressID);return{ownerHistory:n,ownerHistoryHandle:r}}registerChange(t,...e){this.changeMap[t.uuid]||(this.changeMap[t.uuid]=new Set);for(const s of e)this.changeMap[t.uuid].add(s),this.onDataChanged.trigger({model:t,expressID:s})}async newSingleProperty(t,e,s,n){const r=Ae.getIFCSchema(t),o=new k[r].IfcIdentifier(s),a=new k[r][e](n),l=new k[r].IfcPropertySingleValue(o,null,a,null);return l.expressID=this.getNewExpressID(t),await this.setData(t,l),l}};C(Ae,"uuid","58c2d9f0-183c-48d6-a402-dfcf5b9a34df");let Es=Ae;const Ni=class Ni extends mt{constructor(t){super(t);C(this,"onDisposed",new j);C(this,"onRelationsIndexed",new j);C(this,"relationMaps",{});C(this,"enabled",!0);C(this,"_relToAttributesMap",Sn);C(this,"_inverseAttributes",["IsDecomposedBy","Decomposes","AssociatedTo","HasAssociations","ClassificationForObjects","IsGroupedBy","HasAssignments","IsDefinedBy","DefinesOcurrence","IsTypedBy","Types","Defines","ContainedInStructure","ContainsElements","HasControlElements","AssignedToFlowElement","ConnectedTo","ConnectedFrom","ReferencedBy","Declares","HasContext","Controls","IsNestedBy","Nests","DocumentRefForObjects"]);C(this,"_ifcRels",[k.IFCRELAGGREGATES,k.IFCRELASSOCIATESMATERIAL,k.IFCRELASSOCIATESCLASSIFICATION,k.IFCRELASSIGNSTOGROUP,k.IFCRELDEFINESBYPROPERTIES,k.IFCRELDEFINESBYTYPE,k.IFCRELDEFINESBYTEMPLATE,k.IFCRELCONTAINEDINSPATIALSTRUCTURE,k.IFCRELFLOWCONTROLELEMENTS,k.IFCRELCONNECTSELEMENTS,k.IFCRELASSIGNSTOPRODUCT,k.IFCRELDECLARES,k.IFCRELASSIGNSTOCONTROL,k.IFCRELNESTS,k.IFCRELASSOCIATESDOCUMENT]);C(this,"onFragmentsDisposed",t=>{delete this.relationMaps[t.groupID]});C(this,"_changeMap",{});C(this,"onEntitiesRelated",new j);this.components.add(Ni.uuid,this),t.get(pt).onFragmentsDisposed.add(this.onFragmentsDisposed)}indexRelations(t,e,s,n){const r=Object.keys(e).find(f=>f.startsWith("Relating")),o=Object.keys(e).find(f=>f.startsWith("Related"));if(!(r&&o))return;const a=e[r].value,l=e[o].map(f=>f.value),h=this.getAttributeIndex(n);if(h!==null){let f=t.get(a);f||(f=new Map,t.set(a,f));let I=f.get(h);I||(I=[],f.set(h,I)),I.push(...l)}for(const f of l){const I=this.getAttributeIndex(s);if(I===null)continue;let u=t.get(f);u||(u=new Map,t.set(f,u));let d=u.get(I);d||(d=[],u.set(I,d)),d.push(a)}}getAttributeIndex(t){const e=this._inverseAttributes.indexOf(t);return e===-1?null:e}setRelationMap(t,e){this.relationMaps[t.uuid]=e,this.onRelationsIndexed.trigger({modelID:t.uuid,relationsMap:e})}async process(t){if(!t.hasProperties)throw new Error("FragmentsGroup properties not found");let e=this.relationMaps[t.uuid];if(e)return e;e=new Map;for(const s of this._ifcRels){const n=await t.getAllPropertiesOfType(s);if(!n)continue;const r=this._relToAttributesMap.get(s);if(!r)continue;const{forRelated:o,forRelating:a}=r;for(const l in n){const h=n[l];this.indexRelations(e,h,o,a)}}return this.setRelationMap(t,e),e}async processFromWebIfc(t,e){const s=new Map;for(const n of this._ifcRels){const r=this._relToAttributesMap.get(n);if(!r)continue;const{forRelated:o,forRelating:a}=r,l=t.GetLineIDsWithType(e,n);for(let h=0;h<l.size();h++){const f=await t.properties.getItemProperties(e,l.get(h));this.indexRelations(s,f,o,a)}}return this.onRelationsIndexed.trigger({modelID:e.toString(),relationsMap:s}),s}getEntityRelations(t,e,s){const n=t instanceof Dn.FragmentsGroup?t.uuid:t,r=this.relationMaps[n];if(!r)throw new Error(`IfcRelationsIndexer: model ${n} has no relations indexed.`);const o=r.get(e),a=this.getAttributeIndex(s);if(o===void 0||a===null)return null;const l=o.get(a);return l||null}serializeRelations(t){const e={};for(const[s,n]of t.entries()){e[s]||(e[s]={});for(const[r,o]of n.entries())e[s][r]=o}return JSON.stringify(e)}serializeModelRelations(t){const e=this.relationMaps[t.uuid];return e?this.serializeRelations(e):null}serializeAllRelations(){const t={};for(const e in this.relationMaps){const s=this.relationMaps[e],n={};for(const[r,o]of s.entries()){n[r]||(n[r]={});for(const[a,l]of o.entries())n[r][a]=l}t[e]=n}return JSON.stringify(t)}getRelationsMapFromJSON(t){const e=JSON.parse(t),s=new Map;for(const n in e){const r=e[n],o=new Map;for(const a in r)o.set(Number(a),r[a]);s.set(Number(n),o)}return s}dispose(){this.relationMaps={},this.components.get(pt).onFragmentsDisposed.remove(this.onFragmentsDisposed),this.onDisposed.trigger(Ni.uuid),this.onDisposed.reset()}getEntitiesWithRelation(t,e,s){const n=this.relationMaps[t.uuid];if(!n)throw new Error("IfcRelationsIndexer: the model relations are not indexed!");const r=new Set;for(const[o,a]of n){const l=this.getAttributeIndex(e);if(l===null)throw new Error("IfcRelationsIndexer: invalid inverse attribute name");const h=a.get(l);h&&h.includes(s)&&r.add(o)}return r}addEntityRelations(t,e,s,...n){const r=this.getEntityRelations(t,e,s);if(r)r.push(...n);else{const o=this.getAttributeIndex(s);if(!o)throw new Error(`IfcRelationsIndexer: ${s} is not a valid relation name.`);const a=this.relationMaps[t.uuid].get(e);a==null||a.set(o,n)}}async applyRelationChanges(){const t=this.components.get(pt),e=this.components.get(Es);for(const s in this._changeMap){const n=t.groups.get(s);if(!n)continue;const r=this._changeMap[s];for(const[o,a]of r)for(const[l,h]of a){const{related:f,relID:I}=h;if(I){const u=await n.getProperties(I);if(!u)continue;const d=Object.keys(u),E=d.find(p=>p.startsWith("Related")),T=d.find(p=>p.startsWith("Relating"));if(!(E&&T))continue;u[E]=[...f].map(p=>new k.Handle(p)),u[T]=new k.Handle(l),await e.setData(n,u)}else{const u=await e.createIfcRel(n,o,l,[...f]);if(!u)continue;h.relID=u.expressID}}}}addEntitiesRelation(t,e,s,...n){const{type:r,inv:o}=s,a=this.relationMaps[t.uuid];if(!a||!this._ifcRels.includes(r))return;const l=Sn.get(r);if(!l)return;const{forRelated:h,forRelating:f}=l;if(!(h===o||f===o))return;let I=this._changeMap[t.uuid];I||(I=new se,this._changeMap[t.uuid]=I);const u=f===o?[e]:n,d=h===o?[e]:n;let E=I.get(r);E||(E=new se,E.onItemSet.add(()=>this.onEntitiesRelated.trigger({invAttribute:o,relType:r,relatingIDs:u,relatedIDs:d})),E.onItemUpdated.add(()=>this.onEntitiesRelated.trigger({invAttribute:o,relType:r,relatingIDs:u,relatedIDs:d})),I.set(r,E));for(const T of u){let p=E.get(T);p||(p={related:new ue},E.set(T,p)),p.related.add(...d)}for(const T of u){let p=a.get(T);p||(p=new Map,a.set(T,p));const m=this.getAttributeIndex(f);if(m!==null){let F=p.get(m);F||(F=[],p.set(m,F)),F.push(...d)}}for(const T of d){let p=a.get(T);p||(p=new Map,a.set(T,p));const m=this.getAttributeIndex(h);if(m===null)continue;let F=p.get(m);F||(F=[],p.set(m,F)),F.push(...u)}}getEntityChildren(t,e,s=new Set){if(s.add(e),this.relationMaps[t.uuid]===void 0)throw new Error("The provided model has no indices. You have to generate them first.");const r=this.getEntityRelations(t,e,"IsDecomposedBy");if(r)for(const a of r)this.getEntityChildren(t,a,s);const o=this.getEntityRelations(t,e,"ContainsElements");if(o)for(const a of o)this.getEntityChildren(t,a,s);return s}};C(Ni,"uuid","23a889ab-83b3-44a4-8bee-ead83438370b");let Bt=Ni;const Os=class Os extends mt{constructor(t){super(t);C(this,"onDisposed",new j);C(this,"onFragmentsLoaded",new j);C(this,"onFragmentsDisposed",new j);C(this,"list",new se);C(this,"groups",new se);C(this,"baseCoordinationModel","");C(this,"baseCoordinationMatrix",new b.Matrix4);C(this,"enabled",!0);C(this,"_loader",new Dn.Serializer);this.components.add(Os.uuid,this)}get meshes(){const t=[];for(const[e,s]of this.list)t.push(s.mesh);return t}dispose(){for(const[t,e]of this.groups)e.dispose(!0);this.baseCoordinationModel="",this.groups.clear(),this.list.clear(),this.onFragmentsLoaded.reset(),this.onFragmentsDisposed.reset(),this.onDisposed.trigger(),this.onDisposed.reset()}disposeGroup(t){const{uuid:e}=t,s=[];for(const n of t.items)s.push(n.id),this.list.delete(n.id);t.dispose(!0),this.groups.delete(t.uuid),this.groups.size===0&&(this.baseCoordinationModel="",this.baseCoordinationMatrix=new b.Matrix4),this.onFragmentsDisposed.trigger({groupID:e,fragmentIDs:s})}load(t,e){const n={...{coordinate:!0},...e},{coordinate:r,name:o,properties:a,relationsMap:l}=n,h=this._loader.import(t);e&&(h.isStreamed=e.isStreamed||!1),o&&(h.name=o);for(const f of h.items)f.group=h,this.list.set(f.id,f);return r&&this.coordinate([h]),this.groups.set(h.uuid,h),a&&h.setLocalProperties(a),l&&this.components.get(Bt).setRelationMap(h,l),this.onFragmentsLoaded.trigger(h),h}export(t){return this._loader.export(t)}getModelIdMap(t){const e={};for(const s in t){const n=this.list.get(s);if(!(n&&n.group))continue;const r=n.group;r.uuid in e||(e[r.uuid]=new Set);const o=t[s];for(const a of o)e[r.uuid].add(a)}return e}modelIdToFragmentIdMap(t){let e={};for(const s in t){const n=this.groups.get(s);if(!n)continue;const r=t[s],o=n.getFragmentMap(r);e={...e,...o}}return e}guidToFragmentIdMap(t){const e={};for(const[n,r]of this.groups){n in e||(e[n]=new Set);for(const o of t){const a=r.globalToExpressIDs.get(o);a&&e[n].add(a)}}return this.modelIdToFragmentIdMap(e)}fragmentIdMapToGuids(t){const e=[],s=this.getModelIdMap(t);for(const n in s){const r=this.groups.get(n);if(!r)continue;const o=s[n];for(const a of o)for(const[l,h]of r.globalToExpressIDs.entries())if(h===a){e.push(l);break}}return e}coordinate(t=Array.from(this.groups.values())){if(this.baseCoordinationModel.length===0){const s=t.pop();if(!s)return;this.baseCoordinationModel=s.uuid,this.baseCoordinationMatrix=s.coordinationMatrix.clone()}if(t.length)for(const s of t)s.coordinationMatrix.equals(this.baseCoordinationMatrix)||(s.position.set(0,0,0),s.rotation.set(0,0,0),s.scale.set(1,1,1),s.updateMatrix(),this.applyBaseCoordinateSystem(s,s.coordinationMatrix))}applyBaseCoordinateSystem(t,e){e&&t.applyMatrix4(e.clone().invert()),t.applyMatrix4(this.baseCoordinationMatrix)}clone(t,e){const s=t.cloneGroup(e);this.groups.set(s.uuid,s);for(const n of s.items)this.list.set(n.id,n);return s}};C(Os,"uuid","fef46874-46a3-461b-8c44-2922ab77c806");let pt=Os;var rs=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Nc(c){return c&&c.__esModule&&Object.prototype.hasOwnProperty.call(c,"default")?c.default:c}function os(c){throw new Error('Could not dynamically require "'+c+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Eo={exports:{}};/*!
|
|
129
129
|
|
|
130
130
|
JSZip v3.10.1 - A JavaScript class for generating and reading zip files
|
|
131
131
|
<http://stuartk.com/jszip>
|
|
@@ -135,69 +135,69 @@ Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/js
|
|
|
135
135
|
|
|
136
136
|
JSZip uses the library pako released under the MIT license :
|
|
137
137
|
https://github.com/nodeca/pako/blob/main/LICENSE
|
|
138
|
-
*/(function(c,
|
|
139
|
-
\0`,st+=n(k,2),st+=F.magic,st+=n(R,2),st+=n(C,2),st+=n(nt.crc32,4),st+=n(nt.compressedSize,4),st+=n(nt.uncompressedSize,4),st+=n(v.length,2),st+=n(D.length,2),{fileRecord:u.LOCAL_FILE_HEADER+st+v+D,dirRecord:u.CENTRAL_FILE_HEADER+n(rt,2)+st+n(G.length,2)+"\0\0\0\0"+n(B,4)+n(I,4)+v+D+G}}var o=t("../utils"),a=t("../stream/GenericWorker"),l=t("../utf8"),h=t("../crc32"),u=t("../signature");function d(f,E,p,I){a.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=E,this.zipPlatform=p,this.encodeFileName=I,this.streamFiles=f,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}o.inherits(d,a),d.prototype.push=function(f){var E=f.meta.percent||0,p=this.entriesCount,I=this._sources.length;this.accumulate?this.contentBuffer.push(f):(this.bytesWritten+=f.data.length,a.prototype.push.call(this,{data:f.data,meta:{currentFile:this.currentFile,percent:p?(E+100*(p-I-1))/p:100}}))},d.prototype.openedSource=function(f){this.currentSourceOffset=this.bytesWritten,this.currentFile=f.file.name;var E=this.streamFiles&&!f.file.dir;if(E){var p=r(f,E,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:p.fileRecord,meta:{percent:0}})}else this.accumulate=!0},d.prototype.closedSource=function(f){this.accumulate=!1;var E=this.streamFiles&&!f.file.dir,p=r(f,E,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(p.dirRecord),E)this.push({data:function(I){return u.DATA_DESCRIPTOR+n(I.crc32,4)+n(I.compressedSize,4)+n(I.uncompressedSize,4)}(f),meta:{percent:100}});else for(this.push({data:p.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},d.prototype.flush=function(){for(var f=this.bytesWritten,E=0;E<this.dirRecords.length;E++)this.push({data:this.dirRecords[E],meta:{percent:100}});var p=this.bytesWritten-f,I=function(m,_,R,C,y){var F=o.transformTo("string",y(C));return u.CENTRAL_DIRECTORY_END+"\0\0\0\0"+n(m,2)+n(m,2)+n(_,4)+n(R,4)+n(F.length,2)+F}(this.dirRecords.length,p,f,this.zipComment,this.encodeFileName);this.push({data:I,meta:{percent:100}})},d.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},d.prototype.registerPrevious=function(f){this._sources.push(f);var E=this;return f.on("data",function(p){E.processChunk(p)}),f.on("end",function(){E.closedSource(E.previous.streamInfo),E._sources.length?E.prepareNextSource():E.end()}),f.on("error",function(p){E.error(p)}),this},d.prototype.resume=function(){return!!a.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},d.prototype.error=function(f){var E=this._sources;if(!a.prototype.error.call(this,f))return!1;for(var p=0;p<E.length;p++)try{E[p].error(f)}catch{}return!0},d.prototype.lock=function(){a.prototype.lock.call(this);for(var f=this._sources,E=0;E<f.length;E++)f[E].lock()},s.exports=d},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(t,s,i){var n=t("../compressions"),r=t("./ZipFileWorker");i.generateWorker=function(o,a,l){var h=new r(a.streamFiles,l,a.platform,a.encodeFileName),u=0;try{o.forEach(function(d,f){u++;var E=function(_,R){var C=_||R,y=n[C];if(!y)throw new Error(C+" is not a valid compression method !");return y}(f.options.compression,a.compression),p=f.options.compressionOptions||a.compressionOptions||{},I=f.dir,m=f.date;f._compressWorker(E,p).withStreamInfo("file",{name:d,dir:I,date:m,comment:f.comment||"",unixPermissions:f.unixPermissions,dosPermissions:f.dosPermissions}).pipe(h)}),h.entriesCount=u}catch(d){h.error(d)}return h}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(t,s,i){function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var r=new n;for(var o in this)typeof this[o]!="function"&&(r[o]=this[o]);return r}}(n.prototype=t("./object")).loadAsync=t("./load"),n.support=t("./support"),n.defaults=t("./defaults"),n.version="3.10.1",n.loadAsync=function(r,o){return new n().loadAsync(r,o)},n.external=t("./external"),s.exports=n},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(t,s,i){var n=t("./utils"),r=t("./external"),o=t("./utf8"),a=t("./zipEntries"),l=t("./stream/Crc32Probe"),h=t("./nodejsUtils");function u(d){return new r.Promise(function(f,E){var p=d.decompressed.getContentWorker().pipe(new l);p.on("error",function(I){E(I)}).on("end",function(){p.streamInfo.crc32!==d.decompressed.crc32?E(new Error("Corrupted zip : CRC32 mismatch")):f()}).resume()})}s.exports=function(d,f){var E=this;return f=n.extend(f||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:o.utf8decode}),h.isNode&&h.isStream(d)?r.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):n.prepareContent("the loaded zip file",d,!0,f.optimizedBinaryString,f.base64).then(function(p){var I=new a(f);return I.load(p),I}).then(function(p){var I=[r.Promise.resolve(p)],m=p.files;if(f.checkCRC32)for(var _=0;_<m.length;_++)I.push(u(m[_]));return r.Promise.all(I)}).then(function(p){for(var I=p.shift(),m=I.files,_=0;_<m.length;_++){var R=m[_],C=R.fileNameStr,y=n.resolve(R.fileNameStr);E.file(y,R.decompressed,{binary:!0,optimizedBinaryString:!0,date:R.date,dir:R.dir,comment:R.fileCommentStr.length?R.fileCommentStr:null,unixPermissions:R.unixPermissions,dosPermissions:R.dosPermissions,createFolders:f.createFolders}),R.dir||(E.file(y).unsafeOriginalName=C)}return I.zipComment.length&&(E.comment=I.zipComment),E})}},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(t,s,i){var n=t("../utils"),r=t("../stream/GenericWorker");function o(a,l){r.call(this,"Nodejs stream input adapter for "+a),this._upstreamEnded=!1,this._bindStream(l)}n.inherits(o,r),o.prototype._bindStream=function(a){var l=this;(this._stream=a).pause(),a.on("data",function(h){l.push({data:h,meta:{percent:0}})}).on("error",function(h){l.isPaused?this.generatedError=h:l.error(h)}).on("end",function(){l.isPaused?l._upstreamEnded=!0:l.end()})},o.prototype.pause=function(){return!!r.prototype.pause.call(this)&&(this._stream.pause(),!0)},o.prototype.resume=function(){return!!r.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},s.exports=o},{"../stream/GenericWorker":28,"../utils":32}],13:[function(t,s,i){var n=t("readable-stream").Readable;function r(o,a,l){n.call(this,a),this._helper=o;var h=this;o.on("data",function(u,d){h.push(u)||h._helper.pause(),l&&l(d)}).on("error",function(u){h.emit("error",u)}).on("end",function(){h.push(null)})}t("../utils").inherits(r,n),r.prototype._read=function(){this._helper.resume()},s.exports=r},{"../utils":32,"readable-stream":16}],14:[function(t,s,i){s.exports={isNode:typeof Buffer<"u",newBufferFrom:function(n,r){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(n,r);if(typeof n=="number")throw new Error('The "data" argument must not be a number');return new Buffer(n,r)},allocBuffer:function(n){if(Buffer.alloc)return Buffer.alloc(n);var r=new Buffer(n);return r.fill(0),r},isBuffer:function(n){return Buffer.isBuffer(n)},isStream:function(n){return n&&typeof n.on=="function"&&typeof n.pause=="function"&&typeof n.resume=="function"}}},{}],15:[function(t,s,i){function n(y,F,O){var v,N=o.getTypeOf(F),x=o.extend(O||{},h);x.date=x.date||new Date,x.compression!==null&&(x.compression=x.compression.toUpperCase()),typeof x.unixPermissions=="string"&&(x.unixPermissions=parseInt(x.unixPermissions,8)),x.unixPermissions&&16384&x.unixPermissions&&(x.dir=!0),x.dosPermissions&&16&x.dosPermissions&&(x.dir=!0),x.dir&&(y=m(y)),x.createFolders&&(v=I(y))&&_.call(this,v,!0);var G=N==="string"&&x.binary===!1&&x.base64===!1;O&&O.binary!==void 0||(x.binary=!G),(F instanceof u&&F.uncompressedSize===0||x.dir||!F||F.length===0)&&(x.base64=!1,x.binary=!0,F="",x.compression="STORE",N="string");var w=null;w=F instanceof u||F instanceof a?F:E.isNode&&E.isStream(F)?new p(y,F):o.prepareContent(y,F,x.binary,x.optimizedBinaryString,x.base64);var L=new d(y,w,x);this.files[y]=L}var r=t("./utf8"),o=t("./utils"),a=t("./stream/GenericWorker"),l=t("./stream/StreamHelper"),h=t("./defaults"),u=t("./compressedObject"),d=t("./zipObject"),f=t("./generate"),E=t("./nodejsUtils"),p=t("./nodejs/NodejsStreamInputAdapter"),I=function(y){y.slice(-1)==="/"&&(y=y.substring(0,y.length-1));var F=y.lastIndexOf("/");return 0<F?y.substring(0,F):""},m=function(y){return y.slice(-1)!=="/"&&(y+="/"),y},_=function(y,F){return F=F!==void 0?F:h.createFolders,y=m(y),this.files[y]||n.call(this,y,null,{dir:!0,createFolders:F}),this.files[y]};function R(y){return Object.prototype.toString.call(y)==="[object RegExp]"}var C={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(y){var F,O,v;for(F in this.files)v=this.files[F],(O=F.slice(this.root.length,F.length))&&F.slice(0,this.root.length)===this.root&&y(O,v)},filter:function(y){var F=[];return this.forEach(function(O,v){y(O,v)&&F.push(v)}),F},file:function(y,F,O){if(arguments.length!==1)return y=this.root+y,n.call(this,y,F,O),this;if(R(y)){var v=y;return this.filter(function(x,G){return!G.dir&&v.test(x)})}var N=this.files[this.root+y];return N&&!N.dir?N:null},folder:function(y){if(!y)return this;if(R(y))return this.filter(function(N,x){return x.dir&&y.test(N)});var F=this.root+y,O=_.call(this,F),v=this.clone();return v.root=O.name,v},remove:function(y){y=this.root+y;var F=this.files[y];if(F||(y.slice(-1)!=="/"&&(y+="/"),F=this.files[y]),F&&!F.dir)delete this.files[y];else for(var O=this.filter(function(N,x){return x.name.slice(0,y.length)===y}),v=0;v<O.length;v++)delete this.files[O[v].name];return this},generate:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(y){var F,O={};try{if((O=o.extend(y||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:r.utf8encode})).type=O.type.toLowerCase(),O.compression=O.compression.toUpperCase(),O.type==="binarystring"&&(O.type="string"),!O.type)throw new Error("No output type specified.");o.checkSupport(O.type),O.platform!=="darwin"&&O.platform!=="freebsd"&&O.platform!=="linux"&&O.platform!=="sunos"||(O.platform="UNIX"),O.platform==="win32"&&(O.platform="DOS");var v=O.comment||this.comment||"";F=f.generateWorker(this,O,v)}catch(N){(F=new a("error")).error(N)}return new l(F,O.type||"string",O.mimeType)},generateAsync:function(y,F){return this.generateInternalStream(y).accumulate(F)},generateNodeStream:function(y,F){return(y=y||{}).type||(y.type="nodebuffer"),this.generateInternalStream(y).toNodejsStream(F)}};s.exports=C},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(t,s,i){s.exports=t("stream")},{stream:void 0}],17:[function(t,s,i){var n=t("./DataReader");function r(o){n.call(this,o);for(var a=0;a<this.data.length;a++)o[a]=255&o[a]}t("../utils").inherits(r,n),r.prototype.byteAt=function(o){return this.data[this.zero+o]},r.prototype.lastIndexOfSignature=function(o){for(var a=o.charCodeAt(0),l=o.charCodeAt(1),h=o.charCodeAt(2),u=o.charCodeAt(3),d=this.length-4;0<=d;--d)if(this.data[d]===a&&this.data[d+1]===l&&this.data[d+2]===h&&this.data[d+3]===u)return d-this.zero;return-1},r.prototype.readAndCheckSignature=function(o){var a=o.charCodeAt(0),l=o.charCodeAt(1),h=o.charCodeAt(2),u=o.charCodeAt(3),d=this.readData(4);return a===d[0]&&l===d[1]&&h===d[2]&&u===d[3]},r.prototype.readData=function(o){if(this.checkOffset(o),o===0)return[];var a=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,a},s.exports=r},{"../utils":32,"./DataReader":18}],18:[function(t,s,i){var n=t("../utils");function r(o){this.data=o,this.length=o.length,this.index=0,this.zero=0}r.prototype={checkOffset:function(o){this.checkIndex(this.index+o)},checkIndex:function(o){if(this.length<this.zero+o||o<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+o+"). Corrupted zip ?")},setIndex:function(o){this.checkIndex(o),this.index=o},skip:function(o){this.setIndex(this.index+o)},byteAt:function(){},readInt:function(o){var a,l=0;for(this.checkOffset(o),a=this.index+o-1;a>=this.index;a--)l=(l<<8)+this.byteAt(a);return this.index+=o,l},readString:function(o){return n.transformTo("string",this.readData(o))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var o=this.readInt(4);return new Date(Date.UTC(1980+(o>>25&127),(o>>21&15)-1,o>>16&31,o>>11&31,o>>5&63,(31&o)<<1))}},s.exports=r},{"../utils":32}],19:[function(t,s,i){var n=t("./Uint8ArrayReader");function r(o){n.call(this,o)}t("../utils").inherits(r,n),r.prototype.readData=function(o){this.checkOffset(o);var a=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,a},s.exports=r},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(t,s,i){var n=t("./DataReader");function r(o){n.call(this,o)}t("../utils").inherits(r,n),r.prototype.byteAt=function(o){return this.data.charCodeAt(this.zero+o)},r.prototype.lastIndexOfSignature=function(o){return this.data.lastIndexOf(o)-this.zero},r.prototype.readAndCheckSignature=function(o){return o===this.readData(4)},r.prototype.readData=function(o){this.checkOffset(o);var a=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,a},s.exports=r},{"../utils":32,"./DataReader":18}],21:[function(t,s,i){var n=t("./ArrayReader");function r(o){n.call(this,o)}t("../utils").inherits(r,n),r.prototype.readData=function(o){if(this.checkOffset(o),o===0)return new Uint8Array(0);var a=this.data.subarray(this.zero+this.index,this.zero+this.index+o);return this.index+=o,a},s.exports=r},{"../utils":32,"./ArrayReader":17}],22:[function(t,s,i){var n=t("../utils"),r=t("../support"),o=t("./ArrayReader"),a=t("./StringReader"),l=t("./NodeBufferReader"),h=t("./Uint8ArrayReader");s.exports=function(u){var d=n.getTypeOf(u);return n.checkSupport(d),d!=="string"||r.uint8array?d==="nodebuffer"?new l(u):r.uint8array?new h(n.transformTo("uint8array",u)):new o(n.transformTo("array",u)):new a(u)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(t,s,i){i.LOCAL_FILE_HEADER="PK",i.CENTRAL_FILE_HEADER="PK",i.CENTRAL_DIRECTORY_END="PK",i.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",i.ZIP64_CENTRAL_DIRECTORY_END="PK",i.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(t,s,i){var n=t("./GenericWorker"),r=t("../utils");function o(a){n.call(this,"ConvertWorker to "+a),this.destType=a}r.inherits(o,n),o.prototype.processChunk=function(a){this.push({data:r.transformTo(this.destType,a.data),meta:a.meta})},s.exports=o},{"../utils":32,"./GenericWorker":28}],25:[function(t,s,i){var n=t("./GenericWorker"),r=t("../crc32");function o(){n.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}t("../utils").inherits(o,n),o.prototype.processChunk=function(a){this.streamInfo.crc32=r(a.data,this.streamInfo.crc32||0),this.push(a)},s.exports=o},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(t,s,i){var n=t("../utils"),r=t("./GenericWorker");function o(a){r.call(this,"DataLengthProbe for "+a),this.propName=a,this.withStreamInfo(a,0)}n.inherits(o,r),o.prototype.processChunk=function(a){if(a){var l=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=l+a.data.length}r.prototype.processChunk.call(this,a)},s.exports=o},{"../utils":32,"./GenericWorker":28}],27:[function(t,s,i){var n=t("../utils"),r=t("./GenericWorker");function o(a){r.call(this,"DataWorker");var l=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,a.then(function(h){l.dataIsReady=!0,l.data=h,l.max=h&&h.length||0,l.type=n.getTypeOf(h),l.isPaused||l._tickAndRepeat()},function(h){l.error(h)})}n.inherits(o,r),o.prototype.cleanUp=function(){r.prototype.cleanUp.call(this),this.data=null},o.prototype.resume=function(){return!!r.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},o.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},o.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var a=null,l=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":a=this.data.substring(this.index,l);break;case"uint8array":a=this.data.subarray(this.index,l);break;case"array":case"nodebuffer":a=this.data.slice(this.index,l)}return this.index=l,this.push({data:a,meta:{percent:this.max?this.index/this.max*100:0}})},s.exports=o},{"../utils":32,"./GenericWorker":28}],28:[function(t,s,i){function n(r){this.name=r||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(r){this.emit("data",r)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(r){this.emit("error",r)}return!0},error:function(r){return!this.isFinished&&(this.isPaused?this.generatedError=r:(this.isFinished=!0,this.emit("error",r),this.previous&&this.previous.error(r),this.cleanUp()),!0)},on:function(r,o){return this._listeners[r].push(o),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(r,o){if(this._listeners[r])for(var a=0;a<this._listeners[r].length;a++)this._listeners[r][a].call(this,o)},pipe:function(r){return r.registerPrevious(this)},registerPrevious:function(r){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.streamInfo=r.streamInfo,this.mergeStreamInfo(),this.previous=r;var o=this;return r.on("data",function(a){o.processChunk(a)}),r.on("end",function(){o.end()}),r.on("error",function(a){o.error(a)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var r=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),r=!0),this.previous&&this.previous.resume(),!r},flush:function(){},processChunk:function(r){this.push(r)},withStreamInfo:function(r,o){return this.extraStreamInfo[r]=o,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var r in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,r)&&(this.streamInfo[r]=this.extraStreamInfo[r])},lock:function(){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var r="Worker "+this.name;return this.previous?this.previous+" -> "+r:r}},s.exports=n},{}],29:[function(t,s,i){var n=t("../utils"),r=t("./ConvertWorker"),o=t("./GenericWorker"),a=t("../base64"),l=t("../support"),h=t("../external"),u=null;if(l.nodestream)try{u=t("../nodejs/NodejsStreamOutputAdapter")}catch{}function d(E,p){return new h.Promise(function(I,m){var _=[],R=E._internalType,C=E._outputType,y=E._mimeType;E.on("data",function(F,O){_.push(F),p&&p(O)}).on("error",function(F){_=[],m(F)}).on("end",function(){try{var F=function(O,v,N){switch(O){case"blob":return n.newBlob(n.transformTo("arraybuffer",v),N);case"base64":return a.encode(v);default:return n.transformTo(O,v)}}(C,function(O,v){var N,x=0,G=null,w=0;for(N=0;N<v.length;N++)w+=v[N].length;switch(O){case"string":return v.join("");case"array":return Array.prototype.concat.apply([],v);case"uint8array":for(G=new Uint8Array(w),N=0;N<v.length;N++)G.set(v[N],x),x+=v[N].length;return G;case"nodebuffer":return Buffer.concat(v);default:throw new Error("concat : unsupported type '"+O+"'")}}(R,_),y);I(F)}catch(O){m(O)}_=[]}).resume()})}function f(E,p,I){var m=p;switch(p){case"blob":case"arraybuffer":m="uint8array";break;case"base64":m="string"}try{this._internalType=m,this._outputType=p,this._mimeType=I,n.checkSupport(m),this._worker=E.pipe(new r(m)),E.lock()}catch(_){this._worker=new o("error"),this._worker.error(_)}}f.prototype={accumulate:function(E){return d(this,E)},on:function(E,p){var I=this;return E==="data"?this._worker.on(E,function(m){p.call(I,m.data,m.meta)}):this._worker.on(E,function(){n.delay(p,arguments,I)}),this},resume:function(){return n.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(E){if(n.checkSupport("nodestream"),this._outputType!=="nodebuffer")throw new Error(this._outputType+" is not supported by this method");return new u(this,{objectMode:this._outputType!=="nodebuffer"},E)}},s.exports=f},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(t,s,i){if(i.base64=!0,i.array=!0,i.string=!0,i.arraybuffer=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u",i.nodebuffer=typeof Buffer<"u",i.uint8array=typeof Uint8Array<"u",typeof ArrayBuffer>"u")i.blob=!1;else{var n=new ArrayBuffer(0);try{i.blob=new Blob([n],{type:"application/zip"}).size===0}catch{try{var r=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);r.append(n),i.blob=r.getBlob("application/zip").size===0}catch{i.blob=!1}}}try{i.nodestream=!!t("readable-stream").Readable}catch{i.nodestream=!1}},{"readable-stream":16}],31:[function(t,s,i){for(var n=t("./utils"),r=t("./support"),o=t("./nodejsUtils"),a=t("./stream/GenericWorker"),l=new Array(256),h=0;h<256;h++)l[h]=252<=h?6:248<=h?5:240<=h?4:224<=h?3:192<=h?2:1;l[254]=l[254]=1;function u(){a.call(this,"utf-8 decode"),this.leftOver=null}function d(){a.call(this,"utf-8 encode")}i.utf8encode=function(f){return r.nodebuffer?o.newBufferFrom(f,"utf-8"):function(E){var p,I,m,_,R,C=E.length,y=0;for(_=0;_<C;_++)(64512&(I=E.charCodeAt(_)))==55296&&_+1<C&&(64512&(m=E.charCodeAt(_+1)))==56320&&(I=65536+(I-55296<<10)+(m-56320),_++),y+=I<128?1:I<2048?2:I<65536?3:4;for(p=r.uint8array?new Uint8Array(y):new Array(y),_=R=0;R<y;_++)(64512&(I=E.charCodeAt(_)))==55296&&_+1<C&&(64512&(m=E.charCodeAt(_+1)))==56320&&(I=65536+(I-55296<<10)+(m-56320),_++),I<128?p[R++]=I:(I<2048?p[R++]=192|I>>>6:(I<65536?p[R++]=224|I>>>12:(p[R++]=240|I>>>18,p[R++]=128|I>>>12&63),p[R++]=128|I>>>6&63),p[R++]=128|63&I);return p}(f)},i.utf8decode=function(f){return r.nodebuffer?n.transformTo("nodebuffer",f).toString("utf-8"):function(E){var p,I,m,_,R=E.length,C=new Array(2*R);for(p=I=0;p<R;)if((m=E[p++])<128)C[I++]=m;else if(4<(_=l[m]))C[I++]=65533,p+=_-1;else{for(m&=_===2?31:_===3?15:7;1<_&&p<R;)m=m<<6|63&E[p++],_--;1<_?C[I++]=65533:m<65536?C[I++]=m:(m-=65536,C[I++]=55296|m>>10&1023,C[I++]=56320|1023&m)}return C.length!==I&&(C.subarray?C=C.subarray(0,I):C.length=I),n.applyFromCharCode(C)}(f=n.transformTo(r.uint8array?"uint8array":"array",f))},n.inherits(u,a),u.prototype.processChunk=function(f){var E=n.transformTo(r.uint8array?"uint8array":"array",f.data);if(this.leftOver&&this.leftOver.length){if(r.uint8array){var p=E;(E=new Uint8Array(p.length+this.leftOver.length)).set(this.leftOver,0),E.set(p,this.leftOver.length)}else E=this.leftOver.concat(E);this.leftOver=null}var I=function(_,R){var C;for((R=R||_.length)>_.length&&(R=_.length),C=R-1;0<=C&&(192&_[C])==128;)C--;return C<0||C===0?R:C+l[_[C]]>R?C:R}(E),m=E;I!==E.length&&(r.uint8array?(m=E.subarray(0,I),this.leftOver=E.subarray(I,E.length)):(m=E.slice(0,I),this.leftOver=E.slice(I,E.length))),this.push({data:i.utf8decode(m),meta:f.meta})},u.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:i.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},i.Utf8DecodeWorker=u,n.inherits(d,a),d.prototype.processChunk=function(f){this.push({data:i.utf8encode(f.data),meta:f.meta})},i.Utf8EncodeWorker=d},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(t,s,i){var n=t("./support"),r=t("./base64"),o=t("./nodejsUtils"),a=t("./external");function l(p){return p}function h(p,I){for(var m=0;m<p.length;++m)I[m]=255&p.charCodeAt(m);return I}t("setimmediate"),i.newBlob=function(p,I){i.checkSupport("blob");try{return new Blob([p],{type:I})}catch{try{var m=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return m.append(p),m.getBlob(I)}catch{throw new Error("Bug : can't construct the Blob.")}}};var u={stringifyByChunk:function(p,I,m){var _=[],R=0,C=p.length;if(C<=m)return String.fromCharCode.apply(null,p);for(;R<C;)I==="array"||I==="nodebuffer"?_.push(String.fromCharCode.apply(null,p.slice(R,Math.min(R+m,C)))):_.push(String.fromCharCode.apply(null,p.subarray(R,Math.min(R+m,C)))),R+=m;return _.join("")},stringifyByChar:function(p){for(var I="",m=0;m<p.length;m++)I+=String.fromCharCode(p[m]);return I},applyCanBeUsed:{uint8array:function(){try{return n.uint8array&&String.fromCharCode.apply(null,new Uint8Array(1)).length===1}catch{return!1}}(),nodebuffer:function(){try{return n.nodebuffer&&String.fromCharCode.apply(null,o.allocBuffer(1)).length===1}catch{return!1}}()}};function d(p){var I=65536,m=i.getTypeOf(p),_=!0;if(m==="uint8array"?_=u.applyCanBeUsed.uint8array:m==="nodebuffer"&&(_=u.applyCanBeUsed.nodebuffer),_)for(;1<I;)try{return u.stringifyByChunk(p,m,I)}catch{I=Math.floor(I/2)}return u.stringifyByChar(p)}function f(p,I){for(var m=0;m<p.length;m++)I[m]=p[m];return I}i.applyFromCharCode=d;var E={};E.string={string:l,array:function(p){return h(p,new Array(p.length))},arraybuffer:function(p){return E.string.uint8array(p).buffer},uint8array:function(p){return h(p,new Uint8Array(p.length))},nodebuffer:function(p){return h(p,o.allocBuffer(p.length))}},E.array={string:d,array:l,arraybuffer:function(p){return new Uint8Array(p).buffer},uint8array:function(p){return new Uint8Array(p)},nodebuffer:function(p){return o.newBufferFrom(p)}},E.arraybuffer={string:function(p){return d(new Uint8Array(p))},array:function(p){return f(new Uint8Array(p),new Array(p.byteLength))},arraybuffer:l,uint8array:function(p){return new Uint8Array(p)},nodebuffer:function(p){return o.newBufferFrom(new Uint8Array(p))}},E.uint8array={string:d,array:function(p){return f(p,new Array(p.length))},arraybuffer:function(p){return p.buffer},uint8array:l,nodebuffer:function(p){return o.newBufferFrom(p)}},E.nodebuffer={string:d,array:function(p){return f(p,new Array(p.length))},arraybuffer:function(p){return E.nodebuffer.uint8array(p).buffer},uint8array:function(p){return f(p,new Uint8Array(p.length))},nodebuffer:l},i.transformTo=function(p,I){if(I=I||"",!p)return I;i.checkSupport(p);var m=i.getTypeOf(I);return E[m][p](I)},i.resolve=function(p){for(var I=p.split("/"),m=[],_=0;_<I.length;_++){var R=I[_];R==="."||R===""&&_!==0&&_!==I.length-1||(R===".."?m.pop():m.push(R))}return m.join("/")},i.getTypeOf=function(p){return typeof p=="string"?"string":Object.prototype.toString.call(p)==="[object Array]"?"array":n.nodebuffer&&o.isBuffer(p)?"nodebuffer":n.uint8array&&p instanceof Uint8Array?"uint8array":n.arraybuffer&&p instanceof ArrayBuffer?"arraybuffer":void 0},i.checkSupport=function(p){if(!n[p.toLowerCase()])throw new Error(p+" is not supported by this platform")},i.MAX_VALUE_16BITS=65535,i.MAX_VALUE_32BITS=-1,i.pretty=function(p){var I,m,_="";for(m=0;m<(p||"").length;m++)_+="\\x"+((I=p.charCodeAt(m))<16?"0":"")+I.toString(16).toUpperCase();return _},i.delay=function(p,I,m){setImmediate(function(){p.apply(m||null,I||[])})},i.inherits=function(p,I){function m(){}m.prototype=I.prototype,p.prototype=new m},i.extend=function(){var p,I,m={};for(p=0;p<arguments.length;p++)for(I in arguments[p])Object.prototype.hasOwnProperty.call(arguments[p],I)&&m[I]===void 0&&(m[I]=arguments[p][I]);return m},i.prepareContent=function(p,I,m,_,R){return a.Promise.resolve(I).then(function(C){return n.blob&&(C instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(C))!==-1)&&typeof FileReader<"u"?new a.Promise(function(y,F){var O=new FileReader;O.onload=function(v){y(v.target.result)},O.onerror=function(v){F(v.target.error)},O.readAsArrayBuffer(C)}):C}).then(function(C){var y=i.getTypeOf(C);return y?(y==="arraybuffer"?C=i.transformTo("uint8array",C):y==="string"&&(R?C=r.decode(C):m&&_!==!0&&(C=function(F){return h(F,n.uint8array?new Uint8Array(F.length):new Array(F.length))}(C))),C):a.Promise.reject(new Error("Can't read the data of '"+p+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,setimmediate:54}],33:[function(t,s,i){var n=t("./reader/readerFor"),r=t("./utils"),o=t("./signature"),a=t("./zipEntry"),l=t("./support");function h(u){this.files=[],this.loadOptions=u}h.prototype={checkSignature:function(u){if(!this.reader.readAndCheckSignature(u)){this.reader.index-=4;var d=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+r.pretty(d)+", expected "+r.pretty(u)+")")}},isSignature:function(u,d){var f=this.reader.index;this.reader.setIndex(u);var E=this.reader.readString(4)===d;return this.reader.setIndex(f),E},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var u=this.reader.readData(this.zipCommentLength),d=l.uint8array?"uint8array":"array",f=r.transformTo(d,u);this.zipComment=this.loadOptions.decodeFileName(f)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var u,d,f,E=this.zip64EndOfCentralSize-44;0<E;)u=this.reader.readInt(2),d=this.reader.readInt(4),f=this.reader.readData(d),this.zip64ExtensibleData[u]={id:u,length:d,value:f}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var u,d;for(u=0;u<this.files.length;u++)d=this.files[u],this.reader.setIndex(d.localHeaderOffset),this.checkSignature(o.LOCAL_FILE_HEADER),d.readLocalPart(this.reader),d.handleUTF8(),d.processAttributes()},readCentralDir:function(){var u;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(o.CENTRAL_FILE_HEADER);)(u=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(u);if(this.centralDirRecords!==this.files.length&&this.centralDirRecords!==0&&this.files.length===0)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var u=this.reader.lastIndexOfSignature(o.CENTRAL_DIRECTORY_END);if(u<0)throw this.isSignature(0,o.LOCAL_FILE_HEADER)?new Error("Corrupted zip: can't find end of central directory"):new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");this.reader.setIndex(u);var d=u;if(this.checkSignature(o.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===r.MAX_VALUE_16BITS||this.diskWithCentralDirStart===r.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===r.MAX_VALUE_16BITS||this.centralDirRecords===r.MAX_VALUE_16BITS||this.centralDirSize===r.MAX_VALUE_32BITS||this.centralDirOffset===r.MAX_VALUE_32BITS){if(this.zip64=!0,(u=this.reader.lastIndexOfSignature(o.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(u),this.checkSignature(o.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,o.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(o.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(o.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var f=this.centralDirOffset+this.centralDirSize;this.zip64&&(f+=20,f+=12+this.zip64EndOfCentralSize);var E=d-f;if(0<E)this.isSignature(d,o.CENTRAL_FILE_HEADER)||(this.reader.zero=E);else if(E<0)throw new Error("Corrupted zip: missing "+Math.abs(E)+" bytes.")},prepareReader:function(u){this.reader=n(u)},load:function(u){this.prepareReader(u),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},s.exports=h},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utils":32,"./zipEntry":34}],34:[function(t,s,i){var n=t("./reader/readerFor"),r=t("./utils"),o=t("./compressedObject"),a=t("./crc32"),l=t("./utf8"),h=t("./compressions"),u=t("./support");function d(f,E){this.options=f,this.loadOptions=E}d.prototype={isEncrypted:function(){return(1&this.bitFlag)==1},useUTF8:function(){return(2048&this.bitFlag)==2048},readLocalPart:function(f){var E,p;if(f.skip(22),this.fileNameLength=f.readInt(2),p=f.readInt(2),this.fileName=f.readData(this.fileNameLength),f.skip(p),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if((E=function(I){for(var m in h)if(Object.prototype.hasOwnProperty.call(h,m)&&h[m].magic===I)return h[m];return null}(this.compressionMethod))===null)throw new Error("Corrupted zip : compression "+r.pretty(this.compressionMethod)+" unknown (inner file : "+r.transformTo("string",this.fileName)+")");this.decompressed=new o(this.compressedSize,this.uncompressedSize,this.crc32,E,f.readData(this.compressedSize))},readCentralPart:function(f){this.versionMadeBy=f.readInt(2),f.skip(2),this.bitFlag=f.readInt(2),this.compressionMethod=f.readString(2),this.date=f.readDate(),this.crc32=f.readInt(4),this.compressedSize=f.readInt(4),this.uncompressedSize=f.readInt(4);var E=f.readInt(2);if(this.extraFieldsLength=f.readInt(2),this.fileCommentLength=f.readInt(2),this.diskNumberStart=f.readInt(2),this.internalFileAttributes=f.readInt(2),this.externalFileAttributes=f.readInt(4),this.localHeaderOffset=f.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");f.skip(E),this.readExtraFields(f),this.parseZIP64ExtraField(f),this.fileComment=f.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var f=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),f==0&&(this.dosPermissions=63&this.externalFileAttributes),f==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var f=n(this.extraFields[1].value);this.uncompressedSize===r.MAX_VALUE_32BITS&&(this.uncompressedSize=f.readInt(8)),this.compressedSize===r.MAX_VALUE_32BITS&&(this.compressedSize=f.readInt(8)),this.localHeaderOffset===r.MAX_VALUE_32BITS&&(this.localHeaderOffset=f.readInt(8)),this.diskNumberStart===r.MAX_VALUE_32BITS&&(this.diskNumberStart=f.readInt(4))}},readExtraFields:function(f){var E,p,I,m=f.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});f.index+4<m;)E=f.readInt(2),p=f.readInt(2),I=f.readData(p),this.extraFields[E]={id:E,length:p,value:I};f.setIndex(m)},handleUTF8:function(){var f=u.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=l.utf8decode(this.fileName),this.fileCommentStr=l.utf8decode(this.fileComment);else{var E=this.findExtraFieldUnicodePath();if(E!==null)this.fileNameStr=E;else{var p=r.transformTo(f,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(p)}var I=this.findExtraFieldUnicodeComment();if(I!==null)this.fileCommentStr=I;else{var m=r.transformTo(f,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(m)}}},findExtraFieldUnicodePath:function(){var f=this.extraFields[28789];if(f){var E=n(f.value);return E.readInt(1)!==1||a(this.fileName)!==E.readInt(4)?null:l.utf8decode(E.readData(f.length-5))}return null},findExtraFieldUnicodeComment:function(){var f=this.extraFields[25461];if(f){var E=n(f.value);return E.readInt(1)!==1||a(this.fileComment)!==E.readInt(4)?null:l.utf8decode(E.readData(f.length-5))}return null}},s.exports=d},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(t,s,i){function n(E,p,I){this.name=E,this.dir=I.dir,this.date=I.date,this.comment=I.comment,this.unixPermissions=I.unixPermissions,this.dosPermissions=I.dosPermissions,this._data=p,this._dataBinary=I.binary,this.options={compression:I.compression,compressionOptions:I.compressionOptions}}var r=t("./stream/StreamHelper"),o=t("./stream/DataWorker"),a=t("./utf8"),l=t("./compressedObject"),h=t("./stream/GenericWorker");n.prototype={internalStream:function(E){var p=null,I="string";try{if(!E)throw new Error("No output type specified.");var m=(I=E.toLowerCase())==="string"||I==="text";I!=="binarystring"&&I!=="text"||(I="string"),p=this._decompressWorker();var _=!this._dataBinary;_&&!m&&(p=p.pipe(new a.Utf8EncodeWorker)),!_&&m&&(p=p.pipe(new a.Utf8DecodeWorker))}catch(R){(p=new h("error")).error(R)}return new r(p,I,"")},async:function(E,p){return this.internalStream(E).accumulate(p)},nodeStream:function(E,p){return this.internalStream(E||"nodebuffer").toNodejsStream(p)},_compressWorker:function(E,p){if(this._data instanceof l&&this._data.compression.magic===E.magic)return this._data.getCompressedWorker();var I=this._decompressWorker();return this._dataBinary||(I=I.pipe(new a.Utf8EncodeWorker)),l.createWorkerFrom(I,E,p)},_decompressWorker:function(){return this._data instanceof l?this._data.getContentWorker():this._data instanceof h?this._data:new o(this._data)}};for(var u=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],d=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},f=0;f<u.length;f++)n.prototype[u[f]]=d;s.exports=n},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(t,s,i){(function(n){var r,o,a=n.MutationObserver||n.WebKitMutationObserver;if(a){var l=0,h=new a(E),u=n.document.createTextNode("");h.observe(u,{characterData:!0}),r=function(){u.data=l=++l%2}}else if(n.setImmediate||n.MessageChannel===void 0)r="document"in n&&"onreadystatechange"in n.document.createElement("script")?function(){var p=n.document.createElement("script");p.onreadystatechange=function(){E(),p.onreadystatechange=null,p.parentNode.removeChild(p),p=null},n.document.documentElement.appendChild(p)}:function(){setTimeout(E,0)};else{var d=new n.MessageChannel;d.port1.onmessage=E,r=function(){d.port2.postMessage(0)}}var f=[];function E(){var p,I;o=!0;for(var m=f.length;m;){for(I=f,f=[],p=-1;++p<m;)I[p]();m=f.length}o=!1}s.exports=function(p){f.push(p)!==1||o||r()}}).call(this,typeof js<"u"?js:typeof self<"u"?self:typeof window<"u"?window:{})},{}],37:[function(t,s,i){var n=t("immediate");function r(){}var o={},a=["REJECTED"],l=["FULFILLED"],h=["PENDING"];function u(m){if(typeof m!="function")throw new TypeError("resolver must be a function");this.state=h,this.queue=[],this.outcome=void 0,m!==r&&p(this,m)}function d(m,_,R){this.promise=m,typeof _=="function"&&(this.onFulfilled=_,this.callFulfilled=this.otherCallFulfilled),typeof R=="function"&&(this.onRejected=R,this.callRejected=this.otherCallRejected)}function f(m,_,R){n(function(){var C;try{C=_(R)}catch(y){return o.reject(m,y)}C===m?o.reject(m,new TypeError("Cannot resolve promise with itself")):o.resolve(m,C)})}function E(m){var _=m&&m.then;if(m&&(typeof m=="object"||typeof m=="function")&&typeof _=="function")return function(){_.apply(m,arguments)}}function p(m,_){var R=!1;function C(O){R||(R=!0,o.reject(m,O))}function y(O){R||(R=!0,o.resolve(m,O))}var F=I(function(){_(y,C)});F.status==="error"&&C(F.value)}function I(m,_){var R={};try{R.value=m(_),R.status="success"}catch(C){R.status="error",R.value=C}return R}(s.exports=u).prototype.finally=function(m){if(typeof m!="function")return this;var _=this.constructor;return this.then(function(R){return _.resolve(m()).then(function(){return R})},function(R){return _.resolve(m()).then(function(){throw R})})},u.prototype.catch=function(m){return this.then(null,m)},u.prototype.then=function(m,_){if(typeof m!="function"&&this.state===l||typeof _!="function"&&this.state===a)return this;var R=new this.constructor(r);return this.state!==h?f(R,this.state===l?m:_,this.outcome):this.queue.push(new d(R,m,_)),R},d.prototype.callFulfilled=function(m){o.resolve(this.promise,m)},d.prototype.otherCallFulfilled=function(m){f(this.promise,this.onFulfilled,m)},d.prototype.callRejected=function(m){o.reject(this.promise,m)},d.prototype.otherCallRejected=function(m){f(this.promise,this.onRejected,m)},o.resolve=function(m,_){var R=I(E,_);if(R.status==="error")return o.reject(m,R.value);var C=R.value;if(C)p(m,C);else{m.state=l,m.outcome=_;for(var y=-1,F=m.queue.length;++y<F;)m.queue[y].callFulfilled(_)}return m},o.reject=function(m,_){m.state=a,m.outcome=_;for(var R=-1,C=m.queue.length;++R<C;)m.queue[R].callRejected(_);return m},u.resolve=function(m){return m instanceof this?m:o.resolve(new this(r),m)},u.reject=function(m){var _=new this(r);return o.reject(_,m)},u.all=function(m){var _=this;if(Object.prototype.toString.call(m)!=="[object Array]")return this.reject(new TypeError("must be an array"));var R=m.length,C=!1;if(!R)return this.resolve([]);for(var y=new Array(R),F=0,O=-1,v=new this(r);++O<R;)N(m[O],O);return v;function N(x,G){_.resolve(x).then(function(w){y[G]=w,++F!==R||C||(C=!0,o.resolve(v,y))},function(w){C||(C=!0,o.reject(v,w))})}},u.race=function(m){var _=this;if(Object.prototype.toString.call(m)!=="[object Array]")return this.reject(new TypeError("must be an array"));var R=m.length,C=!1;if(!R)return this.resolve([]);for(var y=-1,F=new this(r);++y<R;)O=m[y],_.resolve(O).then(function(v){C||(C=!0,o.resolve(F,v))},function(v){C||(C=!0,o.reject(F,v))});var O;return F}},{immediate:36}],38:[function(t,s,i){var n={};(0,t("./lib/utils/common").assign)(n,t("./lib/deflate"),t("./lib/inflate"),t("./lib/zlib/constants")),s.exports=n},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(t,s,i){var n=t("./zlib/deflate"),r=t("./utils/common"),o=t("./utils/strings"),a=t("./zlib/messages"),l=t("./zlib/zstream"),h=Object.prototype.toString,u=0,d=-1,f=0,E=8;function p(m){if(!(this instanceof p))return new p(m);this.options=r.assign({level:d,method:E,chunkSize:16384,windowBits:15,memLevel:8,strategy:f,to:""},m||{});var _=this.options;_.raw&&0<_.windowBits?_.windowBits=-_.windowBits:_.gzip&&0<_.windowBits&&_.windowBits<16&&(_.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var R=n.deflateInit2(this.strm,_.level,_.method,_.windowBits,_.memLevel,_.strategy);if(R!==u)throw new Error(a[R]);if(_.header&&n.deflateSetHeader(this.strm,_.header),_.dictionary){var C;if(C=typeof _.dictionary=="string"?o.string2buf(_.dictionary):h.call(_.dictionary)==="[object ArrayBuffer]"?new Uint8Array(_.dictionary):_.dictionary,(R=n.deflateSetDictionary(this.strm,C))!==u)throw new Error(a[R]);this._dict_set=!0}}function I(m,_){var R=new p(_);if(R.push(m,!0),R.err)throw R.msg||a[R.err];return R.result}p.prototype.push=function(m,_){var R,C,y=this.strm,F=this.options.chunkSize;if(this.ended)return!1;C=_===~~_?_:_===!0?4:0,typeof m=="string"?y.input=o.string2buf(m):h.call(m)==="[object ArrayBuffer]"?y.input=new Uint8Array(m):y.input=m,y.next_in=0,y.avail_in=y.input.length;do{if(y.avail_out===0&&(y.output=new r.Buf8(F),y.next_out=0,y.avail_out=F),(R=n.deflate(y,C))!==1&&R!==u)return this.onEnd(R),!(this.ended=!0);y.avail_out!==0&&(y.avail_in!==0||C!==4&&C!==2)||(this.options.to==="string"?this.onData(o.buf2binstring(r.shrinkBuf(y.output,y.next_out))):this.onData(r.shrinkBuf(y.output,y.next_out)))}while((0<y.avail_in||y.avail_out===0)&&R!==1);return C===4?(R=n.deflateEnd(this.strm),this.onEnd(R),this.ended=!0,R===u):C!==2||(this.onEnd(u),!(y.avail_out=0))},p.prototype.onData=function(m){this.chunks.push(m)},p.prototype.onEnd=function(m){m===u&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=m,this.msg=this.strm.msg},i.Deflate=p,i.deflate=I,i.deflateRaw=function(m,_){return(_=_||{}).raw=!0,I(m,_)},i.gzip=function(m,_){return(_=_||{}).gzip=!0,I(m,_)}},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(t,s,i){var n=t("./zlib/inflate"),r=t("./utils/common"),o=t("./utils/strings"),a=t("./zlib/constants"),l=t("./zlib/messages"),h=t("./zlib/zstream"),u=t("./zlib/gzheader"),d=Object.prototype.toString;function f(p){if(!(this instanceof f))return new f(p);this.options=r.assign({chunkSize:16384,windowBits:0,to:""},p||{});var I=this.options;I.raw&&0<=I.windowBits&&I.windowBits<16&&(I.windowBits=-I.windowBits,I.windowBits===0&&(I.windowBits=-15)),!(0<=I.windowBits&&I.windowBits<16)||p&&p.windowBits||(I.windowBits+=32),15<I.windowBits&&I.windowBits<48&&!(15&I.windowBits)&&(I.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new h,this.strm.avail_out=0;var m=n.inflateInit2(this.strm,I.windowBits);if(m!==a.Z_OK)throw new Error(l[m]);this.header=new u,n.inflateGetHeader(this.strm,this.header)}function E(p,I){var m=new f(I);if(m.push(p,!0),m.err)throw m.msg||l[m.err];return m.result}f.prototype.push=function(p,I){var m,_,R,C,y,F,O=this.strm,v=this.options.chunkSize,N=this.options.dictionary,x=!1;if(this.ended)return!1;_=I===~~I?I:I===!0?a.Z_FINISH:a.Z_NO_FLUSH,typeof p=="string"?O.input=o.binstring2buf(p):d.call(p)==="[object ArrayBuffer]"?O.input=new Uint8Array(p):O.input=p,O.next_in=0,O.avail_in=O.input.length;do{if(O.avail_out===0&&(O.output=new r.Buf8(v),O.next_out=0,O.avail_out=v),(m=n.inflate(O,a.Z_NO_FLUSH))===a.Z_NEED_DICT&&N&&(F=typeof N=="string"?o.string2buf(N):d.call(N)==="[object ArrayBuffer]"?new Uint8Array(N):N,m=n.inflateSetDictionary(this.strm,F)),m===a.Z_BUF_ERROR&&x===!0&&(m=a.Z_OK,x=!1),m!==a.Z_STREAM_END&&m!==a.Z_OK)return this.onEnd(m),!(this.ended=!0);O.next_out&&(O.avail_out!==0&&m!==a.Z_STREAM_END&&(O.avail_in!==0||_!==a.Z_FINISH&&_!==a.Z_SYNC_FLUSH)||(this.options.to==="string"?(R=o.utf8border(O.output,O.next_out),C=O.next_out-R,y=o.buf2string(O.output,R),O.next_out=C,O.avail_out=v-C,C&&r.arraySet(O.output,O.output,R,C,0),this.onData(y)):this.onData(r.shrinkBuf(O.output,O.next_out)))),O.avail_in===0&&O.avail_out===0&&(x=!0)}while((0<O.avail_in||O.avail_out===0)&&m!==a.Z_STREAM_END);return m===a.Z_STREAM_END&&(_=a.Z_FINISH),_===a.Z_FINISH?(m=n.inflateEnd(this.strm),this.onEnd(m),this.ended=!0,m===a.Z_OK):_!==a.Z_SYNC_FLUSH||(this.onEnd(a.Z_OK),!(O.avail_out=0))},f.prototype.onData=function(p){this.chunks.push(p)},f.prototype.onEnd=function(p){p===a.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=p,this.msg=this.strm.msg},i.Inflate=f,i.inflate=E,i.inflateRaw=function(p,I){return(I=I||{}).raw=!0,E(p,I)},i.ungzip=E},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(t,s,i){var n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";i.assign=function(a){for(var l=Array.prototype.slice.call(arguments,1);l.length;){var h=l.shift();if(h){if(typeof h!="object")throw new TypeError(h+"must be non-object");for(var u in h)h.hasOwnProperty(u)&&(a[u]=h[u])}}return a},i.shrinkBuf=function(a,l){return a.length===l?a:a.subarray?a.subarray(0,l):(a.length=l,a)};var r={arraySet:function(a,l,h,u,d){if(l.subarray&&a.subarray)a.set(l.subarray(h,h+u),d);else for(var f=0;f<u;f++)a[d+f]=l[h+f]},flattenChunks:function(a){var l,h,u,d,f,E;for(l=u=0,h=a.length;l<h;l++)u+=a[l].length;for(E=new Uint8Array(u),l=d=0,h=a.length;l<h;l++)f=a[l],E.set(f,d),d+=f.length;return E}},o={arraySet:function(a,l,h,u,d){for(var f=0;f<u;f++)a[d+f]=l[h+f]},flattenChunks:function(a){return[].concat.apply([],a)}};i.setTyped=function(a){a?(i.Buf8=Uint8Array,i.Buf16=Uint16Array,i.Buf32=Int32Array,i.assign(i,r)):(i.Buf8=Array,i.Buf16=Array,i.Buf32=Array,i.assign(i,o))},i.setTyped(n)},{}],42:[function(t,s,i){var n=t("./common"),r=!0,o=!0;try{String.fromCharCode.apply(null,[0])}catch{r=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{o=!1}for(var a=new n.Buf8(256),l=0;l<256;l++)a[l]=252<=l?6:248<=l?5:240<=l?4:224<=l?3:192<=l?2:1;function h(u,d){if(d<65537&&(u.subarray&&o||!u.subarray&&r))return String.fromCharCode.apply(null,n.shrinkBuf(u,d));for(var f="",E=0;E<d;E++)f+=String.fromCharCode(u[E]);return f}a[254]=a[254]=1,i.string2buf=function(u){var d,f,E,p,I,m=u.length,_=0;for(p=0;p<m;p++)(64512&(f=u.charCodeAt(p)))==55296&&p+1<m&&(64512&(E=u.charCodeAt(p+1)))==56320&&(f=65536+(f-55296<<10)+(E-56320),p++),_+=f<128?1:f<2048?2:f<65536?3:4;for(d=new n.Buf8(_),p=I=0;I<_;p++)(64512&(f=u.charCodeAt(p)))==55296&&p+1<m&&(64512&(E=u.charCodeAt(p+1)))==56320&&(f=65536+(f-55296<<10)+(E-56320),p++),f<128?d[I++]=f:(f<2048?d[I++]=192|f>>>6:(f<65536?d[I++]=224|f>>>12:(d[I++]=240|f>>>18,d[I++]=128|f>>>12&63),d[I++]=128|f>>>6&63),d[I++]=128|63&f);return d},i.buf2binstring=function(u){return h(u,u.length)},i.binstring2buf=function(u){for(var d=new n.Buf8(u.length),f=0,E=d.length;f<E;f++)d[f]=u.charCodeAt(f);return d},i.buf2string=function(u,d){var f,E,p,I,m=d||u.length,_=new Array(2*m);for(f=E=0;f<m;)if((p=u[f++])<128)_[E++]=p;else if(4<(I=a[p]))_[E++]=65533,f+=I-1;else{for(p&=I===2?31:I===3?15:7;1<I&&f<m;)p=p<<6|63&u[f++],I--;1<I?_[E++]=65533:p<65536?_[E++]=p:(p-=65536,_[E++]=55296|p>>10&1023,_[E++]=56320|1023&p)}return h(_,E)},i.utf8border=function(u,d){var f;for((d=d||u.length)>u.length&&(d=u.length),f=d-1;0<=f&&(192&u[f])==128;)f--;return f<0||f===0?d:f+a[u[f]]>d?f:d}},{"./common":41}],43:[function(t,s,i){s.exports=function(n,r,o,a){for(var l=65535&n|0,h=n>>>16&65535|0,u=0;o!==0;){for(o-=u=2e3<o?2e3:o;h=h+(l=l+r[a++]|0)|0,--u;);l%=65521,h%=65521}return l|h<<16|0}},{}],44:[function(t,s,i){s.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(t,s,i){var n=function(){for(var r,o=[],a=0;a<256;a++){r=a;for(var l=0;l<8;l++)r=1&r?3988292384^r>>>1:r>>>1;o[a]=r}return o}();s.exports=function(r,o,a,l){var h=n,u=l+a;r^=-1;for(var d=l;d<u;d++)r=r>>>8^h[255&(r^o[d])];return-1^r}},{}],46:[function(t,s,i){var n,r=t("../utils/common"),o=t("./trees"),a=t("./adler32"),l=t("./crc32"),h=t("./messages"),u=0,d=4,f=0,E=-2,p=-1,I=4,m=2,_=8,R=9,C=286,y=30,F=19,O=2*C+1,v=15,N=3,x=258,G=x+N+1,w=42,L=113,T=1,D=2,$=3,V=4;function et(A,X){return A.msg=h[X],X}function W(A){return(A<<1)-(4<A?9:0)}function nt(A){for(var X=A.length;0<=--X;)A[X]=0}function k(A){var X=A.state,Y=X.pending;Y>A.avail_out&&(Y=A.avail_out),Y!==0&&(r.arraySet(A.output,X.pending_buf,X.pending_out,Y,A.next_out),A.next_out+=Y,X.pending_out+=Y,A.total_out+=Y,A.avail_out-=Y,X.pending-=Y,X.pending===0&&(X.pending_out=0))}function B(A,X){o._tr_flush_block(A,0<=A.block_start?A.block_start:-1,A.strstart-A.block_start,X),A.block_start=A.strstart,k(A.strm)}function rt(A,X){A.pending_buf[A.pending++]=X}function st(A,X){A.pending_buf[A.pending++]=X>>>8&255,A.pending_buf[A.pending++]=255&X}function tt(A,X){var Y,P,b=A.max_chain_length,U=A.strstart,Z=A.prev_length,j=A.nice_match,z=A.strstart>A.w_size-G?A.strstart-(A.w_size-G):0,q=A.window,it=A.w_mask,J=A.prev,at=A.strstart+x,gt=q[U+Z-1],ft=q[U+Z];A.prev_length>=A.good_match&&(b>>=2),j>A.lookahead&&(j=A.lookahead);do if(q[(Y=X)+Z]===ft&&q[Y+Z-1]===gt&&q[Y]===q[U]&&q[++Y]===q[U+1]){U+=2,Y++;do;while(q[++U]===q[++Y]&&q[++U]===q[++Y]&&q[++U]===q[++Y]&&q[++U]===q[++Y]&&q[++U]===q[++Y]&&q[++U]===q[++Y]&&q[++U]===q[++Y]&&q[++U]===q[++Y]&&U<at);if(P=x-(at-U),U=at-x,Z<P){if(A.match_start=X,j<=(Z=P))break;gt=q[U+Z-1],ft=q[U+Z]}}while((X=J[X&it])>z&&--b!=0);return Z<=A.lookahead?Z:A.lookahead}function yt(A){var X,Y,P,b,U,Z,j,z,q,it,J=A.w_size;do{if(b=A.window_size-A.lookahead-A.strstart,A.strstart>=J+(J-G)){for(r.arraySet(A.window,A.window,J,J,0),A.match_start-=J,A.strstart-=J,A.block_start-=J,X=Y=A.hash_size;P=A.head[--X],A.head[X]=J<=P?P-J:0,--Y;);for(X=Y=J;P=A.prev[--X],A.prev[X]=J<=P?P-J:0,--Y;);b+=J}if(A.strm.avail_in===0)break;if(Z=A.strm,j=A.window,z=A.strstart+A.lookahead,q=b,it=void 0,it=Z.avail_in,q<it&&(it=q),Y=it===0?0:(Z.avail_in-=it,r.arraySet(j,Z.input,Z.next_in,it,z),Z.state.wrap===1?Z.adler=a(Z.adler,j,it,z):Z.state.wrap===2&&(Z.adler=l(Z.adler,j,it,z)),Z.next_in+=it,Z.total_in+=it,it),A.lookahead+=Y,A.lookahead+A.insert>=N)for(U=A.strstart-A.insert,A.ins_h=A.window[U],A.ins_h=(A.ins_h<<A.hash_shift^A.window[U+1])&A.hash_mask;A.insert&&(A.ins_h=(A.ins_h<<A.hash_shift^A.window[U+N-1])&A.hash_mask,A.prev[U&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=U,U++,A.insert--,!(A.lookahead+A.insert<N)););}while(A.lookahead<G&&A.strm.avail_in!==0)}function Ft(A,X){for(var Y,P;;){if(A.lookahead<G){if(yt(A),A.lookahead<G&&X===u)return T;if(A.lookahead===0)break}if(Y=0,A.lookahead>=N&&(A.ins_h=(A.ins_h<<A.hash_shift^A.window[A.strstart+N-1])&A.hash_mask,Y=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),Y!==0&&A.strstart-Y<=A.w_size-G&&(A.match_length=tt(A,Y)),A.match_length>=N)if(P=o._tr_tally(A,A.strstart-A.match_start,A.match_length-N),A.lookahead-=A.match_length,A.match_length<=A.max_lazy_match&&A.lookahead>=N){for(A.match_length--;A.strstart++,A.ins_h=(A.ins_h<<A.hash_shift^A.window[A.strstart+N-1])&A.hash_mask,Y=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart,--A.match_length!=0;);A.strstart++}else A.strstart+=A.match_length,A.match_length=0,A.ins_h=A.window[A.strstart],A.ins_h=(A.ins_h<<A.hash_shift^A.window[A.strstart+1])&A.hash_mask;else P=o._tr_tally(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++;if(P&&(B(A,!1),A.strm.avail_out===0))return T}return A.insert=A.strstart<N-1?A.strstart:N-1,X===d?(B(A,!0),A.strm.avail_out===0?$:V):A.last_lit&&(B(A,!1),A.strm.avail_out===0)?T:D}function ot(A,X){for(var Y,P,b;;){if(A.lookahead<G){if(yt(A),A.lookahead<G&&X===u)return T;if(A.lookahead===0)break}if(Y=0,A.lookahead>=N&&(A.ins_h=(A.ins_h<<A.hash_shift^A.window[A.strstart+N-1])&A.hash_mask,Y=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),A.prev_length=A.match_length,A.prev_match=A.match_start,A.match_length=N-1,Y!==0&&A.prev_length<A.max_lazy_match&&A.strstart-Y<=A.w_size-G&&(A.match_length=tt(A,Y),A.match_length<=5&&(A.strategy===1||A.match_length===N&&4096<A.strstart-A.match_start)&&(A.match_length=N-1)),A.prev_length>=N&&A.match_length<=A.prev_length){for(b=A.strstart+A.lookahead-N,P=o._tr_tally(A,A.strstart-1-A.prev_match,A.prev_length-N),A.lookahead-=A.prev_length-1,A.prev_length-=2;++A.strstart<=b&&(A.ins_h=(A.ins_h<<A.hash_shift^A.window[A.strstart+N-1])&A.hash_mask,Y=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),--A.prev_length!=0;);if(A.match_available=0,A.match_length=N-1,A.strstart++,P&&(B(A,!1),A.strm.avail_out===0))return T}else if(A.match_available){if((P=o._tr_tally(A,0,A.window[A.strstart-1]))&&B(A,!1),A.strstart++,A.lookahead--,A.strm.avail_out===0)return T}else A.match_available=1,A.strstart++,A.lookahead--}return A.match_available&&(P=o._tr_tally(A,0,A.window[A.strstart-1]),A.match_available=0),A.insert=A.strstart<N-1?A.strstart:N-1,X===d?(B(A,!0),A.strm.avail_out===0?$:V):A.last_lit&&(B(A,!1),A.strm.avail_out===0)?T:D}function dt(A,X,Y,P,b){this.good_length=A,this.max_lazy=X,this.nice_length=Y,this.max_chain=P,this.func=b}function ut(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=_,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new r.Buf16(2*O),this.dyn_dtree=new r.Buf16(2*(2*y+1)),this.bl_tree=new r.Buf16(2*(2*F+1)),nt(this.dyn_ltree),nt(this.dyn_dtree),nt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new r.Buf16(v+1),this.heap=new r.Buf16(2*C+1),nt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new r.Buf16(2*C+1),nt(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function mt(A){var X;return A&&A.state?(A.total_in=A.total_out=0,A.data_type=m,(X=A.state).pending=0,X.pending_out=0,X.wrap<0&&(X.wrap=-X.wrap),X.status=X.wrap?w:L,A.adler=X.wrap===2?0:1,X.last_flush=u,o._tr_init(X),f):et(A,E)}function Vt(A){var X=mt(A);return X===f&&function(Y){Y.window_size=2*Y.w_size,nt(Y.head),Y.max_lazy_match=n[Y.level].max_lazy,Y.good_match=n[Y.level].good_length,Y.nice_match=n[Y.level].nice_length,Y.max_chain_length=n[Y.level].max_chain,Y.strstart=0,Y.block_start=0,Y.lookahead=0,Y.insert=0,Y.match_length=Y.prev_length=N-1,Y.match_available=0,Y.ins_h=0}(A.state),X}function Lt(A,X,Y,P,b,U){if(!A)return E;var Z=1;if(X===p&&(X=6),P<0?(Z=0,P=-P):15<P&&(Z=2,P-=16),b<1||R<b||Y!==_||P<8||15<P||X<0||9<X||U<0||I<U)return et(A,E);P===8&&(P=9);var j=new ut;return(A.state=j).strm=A,j.wrap=Z,j.gzhead=null,j.w_bits=P,j.w_size=1<<j.w_bits,j.w_mask=j.w_size-1,j.hash_bits=b+7,j.hash_size=1<<j.hash_bits,j.hash_mask=j.hash_size-1,j.hash_shift=~~((j.hash_bits+N-1)/N),j.window=new r.Buf8(2*j.w_size),j.head=new r.Buf16(j.hash_size),j.prev=new r.Buf16(j.w_size),j.lit_bufsize=1<<b+6,j.pending_buf_size=4*j.lit_bufsize,j.pending_buf=new r.Buf8(j.pending_buf_size),j.d_buf=1*j.lit_bufsize,j.l_buf=3*j.lit_bufsize,j.level=X,j.strategy=U,j.method=Y,Vt(A)}n=[new dt(0,0,0,0,function(A,X){var Y=65535;for(Y>A.pending_buf_size-5&&(Y=A.pending_buf_size-5);;){if(A.lookahead<=1){if(yt(A),A.lookahead===0&&X===u)return T;if(A.lookahead===0)break}A.strstart+=A.lookahead,A.lookahead=0;var P=A.block_start+Y;if((A.strstart===0||A.strstart>=P)&&(A.lookahead=A.strstart-P,A.strstart=P,B(A,!1),A.strm.avail_out===0)||A.strstart-A.block_start>=A.w_size-G&&(B(A,!1),A.strm.avail_out===0))return T}return A.insert=0,X===d?(B(A,!0),A.strm.avail_out===0?$:V):(A.strstart>A.block_start&&(B(A,!1),A.strm.avail_out),T)}),new dt(4,4,8,4,Ft),new dt(4,5,16,8,Ft),new dt(4,6,32,32,Ft),new dt(4,4,16,16,ot),new dt(8,16,32,32,ot),new dt(8,16,128,128,ot),new dt(8,32,128,256,ot),new dt(32,128,258,1024,ot),new dt(32,258,258,4096,ot)],i.deflateInit=function(A,X){return Lt(A,X,_,15,8,0)},i.deflateInit2=Lt,i.deflateReset=Vt,i.deflateResetKeep=mt,i.deflateSetHeader=function(A,X){return A&&A.state?A.state.wrap!==2?E:(A.state.gzhead=X,f):E},i.deflate=function(A,X){var Y,P,b,U;if(!A||!A.state||5<X||X<0)return A?et(A,E):E;if(P=A.state,!A.output||!A.input&&A.avail_in!==0||P.status===666&&X!==d)return et(A,A.avail_out===0?-5:E);if(P.strm=A,Y=P.last_flush,P.last_flush=X,P.status===w)if(P.wrap===2)A.adler=0,rt(P,31),rt(P,139),rt(P,8),P.gzhead?(rt(P,(P.gzhead.text?1:0)+(P.gzhead.hcrc?2:0)+(P.gzhead.extra?4:0)+(P.gzhead.name?8:0)+(P.gzhead.comment?16:0)),rt(P,255&P.gzhead.time),rt(P,P.gzhead.time>>8&255),rt(P,P.gzhead.time>>16&255),rt(P,P.gzhead.time>>24&255),rt(P,P.level===9?2:2<=P.strategy||P.level<2?4:0),rt(P,255&P.gzhead.os),P.gzhead.extra&&P.gzhead.extra.length&&(rt(P,255&P.gzhead.extra.length),rt(P,P.gzhead.extra.length>>8&255)),P.gzhead.hcrc&&(A.adler=l(A.adler,P.pending_buf,P.pending,0)),P.gzindex=0,P.status=69):(rt(P,0),rt(P,0),rt(P,0),rt(P,0),rt(P,0),rt(P,P.level===9?2:2<=P.strategy||P.level<2?4:0),rt(P,3),P.status=L);else{var Z=_+(P.w_bits-8<<4)<<8;Z|=(2<=P.strategy||P.level<2?0:P.level<6?1:P.level===6?2:3)<<6,P.strstart!==0&&(Z|=32),Z+=31-Z%31,P.status=L,st(P,Z),P.strstart!==0&&(st(P,A.adler>>>16),st(P,65535&A.adler)),A.adler=1}if(P.status===69)if(P.gzhead.extra){for(b=P.pending;P.gzindex<(65535&P.gzhead.extra.length)&&(P.pending!==P.pending_buf_size||(P.gzhead.hcrc&&P.pending>b&&(A.adler=l(A.adler,P.pending_buf,P.pending-b,b)),k(A),b=P.pending,P.pending!==P.pending_buf_size));)rt(P,255&P.gzhead.extra[P.gzindex]),P.gzindex++;P.gzhead.hcrc&&P.pending>b&&(A.adler=l(A.adler,P.pending_buf,P.pending-b,b)),P.gzindex===P.gzhead.extra.length&&(P.gzindex=0,P.status=73)}else P.status=73;if(P.status===73)if(P.gzhead.name){b=P.pending;do{if(P.pending===P.pending_buf_size&&(P.gzhead.hcrc&&P.pending>b&&(A.adler=l(A.adler,P.pending_buf,P.pending-b,b)),k(A),b=P.pending,P.pending===P.pending_buf_size)){U=1;break}U=P.gzindex<P.gzhead.name.length?255&P.gzhead.name.charCodeAt(P.gzindex++):0,rt(P,U)}while(U!==0);P.gzhead.hcrc&&P.pending>b&&(A.adler=l(A.adler,P.pending_buf,P.pending-b,b)),U===0&&(P.gzindex=0,P.status=91)}else P.status=91;if(P.status===91)if(P.gzhead.comment){b=P.pending;do{if(P.pending===P.pending_buf_size&&(P.gzhead.hcrc&&P.pending>b&&(A.adler=l(A.adler,P.pending_buf,P.pending-b,b)),k(A),b=P.pending,P.pending===P.pending_buf_size)){U=1;break}U=P.gzindex<P.gzhead.comment.length?255&P.gzhead.comment.charCodeAt(P.gzindex++):0,rt(P,U)}while(U!==0);P.gzhead.hcrc&&P.pending>b&&(A.adler=l(A.adler,P.pending_buf,P.pending-b,b)),U===0&&(P.status=103)}else P.status=103;if(P.status===103&&(P.gzhead.hcrc?(P.pending+2>P.pending_buf_size&&k(A),P.pending+2<=P.pending_buf_size&&(rt(P,255&A.adler),rt(P,A.adler>>8&255),A.adler=0,P.status=L)):P.status=L),P.pending!==0){if(k(A),A.avail_out===0)return P.last_flush=-1,f}else if(A.avail_in===0&&W(X)<=W(Y)&&X!==d)return et(A,-5);if(P.status===666&&A.avail_in!==0)return et(A,-5);if(A.avail_in!==0||P.lookahead!==0||X!==u&&P.status!==666){var j=P.strategy===2?function(z,q){for(var it;;){if(z.lookahead===0&&(yt(z),z.lookahead===0)){if(q===u)return T;break}if(z.match_length=0,it=o._tr_tally(z,0,z.window[z.strstart]),z.lookahead--,z.strstart++,it&&(B(z,!1),z.strm.avail_out===0))return T}return z.insert=0,q===d?(B(z,!0),z.strm.avail_out===0?$:V):z.last_lit&&(B(z,!1),z.strm.avail_out===0)?T:D}(P,X):P.strategy===3?function(z,q){for(var it,J,at,gt,ft=z.window;;){if(z.lookahead<=x){if(yt(z),z.lookahead<=x&&q===u)return T;if(z.lookahead===0)break}if(z.match_length=0,z.lookahead>=N&&0<z.strstart&&(J=ft[at=z.strstart-1])===ft[++at]&&J===ft[++at]&&J===ft[++at]){gt=z.strstart+x;do;while(J===ft[++at]&&J===ft[++at]&&J===ft[++at]&&J===ft[++at]&&J===ft[++at]&&J===ft[++at]&&J===ft[++at]&&J===ft[++at]&&at<gt);z.match_length=x-(gt-at),z.match_length>z.lookahead&&(z.match_length=z.lookahead)}if(z.match_length>=N?(it=o._tr_tally(z,1,z.match_length-N),z.lookahead-=z.match_length,z.strstart+=z.match_length,z.match_length=0):(it=o._tr_tally(z,0,z.window[z.strstart]),z.lookahead--,z.strstart++),it&&(B(z,!1),z.strm.avail_out===0))return T}return z.insert=0,q===d?(B(z,!0),z.strm.avail_out===0?$:V):z.last_lit&&(B(z,!1),z.strm.avail_out===0)?T:D}(P,X):n[P.level].func(P,X);if(j!==$&&j!==V||(P.status=666),j===T||j===$)return A.avail_out===0&&(P.last_flush=-1),f;if(j===D&&(X===1?o._tr_align(P):X!==5&&(o._tr_stored_block(P,0,0,!1),X===3&&(nt(P.head),P.lookahead===0&&(P.strstart=0,P.block_start=0,P.insert=0))),k(A),A.avail_out===0))return P.last_flush=-1,f}return X!==d?f:P.wrap<=0?1:(P.wrap===2?(rt(P,255&A.adler),rt(P,A.adler>>8&255),rt(P,A.adler>>16&255),rt(P,A.adler>>24&255),rt(P,255&A.total_in),rt(P,A.total_in>>8&255),rt(P,A.total_in>>16&255),rt(P,A.total_in>>24&255)):(st(P,A.adler>>>16),st(P,65535&A.adler)),k(A),0<P.wrap&&(P.wrap=-P.wrap),P.pending!==0?f:1)},i.deflateEnd=function(A){var X;return A&&A.state?(X=A.state.status)!==w&&X!==69&&X!==73&&X!==91&&X!==103&&X!==L&&X!==666?et(A,E):(A.state=null,X===L?et(A,-3):f):E},i.deflateSetDictionary=function(A,X){var Y,P,b,U,Z,j,z,q,it=X.length;if(!A||!A.state||(U=(Y=A.state).wrap)===2||U===1&&Y.status!==w||Y.lookahead)return E;for(U===1&&(A.adler=a(A.adler,X,it,0)),Y.wrap=0,it>=Y.w_size&&(U===0&&(nt(Y.head),Y.strstart=0,Y.block_start=0,Y.insert=0),q=new r.Buf8(Y.w_size),r.arraySet(q,X,it-Y.w_size,Y.w_size,0),X=q,it=Y.w_size),Z=A.avail_in,j=A.next_in,z=A.input,A.avail_in=it,A.next_in=0,A.input=X,yt(Y);Y.lookahead>=N;){for(P=Y.strstart,b=Y.lookahead-(N-1);Y.ins_h=(Y.ins_h<<Y.hash_shift^Y.window[P+N-1])&Y.hash_mask,Y.prev[P&Y.w_mask]=Y.head[Y.ins_h],Y.head[Y.ins_h]=P,P++,--b;);Y.strstart=P,Y.lookahead=N-1,yt(Y)}return Y.strstart+=Y.lookahead,Y.block_start=Y.strstart,Y.insert=Y.lookahead,Y.lookahead=0,Y.match_length=Y.prev_length=N-1,Y.match_available=0,A.next_in=j,A.input=z,A.avail_in=Z,Y.wrap=U,f},i.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(t,s,i){s.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],48:[function(t,s,i){s.exports=function(n,r){var o,a,l,h,u,d,f,E,p,I,m,_,R,C,y,F,O,v,N,x,G,w,L,T,D;o=n.state,a=n.next_in,T=n.input,l=a+(n.avail_in-5),h=n.next_out,D=n.output,u=h-(r-n.avail_out),d=h+(n.avail_out-257),f=o.dmax,E=o.wsize,p=o.whave,I=o.wnext,m=o.window,_=o.hold,R=o.bits,C=o.lencode,y=o.distcode,F=(1<<o.lenbits)-1,O=(1<<o.distbits)-1;t:do{R<15&&(_+=T[a++]<<R,R+=8,_+=T[a++]<<R,R+=8),v=C[_&F];e:for(;;){if(_>>>=N=v>>>24,R-=N,(N=v>>>16&255)===0)D[h++]=65535&v;else{if(!(16&N)){if(!(64&N)){v=C[(65535&v)+(_&(1<<N)-1)];continue e}if(32&N){o.mode=12;break t}n.msg="invalid literal/length code",o.mode=30;break t}x=65535&v,(N&=15)&&(R<N&&(_+=T[a++]<<R,R+=8),x+=_&(1<<N)-1,_>>>=N,R-=N),R<15&&(_+=T[a++]<<R,R+=8,_+=T[a++]<<R,R+=8),v=y[_&O];s:for(;;){if(_>>>=N=v>>>24,R-=N,!(16&(N=v>>>16&255))){if(!(64&N)){v=y[(65535&v)+(_&(1<<N)-1)];continue s}n.msg="invalid distance code",o.mode=30;break t}if(G=65535&v,R<(N&=15)&&(_+=T[a++]<<R,(R+=8)<N&&(_+=T[a++]<<R,R+=8)),f<(G+=_&(1<<N)-1)){n.msg="invalid distance too far back",o.mode=30;break t}if(_>>>=N,R-=N,(N=h-u)<G){if(p<(N=G-N)&&o.sane){n.msg="invalid distance too far back",o.mode=30;break t}if(L=m,(w=0)===I){if(w+=E-N,N<x){for(x-=N;D[h++]=m[w++],--N;);w=h-G,L=D}}else if(I<N){if(w+=E+I-N,(N-=I)<x){for(x-=N;D[h++]=m[w++],--N;);if(w=0,I<x){for(x-=N=I;D[h++]=m[w++],--N;);w=h-G,L=D}}}else if(w+=I-N,N<x){for(x-=N;D[h++]=m[w++],--N;);w=h-G,L=D}for(;2<x;)D[h++]=L[w++],D[h++]=L[w++],D[h++]=L[w++],x-=3;x&&(D[h++]=L[w++],1<x&&(D[h++]=L[w++]))}else{for(w=h-G;D[h++]=D[w++],D[h++]=D[w++],D[h++]=D[w++],2<(x-=3););x&&(D[h++]=D[w++],1<x&&(D[h++]=D[w++]))}break}}break}}while(a<l&&h<d);a-=x=R>>3,_&=(1<<(R-=x<<3))-1,n.next_in=a,n.next_out=h,n.avail_in=a<l?l-a+5:5-(a-l),n.avail_out=h<d?d-h+257:257-(h-d),o.hold=_,o.bits=R}},{}],49:[function(t,s,i){var n=t("../utils/common"),r=t("./adler32"),o=t("./crc32"),a=t("./inffast"),l=t("./inftrees"),h=1,u=2,d=0,f=-2,E=1,p=852,I=592;function m(w){return(w>>>24&255)+(w>>>8&65280)+((65280&w)<<8)+((255&w)<<24)}function _(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function R(w){var L;return w&&w.state?(L=w.state,w.total_in=w.total_out=L.total=0,w.msg="",L.wrap&&(w.adler=1&L.wrap),L.mode=E,L.last=0,L.havedict=0,L.dmax=32768,L.head=null,L.hold=0,L.bits=0,L.lencode=L.lendyn=new n.Buf32(p),L.distcode=L.distdyn=new n.Buf32(I),L.sane=1,L.back=-1,d):f}function C(w){var L;return w&&w.state?((L=w.state).wsize=0,L.whave=0,L.wnext=0,R(w)):f}function y(w,L){var T,D;return w&&w.state?(D=w.state,L<0?(T=0,L=-L):(T=1+(L>>4),L<48&&(L&=15)),L&&(L<8||15<L)?f:(D.window!==null&&D.wbits!==L&&(D.window=null),D.wrap=T,D.wbits=L,C(w))):f}function F(w,L){var T,D;return w?(D=new _,(w.state=D).window=null,(T=y(w,L))!==d&&(w.state=null),T):f}var O,v,N=!0;function x(w){if(N){var L;for(O=new n.Buf32(512),v=new n.Buf32(32),L=0;L<144;)w.lens[L++]=8;for(;L<256;)w.lens[L++]=9;for(;L<280;)w.lens[L++]=7;for(;L<288;)w.lens[L++]=8;for(l(h,w.lens,0,288,O,0,w.work,{bits:9}),L=0;L<32;)w.lens[L++]=5;l(u,w.lens,0,32,v,0,w.work,{bits:5}),N=!1}w.lencode=O,w.lenbits=9,w.distcode=v,w.distbits=5}function G(w,L,T,D){var $,V=w.state;return V.window===null&&(V.wsize=1<<V.wbits,V.wnext=0,V.whave=0,V.window=new n.Buf8(V.wsize)),D>=V.wsize?(n.arraySet(V.window,L,T-V.wsize,V.wsize,0),V.wnext=0,V.whave=V.wsize):(D<($=V.wsize-V.wnext)&&($=D),n.arraySet(V.window,L,T-D,$,V.wnext),(D-=$)?(n.arraySet(V.window,L,T-D,D,0),V.wnext=D,V.whave=V.wsize):(V.wnext+=$,V.wnext===V.wsize&&(V.wnext=0),V.whave<V.wsize&&(V.whave+=$))),0}i.inflateReset=C,i.inflateReset2=y,i.inflateResetKeep=R,i.inflateInit=function(w){return F(w,15)},i.inflateInit2=F,i.inflate=function(w,L){var T,D,$,V,et,W,nt,k,B,rt,st,tt,yt,Ft,ot,dt,ut,mt,Vt,Lt,A,X,Y,P,b=0,U=new n.Buf8(4),Z=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!w||!w.state||!w.output||!w.input&&w.avail_in!==0)return f;(T=w.state).mode===12&&(T.mode=13),et=w.next_out,$=w.output,nt=w.avail_out,V=w.next_in,D=w.input,W=w.avail_in,k=T.hold,B=T.bits,rt=W,st=nt,X=d;t:for(;;)switch(T.mode){case E:if(T.wrap===0){T.mode=13;break}for(;B<16;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}if(2&T.wrap&&k===35615){U[T.check=0]=255&k,U[1]=k>>>8&255,T.check=o(T.check,U,2,0),B=k=0,T.mode=2;break}if(T.flags=0,T.head&&(T.head.done=!1),!(1&T.wrap)||(((255&k)<<8)+(k>>8))%31){w.msg="incorrect header check",T.mode=30;break}if((15&k)!=8){w.msg="unknown compression method",T.mode=30;break}if(B-=4,A=8+(15&(k>>>=4)),T.wbits===0)T.wbits=A;else if(A>T.wbits){w.msg="invalid window size",T.mode=30;break}T.dmax=1<<A,w.adler=T.check=1,T.mode=512&k?10:12,B=k=0;break;case 2:for(;B<16;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}if(T.flags=k,(255&T.flags)!=8){w.msg="unknown compression method",T.mode=30;break}if(57344&T.flags){w.msg="unknown header flags set",T.mode=30;break}T.head&&(T.head.text=k>>8&1),512&T.flags&&(U[0]=255&k,U[1]=k>>>8&255,T.check=o(T.check,U,2,0)),B=k=0,T.mode=3;case 3:for(;B<32;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}T.head&&(T.head.time=k),512&T.flags&&(U[0]=255&k,U[1]=k>>>8&255,U[2]=k>>>16&255,U[3]=k>>>24&255,T.check=o(T.check,U,4,0)),B=k=0,T.mode=4;case 4:for(;B<16;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}T.head&&(T.head.xflags=255&k,T.head.os=k>>8),512&T.flags&&(U[0]=255&k,U[1]=k>>>8&255,T.check=o(T.check,U,2,0)),B=k=0,T.mode=5;case 5:if(1024&T.flags){for(;B<16;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}T.length=k,T.head&&(T.head.extra_len=k),512&T.flags&&(U[0]=255&k,U[1]=k>>>8&255,T.check=o(T.check,U,2,0)),B=k=0}else T.head&&(T.head.extra=null);T.mode=6;case 6:if(1024&T.flags&&(W<(tt=T.length)&&(tt=W),tt&&(T.head&&(A=T.head.extra_len-T.length,T.head.extra||(T.head.extra=new Array(T.head.extra_len)),n.arraySet(T.head.extra,D,V,tt,A)),512&T.flags&&(T.check=o(T.check,D,tt,V)),W-=tt,V+=tt,T.length-=tt),T.length))break t;T.length=0,T.mode=7;case 7:if(2048&T.flags){if(W===0)break t;for(tt=0;A=D[V+tt++],T.head&&A&&T.length<65536&&(T.head.name+=String.fromCharCode(A)),A&&tt<W;);if(512&T.flags&&(T.check=o(T.check,D,tt,V)),W-=tt,V+=tt,A)break t}else T.head&&(T.head.name=null);T.length=0,T.mode=8;case 8:if(4096&T.flags){if(W===0)break t;for(tt=0;A=D[V+tt++],T.head&&A&&T.length<65536&&(T.head.comment+=String.fromCharCode(A)),A&&tt<W;);if(512&T.flags&&(T.check=o(T.check,D,tt,V)),W-=tt,V+=tt,A)break t}else T.head&&(T.head.comment=null);T.mode=9;case 9:if(512&T.flags){for(;B<16;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}if(k!==(65535&T.check)){w.msg="header crc mismatch",T.mode=30;break}B=k=0}T.head&&(T.head.hcrc=T.flags>>9&1,T.head.done=!0),w.adler=T.check=0,T.mode=12;break;case 10:for(;B<32;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}w.adler=T.check=m(k),B=k=0,T.mode=11;case 11:if(T.havedict===0)return w.next_out=et,w.avail_out=nt,w.next_in=V,w.avail_in=W,T.hold=k,T.bits=B,2;w.adler=T.check=1,T.mode=12;case 12:if(L===5||L===6)break t;case 13:if(T.last){k>>>=7&B,B-=7&B,T.mode=27;break}for(;B<3;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}switch(T.last=1&k,B-=1,3&(k>>>=1)){case 0:T.mode=14;break;case 1:if(x(T),T.mode=20,L!==6)break;k>>>=2,B-=2;break t;case 2:T.mode=17;break;case 3:w.msg="invalid block type",T.mode=30}k>>>=2,B-=2;break;case 14:for(k>>>=7&B,B-=7&B;B<32;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}if((65535&k)!=(k>>>16^65535)){w.msg="invalid stored block lengths",T.mode=30;break}if(T.length=65535&k,B=k=0,T.mode=15,L===6)break t;case 15:T.mode=16;case 16:if(tt=T.length){if(W<tt&&(tt=W),nt<tt&&(tt=nt),tt===0)break t;n.arraySet($,D,V,tt,et),W-=tt,V+=tt,nt-=tt,et+=tt,T.length-=tt;break}T.mode=12;break;case 17:for(;B<14;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}if(T.nlen=257+(31&k),k>>>=5,B-=5,T.ndist=1+(31&k),k>>>=5,B-=5,T.ncode=4+(15&k),k>>>=4,B-=4,286<T.nlen||30<T.ndist){w.msg="too many length or distance symbols",T.mode=30;break}T.have=0,T.mode=18;case 18:for(;T.have<T.ncode;){for(;B<3;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}T.lens[Z[T.have++]]=7&k,k>>>=3,B-=3}for(;T.have<19;)T.lens[Z[T.have++]]=0;if(T.lencode=T.lendyn,T.lenbits=7,Y={bits:T.lenbits},X=l(0,T.lens,0,19,T.lencode,0,T.work,Y),T.lenbits=Y.bits,X){w.msg="invalid code lengths set",T.mode=30;break}T.have=0,T.mode=19;case 19:for(;T.have<T.nlen+T.ndist;){for(;dt=(b=T.lencode[k&(1<<T.lenbits)-1])>>>16&255,ut=65535&b,!((ot=b>>>24)<=B);){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}if(ut<16)k>>>=ot,B-=ot,T.lens[T.have++]=ut;else{if(ut===16){for(P=ot+2;B<P;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}if(k>>>=ot,B-=ot,T.have===0){w.msg="invalid bit length repeat",T.mode=30;break}A=T.lens[T.have-1],tt=3+(3&k),k>>>=2,B-=2}else if(ut===17){for(P=ot+3;B<P;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}B-=ot,A=0,tt=3+(7&(k>>>=ot)),k>>>=3,B-=3}else{for(P=ot+7;B<P;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}B-=ot,A=0,tt=11+(127&(k>>>=ot)),k>>>=7,B-=7}if(T.have+tt>T.nlen+T.ndist){w.msg="invalid bit length repeat",T.mode=30;break}for(;tt--;)T.lens[T.have++]=A}}if(T.mode===30)break;if(T.lens[256]===0){w.msg="invalid code -- missing end-of-block",T.mode=30;break}if(T.lenbits=9,Y={bits:T.lenbits},X=l(h,T.lens,0,T.nlen,T.lencode,0,T.work,Y),T.lenbits=Y.bits,X){w.msg="invalid literal/lengths set",T.mode=30;break}if(T.distbits=6,T.distcode=T.distdyn,Y={bits:T.distbits},X=l(u,T.lens,T.nlen,T.ndist,T.distcode,0,T.work,Y),T.distbits=Y.bits,X){w.msg="invalid distances set",T.mode=30;break}if(T.mode=20,L===6)break t;case 20:T.mode=21;case 21:if(6<=W&&258<=nt){w.next_out=et,w.avail_out=nt,w.next_in=V,w.avail_in=W,T.hold=k,T.bits=B,a(w,st),et=w.next_out,$=w.output,nt=w.avail_out,V=w.next_in,D=w.input,W=w.avail_in,k=T.hold,B=T.bits,T.mode===12&&(T.back=-1);break}for(T.back=0;dt=(b=T.lencode[k&(1<<T.lenbits)-1])>>>16&255,ut=65535&b,!((ot=b>>>24)<=B);){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}if(dt&&!(240&dt)){for(mt=ot,Vt=dt,Lt=ut;dt=(b=T.lencode[Lt+((k&(1<<mt+Vt)-1)>>mt)])>>>16&255,ut=65535&b,!(mt+(ot=b>>>24)<=B);){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}k>>>=mt,B-=mt,T.back+=mt}if(k>>>=ot,B-=ot,T.back+=ot,T.length=ut,dt===0){T.mode=26;break}if(32&dt){T.back=-1,T.mode=12;break}if(64&dt){w.msg="invalid literal/length code",T.mode=30;break}T.extra=15&dt,T.mode=22;case 22:if(T.extra){for(P=T.extra;B<P;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}T.length+=k&(1<<T.extra)-1,k>>>=T.extra,B-=T.extra,T.back+=T.extra}T.was=T.length,T.mode=23;case 23:for(;dt=(b=T.distcode[k&(1<<T.distbits)-1])>>>16&255,ut=65535&b,!((ot=b>>>24)<=B);){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}if(!(240&dt)){for(mt=ot,Vt=dt,Lt=ut;dt=(b=T.distcode[Lt+((k&(1<<mt+Vt)-1)>>mt)])>>>16&255,ut=65535&b,!(mt+(ot=b>>>24)<=B);){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}k>>>=mt,B-=mt,T.back+=mt}if(k>>>=ot,B-=ot,T.back+=ot,64&dt){w.msg="invalid distance code",T.mode=30;break}T.offset=ut,T.extra=15&dt,T.mode=24;case 24:if(T.extra){for(P=T.extra;B<P;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}T.offset+=k&(1<<T.extra)-1,k>>>=T.extra,B-=T.extra,T.back+=T.extra}if(T.offset>T.dmax){w.msg="invalid distance too far back",T.mode=30;break}T.mode=25;case 25:if(nt===0)break t;if(tt=st-nt,T.offset>tt){if((tt=T.offset-tt)>T.whave&&T.sane){w.msg="invalid distance too far back",T.mode=30;break}yt=tt>T.wnext?(tt-=T.wnext,T.wsize-tt):T.wnext-tt,tt>T.length&&(tt=T.length),Ft=T.window}else Ft=$,yt=et-T.offset,tt=T.length;for(nt<tt&&(tt=nt),nt-=tt,T.length-=tt;$[et++]=Ft[yt++],--tt;);T.length===0&&(T.mode=21);break;case 26:if(nt===0)break t;$[et++]=T.length,nt--,T.mode=21;break;case 27:if(T.wrap){for(;B<32;){if(W===0)break t;W--,k|=D[V++]<<B,B+=8}if(st-=nt,w.total_out+=st,T.total+=st,st&&(w.adler=T.check=T.flags?o(T.check,$,st,et-st):r(T.check,$,st,et-st)),st=nt,(T.flags?k:m(k))!==T.check){w.msg="incorrect data check",T.mode=30;break}B=k=0}T.mode=28;case 28:if(T.wrap&&T.flags){for(;B<32;){if(W===0)break t;W--,k+=D[V++]<<B,B+=8}if(k!==(4294967295&T.total)){w.msg="incorrect length check",T.mode=30;break}B=k=0}T.mode=29;case 29:X=1;break t;case 30:X=-3;break t;case 31:return-4;case 32:default:return f}return w.next_out=et,w.avail_out=nt,w.next_in=V,w.avail_in=W,T.hold=k,T.bits=B,(T.wsize||st!==w.avail_out&&T.mode<30&&(T.mode<27||L!==4))&&G(w,w.output,w.next_out,st-w.avail_out)?(T.mode=31,-4):(rt-=w.avail_in,st-=w.avail_out,w.total_in+=rt,w.total_out+=st,T.total+=st,T.wrap&&st&&(w.adler=T.check=T.flags?o(T.check,$,st,w.next_out-st):r(T.check,$,st,w.next_out-st)),w.data_type=T.bits+(T.last?64:0)+(T.mode===12?128:0)+(T.mode===20||T.mode===15?256:0),(rt==0&&st===0||L===4)&&X===d&&(X=-5),X)},i.inflateEnd=function(w){if(!w||!w.state)return f;var L=w.state;return L.window&&(L.window=null),w.state=null,d},i.inflateGetHeader=function(w,L){var T;return w&&w.state&&2&(T=w.state).wrap?((T.head=L).done=!1,d):f},i.inflateSetDictionary=function(w,L){var T,D=L.length;return w&&w.state?(T=w.state).wrap!==0&&T.mode!==11?f:T.mode===11&&r(1,L,D,0)!==T.check?-3:G(w,L,D,D)?(T.mode=31,-4):(T.havedict=1,d):f},i.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(t,s,i){var n=t("../utils/common"),r=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],o=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],a=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],l=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];s.exports=function(h,u,d,f,E,p,I,m){var _,R,C,y,F,O,v,N,x,G=m.bits,w=0,L=0,T=0,D=0,$=0,V=0,et=0,W=0,nt=0,k=0,B=null,rt=0,st=new n.Buf16(16),tt=new n.Buf16(16),yt=null,Ft=0;for(w=0;w<=15;w++)st[w]=0;for(L=0;L<f;L++)st[u[d+L]]++;for($=G,D=15;1<=D&&st[D]===0;D--);if(D<$&&($=D),D===0)return E[p++]=20971520,E[p++]=20971520,m.bits=1,0;for(T=1;T<D&&st[T]===0;T++);for($<T&&($=T),w=W=1;w<=15;w++)if(W<<=1,(W-=st[w])<0)return-1;if(0<W&&(h===0||D!==1))return-1;for(tt[1]=0,w=1;w<15;w++)tt[w+1]=tt[w]+st[w];for(L=0;L<f;L++)u[d+L]!==0&&(I[tt[u[d+L]]++]=L);if(O=h===0?(B=yt=I,19):h===1?(B=r,rt-=257,yt=o,Ft-=257,256):(B=a,yt=l,-1),w=T,F=p,et=L=k=0,C=-1,y=(nt=1<<(V=$))-1,h===1&&852<nt||h===2&&592<nt)return 1;for(;;){for(v=w-et,x=I[L]<O?(N=0,I[L]):I[L]>O?(N=yt[Ft+I[L]],B[rt+I[L]]):(N=96,0),_=1<<w-et,T=R=1<<V;E[F+(k>>et)+(R-=_)]=v<<24|N<<16|x|0,R!==0;);for(_=1<<w-1;k&_;)_>>=1;if(_!==0?(k&=_-1,k+=_):k=0,L++,--st[w]==0){if(w===D)break;w=u[d+I[L]]}if($<w&&(k&y)!==C){for(et===0&&(et=$),F+=T,W=1<<(V=w-et);V+et<D&&!((W-=st[V+et])<=0);)V++,W<<=1;if(nt+=1<<V,h===1&&852<nt||h===2&&592<nt)return 1;E[C=k&y]=$<<24|V<<16|F-p|0}}return k!==0&&(E[F+k]=w-et<<24|64<<16|0),m.bits=$,0}},{"../utils/common":41}],51:[function(t,s,i){s.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],52:[function(t,s,i){var n=t("../utils/common"),r=0,o=1;function a(b){for(var U=b.length;0<=--U;)b[U]=0}var l=0,h=29,u=256,d=u+1+h,f=30,E=19,p=2*d+1,I=15,m=16,_=7,R=256,C=16,y=17,F=18,O=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],v=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],N=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],x=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],G=new Array(2*(d+2));a(G);var w=new Array(2*f);a(w);var L=new Array(512);a(L);var T=new Array(256);a(T);var D=new Array(h);a(D);var $,V,et,W=new Array(f);function nt(b,U,Z,j,z){this.static_tree=b,this.extra_bits=U,this.extra_base=Z,this.elems=j,this.max_length=z,this.has_stree=b&&b.length}function k(b,U){this.dyn_tree=b,this.max_code=0,this.stat_desc=U}function B(b){return b<256?L[b]:L[256+(b>>>7)]}function rt(b,U){b.pending_buf[b.pending++]=255&U,b.pending_buf[b.pending++]=U>>>8&255}function st(b,U,Z){b.bi_valid>m-Z?(b.bi_buf|=U<<b.bi_valid&65535,rt(b,b.bi_buf),b.bi_buf=U>>m-b.bi_valid,b.bi_valid+=Z-m):(b.bi_buf|=U<<b.bi_valid&65535,b.bi_valid+=Z)}function tt(b,U,Z){st(b,Z[2*U],Z[2*U+1])}function yt(b,U){for(var Z=0;Z|=1&b,b>>>=1,Z<<=1,0<--U;);return Z>>>1}function Ft(b,U,Z){var j,z,q=new Array(I+1),it=0;for(j=1;j<=I;j++)q[j]=it=it+Z[j-1]<<1;for(z=0;z<=U;z++){var J=b[2*z+1];J!==0&&(b[2*z]=yt(q[J]++,J))}}function ot(b){var U;for(U=0;U<d;U++)b.dyn_ltree[2*U]=0;for(U=0;U<f;U++)b.dyn_dtree[2*U]=0;for(U=0;U<E;U++)b.bl_tree[2*U]=0;b.dyn_ltree[2*R]=1,b.opt_len=b.static_len=0,b.last_lit=b.matches=0}function dt(b){8<b.bi_valid?rt(b,b.bi_buf):0<b.bi_valid&&(b.pending_buf[b.pending++]=b.bi_buf),b.bi_buf=0,b.bi_valid=0}function ut(b,U,Z,j){var z=2*U,q=2*Z;return b[z]<b[q]||b[z]===b[q]&&j[U]<=j[Z]}function mt(b,U,Z){for(var j=b.heap[Z],z=Z<<1;z<=b.heap_len&&(z<b.heap_len&&ut(U,b.heap[z+1],b.heap[z],b.depth)&&z++,!ut(U,j,b.heap[z],b.depth));)b.heap[Z]=b.heap[z],Z=z,z<<=1;b.heap[Z]=j}function Vt(b,U,Z){var j,z,q,it,J=0;if(b.last_lit!==0)for(;j=b.pending_buf[b.d_buf+2*J]<<8|b.pending_buf[b.d_buf+2*J+1],z=b.pending_buf[b.l_buf+J],J++,j===0?tt(b,z,U):(tt(b,(q=T[z])+u+1,U),(it=O[q])!==0&&st(b,z-=D[q],it),tt(b,q=B(--j),Z),(it=v[q])!==0&&st(b,j-=W[q],it)),J<b.last_lit;);tt(b,R,U)}function Lt(b,U){var Z,j,z,q=U.dyn_tree,it=U.stat_desc.static_tree,J=U.stat_desc.has_stree,at=U.stat_desc.elems,gt=-1;for(b.heap_len=0,b.heap_max=p,Z=0;Z<at;Z++)q[2*Z]!==0?(b.heap[++b.heap_len]=gt=Z,b.depth[Z]=0):q[2*Z+1]=0;for(;b.heap_len<2;)q[2*(z=b.heap[++b.heap_len]=gt<2?++gt:0)]=1,b.depth[z]=0,b.opt_len--,J&&(b.static_len-=it[2*z+1]);for(U.max_code=gt,Z=b.heap_len>>1;1<=Z;Z--)mt(b,q,Z);for(z=at;Z=b.heap[1],b.heap[1]=b.heap[b.heap_len--],mt(b,q,1),j=b.heap[1],b.heap[--b.heap_max]=Z,b.heap[--b.heap_max]=j,q[2*z]=q[2*Z]+q[2*j],b.depth[z]=(b.depth[Z]>=b.depth[j]?b.depth[Z]:b.depth[j])+1,q[2*Z+1]=q[2*j+1]=z,b.heap[1]=z++,mt(b,q,1),2<=b.heap_len;);b.heap[--b.heap_max]=b.heap[1],function(ft,kt){var Qe,te,qe,St,Rs,Pi,oe=kt.dyn_tree,Nn=kt.max_code,co=kt.stat_desc.static_tree,lo=kt.stat_desc.has_stree,ho=kt.stat_desc.extra_bits,bn=kt.stat_desc.extra_base,Ke=kt.stat_desc.max_length,ws=0;for(St=0;St<=I;St++)ft.bl_count[St]=0;for(oe[2*ft.heap[ft.heap_max]+1]=0,Qe=ft.heap_max+1;Qe<p;Qe++)Ke<(St=oe[2*oe[2*(te=ft.heap[Qe])+1]+1]+1)&&(St=Ke,ws++),oe[2*te+1]=St,Nn<te||(ft.bl_count[St]++,Rs=0,bn<=te&&(Rs=ho[te-bn]),Pi=oe[2*te],ft.opt_len+=Pi*(St+Rs),lo&&(ft.static_len+=Pi*(co[2*te+1]+Rs)));if(ws!==0){do{for(St=Ke-1;ft.bl_count[St]===0;)St--;ft.bl_count[St]--,ft.bl_count[St+1]+=2,ft.bl_count[Ke]--,ws-=2}while(0<ws);for(St=Ke;St!==0;St--)for(te=ft.bl_count[St];te!==0;)Nn<(qe=ft.heap[--Qe])||(oe[2*qe+1]!==St&&(ft.opt_len+=(St-oe[2*qe+1])*oe[2*qe],oe[2*qe+1]=St),te--)}}(b,U),Ft(q,gt,b.bl_count)}function A(b,U,Z){var j,z,q=-1,it=U[1],J=0,at=7,gt=4;for(it===0&&(at=138,gt=3),U[2*(Z+1)+1]=65535,j=0;j<=Z;j++)z=it,it=U[2*(j+1)+1],++J<at&&z===it||(J<gt?b.bl_tree[2*z]+=J:z!==0?(z!==q&&b.bl_tree[2*z]++,b.bl_tree[2*C]++):J<=10?b.bl_tree[2*y]++:b.bl_tree[2*F]++,q=z,gt=(J=0)===it?(at=138,3):z===it?(at=6,3):(at=7,4))}function X(b,U,Z){var j,z,q=-1,it=U[1],J=0,at=7,gt=4;for(it===0&&(at=138,gt=3),j=0;j<=Z;j++)if(z=it,it=U[2*(j+1)+1],!(++J<at&&z===it)){if(J<gt)for(;tt(b,z,b.bl_tree),--J!=0;);else z!==0?(z!==q&&(tt(b,z,b.bl_tree),J--),tt(b,C,b.bl_tree),st(b,J-3,2)):J<=10?(tt(b,y,b.bl_tree),st(b,J-3,3)):(tt(b,F,b.bl_tree),st(b,J-11,7));q=z,gt=(J=0)===it?(at=138,3):z===it?(at=6,3):(at=7,4)}}a(W);var Y=!1;function P(b,U,Z,j){st(b,(l<<1)+(j?1:0),3),function(z,q,it,J){dt(z),rt(z,it),rt(z,~it),n.arraySet(z.pending_buf,z.window,q,it,z.pending),z.pending+=it}(b,U,Z)}i._tr_init=function(b){Y||(function(){var U,Z,j,z,q,it=new Array(I+1);for(z=j=0;z<h-1;z++)for(D[z]=j,U=0;U<1<<O[z];U++)T[j++]=z;for(T[j-1]=z,z=q=0;z<16;z++)for(W[z]=q,U=0;U<1<<v[z];U++)L[q++]=z;for(q>>=7;z<f;z++)for(W[z]=q<<7,U=0;U<1<<v[z]-7;U++)L[256+q++]=z;for(Z=0;Z<=I;Z++)it[Z]=0;for(U=0;U<=143;)G[2*U+1]=8,U++,it[8]++;for(;U<=255;)G[2*U+1]=9,U++,it[9]++;for(;U<=279;)G[2*U+1]=7,U++,it[7]++;for(;U<=287;)G[2*U+1]=8,U++,it[8]++;for(Ft(G,d+1,it),U=0;U<f;U++)w[2*U+1]=5,w[2*U]=yt(U,5);$=new nt(G,O,u+1,d,I),V=new nt(w,v,0,f,I),et=new nt(new Array(0),N,0,E,_)}(),Y=!0),b.l_desc=new k(b.dyn_ltree,$),b.d_desc=new k(b.dyn_dtree,V),b.bl_desc=new k(b.bl_tree,et),b.bi_buf=0,b.bi_valid=0,ot(b)},i._tr_stored_block=P,i._tr_flush_block=function(b,U,Z,j){var z,q,it=0;0<b.level?(b.strm.data_type===2&&(b.strm.data_type=function(J){var at,gt=4093624447;for(at=0;at<=31;at++,gt>>>=1)if(1>&&J.dyn_ltree[2*at]!==0)return r;if(J.dyn_ltree[18]!==0||J.dyn_ltree[20]!==0||J.dyn_ltree[26]!==0)return o;for(at=32;at<u;at++)if(J.dyn_ltree[2*at]!==0)return o;return r}(b)),Lt(b,b.l_desc),Lt(b,b.d_desc),it=function(J){var at;for(A(J,J.dyn_ltree,J.l_desc.max_code),A(J,J.dyn_dtree,J.d_desc.max_code),Lt(J,J.bl_desc),at=E-1;3<=at&&J.bl_tree[2*x[at]+1]===0;at--);return J.opt_len+=3*(at+1)+5+5+4,at}(b),z=b.opt_len+3+7>>>3,(q=b.static_len+3+7>>>3)<=z&&(z=q)):z=q=Z+5,Z+4<=z&&U!==-1?P(b,U,Z,j):b.strategy===4||q===z?(st(b,2+(j?1:0),3),Vt(b,G,w)):(st(b,4+(j?1:0),3),function(J,at,gt,ft){var kt;for(st(J,at-257,5),st(J,gt-1,5),st(J,ft-4,4),kt=0;kt<ft;kt++)st(J,J.bl_tree[2*x[kt]+1],3);X(J,J.dyn_ltree,at-1),X(J,J.dyn_dtree,gt-1)}(b,b.l_desc.max_code+1,b.d_desc.max_code+1,it+1),Vt(b,b.dyn_ltree,b.dyn_dtree)),ot(b),j&&dt(b)},i._tr_tally=function(b,U,Z){return b.pending_buf[b.d_buf+2*b.last_lit]=U>>>8&255,b.pending_buf[b.d_buf+2*b.last_lit+1]=255&U,b.pending_buf[b.l_buf+b.last_lit]=255&Z,b.last_lit++,U===0?b.dyn_ltree[2*Z]++:(b.matches++,U--,b.dyn_ltree[2*(T[Z]+u+1)]++,b.dyn_dtree[2*B(U)]++),b.last_lit===b.lit_bufsize-1},i._tr_align=function(b){st(b,2,3),tt(b,R,G),function(U){U.bi_valid===16?(rt(U,U.bi_buf),U.bi_buf=0,U.bi_valid=0):8<=U.bi_valid&&(U.pending_buf[U.pending++]=255&U.bi_buf,U.bi_buf>>=8,U.bi_valid-=8)}(b)}},{"../utils/common":41}],53:[function(t,s,i){s.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(t,s,i){(function(n){(function(r,o){if(!r.setImmediate){var a,l,h,u,d=1,f={},E=!1,p=r.document,I=Object.getPrototypeOf&&Object.getPrototypeOf(r);I=I&&I.setTimeout?I:r,a={}.toString.call(r.process)==="[object process]"?function(C){process.nextTick(function(){_(C)})}:function(){if(r.postMessage&&!r.importScripts){var C=!0,y=r.onmessage;return r.onmessage=function(){C=!1},r.postMessage("","*"),r.onmessage=y,C}}()?(u="setImmediate$"+Math.random()+"$",r.addEventListener?r.addEventListener("message",R,!1):r.attachEvent("onmessage",R),function(C){r.postMessage(u+C,"*")}):r.MessageChannel?((h=new MessageChannel).port1.onmessage=function(C){_(C.data)},function(C){h.port2.postMessage(C)}):p&&"onreadystatechange"in p.createElement("script")?(l=p.documentElement,function(C){var y=p.createElement("script");y.onreadystatechange=function(){_(C),y.onreadystatechange=null,l.removeChild(y),y=null},l.appendChild(y)}):function(C){setTimeout(_,0,C)},I.setImmediate=function(C){typeof C!="function"&&(C=new Function(""+C));for(var y=new Array(arguments.length-1),F=0;F<y.length;F++)y[F]=arguments[F+1];var O={callback:C,args:y};return f[d]=O,a(d),d++},I.clearImmediate=m}function m(C){delete f[C]}function _(C){if(E)setTimeout(_,0,C);else{var y=f[C];if(y){E=!0;try{(function(F){var O=F.callback,v=F.args;switch(v.length){case 0:O();break;case 1:O(v[0]);break;case 2:O(v[0],v[1]);break;case 3:O(v[0],v[1],v[2]);break;default:O.apply(o,v)}})(y)}finally{m(C),E=!1}}}}function R(C){C.source===r&&typeof C.data=="string"&&C.data.indexOf(u)===0&&_(+C.data.slice(u.length))}})(typeof self>"u"?n===void 0?this:n:self)}).call(this,typeof js<"u"?js:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})})(Hr);var tc=Hr.exports;const fr=Ja(tc);var yn={},Ni={};(function(c){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",t=e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",s="["+e+"]["+t+"]*",i=new RegExp("^"+s+"$"),n=function(o,a){const l=[];let h=a.exec(o);for(;h;){const u=[];u.startIndex=a.lastIndex-h[0].length;const d=h.length;for(let f=0;f<d;f++)u.push(h[f]);l.push(u),h=a.exec(o)}return l},r=function(o){const a=i.exec(o);return!(a===null||typeof a>"u")};c.isExist=function(o){return typeof o<"u"},c.isEmptyObject=function(o){return Object.keys(o).length===0},c.merge=function(o,a,l){if(a){const h=Object.keys(a),u=h.length;for(let d=0;d<u;d++)l==="strict"?o[h[d]]=[a[h[d]]]:o[h[d]]=a[h[d]]}},c.getValue=function(o){return c.isExist(o)?o:""},c.isName=r,c.getAllMatches=n,c.nameRegexp=s})(Ni);const Rn=Ni,ec={allowBooleanAttributes:!1,unpairedTags:[]};yn.validate=function(c,e){e=Object.assign({},ec,e);const t=[];let s=!1,i=!1;c[0]==="\uFEFF"&&(c=c.substr(1));for(let n=0;n<c.length;n++)if(c[n]==="<"&&c[n+1]==="?"){if(n+=2,n=Er(c,n),n.err)return n}else if(c[n]==="<"){let r=n;if(n++,c[n]==="!"){n=mr(c,n);continue}else{let o=!1;c[n]==="/"&&(o=!0,n++);let a="";for(;n<c.length&&c[n]!==">"&&c[n]!==" "&&c[n]!==" "&&c[n]!==`
|
|
140
|
-
`&&c[n]!=="\r";n++)a+=c[n];if(a=a.trim(),a[a.length-1]==="/"&&(a=a.substring(0,a.length-1),n--),!
|
|
141
|
-
`||c==="\r"}function
|
|
142
|
-
`);const
|
|
143
|
-
`;function
|
|
138
|
+
*/(function(c,i){(function(t){c.exports=t()})(function(){return function t(e,s,n){function r(l,h){if(!s[l]){if(!e[l]){var f=typeof os=="function"&&os;if(!h&&f)return f(l,!0);if(o)return o(l,!0);var I=new Error("Cannot find module '"+l+"'");throw I.code="MODULE_NOT_FOUND",I}var u=s[l]={exports:{}};e[l][0].call(u.exports,function(d){var E=e[l][1][d];return r(E||d)},u,u.exports,t,e,s,n)}return s[l].exports}for(var o=typeof os=="function"&&os,a=0;a<n.length;a++)r(n[a]);return r}({1:[function(t,e,s){var n=t("./utils"),r=t("./support"),o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";s.encode=function(a){for(var l,h,f,I,u,d,E,T=[],p=0,m=a.length,F=m,R=n.getTypeOf(a)!=="string";p<a.length;)F=m-p,f=R?(l=a[p++],h=p<m?a[p++]:0,p<m?a[p++]:0):(l=a.charCodeAt(p++),h=p<m?a.charCodeAt(p++):0,p<m?a.charCodeAt(p++):0),I=l>>2,u=(3&l)<<4|h>>4,d=1<F?(15&h)<<2|f>>6:64,E=2<F?63&f:64,T.push(o.charAt(I)+o.charAt(u)+o.charAt(d)+o.charAt(E));return T.join("")},s.decode=function(a){var l,h,f,I,u,d,E=0,T=0,p="data:";if(a.substr(0,p.length)===p)throw new Error("Invalid base64 input, it looks like a data url.");var m,F=3*(a=a.replace(/[^A-Za-z0-9+/=]/g,"")).length/4;if(a.charAt(a.length-1)===o.charAt(64)&&F--,a.charAt(a.length-2)===o.charAt(64)&&F--,F%1!=0)throw new Error("Invalid base64 input, bad content length.");for(m=r.uint8array?new Uint8Array(0|F):new Array(0|F);E<a.length;)l=o.indexOf(a.charAt(E++))<<2|(I=o.indexOf(a.charAt(E++)))>>4,h=(15&I)<<4|(u=o.indexOf(a.charAt(E++)))>>2,f=(3&u)<<6|(d=o.indexOf(a.charAt(E++))),m[T++]=l,u!==64&&(m[T++]=h),d!==64&&(m[T++]=f);return m}},{"./support":30,"./utils":32}],2:[function(t,e,s){var n=t("./external"),r=t("./stream/DataWorker"),o=t("./stream/Crc32Probe"),a=t("./stream/DataLengthProbe");function l(h,f,I,u,d){this.compressedSize=h,this.uncompressedSize=f,this.crc32=I,this.compression=u,this.compressedContent=d}l.prototype={getContentWorker:function(){var h=new r(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),f=this;return h.on("end",function(){if(this.streamInfo.data_length!==f.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),h},getCompressedWorker:function(){return new r(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},l.createWorkerFrom=function(h,f,I){return h.pipe(new o).pipe(new a("uncompressedSize")).pipe(f.compressWorker(I)).pipe(new a("compressedSize")).withStreamInfo("compression",f)},e.exports=l},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(t,e,s){var n=t("./stream/GenericWorker");s.STORE={magic:"\0\0",compressWorker:function(){return new n("STORE compression")},uncompressWorker:function(){return new n("STORE decompression")}},s.DEFLATE=t("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(t,e,s){var n=t("./utils"),r=function(){for(var o,a=[],l=0;l<256;l++){o=l;for(var h=0;h<8;h++)o=1&o?3988292384^o>>>1:o>>>1;a[l]=o}return a}();e.exports=function(o,a){return o!==void 0&&o.length?n.getTypeOf(o)!=="string"?function(l,h,f,I){var u=r,d=I+f;l^=-1;for(var E=I;E<d;E++)l=l>>>8^u[255&(l^h[E])];return-1^l}(0|a,o,o.length,0):function(l,h,f,I){var u=r,d=I+f;l^=-1;for(var E=I;E<d;E++)l=l>>>8^u[255&(l^h.charCodeAt(E))];return-1^l}(0|a,o,o.length,0):0}},{"./utils":32}],5:[function(t,e,s){s.base64=!1,s.binary=!1,s.dir=!1,s.createFolders=!0,s.date=null,s.compression=null,s.compressionOptions=null,s.comment=null,s.unixPermissions=null,s.dosPermissions=null},{}],6:[function(t,e,s){var n=null;n=typeof Promise<"u"?Promise:t("lie"),e.exports={Promise:n}},{lie:37}],7:[function(t,e,s){var n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",r=t("pako"),o=t("./utils"),a=t("./stream/GenericWorker"),l=n?"uint8array":"array";function h(f,I){a.call(this,"FlateWorker/"+f),this._pako=null,this._pakoAction=f,this._pakoOptions=I,this.meta={}}s.magic="\b\0",o.inherits(h,a),h.prototype.processChunk=function(f){this.meta=f.meta,this._pako===null&&this._createPako(),this._pako.push(o.transformTo(l,f.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new r[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var f=this;this._pako.onData=function(I){f.push({data:I,meta:f.meta})}},s.compressWorker=function(f){return new h("Deflate",f)},s.uncompressWorker=function(){return new h("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(t,e,s){function n(u,d){var E,T="";for(E=0;E<d;E++)T+=String.fromCharCode(255&u),u>>>=8;return T}function r(u,d,E,T,p,m){var F,R,S=u.file,N=u.compression,L=m!==l.utf8encode,D=o.transformTo("string",m(S.name)),P=o.transformTo("string",l.utf8encode(S.name)),v=S.comment,z=o.transformTo("string",m(v)),O=o.transformTo("string",l.utf8encode(v)),w=P.length!==S.name.length,g=O.length!==v.length,U="",q="",Y="",et=S.dir,X=S.date,nt={crc32:0,compressedSize:0,uncompressedSize:0};d&&!E||(nt.crc32=u.crc32,nt.compressedSize=u.compressedSize,nt.uncompressedSize=u.uncompressedSize);var G=0;d&&(G|=8),L||!w&&!g||(G|=2048);var B=0,rt=0;et&&(B|=16),p==="UNIX"?(rt=798,B|=function(tt,Ft){var Nt=tt;return tt||(Nt=Ft?16893:33204),(65535&Nt)<<16}(S.unixPermissions,et)):(rt=20,B|=function(tt){return 63&(tt||0)}(S.dosPermissions)),F=X.getUTCHours(),F<<=6,F|=X.getUTCMinutes(),F<<=5,F|=X.getUTCSeconds()/2,R=X.getUTCFullYear()-1980,R<<=4,R|=X.getUTCMonth()+1,R<<=5,R|=X.getUTCDate(),w&&(q=n(1,1)+n(h(D),4)+P,U+="up"+n(q.length,2)+q),g&&(Y=n(1,1)+n(h(z),4)+O,U+="uc"+n(Y.length,2)+Y);var it="";return it+=`
|
|
139
|
+
\0`,it+=n(G,2),it+=N.magic,it+=n(F,2),it+=n(R,2),it+=n(nt.crc32,4),it+=n(nt.compressedSize,4),it+=n(nt.uncompressedSize,4),it+=n(D.length,2),it+=n(U.length,2),{fileRecord:f.LOCAL_FILE_HEADER+it+D+U,dirRecord:f.CENTRAL_FILE_HEADER+n(rt,2)+it+n(z.length,2)+"\0\0\0\0"+n(B,4)+n(T,4)+D+U+z}}var o=t("../utils"),a=t("../stream/GenericWorker"),l=t("../utf8"),h=t("../crc32"),f=t("../signature");function I(u,d,E,T){a.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=d,this.zipPlatform=E,this.encodeFileName=T,this.streamFiles=u,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}o.inherits(I,a),I.prototype.push=function(u){var d=u.meta.percent||0,E=this.entriesCount,T=this._sources.length;this.accumulate?this.contentBuffer.push(u):(this.bytesWritten+=u.data.length,a.prototype.push.call(this,{data:u.data,meta:{currentFile:this.currentFile,percent:E?(d+100*(E-T-1))/E:100}}))},I.prototype.openedSource=function(u){this.currentSourceOffset=this.bytesWritten,this.currentFile=u.file.name;var d=this.streamFiles&&!u.file.dir;if(d){var E=r(u,d,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:E.fileRecord,meta:{percent:0}})}else this.accumulate=!0},I.prototype.closedSource=function(u){this.accumulate=!1;var d=this.streamFiles&&!u.file.dir,E=r(u,d,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(E.dirRecord),d)this.push({data:function(T){return f.DATA_DESCRIPTOR+n(T.crc32,4)+n(T.compressedSize,4)+n(T.uncompressedSize,4)}(u),meta:{percent:100}});else for(this.push({data:E.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},I.prototype.flush=function(){for(var u=this.bytesWritten,d=0;d<this.dirRecords.length;d++)this.push({data:this.dirRecords[d],meta:{percent:100}});var E=this.bytesWritten-u,T=function(p,m,F,R,S){var N=o.transformTo("string",S(R));return f.CENTRAL_DIRECTORY_END+"\0\0\0\0"+n(p,2)+n(p,2)+n(m,4)+n(F,4)+n(N.length,2)+N}(this.dirRecords.length,E,u,this.zipComment,this.encodeFileName);this.push({data:T,meta:{percent:100}})},I.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},I.prototype.registerPrevious=function(u){this._sources.push(u);var d=this;return u.on("data",function(E){d.processChunk(E)}),u.on("end",function(){d.closedSource(d.previous.streamInfo),d._sources.length?d.prepareNextSource():d.end()}),u.on("error",function(E){d.error(E)}),this},I.prototype.resume=function(){return!!a.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},I.prototype.error=function(u){var d=this._sources;if(!a.prototype.error.call(this,u))return!1;for(var E=0;E<d.length;E++)try{d[E].error(u)}catch{}return!0},I.prototype.lock=function(){a.prototype.lock.call(this);for(var u=this._sources,d=0;d<u.length;d++)u[d].lock()},e.exports=I},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(t,e,s){var n=t("../compressions"),r=t("./ZipFileWorker");s.generateWorker=function(o,a,l){var h=new r(a.streamFiles,l,a.platform,a.encodeFileName),f=0;try{o.forEach(function(I,u){f++;var d=function(m,F){var R=m||F,S=n[R];if(!S)throw new Error(R+" is not a valid compression method !");return S}(u.options.compression,a.compression),E=u.options.compressionOptions||a.compressionOptions||{},T=u.dir,p=u.date;u._compressWorker(d,E).withStreamInfo("file",{name:I,dir:T,date:p,comment:u.comment||"",unixPermissions:u.unixPermissions,dosPermissions:u.dosPermissions}).pipe(h)}),h.entriesCount=f}catch(I){h.error(I)}return h}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(t,e,s){function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var r=new n;for(var o in this)typeof this[o]!="function"&&(r[o]=this[o]);return r}}(n.prototype=t("./object")).loadAsync=t("./load"),n.support=t("./support"),n.defaults=t("./defaults"),n.version="3.10.1",n.loadAsync=function(r,o){return new n().loadAsync(r,o)},n.external=t("./external"),e.exports=n},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(t,e,s){var n=t("./utils"),r=t("./external"),o=t("./utf8"),a=t("./zipEntries"),l=t("./stream/Crc32Probe"),h=t("./nodejsUtils");function f(I){return new r.Promise(function(u,d){var E=I.decompressed.getContentWorker().pipe(new l);E.on("error",function(T){d(T)}).on("end",function(){E.streamInfo.crc32!==I.decompressed.crc32?d(new Error("Corrupted zip : CRC32 mismatch")):u()}).resume()})}e.exports=function(I,u){var d=this;return u=n.extend(u||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:o.utf8decode}),h.isNode&&h.isStream(I)?r.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):n.prepareContent("the loaded zip file",I,!0,u.optimizedBinaryString,u.base64).then(function(E){var T=new a(u);return T.load(E),T}).then(function(E){var T=[r.Promise.resolve(E)],p=E.files;if(u.checkCRC32)for(var m=0;m<p.length;m++)T.push(f(p[m]));return r.Promise.all(T)}).then(function(E){for(var T=E.shift(),p=T.files,m=0;m<p.length;m++){var F=p[m],R=F.fileNameStr,S=n.resolve(F.fileNameStr);d.file(S,F.decompressed,{binary:!0,optimizedBinaryString:!0,date:F.date,dir:F.dir,comment:F.fileCommentStr.length?F.fileCommentStr:null,unixPermissions:F.unixPermissions,dosPermissions:F.dosPermissions,createFolders:u.createFolders}),F.dir||(d.file(S).unsafeOriginalName=R)}return T.zipComment.length&&(d.comment=T.zipComment),d})}},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(t,e,s){var n=t("../utils"),r=t("../stream/GenericWorker");function o(a,l){r.call(this,"Nodejs stream input adapter for "+a),this._upstreamEnded=!1,this._bindStream(l)}n.inherits(o,r),o.prototype._bindStream=function(a){var l=this;(this._stream=a).pause(),a.on("data",function(h){l.push({data:h,meta:{percent:0}})}).on("error",function(h){l.isPaused?this.generatedError=h:l.error(h)}).on("end",function(){l.isPaused?l._upstreamEnded=!0:l.end()})},o.prototype.pause=function(){return!!r.prototype.pause.call(this)&&(this._stream.pause(),!0)},o.prototype.resume=function(){return!!r.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},e.exports=o},{"../stream/GenericWorker":28,"../utils":32}],13:[function(t,e,s){var n=t("readable-stream").Readable;function r(o,a,l){n.call(this,a),this._helper=o;var h=this;o.on("data",function(f,I){h.push(f)||h._helper.pause(),l&&l(I)}).on("error",function(f){h.emit("error",f)}).on("end",function(){h.push(null)})}t("../utils").inherits(r,n),r.prototype._read=function(){this._helper.resume()},e.exports=r},{"../utils":32,"readable-stream":16}],14:[function(t,e,s){e.exports={isNode:typeof Buffer<"u",newBufferFrom:function(n,r){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(n,r);if(typeof n=="number")throw new Error('The "data" argument must not be a number');return new Buffer(n,r)},allocBuffer:function(n){if(Buffer.alloc)return Buffer.alloc(n);var r=new Buffer(n);return r.fill(0),r},isBuffer:function(n){return Buffer.isBuffer(n)},isStream:function(n){return n&&typeof n.on=="function"&&typeof n.pause=="function"&&typeof n.resume=="function"}}},{}],15:[function(t,e,s){function n(S,N,L){var D,P=o.getTypeOf(N),v=o.extend(L||{},h);v.date=v.date||new Date,v.compression!==null&&(v.compression=v.compression.toUpperCase()),typeof v.unixPermissions=="string"&&(v.unixPermissions=parseInt(v.unixPermissions,8)),v.unixPermissions&&16384&v.unixPermissions&&(v.dir=!0),v.dosPermissions&&16&v.dosPermissions&&(v.dir=!0),v.dir&&(S=p(S)),v.createFolders&&(D=T(S))&&m.call(this,D,!0);var z=P==="string"&&v.binary===!1&&v.base64===!1;L&&L.binary!==void 0||(v.binary=!z),(N instanceof f&&N.uncompressedSize===0||v.dir||!N||N.length===0)&&(v.base64=!1,v.binary=!0,N="",v.compression="STORE",P="string");var O=null;O=N instanceof f||N instanceof a?N:d.isNode&&d.isStream(N)?new E(S,N):o.prepareContent(S,N,v.binary,v.optimizedBinaryString,v.base64);var w=new I(S,O,v);this.files[S]=w}var r=t("./utf8"),o=t("./utils"),a=t("./stream/GenericWorker"),l=t("./stream/StreamHelper"),h=t("./defaults"),f=t("./compressedObject"),I=t("./zipObject"),u=t("./generate"),d=t("./nodejsUtils"),E=t("./nodejs/NodejsStreamInputAdapter"),T=function(S){S.slice(-1)==="/"&&(S=S.substring(0,S.length-1));var N=S.lastIndexOf("/");return 0<N?S.substring(0,N):""},p=function(S){return S.slice(-1)!=="/"&&(S+="/"),S},m=function(S,N){return N=N!==void 0?N:h.createFolders,S=p(S),this.files[S]||n.call(this,S,null,{dir:!0,createFolders:N}),this.files[S]};function F(S){return Object.prototype.toString.call(S)==="[object RegExp]"}var R={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(S){var N,L,D;for(N in this.files)D=this.files[N],(L=N.slice(this.root.length,N.length))&&N.slice(0,this.root.length)===this.root&&S(L,D)},filter:function(S){var N=[];return this.forEach(function(L,D){S(L,D)&&N.push(D)}),N},file:function(S,N,L){if(arguments.length!==1)return S=this.root+S,n.call(this,S,N,L),this;if(F(S)){var D=S;return this.filter(function(v,z){return!z.dir&&D.test(v)})}var P=this.files[this.root+S];return P&&!P.dir?P:null},folder:function(S){if(!S)return this;if(F(S))return this.filter(function(P,v){return v.dir&&S.test(P)});var N=this.root+S,L=m.call(this,N),D=this.clone();return D.root=L.name,D},remove:function(S){S=this.root+S;var N=this.files[S];if(N||(S.slice(-1)!=="/"&&(S+="/"),N=this.files[S]),N&&!N.dir)delete this.files[S];else for(var L=this.filter(function(P,v){return v.name.slice(0,S.length)===S}),D=0;D<L.length;D++)delete this.files[L[D].name];return this},generate:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(S){var N,L={};try{if((L=o.extend(S||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:r.utf8encode})).type=L.type.toLowerCase(),L.compression=L.compression.toUpperCase(),L.type==="binarystring"&&(L.type="string"),!L.type)throw new Error("No output type specified.");o.checkSupport(L.type),L.platform!=="darwin"&&L.platform!=="freebsd"&&L.platform!=="linux"&&L.platform!=="sunos"||(L.platform="UNIX"),L.platform==="win32"&&(L.platform="DOS");var D=L.comment||this.comment||"";N=u.generateWorker(this,L,D)}catch(P){(N=new a("error")).error(P)}return new l(N,L.type||"string",L.mimeType)},generateAsync:function(S,N){return this.generateInternalStream(S).accumulate(N)},generateNodeStream:function(S,N){return(S=S||{}).type||(S.type="nodebuffer"),this.generateInternalStream(S).toNodejsStream(N)}};e.exports=R},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(t,e,s){e.exports=t("stream")},{stream:void 0}],17:[function(t,e,s){var n=t("./DataReader");function r(o){n.call(this,o);for(var a=0;a<this.data.length;a++)o[a]=255&o[a]}t("../utils").inherits(r,n),r.prototype.byteAt=function(o){return this.data[this.zero+o]},r.prototype.lastIndexOfSignature=function(o){for(var a=o.charCodeAt(0),l=o.charCodeAt(1),h=o.charCodeAt(2),f=o.charCodeAt(3),I=this.length-4;0<=I;--I)if(this.data[I]===a&&this.data[I+1]===l&&this.data[I+2]===h&&this.data[I+3]===f)return I-this.zero;return-1},r.prototype.readAndCheckSignature=function(o){var a=o.charCodeAt(0),l=o.charCodeAt(1),h=o.charCodeAt(2),f=o.charCodeAt(3),I=this.readData(4);return a===I[0]&&l===I[1]&&h===I[2]&&f===I[3]},r.prototype.readData=function(o){if(this.checkOffset(o),o===0)return[];var a=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,a},e.exports=r},{"../utils":32,"./DataReader":18}],18:[function(t,e,s){var n=t("../utils");function r(o){this.data=o,this.length=o.length,this.index=0,this.zero=0}r.prototype={checkOffset:function(o){this.checkIndex(this.index+o)},checkIndex:function(o){if(this.length<this.zero+o||o<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+o+"). Corrupted zip ?")},setIndex:function(o){this.checkIndex(o),this.index=o},skip:function(o){this.setIndex(this.index+o)},byteAt:function(){},readInt:function(o){var a,l=0;for(this.checkOffset(o),a=this.index+o-1;a>=this.index;a--)l=(l<<8)+this.byteAt(a);return this.index+=o,l},readString:function(o){return n.transformTo("string",this.readData(o))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var o=this.readInt(4);return new Date(Date.UTC(1980+(o>>25&127),(o>>21&15)-1,o>>16&31,o>>11&31,o>>5&63,(31&o)<<1))}},e.exports=r},{"../utils":32}],19:[function(t,e,s){var n=t("./Uint8ArrayReader");function r(o){n.call(this,o)}t("../utils").inherits(r,n),r.prototype.readData=function(o){this.checkOffset(o);var a=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,a},e.exports=r},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(t,e,s){var n=t("./DataReader");function r(o){n.call(this,o)}t("../utils").inherits(r,n),r.prototype.byteAt=function(o){return this.data.charCodeAt(this.zero+o)},r.prototype.lastIndexOfSignature=function(o){return this.data.lastIndexOf(o)-this.zero},r.prototype.readAndCheckSignature=function(o){return o===this.readData(4)},r.prototype.readData=function(o){this.checkOffset(o);var a=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,a},e.exports=r},{"../utils":32,"./DataReader":18}],21:[function(t,e,s){var n=t("./ArrayReader");function r(o){n.call(this,o)}t("../utils").inherits(r,n),r.prototype.readData=function(o){if(this.checkOffset(o),o===0)return new Uint8Array(0);var a=this.data.subarray(this.zero+this.index,this.zero+this.index+o);return this.index+=o,a},e.exports=r},{"../utils":32,"./ArrayReader":17}],22:[function(t,e,s){var n=t("../utils"),r=t("../support"),o=t("./ArrayReader"),a=t("./StringReader"),l=t("./NodeBufferReader"),h=t("./Uint8ArrayReader");e.exports=function(f){var I=n.getTypeOf(f);return n.checkSupport(I),I!=="string"||r.uint8array?I==="nodebuffer"?new l(f):r.uint8array?new h(n.transformTo("uint8array",f)):new o(n.transformTo("array",f)):new a(f)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(t,e,s){s.LOCAL_FILE_HEADER="PK",s.CENTRAL_FILE_HEADER="PK",s.CENTRAL_DIRECTORY_END="PK",s.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",s.ZIP64_CENTRAL_DIRECTORY_END="PK",s.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(t,e,s){var n=t("./GenericWorker"),r=t("../utils");function o(a){n.call(this,"ConvertWorker to "+a),this.destType=a}r.inherits(o,n),o.prototype.processChunk=function(a){this.push({data:r.transformTo(this.destType,a.data),meta:a.meta})},e.exports=o},{"../utils":32,"./GenericWorker":28}],25:[function(t,e,s){var n=t("./GenericWorker"),r=t("../crc32");function o(){n.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}t("../utils").inherits(o,n),o.prototype.processChunk=function(a){this.streamInfo.crc32=r(a.data,this.streamInfo.crc32||0),this.push(a)},e.exports=o},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(t,e,s){var n=t("../utils"),r=t("./GenericWorker");function o(a){r.call(this,"DataLengthProbe for "+a),this.propName=a,this.withStreamInfo(a,0)}n.inherits(o,r),o.prototype.processChunk=function(a){if(a){var l=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=l+a.data.length}r.prototype.processChunk.call(this,a)},e.exports=o},{"../utils":32,"./GenericWorker":28}],27:[function(t,e,s){var n=t("../utils"),r=t("./GenericWorker");function o(a){r.call(this,"DataWorker");var l=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,a.then(function(h){l.dataIsReady=!0,l.data=h,l.max=h&&h.length||0,l.type=n.getTypeOf(h),l.isPaused||l._tickAndRepeat()},function(h){l.error(h)})}n.inherits(o,r),o.prototype.cleanUp=function(){r.prototype.cleanUp.call(this),this.data=null},o.prototype.resume=function(){return!!r.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},o.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},o.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var a=null,l=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":a=this.data.substring(this.index,l);break;case"uint8array":a=this.data.subarray(this.index,l);break;case"array":case"nodebuffer":a=this.data.slice(this.index,l)}return this.index=l,this.push({data:a,meta:{percent:this.max?this.index/this.max*100:0}})},e.exports=o},{"../utils":32,"./GenericWorker":28}],28:[function(t,e,s){function n(r){this.name=r||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(r){this.emit("data",r)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(r){this.emit("error",r)}return!0},error:function(r){return!this.isFinished&&(this.isPaused?this.generatedError=r:(this.isFinished=!0,this.emit("error",r),this.previous&&this.previous.error(r),this.cleanUp()),!0)},on:function(r,o){return this._listeners[r].push(o),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(r,o){if(this._listeners[r])for(var a=0;a<this._listeners[r].length;a++)this._listeners[r][a].call(this,o)},pipe:function(r){return r.registerPrevious(this)},registerPrevious:function(r){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.streamInfo=r.streamInfo,this.mergeStreamInfo(),this.previous=r;var o=this;return r.on("data",function(a){o.processChunk(a)}),r.on("end",function(){o.end()}),r.on("error",function(a){o.error(a)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var r=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),r=!0),this.previous&&this.previous.resume(),!r},flush:function(){},processChunk:function(r){this.push(r)},withStreamInfo:function(r,o){return this.extraStreamInfo[r]=o,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var r in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,r)&&(this.streamInfo[r]=this.extraStreamInfo[r])},lock:function(){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var r="Worker "+this.name;return this.previous?this.previous+" -> "+r:r}},e.exports=n},{}],29:[function(t,e,s){var n=t("../utils"),r=t("./ConvertWorker"),o=t("./GenericWorker"),a=t("../base64"),l=t("../support"),h=t("../external"),f=null;if(l.nodestream)try{f=t("../nodejs/NodejsStreamOutputAdapter")}catch{}function I(d,E){return new h.Promise(function(T,p){var m=[],F=d._internalType,R=d._outputType,S=d._mimeType;d.on("data",function(N,L){m.push(N),E&&E(L)}).on("error",function(N){m=[],p(N)}).on("end",function(){try{var N=function(L,D,P){switch(L){case"blob":return n.newBlob(n.transformTo("arraybuffer",D),P);case"base64":return a.encode(D);default:return n.transformTo(L,D)}}(R,function(L,D){var P,v=0,z=null,O=0;for(P=0;P<D.length;P++)O+=D[P].length;switch(L){case"string":return D.join("");case"array":return Array.prototype.concat.apply([],D);case"uint8array":for(z=new Uint8Array(O),P=0;P<D.length;P++)z.set(D[P],v),v+=D[P].length;return z;case"nodebuffer":return Buffer.concat(D);default:throw new Error("concat : unsupported type '"+L+"'")}}(F,m),S);T(N)}catch(L){p(L)}m=[]}).resume()})}function u(d,E,T){var p=E;switch(E){case"blob":case"arraybuffer":p="uint8array";break;case"base64":p="string"}try{this._internalType=p,this._outputType=E,this._mimeType=T,n.checkSupport(p),this._worker=d.pipe(new r(p)),d.lock()}catch(m){this._worker=new o("error"),this._worker.error(m)}}u.prototype={accumulate:function(d){return I(this,d)},on:function(d,E){var T=this;return d==="data"?this._worker.on(d,function(p){E.call(T,p.data,p.meta)}):this._worker.on(d,function(){n.delay(E,arguments,T)}),this},resume:function(){return n.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(d){if(n.checkSupport("nodestream"),this._outputType!=="nodebuffer")throw new Error(this._outputType+" is not supported by this method");return new f(this,{objectMode:this._outputType!=="nodebuffer"},d)}},e.exports=u},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(t,e,s){if(s.base64=!0,s.array=!0,s.string=!0,s.arraybuffer=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u",s.nodebuffer=typeof Buffer<"u",s.uint8array=typeof Uint8Array<"u",typeof ArrayBuffer>"u")s.blob=!1;else{var n=new ArrayBuffer(0);try{s.blob=new Blob([n],{type:"application/zip"}).size===0}catch{try{var r=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);r.append(n),s.blob=r.getBlob("application/zip").size===0}catch{s.blob=!1}}}try{s.nodestream=!!t("readable-stream").Readable}catch{s.nodestream=!1}},{"readable-stream":16}],31:[function(t,e,s){for(var n=t("./utils"),r=t("./support"),o=t("./nodejsUtils"),a=t("./stream/GenericWorker"),l=new Array(256),h=0;h<256;h++)l[h]=252<=h?6:248<=h?5:240<=h?4:224<=h?3:192<=h?2:1;l[254]=l[254]=1;function f(){a.call(this,"utf-8 decode"),this.leftOver=null}function I(){a.call(this,"utf-8 encode")}s.utf8encode=function(u){return r.nodebuffer?o.newBufferFrom(u,"utf-8"):function(d){var E,T,p,m,F,R=d.length,S=0;for(m=0;m<R;m++)(64512&(T=d.charCodeAt(m)))==55296&&m+1<R&&(64512&(p=d.charCodeAt(m+1)))==56320&&(T=65536+(T-55296<<10)+(p-56320),m++),S+=T<128?1:T<2048?2:T<65536?3:4;for(E=r.uint8array?new Uint8Array(S):new Array(S),m=F=0;F<S;m++)(64512&(T=d.charCodeAt(m)))==55296&&m+1<R&&(64512&(p=d.charCodeAt(m+1)))==56320&&(T=65536+(T-55296<<10)+(p-56320),m++),T<128?E[F++]=T:(T<2048?E[F++]=192|T>>>6:(T<65536?E[F++]=224|T>>>12:(E[F++]=240|T>>>18,E[F++]=128|T>>>12&63),E[F++]=128|T>>>6&63),E[F++]=128|63&T);return E}(u)},s.utf8decode=function(u){return r.nodebuffer?n.transformTo("nodebuffer",u).toString("utf-8"):function(d){var E,T,p,m,F=d.length,R=new Array(2*F);for(E=T=0;E<F;)if((p=d[E++])<128)R[T++]=p;else if(4<(m=l[p]))R[T++]=65533,E+=m-1;else{for(p&=m===2?31:m===3?15:7;1<m&&E<F;)p=p<<6|63&d[E++],m--;1<m?R[T++]=65533:p<65536?R[T++]=p:(p-=65536,R[T++]=55296|p>>10&1023,R[T++]=56320|1023&p)}return R.length!==T&&(R.subarray?R=R.subarray(0,T):R.length=T),n.applyFromCharCode(R)}(u=n.transformTo(r.uint8array?"uint8array":"array",u))},n.inherits(f,a),f.prototype.processChunk=function(u){var d=n.transformTo(r.uint8array?"uint8array":"array",u.data);if(this.leftOver&&this.leftOver.length){if(r.uint8array){var E=d;(d=new Uint8Array(E.length+this.leftOver.length)).set(this.leftOver,0),d.set(E,this.leftOver.length)}else d=this.leftOver.concat(d);this.leftOver=null}var T=function(m,F){var R;for((F=F||m.length)>m.length&&(F=m.length),R=F-1;0<=R&&(192&m[R])==128;)R--;return R<0||R===0?F:R+l[m[R]]>F?R:F}(d),p=d;T!==d.length&&(r.uint8array?(p=d.subarray(0,T),this.leftOver=d.subarray(T,d.length)):(p=d.slice(0,T),this.leftOver=d.slice(T,d.length))),this.push({data:s.utf8decode(p),meta:u.meta})},f.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=f,n.inherits(I,a),I.prototype.processChunk=function(u){this.push({data:s.utf8encode(u.data),meta:u.meta})},s.Utf8EncodeWorker=I},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(t,e,s){var n=t("./support"),r=t("./base64"),o=t("./nodejsUtils"),a=t("./external");function l(E){return E}function h(E,T){for(var p=0;p<E.length;++p)T[p]=255&E.charCodeAt(p);return T}t("setimmediate"),s.newBlob=function(E,T){s.checkSupport("blob");try{return new Blob([E],{type:T})}catch{try{var p=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return p.append(E),p.getBlob(T)}catch{throw new Error("Bug : can't construct the Blob.")}}};var f={stringifyByChunk:function(E,T,p){var m=[],F=0,R=E.length;if(R<=p)return String.fromCharCode.apply(null,E);for(;F<R;)T==="array"||T==="nodebuffer"?m.push(String.fromCharCode.apply(null,E.slice(F,Math.min(F+p,R)))):m.push(String.fromCharCode.apply(null,E.subarray(F,Math.min(F+p,R)))),F+=p;return m.join("")},stringifyByChar:function(E){for(var T="",p=0;p<E.length;p++)T+=String.fromCharCode(E[p]);return T},applyCanBeUsed:{uint8array:function(){try{return n.uint8array&&String.fromCharCode.apply(null,new Uint8Array(1)).length===1}catch{return!1}}(),nodebuffer:function(){try{return n.nodebuffer&&String.fromCharCode.apply(null,o.allocBuffer(1)).length===1}catch{return!1}}()}};function I(E){var T=65536,p=s.getTypeOf(E),m=!0;if(p==="uint8array"?m=f.applyCanBeUsed.uint8array:p==="nodebuffer"&&(m=f.applyCanBeUsed.nodebuffer),m)for(;1<T;)try{return f.stringifyByChunk(E,p,T)}catch{T=Math.floor(T/2)}return f.stringifyByChar(E)}function u(E,T){for(var p=0;p<E.length;p++)T[p]=E[p];return T}s.applyFromCharCode=I;var d={};d.string={string:l,array:function(E){return h(E,new Array(E.length))},arraybuffer:function(E){return d.string.uint8array(E).buffer},uint8array:function(E){return h(E,new Uint8Array(E.length))},nodebuffer:function(E){return h(E,o.allocBuffer(E.length))}},d.array={string:I,array:l,arraybuffer:function(E){return new Uint8Array(E).buffer},uint8array:function(E){return new Uint8Array(E)},nodebuffer:function(E){return o.newBufferFrom(E)}},d.arraybuffer={string:function(E){return I(new Uint8Array(E))},array:function(E){return u(new Uint8Array(E),new Array(E.byteLength))},arraybuffer:l,uint8array:function(E){return new Uint8Array(E)},nodebuffer:function(E){return o.newBufferFrom(new Uint8Array(E))}},d.uint8array={string:I,array:function(E){return u(E,new Array(E.length))},arraybuffer:function(E){return E.buffer},uint8array:l,nodebuffer:function(E){return o.newBufferFrom(E)}},d.nodebuffer={string:I,array:function(E){return u(E,new Array(E.length))},arraybuffer:function(E){return d.nodebuffer.uint8array(E).buffer},uint8array:function(E){return u(E,new Uint8Array(E.length))},nodebuffer:l},s.transformTo=function(E,T){if(T=T||"",!E)return T;s.checkSupport(E);var p=s.getTypeOf(T);return d[p][E](T)},s.resolve=function(E){for(var T=E.split("/"),p=[],m=0;m<T.length;m++){var F=T[m];F==="."||F===""&&m!==0&&m!==T.length-1||(F===".."?p.pop():p.push(F))}return p.join("/")},s.getTypeOf=function(E){return typeof E=="string"?"string":Object.prototype.toString.call(E)==="[object Array]"?"array":n.nodebuffer&&o.isBuffer(E)?"nodebuffer":n.uint8array&&E instanceof Uint8Array?"uint8array":n.arraybuffer&&E instanceof ArrayBuffer?"arraybuffer":void 0},s.checkSupport=function(E){if(!n[E.toLowerCase()])throw new Error(E+" is not supported by this platform")},s.MAX_VALUE_16BITS=65535,s.MAX_VALUE_32BITS=-1,s.pretty=function(E){var T,p,m="";for(p=0;p<(E||"").length;p++)m+="\\x"+((T=E.charCodeAt(p))<16?"0":"")+T.toString(16).toUpperCase();return m},s.delay=function(E,T,p){setImmediate(function(){E.apply(p||null,T||[])})},s.inherits=function(E,T){function p(){}p.prototype=T.prototype,E.prototype=new p},s.extend=function(){var E,T,p={};for(E=0;E<arguments.length;E++)for(T in arguments[E])Object.prototype.hasOwnProperty.call(arguments[E],T)&&p[T]===void 0&&(p[T]=arguments[E][T]);return p},s.prepareContent=function(E,T,p,m,F){return a.Promise.resolve(T).then(function(R){return n.blob&&(R instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(R))!==-1)&&typeof FileReader<"u"?new a.Promise(function(S,N){var L=new FileReader;L.onload=function(D){S(D.target.result)},L.onerror=function(D){N(D.target.error)},L.readAsArrayBuffer(R)}):R}).then(function(R){var S=s.getTypeOf(R);return S?(S==="arraybuffer"?R=s.transformTo("uint8array",R):S==="string"&&(F?R=r.decode(R):p&&m!==!0&&(R=function(N){return h(N,n.uint8array?new Uint8Array(N.length):new Array(N.length))}(R))),R):a.Promise.reject(new Error("Can't read the data of '"+E+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,setimmediate:54}],33:[function(t,e,s){var n=t("./reader/readerFor"),r=t("./utils"),o=t("./signature"),a=t("./zipEntry"),l=t("./support");function h(f){this.files=[],this.loadOptions=f}h.prototype={checkSignature:function(f){if(!this.reader.readAndCheckSignature(f)){this.reader.index-=4;var I=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+r.pretty(I)+", expected "+r.pretty(f)+")")}},isSignature:function(f,I){var u=this.reader.index;this.reader.setIndex(f);var d=this.reader.readString(4)===I;return this.reader.setIndex(u),d},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var f=this.reader.readData(this.zipCommentLength),I=l.uint8array?"uint8array":"array",u=r.transformTo(I,f);this.zipComment=this.loadOptions.decodeFileName(u)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var f,I,u,d=this.zip64EndOfCentralSize-44;0<d;)f=this.reader.readInt(2),I=this.reader.readInt(4),u=this.reader.readData(I),this.zip64ExtensibleData[f]={id:f,length:I,value:u}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var f,I;for(f=0;f<this.files.length;f++)I=this.files[f],this.reader.setIndex(I.localHeaderOffset),this.checkSignature(o.LOCAL_FILE_HEADER),I.readLocalPart(this.reader),I.handleUTF8(),I.processAttributes()},readCentralDir:function(){var f;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(o.CENTRAL_FILE_HEADER);)(f=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(f);if(this.centralDirRecords!==this.files.length&&this.centralDirRecords!==0&&this.files.length===0)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var f=this.reader.lastIndexOfSignature(o.CENTRAL_DIRECTORY_END);if(f<0)throw this.isSignature(0,o.LOCAL_FILE_HEADER)?new Error("Corrupted zip: can't find end of central directory"):new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");this.reader.setIndex(f);var I=f;if(this.checkSignature(o.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===r.MAX_VALUE_16BITS||this.diskWithCentralDirStart===r.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===r.MAX_VALUE_16BITS||this.centralDirRecords===r.MAX_VALUE_16BITS||this.centralDirSize===r.MAX_VALUE_32BITS||this.centralDirOffset===r.MAX_VALUE_32BITS){if(this.zip64=!0,(f=this.reader.lastIndexOfSignature(o.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(f),this.checkSignature(o.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,o.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(o.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(o.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var u=this.centralDirOffset+this.centralDirSize;this.zip64&&(u+=20,u+=12+this.zip64EndOfCentralSize);var d=I-u;if(0<d)this.isSignature(I,o.CENTRAL_FILE_HEADER)||(this.reader.zero=d);else if(d<0)throw new Error("Corrupted zip: missing "+Math.abs(d)+" bytes.")},prepareReader:function(f){this.reader=n(f)},load:function(f){this.prepareReader(f),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},e.exports=h},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utils":32,"./zipEntry":34}],34:[function(t,e,s){var n=t("./reader/readerFor"),r=t("./utils"),o=t("./compressedObject"),a=t("./crc32"),l=t("./utf8"),h=t("./compressions"),f=t("./support");function I(u,d){this.options=u,this.loadOptions=d}I.prototype={isEncrypted:function(){return(1&this.bitFlag)==1},useUTF8:function(){return(2048&this.bitFlag)==2048},readLocalPart:function(u){var d,E;if(u.skip(22),this.fileNameLength=u.readInt(2),E=u.readInt(2),this.fileName=u.readData(this.fileNameLength),u.skip(E),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if((d=function(T){for(var p in h)if(Object.prototype.hasOwnProperty.call(h,p)&&h[p].magic===T)return h[p];return null}(this.compressionMethod))===null)throw new Error("Corrupted zip : compression "+r.pretty(this.compressionMethod)+" unknown (inner file : "+r.transformTo("string",this.fileName)+")");this.decompressed=new o(this.compressedSize,this.uncompressedSize,this.crc32,d,u.readData(this.compressedSize))},readCentralPart:function(u){this.versionMadeBy=u.readInt(2),u.skip(2),this.bitFlag=u.readInt(2),this.compressionMethod=u.readString(2),this.date=u.readDate(),this.crc32=u.readInt(4),this.compressedSize=u.readInt(4),this.uncompressedSize=u.readInt(4);var d=u.readInt(2);if(this.extraFieldsLength=u.readInt(2),this.fileCommentLength=u.readInt(2),this.diskNumberStart=u.readInt(2),this.internalFileAttributes=u.readInt(2),this.externalFileAttributes=u.readInt(4),this.localHeaderOffset=u.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");u.skip(d),this.readExtraFields(u),this.parseZIP64ExtraField(u),this.fileComment=u.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var u=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),u==0&&(this.dosPermissions=63&this.externalFileAttributes),u==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var u=n(this.extraFields[1].value);this.uncompressedSize===r.MAX_VALUE_32BITS&&(this.uncompressedSize=u.readInt(8)),this.compressedSize===r.MAX_VALUE_32BITS&&(this.compressedSize=u.readInt(8)),this.localHeaderOffset===r.MAX_VALUE_32BITS&&(this.localHeaderOffset=u.readInt(8)),this.diskNumberStart===r.MAX_VALUE_32BITS&&(this.diskNumberStart=u.readInt(4))}},readExtraFields:function(u){var d,E,T,p=u.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});u.index+4<p;)d=u.readInt(2),E=u.readInt(2),T=u.readData(E),this.extraFields[d]={id:d,length:E,value:T};u.setIndex(p)},handleUTF8:function(){var u=f.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=l.utf8decode(this.fileName),this.fileCommentStr=l.utf8decode(this.fileComment);else{var d=this.findExtraFieldUnicodePath();if(d!==null)this.fileNameStr=d;else{var E=r.transformTo(u,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(E)}var T=this.findExtraFieldUnicodeComment();if(T!==null)this.fileCommentStr=T;else{var p=r.transformTo(u,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(p)}}},findExtraFieldUnicodePath:function(){var u=this.extraFields[28789];if(u){var d=n(u.value);return d.readInt(1)!==1||a(this.fileName)!==d.readInt(4)?null:l.utf8decode(d.readData(u.length-5))}return null},findExtraFieldUnicodeComment:function(){var u=this.extraFields[25461];if(u){var d=n(u.value);return d.readInt(1)!==1||a(this.fileComment)!==d.readInt(4)?null:l.utf8decode(d.readData(u.length-5))}return null}},e.exports=I},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(t,e,s){function n(d,E,T){this.name=d,this.dir=T.dir,this.date=T.date,this.comment=T.comment,this.unixPermissions=T.unixPermissions,this.dosPermissions=T.dosPermissions,this._data=E,this._dataBinary=T.binary,this.options={compression:T.compression,compressionOptions:T.compressionOptions}}var r=t("./stream/StreamHelper"),o=t("./stream/DataWorker"),a=t("./utf8"),l=t("./compressedObject"),h=t("./stream/GenericWorker");n.prototype={internalStream:function(d){var E=null,T="string";try{if(!d)throw new Error("No output type specified.");var p=(T=d.toLowerCase())==="string"||T==="text";T!=="binarystring"&&T!=="text"||(T="string"),E=this._decompressWorker();var m=!this._dataBinary;m&&!p&&(E=E.pipe(new a.Utf8EncodeWorker)),!m&&p&&(E=E.pipe(new a.Utf8DecodeWorker))}catch(F){(E=new h("error")).error(F)}return new r(E,T,"")},async:function(d,E){return this.internalStream(d).accumulate(E)},nodeStream:function(d,E){return this.internalStream(d||"nodebuffer").toNodejsStream(E)},_compressWorker:function(d,E){if(this._data instanceof l&&this._data.compression.magic===d.magic)return this._data.getCompressedWorker();var T=this._decompressWorker();return this._dataBinary||(T=T.pipe(new a.Utf8EncodeWorker)),l.createWorkerFrom(T,d,E)},_decompressWorker:function(){return this._data instanceof l?this._data.getContentWorker():this._data instanceof h?this._data:new o(this._data)}};for(var f=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],I=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},u=0;u<f.length;u++)n.prototype[f[u]]=I;e.exports=n},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(t,e,s){(function(n){var r,o,a=n.MutationObserver||n.WebKitMutationObserver;if(a){var l=0,h=new a(d),f=n.document.createTextNode("");h.observe(f,{characterData:!0}),r=function(){f.data=l=++l%2}}else if(n.setImmediate||n.MessageChannel===void 0)r="document"in n&&"onreadystatechange"in n.document.createElement("script")?function(){var E=n.document.createElement("script");E.onreadystatechange=function(){d(),E.onreadystatechange=null,E.parentNode.removeChild(E),E=null},n.document.documentElement.appendChild(E)}:function(){setTimeout(d,0)};else{var I=new n.MessageChannel;I.port1.onmessage=d,r=function(){I.port2.postMessage(0)}}var u=[];function d(){var E,T;o=!0;for(var p=u.length;p;){for(T=u,u=[],E=-1;++E<p;)T[E]();p=u.length}o=!1}e.exports=function(E){u.push(E)!==1||o||r()}}).call(this,typeof rs<"u"?rs:typeof self<"u"?self:typeof window<"u"?window:{})},{}],37:[function(t,e,s){var n=t("immediate");function r(){}var o={},a=["REJECTED"],l=["FULFILLED"],h=["PENDING"];function f(p){if(typeof p!="function")throw new TypeError("resolver must be a function");this.state=h,this.queue=[],this.outcome=void 0,p!==r&&E(this,p)}function I(p,m,F){this.promise=p,typeof m=="function"&&(this.onFulfilled=m,this.callFulfilled=this.otherCallFulfilled),typeof F=="function"&&(this.onRejected=F,this.callRejected=this.otherCallRejected)}function u(p,m,F){n(function(){var R;try{R=m(F)}catch(S){return o.reject(p,S)}R===p?o.reject(p,new TypeError("Cannot resolve promise with itself")):o.resolve(p,R)})}function d(p){var m=p&&p.then;if(p&&(typeof p=="object"||typeof p=="function")&&typeof m=="function")return function(){m.apply(p,arguments)}}function E(p,m){var F=!1;function R(L){F||(F=!0,o.reject(p,L))}function S(L){F||(F=!0,o.resolve(p,L))}var N=T(function(){m(S,R)});N.status==="error"&&R(N.value)}function T(p,m){var F={};try{F.value=p(m),F.status="success"}catch(R){F.status="error",F.value=R}return F}(e.exports=f).prototype.finally=function(p){if(typeof p!="function")return this;var m=this.constructor;return this.then(function(F){return m.resolve(p()).then(function(){return F})},function(F){return m.resolve(p()).then(function(){throw F})})},f.prototype.catch=function(p){return this.then(null,p)},f.prototype.then=function(p,m){if(typeof p!="function"&&this.state===l||typeof m!="function"&&this.state===a)return this;var F=new this.constructor(r);return this.state!==h?u(F,this.state===l?p:m,this.outcome):this.queue.push(new I(F,p,m)),F},I.prototype.callFulfilled=function(p){o.resolve(this.promise,p)},I.prototype.otherCallFulfilled=function(p){u(this.promise,this.onFulfilled,p)},I.prototype.callRejected=function(p){o.reject(this.promise,p)},I.prototype.otherCallRejected=function(p){u(this.promise,this.onRejected,p)},o.resolve=function(p,m){var F=T(d,m);if(F.status==="error")return o.reject(p,F.value);var R=F.value;if(R)E(p,R);else{p.state=l,p.outcome=m;for(var S=-1,N=p.queue.length;++S<N;)p.queue[S].callFulfilled(m)}return p},o.reject=function(p,m){p.state=a,p.outcome=m;for(var F=-1,R=p.queue.length;++F<R;)p.queue[F].callRejected(m);return p},f.resolve=function(p){return p instanceof this?p:o.resolve(new this(r),p)},f.reject=function(p){var m=new this(r);return o.reject(m,p)},f.all=function(p){var m=this;if(Object.prototype.toString.call(p)!=="[object Array]")return this.reject(new TypeError("must be an array"));var F=p.length,R=!1;if(!F)return this.resolve([]);for(var S=new Array(F),N=0,L=-1,D=new this(r);++L<F;)P(p[L],L);return D;function P(v,z){m.resolve(v).then(function(O){S[z]=O,++N!==F||R||(R=!0,o.resolve(D,S))},function(O){R||(R=!0,o.reject(D,O))})}},f.race=function(p){var m=this;if(Object.prototype.toString.call(p)!=="[object Array]")return this.reject(new TypeError("must be an array"));var F=p.length,R=!1;if(!F)return this.resolve([]);for(var S=-1,N=new this(r);++S<F;)L=p[S],m.resolve(L).then(function(D){R||(R=!0,o.resolve(N,D))},function(D){R||(R=!0,o.reject(N,D))});var L;return N}},{immediate:36}],38:[function(t,e,s){var n={};(0,t("./lib/utils/common").assign)(n,t("./lib/deflate"),t("./lib/inflate"),t("./lib/zlib/constants")),e.exports=n},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(t,e,s){var n=t("./zlib/deflate"),r=t("./utils/common"),o=t("./utils/strings"),a=t("./zlib/messages"),l=t("./zlib/zstream"),h=Object.prototype.toString,f=0,I=-1,u=0,d=8;function E(p){if(!(this instanceof E))return new E(p);this.options=r.assign({level:I,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:u,to:""},p||{});var m=this.options;m.raw&&0<m.windowBits?m.windowBits=-m.windowBits:m.gzip&&0<m.windowBits&&m.windowBits<16&&(m.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var F=n.deflateInit2(this.strm,m.level,m.method,m.windowBits,m.memLevel,m.strategy);if(F!==f)throw new Error(a[F]);if(m.header&&n.deflateSetHeader(this.strm,m.header),m.dictionary){var R;if(R=typeof m.dictionary=="string"?o.string2buf(m.dictionary):h.call(m.dictionary)==="[object ArrayBuffer]"?new Uint8Array(m.dictionary):m.dictionary,(F=n.deflateSetDictionary(this.strm,R))!==f)throw new Error(a[F]);this._dict_set=!0}}function T(p,m){var F=new E(m);if(F.push(p,!0),F.err)throw F.msg||a[F.err];return F.result}E.prototype.push=function(p,m){var F,R,S=this.strm,N=this.options.chunkSize;if(this.ended)return!1;R=m===~~m?m:m===!0?4:0,typeof p=="string"?S.input=o.string2buf(p):h.call(p)==="[object ArrayBuffer]"?S.input=new Uint8Array(p):S.input=p,S.next_in=0,S.avail_in=S.input.length;do{if(S.avail_out===0&&(S.output=new r.Buf8(N),S.next_out=0,S.avail_out=N),(F=n.deflate(S,R))!==1&&F!==f)return this.onEnd(F),!(this.ended=!0);S.avail_out!==0&&(S.avail_in!==0||R!==4&&R!==2)||(this.options.to==="string"?this.onData(o.buf2binstring(r.shrinkBuf(S.output,S.next_out))):this.onData(r.shrinkBuf(S.output,S.next_out)))}while((0<S.avail_in||S.avail_out===0)&&F!==1);return R===4?(F=n.deflateEnd(this.strm),this.onEnd(F),this.ended=!0,F===f):R!==2||(this.onEnd(f),!(S.avail_out=0))},E.prototype.onData=function(p){this.chunks.push(p)},E.prototype.onEnd=function(p){p===f&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=p,this.msg=this.strm.msg},s.Deflate=E,s.deflate=T,s.deflateRaw=function(p,m){return(m=m||{}).raw=!0,T(p,m)},s.gzip=function(p,m){return(m=m||{}).gzip=!0,T(p,m)}},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(t,e,s){var n=t("./zlib/inflate"),r=t("./utils/common"),o=t("./utils/strings"),a=t("./zlib/constants"),l=t("./zlib/messages"),h=t("./zlib/zstream"),f=t("./zlib/gzheader"),I=Object.prototype.toString;function u(E){if(!(this instanceof u))return new u(E);this.options=r.assign({chunkSize:16384,windowBits:0,to:""},E||{});var T=this.options;T.raw&&0<=T.windowBits&&T.windowBits<16&&(T.windowBits=-T.windowBits,T.windowBits===0&&(T.windowBits=-15)),!(0<=T.windowBits&&T.windowBits<16)||E&&E.windowBits||(T.windowBits+=32),15<T.windowBits&&T.windowBits<48&&!(15&T.windowBits)&&(T.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new h,this.strm.avail_out=0;var p=n.inflateInit2(this.strm,T.windowBits);if(p!==a.Z_OK)throw new Error(l[p]);this.header=new f,n.inflateGetHeader(this.strm,this.header)}function d(E,T){var p=new u(T);if(p.push(E,!0),p.err)throw p.msg||l[p.err];return p.result}u.prototype.push=function(E,T){var p,m,F,R,S,N,L=this.strm,D=this.options.chunkSize,P=this.options.dictionary,v=!1;if(this.ended)return!1;m=T===~~T?T:T===!0?a.Z_FINISH:a.Z_NO_FLUSH,typeof E=="string"?L.input=o.binstring2buf(E):I.call(E)==="[object ArrayBuffer]"?L.input=new Uint8Array(E):L.input=E,L.next_in=0,L.avail_in=L.input.length;do{if(L.avail_out===0&&(L.output=new r.Buf8(D),L.next_out=0,L.avail_out=D),(p=n.inflate(L,a.Z_NO_FLUSH))===a.Z_NEED_DICT&&P&&(N=typeof P=="string"?o.string2buf(P):I.call(P)==="[object ArrayBuffer]"?new Uint8Array(P):P,p=n.inflateSetDictionary(this.strm,N)),p===a.Z_BUF_ERROR&&v===!0&&(p=a.Z_OK,v=!1),p!==a.Z_STREAM_END&&p!==a.Z_OK)return this.onEnd(p),!(this.ended=!0);L.next_out&&(L.avail_out!==0&&p!==a.Z_STREAM_END&&(L.avail_in!==0||m!==a.Z_FINISH&&m!==a.Z_SYNC_FLUSH)||(this.options.to==="string"?(F=o.utf8border(L.output,L.next_out),R=L.next_out-F,S=o.buf2string(L.output,F),L.next_out=R,L.avail_out=D-R,R&&r.arraySet(L.output,L.output,F,R,0),this.onData(S)):this.onData(r.shrinkBuf(L.output,L.next_out)))),L.avail_in===0&&L.avail_out===0&&(v=!0)}while((0<L.avail_in||L.avail_out===0)&&p!==a.Z_STREAM_END);return p===a.Z_STREAM_END&&(m=a.Z_FINISH),m===a.Z_FINISH?(p=n.inflateEnd(this.strm),this.onEnd(p),this.ended=!0,p===a.Z_OK):m!==a.Z_SYNC_FLUSH||(this.onEnd(a.Z_OK),!(L.avail_out=0))},u.prototype.onData=function(E){this.chunks.push(E)},u.prototype.onEnd=function(E){E===a.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=E,this.msg=this.strm.msg},s.Inflate=u,s.inflate=d,s.inflateRaw=function(E,T){return(T=T||{}).raw=!0,d(E,T)},s.ungzip=d},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(t,e,s){var n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";s.assign=function(a){for(var l=Array.prototype.slice.call(arguments,1);l.length;){var h=l.shift();if(h){if(typeof h!="object")throw new TypeError(h+"must be non-object");for(var f in h)h.hasOwnProperty(f)&&(a[f]=h[f])}}return a},s.shrinkBuf=function(a,l){return a.length===l?a:a.subarray?a.subarray(0,l):(a.length=l,a)};var r={arraySet:function(a,l,h,f,I){if(l.subarray&&a.subarray)a.set(l.subarray(h,h+f),I);else for(var u=0;u<f;u++)a[I+u]=l[h+u]},flattenChunks:function(a){var l,h,f,I,u,d;for(l=f=0,h=a.length;l<h;l++)f+=a[l].length;for(d=new Uint8Array(f),l=I=0,h=a.length;l<h;l++)u=a[l],d.set(u,I),I+=u.length;return d}},o={arraySet:function(a,l,h,f,I){for(var u=0;u<f;u++)a[I+u]=l[h+u]},flattenChunks:function(a){return[].concat.apply([],a)}};s.setTyped=function(a){a?(s.Buf8=Uint8Array,s.Buf16=Uint16Array,s.Buf32=Int32Array,s.assign(s,r)):(s.Buf8=Array,s.Buf16=Array,s.Buf32=Array,s.assign(s,o))},s.setTyped(n)},{}],42:[function(t,e,s){var n=t("./common"),r=!0,o=!0;try{String.fromCharCode.apply(null,[0])}catch{r=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{o=!1}for(var a=new n.Buf8(256),l=0;l<256;l++)a[l]=252<=l?6:248<=l?5:240<=l?4:224<=l?3:192<=l?2:1;function h(f,I){if(I<65537&&(f.subarray&&o||!f.subarray&&r))return String.fromCharCode.apply(null,n.shrinkBuf(f,I));for(var u="",d=0;d<I;d++)u+=String.fromCharCode(f[d]);return u}a[254]=a[254]=1,s.string2buf=function(f){var I,u,d,E,T,p=f.length,m=0;for(E=0;E<p;E++)(64512&(u=f.charCodeAt(E)))==55296&&E+1<p&&(64512&(d=f.charCodeAt(E+1)))==56320&&(u=65536+(u-55296<<10)+(d-56320),E++),m+=u<128?1:u<2048?2:u<65536?3:4;for(I=new n.Buf8(m),E=T=0;T<m;E++)(64512&(u=f.charCodeAt(E)))==55296&&E+1<p&&(64512&(d=f.charCodeAt(E+1)))==56320&&(u=65536+(u-55296<<10)+(d-56320),E++),u<128?I[T++]=u:(u<2048?I[T++]=192|u>>>6:(u<65536?I[T++]=224|u>>>12:(I[T++]=240|u>>>18,I[T++]=128|u>>>12&63),I[T++]=128|u>>>6&63),I[T++]=128|63&u);return I},s.buf2binstring=function(f){return h(f,f.length)},s.binstring2buf=function(f){for(var I=new n.Buf8(f.length),u=0,d=I.length;u<d;u++)I[u]=f.charCodeAt(u);return I},s.buf2string=function(f,I){var u,d,E,T,p=I||f.length,m=new Array(2*p);for(u=d=0;u<p;)if((E=f[u++])<128)m[d++]=E;else if(4<(T=a[E]))m[d++]=65533,u+=T-1;else{for(E&=T===2?31:T===3?15:7;1<T&&u<p;)E=E<<6|63&f[u++],T--;1<T?m[d++]=65533:E<65536?m[d++]=E:(E-=65536,m[d++]=55296|E>>10&1023,m[d++]=56320|1023&E)}return h(m,d)},s.utf8border=function(f,I){var u;for((I=I||f.length)>f.length&&(I=f.length),u=I-1;0<=u&&(192&f[u])==128;)u--;return u<0||u===0?I:u+a[f[u]]>I?u:I}},{"./common":41}],43:[function(t,e,s){e.exports=function(n,r,o,a){for(var l=65535&n|0,h=n>>>16&65535|0,f=0;o!==0;){for(o-=f=2e3<o?2e3:o;h=h+(l=l+r[a++]|0)|0,--f;);l%=65521,h%=65521}return l|h<<16|0}},{}],44:[function(t,e,s){e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(t,e,s){var n=function(){for(var r,o=[],a=0;a<256;a++){r=a;for(var l=0;l<8;l++)r=1&r?3988292384^r>>>1:r>>>1;o[a]=r}return o}();e.exports=function(r,o,a,l){var h=n,f=l+a;r^=-1;for(var I=l;I<f;I++)r=r>>>8^h[255&(r^o[I])];return-1^r}},{}],46:[function(t,e,s){var n,r=t("../utils/common"),o=t("./trees"),a=t("./adler32"),l=t("./crc32"),h=t("./messages"),f=0,I=4,u=0,d=-2,E=-1,T=4,p=2,m=8,F=9,R=286,S=30,N=19,L=2*R+1,D=15,P=3,v=258,z=v+P+1,O=42,w=113,g=1,U=2,q=3,Y=4;function et(A,$){return A.msg=h[$],$}function X(A){return(A<<1)-(4<A?9:0)}function nt(A){for(var $=A.length;0<=--$;)A[$]=0}function G(A){var $=A.state,H=$.pending;H>A.avail_out&&(H=A.avail_out),H!==0&&(r.arraySet(A.output,$.pending_buf,$.pending_out,H,A.next_out),A.next_out+=H,$.pending_out+=H,A.total_out+=H,A.avail_out-=H,$.pending-=H,$.pending===0&&($.pending_out=0))}function B(A,$){o._tr_flush_block(A,0<=A.block_start?A.block_start:-1,A.strstart-A.block_start,$),A.block_start=A.strstart,G(A.strm)}function rt(A,$){A.pending_buf[A.pending++]=$}function it(A,$){A.pending_buf[A.pending++]=$>>>8&255,A.pending_buf[A.pending++]=255&$}function tt(A,$){var H,M,_=A.max_chain_length,x=A.strstart,Z=A.prev_length,Q=A.nice_match,V=A.strstart>A.w_size-z?A.strstart-(A.w_size-z):0,K=A.window,st=A.w_mask,J=A.prev,at=A.strstart+v,Rt=K[x+Z-1],It=K[x+Z];A.prev_length>=A.good_match&&(_>>=2),Q>A.lookahead&&(Q=A.lookahead);do if(K[(H=$)+Z]===It&&K[H+Z-1]===Rt&&K[H]===K[x]&&K[++H]===K[x+1]){x+=2,H++;do;while(K[++x]===K[++H]&&K[++x]===K[++H]&&K[++x]===K[++H]&&K[++x]===K[++H]&&K[++x]===K[++H]&&K[++x]===K[++H]&&K[++x]===K[++H]&&K[++x]===K[++H]&&x<at);if(M=v-(at-x),x=at-v,Z<M){if(A.match_start=$,Q<=(Z=M))break;Rt=K[x+Z-1],It=K[x+Z]}}while(($=J[$&st])>V&&--_!=0);return Z<=A.lookahead?Z:A.lookahead}function Ft(A){var $,H,M,_,x,Z,Q,V,K,st,J=A.w_size;do{if(_=A.window_size-A.lookahead-A.strstart,A.strstart>=J+(J-z)){for(r.arraySet(A.window,A.window,J,J,0),A.match_start-=J,A.strstart-=J,A.block_start-=J,$=H=A.hash_size;M=A.head[--$],A.head[$]=J<=M?M-J:0,--H;);for($=H=J;M=A.prev[--$],A.prev[$]=J<=M?M-J:0,--H;);_+=J}if(A.strm.avail_in===0)break;if(Z=A.strm,Q=A.window,V=A.strstart+A.lookahead,K=_,st=void 0,st=Z.avail_in,K<st&&(st=K),H=st===0?0:(Z.avail_in-=st,r.arraySet(Q,Z.input,Z.next_in,st,V),Z.state.wrap===1?Z.adler=a(Z.adler,Q,st,V):Z.state.wrap===2&&(Z.adler=l(Z.adler,Q,st,V)),Z.next_in+=st,Z.total_in+=st,st),A.lookahead+=H,A.lookahead+A.insert>=P)for(x=A.strstart-A.insert,A.ins_h=A.window[x],A.ins_h=(A.ins_h<<A.hash_shift^A.window[x+1])&A.hash_mask;A.insert&&(A.ins_h=(A.ins_h<<A.hash_shift^A.window[x+P-1])&A.hash_mask,A.prev[x&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=x,x++,A.insert--,!(A.lookahead+A.insert<P)););}while(A.lookahead<z&&A.strm.avail_in!==0)}function Nt(A,$){for(var H,M;;){if(A.lookahead<z){if(Ft(A),A.lookahead<z&&$===f)return g;if(A.lookahead===0)break}if(H=0,A.lookahead>=P&&(A.ins_h=(A.ins_h<<A.hash_shift^A.window[A.strstart+P-1])&A.hash_mask,H=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),H!==0&&A.strstart-H<=A.w_size-z&&(A.match_length=tt(A,H)),A.match_length>=P)if(M=o._tr_tally(A,A.strstart-A.match_start,A.match_length-P),A.lookahead-=A.match_length,A.match_length<=A.max_lazy_match&&A.lookahead>=P){for(A.match_length--;A.strstart++,A.ins_h=(A.ins_h<<A.hash_shift^A.window[A.strstart+P-1])&A.hash_mask,H=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart,--A.match_length!=0;);A.strstart++}else A.strstart+=A.match_length,A.match_length=0,A.ins_h=A.window[A.strstart],A.ins_h=(A.ins_h<<A.hash_shift^A.window[A.strstart+1])&A.hash_mask;else M=o._tr_tally(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++;if(M&&(B(A,!1),A.strm.avail_out===0))return g}return A.insert=A.strstart<P-1?A.strstart:P-1,$===I?(B(A,!0),A.strm.avail_out===0?q:Y):A.last_lit&&(B(A,!1),A.strm.avail_out===0)?g:U}function ot(A,$){for(var H,M,_;;){if(A.lookahead<z){if(Ft(A),A.lookahead<z&&$===f)return g;if(A.lookahead===0)break}if(H=0,A.lookahead>=P&&(A.ins_h=(A.ins_h<<A.hash_shift^A.window[A.strstart+P-1])&A.hash_mask,H=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),A.prev_length=A.match_length,A.prev_match=A.match_start,A.match_length=P-1,H!==0&&A.prev_length<A.max_lazy_match&&A.strstart-H<=A.w_size-z&&(A.match_length=tt(A,H),A.match_length<=5&&(A.strategy===1||A.match_length===P&&4096<A.strstart-A.match_start)&&(A.match_length=P-1)),A.prev_length>=P&&A.match_length<=A.prev_length){for(_=A.strstart+A.lookahead-P,M=o._tr_tally(A,A.strstart-1-A.prev_match,A.prev_length-P),A.lookahead-=A.prev_length-1,A.prev_length-=2;++A.strstart<=_&&(A.ins_h=(A.ins_h<<A.hash_shift^A.window[A.strstart+P-1])&A.hash_mask,H=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),--A.prev_length!=0;);if(A.match_available=0,A.match_length=P-1,A.strstart++,M&&(B(A,!1),A.strm.avail_out===0))return g}else if(A.match_available){if((M=o._tr_tally(A,0,A.window[A.strstart-1]))&&B(A,!1),A.strstart++,A.lookahead--,A.strm.avail_out===0)return g}else A.match_available=1,A.strstart++,A.lookahead--}return A.match_available&&(M=o._tr_tally(A,0,A.window[A.strstart-1]),A.match_available=0),A.insert=A.strstart<P-1?A.strstart:P-1,$===I?(B(A,!0),A.strm.avail_out===0?q:Y):A.last_lit&&(B(A,!1),A.strm.avail_out===0)?g:U}function ft(A,$,H,M,_){this.good_length=A,this.max_lazy=$,this.nice_length=H,this.max_chain=M,this.func=_}function ut(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=m,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new r.Buf16(2*L),this.dyn_dtree=new r.Buf16(2*(2*S+1)),this.bl_tree=new r.Buf16(2*(2*N+1)),nt(this.dyn_ltree),nt(this.dyn_dtree),nt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new r.Buf16(D+1),this.heap=new r.Buf16(2*R+1),nt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new r.Buf16(2*R+1),nt(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function Ct(A){var $;return A&&A.state?(A.total_in=A.total_out=0,A.data_type=p,($=A.state).pending=0,$.pending_out=0,$.wrap<0&&($.wrap=-$.wrap),$.status=$.wrap?O:w,A.adler=$.wrap===2?0:1,$.last_flush=f,o._tr_init($),u):et(A,d)}function zt(A){var $=Ct(A);return $===u&&function(H){H.window_size=2*H.w_size,nt(H.head),H.max_lazy_match=n[H.level].max_lazy,H.good_match=n[H.level].good_length,H.nice_match=n[H.level].nice_length,H.max_chain_length=n[H.level].max_chain,H.strstart=0,H.block_start=0,H.lookahead=0,H.insert=0,H.match_length=H.prev_length=P-1,H.match_available=0,H.ins_h=0}(A.state),$}function wt(A,$,H,M,_,x){if(!A)return d;var Z=1;if($===E&&($=6),M<0?(Z=0,M=-M):15<M&&(Z=2,M-=16),_<1||F<_||H!==m||M<8||15<M||$<0||9<$||x<0||T<x)return et(A,d);M===8&&(M=9);var Q=new ut;return(A.state=Q).strm=A,Q.wrap=Z,Q.gzhead=null,Q.w_bits=M,Q.w_size=1<<Q.w_bits,Q.w_mask=Q.w_size-1,Q.hash_bits=_+7,Q.hash_size=1<<Q.hash_bits,Q.hash_mask=Q.hash_size-1,Q.hash_shift=~~((Q.hash_bits+P-1)/P),Q.window=new r.Buf8(2*Q.w_size),Q.head=new r.Buf16(Q.hash_size),Q.prev=new r.Buf16(Q.w_size),Q.lit_bufsize=1<<_+6,Q.pending_buf_size=4*Q.lit_bufsize,Q.pending_buf=new r.Buf8(Q.pending_buf_size),Q.d_buf=1*Q.lit_bufsize,Q.l_buf=3*Q.lit_bufsize,Q.level=$,Q.strategy=x,Q.method=H,zt(A)}n=[new ft(0,0,0,0,function(A,$){var H=65535;for(H>A.pending_buf_size-5&&(H=A.pending_buf_size-5);;){if(A.lookahead<=1){if(Ft(A),A.lookahead===0&&$===f)return g;if(A.lookahead===0)break}A.strstart+=A.lookahead,A.lookahead=0;var M=A.block_start+H;if((A.strstart===0||A.strstart>=M)&&(A.lookahead=A.strstart-M,A.strstart=M,B(A,!1),A.strm.avail_out===0)||A.strstart-A.block_start>=A.w_size-z&&(B(A,!1),A.strm.avail_out===0))return g}return A.insert=0,$===I?(B(A,!0),A.strm.avail_out===0?q:Y):(A.strstart>A.block_start&&(B(A,!1),A.strm.avail_out),g)}),new ft(4,4,8,4,Nt),new ft(4,5,16,8,Nt),new ft(4,6,32,32,Nt),new ft(4,4,16,16,ot),new ft(8,16,32,32,ot),new ft(8,16,128,128,ot),new ft(8,32,128,256,ot),new ft(32,128,258,1024,ot),new ft(32,258,258,4096,ot)],s.deflateInit=function(A,$){return wt(A,$,m,15,8,0)},s.deflateInit2=wt,s.deflateReset=zt,s.deflateResetKeep=Ct,s.deflateSetHeader=function(A,$){return A&&A.state?A.state.wrap!==2?d:(A.state.gzhead=$,u):d},s.deflate=function(A,$){var H,M,_,x;if(!A||!A.state||5<$||$<0)return A?et(A,d):d;if(M=A.state,!A.output||!A.input&&A.avail_in!==0||M.status===666&&$!==I)return et(A,A.avail_out===0?-5:d);if(M.strm=A,H=M.last_flush,M.last_flush=$,M.status===O)if(M.wrap===2)A.adler=0,rt(M,31),rt(M,139),rt(M,8),M.gzhead?(rt(M,(M.gzhead.text?1:0)+(M.gzhead.hcrc?2:0)+(M.gzhead.extra?4:0)+(M.gzhead.name?8:0)+(M.gzhead.comment?16:0)),rt(M,255&M.gzhead.time),rt(M,M.gzhead.time>>8&255),rt(M,M.gzhead.time>>16&255),rt(M,M.gzhead.time>>24&255),rt(M,M.level===9?2:2<=M.strategy||M.level<2?4:0),rt(M,255&M.gzhead.os),M.gzhead.extra&&M.gzhead.extra.length&&(rt(M,255&M.gzhead.extra.length),rt(M,M.gzhead.extra.length>>8&255)),M.gzhead.hcrc&&(A.adler=l(A.adler,M.pending_buf,M.pending,0)),M.gzindex=0,M.status=69):(rt(M,0),rt(M,0),rt(M,0),rt(M,0),rt(M,0),rt(M,M.level===9?2:2<=M.strategy||M.level<2?4:0),rt(M,3),M.status=w);else{var Z=m+(M.w_bits-8<<4)<<8;Z|=(2<=M.strategy||M.level<2?0:M.level<6?1:M.level===6?2:3)<<6,M.strstart!==0&&(Z|=32),Z+=31-Z%31,M.status=w,it(M,Z),M.strstart!==0&&(it(M,A.adler>>>16),it(M,65535&A.adler)),A.adler=1}if(M.status===69)if(M.gzhead.extra){for(_=M.pending;M.gzindex<(65535&M.gzhead.extra.length)&&(M.pending!==M.pending_buf_size||(M.gzhead.hcrc&&M.pending>_&&(A.adler=l(A.adler,M.pending_buf,M.pending-_,_)),G(A),_=M.pending,M.pending!==M.pending_buf_size));)rt(M,255&M.gzhead.extra[M.gzindex]),M.gzindex++;M.gzhead.hcrc&&M.pending>_&&(A.adler=l(A.adler,M.pending_buf,M.pending-_,_)),M.gzindex===M.gzhead.extra.length&&(M.gzindex=0,M.status=73)}else M.status=73;if(M.status===73)if(M.gzhead.name){_=M.pending;do{if(M.pending===M.pending_buf_size&&(M.gzhead.hcrc&&M.pending>_&&(A.adler=l(A.adler,M.pending_buf,M.pending-_,_)),G(A),_=M.pending,M.pending===M.pending_buf_size)){x=1;break}x=M.gzindex<M.gzhead.name.length?255&M.gzhead.name.charCodeAt(M.gzindex++):0,rt(M,x)}while(x!==0);M.gzhead.hcrc&&M.pending>_&&(A.adler=l(A.adler,M.pending_buf,M.pending-_,_)),x===0&&(M.gzindex=0,M.status=91)}else M.status=91;if(M.status===91)if(M.gzhead.comment){_=M.pending;do{if(M.pending===M.pending_buf_size&&(M.gzhead.hcrc&&M.pending>_&&(A.adler=l(A.adler,M.pending_buf,M.pending-_,_)),G(A),_=M.pending,M.pending===M.pending_buf_size)){x=1;break}x=M.gzindex<M.gzhead.comment.length?255&M.gzhead.comment.charCodeAt(M.gzindex++):0,rt(M,x)}while(x!==0);M.gzhead.hcrc&&M.pending>_&&(A.adler=l(A.adler,M.pending_buf,M.pending-_,_)),x===0&&(M.status=103)}else M.status=103;if(M.status===103&&(M.gzhead.hcrc?(M.pending+2>M.pending_buf_size&&G(A),M.pending+2<=M.pending_buf_size&&(rt(M,255&A.adler),rt(M,A.adler>>8&255),A.adler=0,M.status=w)):M.status=w),M.pending!==0){if(G(A),A.avail_out===0)return M.last_flush=-1,u}else if(A.avail_in===0&&X($)<=X(H)&&$!==I)return et(A,-5);if(M.status===666&&A.avail_in!==0)return et(A,-5);if(A.avail_in!==0||M.lookahead!==0||$!==f&&M.status!==666){var Q=M.strategy===2?function(V,K){for(var st;;){if(V.lookahead===0&&(Ft(V),V.lookahead===0)){if(K===f)return g;break}if(V.match_length=0,st=o._tr_tally(V,0,V.window[V.strstart]),V.lookahead--,V.strstart++,st&&(B(V,!1),V.strm.avail_out===0))return g}return V.insert=0,K===I?(B(V,!0),V.strm.avail_out===0?q:Y):V.last_lit&&(B(V,!1),V.strm.avail_out===0)?g:U}(M,$):M.strategy===3?function(V,K){for(var st,J,at,Rt,It=V.window;;){if(V.lookahead<=v){if(Ft(V),V.lookahead<=v&&K===f)return g;if(V.lookahead===0)break}if(V.match_length=0,V.lookahead>=P&&0<V.strstart&&(J=It[at=V.strstart-1])===It[++at]&&J===It[++at]&&J===It[++at]){Rt=V.strstart+v;do;while(J===It[++at]&&J===It[++at]&&J===It[++at]&&J===It[++at]&&J===It[++at]&&J===It[++at]&&J===It[++at]&&J===It[++at]&&at<Rt);V.match_length=v-(Rt-at),V.match_length>V.lookahead&&(V.match_length=V.lookahead)}if(V.match_length>=P?(st=o._tr_tally(V,1,V.match_length-P),V.lookahead-=V.match_length,V.strstart+=V.match_length,V.match_length=0):(st=o._tr_tally(V,0,V.window[V.strstart]),V.lookahead--,V.strstart++),st&&(B(V,!1),V.strm.avail_out===0))return g}return V.insert=0,K===I?(B(V,!0),V.strm.avail_out===0?q:Y):V.last_lit&&(B(V,!1),V.strm.avail_out===0)?g:U}(M,$):n[M.level].func(M,$);if(Q!==q&&Q!==Y||(M.status=666),Q===g||Q===q)return A.avail_out===0&&(M.last_flush=-1),u;if(Q===U&&($===1?o._tr_align(M):$!==5&&(o._tr_stored_block(M,0,0,!1),$===3&&(nt(M.head),M.lookahead===0&&(M.strstart=0,M.block_start=0,M.insert=0))),G(A),A.avail_out===0))return M.last_flush=-1,u}return $!==I?u:M.wrap<=0?1:(M.wrap===2?(rt(M,255&A.adler),rt(M,A.adler>>8&255),rt(M,A.adler>>16&255),rt(M,A.adler>>24&255),rt(M,255&A.total_in),rt(M,A.total_in>>8&255),rt(M,A.total_in>>16&255),rt(M,A.total_in>>24&255)):(it(M,A.adler>>>16),it(M,65535&A.adler)),G(A),0<M.wrap&&(M.wrap=-M.wrap),M.pending!==0?u:1)},s.deflateEnd=function(A){var $;return A&&A.state?($=A.state.status)!==O&&$!==69&&$!==73&&$!==91&&$!==103&&$!==w&&$!==666?et(A,d):(A.state=null,$===w?et(A,-3):u):d},s.deflateSetDictionary=function(A,$){var H,M,_,x,Z,Q,V,K,st=$.length;if(!A||!A.state||(x=(H=A.state).wrap)===2||x===1&&H.status!==O||H.lookahead)return d;for(x===1&&(A.adler=a(A.adler,$,st,0)),H.wrap=0,st>=H.w_size&&(x===0&&(nt(H.head),H.strstart=0,H.block_start=0,H.insert=0),K=new r.Buf8(H.w_size),r.arraySet(K,$,st-H.w_size,H.w_size,0),$=K,st=H.w_size),Z=A.avail_in,Q=A.next_in,V=A.input,A.avail_in=st,A.next_in=0,A.input=$,Ft(H);H.lookahead>=P;){for(M=H.strstart,_=H.lookahead-(P-1);H.ins_h=(H.ins_h<<H.hash_shift^H.window[M+P-1])&H.hash_mask,H.prev[M&H.w_mask]=H.head[H.ins_h],H.head[H.ins_h]=M,M++,--_;);H.strstart=M,H.lookahead=P-1,Ft(H)}return H.strstart+=H.lookahead,H.block_start=H.strstart,H.insert=H.lookahead,H.lookahead=0,H.match_length=H.prev_length=P-1,H.match_available=0,A.next_in=Q,A.input=V,A.avail_in=Z,H.wrap=x,u},s.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(t,e,s){e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],48:[function(t,e,s){e.exports=function(n,r){var o,a,l,h,f,I,u,d,E,T,p,m,F,R,S,N,L,D,P,v,z,O,w,g,U;o=n.state,a=n.next_in,g=n.input,l=a+(n.avail_in-5),h=n.next_out,U=n.output,f=h-(r-n.avail_out),I=h+(n.avail_out-257),u=o.dmax,d=o.wsize,E=o.whave,T=o.wnext,p=o.window,m=o.hold,F=o.bits,R=o.lencode,S=o.distcode,N=(1<<o.lenbits)-1,L=(1<<o.distbits)-1;t:do{F<15&&(m+=g[a++]<<F,F+=8,m+=g[a++]<<F,F+=8),D=R[m&N];e:for(;;){if(m>>>=P=D>>>24,F-=P,(P=D>>>16&255)===0)U[h++]=65535&D;else{if(!(16&P)){if(!(64&P)){D=R[(65535&D)+(m&(1<<P)-1)];continue e}if(32&P){o.mode=12;break t}n.msg="invalid literal/length code",o.mode=30;break t}v=65535&D,(P&=15)&&(F<P&&(m+=g[a++]<<F,F+=8),v+=m&(1<<P)-1,m>>>=P,F-=P),F<15&&(m+=g[a++]<<F,F+=8,m+=g[a++]<<F,F+=8),D=S[m&L];i:for(;;){if(m>>>=P=D>>>24,F-=P,!(16&(P=D>>>16&255))){if(!(64&P)){D=S[(65535&D)+(m&(1<<P)-1)];continue i}n.msg="invalid distance code",o.mode=30;break t}if(z=65535&D,F<(P&=15)&&(m+=g[a++]<<F,(F+=8)<P&&(m+=g[a++]<<F,F+=8)),u<(z+=m&(1<<P)-1)){n.msg="invalid distance too far back",o.mode=30;break t}if(m>>>=P,F-=P,(P=h-f)<z){if(E<(P=z-P)&&o.sane){n.msg="invalid distance too far back",o.mode=30;break t}if(w=p,(O=0)===T){if(O+=d-P,P<v){for(v-=P;U[h++]=p[O++],--P;);O=h-z,w=U}}else if(T<P){if(O+=d+T-P,(P-=T)<v){for(v-=P;U[h++]=p[O++],--P;);if(O=0,T<v){for(v-=P=T;U[h++]=p[O++],--P;);O=h-z,w=U}}}else if(O+=T-P,P<v){for(v-=P;U[h++]=p[O++],--P;);O=h-z,w=U}for(;2<v;)U[h++]=w[O++],U[h++]=w[O++],U[h++]=w[O++],v-=3;v&&(U[h++]=w[O++],1<v&&(U[h++]=w[O++]))}else{for(O=h-z;U[h++]=U[O++],U[h++]=U[O++],U[h++]=U[O++],2<(v-=3););v&&(U[h++]=U[O++],1<v&&(U[h++]=U[O++]))}break}}break}}while(a<l&&h<I);a-=v=F>>3,m&=(1<<(F-=v<<3))-1,n.next_in=a,n.next_out=h,n.avail_in=a<l?l-a+5:5-(a-l),n.avail_out=h<I?I-h+257:257-(h-I),o.hold=m,o.bits=F}},{}],49:[function(t,e,s){var n=t("../utils/common"),r=t("./adler32"),o=t("./crc32"),a=t("./inffast"),l=t("./inftrees"),h=1,f=2,I=0,u=-2,d=1,E=852,T=592;function p(O){return(O>>>24&255)+(O>>>8&65280)+((65280&O)<<8)+((255&O)<<24)}function m(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function F(O){var w;return O&&O.state?(w=O.state,O.total_in=O.total_out=w.total=0,O.msg="",w.wrap&&(O.adler=1&w.wrap),w.mode=d,w.last=0,w.havedict=0,w.dmax=32768,w.head=null,w.hold=0,w.bits=0,w.lencode=w.lendyn=new n.Buf32(E),w.distcode=w.distdyn=new n.Buf32(T),w.sane=1,w.back=-1,I):u}function R(O){var w;return O&&O.state?((w=O.state).wsize=0,w.whave=0,w.wnext=0,F(O)):u}function S(O,w){var g,U;return O&&O.state?(U=O.state,w<0?(g=0,w=-w):(g=1+(w>>4),w<48&&(w&=15)),w&&(w<8||15<w)?u:(U.window!==null&&U.wbits!==w&&(U.window=null),U.wrap=g,U.wbits=w,R(O))):u}function N(O,w){var g,U;return O?(U=new m,(O.state=U).window=null,(g=S(O,w))!==I&&(O.state=null),g):u}var L,D,P=!0;function v(O){if(P){var w;for(L=new n.Buf32(512),D=new n.Buf32(32),w=0;w<144;)O.lens[w++]=8;for(;w<256;)O.lens[w++]=9;for(;w<280;)O.lens[w++]=7;for(;w<288;)O.lens[w++]=8;for(l(h,O.lens,0,288,L,0,O.work,{bits:9}),w=0;w<32;)O.lens[w++]=5;l(f,O.lens,0,32,D,0,O.work,{bits:5}),P=!1}O.lencode=L,O.lenbits=9,O.distcode=D,O.distbits=5}function z(O,w,g,U){var q,Y=O.state;return Y.window===null&&(Y.wsize=1<<Y.wbits,Y.wnext=0,Y.whave=0,Y.window=new n.Buf8(Y.wsize)),U>=Y.wsize?(n.arraySet(Y.window,w,g-Y.wsize,Y.wsize,0),Y.wnext=0,Y.whave=Y.wsize):(U<(q=Y.wsize-Y.wnext)&&(q=U),n.arraySet(Y.window,w,g-U,q,Y.wnext),(U-=q)?(n.arraySet(Y.window,w,g-U,U,0),Y.wnext=U,Y.whave=Y.wsize):(Y.wnext+=q,Y.wnext===Y.wsize&&(Y.wnext=0),Y.whave<Y.wsize&&(Y.whave+=q))),0}s.inflateReset=R,s.inflateReset2=S,s.inflateResetKeep=F,s.inflateInit=function(O){return N(O,15)},s.inflateInit2=N,s.inflate=function(O,w){var g,U,q,Y,et,X,nt,G,B,rt,it,tt,Ft,Nt,ot,ft,ut,Ct,zt,wt,A,$,H,M,_=0,x=new n.Buf8(4),Z=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!O||!O.state||!O.output||!O.input&&O.avail_in!==0)return u;(g=O.state).mode===12&&(g.mode=13),et=O.next_out,q=O.output,nt=O.avail_out,Y=O.next_in,U=O.input,X=O.avail_in,G=g.hold,B=g.bits,rt=X,it=nt,$=I;t:for(;;)switch(g.mode){case d:if(g.wrap===0){g.mode=13;break}for(;B<16;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}if(2&g.wrap&&G===35615){x[g.check=0]=255&G,x[1]=G>>>8&255,g.check=o(g.check,x,2,0),B=G=0,g.mode=2;break}if(g.flags=0,g.head&&(g.head.done=!1),!(1&g.wrap)||(((255&G)<<8)+(G>>8))%31){O.msg="incorrect header check",g.mode=30;break}if((15&G)!=8){O.msg="unknown compression method",g.mode=30;break}if(B-=4,A=8+(15&(G>>>=4)),g.wbits===0)g.wbits=A;else if(A>g.wbits){O.msg="invalid window size",g.mode=30;break}g.dmax=1<<A,O.adler=g.check=1,g.mode=512&G?10:12,B=G=0;break;case 2:for(;B<16;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}if(g.flags=G,(255&g.flags)!=8){O.msg="unknown compression method",g.mode=30;break}if(57344&g.flags){O.msg="unknown header flags set",g.mode=30;break}g.head&&(g.head.text=G>>8&1),512&g.flags&&(x[0]=255&G,x[1]=G>>>8&255,g.check=o(g.check,x,2,0)),B=G=0,g.mode=3;case 3:for(;B<32;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}g.head&&(g.head.time=G),512&g.flags&&(x[0]=255&G,x[1]=G>>>8&255,x[2]=G>>>16&255,x[3]=G>>>24&255,g.check=o(g.check,x,4,0)),B=G=0,g.mode=4;case 4:for(;B<16;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}g.head&&(g.head.xflags=255&G,g.head.os=G>>8),512&g.flags&&(x[0]=255&G,x[1]=G>>>8&255,g.check=o(g.check,x,2,0)),B=G=0,g.mode=5;case 5:if(1024&g.flags){for(;B<16;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}g.length=G,g.head&&(g.head.extra_len=G),512&g.flags&&(x[0]=255&G,x[1]=G>>>8&255,g.check=o(g.check,x,2,0)),B=G=0}else g.head&&(g.head.extra=null);g.mode=6;case 6:if(1024&g.flags&&(X<(tt=g.length)&&(tt=X),tt&&(g.head&&(A=g.head.extra_len-g.length,g.head.extra||(g.head.extra=new Array(g.head.extra_len)),n.arraySet(g.head.extra,U,Y,tt,A)),512&g.flags&&(g.check=o(g.check,U,tt,Y)),X-=tt,Y+=tt,g.length-=tt),g.length))break t;g.length=0,g.mode=7;case 7:if(2048&g.flags){if(X===0)break t;for(tt=0;A=U[Y+tt++],g.head&&A&&g.length<65536&&(g.head.name+=String.fromCharCode(A)),A&&tt<X;);if(512&g.flags&&(g.check=o(g.check,U,tt,Y)),X-=tt,Y+=tt,A)break t}else g.head&&(g.head.name=null);g.length=0,g.mode=8;case 8:if(4096&g.flags){if(X===0)break t;for(tt=0;A=U[Y+tt++],g.head&&A&&g.length<65536&&(g.head.comment+=String.fromCharCode(A)),A&&tt<X;);if(512&g.flags&&(g.check=o(g.check,U,tt,Y)),X-=tt,Y+=tt,A)break t}else g.head&&(g.head.comment=null);g.mode=9;case 9:if(512&g.flags){for(;B<16;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}if(G!==(65535&g.check)){O.msg="header crc mismatch",g.mode=30;break}B=G=0}g.head&&(g.head.hcrc=g.flags>>9&1,g.head.done=!0),O.adler=g.check=0,g.mode=12;break;case 10:for(;B<32;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}O.adler=g.check=p(G),B=G=0,g.mode=11;case 11:if(g.havedict===0)return O.next_out=et,O.avail_out=nt,O.next_in=Y,O.avail_in=X,g.hold=G,g.bits=B,2;O.adler=g.check=1,g.mode=12;case 12:if(w===5||w===6)break t;case 13:if(g.last){G>>>=7&B,B-=7&B,g.mode=27;break}for(;B<3;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}switch(g.last=1&G,B-=1,3&(G>>>=1)){case 0:g.mode=14;break;case 1:if(v(g),g.mode=20,w!==6)break;G>>>=2,B-=2;break t;case 2:g.mode=17;break;case 3:O.msg="invalid block type",g.mode=30}G>>>=2,B-=2;break;case 14:for(G>>>=7&B,B-=7&B;B<32;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}if((65535&G)!=(G>>>16^65535)){O.msg="invalid stored block lengths",g.mode=30;break}if(g.length=65535&G,B=G=0,g.mode=15,w===6)break t;case 15:g.mode=16;case 16:if(tt=g.length){if(X<tt&&(tt=X),nt<tt&&(tt=nt),tt===0)break t;n.arraySet(q,U,Y,tt,et),X-=tt,Y+=tt,nt-=tt,et+=tt,g.length-=tt;break}g.mode=12;break;case 17:for(;B<14;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}if(g.nlen=257+(31&G),G>>>=5,B-=5,g.ndist=1+(31&G),G>>>=5,B-=5,g.ncode=4+(15&G),G>>>=4,B-=4,286<g.nlen||30<g.ndist){O.msg="too many length or distance symbols",g.mode=30;break}g.have=0,g.mode=18;case 18:for(;g.have<g.ncode;){for(;B<3;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}g.lens[Z[g.have++]]=7&G,G>>>=3,B-=3}for(;g.have<19;)g.lens[Z[g.have++]]=0;if(g.lencode=g.lendyn,g.lenbits=7,H={bits:g.lenbits},$=l(0,g.lens,0,19,g.lencode,0,g.work,H),g.lenbits=H.bits,$){O.msg="invalid code lengths set",g.mode=30;break}g.have=0,g.mode=19;case 19:for(;g.have<g.nlen+g.ndist;){for(;ft=(_=g.lencode[G&(1<<g.lenbits)-1])>>>16&255,ut=65535&_,!((ot=_>>>24)<=B);){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}if(ut<16)G>>>=ot,B-=ot,g.lens[g.have++]=ut;else{if(ut===16){for(M=ot+2;B<M;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}if(G>>>=ot,B-=ot,g.have===0){O.msg="invalid bit length repeat",g.mode=30;break}A=g.lens[g.have-1],tt=3+(3&G),G>>>=2,B-=2}else if(ut===17){for(M=ot+3;B<M;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}B-=ot,A=0,tt=3+(7&(G>>>=ot)),G>>>=3,B-=3}else{for(M=ot+7;B<M;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}B-=ot,A=0,tt=11+(127&(G>>>=ot)),G>>>=7,B-=7}if(g.have+tt>g.nlen+g.ndist){O.msg="invalid bit length repeat",g.mode=30;break}for(;tt--;)g.lens[g.have++]=A}}if(g.mode===30)break;if(g.lens[256]===0){O.msg="invalid code -- missing end-of-block",g.mode=30;break}if(g.lenbits=9,H={bits:g.lenbits},$=l(h,g.lens,0,g.nlen,g.lencode,0,g.work,H),g.lenbits=H.bits,$){O.msg="invalid literal/lengths set",g.mode=30;break}if(g.distbits=6,g.distcode=g.distdyn,H={bits:g.distbits},$=l(f,g.lens,g.nlen,g.ndist,g.distcode,0,g.work,H),g.distbits=H.bits,$){O.msg="invalid distances set",g.mode=30;break}if(g.mode=20,w===6)break t;case 20:g.mode=21;case 21:if(6<=X&&258<=nt){O.next_out=et,O.avail_out=nt,O.next_in=Y,O.avail_in=X,g.hold=G,g.bits=B,a(O,it),et=O.next_out,q=O.output,nt=O.avail_out,Y=O.next_in,U=O.input,X=O.avail_in,G=g.hold,B=g.bits,g.mode===12&&(g.back=-1);break}for(g.back=0;ft=(_=g.lencode[G&(1<<g.lenbits)-1])>>>16&255,ut=65535&_,!((ot=_>>>24)<=B);){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}if(ft&&!(240&ft)){for(Ct=ot,zt=ft,wt=ut;ft=(_=g.lencode[wt+((G&(1<<Ct+zt)-1)>>Ct)])>>>16&255,ut=65535&_,!(Ct+(ot=_>>>24)<=B);){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}G>>>=Ct,B-=Ct,g.back+=Ct}if(G>>>=ot,B-=ot,g.back+=ot,g.length=ut,ft===0){g.mode=26;break}if(32&ft){g.back=-1,g.mode=12;break}if(64&ft){O.msg="invalid literal/length code",g.mode=30;break}g.extra=15&ft,g.mode=22;case 22:if(g.extra){for(M=g.extra;B<M;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}g.length+=G&(1<<g.extra)-1,G>>>=g.extra,B-=g.extra,g.back+=g.extra}g.was=g.length,g.mode=23;case 23:for(;ft=(_=g.distcode[G&(1<<g.distbits)-1])>>>16&255,ut=65535&_,!((ot=_>>>24)<=B);){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}if(!(240&ft)){for(Ct=ot,zt=ft,wt=ut;ft=(_=g.distcode[wt+((G&(1<<Ct+zt)-1)>>Ct)])>>>16&255,ut=65535&_,!(Ct+(ot=_>>>24)<=B);){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}G>>>=Ct,B-=Ct,g.back+=Ct}if(G>>>=ot,B-=ot,g.back+=ot,64&ft){O.msg="invalid distance code",g.mode=30;break}g.offset=ut,g.extra=15&ft,g.mode=24;case 24:if(g.extra){for(M=g.extra;B<M;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}g.offset+=G&(1<<g.extra)-1,G>>>=g.extra,B-=g.extra,g.back+=g.extra}if(g.offset>g.dmax){O.msg="invalid distance too far back",g.mode=30;break}g.mode=25;case 25:if(nt===0)break t;if(tt=it-nt,g.offset>tt){if((tt=g.offset-tt)>g.whave&&g.sane){O.msg="invalid distance too far back",g.mode=30;break}Ft=tt>g.wnext?(tt-=g.wnext,g.wsize-tt):g.wnext-tt,tt>g.length&&(tt=g.length),Nt=g.window}else Nt=q,Ft=et-g.offset,tt=g.length;for(nt<tt&&(tt=nt),nt-=tt,g.length-=tt;q[et++]=Nt[Ft++],--tt;);g.length===0&&(g.mode=21);break;case 26:if(nt===0)break t;q[et++]=g.length,nt--,g.mode=21;break;case 27:if(g.wrap){for(;B<32;){if(X===0)break t;X--,G|=U[Y++]<<B,B+=8}if(it-=nt,O.total_out+=it,g.total+=it,it&&(O.adler=g.check=g.flags?o(g.check,q,it,et-it):r(g.check,q,it,et-it)),it=nt,(g.flags?G:p(G))!==g.check){O.msg="incorrect data check",g.mode=30;break}B=G=0}g.mode=28;case 28:if(g.wrap&&g.flags){for(;B<32;){if(X===0)break t;X--,G+=U[Y++]<<B,B+=8}if(G!==(4294967295&g.total)){O.msg="incorrect length check",g.mode=30;break}B=G=0}g.mode=29;case 29:$=1;break t;case 30:$=-3;break t;case 31:return-4;case 32:default:return u}return O.next_out=et,O.avail_out=nt,O.next_in=Y,O.avail_in=X,g.hold=G,g.bits=B,(g.wsize||it!==O.avail_out&&g.mode<30&&(g.mode<27||w!==4))&&z(O,O.output,O.next_out,it-O.avail_out)?(g.mode=31,-4):(rt-=O.avail_in,it-=O.avail_out,O.total_in+=rt,O.total_out+=it,g.total+=it,g.wrap&&it&&(O.adler=g.check=g.flags?o(g.check,q,it,O.next_out-it):r(g.check,q,it,O.next_out-it)),O.data_type=g.bits+(g.last?64:0)+(g.mode===12?128:0)+(g.mode===20||g.mode===15?256:0),(rt==0&&it===0||w===4)&&$===I&&($=-5),$)},s.inflateEnd=function(O){if(!O||!O.state)return u;var w=O.state;return w.window&&(w.window=null),O.state=null,I},s.inflateGetHeader=function(O,w){var g;return O&&O.state&&2&(g=O.state).wrap?((g.head=w).done=!1,I):u},s.inflateSetDictionary=function(O,w){var g,U=w.length;return O&&O.state?(g=O.state).wrap!==0&&g.mode!==11?u:g.mode===11&&r(1,w,U,0)!==g.check?-3:z(O,w,U,U)?(g.mode=31,-4):(g.havedict=1,I):u},s.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(t,e,s){var n=t("../utils/common"),r=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],o=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],a=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],l=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(h,f,I,u,d,E,T,p){var m,F,R,S,N,L,D,P,v,z=p.bits,O=0,w=0,g=0,U=0,q=0,Y=0,et=0,X=0,nt=0,G=0,B=null,rt=0,it=new n.Buf16(16),tt=new n.Buf16(16),Ft=null,Nt=0;for(O=0;O<=15;O++)it[O]=0;for(w=0;w<u;w++)it[f[I+w]]++;for(q=z,U=15;1<=U&&it[U]===0;U--);if(U<q&&(q=U),U===0)return d[E++]=20971520,d[E++]=20971520,p.bits=1,0;for(g=1;g<U&&it[g]===0;g++);for(q<g&&(q=g),O=X=1;O<=15;O++)if(X<<=1,(X-=it[O])<0)return-1;if(0<X&&(h===0||U!==1))return-1;for(tt[1]=0,O=1;O<15;O++)tt[O+1]=tt[O]+it[O];for(w=0;w<u;w++)f[I+w]!==0&&(T[tt[f[I+w]]++]=w);if(L=h===0?(B=Ft=T,19):h===1?(B=r,rt-=257,Ft=o,Nt-=257,256):(B=a,Ft=l,-1),O=g,N=E,et=w=G=0,R=-1,S=(nt=1<<(Y=q))-1,h===1&&852<nt||h===2&&592<nt)return 1;for(;;){for(D=O-et,v=T[w]<L?(P=0,T[w]):T[w]>L?(P=Ft[Nt+T[w]],B[rt+T[w]]):(P=96,0),m=1<<O-et,g=F=1<<Y;d[N+(G>>et)+(F-=m)]=D<<24|P<<16|v|0,F!==0;);for(m=1<<O-1;G&m;)m>>=1;if(m!==0?(G&=m-1,G+=m):G=0,w++,--it[O]==0){if(O===U)break;O=f[I+T[w]]}if(q<O&&(G&S)!==R){for(et===0&&(et=q),N+=g,X=1<<(Y=O-et);Y+et<U&&!((X-=it[Y+et])<=0);)Y++,X<<=1;if(nt+=1<<Y,h===1&&852<nt||h===2&&592<nt)return 1;d[R=G&S]=q<<24|Y<<16|N-E|0}}return G!==0&&(d[N+G]=O-et<<24|64<<16|0),p.bits=q,0}},{"../utils/common":41}],51:[function(t,e,s){e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],52:[function(t,e,s){var n=t("../utils/common"),r=0,o=1;function a(_){for(var x=_.length;0<=--x;)_[x]=0}var l=0,h=29,f=256,I=f+1+h,u=30,d=19,E=2*I+1,T=15,p=16,m=7,F=256,R=16,S=17,N=18,L=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],D=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],P=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],v=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(I+2));a(z);var O=new Array(2*u);a(O);var w=new Array(512);a(w);var g=new Array(256);a(g);var U=new Array(h);a(U);var q,Y,et,X=new Array(u);function nt(_,x,Z,Q,V){this.static_tree=_,this.extra_bits=x,this.extra_base=Z,this.elems=Q,this.max_length=V,this.has_stree=_&&_.length}function G(_,x){this.dyn_tree=_,this.max_code=0,this.stat_desc=x}function B(_){return _<256?w[_]:w[256+(_>>>7)]}function rt(_,x){_.pending_buf[_.pending++]=255&x,_.pending_buf[_.pending++]=x>>>8&255}function it(_,x,Z){_.bi_valid>p-Z?(_.bi_buf|=x<<_.bi_valid&65535,rt(_,_.bi_buf),_.bi_buf=x>>p-_.bi_valid,_.bi_valid+=Z-p):(_.bi_buf|=x<<_.bi_valid&65535,_.bi_valid+=Z)}function tt(_,x,Z){it(_,Z[2*x],Z[2*x+1])}function Ft(_,x){for(var Z=0;Z|=1&_,_>>>=1,Z<<=1,0<--x;);return Z>>>1}function Nt(_,x,Z){var Q,V,K=new Array(T+1),st=0;for(Q=1;Q<=T;Q++)K[Q]=st=st+Z[Q-1]<<1;for(V=0;V<=x;V++){var J=_[2*V+1];J!==0&&(_[2*V]=Ft(K[J]++,J))}}function ot(_){var x;for(x=0;x<I;x++)_.dyn_ltree[2*x]=0;for(x=0;x<u;x++)_.dyn_dtree[2*x]=0;for(x=0;x<d;x++)_.bl_tree[2*x]=0;_.dyn_ltree[2*F]=1,_.opt_len=_.static_len=0,_.last_lit=_.matches=0}function ft(_){8<_.bi_valid?rt(_,_.bi_buf):0<_.bi_valid&&(_.pending_buf[_.pending++]=_.bi_buf),_.bi_buf=0,_.bi_valid=0}function ut(_,x,Z,Q){var V=2*x,K=2*Z;return _[V]<_[K]||_[V]===_[K]&&Q[x]<=Q[Z]}function Ct(_,x,Z){for(var Q=_.heap[Z],V=Z<<1;V<=_.heap_len&&(V<_.heap_len&&ut(x,_.heap[V+1],_.heap[V],_.depth)&&V++,!ut(x,Q,_.heap[V],_.depth));)_.heap[Z]=_.heap[V],Z=V,V<<=1;_.heap[Z]=Q}function zt(_,x,Z){var Q,V,K,st,J=0;if(_.last_lit!==0)for(;Q=_.pending_buf[_.d_buf+2*J]<<8|_.pending_buf[_.d_buf+2*J+1],V=_.pending_buf[_.l_buf+J],J++,Q===0?tt(_,V,x):(tt(_,(K=g[V])+f+1,x),(st=L[K])!==0&&it(_,V-=U[K],st),tt(_,K=B(--Q),Z),(st=D[K])!==0&&it(_,Q-=X[K],st)),J<_.last_lit;);tt(_,F,x)}function wt(_,x){var Z,Q,V,K=x.dyn_tree,st=x.stat_desc.static_tree,J=x.stat_desc.has_stree,at=x.stat_desc.elems,Rt=-1;for(_.heap_len=0,_.heap_max=E,Z=0;Z<at;Z++)K[2*Z]!==0?(_.heap[++_.heap_len]=Rt=Z,_.depth[Z]=0):K[2*Z+1]=0;for(;_.heap_len<2;)K[2*(V=_.heap[++_.heap_len]=Rt<2?++Rt:0)]=1,_.depth[V]=0,_.opt_len--,J&&(_.static_len-=st[2*V+1]);for(x.max_code=Rt,Z=_.heap_len>>1;1<=Z;Z--)Ct(_,K,Z);for(V=at;Z=_.heap[1],_.heap[1]=_.heap[_.heap_len--],Ct(_,K,1),Q=_.heap[1],_.heap[--_.heap_max]=Z,_.heap[--_.heap_max]=Q,K[2*V]=K[2*Z]+K[2*Q],_.depth[V]=(_.depth[Z]>=_.depth[Q]?_.depth[Z]:_.depth[Q])+1,K[2*Z+1]=K[2*Q+1]=V,_.heap[1]=V++,Ct(_,K,1),2<=_.heap_len;);_.heap[--_.heap_max]=_.heap[1],function(It,kt){var ti,re,ei,yt,bi,Hs,fe=kt.dyn_tree,Hn=kt.max_code,vo=kt.stat_desc.static_tree,Uo=kt.stat_desc.has_stree,xo=kt.stat_desc.extra_bits,Wn=kt.stat_desc.extra_base,ii=kt.stat_desc.max_length,vi=0;for(yt=0;yt<=T;yt++)It.bl_count[yt]=0;for(fe[2*It.heap[It.heap_max]+1]=0,ti=It.heap_max+1;ti<E;ti++)ii<(yt=fe[2*fe[2*(re=It.heap[ti])+1]+1]+1)&&(yt=ii,vi++),fe[2*re+1]=yt,Hn<re||(It.bl_count[yt]++,bi=0,Wn<=re&&(bi=xo[re-Wn]),Hs=fe[2*re],It.opt_len+=Hs*(yt+bi),Uo&&(It.static_len+=Hs*(vo[2*re+1]+bi)));if(vi!==0){do{for(yt=ii-1;It.bl_count[yt]===0;)yt--;It.bl_count[yt]--,It.bl_count[yt+1]+=2,It.bl_count[ii]--,vi-=2}while(0<vi);for(yt=ii;yt!==0;yt--)for(re=It.bl_count[yt];re!==0;)Hn<(ei=It.heap[--ti])||(fe[2*ei+1]!==yt&&(It.opt_len+=(yt-fe[2*ei+1])*fe[2*ei],fe[2*ei+1]=yt),re--)}}(_,x),Nt(K,Rt,_.bl_count)}function A(_,x,Z){var Q,V,K=-1,st=x[1],J=0,at=7,Rt=4;for(st===0&&(at=138,Rt=3),x[2*(Z+1)+1]=65535,Q=0;Q<=Z;Q++)V=st,st=x[2*(Q+1)+1],++J<at&&V===st||(J<Rt?_.bl_tree[2*V]+=J:V!==0?(V!==K&&_.bl_tree[2*V]++,_.bl_tree[2*R]++):J<=10?_.bl_tree[2*S]++:_.bl_tree[2*N]++,K=V,Rt=(J=0)===st?(at=138,3):V===st?(at=6,3):(at=7,4))}function $(_,x,Z){var Q,V,K=-1,st=x[1],J=0,at=7,Rt=4;for(st===0&&(at=138,Rt=3),Q=0;Q<=Z;Q++)if(V=st,st=x[2*(Q+1)+1],!(++J<at&&V===st)){if(J<Rt)for(;tt(_,V,_.bl_tree),--J!=0;);else V!==0?(V!==K&&(tt(_,V,_.bl_tree),J--),tt(_,R,_.bl_tree),it(_,J-3,2)):J<=10?(tt(_,S,_.bl_tree),it(_,J-3,3)):(tt(_,N,_.bl_tree),it(_,J-11,7));K=V,Rt=(J=0)===st?(at=138,3):V===st?(at=6,3):(at=7,4)}}a(X);var H=!1;function M(_,x,Z,Q){it(_,(l<<1)+(Q?1:0),3),function(V,K,st,J){ft(V),rt(V,st),rt(V,~st),n.arraySet(V.pending_buf,V.window,K,st,V.pending),V.pending+=st}(_,x,Z)}s._tr_init=function(_){H||(function(){var x,Z,Q,V,K,st=new Array(T+1);for(V=Q=0;V<h-1;V++)for(U[V]=Q,x=0;x<1<<L[V];x++)g[Q++]=V;for(g[Q-1]=V,V=K=0;V<16;V++)for(X[V]=K,x=0;x<1<<D[V];x++)w[K++]=V;for(K>>=7;V<u;V++)for(X[V]=K<<7,x=0;x<1<<D[V]-7;x++)w[256+K++]=V;for(Z=0;Z<=T;Z++)st[Z]=0;for(x=0;x<=143;)z[2*x+1]=8,x++,st[8]++;for(;x<=255;)z[2*x+1]=9,x++,st[9]++;for(;x<=279;)z[2*x+1]=7,x++,st[7]++;for(;x<=287;)z[2*x+1]=8,x++,st[8]++;for(Nt(z,I+1,st),x=0;x<u;x++)O[2*x+1]=5,O[2*x]=Ft(x,5);q=new nt(z,L,f+1,I,T),Y=new nt(O,D,0,u,T),et=new nt(new Array(0),P,0,d,m)}(),H=!0),_.l_desc=new G(_.dyn_ltree,q),_.d_desc=new G(_.dyn_dtree,Y),_.bl_desc=new G(_.bl_tree,et),_.bi_buf=0,_.bi_valid=0,ot(_)},s._tr_stored_block=M,s._tr_flush_block=function(_,x,Z,Q){var V,K,st=0;0<_.level?(_.strm.data_type===2&&(_.strm.data_type=function(J){var at,Rt=4093624447;for(at=0;at<=31;at++,Rt>>>=1)if(1&Rt&&J.dyn_ltree[2*at]!==0)return r;if(J.dyn_ltree[18]!==0||J.dyn_ltree[20]!==0||J.dyn_ltree[26]!==0)return o;for(at=32;at<f;at++)if(J.dyn_ltree[2*at]!==0)return o;return r}(_)),wt(_,_.l_desc),wt(_,_.d_desc),st=function(J){var at;for(A(J,J.dyn_ltree,J.l_desc.max_code),A(J,J.dyn_dtree,J.d_desc.max_code),wt(J,J.bl_desc),at=d-1;3<=at&&J.bl_tree[2*v[at]+1]===0;at--);return J.opt_len+=3*(at+1)+5+5+4,at}(_),V=_.opt_len+3+7>>>3,(K=_.static_len+3+7>>>3)<=V&&(V=K)):V=K=Z+5,Z+4<=V&&x!==-1?M(_,x,Z,Q):_.strategy===4||K===V?(it(_,2+(Q?1:0),3),zt(_,z,O)):(it(_,4+(Q?1:0),3),function(J,at,Rt,It){var kt;for(it(J,at-257,5),it(J,Rt-1,5),it(J,It-4,4),kt=0;kt<It;kt++)it(J,J.bl_tree[2*v[kt]+1],3);$(J,J.dyn_ltree,at-1),$(J,J.dyn_dtree,Rt-1)}(_,_.l_desc.max_code+1,_.d_desc.max_code+1,st+1),zt(_,_.dyn_ltree,_.dyn_dtree)),ot(_),Q&&ft(_)},s._tr_tally=function(_,x,Z){return _.pending_buf[_.d_buf+2*_.last_lit]=x>>>8&255,_.pending_buf[_.d_buf+2*_.last_lit+1]=255&x,_.pending_buf[_.l_buf+_.last_lit]=255&Z,_.last_lit++,x===0?_.dyn_ltree[2*Z]++:(_.matches++,x--,_.dyn_ltree[2*(g[Z]+f+1)]++,_.dyn_dtree[2*B(x)]++),_.last_lit===_.lit_bufsize-1},s._tr_align=function(_){it(_,2,3),tt(_,F,z),function(x){x.bi_valid===16?(rt(x,x.bi_buf),x.bi_buf=0,x.bi_valid=0):8<=x.bi_valid&&(x.pending_buf[x.pending++]=255&x.bi_buf,x.bi_buf>>=8,x.bi_valid-=8)}(_)}},{"../utils/common":41}],53:[function(t,e,s){e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(t,e,s){(function(n){(function(r,o){if(!r.setImmediate){var a,l,h,f,I=1,u={},d=!1,E=r.document,T=Object.getPrototypeOf&&Object.getPrototypeOf(r);T=T&&T.setTimeout?T:r,a={}.toString.call(r.process)==="[object process]"?function(R){process.nextTick(function(){m(R)})}:function(){if(r.postMessage&&!r.importScripts){var R=!0,S=r.onmessage;return r.onmessage=function(){R=!1},r.postMessage("","*"),r.onmessage=S,R}}()?(f="setImmediate$"+Math.random()+"$",r.addEventListener?r.addEventListener("message",F,!1):r.attachEvent("onmessage",F),function(R){r.postMessage(f+R,"*")}):r.MessageChannel?((h=new MessageChannel).port1.onmessage=function(R){m(R.data)},function(R){h.port2.postMessage(R)}):E&&"onreadystatechange"in E.createElement("script")?(l=E.documentElement,function(R){var S=E.createElement("script");S.onreadystatechange=function(){m(R),S.onreadystatechange=null,l.removeChild(S),S=null},l.appendChild(S)}):function(R){setTimeout(m,0,R)},T.setImmediate=function(R){typeof R!="function"&&(R=new Function(""+R));for(var S=new Array(arguments.length-1),N=0;N<S.length;N++)S[N]=arguments[N+1];var L={callback:R,args:S};return u[I]=L,a(I),I++},T.clearImmediate=p}function p(R){delete u[R]}function m(R){if(d)setTimeout(m,0,R);else{var S=u[R];if(S){d=!0;try{(function(N){var L=N.callback,D=N.args;switch(D.length){case 0:L();break;case 1:L(D[0]);break;case 2:L(D[0],D[1]);break;case 3:L(D[0],D[1],D[2]);break;default:L.apply(o,D)}})(S)}finally{p(R),d=!1}}}}function F(R){R.source===r&&typeof R.data=="string"&&R.data.indexOf(f)===0&&m(+R.data.slice(f.length))}})(typeof self>"u"?n===void 0?this:n:self)}).call(this,typeof rs<"u"?rs:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})})(Eo);var yc=Eo.exports;const Lr=Nc(yc);var Yn={},ks={};(function(c){const i=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",t=i+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",e="["+i+"]["+t+"]*",s=new RegExp("^"+e+"$"),n=function(o,a){const l=[];let h=a.exec(o);for(;h;){const f=[];f.startIndex=a.lastIndex-h[0].length;const I=h.length;for(let u=0;u<I;u++)f.push(h[u]);l.push(f),h=a.exec(o)}return l},r=function(o){const a=s.exec(o);return!(a===null||typeof a>"u")};c.isExist=function(o){return typeof o<"u"},c.isEmptyObject=function(o){return Object.keys(o).length===0},c.merge=function(o,a,l){if(a){const h=Object.keys(a),f=h.length;for(let I=0;I<f;I++)l==="strict"?o[h[I]]=[a[h[I]]]:o[h[I]]=a[h[I]]}},c.getValue=function(o){return c.isExist(o)?o:""},c.isName=r,c.getAllMatches=n,c.nameRegexp=e})(ks);const Gn=ks,Lc={allowBooleanAttributes:!1,unpairedTags:[]};Yn.validate=function(c,i){i=Object.assign({},Lc,i);const t=[];let e=!1,s=!1;c[0]==="\uFEFF"&&(c=c.substr(1));for(let n=0;n<c.length;n++)if(c[n]==="<"&&c[n+1]==="?"){if(n+=2,n=_r(c,n),n.err)return n}else if(c[n]==="<"){let r=n;if(n++,c[n]==="!"){n=Mr(c,n);continue}else{let o=!1;c[n]==="/"&&(o=!0,n++);let a="";for(;n<c.length&&c[n]!==">"&&c[n]!==" "&&c[n]!==" "&&c[n]!==`
|
|
140
|
+
`&&c[n]!=="\r";n++)a+=c[n];if(a=a.trim(),a[a.length-1]==="/"&&(a=a.substring(0,a.length-1),n--),!Uc(a)){let f;return a.trim().length===0?f="Invalid space after '<'.":f="Tag '"+a+"' is an invalid name.",Pt("InvalidTag",f,vt(c,n))}const l=Mc(c,n);if(l===!1)return Pt("InvalidAttr","Attributes for '"+a+"' have open quote.",vt(c,n));let h=l.value;if(n=l.index,h[h.length-1]==="/"){const f=n-h.length;h=h.substring(0,h.length-1);const I=wr(h,i);if(I===!0)e=!0;else return Pt(I.err.code,I.err.msg,vt(c,f+I.err.line))}else if(o)if(l.tagClosed){if(h.trim().length>0)return Pt("InvalidTag","Closing tag '"+a+"' can't have attributes or invalid starting.",vt(c,r));if(t.length===0)return Pt("InvalidTag","Closing tag '"+a+"' has not been opened.",vt(c,r));{const f=t.pop();if(a!==f.tagName){let I=vt(c,f.tagStartPos);return Pt("InvalidTag","Expected closing tag '"+f.tagName+"' (opened in line "+I.line+", col "+I.col+") instead of closing tag '"+a+"'.",vt(c,r))}t.length==0&&(s=!0)}}else return Pt("InvalidTag","Closing tag '"+a+"' doesn't have proper closing.",vt(c,n));else{const f=wr(h,i);if(f!==!0)return Pt(f.err.code,f.err.msg,vt(c,n-h.length+f.err.line));if(s===!0)return Pt("InvalidXml","Multiple possible root nodes found.",vt(c,n));i.unpairedTags.indexOf(a)!==-1||t.push({tagName:a,tagStartPos:r}),e=!0}for(n++;n<c.length;n++)if(c[n]==="<")if(c[n+1]==="!"){n++,n=Mr(c,n);continue}else if(c[n+1]==="?"){if(n=_r(c,++n),n.err)return n}else break;else if(c[n]==="&"){const f=bc(c,n);if(f==-1)return Pt("InvalidChar","char '&' is not expected.",vt(c,n));n=f}else if(s===!0&&!Pr(c[n]))return Pt("InvalidXml","Extra text at the end",vt(c,n));c[n]==="<"&&n--}}else{if(Pr(c[n]))continue;return Pt("InvalidChar","char '"+c[n]+"' is not expected.",vt(c,n))}if(e){if(t.length==1)return Pt("InvalidTag","Unclosed tag '"+t[0].tagName+"'.",vt(c,t[0].tagStartPos));if(t.length>0)return Pt("InvalidXml","Invalid '"+JSON.stringify(t.map(n=>n.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1})}else return Pt("InvalidXml","Start tag expected.",1);return!0};function Pr(c){return c===" "||c===" "||c===`
|
|
141
|
+
`||c==="\r"}function _r(c,i){const t=i;for(;i<c.length;i++)if(c[i]=="?"||c[i]==" "){const e=c.substr(t,i-t);if(i>5&&e==="xml")return Pt("InvalidXml","XML declaration allowed only at the start of the document.",vt(c,i));if(c[i]=="?"&&c[i+1]==">"){i++;break}else continue}return i}function Mr(c,i){if(c.length>i+5&&c[i+1]==="-"&&c[i+2]==="-"){for(i+=3;i<c.length;i++)if(c[i]==="-"&&c[i+1]==="-"&&c[i+2]===">"){i+=2;break}}else if(c.length>i+8&&c[i+1]==="D"&&c[i+2]==="O"&&c[i+3]==="C"&&c[i+4]==="T"&&c[i+5]==="Y"&&c[i+6]==="P"&&c[i+7]==="E"){let t=1;for(i+=8;i<c.length;i++)if(c[i]==="<")t++;else if(c[i]===">"&&(t--,t===0))break}else if(c.length>i+9&&c[i+1]==="["&&c[i+2]==="C"&&c[i+3]==="D"&&c[i+4]==="A"&&c[i+5]==="T"&&c[i+6]==="A"&&c[i+7]==="["){for(i+=8;i<c.length;i++)if(c[i]==="]"&&c[i+1]==="]"&&c[i+2]===">"){i+=2;break}}return i}const Pc='"',_c="'";function Mc(c,i){let t="",e="",s=!1;for(;i<c.length;i++){if(c[i]===Pc||c[i]===_c)e===""?e=c[i]:e!==c[i]||(e="");else if(c[i]===">"&&e===""){s=!0;break}t+=c[i]}return e!==""?!1:{value:t,index:i,tagClosed:s}}const wc=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function wr(c,i){const t=Gn.getAllMatches(c,wc),e={};for(let s=0;s<t.length;s++){if(t[s][1].length===0)return Pt("InvalidAttr","Attribute '"+t[s][2]+"' has no space in starting.",pi(t[s]));if(t[s][3]!==void 0&&t[s][4]===void 0)return Pt("InvalidAttr","Attribute '"+t[s][2]+"' is without value.",pi(t[s]));if(t[s][3]===void 0&&!i.allowBooleanAttributes)return Pt("InvalidAttr","boolean attribute '"+t[s][2]+"' is not allowed.",pi(t[s]));const n=t[s][2];if(!vc(n))return Pt("InvalidAttr","Attribute '"+n+"' is an invalid name.",pi(t[s]));if(!e.hasOwnProperty(n))e[n]=1;else return Pt("InvalidAttr","Attribute '"+n+"' is repeated.",pi(t[s]))}return!0}function Dc(c,i){let t=/\d/;for(c[i]==="x"&&(i++,t=/[\da-fA-F]/);i<c.length;i++){if(c[i]===";")return i;if(!c[i].match(t))break}return-1}function bc(c,i){if(i++,c[i]===";")return-1;if(c[i]==="#")return i++,Dc(c,i);let t=0;for(;i<c.length;i++,t++)if(!(c[i].match(/\w/)&&t<20)){if(c[i]===";")break;return-1}return i}function Pt(c,i,t){return{err:{code:c,msg:i,line:t.line||t,col:t.col}}}function vc(c){return Gn.isName(c)}function Uc(c){return Gn.isName(c)}function vt(c,i){const t=c.substring(0,i).split(/\r?\n/);return{line:t.length,col:t[t.length-1].length+1}}function pi(c){return c.startIndex+c[1].length}var zn={};const po={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(c,i){return i},attributeValueProcessor:function(c,i){return i},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(c,i,t){return c}},xc=function(c){return Object.assign({},po,c)};zn.buildOptions=xc;zn.defaultOptions=po;class Bc{constructor(i){this.tagname=i,this.child=[],this[":@"]={}}add(i,t){i==="__proto__"&&(i="#__proto__"),this.child.push({[i]:t})}addChild(i){i.tagname==="__proto__"&&(i.tagname="#__proto__"),i[":@"]&&Object.keys(i[":@"]).length>0?this.child.push({[i.tagname]:i.child,":@":i[":@"]}):this.child.push({[i.tagname]:i.child})}}var Vc=Bc;const Yc=ks;function Gc(c,i){const t={};if(c[i+3]==="O"&&c[i+4]==="C"&&c[i+5]==="T"&&c[i+6]==="Y"&&c[i+7]==="P"&&c[i+8]==="E"){i=i+9;let e=1,s=!1,n=!1,r="";for(;i<c.length;i++)if(c[i]==="<"&&!n){if(s&&Hc(c,i))i+=7,[entityName,val,i]=zc(c,i+1),val.indexOf("&")===-1&&(t[Zc(entityName)]={regx:RegExp(`&${entityName};`,"g"),val});else if(s&&Wc(c,i))i+=8;else if(s&&Xc(c,i))i+=8;else if(s&&$c(c,i))i+=9;else if(kc)n=!0;else throw new Error("Invalid DOCTYPE");e++,r=""}else if(c[i]===">"){if(n?c[i-1]==="-"&&c[i-2]==="-"&&(n=!1,e--):e--,e===0)break}else c[i]==="["?s=!0:r+=c[i];if(e!==0)throw new Error("Unclosed DOCTYPE")}else throw new Error("Invalid Tag instead of DOCTYPE");return{entities:t,i}}function zc(c,i){let t="";for(;i<c.length&&c[i]!=="'"&&c[i]!=='"';i++)t+=c[i];if(t=t.trim(),t.indexOf(" ")!==-1)throw new Error("External entites are not supported");const e=c[i++];let s="";for(;i<c.length&&c[i]!==e;i++)s+=c[i];return[t,s,i]}function kc(c,i){return c[i+1]==="!"&&c[i+2]==="-"&&c[i+3]==="-"}function Hc(c,i){return c[i+1]==="!"&&c[i+2]==="E"&&c[i+3]==="N"&&c[i+4]==="T"&&c[i+5]==="I"&&c[i+6]==="T"&&c[i+7]==="Y"}function Wc(c,i){return c[i+1]==="!"&&c[i+2]==="E"&&c[i+3]==="L"&&c[i+4]==="E"&&c[i+5]==="M"&&c[i+6]==="E"&&c[i+7]==="N"&&c[i+8]==="T"}function Xc(c,i){return c[i+1]==="!"&&c[i+2]==="A"&&c[i+3]==="T"&&c[i+4]==="T"&&c[i+5]==="L"&&c[i+6]==="I"&&c[i+7]==="S"&&c[i+8]==="T"}function $c(c,i){return c[i+1]==="!"&&c[i+2]==="N"&&c[i+3]==="O"&&c[i+4]==="T"&&c[i+5]==="A"&&c[i+6]==="T"&&c[i+7]==="I"&&c[i+8]==="O"&&c[i+9]==="N"}function Zc(c){if(Yc.isName(c))return c;throw new Error(`Invalid entity name ${c}`)}var jc=Gc;const qc=/^[-+]?0x[a-fA-F0-9]+$/,Qc=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt);!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const Kc={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function Jc(c,i={}){if(i=Object.assign({},Kc,i),!c||typeof c!="string")return c;let t=c.trim();if(i.skipLike!==void 0&&i.skipLike.test(t))return c;if(i.hex&&qc.test(t))return Number.parseInt(t,16);{const e=Qc.exec(t);if(e){const s=e[1],n=e[2];let r=tl(e[3]);const o=e[4]||e[6];if(!i.leadingZeros&&n.length>0&&s&&t[2]!==".")return c;if(!i.leadingZeros&&n.length>0&&!s&&t[1]!==".")return c;{const a=Number(t),l=""+a;return l.search(/[eE]/)!==-1||o?i.eNotation?a:c:t.indexOf(".")!==-1?l==="0"&&r===""||l===r||s&&l==="-"+r?a:c:n?r===l||s+r===l?a:c:t===l||t===s+l?a:c}}else return c}}function tl(c){return c&&c.indexOf(".")!==-1&&(c=c.replace(/0+$/,""),c==="."?c="0":c[0]==="."?c="0"+c:c[c.length-1]==="."&&(c=c.substr(0,c.length-1))),c}var el=Jc;const Co=ks,Ci=Vc,il=jc,sl=el;let nl=class{constructor(i){this.options=i,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>String.fromCharCode(Number.parseInt(e,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>String.fromCharCode(Number.parseInt(e,16))}},this.addExternalEntities=rl,this.parseXml=hl,this.parseTextData=ol,this.resolveNameSpace=al,this.buildAttributesMap=ll,this.isItStopNode=dl,this.replaceEntitiesValue=fl,this.readStopNodeData=pl,this.saveTextToParentTag=Il,this.addChild=ul}};function rl(c){const i=Object.keys(c);for(let t=0;t<i.length;t++){const e=i[t];this.lastEntities[e]={regex:new RegExp("&"+e+";","g"),val:c[e]}}}function ol(c,i,t,e,s,n,r){if(c!==void 0&&(this.options.trimValues&&!e&&(c=c.trim()),c.length>0)){r||(c=this.replaceEntitiesValue(c));const o=this.options.tagValueProcessor(i,c,t,s,n);return o==null?c:typeof o!=typeof c||o!==c?o:this.options.trimValues?Nn(c,this.options.parseTagValue,this.options.numberParseOptions):c.trim()===c?Nn(c,this.options.parseTagValue,this.options.numberParseOptions):c}}function al(c){if(this.options.removeNSPrefix){const i=c.split(":"),t=c.charAt(0)==="/"?"/":"";if(i[0]==="xmlns")return"";i.length===2&&(c=t+i[1])}return c}const cl=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`,"gm");function ll(c,i,t){if(!this.options.ignoreAttributes&&typeof c=="string"){const e=Co.getAllMatches(c,cl),s=e.length,n={};for(let r=0;r<s;r++){const o=this.resolveNameSpace(e[r][1]);let a=e[r][4],l=this.options.attributeNamePrefix+o;if(o.length)if(this.options.transformAttributeName&&(l=this.options.transformAttributeName(l)),l==="__proto__"&&(l="#__proto__"),a!==void 0){this.options.trimValues&&(a=a.trim()),a=this.replaceEntitiesValue(a);const h=this.options.attributeValueProcessor(o,a,i);h==null?n[l]=a:typeof h!=typeof a||h!==a?n[l]=h:n[l]=Nn(a,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(n[l]=!0)}if(!Object.keys(n).length)return;if(this.options.attributesGroupName){const r={};return r[this.options.attributesGroupName]=n,r}return n}}const hl=function(c){c=c.replace(/\r\n?/g,`
|
|
142
|
+
`);const i=new Ci("!xml");let t=i,e="",s="";for(let n=0;n<c.length;n++)if(c[n]==="<")if(c[n+1]==="/"){const o=we(c,">",n,"Closing Tag is not closed.");let a=c.substring(n+2,o).trim();if(this.options.removeNSPrefix){const f=a.indexOf(":");f!==-1&&(a=a.substr(f+1))}this.options.transformTagName&&(a=this.options.transformTagName(a)),t&&(e=this.saveTextToParentTag(e,t,s));const l=s.substring(s.lastIndexOf(".")+1);if(a&&this.options.unpairedTags.indexOf(a)!==-1)throw new Error(`Unpaired tag can not be used as closing tag: </${a}>`);let h=0;l&&this.options.unpairedTags.indexOf(l)!==-1?(h=s.lastIndexOf(".",s.lastIndexOf(".")-1),this.tagsNodeStack.pop()):h=s.lastIndexOf("."),s=s.substring(0,h),t=this.tagsNodeStack.pop(),e="",n=o}else if(c[n+1]==="?"){let o=On(c,n,!1,"?>");if(!o)throw new Error("Pi Tag is not closed.");if(e=this.saveTextToParentTag(e,t,s),!(this.options.ignoreDeclaration&&o.tagName==="?xml"||this.options.ignorePiTags)){const a=new Ci(o.tagName);a.add(this.options.textNodeName,""),o.tagName!==o.tagExp&&o.attrExpPresent&&(a[":@"]=this.buildAttributesMap(o.tagExp,s,o.tagName)),this.addChild(t,a,s)}n=o.closeIndex+1}else if(c.substr(n+1,3)==="!--"){const o=we(c,"-->",n+4,"Comment is not closed.");if(this.options.commentPropName){const a=c.substring(n+4,o-2);e=this.saveTextToParentTag(e,t,s),t.add(this.options.commentPropName,[{[this.options.textNodeName]:a}])}n=o}else if(c.substr(n+1,2)==="!D"){const o=il(c,n);this.docTypeEntities=o.entities,n=o.i}else if(c.substr(n+1,2)==="!["){const o=we(c,"]]>",n,"CDATA is not closed.")-2,a=c.substring(n+9,o);e=this.saveTextToParentTag(e,t,s);let l=this.parseTextData(a,t.tagname,s,!0,!1,!0,!0);l==null&&(l=""),this.options.cdataPropName?t.add(this.options.cdataPropName,[{[this.options.textNodeName]:a}]):t.add(this.options.textNodeName,l),n=o+2}else{let o=On(c,n,this.options.removeNSPrefix),a=o.tagName;const l=o.rawTagName;let h=o.tagExp,f=o.attrExpPresent,I=o.closeIndex;this.options.transformTagName&&(a=this.options.transformTagName(a)),t&&e&&t.tagname!=="!xml"&&(e=this.saveTextToParentTag(e,t,s,!1));const u=t;if(u&&this.options.unpairedTags.indexOf(u.tagname)!==-1&&(t=this.tagsNodeStack.pop(),s=s.substring(0,s.lastIndexOf("."))),a!==i.tagname&&(s+=s?"."+a:a),this.isItStopNode(this.options.stopNodes,s,a)){let d="";if(h.length>0&&h.lastIndexOf("/")===h.length-1)a[a.length-1]==="/"?(a=a.substr(0,a.length-1),s=s.substr(0,s.length-1),h=a):h=h.substr(0,h.length-1),n=o.closeIndex;else if(this.options.unpairedTags.indexOf(a)!==-1)n=o.closeIndex;else{const T=this.readStopNodeData(c,l,I+1);if(!T)throw new Error(`Unexpected end of ${l}`);n=T.i,d=T.tagContent}const E=new Ci(a);a!==h&&f&&(E[":@"]=this.buildAttributesMap(h,s,a)),d&&(d=this.parseTextData(d,a,s,!0,f,!0,!0)),s=s.substr(0,s.lastIndexOf(".")),E.add(this.options.textNodeName,d),this.addChild(t,E,s)}else{if(h.length>0&&h.lastIndexOf("/")===h.length-1){a[a.length-1]==="/"?(a=a.substr(0,a.length-1),s=s.substr(0,s.length-1),h=a):h=h.substr(0,h.length-1),this.options.transformTagName&&(a=this.options.transformTagName(a));const d=new Ci(a);a!==h&&f&&(d[":@"]=this.buildAttributesMap(h,s,a)),this.addChild(t,d,s),s=s.substr(0,s.lastIndexOf("."))}else{const d=new Ci(a);this.tagsNodeStack.push(t),a!==h&&f&&(d[":@"]=this.buildAttributesMap(h,s,a)),this.addChild(t,d,s),t=d}e="",n=I}}else e+=c[n];return i.child};function ul(c,i,t){const e=this.options.updateTag(i.tagname,t,i[":@"]);e===!1||(typeof e=="string"&&(i.tagname=e),c.addChild(i))}const fl=function(c){if(this.options.processEntities){for(let i in this.docTypeEntities){const t=this.docTypeEntities[i];c=c.replace(t.regx,t.val)}for(let i in this.lastEntities){const t=this.lastEntities[i];c=c.replace(t.regex,t.val)}if(this.options.htmlEntities)for(let i in this.htmlEntities){const t=this.htmlEntities[i];c=c.replace(t.regex,t.val)}c=c.replace(this.ampEntity.regex,this.ampEntity.val)}return c};function Il(c,i,t,e){return c&&(e===void 0&&(e=Object.keys(i.child).length===0),c=this.parseTextData(c,i.tagname,t,!1,i[":@"]?Object.keys(i[":@"]).length!==0:!1,e),c!==void 0&&c!==""&&i.add(this.options.textNodeName,c),c=""),c}function dl(c,i,t){const e="*."+t;for(const s in c){const n=c[s];if(e===n||i===n)return!0}return!1}function El(c,i,t=">"){let e,s="";for(let n=i;n<c.length;n++){let r=c[n];if(e)r===e&&(e="");else if(r==='"'||r==="'")e=r;else if(r===t[0])if(t[1]){if(c[n+1]===t[1])return{data:s,index:n}}else return{data:s,index:n};else r===" "&&(r=" ");s+=r}}function we(c,i,t,e){const s=c.indexOf(i,t);if(s===-1)throw new Error(e);return s+i.length-1}function On(c,i,t,e=">"){const s=El(c,i+1,e);if(!s)return;let n=s.data;const r=s.index,o=n.search(/\s/);let a=n,l=!0;o!==-1&&(a=n.substring(0,o),n=n.substring(o+1).trimStart());const h=a;if(t){const f=a.indexOf(":");f!==-1&&(a=a.substr(f+1),l=a!==s.data.substr(f+1))}return{tagName:a,tagExp:n,closeIndex:r,attrExpPresent:l,rawTagName:h}}function pl(c,i,t){const e=t;let s=1;for(;t<c.length;t++)if(c[t]==="<")if(c[t+1]==="/"){const n=we(c,">",t,`${i} is not closed`);if(c.substring(t+2,n).trim()===i&&(s--,s===0))return{tagContent:c.substring(e,t),i:n};t=n}else if(c[t+1]==="?")t=we(c,"?>",t+1,"StopNode is not closed.");else if(c.substr(t+1,3)==="!--")t=we(c,"-->",t+3,"StopNode is not closed.");else if(c.substr(t+1,2)==="![")t=we(c,"]]>",t,"StopNode is not closed.")-2;else{const n=On(c,t,">");n&&((n&&n.tagName)===i&&n.tagExp[n.tagExp.length-1]!=="/"&&s++,t=n.closeIndex)}}function Nn(c,i,t){if(i&&typeof c=="string"){const e=c.trim();return e==="true"?!0:e==="false"?!1:sl(c,t)}else return Co.isExist(c)?c:""}var Cl=nl,To={};function Tl(c,i){return mo(c,i)}function mo(c,i,t){let e;const s={};for(let n=0;n<c.length;n++){const r=c[n],o=ml(r);let a="";if(t===void 0?a=o:a=t+"."+o,o===i.textNodeName)e===void 0?e=r[o]:e+=""+r[o];else{if(o===void 0)continue;if(r[o]){let l=mo(r[o],i,a);const h=gl(l,i);r[":@"]?Rl(l,r[":@"],a,i):Object.keys(l).length===1&&l[i.textNodeName]!==void 0&&!i.alwaysCreateTextNode?l=l[i.textNodeName]:Object.keys(l).length===0&&(i.alwaysCreateTextNode?l[i.textNodeName]="":l=""),s[o]!==void 0&&s.hasOwnProperty(o)?(Array.isArray(s[o])||(s[o]=[s[o]]),s[o].push(l)):i.isArray(o,a,h)?s[o]=[l]:s[o]=l}}}return typeof e=="string"?e.length>0&&(s[i.textNodeName]=e):e!==void 0&&(s[i.textNodeName]=e),s}function ml(c){const i=Object.keys(c);for(let t=0;t<i.length;t++){const e=i[t];if(e!==":@")return e}}function Rl(c,i,t,e){if(i){const s=Object.keys(i),n=s.length;for(let r=0;r<n;r++){const o=s[r];e.isArray(o,t+"."+o,!0,!0)?c[o]=[i[o]]:c[o]=i[o]}}}function gl(c,i){const{textNodeName:t}=i,e=Object.keys(c).length;return!!(e===0||e===1&&(c[t]||typeof c[t]=="boolean"||c[t]===0))}To.prettify=Tl;const{buildOptions:Al}=zn,Fl=Cl,{prettify:Sl}=To,Ol=Yn;let Nl=class{constructor(i){this.externalEntities={},this.options=Al(i)}parse(i,t){if(typeof i!="string")if(i.toString)i=i.toString();else throw new Error("XML data is accepted in String or Bytes[] form.");if(t){t===!0&&(t={});const n=Ol.validate(i,t);if(n!==!0)throw Error(`${n.err.msg}:${n.err.line}:${n.err.col}`)}const e=new Fl(this.options);e.addExternalEntities(this.externalEntities);const s=e.parseXml(i);return this.options.preserveOrder||s===void 0?s:Sl(s,this.options)}addEntity(i,t){if(t.indexOf("&")!==-1)throw new Error("Entity value can't have '&'");if(i.indexOf("&")!==-1||i.indexOf(";")!==-1)throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");if(t==="&")throw new Error("An entity with value '&' is not permitted");this.externalEntities[i]=t}};var yl=Nl;const Ll=`
|
|
143
|
+
`;function Pl(c,i){let t="";return i.format&&i.indentBy.length>0&&(t=Ll),Ro(c,i,"",t)}function Ro(c,i,t,e){let s="",n=!1;for(let r=0;r<c.length;r++){const o=c[r],a=_l(o);if(a===void 0)continue;let l="";if(t.length===0?l=a:l=`${t}.${a}`,a===i.textNodeName){let d=o[a];Ml(l,i)||(d=i.tagValueProcessor(a,d),d=go(d,i)),n&&(s+=e),s+=d,n=!1;continue}else if(a===i.cdataPropName){n&&(s+=e),s+=`<![CDATA[${o[a][0][i.textNodeName]}]]>`,n=!1;continue}else if(a===i.commentPropName){s+=e+`<!--${o[a][0][i.textNodeName]}-->`,n=!0;continue}else if(a[0]==="?"){const d=Dr(o[":@"],i),E=a==="?xml"?"":e;let T=o[a][0][i.textNodeName];T=T.length!==0?" "+T:"",s+=E+`<${a}${T}${d}?>`,n=!0;continue}let h=e;h!==""&&(h+=i.indentBy);const f=Dr(o[":@"],i),I=e+`<${a}${f}`,u=Ro(o[a],i,l,h);i.unpairedTags.indexOf(a)!==-1?i.suppressUnpairedNode?s+=I+">":s+=I+"/>":(!u||u.length===0)&&i.suppressEmptyNode?s+=I+"/>":u&&u.endsWith(">")?s+=I+`>${u}${e}</${a}>`:(s+=I+">",u&&e!==""&&(u.includes("/>")||u.includes("</"))?s+=e+i.indentBy+u+e:s+=u,s+=`</${a}>`),n=!0}return s}function _l(c){const i=Object.keys(c);for(let t=0;t<i.length;t++){const e=i[t];if(c.hasOwnProperty(e)&&e!==":@")return e}}function Dr(c,i){let t="";if(c&&!i.ignoreAttributes)for(let e in c){if(!c.hasOwnProperty(e))continue;let s=i.attributeValueProcessor(e,c[e]);s=go(s,i),s===!0&&i.suppressBooleanAttributes?t+=` ${e.substr(i.attributeNamePrefix.length)}`:t+=` ${e.substr(i.attributeNamePrefix.length)}="${s}"`}return t}function Ml(c,i){c=c.substr(0,c.length-i.textNodeName.length-1);let t=c.substr(c.lastIndexOf(".")+1);for(let e in i.stopNodes)if(i.stopNodes[e]===c||i.stopNodes[e]==="*."+t)return!0;return!1}function go(c,i){if(c&&c.length>0&&i.processEntities)for(let t=0;t<i.entities.length;t++){const e=i.entities[t];c=c.replace(e.regex,e.val)}return c}var wl=Pl;const Dl=wl,bl={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(c,i){return i},attributeValueProcessor:function(c,i){return i},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function Ne(c){this.options=Object.assign({},bl,c),this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=xl),this.processTextOrObjNode=vl,this.options.format?(this.indentate=Ul,this.tagEndChar=`>
|
|
144
144
|
`,this.newLine=`
|
|
145
|
-
`):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}
|
|
145
|
+
`):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}Ne.prototype.build=function(c){return this.options.preserveOrder?Dl(c,this.options):(Array.isArray(c)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(c={[this.options.arrayNodeName]:c}),this.j2x(c,0).val)};Ne.prototype.j2x=function(c,i){let t="",e="";for(let s in c)if(Object.prototype.hasOwnProperty.call(c,s))if(typeof c[s]>"u")this.isAttribute(s)&&(e+="");else if(c[s]===null)this.isAttribute(s)?e+="":s[0]==="?"?e+=this.indentate(i)+"<"+s+"?"+this.tagEndChar:e+=this.indentate(i)+"<"+s+"/"+this.tagEndChar;else if(c[s]instanceof Date)e+=this.buildTextValNode(c[s],s,"",i);else if(typeof c[s]!="object"){const n=this.isAttribute(s);if(n)t+=this.buildAttrPairStr(n,""+c[s]);else if(s===this.options.textNodeName){let r=this.options.tagValueProcessor(s,""+c[s]);e+=this.replaceEntitiesValue(r)}else e+=this.buildTextValNode(c[s],s,"",i)}else if(Array.isArray(c[s])){const n=c[s].length;let r="",o="";for(let a=0;a<n;a++){const l=c[s][a];if(!(typeof l>"u"))if(l===null)s[0]==="?"?e+=this.indentate(i)+"<"+s+"?"+this.tagEndChar:e+=this.indentate(i)+"<"+s+"/"+this.tagEndChar;else if(typeof l=="object")if(this.options.oneListGroup){const h=this.j2x(l,i+1);r+=h.val,this.options.attributesGroupName&&l.hasOwnProperty(this.options.attributesGroupName)&&(o+=h.attrStr)}else r+=this.processTextOrObjNode(l,s,i);else if(this.options.oneListGroup){let h=this.options.tagValueProcessor(s,l);h=this.replaceEntitiesValue(h),r+=h}else r+=this.buildTextValNode(l,s,"",i)}this.options.oneListGroup&&(r=this.buildObjectNode(r,s,o,i)),e+=r}else if(this.options.attributesGroupName&&s===this.options.attributesGroupName){const n=Object.keys(c[s]),r=n.length;for(let o=0;o<r;o++)t+=this.buildAttrPairStr(n[o],""+c[s][n[o]])}else e+=this.processTextOrObjNode(c[s],s,i);return{attrStr:t,val:e}};Ne.prototype.buildAttrPairStr=function(c,i){return i=this.options.attributeValueProcessor(c,""+i),i=this.replaceEntitiesValue(i),this.options.suppressBooleanAttributes&&i==="true"?" "+c:" "+c+'="'+i+'"'};function vl(c,i,t){const e=this.j2x(c,t+1);return c[this.options.textNodeName]!==void 0&&Object.keys(c).length===1?this.buildTextValNode(c[this.options.textNodeName],i,e.attrStr,t):this.buildObjectNode(e.val,i,e.attrStr,t)}Ne.prototype.buildObjectNode=function(c,i,t,e){if(c==="")return i[0]==="?"?this.indentate(e)+"<"+i+t+"?"+this.tagEndChar:this.indentate(e)+"<"+i+t+this.closeTag(i)+this.tagEndChar;{let s="</"+i+this.tagEndChar,n="";return i[0]==="?"&&(n="?",s=""),(t||t==="")&&c.indexOf("<")===-1?this.indentate(e)+"<"+i+t+n+">"+c+s:this.options.commentPropName!==!1&&i===this.options.commentPropName&&n.length===0?this.indentate(e)+`<!--${c}-->`+this.newLine:this.indentate(e)+"<"+i+t+n+this.tagEndChar+c+this.indentate(e)+s}};Ne.prototype.closeTag=function(c){let i="";return this.options.unpairedTags.indexOf(c)!==-1?this.options.suppressUnpairedNode||(i="/"):this.options.suppressEmptyNode?i="/":i=`></${c}`,i};Ne.prototype.buildTextValNode=function(c,i,t,e){if(this.options.cdataPropName!==!1&&i===this.options.cdataPropName)return this.indentate(e)+`<![CDATA[${c}]]>`+this.newLine;if(this.options.commentPropName!==!1&&i===this.options.commentPropName)return this.indentate(e)+`<!--${c}-->`+this.newLine;if(i[0]==="?")return this.indentate(e)+"<"+i+t+"?"+this.tagEndChar;{let s=this.options.tagValueProcessor(i,c);return s=this.replaceEntitiesValue(s),s===""?this.indentate(e)+"<"+i+t+this.closeTag(i)+this.tagEndChar:this.indentate(e)+"<"+i+t+">"+s+"</"+i+this.tagEndChar}};Ne.prototype.replaceEntitiesValue=function(c){if(c&&c.length>0&&this.options.processEntities)for(let i=0;i<this.options.entities.length;i++){const t=this.options.entities[i];c=c.replace(t.regex,t.val)}return c};function Ul(c){return this.options.indentBy.repeat(c)}function xl(c){return c.startsWith(this.options.attributeNamePrefix)&&c!==this.options.textNodeName?c.substr(this.attrPrefixLen):!1}var Bl=Ne;const Vl=Yn,Yl=yl,Gl=Bl;var Ao={XMLParser:Yl,XMLValidator:Vl,XMLBuilder:Gl};class ps{constructor(i,t){C(this,"date",new Date);C(this,"author");C(this,"guid",ne.create());C(this,"viewpoint");C(this,"modifiedAuthor");C(this,"modifiedDate");C(this,"topic");C(this,"_components");C(this,"_comment","");this._components=i,this._comment=t;const e=this._components.get(Mt);this.author=e.config.author}set comment(i){var e;const t=this._components.get(Mt);this._comment=i,this.modifiedDate=new Date,this.modifiedAuthor=t.config.author,(e=this.topic)==null||e.comments.set(this.guid,this)}get comment(){return this._comment}serialize(){let i=null;this.viewpoint&&(i=`<Viewpoint Guid="${this.viewpoint.guid}"/>`);let t=null;this.modifiedDate&&(t=`<ModifiedDate>${this.modifiedDate.toISOString()}</ModifiedDate>`);let e=null;return this.modifiedAuthor&&(e=`<ModifiedAuthor>${this.modifiedAuthor}</ModifiedAuthor>`),`
|
|
146
146
|
<Comment Guid="${this.guid}">
|
|
147
147
|
<Date>${this.date.toISOString()}</Date>
|
|
148
148
|
<Author>${this.author}</Author>
|
|
149
149
|
<Comment>${this.comment}</Comment>
|
|
150
|
+
${i??""}
|
|
150
151
|
${e??""}
|
|
151
|
-
${s??""}
|
|
152
152
|
${t??""}
|
|
153
153
|
</Comment>
|
|
154
|
-
`}}const
|
|
155
|
-
`);for(const
|
|
156
|
-
<${t}>${n}</${t}>`)}return
|
|
157
|
-
${
|
|
158
|
-
</Labels>`:"<Labels/>":
|
|
159
|
-
`);return
|
|
154
|
+
`}}const he=class he{constructor(i){C(this,"guid",ne.create());C(this,"title",he.default.title);C(this,"creationDate",new Date);C(this,"creationAuthor","");C(this,"viewpoints",new ue);C(this,"relatedTopics",new ue);C(this,"comments",new se);C(this,"customData",{});C(this,"description");C(this,"serverAssignedId");C(this,"dueDate");C(this,"modifiedAuthor");C(this,"modifiedDate");C(this,"index");C(this,"_type",he.default.type);C(this,"_status",he.default.status);C(this,"_priority",he.default.priority);C(this,"_stage",he.default.priority);C(this,"_assignedTo",he.default.assignedTo);C(this,"_labels",he.default.labels);C(this,"_components");this._components=i;const t=i.get(Mt);this.creationAuthor=t.config.author,this.relatedTopics.guard=e=>e!==this.guid}set type(i){const t=this._components.get(Mt),{strict:e,types:s}=t.config;(!e||s.has(i))&&(this._type=i)}get type(){return this._type}set status(i){const t=this._components.get(Mt),{strict:e,statuses:s}=t.config;(!e||s.has(i))&&(this._status=i)}get status(){return this._status}set priority(i){const t=this._components.get(Mt);if(i){const{strict:e,priorities:s}=t.config;if(!(e?s.has(i):!0))return;this._priority=i}else this._priority=i}get priority(){return this._priority}set stage(i){const t=this._components.get(Mt);if(i){const{strict:e,stages:s}=t.config;if(!(e?s.has(i):!0))return;this._stage=i}else this._stage=i}get stage(){return this._stage}set assignedTo(i){const t=this._components.get(Mt);if(i){const{strict:e,users:s}=t.config;if(!(e?s.has(i):!0))return;this._assignedTo=i}else this._assignedTo=i}get assignedTo(){return this._assignedTo}set labels(i){const t=this._components.get(Mt),{strict:e,labels:s}=t.config;if(e){const n=new Set;for(const r of i)(!e||s.has(r))&&n.add(r);this._labels=n}else this._labels=i}get labels(){return this._labels}get _managerVersion(){return this._components.get(Mt).config.version}set(i){const t=i,e=this;for(const n in i){if(n==="guid")continue;const r=t[n];n in this&&(e[n]=r)}return this._components.get(Mt).list.set(this.guid,this),this}createComment(i,t){const e=new ps(this._components,i);return e.viewpoint=t,e.topic=this,this.comments.set(e.guid,e),e}createLabelTags(i=this._managerVersion){let t="Labels";i==="2.1"&&(t="Labels"),i==="3"&&(t="Label");let e=[...this.labels].map(s=>`<${t}>${s}</${t}>`).join(`
|
|
155
|
+
`);for(const s in this.customData){const n=this.customData[s];typeof n=="string"&&(e+=`
|
|
156
|
+
<${t}>${n}</${t}>`)}return i==="2.1"?e:i==="3"?e.length!==0?`<Labels>
|
|
157
|
+
${e}
|
|
158
|
+
</Labels>`:"<Labels/>":e}createCommentTags(i=this._managerVersion){const t=[...this.comments.values()].map(e=>e.serialize()).join(`
|
|
159
|
+
`);return i==="2.1"?t:i==="3"?t.length!==0?`<Comments>
|
|
160
160
|
${t}
|
|
161
|
-
</Comments>`:"<Comments/>":t}createViewpointTags(
|
|
161
|
+
</Comments>`:"<Comments/>":t}createViewpointTags(i=this._managerVersion){let t="Viewpoints";i==="2.1"&&(t="Viewpoints"),i==="3"&&(t="ViewPoint");const e=this._components.get(jt),n=[...this.viewpoints].map(r=>e.list.get(r)).filter(r=>r).map(r=>`<${t} Guid="${r.guid}">
|
|
162
162
|
<Viewpoint>${r.guid}.bcfv</Viewpoint>
|
|
163
163
|
<Snapshot>${r.guid}.jpeg</Snapshot>
|
|
164
164
|
</${t}>
|
|
165
165
|
`).join(`
|
|
166
|
-
`);return
|
|
166
|
+
`);return i==="2.1"?n:i==="3"?n.length!==0?`<Viewpoints>
|
|
167
167
|
${n}
|
|
168
|
-
</Viewpoints>`:"<Viewpoints />":n}createRelatedTopicTags(
|
|
168
|
+
</Viewpoints>`:"<Viewpoints />":n}createRelatedTopicTags(i=this._managerVersion){const t=[...this.relatedTopics].map(e=>`<RelatedTopic Guid="${e}"></RelatedTopic>
|
|
169
169
|
`).join(`
|
|
170
|
-
`);return
|
|
170
|
+
`);return i==="2.1"?t:i==="3"?t.length!==0?`<RelatedTopics>
|
|
171
171
|
${t}
|
|
172
|
-
</RelatedTopics>`:"<RelatedTopics />":t}serialize(){const
|
|
172
|
+
</RelatedTopics>`:"<RelatedTopics />":t}serialize(){const i=this._managerVersion;let t=null;this.serverAssignedId&&(t=`ServerAssignedId="${this.serverAssignedId}"`);let e=null;this.priority&&(e=`<Priority>${this.priority}</Priority>`);let s=null;this.index&&i==="2.1"&&(s=`<Index>${this.index}</Index>`);let n=null;this.modifiedDate&&(n=`<ModifiedDate>${this.modifiedDate.toISOString()}</ModifiedDate>`);let r=null;this.modifiedAuthor&&(r=`<ModifiedAuthor>${this.modifiedAuthor}</ModifiedAuthor>`);let o=null;this.dueDate&&(o=`<DueDate>${this.dueDate.toISOString()}</DueDate>`);let a=null;this.assignedTo&&(a=`<AssignedTo>${this.assignedTo}</AssignedTo>`);let l=null;this.description&&(l=`<Description>${this.description}</Description>`);let h=null;this.stage&&(h=`<Stage>${this.stage}</Stage>`);const f=this.createCommentTags(i),I=this.createViewpointTags(i),u=this.createLabelTags(i),d=this.createRelatedTopicTags(i);return`
|
|
173
173
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
174
174
|
<Markup>
|
|
175
175
|
<Topic Guid="${this.guid}" TopicType="${this.type}" TopicStatus="${this.status}" ${t??""}>
|
|
176
176
|
<Title>${this.title}</Title>
|
|
177
177
|
<CreationDate>${this.creationDate.toISOString()}</CreationDate>
|
|
178
178
|
<CreationAuthor>${this.creationAuthor}</CreationAuthor>
|
|
179
|
+
${e??""}
|
|
179
180
|
${s??""}
|
|
180
|
-
${i??""}
|
|
181
181
|
${n??""}
|
|
182
182
|
${r??""}
|
|
183
183
|
${o??""}
|
|
184
184
|
${a??""}
|
|
185
185
|
${l??""}
|
|
186
186
|
${h??""}
|
|
187
|
-
${
|
|
188
|
-
${
|
|
189
|
-
${
|
|
190
|
-
${
|
|
187
|
+
${u}
|
|
188
|
+
${d}
|
|
189
|
+
${i==="3"?f:""}
|
|
190
|
+
${i==="3"?I:""}
|
|
191
191
|
</Topic>
|
|
192
|
-
${
|
|
193
|
-
${
|
|
192
|
+
${i==="2.1"?f:""}
|
|
193
|
+
${i==="2.1"?I:""}
|
|
194
194
|
</Markup>
|
|
195
|
-
`}};
|
|
195
|
+
`}};C(he,"default",{title:"BCF Topic",type:"Issue",status:"Active",labels:new Set});let _i=he;const Fo=(c,i)=>{if(i.trim()==="")return;const t=Mt.xmlParser.parse(i).Extensions;if(!t)return;const{Priorities:e,TopicStatuses:s,TopicTypes:n,Users:r}=t;if(e&&e.Priority){const o=Array.isArray(e.Priority)?e.Priority:[e.Priority];for(const a of o)c.config.priorities.add(a)}if(s&&s.TopicStatus){const o=Array.isArray(s.TopicStatus)?s.TopicStatus:[s.TopicStatus];for(const a of o)c.config.statuses.add(a)}if(n&&n.TopicType){const o=Array.isArray(n.TopicType)?n.TopicType:[n.TopicType];for(const a of o)c.config.types.add(a)}if(r&&r.User){const o=Array.isArray(r.User)?r.User:[r.User];for(const a of o)c.config.users.add(a)}};class So extends Oe{constructor(){super(...arguments);C(this,"_config",{version:{type:"Select",options:new Set,multiple:!1,value:""},author:{type:"Text",value:""},types:{type:"TextSet",value:new Set},statuses:{type:"TextSet",value:new Set},priorities:{type:"TextSet",value:new Set},labels:{type:"TextSet",value:new Set},stages:{type:"TextSet",value:new Set},users:{type:"TextSet",value:new Set},includeSelectionTag:{type:"Boolean",value:!1},updateExtensionsOnImport:{type:"Boolean",value:!1},strict:{type:"Boolean",value:!1},includeAllExtensionsOnExport:{type:"Boolean",value:!1},fallbackVersionOnImport:{type:"Select",multiple:!1,options:new Set,value:""},ignoreIncompleteTopicsOnImport:{type:"Boolean",value:!1}})}get version(){return this._config.version.value}set version(t){this._config.version.value=t}get author(){return this._config.author.value}set author(t){this._config.author.value=t}get types(){return this._config.types.value}set types(t){this._config.types.value=t}get statuses(){return this._config.statuses.value}set statuses(t){this._config.statuses.value=t}get priorities(){return this._config.priorities.value}set priorities(t){this._config.priorities.value=t}get labels(){return this._config.labels.value}set labels(t){this._config.labels.value=t}get stages(){return this._config.stages.value}set stages(t){this._config.stages.value=t}get users(){return this._config.users.value}set users(t){this._config.users.value=t}get includeSelectionTag(){return this._config.includeSelectionTag.value}set includeSelectionTag(t){this._config.includeSelectionTag.value=t}get updateExtensionsOnImport(){return this._config.updateExtensionsOnImport.value}set updateExtensionsOnImport(t){this._config.updateExtensionsOnImport.value=t}get strict(){return this._config.strict.value}set strict(t){this._config.strict.value=t}get includeAllExtensionsOnExport(){return this._config.includeAllExtensionsOnExport.value}set includeAllExtensionsOnExport(t){this._config.includeAllExtensionsOnExport.value=t}get fallbackVersionOnImport(){return this._config.fallbackVersionOnImport.value}set fallbackVersionOnImport(t){this._config.fallbackVersionOnImport.value=t}get ignoreIncompleteTopicsOnImport(){return this._config.ignoreIncompleteTopicsOnImport.value}set ignoreIncompleteTopicsOnImport(t){this._config.ignoreIncompleteTopicsOnImport.value=t}}const Me=class Me extends mt{constructor(){super(...arguments);C(this,"enabled",!1);C(this,"_defaultConfig",{author:"jhon.doe@example.com",version:"2.1",types:new Set(["Clash","Failure","Fault","Inquiry","Issue","Remark","Request"]),statuses:new Set(["Active","In Progress","Done","In Review","Closed"]),priorities:new Set(["On hold","Minor","Normal","Major","Critical"]),labels:new Set,stages:new Set,users:new Set,includeSelectionTag:!1,updateExtensionsOnImport:!0,strict:!1,includeAllExtensionsOnExport:!0,fallbackVersionOnImport:"2.1",ignoreIncompleteTopicsOnImport:!1});C(this,"config",new So(this,this.components,"BCF Topics"));C(this,"list",new se);C(this,"onSetup",new j);C(this,"isSetup",!1);C(this,"onBCFImported",new j);C(this,"onDisposed",new j)}setup(t){if(this.isSetup)return;const e={...this._defaultConfig,...t};this.config.version=e.version,this.config.author=e.author,this.config.types=e.types,this.config.statuses=e.statuses,this.config.priorities=e.priorities,this.config.labels=e.labels,this.config.stages=e.stages,this.config.users=e.users,this.config.includeSelectionTag=e.includeSelectionTag,this.config.updateExtensionsOnImport=e.updateExtensionsOnImport,this.config.strict=e.strict,this.config.includeAllExtensionsOnExport=e.includeAllExtensionsOnExport,this.config.fallbackVersionOnImport=e.fallbackVersionOnImport||"",this.config.ignoreIncompleteTopicsOnImport=e.ignoreIncompleteTopicsOnImport,this.isSetup=!0,this.enabled=!0,this.onSetup.trigger()}create(t){const e=new _i(this.components);return t&&(e.guid=t.guid??e.guid,e.set(t)),this.list.set(e.guid,e),e}dispose(){this.list.dispose(),this.onDisposed.trigger(),this.onDisposed.reset()}get usedTypes(){const t=[...this.list].map(([e,s])=>s.type);return new Set(t)}get usedStatuses(){const t=[...this.list].map(([e,s])=>s.status);return new Set(t)}get usedPriorities(){const t=[...this.list].map(([e,s])=>s.priority).filter(e=>e);return new Set(t)}get usedStages(){const t=[...this.list].map(([e,s])=>s.stage).filter(e=>e);return new Set(t)}get usedUsers(){const t=[];for(const[e,s]of this.list){t.push(s.creationAuthor),s.assignedTo&&t.push(s.assignedTo),s.modifiedAuthor&&t.push(s.modifiedAuthor);for(const[n,r]of s.comments)t.push(r.author),r.modifiedAuthor&&t.push(r.modifiedAuthor)}return new Set(t)}get usedLabels(){const t=[];for(const[e,s]of this.list)t.push(...s.labels);return new Set(t)}updateExtensions(){for(const[t,e]of this.list){for(const s of e.labels)this.config.labels.add(s);this.config.types.add(e.type),e.priority&&this.config.priorities.add(e.priority),e.stage&&this.config.stages.add(e.stage),this.config.statuses.add(e.status),this.config.users.add(e.creationAuthor),e.assignedTo&&this.config.users.add(e.assignedTo),e.modifiedAuthor&&this.config.users.add(e.modifiedAuthor);for(const[s,n]of e.comments)this.config.users.add(n.author),n.modifiedAuthor&&this.config.users.add(n.modifiedAuthor)}}updateViewpointReferences(){const t=this.components.get(jt);for(const[e,s]of this.list)for(const n of s.viewpoints)t.list.has(n)||s.viewpoints.delete(n)}async export(t=this.list.values()){const e=new Lr;e.file("bcf.version",`<?xml version="1.0" encoding="UTF-8"?>
|
|
196
196
|
<Version VersionId="${this.config.version}" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/buildingSMART/BCF-XML/release_3_0/Schemas/version.xsd"
|
|
197
197
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
198
|
-
</Version>`),
|
|
199
|
-
`),
|
|
200
|
-
`),
|
|
198
|
+
</Version>`),e.file("bcf.extensions",this.serializeExtensions());const n=await(await fetch("https://thatopen.github.io/engine_components/resources/favicon.ico")).blob(),r=this.components.get(jt);for(const a of t){const l=e.folder(a.guid);l.file("markup.bcf",a.serialize());for(const h of a.viewpoints){const f=r.list.get(h);f&&(l.file(`${h}.jpeg`,n,{binary:!0}),l.file(`${h}.bcfv`,await f.serialize()))}}return await e.generateAsync({type:"blob"})}serializeExtensions(){const t=[...this.config.types].map(a=>`<TopicType>${a}</TopicType>`).join(`
|
|
199
|
+
`),e=[...this.config.statuses].map(a=>`<TopicStatus>${a}</TopicStatus>`).join(`
|
|
200
|
+
`),s=[...this.config.priorities].map(a=>`<Priority>${a}</Priority>`).join(`
|
|
201
201
|
`),n=[...this.config.labels].map(a=>`<TopicLabel>${a}</TopicLabel>`).join(`
|
|
202
202
|
`),r=[...this.config.stages].map(a=>`<Stage>${a}</Stage>`).join(`
|
|
203
203
|
`),o=[...this.config.users].map(a=>`<User>${a}</User>`).join(`
|
|
@@ -207,11 +207,11 @@ ${t}
|
|
|
207
207
|
${t.length!==0?`<TopicTypes>
|
|
208
208
|
${t}
|
|
209
209
|
</TopicTypes>`:""}
|
|
210
|
-
${
|
|
211
|
-
${
|
|
210
|
+
${e.length!==0?`<TopicStatuses>
|
|
211
|
+
${e}
|
|
212
212
|
</TopicStatuses>`:""}
|
|
213
|
-
${
|
|
214
|
-
${
|
|
213
|
+
${s.length!==0?`<Priorities>
|
|
214
|
+
${s}
|
|
215
215
|
</Priorities>`:""}
|
|
216
216
|
${n.length!==0?`<TopicLabels>
|
|
217
217
|
${n}
|
|
@@ -223,41 +223,84 @@ ${r}
|
|
|
223
223
|
${o}
|
|
224
224
|
</Users>`:""}
|
|
225
225
|
</Extensions>
|
|
226
|
-
`}processMarkupComment(t){const{Guid:s,Date:i,Author:n,Comment:r,Viewpoint:o}=t;if(!(s&&i&&n&&(ri||o)))return null;const a=this.components.get(Zt),l=new ri(this.components,r??"");return l.guid=s,l.date=new Date(i),l.author=n,l.viewpoint=o!=null&&o.Guid?a.list.get(o.Guid):void 0,l.modifiedAuthor=t.ModifiedAuthor,l.modifiedDate=t.ModifiedDate?new Date(t.ModifiedDate):void 0,l}getMarkupComments(t,s){var o;let i;if(s==="2.1"&&(i=t.Comment),s==="3"&&(i=(o=t.Topic.Comments)==null?void 0:o.Comment),!i)return[];i=Array.isArray(i)?i:[i];const n=i.map(a=>this.processMarkupComment(a)).filter(a=>a);return Array.isArray(n)?n:[n]}getMarkupLabels(t,s){var r;let i;return s==="2.1"&&(i=t.Topic.Labels),s==="3"&&(i=(r=t.Topic.Labels)==null?void 0:r.Label),i?Array.isArray(i)?i:[i]:[]}getMarkupViewpoints(t,s){var n;let i;return s==="2.1"&&(i=t.Viewpoints),s==="3"&&(i=(n=t.Topic.Viewpoints)==null?void 0:n.ViewPoint),i?(i=Array.isArray(i)?i:[i],i):[]}getMarkupRelatedTopics(t,s){var r;let i;return s==="2.1"&&(i=t.Topic.RelatedTopic),s==="3"&&(i=(r=t.Topic.RelatedTopics)==null?void 0:r.RelatedTopic),i?(Array.isArray(i)?i:[i]).map(o=>o.Guid):[]}async load(t,s){var _;const{fallbackVersionOnImport:i,ignoreIncompleteTopicsOnImport:n,updateExtensionsOnImport:r}=this.config,o=new fr;await o.loadAsync(t);const a=Object.values(o.files);let l=i;const h=a.find(R=>R.name.endsWith(".version"));if(h){const R=await h.async("string"),C=we.xmlParser.parse(R).Version.VersionId;l=String(C)}if(!(l&&(l==="2.1"||l==="3")))throw new Error(`BCFTopics: ${l} is not supported.`);const u=a.find(R=>R.name.endsWith(".extensions"));if(r&&u){const R=await u.async("string");qr(this,R)}const d=[],f=this.components.get(Zt),E=a.filter(R=>R.name.endsWith(".bcfv"));for(const R of E){const C=await R.async("string"),y=we.xmlParser.parse(C).VisualizationInfo;if(!y){console.warn("Missing VisualizationInfo in Viewpoint");continue}const F={},{Guid:O,ClippingPlanes:v,Components:N,OrthogonalCamera:x,PerspectiveCamera:G}=y;if(O&&(F.guid=O),N){const{Selection:L,Visibility:T}=N;if(L&&L.Component){const $=Array.isArray(L.Component)?L.Component:[L.Component];F.selectionComponents=$.map(V=>V.IfcGuid).filter(V=>V)}if(T&&"DefaultVisibility"in T&&(F.defaultVisibility=T.DefaultVisibility),T&&T.Exceptions&&"Component"in T.Exceptions){const{Component:$}=T.Exceptions,V=Array.isArray($)?$:[$];F.exceptionComponents=V.map(et=>et.IfcGuid).filter(et=>et)}let D;l==="2.1"&&(D=N.ViewSetupHints),l==="3"&&(D=(_=N.Visibility)==null?void 0:_.ViewSetupHints),D&&("OpeningsVisible"in D&&(F.openingsVisible=D.OpeningsVisible),"SpacesVisible"in D&&(F.spacesVisible=D.SpacesVisible),"SpaceBoundariesVisible"in D&&(F.spaceBoundariesVisible=D.SpaceBoundariesVisible))}if(x||G){const L=y.PerspectiveCamera??y.OrthogonalCamera,{CameraViewPoint:T,CameraDirection:D}=L,$=new M.Vector3(Number(T.X),Number(T.Z),Number(-T.Y)),V=new M.Vector3(Number(D.X),Number(D.Z),Number(-D.Y)),et={position:{x:$.x,y:$.y,z:$.z},direction:{x:V.x,y:V.y,z:V.z},aspectRatio:"AspectRatio"in L?L.AspectRatio:1};"ViewToWorldScale"in L&&(F.camera={...et,viewToWorldScale:L.ViewToWorldScale}),"FieldOfView"in L&&(F.camera={...et,fov:L.FieldOfView})}const w=new On(this.components,s,{data:F,setCamera:!1});if(N){const{Coloring:L}=N;if(L&&L.Color){const T=Array.isArray(L.Color)?L.Color:[L.Color];for(const D of T){const{Color:$,Component:V}=D,W=(Array.isArray(V)?V:[V]).map(nt=>nt.IfcGuid);w.componentColors.set($,W)}}}if(d.push(w),v){const L=this.components.get(ni),T=Array.isArray(v.ClippingPlane)?v.ClippingPlane:[v.ClippingPlane];for(const D of T){const{Location:$,Direction:V}=D;if(!($&&V))continue;const et=new M.Vector3($.X,$.Z,-$.Y),W=new M.Vector3(V.X,-V.Z,V.Y),nt=L.createFromNormalAndCoplanarPoint(s,W,et);nt.visible=!1,nt.enabled=!1,w.clippingPlanes.add(nt)}}}const p={},I=[],m=a.filter(R=>R.name.endsWith(".bcf"));for(const R of m){const C=await R.async("string"),y=we.xmlParser.parse(C).Markup,F=y.Topic,{Guid:O,TopicType:v,TopicStatus:N,Title:x,CreationDate:G,CreationAuthor:w}=F;if(n&&!(O&&v&&N&&x&&G&&w))continue;const L=new ys(this.components);L.guid=O??L.guid;const T=this.getMarkupRelatedTopics(y,l);p[L.guid]=new Set(T),L.type=v??L.type,L.status=N??L.status,L.title=x??L.title,L.creationDate=G?new Date(G):L.creationDate,L.creationAuthor=w??L.creationAuthor,L.serverAssignedId=F.ServerAssignedId,L.priority=F.Priority,L.index=F.Index,L.modifiedDate=F.ModifiedDate?new Date(F.ModifiedDate):void 0,L.modifiedAuthor=F.ModifiedAuthor,L.dueDate=F.DueDate?new Date(F.DueDate):void 0,L.assignedTo=F.AssignedTo,L.description=F.Description,L.stage=F.Stage;const D=this.getMarkupLabels(y,l);for(const et of D)L.labels.add(et);const $=this.getMarkupComments(y,l);for(const et of $)L.comments.set(et.guid,et);const V=this.getMarkupViewpoints(y,l);for(const et of V){if(!(et&&et.Guid))continue;const W=f.list.get(et.Guid);W&&L.viewpoints.add(W.guid)}this.list.set(L.guid,L),I.push(L)}for(const R in p){const C=this.list.get(R);if(!C)continue;const y=p[R];for(const F of y)C.relatedTopics.add(F)}return this.onBCFImported.trigger(I),{viewpoints:d,topics:I}}};g(we,"uuid","de977976-e4f6-4e4f-a01a-204727839802"),g(we,"xmlParser",new El.XMLParser({allowBooleanAttributes:!0,attributeNamePrefix:"",ignoreAttributes:!1,ignoreDeclaration:!0,ignorePiTags:!0,numberParseOptions:{leadingZeros:!0,hex:!0},parseAttributeValue:!0,preserveOrder:!1,processEntities:!1,removeNSPrefix:!0,trimValues:!0}));let Pt=we;const Kt=class Kt extends At{constructor(t){super(t);g(this,"enabled",!0);g(this,"onDisposed",new Q);g(this,"_absoluteMin");g(this,"_absoluteMax");g(this,"_meshes",[]);this.components.add(Kt.uuid,this),this._absoluteMin=Kt.newBound(!0),this._absoluteMax=Kt.newBound(!1)}static getDimensions(t){const{min:s,max:i}=t,n=Math.abs(i.x-s.x),r=Math.abs(i.y-s.y),o=Math.abs(i.z-s.z),a=new M.Vector3;return a.subVectors(i,s).divideScalar(2).add(s),{width:n,height:r,depth:o,center:a}}static newBound(t){const s=t?1:-1;return new M.Vector3(s*Number.MAX_VALUE,s*Number.MAX_VALUE,s*Number.MAX_VALUE)}static getBounds(t,s,i){const n=i||this.newBound(!1),r=s||this.newBound(!0);for(const o of t)o.x<r.x&&(r.x=o.x),o.y<r.y&&(r.y=o.y),o.z<r.z&&(r.z=o.z),o.x>n.x&&(n.x=o.x),o.y>n.y&&(n.y=o.y),o.z>n.z&&(n.z=o.z);return new M.Box3(s,i)}dispose(){const t=this.components.get(le);for(const s of this._meshes)t.destroy(s);this._meshes=[],this.onDisposed.trigger(Kt.uuid),this.onDisposed.reset()}get(){const t=this._absoluteMin.clone(),s=this._absoluteMax.clone();return new M.Box3(t,s)}getSphere(){const t=this._absoluteMin.clone(),s=this._absoluteMax.clone(),i=Math.abs((s.x-t.x)/2),n=Math.abs((s.y-t.y)/2),r=Math.abs((s.z-t.z)/2),o=new M.Vector3(t.x+i,t.y+n,t.z+r),a=o.distanceTo(t);return new M.Sphere(o,a)}getMesh(){const t=new M.Box3(this._absoluteMin,this._absoluteMax),s=Kt.getDimensions(t),{width:i,height:n,depth:r,center:o}=s,a=new M.BoxGeometry(i,n,r),l=new M.Mesh(a);return this._meshes.push(l),l.position.copy(o),l}reset(){this._absoluteMin=Kt.newBound(!0),this._absoluteMax=Kt.newBound(!1)}add(t){for(const s of t.items)this.addMesh(s.mesh)}addMesh(t,s){if(!t.geometry.index)return;const i=Kt.getFragmentBounds(t);t.updateMatrixWorld();const n=t.matrixWorld,r=new M.Matrix4,o=t instanceof M.InstancedMesh,a=new Set;if(t instanceof Ie.FragmentMesh){s||(s=t.fragment.ids);for(const l of s){const h=t.fragment.getInstancesIDs(l);if(h)for(const u of h)a.add(u)}}else a.add(0);for(const l of a){const h=i.min.clone(),u=i.max.clone();o&&(t.getMatrixAt(l,r),h.applyMatrix4(r),u.applyMatrix4(r)),h.applyMatrix4(n),u.applyMatrix4(n),h.x<this._absoluteMin.x&&(this._absoluteMin.x=h.x),h.y<this._absoluteMin.y&&(this._absoluteMin.y=h.y),h.z<this._absoluteMin.z&&(this._absoluteMin.z=h.z),h.x>this._absoluteMax.x&&(this._absoluteMax.x=h.x),h.y>this._absoluteMax.y&&(this._absoluteMax.y=h.y),h.z>this._absoluteMax.z&&(this._absoluteMax.z=h.z),u.x>this._absoluteMax.x&&(this._absoluteMax.x=u.x),u.y>this._absoluteMax.y&&(this._absoluteMax.y=u.y),u.z>this._absoluteMax.z&&(this._absoluteMax.z=u.z),u.x<this._absoluteMin.x&&(this._absoluteMin.x=u.x),u.y<this._absoluteMin.y&&(this._absoluteMin.y=u.y),u.z<this._absoluteMin.z&&(this._absoluteMin.z=u.z)}}addFragmentIdMap(t){const s=this.components.get(Tt);for(const i in t){const n=s.list.get(i);if(!n)continue;const r=t[i];this.addMesh(n.mesh,r)}}static getFragmentBounds(t){const s=t.geometry.attributes.position,i=Number.MAX_VALUE,n=-i,r=new M.Vector3(i,i,i),o=new M.Vector3(n,n,n);if(!t.geometry.index)throw new Error("Geometry must be indexed!");const a=Array.from(t.geometry.index.array);for(let l=0;l<a.length;l++){if(l%3===0&&a[l]===0&&a[l+1]===0&&a[l+2]===0){l+=2;continue}const h=a[l],u=s.getX(h),d=s.getY(h),f=s.getZ(h);u<r.x&&(r.x=u),d<r.y&&(r.y=d),f<r.z&&(r.z=f),u>o.x&&(o.x=u),d>o.y&&(o.y=d),f>o.z&&(o.z=f)}return new M.Box3(r,o)}};g(Kt,"uuid","d1444724-dba6-4cdd-a0c7-68ee1450d166");let oi=Kt;const Fn=new Set([1123145078,574549367,1675464909,2059837836,3798115385,32440307,3125803723,3207858831,2740243338,2624227202,4240577450,3615266464,3724593414,220341763,477187591,1878645084,1300840506,3303107099,1607154358,1878645084,846575682,1351298697,2417041796,3049322572,3331915920,1416205885,776857604,3285139300,3958052878,2827736869,2732653382,673634403,3448662350,4142052618,2924175390,803316827,2556980723,1809719519,2205249479,807026263,3737207727,1660063152,2347385850,2705031697,3732776249,2485617015,2611217952,1704287377,2937912522,2770003689,1281925730,1484403080,3448662350,4142052618,3800577675,4006246654,3590301190,1383045692,2775532180,2047409740,370225590,3593883385,2665983363,4124623270,812098782,3649129432,987898635,1105321065,3510044353,1635779807,2603310189,3406155212,1310608509,4261334040,2736907675,3649129432,1136057603,1260505505,4182860854,2713105998,2898889636,59481748,3749851601,3486308946,3150382593,1062206242,3264961684,15328376,1485152156,370225590,1981873012,2859738748,45288368,2614616156,2732653382,775493141,2147822146,2601014836,2629017746,1186437898,2367409068,1213902940,3632507154,3900360178,476780140,1472233963,2804161546,3008276851,738692330,374418227,315944413,3905492369,3570813810,2571569899,178912537,2294589976,1437953363,2133299955,572779678,3092502836,388784114,2624227202,1425443689,3057273783,2347385850,1682466193,2519244187,2839578677,3958567839,2513912981,2830218821,427810014]),mi=class mi extends At{constructor(t){super(t);g(this,"enabled",!0);t.add(mi.uuid,this)}async export(t,s,i=!1,n=!0){const r={},o=new Set(t.GetIfcEntityList(s)),a=new Set([K.IFCPROJECT,K.IFCSITE,K.IFCBUILDING,K.IFCBUILDINGSTOREY,K.IFCSPACE]);for(const l of a)o.add(l);for(const l of o){if(Fn.has(l))continue;const h=a.has(l)&&n,u=t.GetLineIDsWithType(s,l);for(const d of u)try{const f=t.GetLine(0,d,h,i);r[f.expressID]=f}catch{console.log(`Could not get property ${d}, with recursive ${h} and indirect ${i}.`)}}return r}};g(mi,"uuid","b32c4332-cd67-436e-ba7f-196646c7a635");let ai=mi;const Jr={103090709:"IFCPROJECT",4097777520:"IFCSITE",4031249490:"IFCBUILDING",3124254112:"IFCBUILDINGSTOREY",3856911033:"IFCSPACE",1674181508:"IFCANNOTATION",25142252:"IFCCONTROLLER",32344328:"IFCBOILER",76236018:"IFCLAMP",90941305:"IFCPUMP",177149247:"IFCAIRTERMINALBOX",182646315:"IFCFLOWINSTRUMENT",263784265:"IFCFURNISHINGELEMENT",264262732:"IFCELECTRICGENERATOR",277319702:"IFCAUDIOVISUALAPPLIANCE",310824031:"IFCPIPEFITTING",331165859:"IFCSTAIR",342316401:"IFCDUCTFITTING",377706215:"IFCMECHANICALFASTENER",395920057:"IFCDOOR",402227799:"IFCELECTRICMOTOR",413509423:"IFCSYSTEMFURNITUREELEMENT",484807127:"IFCEVAPORATOR",486154966:"IFCWINDOWSTANDARDCASE",629592764:"IFCLIGHTFIXTURE",630975310:"IFCUNITARYCONTROLELEMENT",635142910:"IFCCABLECARRIERFITTING",639361253:"IFCCOIL",647756555:"IFCFASTENER",707683696:"IFCFLOWSTORAGEDEVICE",738039164:"IFCPROTECTIVEDEVICE",753842376:"IFCBEAM",812556717:"IFCTANK",819412036:"IFCFILTER",843113511:"IFCCOLUMN",862014818:"IFCELECTRICDISTRIBUTIONBOARD",900683007:"IFCFOOTING",905975707:"IFCCOLUMNSTANDARDCASE",926996030:"IFCVOIDINGFEATURE",979691226:"IFCREINFORCINGBAR",987401354:"IFCFLOWSEGMENT",1003880860:"IFCELECTRICTIMECONTROL",1051757585:"IFCCABLEFITTING",1052013943:"IFCDISTRIBUTIONCHAMBERELEMENT",1062813311:"IFCDISTRIBUTIONCONTROLELEMENT",1073191201:"IFCMEMBER",1095909175:"IFCBUILDINGELEMENTPROXY",1156407060:"IFCPLATESTANDARDCASE",1162798199:"IFCSWITCHINGDEVICE",1329646415:"IFCSHADINGDEVICE",1335981549:"IFCDISCRETEACCESSORY",1360408905:"IFCDUCTSILENCER",1404847402:"IFCSTACKTERMINAL",1426591983:"IFCFIRESUPPRESSIONTERMINAL",1437502449:"IFCMEDICALDEVICE",1509553395:"IFCFURNITURE",1529196076:"IFCSLAB",1620046519:"IFCTRANSPORTELEMENT",1634111441:"IFCAIRTERMINAL",1658829314:"IFCENERGYCONVERSIONDEVICE",1677625105:"IFCCIVILELEMENT",1687234759:"IFCPILE",1904799276:"IFCELECTRICAPPLIANCE",1911478936:"IFCMEMBERSTANDARDCASE",1945004755:"IFCDISTRIBUTIONELEMENT",1973544240:"IFCCOVERING",1999602285:"IFCSPACEHEATER",2016517767:"IFCROOF",2056796094:"IFCAIRTOAIRHEATRECOVERY",2058353004:"IFCFLOWCONTROLLER",2068733104:"IFCHUMIDIFIER",2176052936:"IFCJUNCTIONBOX",2188021234:"IFCFLOWMETER",2223149337:"IFCFLOWTERMINAL",2262370178:"IFCRAILING",2272882330:"IFCCONDENSER",2295281155:"IFCPROTECTIVEDEVICETRIPPINGUNIT",2320036040:"IFCREINFORCINGMESH",2347447852:"IFCTENDONANCHOR",2391383451:"IFCVIBRATIONISOLATOR",2391406946:"IFCWALL",2474470126:"IFCMOTORCONNECTION",2769231204:"IFCVIRTUALELEMENT",2814081492:"IFCENGINE",2906023776:"IFCBEAMSTANDARDCASE",2938176219:"IFCBURNER",2979338954:"IFCBUILDINGELEMENTPART",3024970846:"IFCRAMP",3026737570:"IFCTUBEBUNDLE",3027962421:"IFCSLABSTANDARDCASE",3040386961:"IFCDISTRIBUTIONFLOWELEMENT",3053780830:"IFCSANITARYTERMINAL",3079942009:"IFCOPENINGSTANDARDCASE",3087945054:"IFCALARM",3101698114:"IFCSURFACEFEATURE",3127900445:"IFCSLABELEMENTEDCASE",3132237377:"IFCFLOWMOVINGDEVICE",3171933400:"IFCPLATE",3221913625:"IFCCOMMUNICATIONSAPPLIANCE",3242481149:"IFCDOORSTANDARDCASE",3283111854:"IFCRAMPFLIGHT",3296154744:"IFCCHIMNEY",3304561284:"IFCWINDOW",3310460725:"IFCELECTRICFLOWSTORAGEDEVICE",3319311131:"IFCHEATEXCHANGER",3415622556:"IFCFAN",3420628829:"IFCSOLARDEVICE",3493046030:"IFCGEOGRAPHICELEMENT",3495092785:"IFCCURTAINWALL",3508470533:"IFCFLOWTREATMENTDEVICE",3512223829:"IFCWALLSTANDARDCASE",3518393246:"IFCDUCTSEGMENT",3571504051:"IFCCOMPRESSOR",3588315303:"IFCOPENINGELEMENT",3612865200:"IFCPIPESEGMENT",3640358203:"IFCCOOLINGTOWER",3651124850:"IFCPROJECTIONELEMENT",3694346114:"IFCOUTLET",3747195512:"IFCEVAPORATIVECOOLER",3758799889:"IFCCABLECARRIERSEGMENT",3824725483:"IFCTENDON",3825984169:"IFCTRANSFORMER",3902619387:"IFCCHILLER",4074379575:"IFCDAMPER",4086658281:"IFCSENSOR",4123344466:"IFCELEMENTASSEMBLY",4136498852:"IFCCOOLEDBEAM",4156078855:"IFCWALLELEMENTEDCASE",4175244083:"IFCINTERCEPTOR",4207607924:"IFCVALVE",4217484030:"IFCCABLESEGMENT",4237592921:"IFCWASTETERMINAL",4252922144:"IFCSTAIRFLIGHT",4278956645:"IFCFLOWFITTING",4288193352:"IFCACTUATOR",4292641817:"IFCUNITARYEQUIPMENT",3009204131:"IFCGRID"};class ml{getAll(e,t){const s={},i=Object.keys(Jr).map(n=>parseInt(n,10));for(let n=0;n<i.length;n++){const r=i[n],o=e.GetLineIDsWithType(t,r),a=o.size();for(let l=0;l<a;l++)s[o.get(l)]=r}return s}}const Sn={950732822:"IFCURIREFERENCE",4075327185:"IFCTIME",1209108979:"IFCTEMPERATURERATEOFCHANGEMEASURE",3457685358:"IFCSOUNDPRESSURELEVELMEASURE",4157543285:"IFCSOUNDPOWERLEVELMEASURE",2798247006:"IFCPROPERTYSETDEFINITIONSET",1790229001:"IFCPOSITIVEINTEGER",525895558:"IFCNONNEGATIVELENGTHMEASURE",1774176899:"IFCLINEINDEX",1275358634:"IFCLANGUAGEID",2541165894:"IFCDURATION",3701338814:"IFCDAYINWEEKNUMBER",2195413836:"IFCDATETIME",937566702:"IFCDATE",1683019596:"IFCCARDINALPOINTREFERENCE",2314439260:"IFCBINARY",1500781891:"IFCAREADENSITYMEASURE",3683503648:"IFCARCINDEX",4065007721:"IFCYEARNUMBER",1718600412:"IFCWARPINGMOMENTMEASURE",51269191:"IFCWARPINGCONSTANTMEASURE",2593997549:"IFCVOLUMETRICFLOWRATEMEASURE",3458127941:"IFCVOLUMEMEASURE",3345633955:"IFCVAPORPERMEABILITYMEASURE",1278329552:"IFCTORQUEMEASURE",2591213694:"IFCTIMESTAMP",2726807636:"IFCTIMEMEASURE",743184107:"IFCTHERMODYNAMICTEMPERATUREMEASURE",2016195849:"IFCTHERMALTRANSMITTANCEMEASURE",857959152:"IFCTHERMALRESISTANCEMEASURE",2281867870:"IFCTHERMALEXPANSIONCOEFFICIENTMEASURE",2645777649:"IFCTHERMALCONDUCTIVITYMEASURE",232962298:"IFCTHERMALADMITTANCEMEASURE",296282323:"IFCTEXTTRANSFORMATION",603696268:"IFCTEXTFONTNAME",3490877962:"IFCTEXTDECORATION",1460886941:"IFCTEXTALIGNMENT",2801250643:"IFCTEXT",58845555:"IFCTEMPERATUREGRADIENTMEASURE",361837227:"IFCSPECULARROUGHNESS",2757832317:"IFCSPECULAREXPONENT",3477203348:"IFCSPECIFICHEATCAPACITYMEASURE",993287707:"IFCSOUNDPRESSUREMEASURE",846465480:"IFCSOUNDPOWERMEASURE",3471399674:"IFCSOLIDANGLEMEASURE",408310005:"IFCSHEARMODULUSMEASURE",2190458107:"IFCSECTIONALAREAINTEGRALMEASURE",3467162246:"IFCSECTIONMODULUSMEASURE",2766185779:"IFCSECONDINMINUTE",3211557302:"IFCROTATIONALSTIFFNESSMEASURE",1755127002:"IFCROTATIONALMASSMEASURE",2133746277:"IFCROTATIONALFREQUENCYMEASURE",200335297:"IFCREAL",96294661:"IFCRATIOMEASURE",3972513137:"IFCRADIOACTIVITYMEASURE",3665567075:"IFCPRESSUREMEASURE",2169031380:"IFCPRESENTABLETEXT",1364037233:"IFCPOWERMEASURE",1245737093:"IFCPOSITIVERATIOMEASURE",3054510233:"IFCPOSITIVEPLANEANGLEMEASURE",2815919920:"IFCPOSITIVELENGTHMEASURE",4042175685:"IFCPLANEANGLEMEASURE",2642773653:"IFCPLANARFORCEMEASURE",2260317790:"IFCPARAMETERVALUE",929793134:"IFCPHMEASURE",2395907400:"IFCNUMERICMEASURE",2095195183:"IFCNORMALISEDRATIOMEASURE",765770214:"IFCMONTHINYEARNUMBER",2615040989:"IFCMONETARYMEASURE",3114022597:"IFCMOMENTOFINERTIAMEASURE",1648970520:"IFCMOLECULARWEIGHTMEASURE",3177669450:"IFCMOISTUREDIFFUSIVITYMEASURE",1753493141:"IFCMODULUSOFSUBGRADEREACTIONMEASURE",1052454078:"IFCMODULUSOFROTATIONALSUBGRADEREACTIONMEASURE",2173214787:"IFCMODULUSOFLINEARSUBGRADEREACTIONMEASURE",3341486342:"IFCMODULUSOFELASTICITYMEASURE",102610177:"IFCMINUTEINHOUR",3531705166:"IFCMASSPERLENGTHMEASURE",3124614049:"IFCMASSMEASURE",4017473158:"IFCMASSFLOWRATEMEASURE",1477762836:"IFCMASSDENSITYMEASURE",2486716878:"IFCMAGNETICFLUXMEASURE",286949696:"IFCMAGNETICFLUXDENSITYMEASURE",151039812:"IFCLUMINOUSINTENSITYMEASURE",2755797622:"IFCLUMINOUSINTENSITYDISTRIBUTIONMEASURE",2095003142:"IFCLUMINOUSFLUXMEASURE",503418787:"IFCLOGICAL",3086160713:"IFCLINEARVELOCITYMEASURE",1307019551:"IFCLINEARSTIFFNESSMEASURE",2128979029:"IFCLINEARMOMENTMEASURE",191860431:"IFCLINEARFORCEMEASURE",1243674935:"IFCLENGTHMEASURE",3258342251:"IFCLABEL",2054016361:"IFCKINEMATICVISCOSITYMEASURE",3192672207:"IFCISOTHERMALMOISTURECAPACITYMEASURE",3686016028:"IFCIONCONCENTRATIONMEASURE",3809634241:"IFCINTEGERCOUNTRATEMEASURE",1939436016:"IFCINTEGER",2679005408:"IFCINDUCTANCEMEASURE",3358199106:"IFCILLUMINANCEMEASURE",983778844:"IFCIDENTIFIER",2589826445:"IFCHOURINDAY",1158859006:"IFCHEATINGVALUEMEASURE",3113092358:"IFCHEATFLUXDENSITYMEASURE",3064340077:"IFCGLOBALLYUNIQUEID",3044325142:"IFCFREQUENCYMEASURE",1361398929:"IFCFORCEMEASURE",2590844177:"IFCFONTWEIGHT",2715512545:"IFCFONTVARIANT",1102727119:"IFCFONTSTYLE",2078135608:"IFCENERGYMEASURE",2506197118:"IFCELECTRICVOLTAGEMEASURE",2951915441:"IFCELECTRICRESISTANCEMEASURE",3790457270:"IFCELECTRICCURRENTMEASURE",2093906313:"IFCELECTRICCONDUCTANCEMEASURE",3818826038:"IFCELECTRICCHARGEMEASURE",1827137117:"IFCELECTRICCAPACITANCEMEASURE",69416015:"IFCDYNAMICVISCOSITYMEASURE",524656162:"IFCDOSEEQUIVALENTMEASURE",4134073009:"IFCDIMENSIONCOUNT",1514641115:"IFCDESCRIPTIVEMEASURE",300323983:"IFCDAYLIGHTSAVINGHOUR",86635668:"IFCDAYINMONTHNUMBER",94842927:"IFCCURVATUREMEASURE",1778710042:"IFCCOUNTMEASURE",3238673880:"IFCCONTEXTDEPENDENTMEASURE",3812528620:"IFCCOMPOUNDPLANEANGLEMEASURE",2991860651:"IFCCOMPLEXNUMBER",1867003952:"IFCBOXALIGNMENT",2735952531:"IFCBOOLEAN",2650437152:"IFCAREAMEASURE",632304761:"IFCANGULARVELOCITYMEASURE",360377573:"IFCAMOUNTOFSUBSTANCEMEASURE",4182062534:"IFCACCELERATIONMEASURE",3699917729:"IFCABSORBEDDOSEMEASURE",1971632696:"IFCGEOSLICE",2680139844:"IFCGEOMODEL",24726584:"IFCELECTRICFLOWTREATMENTDEVICE",3693000487:"IFCDISTRIBUTIONBOARD",3460952963:"IFCCONVEYORSEGMENT",3999819293:"IFCCAISSONFOUNDATION",3314249567:"IFCBOREHOLE",4196446775:"IFCBEARING",325726236:"IFCALIGNMENT",3425753595:"IFCTRACKELEMENT",991950508:"IFCSIGNAL",3798194928:"IFCREINFORCEDSOIL",3290496277:"IFCRAIL",1383356374:"IFCPAVEMENT",2182337498:"IFCNAVIGATIONELEMENT",234836483:"IFCMOORINGDEVICE",2078563270:"IFCMOBILETELECOMMUNICATIONSAPPLIANCE",1638804497:"IFCLIQUIDTERMINAL",1154579445:"IFCLINEARPOSITIONINGELEMENT",2696325953:"IFCKERB",2713699986:"IFCGEOTECHNICALASSEMBLY",2142170206:"IFCELECTRICFLOWTREATMENTDEVICETYPE",3376911765:"IFCEARTHWORKSFILL",1077100507:"IFCEARTHWORKSELEMENT",3071239417:"IFCEARTHWORKSCUT",479945903:"IFCDISTRIBUTIONBOARDTYPE",3426335179:"IFCDEEPFOUNDATION",1502416096:"IFCCOURSE",2940368186:"IFCCONVEYORSEGMENTTYPE",3203706013:"IFCCAISSONFOUNDATIONTYPE",3862327254:"IFCBUILTSYSTEM",1876633798:"IFCBUILTELEMENT",963979645:"IFCBRIDGEPART",644574406:"IFCBRIDGE",3649138523:"IFCBEARINGTYPE",1662888072:"IFCALIGNMENTVERTICAL",317615605:"IFCALIGNMENTSEGMENT",1545765605:"IFCALIGNMENTHORIZONTAL",4266260250:"IFCALIGNMENTCANT",3956297820:"IFCVIBRATIONDAMPERTYPE",1530820697:"IFCVIBRATIONDAMPER",840318589:"IFCVEHICLE",1953115116:"IFCTRANSPORTATIONDEVICE",618700268:"IFCTRACKELEMENTTYPE",2281632017:"IFCTENDONCONDUITTYPE",3663046924:"IFCTENDONCONDUIT",42703149:"IFCSINESPIRAL",1894708472:"IFCSIGNALTYPE",3599934289:"IFCSIGNTYPE",33720170:"IFCSIGN",1027922057:"IFCSEVENTHORDERPOLYNOMIALSPIRAL",544395925:"IFCSEGMENTEDREFERENCECURVE",3649235739:"IFCSECONDORDERPOLYNOMIALSPIRAL",550521510:"IFCROADPART",146592293:"IFCROAD",3818125796:"IFCRELADHERESTOELEMENT",4021432810:"IFCREFERENT",1891881377:"IFCRAILWAYPART",3992365140:"IFCRAILWAY",1763565496:"IFCRAILTYPE",1946335990:"IFCPOSITIONINGELEMENT",514975943:"IFCPAVEMENTTYPE",506776471:"IFCNAVIGATIONELEMENTTYPE",710110818:"IFCMOORINGDEVICETYPE",1950438474:"IFCMOBILETELECOMMUNICATIONSAPPLIANCETYPE",976884017:"IFCMARINEPART",525669439:"IFCMARINEFACILITY",1770583370:"IFCLIQUIDTERMINALTYPE",2176059722:"IFCLINEARELEMENT",679976338:"IFCKERBTYPE",3948183225:"IFCIMPACTPROTECTIONDEVICETYPE",2568555532:"IFCIMPACTPROTECTIONDEVICE",2898700619:"IFCGRADIENTCURVE",1594536857:"IFCGEOTECHNICALSTRATUM",4230923436:"IFCGEOTECHNICALELEMENT",4228831410:"IFCFACILITYPARTCOMMON",1310830890:"IFCFACILITYPART",24185140:"IFCFACILITY",4234616927:"IFCDIRECTRIXDERIVEDREFERENCESWEPTAREASOLID",1306400036:"IFCDEEPFOUNDATIONTYPE",4189326743:"IFCCOURSETYPE",2000195564:"IFCCOSINESPIRAL",3497074424:"IFCCLOTHOID",1626504194:"IFCBUILTELEMENTTYPE",3651464721:"IFCVEHICLETYPE",1229763772:"IFCTRIANGULATEDIRREGULARNETWORK",3665877780:"IFCTRANSPORTATIONDEVICETYPE",782932809:"IFCTHIRDORDERPOLYNOMIALSPIRAL",2735484536:"IFCSPIRAL",1356537516:"IFCSECTIONEDSURFACE",1290935644:"IFCSECTIONEDSOLIDHORIZONTAL",1862484736:"IFCSECTIONEDSOLID",1441486842:"IFCRELPOSITIONS",1033248425:"IFCRELASSOCIATESPROFILEDEF",3381221214:"IFCPOLYNOMIALCURVE",2485787929:"IFCOFFSETCURVEBYDISTANCES",590820931:"IFCOFFSETCURVE",3465909080:"IFCINDEXEDPOLYGONALTEXTUREMAP",593015953:"IFCDIRECTRIXCURVESWEPTAREASOLID",4212018352:"IFCCURVESEGMENT",3425423356:"IFCAXIS2PLACEMENTLINEAR",823603102:"IFCSEGMENT",2165702409:"IFCPOINTBYDISTANCEEXPRESSION",182550632:"IFCOPENCROSSPROFILEDEF",388784114:"IFCLINEARPLACEMENT",536804194:"IFCALIGNMENTHORIZONTALSEGMENT",3752311538:"IFCALIGNMENTCANTSEGMENT",1010789467:"IFCTEXTURECOORDINATEINDICESWITHVOIDS",222769930:"IFCTEXTURECOORDINATEINDICES",2691318326:"IFCQUANTITYNUMBER",3633395639:"IFCALIGNMENTVERTICALSEGMENT",2879124712:"IFCALIGNMENTPARAMETERSEGMENT",25142252:"IFCCONTROLLER",3087945054:"IFCALARM",4288193352:"IFCACTUATOR",630975310:"IFCUNITARYCONTROLELEMENT",4086658281:"IFCSENSOR",2295281155:"IFCPROTECTIVEDEVICETRIPPINGUNIT",182646315:"IFCFLOWINSTRUMENT",1426591983:"IFCFIRESUPPRESSIONTERMINAL",819412036:"IFCFILTER",3415622556:"IFCFAN",1003880860:"IFCELECTRICTIMECONTROL",402227799:"IFCELECTRICMOTOR",264262732:"IFCELECTRICGENERATOR",3310460725:"IFCELECTRICFLOWSTORAGEDEVICE",862014818:"IFCELECTRICDISTRIBUTIONBOARD",1904799276:"IFCELECTRICAPPLIANCE",1360408905:"IFCDUCTSILENCER",3518393246:"IFCDUCTSEGMENT",342316401:"IFCDUCTFITTING",562808652:"IFCDISTRIBUTIONCIRCUIT",4074379575:"IFCDAMPER",3640358203:"IFCCOOLINGTOWER",4136498852:"IFCCOOLEDBEAM",2272882330:"IFCCONDENSER",3571504051:"IFCCOMPRESSOR",3221913625:"IFCCOMMUNICATIONSAPPLIANCE",639361253:"IFCCOIL",3902619387:"IFCCHILLER",4217484030:"IFCCABLESEGMENT",1051757585:"IFCCABLEFITTING",3758799889:"IFCCABLECARRIERSEGMENT",635142910:"IFCCABLECARRIERFITTING",2938176219:"IFCBURNER",32344328:"IFCBOILER",2906023776:"IFCBEAMSTANDARDCASE",277319702:"IFCAUDIOVISUALAPPLIANCE",2056796094:"IFCAIRTOAIRHEATRECOVERY",177149247:"IFCAIRTERMINALBOX",1634111441:"IFCAIRTERMINAL",486154966:"IFCWINDOWSTANDARDCASE",4237592921:"IFCWASTETERMINAL",4156078855:"IFCWALLELEMENTEDCASE",4207607924:"IFCVALVE",4292641817:"IFCUNITARYEQUIPMENT",3179687236:"IFCUNITARYCONTROLELEMENTTYPE",3026737570:"IFCTUBEBUNDLE",3825984169:"IFCTRANSFORMER",812556717:"IFCTANK",1162798199:"IFCSWITCHINGDEVICE",385403989:"IFCSTRUCTURALLOADCASE",1404847402:"IFCSTACKTERMINAL",1999602285:"IFCSPACEHEATER",3420628829:"IFCSOLARDEVICE",3027962421:"IFCSLABSTANDARDCASE",3127900445:"IFCSLABELEMENTEDCASE",1329646415:"IFCSHADINGDEVICE",3053780830:"IFCSANITARYTERMINAL",2572171363:"IFCREINFORCINGBARTYPE",1232101972:"IFCRATIONALBSPLINECURVEWITHKNOTS",90941305:"IFCPUMP",655969474:"IFCPROTECTIVEDEVICETRIPPINGUNITTYPE",738039164:"IFCPROTECTIVEDEVICE",1156407060:"IFCPLATESTANDARDCASE",3612865200:"IFCPIPESEGMENT",310824031:"IFCPIPEFITTING",3694346114:"IFCOUTLET",144952367:"IFCOUTERBOUNDARYCURVE",2474470126:"IFCMOTORCONNECTION",1911478936:"IFCMEMBERSTANDARDCASE",1437502449:"IFCMEDICALDEVICE",629592764:"IFCLIGHTFIXTURE",76236018:"IFCLAMP",2176052936:"IFCJUNCTIONBOX",4175244083:"IFCINTERCEPTOR",2068733104:"IFCHUMIDIFIER",3319311131:"IFCHEATEXCHANGER",2188021234:"IFCFLOWMETER",1209101575:"IFCEXTERNALSPATIALELEMENT",484807127:"IFCEVAPORATOR",3747195512:"IFCEVAPORATIVECOOLER",2814081492:"IFCENGINE",2417008758:"IFCELECTRICDISTRIBUTIONBOARDTYPE",3242481149:"IFCDOORSTANDARDCASE",3205830791:"IFCDISTRIBUTIONSYSTEM",400855858:"IFCCOMMUNICATIONSAPPLIANCETYPE",905975707:"IFCCOLUMNSTANDARDCASE",1677625105:"IFCCIVILELEMENT",3296154744:"IFCCHIMNEY",2674252688:"IFCCABLEFITTINGTYPE",2188180465:"IFCBURNERTYPE",1177604601:"IFCBUILDINGSYSTEM",39481116:"IFCBUILDINGELEMENTPARTTYPE",1136057603:"IFCBOUNDARYCURVE",2461110595:"IFCBSPLINECURVEWITHKNOTS",1532957894:"IFCAUDIOVISUALAPPLIANCETYPE",4088093105:"IFCWORKCALENDAR",4009809668:"IFCWINDOWTYPE",926996030:"IFCVOIDINGFEATURE",2391383451:"IFCVIBRATIONISOLATOR",2415094496:"IFCTENDONTYPE",3081323446:"IFCTENDONANCHORTYPE",413509423:"IFCSYSTEMFURNITUREELEMENT",3101698114:"IFCSURFACEFEATURE",3657597509:"IFCSTRUCTURALSURFACEACTION",2757150158:"IFCSTRUCTURALCURVEREACTION",1004757350:"IFCSTRUCTURALCURVEACTION",338393293:"IFCSTAIRTYPE",1072016465:"IFCSOLARDEVICETYPE",4074543187:"IFCSHADINGDEVICETYPE",2157484638:"IFCSEAMCURVE",2781568857:"IFCROOFTYPE",2310774935:"IFCREINFORCINGMESHTYPE",964333572:"IFCREINFORCINGELEMENTTYPE",683857671:"IFCRATIONALBSPLINESURFACEWITHKNOTS",1469900589:"IFCRAMPTYPE",2839578677:"IFCPOLYGONALFACESET",1158309216:"IFCPILETYPE",3079942009:"IFCOPENINGSTANDARDCASE",1114901282:"IFCMEDICALDEVICETYPE",3113134337:"IFCINTERSECTIONCURVE",3946677679:"IFCINTERCEPTORTYPE",2571569899:"IFCINDEXEDPOLYCURVE",3493046030:"IFCGEOGRAPHICELEMENT",1509553395:"IFCFURNITURE",1893162501:"IFCFOOTINGTYPE",2853485674:"IFCEXTERNALSPATIALSTRUCTUREELEMENT",4148101412:"IFCEVENT",132023988:"IFCENGINETYPE",2397081782:"IFCELEMENTASSEMBLYTYPE",2323601079:"IFCDOORTYPE",1213902940:"IFCCYLINDRICALSURFACE",1525564444:"IFCCONSTRUCTIONPRODUCTRESOURCETYPE",4105962743:"IFCCONSTRUCTIONMATERIALRESOURCETYPE",2185764099:"IFCCONSTRUCTIONEQUIPMENTRESOURCETYPE",15328376:"IFCCOMPOSITECURVEONSURFACE",3875453745:"IFCCOMPLEXPROPERTYTEMPLATE",3893394355:"IFCCIVILELEMENTTYPE",2197970202:"IFCCHIMNEYTYPE",167062518:"IFCBSPLINESURFACEWITHKNOTS",2887950389:"IFCBSPLINESURFACE",2603310189:"IFCADVANCEDBREPWITHVOIDS",1635779807:"IFCADVANCEDBREP",2916149573:"IFCTRIANGULATEDFACESET",1935646853:"IFCTOROIDALSURFACE",2387106220:"IFCTESSELLATEDFACESET",3206491090:"IFCTASKTYPE",699246055:"IFCSURFACECURVE",4095615324:"IFCSUBCONTRACTRESOURCETYPE",603775116:"IFCSTRUCTURALSURFACEREACTION",4015995234:"IFCSPHERICALSURFACE",2481509218:"IFCSPATIALZONETYPE",463610769:"IFCSPATIALZONE",710998568:"IFCSPATIALELEMENTTYPE",1412071761:"IFCSPATIALELEMENT",3663146110:"IFCSIMPLEPROPERTYTEMPLATE",3243963512:"IFCREVOLVEDAREASOLIDTAPERED",816062949:"IFCREPARAMETRISEDCOMPOSITECURVESEGMENT",1521410863:"IFCRELSPACEBOUNDARY2NDLEVEL",3523091289:"IFCRELSPACEBOUNDARY1STLEVEL",427948657:"IFCRELINTERFERESELEMENTS",307848117:"IFCRELDEFINESBYTEMPLATE",1462361463:"IFCRELDEFINESBYOBJECT",2565941209:"IFCRELDECLARES",1027710054:"IFCRELASSIGNSTOGROUPBYFACTOR",3521284610:"IFCPROPERTYTEMPLATE",492091185:"IFCPROPERTYSETTEMPLATE",653396225:"IFCPROJECTLIBRARY",569719735:"IFCPROCEDURETYPE",3967405729:"IFCPREDEFINEDPROPERTYSET",1682466193:"IFCPCURVE",428585644:"IFCLABORRESOURCETYPE",2294589976:"IFCINDEXEDPOLYGONALFACEWITHVOIDS",178912537:"IFCINDEXEDPOLYGONALFACE",4095422895:"IFCGEOGRAPHICELEMENTTYPE",2652556860:"IFCFIXEDREFERENCESWEPTAREASOLID",2804161546:"IFCEXTRUDEDAREASOLIDTAPERED",4024345920:"IFCEVENTTYPE",2629017746:"IFCCURVEBOUNDEDSURFACE",1815067380:"IFCCREWRESOURCETYPE",3419103109:"IFCCONTEXT",2574617495:"IFCCONSTRUCTIONRESOURCETYPE",2059837836:"IFCCARTESIANPOINTLIST3D",1675464909:"IFCCARTESIANPOINTLIST2D",574549367:"IFCCARTESIANPOINTLIST",3406155212:"IFCADVANCEDFACE",3698973494:"IFCTYPERESOURCE",3736923433:"IFCTYPEPROCESS",901063453:"IFCTESSELLATEDITEM",1096409881:"IFCSWEPTDISKSOLIDPOLYGONAL",1042787934:"IFCRESOURCETIME",1608871552:"IFCRESOURCECONSTRAINTRELATIONSHIP",2943643501:"IFCRESOURCEAPPROVALRELATIONSHIP",2090586900:"IFCQUANTITYSET",1482703590:"IFCPROPERTYTEMPLATEDEFINITION",3778827333:"IFCPREDEFINEDPROPERTIES",2998442950:"IFCMIRROREDPROFILEDEF",853536259:"IFCMATERIALRELATIONSHIP",3404854881:"IFCMATERIALPROFILESETUSAGETAPERING",3079605661:"IFCMATERIALPROFILESETUSAGE",2852063980:"IFCMATERIALCONSTITUENTSET",3708119e3:"IFCMATERIALCONSTITUENT",1585845231:"IFCLAGTIME",2133299955:"IFCINDEXEDTRIANGLETEXTUREMAP",1437953363:"IFCINDEXEDTEXTUREMAP",3570813810:"IFCINDEXEDCOLOURMAP",1437805879:"IFCEXTERNALREFERENCERELATIONSHIP",297599258:"IFCEXTENDEDPROPERTIES",211053100:"IFCEVENTTIME",2713554722:"IFCCONVERSIONBASEDUNITWITHOFFSET",3285139300:"IFCCOLOURRGBLIST",1236880293:"IFCWORKTIME",1199560280:"IFCTIMEPERIOD",3611470254:"IFCTEXTUREVERTEXLIST",2771591690:"IFCTASKTIMERECURRING",1549132990:"IFCTASKTIME",2043862942:"IFCTABLECOLUMN",2934153892:"IFCSURFACEREINFORCEMENTAREA",609421318:"IFCSTRUCTURALLOADORRESULT",3478079324:"IFCSTRUCTURALLOADCONFIGURATION",1054537805:"IFCSCHEDULINGTIME",2439245199:"IFCRESOURCELEVELRELATIONSHIP",2433181523:"IFCREFERENCE",3915482550:"IFCRECURRENCEPATTERN",986844984:"IFCPROPERTYABSTRACTION",3843373140:"IFCPROJECTEDCRS",677532197:"IFCPRESENTATIONITEM",1507914824:"IFCMATERIALUSAGEDEFINITION",552965576:"IFCMATERIALPROFILEWITHOFFSETS",164193824:"IFCMATERIALPROFILESET",2235152071:"IFCMATERIALPROFILE",1847252529:"IFCMATERIALLAYERWITHOFFSETS",760658860:"IFCMATERIALDEFINITION",3057273783:"IFCMAPCONVERSION",4294318154:"IFCEXTERNALINFORMATION",1466758467:"IFCCOORDINATEREFERENCESYSTEM",1785450214:"IFCCOORDINATEOPERATION",775493141:"IFCCONNECTIONVOLUMEGEOMETRY",979691226:"IFCREINFORCINGBAR",3700593921:"IFCELECTRICDISTRIBUTIONPOINT",1062813311:"IFCDISTRIBUTIONCONTROLELEMENT",1052013943:"IFCDISTRIBUTIONCHAMBERELEMENT",578613899:"IFCCONTROLLERTYPE",2454782716:"IFCCHAMFEREDGEFEATURE",753842376:"IFCBEAM",3001207471:"IFCALARMTYPE",2874132201:"IFCACTUATORTYPE",3304561284:"IFCWINDOW",3512223829:"IFCWALLSTANDARDCASE",2391406946:"IFCWALL",3313531582:"IFCVIBRATIONISOLATORTYPE",2347447852:"IFCTENDONANCHOR",3824725483:"IFCTENDON",2515109513:"IFCSTRUCTURALANALYSISMODEL",4252922144:"IFCSTAIRFLIGHT",331165859:"IFCSTAIR",1529196076:"IFCSLAB",1783015770:"IFCSENSORTYPE",1376911519:"IFCROUNDEDEDGEFEATURE",2016517767:"IFCROOF",2320036040:"IFCREINFORCINGMESH",3027567501:"IFCREINFORCINGELEMENT",3055160366:"IFCRATIONALBEZIERCURVE",3283111854:"IFCRAMPFLIGHT",3024970846:"IFCRAMP",2262370178:"IFCRAILING",3171933400:"IFCPLATE",1687234759:"IFCPILE",1073191201:"IFCMEMBER",900683007:"IFCFOOTING",3508470533:"IFCFLOWTREATMENTDEVICE",2223149337:"IFCFLOWTERMINAL",707683696:"IFCFLOWSTORAGEDEVICE",987401354:"IFCFLOWSEGMENT",3132237377:"IFCFLOWMOVINGDEVICE",4037862832:"IFCFLOWINSTRUMENTTYPE",4278956645:"IFCFLOWFITTING",2058353004:"IFCFLOWCONTROLLER",4222183408:"IFCFIRESUPPRESSIONTERMINALTYPE",1810631287:"IFCFILTERTYPE",346874300:"IFCFANTYPE",1658829314:"IFCENERGYCONVERSIONDEVICE",857184966:"IFCELECTRICALELEMENT",1634875225:"IFCELECTRICALCIRCUIT",712377611:"IFCELECTRICTIMECONTROLTYPE",1217240411:"IFCELECTRICMOTORTYPE",1365060375:"IFCELECTRICHEATERTYPE",1534661035:"IFCELECTRICGENERATORTYPE",3277789161:"IFCELECTRICFLOWSTORAGEDEVICETYPE",663422040:"IFCELECTRICAPPLIANCETYPE",855621170:"IFCEDGEFEATURE",2030761528:"IFCDUCTSILENCERTYPE",3760055223:"IFCDUCTSEGMENTTYPE",869906466:"IFCDUCTFITTINGTYPE",395920057:"IFCDOOR",3041715199:"IFCDISTRIBUTIONPORT",3040386961:"IFCDISTRIBUTIONFLOWELEMENT",1945004755:"IFCDISTRIBUTIONELEMENT",2063403501:"IFCDISTRIBUTIONCONTROLELEMENTTYPE",1599208980:"IFCDISTRIBUTIONCHAMBERELEMENTTYPE",2635815018:"IFCDISCRETEACCESSORYTYPE",1335981549:"IFCDISCRETEACCESSORY",4147604152:"IFCDIAMETERDIMENSION",3961806047:"IFCDAMPERTYPE",3495092785:"IFCCURTAINWALL",1973544240:"IFCCOVERING",2954562838:"IFCCOOLINGTOWERTYPE",335055490:"IFCCOOLEDBEAMTYPE",488727124:"IFCCONSTRUCTIONPRODUCTRESOURCE",1060000209:"IFCCONSTRUCTIONMATERIALRESOURCE",3898045240:"IFCCONSTRUCTIONEQUIPMENTRESOURCE",1163958913:"IFCCONDITIONCRITERION",2188551683:"IFCCONDITION",2816379211:"IFCCONDENSERTYPE",3850581409:"IFCCOMPRESSORTYPE",843113511:"IFCCOLUMN",2301859152:"IFCCOILTYPE",2611217952:"IFCCIRCLE",2951183804:"IFCCHILLERTYPE",1285652485:"IFCCABLESEGMENTTYPE",3293546465:"IFCCABLECARRIERSEGMENTTYPE",395041908:"IFCCABLECARRIERFITTINGTYPE",1909888760:"IFCBUILDINGELEMENTPROXYTYPE",1095909175:"IFCBUILDINGELEMENTPROXY",2979338954:"IFCBUILDINGELEMENTPART",52481810:"IFCBUILDINGELEMENTCOMPONENT",3299480353:"IFCBUILDINGELEMENT",231477066:"IFCBOILERTYPE",1916977116:"IFCBEZIERCURVE",819618141:"IFCBEAMTYPE",1967976161:"IFCBSPLINECURVE",3460190687:"IFCASSET",2470393545:"IFCANGULARDIMENSION",1871374353:"IFCAIRTOAIRHEATRECOVERYTYPE",3352864051:"IFCAIRTERMINALTYPE",1411407467:"IFCAIRTERMINALBOXTYPE",3821786052:"IFCACTIONREQUEST",1213861670:"IFC2DCOMPOSITECURVE",1033361043:"IFCZONE",3342526732:"IFCWORKSCHEDULE",4218914973:"IFCWORKPLAN",1028945134:"IFCWORKCONTROL",1133259667:"IFCWASTETERMINALTYPE",1898987631:"IFCWALLTYPE",2769231204:"IFCVIRTUALELEMENT",728799441:"IFCVALVETYPE",1911125066:"IFCUNITARYEQUIPMENTTYPE",1600972822:"IFCTUBEBUNDLETYPE",3593883385:"IFCTRIMMEDCURVE",1620046519:"IFCTRANSPORTELEMENT",1692211062:"IFCTRANSFORMERTYPE",1637806684:"IFCTIMESERIESSCHEDULE",5716631:"IFCTANKTYPE",2254336722:"IFCSYSTEM",2315554128:"IFCSWITCHINGDEVICETYPE",148013059:"IFCSUBCONTRACTRESOURCE",1975003073:"IFCSTRUCTURALSURFACECONNECTION",2986769608:"IFCSTRUCTURALRESULTGROUP",1235345126:"IFCSTRUCTURALPOINTREACTION",734778138:"IFCSTRUCTURALPOINTCONNECTION",2082059205:"IFCSTRUCTURALPOINTACTION",3987759626:"IFCSTRUCTURALPLANARACTIONVARYING",1621171031:"IFCSTRUCTURALPLANARACTION",1252848954:"IFCSTRUCTURALLOADGROUP",1721250024:"IFCSTRUCTURALLINEARACTIONVARYING",1807405624:"IFCSTRUCTURALLINEARACTION",2445595289:"IFCSTRUCTURALCURVEMEMBERVARYING",214636428:"IFCSTRUCTURALCURVEMEMBER",4243806635:"IFCSTRUCTURALCURVECONNECTION",1179482911:"IFCSTRUCTURALCONNECTION",682877961:"IFCSTRUCTURALACTION",1039846685:"IFCSTAIRFLIGHTTYPE",3112655638:"IFCSTACKTERMINALTYPE",3812236995:"IFCSPACETYPE",652456506:"IFCSPACEPROGRAM",1305183839:"IFCSPACEHEATERTYPE",3856911033:"IFCSPACE",2533589738:"IFCSLABTYPE",4097777520:"IFCSITE",4105383287:"IFCSERVICELIFE",3517283431:"IFCSCHEDULETIMECONTROL",1768891740:"IFCSANITARYTERMINALTYPE",2863920197:"IFCRELASSIGNSTASKS",160246688:"IFCRELAGGREGATES",2324767716:"IFCRAMPFLIGHTTYPE",2893384427:"IFCRAILINGTYPE",3248260540:"IFCRADIUSDIMENSION",2250791053:"IFCPUMPTYPE",1842657554:"IFCPROTECTIVEDEVICETYPE",3651124850:"IFCPROJECTIONELEMENT",3642467123:"IFCPROJECTORDERRECORD",2904328755:"IFCPROJECTORDER",2744685151:"IFCPROCEDURE",3740093272:"IFCPORT",3724593414:"IFCPOLYLINE",4017108033:"IFCPLATETYPE",4231323485:"IFCPIPESEGMENTTYPE",804291784:"IFCPIPEFITTINGTYPE",3327091369:"IFCPERMIT",2382730787:"IFCPERFORMANCEHISTORY",2837617999:"IFCOUTLETTYPE",3425660407:"IFCORDERACTION",3588315303:"IFCOPENINGELEMENT",4143007308:"IFCOCCUPANT",1916936684:"IFCMOVE",977012517:"IFCMOTORCONNECTIONTYPE",3181161470:"IFCMEMBERTYPE",2108223431:"IFCMECHANICALFASTENERTYPE",377706215:"IFCMECHANICALFASTENER",2506943328:"IFCLINEARDIMENSION",1161773419:"IFCLIGHTFIXTURETYPE",1051575348:"IFCLAMPTYPE",3827777499:"IFCLABORRESOURCE",4288270099:"IFCJUNCTIONBOXTYPE",2391368822:"IFCINVENTORY",1806887404:"IFCHUMIDIFIERTYPE",1251058090:"IFCHEATEXCHANGERTYPE",2706460486:"IFCGROUP",3009204131:"IFCGRID",200128114:"IFCGASTERMINALTYPE",814719939:"IFCFURNITURESTANDARD",263784265:"IFCFURNISHINGELEMENT",3009222698:"IFCFLOWTREATMENTDEVICETYPE",2297155007:"IFCFLOWTERMINALTYPE",1339347760:"IFCFLOWSTORAGEDEVICETYPE",1834744321:"IFCFLOWSEGMENTTYPE",1482959167:"IFCFLOWMOVINGDEVICETYPE",3815607619:"IFCFLOWMETERTYPE",3198132628:"IFCFLOWFITTINGTYPE",3907093117:"IFCFLOWCONTROLLERTYPE",1287392070:"IFCFEATUREELEMENTSUBTRACTION",2143335405:"IFCFEATUREELEMENTADDITION",2827207264:"IFCFEATUREELEMENT",2489546625:"IFCFASTENERTYPE",647756555:"IFCFASTENER",3737207727:"IFCFACETEDBREPWITHVOIDS",807026263:"IFCFACETEDBREP",3390157468:"IFCEVAPORATORTYPE",3174744832:"IFCEVAPORATIVECOOLERTYPE",3272907226:"IFCEQUIPMENTSTANDARD",1962604670:"IFCEQUIPMENTELEMENT",2107101300:"IFCENERGYCONVERSIONDEVICETYPE",1704287377:"IFCELLIPSE",2590856083:"IFCELEMENTCOMPONENTTYPE",1623761950:"IFCELEMENTCOMPONENT",4123344466:"IFCELEMENTASSEMBLY",1758889154:"IFCELEMENT",360485395:"IFCELECTRICALBASEPROPERTIES",3849074793:"IFCDISTRIBUTIONFLOWELEMENTTYPE",3256556792:"IFCDISTRIBUTIONELEMENTTYPE",681481545:"IFCDIMENSIONCURVEDIRECTEDCALLOUT",1457835157:"IFCCURTAINWALLTYPE",3295246426:"IFCCREWRESOURCE",1916426348:"IFCCOVERINGTYPE",1419761937:"IFCCOSTSCHEDULE",3895139033:"IFCCOSTITEM",3293443760:"IFCCONTROL",2559216714:"IFCCONSTRUCTIONRESOURCE",2510884976:"IFCCONIC",3732776249:"IFCCOMPOSITECURVE",300633059:"IFCCOLUMNTYPE",2937912522:"IFCCIRCLEHOLLOWPROFILEDEF",3124254112:"IFCBUILDINGSTOREY",1950629157:"IFCBUILDINGELEMENTTYPE",4031249490:"IFCBUILDING",1260505505:"IFCBOUNDEDCURVE",3649129432:"IFCBOOLEANCLIPPINGRESULT",1334484129:"IFCBLOCK",3207858831:"IFCASYMMETRICISHAPEPROFILEDEF",1674181508:"IFCANNOTATION",2296667514:"IFCACTOR",2097647324:"IFCTRANSPORTELEMENTTYPE",3473067441:"IFCTASK",1580310250:"IFCSYSTEMFURNITUREELEMENTTYPE",4124788165:"IFCSURFACEOFREVOLUTION",2809605785:"IFCSURFACEOFLINEAREXTRUSION",2028607225:"IFCSURFACECURVESWEPTAREASOLID",4070609034:"IFCSTRUCTUREDDIMENSIONCALLOUT",2218152070:"IFCSTRUCTURALSURFACEMEMBERVARYING",3979015343:"IFCSTRUCTURALSURFACEMEMBER",3689010777:"IFCSTRUCTURALREACTION",530289379:"IFCSTRUCTURALMEMBER",3136571912:"IFCSTRUCTURALITEM",3544373492:"IFCSTRUCTURALACTIVITY",451544542:"IFCSPHERE",3893378262:"IFCSPATIALSTRUCTUREELEMENTTYPE",2706606064:"IFCSPATIALSTRUCTUREELEMENT",3626867408:"IFCRIGHTCIRCULARCYLINDER",4158566097:"IFCRIGHTCIRCULARCONE",1856042241:"IFCREVOLVEDAREASOLID",2914609552:"IFCRESOURCE",1401173127:"IFCRELVOIDSELEMENT",3451746338:"IFCRELSPACEBOUNDARY",366585022:"IFCRELSERVICESBUILDINGS",4122056220:"IFCRELSEQUENCE",1058617721:"IFCRELSCHEDULESCOSTITEMS",1245217292:"IFCRELREFERENCEDINSPATIALSTRUCTURE",750771296:"IFCRELPROJECTSELEMENT",202636808:"IFCRELOVERRIDESPROPERTIES",2051452291:"IFCRELOCCUPIESSPACES",3268803585:"IFCRELNESTS",4189434867:"IFCRELINTERACTIONREQUIREMENTS",279856033:"IFCRELFLOWCONTROLELEMENTS",3940055652:"IFCRELFILLSELEMENT",781010003:"IFCRELDEFINESBYTYPE",4186316022:"IFCRELDEFINESBYPROPERTIES",693640335:"IFCRELDEFINES",2551354335:"IFCRELDECOMPOSES",2802773753:"IFCRELCOVERSSPACES",886880790:"IFCRELCOVERSBLDGELEMENTS",3242617779:"IFCRELCONTAINEDINSPATIALSTRUCTURE",3678494232:"IFCRELCONNECTSWITHREALIZINGELEMENTS",504942748:"IFCRELCONNECTSWITHECCENTRICITY",1638771189:"IFCRELCONNECTSSTRUCTURALMEMBER",3912681535:"IFCRELCONNECTSSTRUCTURALELEMENT",2127690289:"IFCRELCONNECTSSTRUCTURALACTIVITY",3190031847:"IFCRELCONNECTSPORTS",4201705270:"IFCRELCONNECTSPORTTOELEMENT",3945020480:"IFCRELCONNECTSPATHELEMENTS",1204542856:"IFCRELCONNECTSELEMENTS",826625072:"IFCRELCONNECTS",2851387026:"IFCRELASSOCIATESPROFILEPROPERTIES",2655215786:"IFCRELASSOCIATESMATERIAL",3840914261:"IFCRELASSOCIATESLIBRARY",982818633:"IFCRELASSOCIATESDOCUMENT",2728634034:"IFCRELASSOCIATESCONSTRAINT",919958153:"IFCRELASSOCIATESCLASSIFICATION",4095574036:"IFCRELASSOCIATESAPPROVAL",1327628568:"IFCRELASSOCIATESAPPLIEDVALUE",1865459582:"IFCRELASSOCIATES",205026976:"IFCRELASSIGNSTORESOURCE",3372526763:"IFCRELASSIGNSTOPROJECTORDER",2857406711:"IFCRELASSIGNSTOPRODUCT",4278684876:"IFCRELASSIGNSTOPROCESS",1307041759:"IFCRELASSIGNSTOGROUP",2495723537:"IFCRELASSIGNSTOCONTROL",1683148259:"IFCRELASSIGNSTOACTOR",3939117080:"IFCRELASSIGNS",3454111270:"IFCRECTANGULARTRIMMEDSURFACE",2798486643:"IFCRECTANGULARPYRAMID",2770003689:"IFCRECTANGLEHOLLOWPROFILEDEF",3219374653:"IFCPROXY",1451395588:"IFCPROPERTYSET",4194566429:"IFCPROJECTIONCURVE",103090709:"IFCPROJECT",4208778838:"IFCPRODUCT",2945172077:"IFCPROCESS",220341763:"IFCPLANE",603570806:"IFCPLANARBOX",3566463478:"IFCPERMEABLECOVERINGPROPERTIES",3505215534:"IFCOFFSETCURVE3D",3388369263:"IFCOFFSETCURVE2D",3888040117:"IFCOBJECT",1425443689:"IFCMANIFOLDSOLIDBREP",1281925730:"IFCLINE",572779678:"IFCLSHAPEPROFILEDEF",1484403080:"IFCISHAPEPROFILEDEF",987898635:"IFCGEOMETRICCURVESET",1268542332:"IFCFURNITURETYPE",4238390223:"IFCFURNISHINGELEMENTTYPE",3455213021:"IFCFLUIDFLOWPROPERTIES",315944413:"IFCFILLAREASTYLETILES",4203026998:"IFCFILLAREASTYLETILESYMBOLWITHSTYLE",374418227:"IFCFILLAREASTYLEHATCHING",2047409740:"IFCFACEBASEDSURFACEMODEL",477187591:"IFCEXTRUDEDAREASOLID",80994333:"IFCENERGYPROPERTIES",2835456948:"IFCELLIPSEPROFILEDEF",2777663545:"IFCELEMENTARYSURFACE",339256511:"IFCELEMENTTYPE",1883228015:"IFCELEMENTQUANTITY",1472233963:"IFCEDGELOOP",4006246654:"IFCDRAUGHTINGPREDEFINEDCURVEFONT",445594917:"IFCDRAUGHTINGPREDEFINEDCOLOUR",3073041342:"IFCDRAUGHTINGCALLOUT",526551008:"IFCDOORSTYLE",1714330368:"IFCDOORPANELPROPERTIES",2963535650:"IFCDOORLININGPROPERTIES",32440307:"IFCDIRECTION",4054601972:"IFCDIMENSIONCURVETERMINATOR",606661476:"IFCDIMENSIONCURVE",693772133:"IFCDEFINEDSYMBOL",2827736869:"IFCCURVEBOUNDEDPLANE",2601014836:"IFCCURVE",2147822146:"IFCCSGSOLID",2506170314:"IFCCSGPRIMITIVE3D",194851669:"IFCCRANERAILFSHAPEPROFILEDEF",4133800736:"IFCCRANERAILASHAPEPROFILEDEF",2485617015:"IFCCOMPOSITECURVESEGMENT",2205249479:"IFCCLOSEDSHELL",1383045692:"IFCCIRCLEPROFILEDEF",1416205885:"IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORM",3331915920:"IFCCARTESIANTRANSFORMATIONOPERATOR3D",3486308946:"IFCCARTESIANTRANSFORMATIONOPERATOR2DNONUNIFORM",3749851601:"IFCCARTESIANTRANSFORMATIONOPERATOR2D",59481748:"IFCCARTESIANTRANSFORMATIONOPERATOR",1123145078:"IFCCARTESIANPOINT",2898889636:"IFCCSHAPEPROFILEDEF",2713105998:"IFCBOXEDHALFSPACE",2581212453:"IFCBOUNDINGBOX",4182860854:"IFCBOUNDEDSURFACE",2736907675:"IFCBOOLEANRESULT",2740243338:"IFCAXIS2PLACEMENT3D",3125803723:"IFCAXIS2PLACEMENT2D",4261334040:"IFCAXIS1PLACEMENT",1302238472:"IFCANNOTATIONSURFACE",2265737646:"IFCANNOTATIONFILLAREAOCCURRENCE",669184980:"IFCANNOTATIONFILLAREA",3288037868:"IFCANNOTATIONCURVEOCCURRENCE",2543172580:"IFCZSHAPEPROFILEDEF",1299126871:"IFCWINDOWSTYLE",512836454:"IFCWINDOWPANELPROPERTIES",336235671:"IFCWINDOWLININGPROPERTIES",2759199220:"IFCVERTEXLOOP",1417489154:"IFCVECTOR",427810014:"IFCUSHAPEPROFILEDEF",2347495698:"IFCTYPEPRODUCT",1628702193:"IFCTYPEOBJECT",1345879162:"IFCTWODIRECTIONREPEATFACTOR",2715220739:"IFCTRAPEZIUMPROFILEDEF",3124975700:"IFCTEXTLITERALWITHEXTENT",4282788508:"IFCTEXTLITERAL",3028897424:"IFCTERMINATORSYMBOL",3071757647:"IFCTSHAPEPROFILEDEF",230924584:"IFCSWEPTSURFACE",1260650574:"IFCSWEPTDISKSOLID",2247615214:"IFCSWEPTAREASOLID",1878645084:"IFCSURFACESTYLERENDERING",2513912981:"IFCSURFACE",2233826070:"IFCSUBEDGE",3653947884:"IFCSTRUCTURALSTEELPROFILEPROPERTIES",3843319758:"IFCSTRUCTURALPROFILEPROPERTIES",1190533807:"IFCSTRUCTURALLOADSINGLEFORCEWARPING",1597423693:"IFCSTRUCTURALLOADSINGLEFORCE",1973038258:"IFCSTRUCTURALLOADSINGLEDISPLACEMENTDISTORTION",2473145415:"IFCSTRUCTURALLOADSINGLEDISPLACEMENT",2668620305:"IFCSTRUCTURALLOADPLANARFORCE",1595516126:"IFCSTRUCTURALLOADLINEARFORCE",390701378:"IFCSPACETHERMALLOADPROPERTIES",1202362311:"IFCSOUNDVALUE",2485662743:"IFCSOUNDPROPERTIES",723233188:"IFCSOLIDMODEL",2609359061:"IFCSLIPPAGECONNECTIONCONDITION",4124623270:"IFCSHELLBASEDSURFACEMODEL",2411513650:"IFCSERVICELIFEFACTOR",1509187699:"IFCSECTIONEDSPINE",2778083089:"IFCROUNDEDRECTANGLEPROFILEDEF",478536968:"IFCRELATIONSHIP",3765753017:"IFCREINFORCEMENTDEFINITIONPROPERTIES",3413951693:"IFCREGULARTIMESERIES",3615266464:"IFCRECTANGLEPROFILEDEF",110355661:"IFCPROPERTYTABLEVALUE",3650150729:"IFCPROPERTYSINGLEVALUE",3357820518:"IFCPROPERTYSETDEFINITION",941946838:"IFCPROPERTYREFERENCEVALUE",2752243245:"IFCPROPERTYLISTVALUE",4166981789:"IFCPROPERTYENUMERATEDVALUE",1680319473:"IFCPROPERTYDEFINITION",871118103:"IFCPROPERTYBOUNDEDVALUE",673634403:"IFCPRODUCTDEFINITIONSHAPE",179317114:"IFCPREDEFINEDPOINTMARKERSYMBOL",433424934:"IFCPREDEFINEDDIMENSIONSYMBOL",2559016684:"IFCPREDEFINEDCURVEFONT",759155922:"IFCPREDEFINEDCOLOUR",2775532180:"IFCPOLYGONALBOUNDEDHALFSPACE",2924175390:"IFCPOLYLOOP",1423911732:"IFCPOINTONSURFACE",4022376103:"IFCPOINTONCURVE",2067069095:"IFCPOINT",1663979128:"IFCPLANAREXTENT",2004835150:"IFCPLACEMENT",597895409:"IFCPIXELTEXTURE",3021840470:"IFCPHYSICALCOMPLEXQUANTITY",2519244187:"IFCPATH",2529465313:"IFCPARAMETERIZEDPROFILEDEF",1029017970:"IFCORIENTEDEDGE",2665983363:"IFCOPENSHELL",2833995503:"IFCONEDIRECTIONREPEATFACTOR",219451334:"IFCOBJECTDEFINITION",1430189142:"IFCMECHANICALCONCRETEMATERIALPROPERTIES",2022407955:"IFCMATERIALDEFINITIONREPRESENTATION",2347385850:"IFCMAPPEDITEM",1008929658:"IFCLOOP",2624227202:"IFCLOCALPLACEMENT",3422422726:"IFCLIGHTSOURCESPOT",1520743889:"IFCLIGHTSOURCEPOSITIONAL",4266656042:"IFCLIGHTSOURCEGONIOMETRIC",2604431987:"IFCLIGHTSOURCEDIRECTIONAL",125510826:"IFCLIGHTSOURCEAMBIENT",1402838566:"IFCLIGHTSOURCE",3741457305:"IFCIRREGULARTIMESERIES",3905492369:"IFCIMAGETEXTURE",2445078500:"IFCHYGROSCOPICMATERIALPROPERTIES",812098782:"IFCHALFSPACESOLID",178086475:"IFCGRIDPLACEMENT",3590301190:"IFCGEOMETRICSET",4142052618:"IFCGEOMETRICREPRESENTATIONSUBCONTEXT",2453401579:"IFCGEOMETRICREPRESENTATIONITEM",3448662350:"IFCGEOMETRICREPRESENTATIONCONTEXT",1446786286:"IFCGENERALPROFILEPROPERTIES",803998398:"IFCGENERALMATERIALPROPERTIES",3857492461:"IFCFUELPROPERTIES",738692330:"IFCFILLAREASTYLE",4219587988:"IFCFAILURECONNECTIONCONDITION",3008276851:"IFCFACESURFACE",803316827:"IFCFACEOUTERBOUND",1809719519:"IFCFACEBOUND",2556980723:"IFCFACE",1860660968:"IFCEXTENDEDMATERIALPROPERTIES",476780140:"IFCEDGECURVE",3900360178:"IFCEDGE",4170525392:"IFCDRAUGHTINGPREDEFINEDTEXTFONT",3732053477:"IFCDOCUMENTREFERENCE",1694125774:"IFCDIMENSIONPAIR",2273265877:"IFCDIMENSIONCALLOUTRELATIONSHIP",3632507154:"IFCDERIVEDPROFILEDEF",3800577675:"IFCCURVESTYLE",2889183280:"IFCCONVERSIONBASEDUNIT",3050246964:"IFCCONTEXTDEPENDENTUNIT",45288368:"IFCCONNECTIONPOINTECCENTRICITY",1981873012:"IFCCONNECTIONCURVEGEOMETRY",370225590:"IFCCONNECTEDFACESET",1485152156:"IFCCOMPOSITEPROFILEDEF",2542286263:"IFCCOMPLEXPROPERTY",776857604:"IFCCOLOURRGB",647927063:"IFCCLASSIFICATIONREFERENCE",3150382593:"IFCCENTERLINEPROFILEDEF",616511568:"IFCBLOBTEXTURE",2705031697:"IFCARBITRARYPROFILEDEFWITHVOIDS",1310608509:"IFCARBITRARYOPENPROFILEDEF",3798115385:"IFCARBITRARYCLOSEDPROFILEDEF",2297822566:"IFCANNOTATIONTEXTOCCURRENCE",3612888222:"IFCANNOTATIONSYMBOLOCCURRENCE",962685235:"IFCANNOTATIONSURFACEOCCURRENCE",2442683028:"IFCANNOTATIONOCCURRENCE",1065908215:"IFCWATERPROPERTIES",891718957:"IFCVIRTUALGRIDINTERSECTION",1907098498:"IFCVERTEXPOINT",3304826586:"IFCVERTEXBASEDTEXTUREMAP",2799835756:"IFCVERTEX",180925521:"IFCUNITASSIGNMENT",1735638870:"IFCTOPOLOGYREPRESENTATION",1377556343:"IFCTOPOLOGICALREPRESENTATIONITEM",581633288:"IFCTIMESERIESVALUE",1718945513:"IFCTIMESERIESREFERENCERELATIONSHIP",3101149627:"IFCTIMESERIES",3317419933:"IFCTHERMALMATERIALPROPERTIES",1210645708:"IFCTEXTUREVERTEX",2552916305:"IFCTEXTUREMAP",1742049831:"IFCTEXTURECOORDINATEGENERATOR",280115917:"IFCTEXTURECOORDINATE",1484833681:"IFCTEXTSTYLEWITHBOXCHARACTERISTICS",1640371178:"IFCTEXTSTYLETEXTMODEL",2636378356:"IFCTEXTSTYLEFORDEFINEDFONT",1983826977:"IFCTEXTSTYLEFONTMODEL",1447204868:"IFCTEXTSTYLE",912023232:"IFCTELECOMADDRESS",531007025:"IFCTABLEROW",985171141:"IFCTABLE",1290481447:"IFCSYMBOLSTYLE",626085974:"IFCSURFACETEXTURE",1351298697:"IFCSURFACESTYLEWITHTEXTURES",846575682:"IFCSURFACESTYLESHADING",1607154358:"IFCSURFACESTYLEREFRACTION",3303107099:"IFCSURFACESTYLELIGHTING",1300840506:"IFCSURFACESTYLE",3049322572:"IFCSTYLEDREPRESENTATION",3958052878:"IFCSTYLEDITEM",2830218821:"IFCSTYLEMODEL",3408363356:"IFCSTRUCTURALLOADTEMPERATURE",2525727697:"IFCSTRUCTURALLOADSTATIC",2162789131:"IFCSTRUCTURALLOAD",2273995522:"IFCSTRUCTURALCONNECTIONCONDITION",3692461612:"IFCSIMPLEPROPERTY",4240577450:"IFCSHAPEREPRESENTATION",3982875396:"IFCSHAPEMODEL",867548509:"IFCSHAPEASPECT",4165799628:"IFCSECTIONREINFORCEMENTPROPERTIES",2042790032:"IFCSECTIONPROPERTIES",448429030:"IFCSIUNIT",2341007311:"IFCROOT",3679540991:"IFCRIBPLATEPROFILEPROPERTIES",1660063152:"IFCREPRESENTATIONMAP",3008791417:"IFCREPRESENTATIONITEM",3377609919:"IFCREPRESENTATIONCONTEXT",1076942058:"IFCREPRESENTATION",1222501353:"IFCRELAXATION",1580146022:"IFCREINFORCEMENTBARPROPERTIES",2692823254:"IFCREFERENCESVALUEDOCUMENT",825690147:"IFCQUANTITYWEIGHT",2405470396:"IFCQUANTITYVOLUME",3252649465:"IFCQUANTITYTIME",931644368:"IFCQUANTITYLENGTH",2093928680:"IFCQUANTITYCOUNT",2044713172:"IFCQUANTITYAREA",3710013099:"IFCPROPERTYENUMERATION",148025276:"IFCPROPERTYDEPENDENCYRELATIONSHIP",3896028662:"IFCPROPERTYCONSTRAINTRELATIONSHIP",2598011224:"IFCPROPERTY",2802850158:"IFCPROFILEPROPERTIES",3958567839:"IFCPROFILEDEF",2267347899:"IFCPRODUCTSOFCOMBUSTIONPROPERTIES",2095639259:"IFCPRODUCTREPRESENTATION",2417041796:"IFCPRESENTATIONSTYLEASSIGNMENT",3119450353:"IFCPRESENTATIONSTYLE",1304840413:"IFCPRESENTATIONLAYERWITHSTYLE",2022622350:"IFCPRESENTATIONLAYERASSIGNMENT",1775413392:"IFCPREDEFINEDTEXTFONT",3213052703:"IFCPREDEFINEDTERMINATORSYMBOL",990879717:"IFCPREDEFINEDSYMBOL",3727388367:"IFCPREDEFINEDITEM",3355820592:"IFCPOSTALADDRESS",2226359599:"IFCPHYSICALSIMPLEQUANTITY",2483315170:"IFCPHYSICALQUANTITY",101040310:"IFCPERSONANDORGANIZATION",2077209135:"IFCPERSON",1207048766:"IFCOWNERHISTORY",1411181986:"IFCORGANIZATIONRELATIONSHIP",4251960020:"IFCORGANIZATION",1227763645:"IFCOPTICALMATERIALPROPERTIES",2251480897:"IFCOBJECTIVE",3701648758:"IFCOBJECTPLACEMENT",1918398963:"IFCNAMEDUNIT",2706619895:"IFCMONETARYUNIT",3368373690:"IFCMETRIC",677618848:"IFCMECHANICALSTEELMATERIALPROPERTIES",4256014907:"IFCMECHANICALMATERIALPROPERTIES",2597039031:"IFCMEASUREWITHUNIT",3265635763:"IFCMATERIALPROPERTIES",2199411900:"IFCMATERIALLIST",1303795690:"IFCMATERIALLAYERSETUSAGE",3303938423:"IFCMATERIALLAYERSET",248100487:"IFCMATERIALLAYER",1847130766:"IFCMATERIALCLASSIFICATIONRELATIONSHIP",1838606355:"IFCMATERIAL",30780891:"IFCLOCALTIME",1566485204:"IFCLIGHTINTENSITYDISTRIBUTION",4162380809:"IFCLIGHTDISTRIBUTIONDATA",3452421091:"IFCLIBRARYREFERENCE",2655187982:"IFCLIBRARYINFORMATION",3020489413:"IFCIRREGULARTIMESERIESVALUE",852622518:"IFCGRIDAXIS",3548104201:"IFCEXTERNALLYDEFINEDTEXTFONT",3207319532:"IFCEXTERNALLYDEFINEDSYMBOL",1040185647:"IFCEXTERNALLYDEFINEDSURFACESTYLE",2242383968:"IFCEXTERNALLYDEFINEDHATCHSTYLE",3200245327:"IFCEXTERNALREFERENCE",1648886627:"IFCENVIRONMENTALIMPACTVALUE",3796139169:"IFCDRAUGHTINGCALLOUTRELATIONSHIP",770865208:"IFCDOCUMENTINFORMATIONRELATIONSHIP",1154170062:"IFCDOCUMENTINFORMATION",1376555844:"IFCDOCUMENTELECTRONICFORMAT",2949456006:"IFCDIMENSIONALEXPONENTS",1045800335:"IFCDERIVEDUNITELEMENT",1765591967:"IFCDERIVEDUNIT",1072939445:"IFCDATEANDTIME",3510044353:"IFCCURVESTYLEFONTPATTERN",2367409068:"IFCCURVESTYLEFONTANDSCALING",1105321065:"IFCCURVESTYLEFONT",539742890:"IFCCURRENCYRELATIONSHIP",602808272:"IFCCOSTVALUE",1065062679:"IFCCOORDINATEDUNIVERSALTIMEOFFSET",347226245:"IFCCONSTRAINTRELATIONSHIP",613356794:"IFCCONSTRAINTCLASSIFICATIONRELATIONSHIP",1658513725:"IFCCONSTRAINTAGGREGATIONRELATIONSHIP",1959218052:"IFCCONSTRAINT",2732653382:"IFCCONNECTIONSURFACEGEOMETRY",4257277454:"IFCCONNECTIONPORTGEOMETRY",2614616156:"IFCCONNECTIONPOINTGEOMETRY",2859738748:"IFCCONNECTIONGEOMETRY",3264961684:"IFCCOLOURSPECIFICATION",3639012971:"IFCCLASSIFICATIONNOTATIONFACET",938368621:"IFCCLASSIFICATIONNOTATION",1098599126:"IFCCLASSIFICATIONITEMRELATIONSHIP",1767535486:"IFCCLASSIFICATIONITEM",747523909:"IFCCLASSIFICATION",622194075:"IFCCALENDARDATE",2069777674:"IFCBOUNDARYNODECONDITIONWARPING",1387855156:"IFCBOUNDARYNODECONDITION",3367102660:"IFCBOUNDARYFACECONDITION",1560379544:"IFCBOUNDARYEDGECONDITION",4037036970:"IFCBOUNDARYCONDITION",3869604511:"IFCAPPROVALRELATIONSHIP",390851274:"IFCAPPROVALPROPERTYRELATIONSHIP",2080292479:"IFCAPPROVALACTORRELATIONSHIP",130549933:"IFCAPPROVAL",1110488051:"IFCAPPLIEDVALUERELATIONSHIP",411424972:"IFCAPPLIEDVALUE",639542469:"IFCAPPLICATION",618182010:"IFCADDRESS",3630933823:"IFCACTORROLE",599546466:"FILE_DESCRIPTION",1390159747:"FILE_NAME",1109904537:"FILE_SCHEMA"};class ge{static async getUnits(e){var r,o,a;const{IFCUNITASSIGNMENT:t}=K,s=await e.getAllPropertiesOfType(t);if(!s)return 1;const i=Object.keys(s),n=s[parseInt(i[0],10)];for(const l of n.Units){if(l.value===void 0||l.value===null)continue;const h=await e.getProperties(l.value);if(!h||!h.UnitType||!h.UnitType.value||h.UnitType.value!=="LENGTHUNIT")continue;let d=1,f=1;return h.Name.value==="METRE"&&(f=1),h.Name.value==="FOOT"&&(f=.3048),((r=h.Prefix)==null?void 0:r.value)==="MILLI"?d=.001:((o=h.Prefix)==null?void 0:o.value)==="CENTI"?d=.01:((a=h.Prefix)==null?void 0:a.value)==="DECI"&&(d=.1),f*d}return 1}static async findItemByGuid(e,t){var i;const s=e.getAllPropertiesIDs();for(const n of s){const r=await e.getProperties(n);if(r&&((i=r.GlobalId)==null?void 0:i.value)===t)return r}return null}static async getRelationMap(e,t,s){var a;const n=s??(async()=>{}),r={},o=e.getAllPropertiesIDs();for(const l of o){const h=await e.getProperties(l);if(!h)continue;const u=h.type===t,d=Object.keys(h).find(m=>m.startsWith("Relating")),f=Object.keys(h).find(m=>m.startsWith("Related"));if(!(u&&d&&f))continue;const E=await e.getProperties((a=h[d])==null?void 0:a.value),p=h[f];if(!E||!p||!(p&&Array.isArray(p)))continue;const I=p.map(m=>m.value);await n(E.expressID,I),r[E.expressID]=I}return r}static async getQsetQuantities(e,t,s){const n=s??(()=>{}),r=await e.getProperties(t);return!r||r.type!==K.IFCELEMENTQUANTITY?null:(r.Quantities??[{}]).map(l=>(l.value&&n(l.value),l.value)).filter(l=>l!==null)}static async getPsetProps(e,t,s){const n=s??(()=>{}),r=await e.getProperties(t);return!r||r.type!==K.IFCPROPERTYSET?null:(r.HasProperties??[{}]).map(l=>(l.value&&n(l.value),l.value)).filter(l=>l!==null)}static async getPsetRel(e,t){var o;if(!await e.getProperties(t))return null;const i=await e.getAllPropertiesOfType(K.IFCRELDEFINESBYPROPERTIES);if(!i)return null;const n=Object.values(i);let r=null;for(const a of n)((o=a.RelatingPropertyDefinition)==null?void 0:o.value)===t&&(r=a.expressID);return r}static async getQsetRel(e,t){return ge.getPsetRel(e,t)}static async getEntityName(e,t){var r;const s=await e.getProperties(t);if(!s)return{key:null,name:null};const i=Object.keys(s).find(o=>o.endsWith("Name"))??null,n=i?(r=s[i])==null?void 0:r.value:null;return{key:i,name:n}}static async getQuantityValue(e,t){const s=await e.getProperties(t);if(!s)return{key:null,value:null};const i=Object.keys(s).find(r=>r.endsWith("Value"))??null;let n;return i===null||s[i]===void 0||s[i]===null?n=null:n=s[i].value,{key:i,value:n}}static isRel(e){return Sn[e].startsWith("IFCREL")}static async attributeExists(e,t,s){const i=await e.getProperties(t);return i?Object.keys(i).includes(s):!1}static async groupEntitiesByType(e,t){var i;const s=new Map;for(const n of t){const r=await e.getProperties(n);if(!r)continue;const o=r.type;s.get(o)||s.set(o,new Set),(i=s.get(o))==null||i.add(n)}return s}}class Il{constructor(){g(this,"factor",1);g(this,"complement",1)}apply(e){const s=this.getScaleMatrix().multiply(e);e.copy(s)}setUp(e){var n,r,o;this.factor=1;const t=this.getLengthUnits(e);if(!t)return;const s=t==null,i=t.Name===void 0||t.Name===null;s||i||(t.Name.value==="FOOT"&&(this.factor=.3048),((n=t.Prefix)==null?void 0:n.value)==="MILLI"?this.complement=.001:((r=t.Prefix)==null?void 0:r.value)==="CENTI"?this.complement=.01:((o=t.Prefix)==null?void 0:o.value)==="DECI"&&(this.complement=.01))}getLengthUnits(e){try{const s=e.GetLineIDsWithType(0,K.IFCUNITASSIGNMENT).get(0),i=e.GetLine(0,s);for(const n of i.Units){if(!n||n.value===null||n.value===void 0)continue;const r=e.GetLine(0,n.value);if(r.UnitType&&r.UnitType.value==="LENGTHUNIT")return r}return null}catch{return console.log("Could not get units"),null}}getScaleMatrix(){const e=this.factor;return new M.Matrix4().fromArray([e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1])}}class to{constructor(){g(this,"itemsByFloor",{});g(this,"_units",new Il)}setUp(e){this._units.setUp(e),this.cleanUp();try{const t=e.GetLineIDsWithType(0,K.IFCRELCONTAINEDINSPATIALSTRUCTURE),s=new Set,i=e.GetLineIDsWithType(0,K.IFCSPACE);for(let l=0;l<i.size();l++)s.add(i.get(l));const n=e.GetLineIDsWithType(0,K.IFCRELAGGREGATES),r=n.size();for(let l=0;l<r;l++){const h=n.get(l),u=e.GetLine(0,h);if(!u||!u.RelatingObject||!u.RelatedObjects)continue;const d=u.RelatingObject.value,f=u.RelatedObjects;for(const E of f){const p=E.value;s.has(p)&&(this.itemsByFloor[p]=d)}}const o={},a=t.size();for(let l=0;l<a;l++){const h=t.get(l),u=e.GetLine(0,h);if(!u||!u.RelatingStructure||!u.RelatedElements)continue;const d=u.RelatingStructure.value,f=u.RelatedElements;if(s.has(d))for(const E of f){o[d]||(o[d]=[]);const p=E.value;o[d].push(p)}else for(const E of f){const p=E.value;this.itemsByFloor[p]=d}}for(const l in o){const h=this.itemsByFloor[l];if(h!==void 0){const u=o[l];for(const d of u)this.itemsByFloor[d]=h}}for(let l=0;l<r;l++){const h=n.get(l),u=e.GetLine(0,h);if(!u||!u.RelatingObject||!u.RelatedObjects)continue;const d=u.RelatingObject.value,f=u.RelatedObjects;for(const E of f){const p=E.value,I=this.itemsByFloor[d];I!==void 0&&(this.itemsByFloor[p]=I)}}}catch{console.log("Could not get floors.")}}cleanUp(){this.itemsByFloor={}}}class bi{constructor(){g(this,"includeProperties",!0);g(this,"optionalCategories",[K.IFCSPACE]);g(this,"coordinate",!0);g(this,"wasm",{path:"",absolute:!1,logLevel:K.LogLevel.LOG_LEVEL_OFF});g(this,"excludedCategories",new Set);g(this,"includedCategories",new Set);g(this,"saveLocations",!1);g(this,"webIfc",{COORDINATE_TO_ORIGIN:!0});g(this,"autoSetWasm",!0);g(this,"customLocateFileHandler",null)}}class eo{constructor(){g(this,"defLineMat",new M.LineBasicMaterial({color:16777215}))}read(e){const t=e.GetAllAlignments(0),s=e.GetAllCrossSections2D(0),i=e.GetAllCrossSections3D(0),n={IfcAlignment:t,IfcCrossSection2D:s,IfcCrossSection3D:i};return this.get(n)}get(e){if(e.IfcAlignment){const t=new Map;for(const s of e.IfcAlignment){const i=new Ie.Alignment;i.absolute=this.getCurves(s.curve3D,i),i.horizontal=this.getCurves(s.horizontal,i),i.vertical=this.getCurves(s.vertical,i),t.set(t.size,i)}return{alignments:t,coordinationMatrix:new M.Matrix4}}}getCurves(e,t){const s=[];let i=0;for(const n of e){const r={};if(n.data)for(const d of n.data){const[f,E]=d.split(": "),p=parseFloat(E);r[f]=p||E}const{points:o}=n,a=new Float32Array(o.length*3);for(let d=0;d<o.length;d++){const{x:f,y:E,z:p}=o[d];a[d*3]=f,a[d*3+1]=E,a[d*3+2]=p||0}const l=new M.BufferAttribute(a,3),h=new M.EdgesGeometry;h.setAttribute("position",l);const u=new Ie.CurveMesh(i,r,t,h,this.defLineMat);s.push(u.curve),i++}return s}}class so{getNameInfo(e){var u;const t={},{arguments:s}=e.GetHeaderLine(0,K.FILE_NAME)||{};if(!s)return t;const[i,n,r,o,a,l,h]=s;if(i!=null&&i.value&&(t.name=i.value),n!=null&&n.value&&(t.creationDate=new Date(n.value)),r){t.author={};const[d,f]=r;d!=null&&d.value&&(t.author.name=d.value),f!=null&&f.value&&(t.author.email=f.value)}return(u=o[0])!=null&&u.value&&(t.organization=o[0].value),a!=null&&a.value&&(t.preprocessorVersion=a==null?void 0:a.value),l!=null&&l.value&&(t.originatingSystem=l==null?void 0:l.value),h!=null&&h.value&&(t.authorization=h==null?void 0:h.value),t}getDescriptionInfo(e){var r;const t={},{arguments:s}=e.GetHeaderLine(0,K.FILE_DESCRIPTION)||{};if(!s)return t;const[i,n]=s;if((r=i[0])!=null&&r.value){const o=i[0].value.match(/\[([^\]]+)\]/);o&&o[1]&&(t.viewDefinition=o[1])}return n!=null&&n.value&&(t.implementationLevel=n.value),t}}class io{static get(e,t){const s=[K.IFCPROJECT,K.IFCSITE,K.IFCBUILDING,K.IFCBUILDINGSTOREY,K.IFCSPACE,K.IFCROAD,K.IFCFACILITY,K.IFCFACILITYPART,K.IFCBRIDGE],i=e.data;for(const n of s){const r=t.GetLineIDsWithType(0,n),o=r.size();for(let a=0;a<o;a++){const l=r.get(a);i.has(l)||i.set(l,[[],[0,n]])}}}}const As=class As extends At{constructor(t){super(t);g(this,"onDisposed",new Q);g(this,"onIfcStartedLoading",new Q);g(this,"onSetup",new Q);g(this,"settings",new bi);g(this,"webIfc",new K.IfcAPI);g(this,"enabled",!0);g(this,"_material",new M.MeshLambertMaterial);g(this,"_spatialTree",new to);g(this,"_metaData",new so);g(this,"_fragmentInstances",new Map);g(this,"_civil",new eo);g(this,"_visitedFragments",new Map);g(this,"_materialT",new M.MeshLambertMaterial({transparent:!0,opacity:.5}));this.components.add(As.uuid,this),this.settings.excludedCategories.add(K.IFCOPENINGELEMENT)}dispose(){this.webIfc=null,this.onDisposed.trigger(As.uuid),this.onDisposed.reset()}async setup(t){this.settings={...this.settings,...t},this.settings.autoSetWasm&&await this.autoSetWasm(),this.onSetup.trigger()}async load(t,s=!0){const i=performance.now();this.onIfcStartedLoading.trigger(),await this.readIfcFile(t);const n=await this.getAllGeometries(),o=await this.components.get(ai).export(this.webIfc,0);n.setLocalProperties(o);const a=this.components.get(Tt);a.groups.set(n.uuid,n);for(const l of n.items)a.list.set(l.id,l),l.mesh.uuid=l.id,l.group=n;a.onFragmentsLoaded.trigger(n),s&&a.coordinate([n]);for(const[l]of n.data){const h=o[l];if(!h||!h.GlobalId)continue;const u=h.GlobalId.value||h.GlobalId;n.globalToExpressIDs.set(u,l)}return io.get(n,this.webIfc),this.cleanUp(),console.log(`Streaming the IFC took ${performance.now()-i} ms!`),n}async readIfcFile(t){const{path:s,absolute:i,logLevel:n}=this.settings.wasm;return this.webIfc.SetWasmPath(s,i),await this.webIfc.Init(this.settings.customLocateFileHandler||void 0),n&&this.webIfc.SetLogLevel(n),this.webIfc.OpenModel(t,this.settings.webIfc)}cleanUp(){try{this.webIfc.Dispose()}catch{console.log("Web-ifc wasn't disposed.")}this.webIfc=null,this.webIfc=new K.IfcAPI,this._visitedFragments.clear(),this._fragmentInstances.clear()}async getAllGeometries(){this._spatialTree.setUp(this.webIfc);const t=this.webIfc.GetIfcEntityList(0),s=new Ie.FragmentsGroup;s.ifcMetadata={name:"",description:"",...this._metaData.getNameInfo(this.webIfc),...this._metaData.getDescriptionInfo(this.webIfc),schema:this.webIfc.GetModelSchema(0)||"IFC2X3",maxExpressID:this.webIfc.GetMaxExpressID(0)};const i=[];for(const r of t){if(!this.webIfc.IsIfcElement(r)&&r!==K.IFCSPACE)continue;const o=this.settings.includedCategories;if(o.size>0&&!o.has(r))continue;if(this.settings.excludedCategories.has(r))continue;const a=this.webIfc.GetLineIDsWithType(0,r),l=a.size();for(let h=0;h<l;h++){const u=a.get(h);i.push(u);const d=this._spatialTree.itemsByFloor[u]||0;s.data.set(u,[[],[d,r]])}}this._spatialTree.cleanUp(),this.webIfc.StreamMeshes(0,i,r=>{this.getMesh(r,s)});for(const r of this._visitedFragments){const{index:o,fragment:a}=r[1];s.keyFragments.set(o,a.id)}for(const r of s.items){const o=this._fragmentInstances.get(r.id);if(!o)throw new Error("Fragment not found!");const a=[];for(const[l,h]of o)a.push(h);r.add(a)}const n=this.webIfc.GetCoordinationMatrix(0);return s.coordinationMatrix.fromArray(n),s.civilData=this._civil.read(this.webIfc),s}getMesh(t,s){const i=t.geometries.size(),n=t.expressID;for(let r=0;r<i;r++){const o=t.geometries.get(r),{x:a,y:l,z:h,w:u}=o.color,d=u!==1,{geometryExpressID:f}=o,E=`${f}-${d}`;if(!this._visitedFragments.has(E)){const y=this.getGeometry(this.webIfc,f),F=d?this._materialT:this._material,O=new Ie.Fragment(y,F,1);s.add(O.mesh),s.items.push(O);const v=this._visitedFragments.size;this._visitedFragments.set(E,{index:v,fragment:O})}const p=new M.Color().setRGB(a,l,h,"srgb"),I=new M.Matrix4;I.fromArray(o.flatTransformation);const m=this._visitedFragments.get(E);if(m===void 0)throw new Error("Error getting geometry data for streaming!");const _=s.data.get(n);if(!_)throw new Error("Data not found!");_[0].push(m.index);const{fragment:R}=m;this._fragmentInstances.has(R.id)||this._fragmentInstances.set(R.id,new Map);const C=this._fragmentInstances.get(R.id);if(!C)throw new Error("Instances not found!");if(C.has(n)){const y=C.get(n);if(!y)throw new Error("Instance not found!");y.transforms.push(I),y.colors&&y.colors.push(p)}else C.set(n,{id:n,transforms:[I],colors:[p]})}}getGeometry(t,s){const i=t.GetGeometry(0,s),n=t.GetIndexArray(i.GetIndexData(),i.GetIndexDataSize()),r=t.GetVertexArray(i.GetVertexData(),i.GetVertexDataSize()),o=new Float32Array(r.length/2),a=new Float32Array(r.length/2);for(let d=0;d<r.length;d+=6)o[d/2]=r[d],o[d/2+1]=r[d+1],o[d/2+2]=r[d+2],a[d/2]=r[d+3],a[d/2+1]=r[d+4],a[d/2+2]=r[d+5];const l=new M.BufferGeometry,h=new M.BufferAttribute(o,3),u=new M.BufferAttribute(a,3);return l.setAttribute("position",h),l.setAttribute("normal",u),l.setIndex(Array.from(n)),i.delete(),l}async autoSetWasm(){const t=await fetch(`https://unpkg.com/@thatopen/components@${ei.release}/package.json`);if(!t.ok){console.warn("Couldn't get openbim-components package.json. Set wasm settings manually.");return}const s=await t.json();if(!("web-ifc"in s.peerDependencies))console.warn("Couldn't get web-ifc from peer dependencies in openbim-components. Set wasm settings manually.");else{const i=s.peerDependencies["web-ifc"];this.settings.wasm.path=`https://unpkg.com/web-ifc@${i}/`,this.settings.wasm.absolute=!0}}};g(As,"uuid","a659add7-1418-4771-a0d6-7d4d438e4624");let ci=As;const Ee=class Ee extends At{constructor(t){super(t);g(this,"onDisposed",new Q);g(this,"onRequestFile",new Q);g(this,"ifcToExport",null);g(this,"onElementToPset",new Q);g(this,"onPropToPset",new Q);g(this,"onPsetRemoved",new Q);g(this,"onDataChanged",new Q);g(this,"wasm",{path:"/",absolute:!1});g(this,"enabled",!0);g(this,"attributeListeners",{});g(this,"selectedModel");g(this,"changeMap",{});this.components.add(Ee.uuid,this)}dispose(){this.selectedModel=void 0,this.attributeListeners={},this.changeMap={},this.onElementToPset.reset(),this.onPropToPset.reset(),this.onPsetRemoved.reset(),this.onDataChanged.reset(),this.onDisposed.trigger(Ee.uuid),this.onDisposed.reset()}static getIFCSchema(t){const s=t.ifcMetadata.schema;if(!s)throw new Error("IFC Schema not found");return s.startsWith("IFC2X3")?"IFC2X3":s.startsWith("IFC4")&&s.replace("IFC4","")===""?"IFC4":s.startsWith("IFC4X3")?"IFC4X3":s}async setData(t,...s){for(const i of s){const{expressID:n}=i;(!n||n===-1)&&(i.expressID=this.getNewExpressID(t)),await t.setProperties(i.expressID,i),this.registerChange(t,n)}}async newPset(t,s,i){const n=Ee.getIFCSchema(t),{ownerHistoryHandle:r}=await this.getOwnerHistory(t),o=this.newGUID(t),a=new K[n].IfcLabel(s),l=i?new K[n].IfcText(i):null,h=new K[n].IfcPropertySet(o,r,a,l,[]);h.expressID=this.getNewExpressID(t);const u=this.newGUID(t),d=new K[n].IfcRelDefinesByProperties(u,r,null,null,[],new K.Handle(h.expressID));return d.expressID=this.getNewExpressID(t),await this.setData(t,h,d),{pset:h,rel:d}}async removePset(t,...s){for(const i of s){const n=await t.getProperties(i);if((n==null?void 0:n.type)!==K.IFCPROPERTYSET)continue;const r=await ge.getPsetRel(t,i);if(r&&(await t.setProperties(r,null),this.registerChange(t,r)),n){for(const o of n.HasProperties)await t.setProperties(o.value,null);await t.setProperties(i,null),this.onPsetRemoved.trigger({model:t,psetID:i}),this.registerChange(t,i)}}}newSingleStringProperty(t,s,i,n){return this.newSingleProperty(t,s,i,n)}newSingleNumericProperty(t,s,i,n){return this.newSingleProperty(t,s,i,n)}newSingleBooleanProperty(t,s,i,n){return this.newSingleProperty(t,s,i,n)}async removePsetProp(t,s,i){const n=await t.getProperties(s),r=await t.getProperties(i);!n||!r||n.type===K.IFCPROPERTYSET&&r&&(n.HasProperties=n.HasProperties.filter(o=>o.value!==i),await t.setProperties(i,null),this.registerChange(t,s,i))}async addElementToPset(t,s,...i){const n=await ge.getPsetRel(t,s);if(!n)return;const r=await t.getProperties(n);if(!r)return;for(const a of i){const l=new K.Handle(a);r.RelatedObjects.push(l),this.onElementToPset.trigger({model:t,psetID:s,elementID:a})}this.registerChange(t,s);const o=this.components.get(be);for(const a of i)try{o.addEntityRelations(t,a,"IsDefinedBy",s)}catch{}}async addPropToPset(t,s,...i){const n=await t.getProperties(s);if(n){for(const r of i){if(n.HasProperties.includes(r))continue;const o=new K.Handle(r);n.HasProperties.push(o),this.onPropToPset.trigger({model:t,psetID:s,propID:r})}this.registerChange(t,s)}}async saveToIfc(t,s){const i=this.components.get(ci),n=i.webIfc,r=await i.readIfcFile(s),o=this.changeMap[t.uuid]??[];for(const l of o){const h=await t.getProperties(l);if(h)try{n.WriteLine(r,h)}catch{}else try{n.DeleteLine(r,l)}catch{}}const a=n.SaveModel(r);return i.webIfc.CloseModel(r),i.cleanUp(),a}async getEntityRef(t,s){const i=await t.getAllPropertiesOfType(s);if(!i)return null;const n=[];for(const r in i){const o=new K.Handle(Number(r));n.push(o)}return n}async setAttributeListener(t,s,i){this.attributeListeners[t.uuid]||(this.attributeListeners[t.uuid]={});const n=this.attributeListeners[t.uuid][s]?this.attributeListeners[t.uuid][s][i]:null;if(n)return n;const r=await t.getProperties(s);if(!r)throw new Error(`Entity with expressID ${s} doesn't exists.`);const o=r[i];if(Array.isArray(o)||!o)throw new Error(`Attribute ${i} is array or null, and it can't have a listener.`);const a=o.value;if(a===void 0||a==null)throw new Error(`Attribute ${i} has a badly defined handle.`);const l=new Q;return Object.defineProperty(r[i],"value",{get(){return this._value},async set(h){this._value=h,l.trigger(h)}}),r[i].value=a,this.attributeListeners[t.uuid][s]||(this.attributeListeners[t.uuid][s]={}),this.attributeListeners[t.uuid][s][i]=l,l}getNewExpressID(t){return t.ifcMetadata.maxExpressID++,t.ifcMetadata.maxExpressID}newGUID(t){const s=Ee.getIFCSchema(t);return new K[s].IfcGloballyUniqueId(he.create())}async getOwnerHistory(t){const s=await t.getAllPropertiesOfType(K.IFCOWNERHISTORY);if(!s)throw new Error("No OwnerHistory was found.");const i=Object.keys(s).map(o=>parseInt(o,10)),n=s[i[0]],r=new K.Handle(n.expressID);return{ownerHistory:n,ownerHistoryHandle:r}}registerChange(t,...s){this.changeMap[t.uuid]||(this.changeMap[t.uuid]=new Set);for(const i of s)this.changeMap[t.uuid].add(i),this.onDataChanged.trigger({model:t,expressID:i})}async newSingleProperty(t,s,i,n){const r=Ee.getIFCSchema(t),o=new K[r].IfcIdentifier(i),a=new K[r][s](n),l=new K[r].IfcPropertySingleValue(o,null,a,null);return l.expressID=this.getNewExpressID(t),await this.setData(t,l),l}};g(Ee,"uuid","58c2d9f0-183c-48d6-a402-dfcf5b9a34df");let fn=Ee;const Ii=class Ii extends At{constructor(t){super(t);g(this,"enabled",!0);g(this,"list",{});g(this,"onDisposed",new Q);g(this,"onFragmentsDisposed",t=>{const{groupID:s,fragmentIDs:i}=t;for(const n in this.list){const r=this.list[n],o=Object.keys(r);if(o.includes(s))delete r[s],Object.values(r).length===0&&delete this.list[n];else for(const a of o){const l=r[a];for(const h of i)delete l.map[h];Object.values(l).length===0&&delete r[a]}}});t.add(Ii.uuid,this),t.get(Tt).onFragmentsDisposed.add(this.onFragmentsDisposed)}dispose(){this.list={},this.components.get(Tt).onFragmentsDisposed.remove(this.onFragmentsDisposed),this.onDisposed.trigger(),this.onDisposed.reset()}remove(t){for(const s in this.list){const i=this.list[s];for(const n in i){const r=i[n];delete r.map[t]}}}find(t){const s=this.components.get(Tt);if(!t){const o={};for(const[a,l]of s.list)o[a]=new Set(l.ids);return o}const i=Object.keys(t).length,n={};for(const o in t){const a=t[o];if(!this.list[o]){console.warn(`Classification ${o} does not exist.`);continue}for(const l of a){const h=this.list[o][l];if(h)for(const u in h.map){n[u]||(n[u]=new Map);for(const d of h.map[u]){const f=n[u].get(d);f===void 0?n[u].set(d,1):n[u].set(d,f+1)}}}}const r={};for(const o in n){const a=n[o];for(const[l,h]of a){if(h===void 0)throw new Error("Malformed fragments map!");h===i&&(r[o]||(r[o]=new Set),r[o].add(l))}}return r}byModel(t,s){this.list.models||(this.list.models={});const i=this.list.models;i[t]||(i[t]={map:{},id:null,name:t});const n=i[t];for(const[r,o]of s.data){const a=o[0];for(const l of a){const h=s.keyFragments.get(l);h&&(n.map[h]||(n.map[h]=new Set),n.map[h].add(r))}}}async byPredefinedType(t){var n;this.list.predefinedTypes||(this.list.predefinedTypes={});const s=this.list.predefinedTypes,i=t.getAllPropertiesIDs();for(const r of i){const o=await t.getProperties(r);if(!o)continue;const a=String((n=o.PredefinedType)==null?void 0:n.value).toUpperCase();s[a]||(s[a]={map:{},id:null,name:a});const l=s[a];for(const[h,u]of t.data){const d=u[0];for(const f of d){const E=t.keyFragments.get(f);if(!E)throw new Error("Fragment ID not found!");l.map[E]||(l.map[E]=new Set),l.map[E].add(o.expressID)}}}}byEntity(t){this.list.entities||(this.list.entities={});for(const[s,i]of t.data){const r=i[1][1],o=Sn[r];this.saveItem(t,"entities",o,s)}}async byIfcRel(t,s,i){ge.isRel(s)&&await ge.getRelationMap(t,s,async(n,r)=>{const{name:o}=await ge.getEntityName(t,n);for(const a of r)this.saveItem(t,i,o??"NO REL NAME",a)})}async bySpatialStructure(t,s={}){var l,h;const i=this.components.get(be),n=i.relationMaps[t.uuid];if(!n)throw new Error(`Classifier: model relations of ${t.name||t.uuid} have to exists to group by spatial structure.`);const r="spatialStructures",a=s.useProperties===void 0||s.useProperties;for(const[u]of n){if(s.isolate){const p=t.data.get(u);if(!p)continue;const I=p[1][1];if(I===void 0||!s.isolate.has(I))continue}const d=i.getEntityRelations(t,u,"Decomposes");if(d)for(const p of d){let I=p.toString();if(a){const m=await t.getProperties(p);if(!m)continue;I=(l=m.Name)==null?void 0:l.value}this.saveItem(t,r,I,u,p)}const f=i.getEntityRelations(t,u,"ContainsElements");if(!f)continue;let E=u.toString();if(a){const p=await t.getProperties(u);if(!p)continue;E=(h=p.Name)==null?void 0:h.value}for(const p of f){this.saveItem(t,r,E,p,u);const I=i.getEntityRelations(t,Number(p),"IsDecomposedBy");if(I)for(const m of I)this.saveItem(t,r,E,m,u)}}}setColor(t,s,i=!1){const n=this.components.get(Tt);for(const r in t){const o=n.list.get(r);if(!o)continue;const a=t[r];o.setColor(s,a,i)}}resetColor(t){const s=this.components.get(Tt);for(const i in t){const n=s.list.get(i);if(!n)continue;const r=t[i];n.resetColor(r)}}saveItem(t,s,i,n,r=null){this.list[s]||(this.list[s]={});const o=t.data.get(n);if(o)for(const a of o[0]){const l=t.keyFragments.get(a);if(l){const h=this.list[s];h[i]||(h[i]={map:{},id:r,name:i}),h[i].map[l]||(h[i].map[l]=new Set),h[i].map[l].add(n)}}}};g(Ii,"uuid","e25a7f3c-46c4-4a14-9d3d-5115f24ebeb7");let $e=Ii;const gi=class gi extends At{constructor(t){super(t);g(this,"onDisposed",new Q);g(this,"enabled",!0);g(this,"height",10);g(this,"groupName","spatialStructures");g(this,"list",new Set);t.add(gi.uuid,this)}dispose(){this.list.clear(),this.onDisposed.trigger(),this.onDisposed.reset()}set(t){if(!this.enabled)return;const s=this.components.get($e),i=this.components.get(Tt),n=t?1:-1;let r=0;const o=s.list[this.groupName],a=new M.Matrix4;for(const l in o){a.elements[13]=r*n*this.height;for(const h in o[l].map){const u=i.list.get(h),d=l+h,f=this.list.has(d);if(!u||t&&f||!t&&!f)continue;t?this.list.add(d):this.list.delete(d);const E=o[l].map[h];u.applyTransform(E,a),u.mesh.computeBoundingSphere(),u.mesh.computeBoundingBox()}r++}}};g(gi,"uuid","d260618b-ce88-4c7d-826c-6debb91de3e2");let pn=gi;const Ci=class Ci extends At{constructor(t){super(t);g(this,"enabled",!0);this.components.add(Ci.uuid,this)}set(t,s){const i=this.components.get(Tt);if(!s){for(const[n,r]of i.list)r&&(r.setVisibility(t),this.updateCulledVisibility(r));return}for(const n in s){const r=s[n],o=i.list.get(n);o&&(o.setVisibility(t,r),this.updateCulledVisibility(o))}}isolate(t){this.set(!1),this.set(!0,t)}updateCulledVisibility(t){const s=this.components.get(ii);for(const[i,n]of s.list){const r=n.colorMeshes.get(t.id);r&&(r.count=t.mesh.count)}}};g(Ci,"uuid","dd9ccf2d-8a21-4821-b7f6-2949add16a29");let li=Ci;class no extends bi{constructor(){super(...arguments);g(this,"minGeometrySize",10);g(this,"minAssetsSize",1e3);g(this,"maxTriangles",null)}}const Ti=class Ti extends At{constructor(t){super(t);g(this,"onGeometryStreamed",new Q);g(this,"onAssetStreamed",new Q);g(this,"onProgress",new Q);g(this,"onIfcLoaded",new Q);g(this,"onDisposed",new Q);g(this,"settings",new no);g(this,"enabled",!0);g(this,"webIfc",new K.IfcAPI);g(this,"_nextAvailableID",0);g(this,"_splittedGeometries",new Map);g(this,"_spatialTree",new to);g(this,"_metaData",new so);g(this,"_visitedGeometries",new Map);g(this,"_streamSerializer",new Ie.StreamSerializer);g(this,"_geometries",new Map);g(this,"_geometryCount",0);g(this,"_civil",new eo);g(this,"_groupSerializer",new Ie.Serializer);g(this,"_assets",[]);g(this,"_meshesWithHoles",new Set);this.components.add(Ti.uuid,this),this.settings.excludedCategories.add(K.IFCOPENINGELEMENT)}dispose(){this.onIfcLoaded.reset(),this.onGeometryStreamed.reset(),this.onAssetStreamed.reset(),this.webIfc=null,this.onDisposed.trigger(),this.onDisposed.reset()}async streamFromBuffer(t){await this.readIfcFile(t),await this.streamAllGeometries(),this.cleanUp()}async streamFromCallBack(t){await this.streamIfcFile(t),await this.streamAllGeometries(),this.cleanUp()}async readIfcFile(t){const{path:s,absolute:i,logLevel:n}=this.settings.wasm;this.webIfc.SetWasmPath(s,i),await this.webIfc.Init(),n&&this.webIfc.SetLogLevel(n),this.webIfc.OpenModel(t,this.settings.webIfc),this._nextAvailableID=this.webIfc.GetMaxExpressID(0)}async streamIfcFile(t){const{path:s,absolute:i,logLevel:n}=this.settings.wasm;this.webIfc.SetWasmPath(s,i),await this.webIfc.Init(),n&&this.webIfc.SetLogLevel(n),this.webIfc.OpenModelFromCallback(t,this.settings.webIfc)}async streamAllGeometries(){const{minGeometrySize:t,minAssetsSize:s}=this.settings;this._spatialTree.setUp(this.webIfc);const i=this.webIfc.GetIfcEntityList(0),n=[[]],r=new Ie.FragmentsGroup;r.ifcMetadata={name:"",description:"",...this._metaData.getNameInfo(this.webIfc),...this._metaData.getDescriptionInfo(this.webIfc),schema:this.webIfc.GetModelSchema(0)||"IFC2X3",maxExpressID:this.webIfc.GetMaxExpressID(0)};let o=0,a=0;for(const p of i){if(!this.webIfc.IsIfcElement(p)&&p!==K.IFCSPACE||this.settings.excludedCategories.has(p))continue;const I=this.webIfc.GetLineIDsWithType(0,p),m=I.size();for(let _=0;_<m;_++){o>t&&(o=0,a++,n.push([]));const R=I.get(_);n[a].push(R);const C=this.webIfc.GetLine(0,R);if(C.GlobalId){const F=(C==null?void 0:C.GlobalId.value)||(C==null?void 0:C.GlobalId);r.globalToExpressIDs.set(F,R)}const y=this._spatialTree.itemsByFloor[R]||0;r.data.set(R,[[],[y,p]]),o++}}this._spatialTree.cleanUp();let l=.01,h=0;for(const p of n){h++,this.webIfc.StreamMeshes(0,p,m=>{this.getMesh(this.webIfc,m,r)}),this._assets.length>s&&await this.streamAssets();const I=h/n.length;I>l&&(l+=.01,l=Math.max(l,I),this.onProgress.trigger(Math.round(l*100)/100))}this._geometryCount&&await this.streamGeometries(),this._assets.length&&await this.streamAssets();const{opaque:u,transparent:d}=r.geometryIDs;for(const[p,{index:I,uuid:m}]of this._visitedGeometries)r.keyFragments.set(I,m),(p>1?u:d).set(p,I);io.get(r,this.webIfc);const f=this.webIfc.GetCoordinationMatrix(0);r.coordinationMatrix.fromArray(f),r.civilData=this._civil.read(this.webIfc);const E=this._groupSerializer.export(r);this.onIfcLoaded.trigger(E),r.dispose(!0)}cleanUp(){try{this.webIfc.Dispose()}catch{}this.webIfc=null,this.webIfc=new K.IfcAPI,this._visitedGeometries.clear(),this._geometries.clear(),this._assets=[],this._meshesWithHoles.clear()}getMesh(t,s,i){const n=s.geometries.size(),r=s.expressID,o={id:r,geometries:[]};for(let a=0;a<n;a++){const l=s.geometries.get(a),h=l.geometryExpressID,u=l.color.w===1,f=h*(u?1:-1);this._visitedGeometries.has(f)||this.getGeometry(t,h,u),this.registerGeometryData(i,r,l,o,h,f);const E=this._splittedGeometries.get(h);if(E)for(const p of E)this.registerGeometryData(i,r,l,o,p,p)}this._assets.push(o)}getGeometry(t,s,i){const n=t.GetGeometry(0,s),r=t.GetIndexArray(n.GetIndexData(),n.GetIndexDataSize()),o=t.GetVertexArray(n.GetVertexData(),n.GetVertexDataSize()),a=new Float32Array(o.length/2),l=new Float32Array(o.length/2);for(let f=0;f<o.length;f+=6)a[f/2]=o[f],a[f/2+1]=o[f+1],a[f/2+2]=o[f+2],l[f/2]=o[f+3],l[f/2+1]=o[f+4],l[f/2+2]=o[f+5];const u=(this.settings.maxTriangles||r.length/3)*3;let d=!0;for(let f=0;f<r.length;f+=u){const E=r.length-f,p=Math.min(E,u),I=f+p,m=[],_=[],R=[];let C=0;for(let $=f;$<I;$++){m.push(C++);const V=r[$];_.push(a[V*3]),_.push(a[V*3+1]),_.push(a[V*3+2]),R.push(l[V*3]),R.push(l[V*3+1]),R.push(l[V*3+2])}const y=new Uint32Array(m),F=new Float32Array(_),O=new Float32Array(R),v=Sr(F),N=new Float32Array(v.transformation.elements),x=!1,G=d?s:this._nextAvailableID++;this._geometries.set(G,{position:F,normal:O,index:y,boundingBox:N,hasHoles:x}),d||(this._splittedGeometries.has(s)||this._splittedGeometries.set(s,new Set),this._splittedGeometries.get(s).add(G));const L=G*(i?1:-1),T=this._visitedGeometries.size,D=M.MathUtils.generateUUID();this._visitedGeometries.set(L,{uuid:D,index:T}),this._geometryCount++,d=!1,this._geometryCount>this.settings.minGeometrySize&&this.streamGeometries()}n.delete()}async streamAssets(){await this.onAssetStreamed.trigger(this._assets),this._assets=null,this._assets=[]}streamGeometries(){let t=this._streamSerializer.export(this._geometries),s={};for(const[i,{boundingBox:n,hasHoles:r}]of this._geometries)s[i]={boundingBox:n,hasHoles:r};this.onGeometryStreamed.trigger({data:s,buffer:t}),s=null,t=null,this._geometries.clear(),this._geometryCount=0}registerGeometryData(t,s,i,n,r,o){const a=this._visitedGeometries.get(o);if(a===void 0)throw new Error("Error getting geometry data for streaming!");const l=t.data.get(s);if(!l)throw new Error("Data not found!");l[0].push(a.index);const{x:h,y:u,z:d,w:f}=i.color,E=[h,u,d,f],p=i.flatTransformation;n.geometries.push({color:E,geometryID:r,transformation:p})}};g(Ti,"uuid","d9999a00-e1f5-4d3f-8cfe-c56e08609764");let En=Ti;class ro extends bi{constructor(){super(...arguments);g(this,"propertiesSize",100)}}class oo extends At{constructor(){super(...arguments);g(this,"onPropertiesStreamed",new Is);g(this,"onProgress",new Is);g(this,"onIndicesStreamed",new Is);g(this,"onDisposed",new Q);g(this,"enabled",!0);g(this,"settings",new ro);g(this,"webIfc",new K.IfcAPI)}async dispose(){this.onIndicesStreamed.reset(),this.onPropertiesStreamed.reset(),this.webIfc=null,this.onDisposed.reset()}async streamFromBuffer(t){await this.readIfcFile(t),await this.streamAllProperties(),this.cleanUp()}async streamFromCallBack(t){await this.streamIfcFile(t),await this.streamAllProperties(),this.cleanUp()}async readIfcFile(t){const{path:s,absolute:i,logLevel:n}=this.settings.wasm;this.webIfc.SetWasmPath(s,i),await this.webIfc.Init(),n&&this.webIfc.SetLogLevel(n),this.webIfc.OpenModel(t,this.settings.webIfc)}async streamIfcFile(t){const{path:s,absolute:i,logLevel:n}=this.settings.wasm;this.webIfc.SetWasmPath(s,i),await this.webIfc.Init(),n&&this.webIfc.SetLogLevel(n),this.webIfc.OpenModelFromCallback(t,this.settings.webIfc)}async streamAllProperties(){const{propertiesSize:t}=this.settings,s=new Set(this.webIfc.GetIfcEntityList(0)),i=new Set([K.IFCPROJECT,K.IFCSITE,K.IFCBUILDING,K.IFCBUILDINGSTOREY,K.IFCSPACE]);for(const l of i)s.add(l);let n=.01,r=0;for(const l of s){if(r++,Fn.has(l))continue;const h=i.has(l),u=this.webIfc.GetLineIDsWithType(0,l),d=u.size();let f=0;for(let p=0;p<d-t;p+=t){const I={};for(let m=0;m<t;m++){f++;const _=u.get(p+m);try{const R=this.webIfc.GetLine(0,_,h);I[R.expressID]=R}catch{console.log(`Could not get property: ${_}`)}}await this.onPropertiesStreamed.trigger({type:l,data:I})}if(f!==d){const p={};for(let I=f;I<d;I++){const m=u.get(I);try{const _=this.webIfc.GetLine(0,m,h);p[_.expressID]=_}catch{console.log(`Could not get property: ${m}`)}}await this.onPropertiesStreamed.trigger({type:l,data:p})}r/s.size>n&&(n=Math.round(n*100)/100,await this.onProgress.trigger(n),n+=.01)}await this.onProgress.trigger(1);const a=await this.components.get(be).processFromWebIfc(this.webIfc,0);await this.onIndicesStreamed.trigger(a)}cleanUp(){this.webIfc.Dispose(),this.webIfc=null,this.webIfc=new K.IfcAPI}}g(oo,"uuid","88d2c89c-ce32-47d7-8cb6-d51e4b311a0b");class On{constructor(e,t,s){g(this,"title");g(this,"guid",he.create());g(this,"clippingPlanes",new Se);g(this,"camera",{aspectRatio:0,fov:0,direction:{x:0,y:0,z:80},position:{x:0,y:0,z:0}});g(this,"exceptionComponents",new Se);g(this,"selectionComponents",new Se);g(this,"componentColors",new Oe);g(this,"spacesVisible",!1);g(this,"spaceBoundariesVisible",!1);g(this,"openingsVisible",!1);g(this,"defaultVisibility",!0);g(this,"_components");g(this,"world");const i={setCamera:!0,...s},{data:n,setCamera:r}=i;this._components=e,this.world=t,n&&(this.guid=n.guid??this.guid,this.set(n)),r&&this.updateCamera()}get _selectionModelIdMap(){const e=this._components.get(Tt),t={};for(const[s,i]of e.groups){s in t||(t[s]=new Set);for(const n of this.selectionComponents){const r=i.globalToExpressIDs.get(n);r&&t[s].add(r)}}return t}get _exceptionModelIdMap(){const e=this._components.get(Tt),t={};for(const[s,i]of e.groups){s in t||(t[s]=new Set);for(const n of this.exceptionComponents){const r=i.globalToExpressIDs.get(n);r&&t[s].add(r)}}return t}get selection(){return this._components.get(Tt).modelIdToFragmentIdMap(this._selectionModelIdMap)}get exception(){return this._components.get(Tt).modelIdToFragmentIdMap(this._exceptionModelIdMap)}get projection(){return"fov"in this.camera?"Perspective":"Orthographic"}get position(){const e=this._components.get(Tt),{position:t}=this.camera,{x:s,y:i,z:n}=t,r=new M.Vector3(s,i,n);return e.applyBaseCoordinateSystem(r,new M.Matrix4),r}get direction(){const{direction:e}=this.camera,{x:t,y:s,z:i}=e;return new M.Vector3(t,s,i)}get _managerVersion(){return this._components.get(Pt).config.version}get topics(){return[...this._components.get(Pt).list.values()].filter(i=>i.viewpoints.has(this.guid))}async addComponentsFromMap(e){var i;const t=this._components.get(Tt);for(const n in e){const r=t.list.get(n);if(!(r&&r.group))continue;const o=r.group,a=e[n];for(const l of a){const h=await o.getProperties(l);if(!h)continue;const u=(i=h.GlobalId)==null?void 0:i.value;u&&this.selectionComponents.add(u)}}this._components.get(Zt).list.set(this.guid,this)}set(e){const t=e,s=this;for(const n in e){if(n==="guid")continue;const r=t[n];n in this&&(s[n]=r)}return this._components.get(Zt).list.set(this.guid,this),this}async go(e=!0){const{camera:t}=this.world;if(!t.hasCameraControls())throw new Error("Viewpoint: the world's camera need controls to set the viewpoint.");t instanceof Yr&&t.projection.set(this.projection);const s=this.position,i=this.direction;let n={x:s.x+i.x*80,y:s.y+i.y*80,z:s.z+i.z*80};const r=this.selection;if(Object.keys(r).length===0){const h=this._components.get(Ne).get(this.world).castRayFromVector(s,this.direction);h&&(n=h.point)}else{const a=this._components.get(oi);a.reset(),a.addFragmentIdMap(r),n=a.getSphere().center,a.reset()}const o=this._components.get(li);o.set(this.defaultVisibility),o.set(!this.defaultVisibility,this.exception),o.set(!0,r),await t.controls.setLookAt(s.x,s.y,s.z,n.x,n.y,n.z,e)}updateCamera(){const{camera:e,renderer:t}=this.world;if(!t)throw new Error("Viewpoint: the world needs to have a renderer!");if(!e.hasCameraControls())throw new Error("Viewpoint: world's camera need camera controls!");const s=new M.Vector3;e.controls.getPosition(s);const i=e.three,n=new M.Vector3(0,0,-1).applyEuler(i.rotation),{width:r,height:o}=t.getSize();let a=r/o;Number.isNaN(a)&&(a=1);const l=this._components.get(Tt);s.applyMatrix4(l.baseCoordinationMatrix.clone().invert());const h={aspectRatio:a,position:{x:s.x,y:s.y,z:s.z},direction:{x:n.x,y:n.y,z:n.z}};i instanceof M.PerspectiveCamera?this.camera={...h,fov:i.fov}:i instanceof M.OrthographicCamera&&(this.camera={...h,viewToWorldScale:i.top-i.bottom}),this._components.get(Zt).list.set(this.guid,this)}colorize(){const e=this._components.get(Zt),t=this._components.get(Tt),s=this._components.get($e);for(const[i,n]of this.componentColors){const r=t.guidToFragmentIdMap(n),o=new M.Color(`#${i}`);s.setColor(r,o,e.config.overwriteColors)}}resetColors(){const e=this._components.get(Tt),t=this._components.get($e);for(const[s,i]of this.componentColors){const n=e.guidToFragmentIdMap(i);t.resetColor(n)}}async createComponentTags(e){var n,r;const t=this._components.get(Tt),s=this._components.get(Pt);let i="";if(s.config.includeSelectionTag){const o=e==="selection"?this._selectionModelIdMap:this._exceptionModelIdMap;for(const a in o){const l=t.groups.get(a);if(!l)continue;const h=o[a];for(const u of h){const d=await l.getProperties(u);if(!d)continue;const f=(n=d.GlobalId)==null?void 0:n.value;if(!f)continue;const E=(r=d.Tag)==null?void 0:r.value;let p=null;E&&(p=`AuthoringToolId="${E}"`),i+=`
|
|
227
|
-
<Component IfcGuid="${
|
|
228
|
-
`);return
|
|
226
|
+
`}processMarkupComment(t){const{Guid:e,Date:s,Author:n,Comment:r,Viewpoint:o}=t;if(!(e&&s&&n&&(ps||o)))return null;const a=this.components.get(jt),l=new ps(this.components,r??"");return l.guid=e,l.date=new Date(s),l.author=n,l.viewpoint=o!=null&&o.Guid?a.list.get(o.Guid):void 0,l.modifiedAuthor=t.ModifiedAuthor,l.modifiedDate=t.ModifiedDate?new Date(t.ModifiedDate):void 0,l}getMarkupComments(t,e){var o;let s;if(e==="2.1"&&(s=t.Comment),e==="3"&&(s=(o=t.Topic.Comments)==null?void 0:o.Comment),!s)return[];s=Array.isArray(s)?s:[s];const n=s.map(a=>this.processMarkupComment(a)).filter(a=>a);return Array.isArray(n)?n:[n]}getMarkupLabels(t,e){var r;let s;return e==="2.1"&&(s=t.Topic.Labels),e==="3"&&(s=(r=t.Topic.Labels)==null?void 0:r.Label),s?Array.isArray(s)?s:[s]:[]}getMarkupViewpoints(t,e){var n;let s;return e==="2.1"&&(s=t.Viewpoints),e==="3"&&(s=(n=t.Topic.Viewpoints)==null?void 0:n.ViewPoint),s?(s=Array.isArray(s)?s:[s],s):[]}getMarkupRelatedTopics(t,e){var r;let s;return e==="2.1"&&(s=t.Topic.RelatedTopic),e==="3"&&(s=(r=t.Topic.RelatedTopics)==null?void 0:r.RelatedTopic),s?(Array.isArray(s)?s:[s]).map(o=>o.Guid):[]}async load(t,e){var m;const{fallbackVersionOnImport:s,ignoreIncompleteTopicsOnImport:n,updateExtensionsOnImport:r}=this.config,o=new Lr;await o.loadAsync(t);const a=Object.values(o.files);let l=s;const h=a.find(F=>F.name.endsWith(".version"));if(h){const F=await h.async("string"),R=Me.xmlParser.parse(F).Version.VersionId;l=String(R)}if(!(l&&(l==="2.1"||l==="3")))throw new Error(`BCFTopics: ${l} is not supported.`);const f=a.find(F=>F.name.endsWith(".extensions"));if(r&&f){const F=await f.async("string");Fo(this,F)}const I=[],u=this.components.get(jt),d=a.filter(F=>F.name.endsWith(".bcfv"));for(const F of d){const R=await F.async("string"),S=Me.xmlParser.parse(R).VisualizationInfo;if(!S){console.warn("Missing VisualizationInfo in Viewpoint");continue}const N={},{Guid:L,ClippingPlanes:D,Components:P,OrthogonalCamera:v,PerspectiveCamera:z}=S;if(L&&(N.guid=L),P){const{Selection:w,Visibility:g}=P;if(w&&w.Component){const q=Array.isArray(w.Component)?w.Component:[w.Component];N.selectionComponents=q.map(Y=>Y.IfcGuid).filter(Y=>Y)}if(g&&"DefaultVisibility"in g&&(N.defaultVisibility=g.DefaultVisibility),g&&g.Exceptions&&"Component"in g.Exceptions){const{Component:q}=g.Exceptions,Y=Array.isArray(q)?q:[q];N.exceptionComponents=Y.map(et=>et.IfcGuid).filter(et=>et)}let U;l==="2.1"&&(U=P.ViewSetupHints),l==="3"&&(U=(m=P.Visibility)==null?void 0:m.ViewSetupHints),U&&("OpeningsVisible"in U&&(N.openingsVisible=U.OpeningsVisible),"SpacesVisible"in U&&(N.spacesVisible=U.SpacesVisible),"SpaceBoundariesVisible"in U&&(N.spaceBoundariesVisible=U.SpaceBoundariesVisible))}if(v||z){const w=S.PerspectiveCamera??S.OrthogonalCamera,{CameraViewPoint:g,CameraDirection:U}=w,q=new b.Vector3(Number(g.X),Number(g.Z),Number(-g.Y)),Y=new b.Vector3(Number(U.X),Number(U.Z),Number(-U.Y)),et={position:{x:q.x,y:q.y,z:q.z},direction:{x:Y.x,y:Y.y,z:Y.z},aspectRatio:"AspectRatio"in w?w.AspectRatio:1};"ViewToWorldScale"in w&&(N.camera={...et,viewToWorldScale:w.ViewToWorldScale}),"FieldOfView"in w&&(N.camera={...et,fov:w.FieldOfView})}const O=new kn(this.components,e,{data:N,setCamera:!1});if(P){const{Coloring:w}=P;if(w&&w.Color){const g=Array.isArray(w.Color)?w.Color:[w.Color];for(const U of g){const{Color:q,Component:Y}=U,X=(Array.isArray(Y)?Y:[Y]).map(nt=>nt.IfcGuid);O.componentColors.set(q,X)}}}if(I.push(O),D){const w=this.components.get(fs),g=Array.isArray(D.ClippingPlane)?D.ClippingPlane:[D.ClippingPlane];for(const U of g){const{Location:q,Direction:Y}=U;if(!(q&&Y))continue;const et=new b.Vector3(q.X,q.Z,-q.Y),X=new b.Vector3(Y.X,-Y.Z,Y.Y),nt=w.createFromNormalAndCoplanarPoint(e,X,et);nt.visible=!1,nt.enabled=!1,O.clippingPlanes.add(nt)}}}const E={},T=[],p=a.filter(F=>F.name.endsWith(".bcf"));for(const F of p){const R=await F.async("string"),S=Me.xmlParser.parse(R).Markup,N=S.Topic,{Guid:L,TopicType:D,TopicStatus:P,Title:v,CreationDate:z,CreationAuthor:O}=N;if(n&&!(L&&D&&P&&v&&z&&O))continue;const w=new _i(this.components);w.guid=L??w.guid;const g=this.getMarkupRelatedTopics(S,l);E[w.guid]=new Set(g),w.type=D??w.type,w.status=P??w.status,w.title=v??w.title,w.creationDate=z?new Date(z):w.creationDate,w.creationAuthor=O??w.creationAuthor,w.serverAssignedId=N.ServerAssignedId,w.priority=N.Priority,w.index=N.Index,w.modifiedDate=N.ModifiedDate?new Date(N.ModifiedDate):void 0,w.modifiedAuthor=N.ModifiedAuthor,w.dueDate=N.DueDate?new Date(N.DueDate):void 0,w.assignedTo=N.AssignedTo,w.description=N.Description,w.stage=N.Stage;const U=this.getMarkupLabels(S,l);for(const et of U)w.labels.add(et);const q=this.getMarkupComments(S,l);for(const et of q)w.comments.set(et.guid,et);const Y=this.getMarkupViewpoints(S,l);for(const et of Y){if(!(et&&et.Guid))continue;const X=u.list.get(et.Guid);X&&w.viewpoints.add(X.guid)}this.list.set(w.guid,w),T.push(w)}for(const F in E){const R=this.list.get(F);if(!R)continue;const S=E[F];for(const N of S)R.relatedTopics.add(N)}return this.onBCFImported.trigger(T),{viewpoints:I,topics:T}}};C(Me,"uuid","de977976-e4f6-4e4f-a01a-204727839802"),C(Me,"xmlParser",new Ao.XMLParser({allowBooleanAttributes:!0,attributeNamePrefix:"",ignoreAttributes:!1,ignoreDeclaration:!0,ignorePiTags:!0,numberParseOptions:{leadingZeros:!0,hex:!0},parseAttributeValue:!0,preserveOrder:!1,processEntities:!1,removeNSPrefix:!0,trimValues:!0}));let Mt=Me;const ee=class ee extends mt{constructor(t){super(t);C(this,"enabled",!0);C(this,"onDisposed",new j);C(this,"_absoluteMin");C(this,"_absoluteMax");C(this,"_meshes",[]);this.components.add(ee.uuid,this),this._absoluteMin=ee.newBound(!0),this._absoluteMax=ee.newBound(!1)}static getDimensions(t){const{min:e,max:s}=t,n=Math.abs(s.x-e.x),r=Math.abs(s.y-e.y),o=Math.abs(s.z-e.z),a=new b.Vector3;return a.subVectors(s,e).divideScalar(2).add(e),{width:n,height:r,depth:o,center:a}}static newBound(t){const e=t?1:-1;return new b.Vector3(e*Number.MAX_VALUE,e*Number.MAX_VALUE,e*Number.MAX_VALUE)}static getBounds(t,e,s){const n=s||this.newBound(!1),r=e||this.newBound(!0);for(const o of t)o.x<r.x&&(r.x=o.x),o.y<r.y&&(r.y=o.y),o.z<r.z&&(r.z=o.z),o.x>n.x&&(n.x=o.x),o.y>n.y&&(n.y=o.y),o.z>n.z&&(n.z=o.z);return new b.Box3(e,s)}dispose(){const t=this.components.get(Ce);for(const e of this._meshes)t.destroy(e);this._meshes=[],this.onDisposed.trigger(ee.uuid),this.onDisposed.reset()}get(){const t=this._absoluteMin.clone(),e=this._absoluteMax.clone();return new b.Box3(t,e)}getSphere(){const t=this._absoluteMin.clone(),e=this._absoluteMax.clone(),s=Math.abs((e.x-t.x)/2),n=Math.abs((e.y-t.y)/2),r=Math.abs((e.z-t.z)/2),o=new b.Vector3(t.x+s,t.y+n,t.z+r),a=o.distanceTo(t);return new b.Sphere(o,a)}getMesh(){const t=new b.Box3(this._absoluteMin,this._absoluteMax),e=ee.getDimensions(t),{width:s,height:n,depth:r,center:o}=e,a=new b.BoxGeometry(s,n,r),l=new b.Mesh(a);return this._meshes.push(l),l.position.copy(o),l}reset(){this._absoluteMin=ee.newBound(!0),this._absoluteMax=ee.newBound(!1)}add(t){for(const e of t.items)this.addMesh(e.mesh)}addMesh(t,e){if(!t.geometry.index)return;const s=ee.getFragmentBounds(t);t.updateMatrixWorld();const n=t.matrixWorld,r=new b.Matrix4,o=t instanceof b.InstancedMesh,a=new Set;if(t instanceof qt.FragmentMesh){e||(e=t.fragment.ids);for(const l of e){const h=t.fragment.getInstancesIDs(l);if(h)for(const f of h)a.add(f)}}else a.add(0);for(const l of a){const h=s.min.clone(),f=s.max.clone();o&&(t.getMatrixAt(l,r),h.applyMatrix4(r),f.applyMatrix4(r)),h.applyMatrix4(n),f.applyMatrix4(n),h.x<this._absoluteMin.x&&(this._absoluteMin.x=h.x),h.y<this._absoluteMin.y&&(this._absoluteMin.y=h.y),h.z<this._absoluteMin.z&&(this._absoluteMin.z=h.z),h.x>this._absoluteMax.x&&(this._absoluteMax.x=h.x),h.y>this._absoluteMax.y&&(this._absoluteMax.y=h.y),h.z>this._absoluteMax.z&&(this._absoluteMax.z=h.z),f.x>this._absoluteMax.x&&(this._absoluteMax.x=f.x),f.y>this._absoluteMax.y&&(this._absoluteMax.y=f.y),f.z>this._absoluteMax.z&&(this._absoluteMax.z=f.z),f.x<this._absoluteMin.x&&(this._absoluteMin.x=f.x),f.y<this._absoluteMin.y&&(this._absoluteMin.y=f.y),f.z<this._absoluteMin.z&&(this._absoluteMin.z=f.z)}}addFragmentIdMap(t){const e=this.components.get(pt);for(const s in t){const n=e.list.get(s);if(!n)continue;const r=t[s];this.addMesh(n.mesh,r)}}static getFragmentBounds(t){const e=t.geometry.attributes.position,s=Number.MAX_VALUE,n=-s,r=new b.Vector3(s,s,s),o=new b.Vector3(n,n,n);if(!t.geometry.index)throw new Error("Geometry must be indexed!");const a=Array.from(t.geometry.index.array);for(let l=0;l<a.length;l++){if(l%3===0&&a[l]===0&&a[l+1]===0&&a[l+2]===0){l+=2;continue}const h=a[l],f=e.getX(h),I=e.getY(h),u=e.getZ(h);f<r.x&&(r.x=f),I<r.y&&(r.y=I),u<r.z&&(r.z=u),f>o.x&&(o.x=f),I>o.y&&(o.y=I),u>o.z&&(o.z=u)}return new b.Box3(r,o)}};C(ee,"uuid","d1444724-dba6-4cdd-a0c7-68ee1450d166");let Cs=ee;const Ns=class Ns{constructor(i){C(this,"onProgress",new j);C(this,"inclusive",!1);C(this,"rules",[]);C(this,"ids",{});C(this,"needsUpdate",new Map);C(this,"components");this.components=i}static import(i,t){const e=Ns.importers.get(t.type);return e?e(i,t):(console.warn("Invalid query data:.",t),null)}static importRules(i){const t=[];for(const e of i){const s={};for(const n in e){const r=e[n];r.regexp?s[n]=new RegExp(r.value):s[n]=r}t.push(s)}return t}static importIds(i){const t={};for(const e in i.ids)t[e]=new Set(i.ids[e]);return t}clear(i){if(i===void 0){this.ids={},this.needsUpdate.clear();return}delete this.ids[i],this.needsUpdate.delete(i)}addID(i,t){this.ids[i]||(this.ids[i]=new Set),this.ids[i].add(t)}getData(){const i={};for(const e in this.ids)i[e]=Array.from(this.ids[e]);const t=this.exportRules();return{name:this.name,inclusive:this.inclusive,type:"IfcFinderQuery",ids:i,rules:t}}exportRules(){const i=[];for(const t of this.rules){const e={};for(const s in t){const n=t[s];n instanceof RegExp?e[s]={regexp:!0,value:n.source}:e[s]=n}i.push(e)}return i}findInFile(i,t){return new Promise(e=>{const s=new FileReader,n=new TextDecoder("utf-8"),r=1e4*1024,o=1e3;let a=0;const l=/;/,h=()=>{if(a>=t.size){e();return}const f=Math.min(a+r+o,t.size),I=t.slice(a,f);s.readAsArrayBuffer(I)};s.onload=()=>{if(!(s.result instanceof ArrayBuffer))return;const f=new Uint8Array(s.result),u=n.decode(f).split(l);u.shift(),this.findInLines(i,u),this.onProgress.trigger(a/t.size),a+=r,h()},h()})}getIdFromLine(i){const t=i.slice(i.indexOf("#")+1,i.indexOf("="));return parseInt(t,10)}testRules(i){let t=null,e=null,s=null,n=!1;for(const r of this.rules){if(r.type==="category"){if(t===null&&(t=this.getCategoryFromLine(i),t===null)){if(this.inclusive)continue;break}if(!r.value.test(t)){if(this.inclusive)continue;n=!1;break}n=!0;continue}if(e===null&&(e=this.getAttributesFromLine(i),e===null)){if(this.inclusive)continue;n=!1;break}if(t===null&&(t=this.getCategoryFromLine(i),t===null)){if(this.inclusive)continue;n=!1;break}if(s===null&&(s=Object.keys(new k.IFC4[t]),s=s.slice(2),s===null)){if(this.inclusive)continue;n=!1;break}if(r.type==="property"){const{name:o,value:a}=r;if(!a.test(i)){if(this.inclusive)continue;n=!1;break}let l=!1;for(let h=0;h<e.length;h++){const f=e[h],I=s[h];if(a.test(f)&&o.test(I)){l=!0;break}}if(l)n=!0;else if(!this.inclusive){n=!1;break}}if(r.type==="operator"){const{name:o,value:a,operator:l}=r;let h=!1;for(let f=0;f<e.length;f++){const I=s[f],u=e[f].replace(/IFCLENGTHMEASURE\(|IFCVOLUMEMEASURE\(|\)/g,"");if(o.test(I)){if(l==="="&&parseFloat(u)===a){h=!0;break}else if(l==="<"&&parseFloat(u)<a){h=!0;break}else if(l===">"&&parseFloat(u)>a){h=!0;break}else if(l===">="&&parseFloat(u)>=a){h=!0;break}else if(l==="<="&&parseFloat(u)<=a){h=!0;break}}}if(h)n=!0;else if(!this.inclusive){n=!1;break}}}return n}getCategoryFromLine(i){const t=i.indexOf("=")+1,e=i.indexOf("("),s=i.slice(t,e).trim(),n=ao[s];return n||null}getAttributesFromLine(i){const t=/\((.*)\)/,e=i.match(t);if(!(e&&e[1]))return null;const s=/,(?![^()]*\))/g;return e[1].split(s).map(r=>r.trim())}};C(Ns,"importers",new Map);let Qt=Ns;class br{constructor(i){C(this,"list",new Map);C(this,"id",b.MathUtils.generateUUID());C(this,"mode","intersect");C(this,"_components");this._components=i}get queries(){return new Set(this.list.values())}get items(){const i=[];for(const t of this.queries)i.push(t.items);return this.mode==="combine"?qt.FragmentUtils.combine(i):qt.FragmentUtils.intersect(i)}add(i){if(this.list.has(i.name))throw new Error(`This group already has a query with the name ${i.name}.`);this.list.set(i.name,i)}clear(i){for(const t of this.queries)t.clear(i)}import(i){this.mode=i.mode,this.id=i.id;for(const t in i.queries){const e=Qt.import(this._components,i.queries[t]);e&&this.list.set(t,e)}}export(){const i={};for(const[t,e]of this.list)i[t]=e.export();return{mode:this.mode,id:this.id,queries:i}}async update(i,t){for(const e of this.queries){const s=e.needsUpdate.get(i);(s===void 0||s)&&await e.update(i,t)}}}const ys=class ys extends Qt{constructor(t,e){super(t);C(this,"name");this.name=e.name,this.rules=e.rules,this.inclusive=e.inclusive}get items(){const t=this.components.get(pt),e=[];for(const s in this.ids){const n=this.ids[s],r=t.groups.get(s);if(!r){console.warn(`Model ${s} not found!`);continue}const o=r.getFragmentMap(n);e.push(o)}return qt.FragmentUtils.combine(e)}export(){const t=this.getData();return t.type=ys.type,t}async update(t,e){this.ids[t]=new Set,await this.findInFile(t,e),this.needsUpdate.set(t,!1)}findInLines(t,e){for(const s of e)if(this.testRules(s)){const r=this.getIdFromLine(s);this.addID(t,r)}}};C(ys,"type","IfcBasicQuery");let Mi=ys;Qt.importers.set(Mi.type,(c,i)=>{const t=new Mi(c,{name:i.name,rules:Qt.importRules(i.rules),inclusive:i.inclusive});return t.ids=Qt.importIds(i),t});const Ls=class Ls extends Qt{constructor(t,e){super(t);C(this,"name");C(this,"psets",[]);this.name=e.name,this.rules=e.rules,this.inclusive=e.inclusive}get items(){const t=this.components.get(Bt),e=this.components.get(pt),s=[];for(const n in this.ids){const r=e.groups.get(n);if(!r){console.log(`Model not found: ${n}.`);continue}const o=this.ids[n];for(const a of o){const l=t.getEntityRelations(n,a,"DefinesOcurrence");if(l){const h=r.getFragmentMap(l);s.push(h)}}}return qt.FragmentUtils.combine(s)}export(){const t=this.getData();return t.type=Ls.type,t}async update(t,e){await this.findInFile(t,e);const s=new Set;for(const n of this.psets){const r=this.getAttributesFromLine(n);if(r===null)continue;const o=r[4].replace("(","[").replace(")","]").replace(/#/g,""),a=JSON.parse(o);for(const l of a){const h=this.ids[t];if(h&&h.has(l)){const f=this.getIdFromLine(n);s.add(f);break}}}this.ids[t]=s,this.psets=[],this.needsUpdate.set(t,!1)}findInLines(t,e){for(const s of e){const n=this.getCategoryFromLine(s);if(n==="IfcPropertySet"){this.psets.push(s);continue}if(n!=="IfcPropertySingleValue")continue;if(this.testRules(s)){const o=this.getIdFromLine(s);this.addID(t,o)}}}};C(Ls,"type","IfcPropertyQuery");let wi=Ls;Qt.importers.set(wi.type,(c,i)=>{const t=new wi(c,{name:i.name,inclusive:i.inclusive,rules:Qt.importRules(i.rules)});return t.ids=Qt.importIds(i),t});const Ps=class Ps extends mt{constructor(t){super(t);C(this,"enabled",!0);C(this,"list",new Map);t.add(Ps.uuid,this)}get queries(){const t=new Set;for(const[,e]of this.list)for(const s of e.queries)t.add(s);return t}import(t){for(const e in t){const s=new br(this.components);s.import(t[e]),this.list.set(e,s)}}export(){const t={};for(const[e,s]of this.list)t[e]=s.export();return t}create(){const t=new br(this.components);return this.list.set(t.id,t),t}delete(t){this.list.delete(t)}clear(){this.list.clear()}};C(Ps,"uuid","0da7ad77-f734-42ca-942f-a074adfd1e3a");let yn=Ps;const _s=class _s extends mt{constructor(t){super(t);C(this,"enabled",!0);C(this,"list",{});C(this,"onDisposed",new j);C(this,"onFragmentsDisposed",t=>{const{groupID:e,fragmentIDs:s}=t;for(const n in this.list){const r=this.list[n],o=Object.keys(r);if(o.includes(e))delete r[e],Object.values(r).length===0&&delete this.list[n];else for(const a of o){const l=r[a];for(const h of s)delete l.map[h];Object.values(l).length===0&&delete r[a]}}});t.add(_s.uuid,this),t.get(pt).onFragmentsDisposed.add(this.onFragmentsDisposed)}dispose(){this.list={},this.components.get(pt).onFragmentsDisposed.remove(this.onFragmentsDisposed),this.onDisposed.trigger(),this.onDisposed.reset()}remove(t){for(const e in this.list){const s=this.list[e];for(const n in s){const r=s[n];delete r.map[t]}}}find(t){const e=this.components.get(pt);if(!t){const o={};for(const[a,l]of e.list)o[a]=new Set(l.ids);return o}const s=Object.keys(t).length,n={};for(const o in t){const a=t[o];if(!this.list[o]){console.warn(`Classification ${o} does not exist.`);continue}for(const l of a){const h=this.list[o][l];if(h)for(const f in h.map){n[f]||(n[f]=new Map);for(const I of h.map[f]){const u=n[f].get(I);u===void 0?n[f].set(I,1):n[f].set(I,u+1)}}}}const r={};for(const o in n){const a=n[o];for(const[l,h]of a){if(h===void 0)throw new Error("Malformed fragments map!");h===s&&(r[o]||(r[o]=new Set),r[o].add(l))}}return r}byModel(t,e){this.list.models||(this.list.models={});const s=this.list.models;s[t]||(s[t]={map:{},id:null,name:t});const n=s[t];for(const[r,o]of e.data){const a=o[0];for(const l of a){const h=e.keyFragments.get(l);h&&(n.map[h]||(n.map[h]=new Set),n.map[h].add(r))}}}async byPredefinedType(t){var n;this.list.predefinedTypes||(this.list.predefinedTypes={});const e=this.list.predefinedTypes,s=t.getAllPropertiesIDs();for(const r of s){const o=await t.getProperties(r);if(!o)continue;const a=String((n=o.PredefinedType)==null?void 0:n.value).toUpperCase();e[a]||(e[a]={map:{},id:null,name:a});const l=e[a];for(const[h,f]of t.data){const I=f[0];for(const u of I){const d=t.keyFragments.get(u);if(!d)throw new Error("Fragment ID not found!");l.map[d]||(l.map[d]=new Set),l.map[d].add(o.expressID)}}}}byEntity(t){this.list.entities||(this.list.entities={});for(const[e,s]of t.data){const r=s[1][1],o=Pi[r];this.saveItem(t,"entities",o,e)}}async byIfcRel(t,e,s){De.isRel(e)&&await De.getRelationMap(t,e,async(n,r)=>{const{name:o}=await De.getEntityName(t,n);for(const a of r)this.saveItem(t,s,o??"NO REL NAME",a)})}async bySpatialStructure(t,e={}){var l,h;const s=this.components.get(Bt),n=s.relationMaps[t.uuid];if(!n)throw new Error(`Classifier: model relations of ${t.name||t.uuid} have to exists to group by spatial structure.`);const r="spatialStructures",a=e.useProperties===void 0||e.useProperties;for(const[f]of n){if(e.isolate){const E=t.data.get(f);if(!E)continue;const T=E[1][1];if(T===void 0||!e.isolate.has(T))continue}const I=s.getEntityRelations(t,f,"Decomposes");if(I)for(const E of I){let T=E.toString();if(a){const p=await t.getProperties(E);if(!p)continue;T=(l=p.Name)==null?void 0:l.value}this.saveItem(t,r,T,f,E)}const u=s.getEntityRelations(t,f,"ContainsElements");if(!u)continue;let d=f.toString();if(a){const E=await t.getProperties(f);if(!E)continue;d=(h=E.Name)==null?void 0:h.value}for(const E of u){this.saveItem(t,r,d,E,f);const T=s.getEntityRelations(t,Number(E),"IsDecomposedBy");if(T)for(const p of T)this.saveItem(t,r,d,p,f)}}}setColor(t,e,s=!1){const n=this.components.get(pt);for(const r in t){const o=n.list.get(r);if(!o)continue;const a=t[r];o.setColor(e,a,s)}}resetColor(t){const e=this.components.get(pt);for(const s in t){const n=e.list.get(s);if(!n)continue;const r=t[s];n.resetColor(r)}}saveItem(t,e,s,n,r=null){this.list[e]||(this.list[e]={});const o=t.data.get(n);if(o)for(const a of o[0]){const l=t.keyFragments.get(a);if(l){const h=this.list[e];h[s]||(h[s]={map:{},id:r,name:s}),h[s].map[l]||(h[s].map[l]=new Set),h[s].map[l].add(n)}}}};C(_s,"uuid","e25a7f3c-46c4-4a14-9d3d-5115f24ebeb7");let Ke=_s;const Ms=class Ms extends mt{constructor(t){super(t);C(this,"onDisposed",new j);C(this,"enabled",!0);C(this,"height",10);C(this,"groupName","spatialStructures");C(this,"list",new Set);t.add(Ms.uuid,this)}dispose(){this.list.clear(),this.onDisposed.trigger(),this.onDisposed.reset()}set(t){if(!this.enabled)return;const e=this.components.get(Ke),s=this.components.get(pt),n=t?1:-1;let r=0;const o=e.list[this.groupName],a=new b.Matrix4;for(const l in o){a.elements[13]=r*n*this.height;for(const h in o[l].map){const f=s.list.get(h),I=l+h,u=this.list.has(I);if(!f||t&&u||!t&&!u)continue;t?this.list.add(I):this.list.delete(I);const d=o[l].map[h];f.applyTransform(d,a),f.mesh.computeBoundingSphere(),f.mesh.computeBoundingBox()}r++}}};C(Ms,"uuid","d260618b-ce88-4c7d-826c-6debb91de3e2");let Ln=Ms;const ws=class ws extends mt{constructor(t){super(t);C(this,"enabled",!0);this.components.add(ws.uuid,this)}set(t,e){const s=this.components.get(pt);if(!e){for(const[n,r]of s.list)r&&(r.setVisibility(t),this.updateCulledVisibility(r));return}for(const n in e){const r=e[n],o=s.list.get(n);o&&(o.setVisibility(t,r),this.updateCulledVisibility(o))}}isolate(t){this.set(!1),this.set(!0,t)}updateCulledVisibility(t){const e=this.components.get(us);for(const[s,n]of e.list){const r=n.colorMeshes.get(t.id);r&&(r.count=t.mesh.count)}}};C(ws,"uuid","dd9ccf2d-8a21-4821-b7f6-2949add16a29");let Ts=ws;class Oo extends zs{constructor(){super(...arguments);C(this,"minGeometrySize",10);C(this,"minAssetsSize",1e3);C(this,"maxTriangles",null)}}const Ds=class Ds extends mt{constructor(t){super(t);C(this,"onGeometryStreamed",new j);C(this,"onAssetStreamed",new j);C(this,"onProgress",new j);C(this,"onIfcLoaded",new j);C(this,"onDisposed",new j);C(this,"settings",new Oo);C(this,"enabled",!0);C(this,"webIfc",new k.IfcAPI);C(this,"_nextAvailableID",0);C(this,"_splittedGeometries",new Map);C(this,"_spatialTree",new co);C(this,"_metaData",new ho);C(this,"_visitedGeometries",new Map);C(this,"_streamSerializer",new qt.StreamSerializer);C(this,"_geometries",new Map);C(this,"_geometryCount",0);C(this,"_civil",new lo);C(this,"_groupSerializer",new qt.Serializer);C(this,"_assets",[]);C(this,"_meshesWithHoles",new Set);this.components.add(Ds.uuid,this),this.settings.excludedCategories.add(k.IFCOPENINGELEMENT)}dispose(){this.onIfcLoaded.reset(),this.onGeometryStreamed.reset(),this.onAssetStreamed.reset(),this.webIfc=null,this.onDisposed.trigger(),this.onDisposed.reset()}async streamFromBuffer(t){await this.readIfcFile(t),await this.streamAllGeometries(),this.cleanUp()}async streamFromCallBack(t){await this.streamIfcFile(t),await this.streamAllGeometries(),this.cleanUp()}async readIfcFile(t){const{path:e,absolute:s,logLevel:n}=this.settings.wasm;this.webIfc.SetWasmPath(e,s),await this.webIfc.Init(),n&&this.webIfc.SetLogLevel(n),this.webIfc.OpenModel(t,this.settings.webIfc),this._nextAvailableID=this.webIfc.GetMaxExpressID(0)}async streamIfcFile(t){const{path:e,absolute:s,logLevel:n}=this.settings.wasm;this.webIfc.SetWasmPath(e,s),await this.webIfc.Init(),n&&this.webIfc.SetLogLevel(n),this.webIfc.OpenModelFromCallback(t,this.settings.webIfc)}async streamAllGeometries(){const{minGeometrySize:t,minAssetsSize:e}=this.settings;this._spatialTree.setUp(this.webIfc);const s=this.webIfc.GetIfcEntityList(0),n=[[]],r=new qt.FragmentsGroup;r.ifcMetadata={name:"",description:"",...this._metaData.getNameInfo(this.webIfc),...this._metaData.getDescriptionInfo(this.webIfc),schema:this.webIfc.GetModelSchema(0)||"IFC2X3",maxExpressID:this.webIfc.GetMaxExpressID(0)};let o=0,a=0;for(const E of s){if(!this.webIfc.IsIfcElement(E)&&E!==k.IFCSPACE||this.settings.excludedCategories.has(E))continue;const T=this.webIfc.GetLineIDsWithType(0,E),p=T.size();for(let m=0;m<p;m++){o>t&&(o=0,a++,n.push([]));const F=T.get(m);n[a].push(F);const R=this.webIfc.GetLine(0,F);if(R.GlobalId){const N=(R==null?void 0:R.GlobalId.value)||(R==null?void 0:R.GlobalId);r.globalToExpressIDs.set(N,F)}const S=this._spatialTree.itemsByFloor[F]||0;r.data.set(F,[[],[S,E]]),o++}}this._spatialTree.cleanUp();let l=.01,h=0;for(const E of n){h++,this.webIfc.StreamMeshes(0,E,p=>{this.getMesh(this.webIfc,p,r)}),this._assets.length>e&&await this.streamAssets();const T=h/n.length;T>l&&(l+=.01,l=Math.max(l,T),this.onProgress.trigger(Math.round(l*100)/100))}this._geometryCount&&await this.streamGeometries(),this._assets.length&&await this.streamAssets();const{opaque:f,transparent:I}=r.geometryIDs;for(const[E,{index:T,uuid:p}]of this._visitedGeometries)r.keyFragments.set(T,p),(E>1?f:I).set(E,T);uo.get(r,this.webIfc);const u=this.webIfc.GetCoordinationMatrix(0);r.coordinationMatrix.fromArray(u),r.civilData=this._civil.read(this.webIfc);const d=this._groupSerializer.export(r);this.onIfcLoaded.trigger(d),r.dispose(!0)}cleanUp(){try{this.webIfc.Dispose()}catch{}this.webIfc=null,this.webIfc=new k.IfcAPI,this._visitedGeometries.clear(),this._geometries.clear(),this._assets=[],this._meshesWithHoles.clear()}getMesh(t,e,s){const n=e.geometries.size(),r=e.expressID,o={id:r,geometries:[]};for(let a=0;a<n;a++){const l=e.geometries.get(a),h=l.geometryExpressID,f=l.color.w===1,u=h*(f?1:-1);this._visitedGeometries.has(u)||this.getGeometry(t,h,f),this.registerGeometryData(s,r,l,o,h,u);const d=this._splittedGeometries.get(h);if(d)for(const E of d)this.registerGeometryData(s,r,l,o,E,E)}this._assets.push(o)}getGeometry(t,e,s){const n=t.GetGeometry(0,e),r=t.GetIndexArray(n.GetIndexData(),n.GetIndexDataSize()),o=t.GetVertexArray(n.GetVertexData(),n.GetVertexDataSize()),a=new Float32Array(o.length/2),l=new Float32Array(o.length/2);for(let u=0;u<o.length;u+=6)a[u/2]=o[u],a[u/2+1]=o[u+1],a[u/2+2]=o[u+2],l[u/2]=o[u+3],l[u/2+1]=o[u+4],l[u/2+2]=o[u+5];const f=(this.settings.maxTriangles||r.length/3)*3;let I=!0;for(let u=0;u<r.length;u+=f){const d=r.length-u,E=Math.min(d,f),T=u+E,p=[],m=[],F=[];let R=0;for(let q=u;q<T;q++){p.push(R++);const Y=r[q];m.push(a[Y*3]),m.push(a[Y*3+1]),m.push(a[Y*3+2]),F.push(l[Y*3]),F.push(l[Y*3+1]),F.push(l[Y*3+2])}const S=new Uint32Array(p),N=new Float32Array(m),L=new Float32Array(F),D=kr(N),P=new Float32Array(D.transformation.elements),v=!1,z=I?e:this._nextAvailableID++;this._geometries.set(z,{position:N,normal:L,index:S,boundingBox:P,hasHoles:v}),I||(this._splittedGeometries.has(e)||this._splittedGeometries.set(e,new Set),this._splittedGeometries.get(e).add(z));const w=z*(s?1:-1),g=this._visitedGeometries.size,U=b.MathUtils.generateUUID();this._visitedGeometries.set(w,{uuid:U,index:g}),this._geometryCount++,I=!1,this._geometryCount>this.settings.minGeometrySize&&this.streamGeometries()}n.delete()}async streamAssets(){await this.onAssetStreamed.trigger(this._assets),this._assets=null,this._assets=[]}streamGeometries(){let t=this._streamSerializer.export(this._geometries),e={};for(const[s,{boundingBox:n,hasHoles:r}]of this._geometries)e[s]={boundingBox:n,hasHoles:r};this.onGeometryStreamed.trigger({data:e,buffer:t}),e=null,t=null,this._geometries.clear(),this._geometryCount=0}registerGeometryData(t,e,s,n,r,o){const a=this._visitedGeometries.get(o);if(a===void 0)throw new Error("Error getting geometry data for streaming!");const l=t.data.get(e);if(!l)throw new Error("Data not found!");l[0].push(a.index);const{x:h,y:f,z:I,w:u}=s.color,d=[h,f,I,u],E=s.flatTransformation;n.geometries.push({color:d,geometryID:r,transformation:E})}};C(Ds,"uuid","d9999a00-e1f5-4d3f-8cfe-c56e08609764");let Pn=Ds;class No extends zs{constructor(){super(...arguments);C(this,"propertiesSize",100)}}class yo extends mt{constructor(){super(...arguments);C(this,"onPropertiesStreamed",new gi);C(this,"onProgress",new gi);C(this,"onIndicesStreamed",new gi);C(this,"onDisposed",new j);C(this,"enabled",!0);C(this,"settings",new No);C(this,"webIfc",new k.IfcAPI)}async dispose(){this.onIndicesStreamed.reset(),this.onPropertiesStreamed.reset(),this.webIfc=null,this.onDisposed.reset()}async streamFromBuffer(t){await this.readIfcFile(t),await this.streamAllProperties(),this.cleanUp()}async streamFromCallBack(t){await this.streamIfcFile(t),await this.streamAllProperties(),this.cleanUp()}async readIfcFile(t){const{path:e,absolute:s,logLevel:n}=this.settings.wasm;this.webIfc.SetWasmPath(e,s),await this.webIfc.Init(),n&&this.webIfc.SetLogLevel(n),this.webIfc.OpenModel(t,this.settings.webIfc)}async streamIfcFile(t){const{path:e,absolute:s,logLevel:n}=this.settings.wasm;this.webIfc.SetWasmPath(e,s),await this.webIfc.Init(),n&&this.webIfc.SetLogLevel(n),this.webIfc.OpenModelFromCallback(t,this.settings.webIfc)}async streamAllProperties(){const{propertiesSize:t}=this.settings,e=new Set(this.webIfc.GetIfcEntityList(0)),s=new Set([k.IFCPROJECT,k.IFCSITE,k.IFCBUILDING,k.IFCBUILDINGSTOREY,k.IFCSPACE]);for(const l of s)e.add(l);let n=.01,r=0;for(const l of e){if(r++,Vn.has(l))continue;const h=s.has(l),f=this.webIfc.GetLineIDsWithType(0,l),I=f.size();let u=0;for(let E=0;E<I-t;E+=t){const T={};for(let p=0;p<t;p++){u++;const m=f.get(E+p);try{const F=this.webIfc.GetLine(0,m,h);T[F.expressID]=F}catch{console.log(`Could not get property: ${m}`)}}await this.onPropertiesStreamed.trigger({type:l,data:T})}if(u!==I){const E={};for(let T=u;T<I;T++){const p=f.get(T);try{const m=this.webIfc.GetLine(0,p,h);E[m.expressID]=m}catch{console.log(`Could not get property: ${p}`)}}await this.onPropertiesStreamed.trigger({type:l,data:E})}r/e.size>n&&(n=Math.round(n*100)/100,await this.onProgress.trigger(n),n+=.01)}await this.onProgress.trigger(1);const a=await this.components.get(Bt).processFromWebIfc(this.webIfc,0);await this.onIndicesStreamed.trigger(a)}cleanUp(){this.webIfc.Dispose(),this.webIfc=null,this.webIfc=new k.IfcAPI}}C(yo,"uuid","88d2c89c-ce32-47d7-8cb6-d51e4b311a0b");class kn{constructor(i,t,e){C(this,"title");C(this,"guid",ne.create());C(this,"clippingPlanes",new ue);C(this,"camera",{aspectRatio:0,fov:0,direction:{x:0,y:0,z:80},position:{x:0,y:0,z:0}});C(this,"exceptionComponents",new ue);C(this,"selectionComponents",new ue);C(this,"componentColors",new se);C(this,"spacesVisible",!1);C(this,"spaceBoundariesVisible",!1);C(this,"openingsVisible",!1);C(this,"defaultVisibility",!0);C(this,"_components");C(this,"world");const s={setCamera:!0,...e},{data:n,setCamera:r}=s;this._components=i,this.world=t,n&&(this.guid=n.guid??this.guid,this.set(n)),r&&this.updateCamera()}get _selectionModelIdMap(){const i=this._components.get(pt),t={};for(const[e,s]of i.groups){e in t||(t[e]=new Set);for(const n of this.selectionComponents){const r=s.globalToExpressIDs.get(n);r&&t[e].add(r)}}return t}get _exceptionModelIdMap(){const i=this._components.get(pt),t={};for(const[e,s]of i.groups){e in t||(t[e]=new Set);for(const n of this.exceptionComponents){const r=s.globalToExpressIDs.get(n);r&&t[e].add(r)}}return t}get selection(){return this._components.get(pt).modelIdToFragmentIdMap(this._selectionModelIdMap)}get exception(){return this._components.get(pt).modelIdToFragmentIdMap(this._exceptionModelIdMap)}get projection(){return"fov"in this.camera?"Perspective":"Orthographic"}get position(){const i=this._components.get(pt),{position:t}=this.camera,{x:e,y:s,z:n}=t,r=new b.Vector3(e,s,n);return i.applyBaseCoordinateSystem(r,new b.Matrix4),r}get direction(){const{direction:i}=this.camera,{x:t,y:e,z:s}=i;return new b.Vector3(t,e,s)}get _managerVersion(){return this._components.get(Mt).config.version}get topics(){return[...this._components.get(Mt).list.values()].filter(s=>s.viewpoints.has(this.guid))}addComponentsFromMap(i){const e=this._components.get(pt).fragmentIdMapToGuids(i);this.selectionComponents.add(...e),this._components.get(jt).list.set(this.guid,this)}set(i){const t=i,e=this;for(const n in i){if(n==="guid")continue;const r=t[n];if(n==="selectionComponents"){this.selectionComponents.clear(),this.selectionComponents.add(...r);continue}if(n==="exceptionComponents"){this.exceptionComponents.clear(),this.exceptionComponents.add(...r);continue}n in this&&(e[n]=r)}return this._components.get(jt).list.set(this.guid,this),this}async go(i=!0){const{camera:t}=this.world;if(!t.hasCameraControls())throw new Error("Viewpoint: the world's camera need controls to set the viewpoint.");t instanceof ro&&t.projection.set(this.projection);const e=this.position,s=this.direction;let n={x:e.x+s.x*80,y:e.y+s.y*80,z:e.z+s.z*80};const r=this.selection;if(Object.keys(r).length===0){const h=this._components.get(be).get(this.world).castRayFromVector(e,this.direction);h&&(n=h.point)}else{const a=this._components.get(Cs);a.reset(),a.addFragmentIdMap(r),n=a.getSphere().center,a.reset()}const o=this._components.get(Ts);o.set(this.defaultVisibility),o.set(!this.defaultVisibility,this.exception),o.set(!0,r),await t.controls.setLookAt(e.x,e.y,e.z,n.x,n.y,n.z,i)}updateCamera(){const{camera:i,renderer:t}=this.world;if(!t)throw new Error("Viewpoint: the world needs to have a renderer!");if(!i.hasCameraControls())throw new Error("Viewpoint: world's camera need camera controls!");const e=new b.Vector3;i.controls.getPosition(e);const s=i.three,n=new b.Vector3(0,0,-1).applyEuler(s.rotation),{width:r,height:o}=t.getSize();let a=r/o;Number.isNaN(a)&&(a=1);const l=this._components.get(pt);e.applyMatrix4(l.baseCoordinationMatrix.clone().invert());const h={aspectRatio:a,position:{x:e.x,y:e.y,z:e.z},direction:{x:n.x,y:n.y,z:n.z}};s instanceof b.PerspectiveCamera?this.camera={...h,fov:s.fov}:s instanceof b.OrthographicCamera&&(this.camera={...h,viewToWorldScale:s.top-s.bottom}),this._components.get(jt).list.set(this.guid,this)}colorize(){const i=this._components.get(jt),t=this._components.get(pt),e=this._components.get(Ke);for(const[s,n]of this.componentColors){const r=t.guidToFragmentIdMap(n),o=new b.Color(`#${s}`);e.setColor(r,o,i.config.overwriteColors)}}resetColors(){const i=this._components.get(pt),t=this._components.get(Ke);for(const[e,s]of this.componentColors){const n=i.guidToFragmentIdMap(s);t.resetColor(n)}}async createComponentTags(i){var n,r;const t=this._components.get(pt),e=this._components.get(Mt);let s="";if(e.config.includeSelectionTag){const o=i==="selection"?this._selectionModelIdMap:this._exceptionModelIdMap;for(const a in o){const l=t.groups.get(a);if(!l)continue;const h=o[a];for(const f of h){const I=await l.getProperties(f);if(!I)continue;const u=(n=I.GlobalId)==null?void 0:n.value;if(!u)continue;const d=(r=I.Tag)==null?void 0:r.value;let E=null;d&&(E=`AuthoringToolId="${d}"`),s+=`
|
|
227
|
+
<Component IfcGuid="${u}" ${E??""} />`}}}else s=[...this.selectionComponents].map(o=>`<Component IfcGuid="${o}" />`).join(`
|
|
228
|
+
`);return s}async serialize(i=this._managerVersion){const t=this._components.get(pt),e=this.position;e.applyMatrix4(t.baseCoordinationMatrix.clone().invert());const s=this.direction;s.normalize();const n=new b.Matrix4().makeRotationX(Math.PI/2),r=s.clone().applyMatrix4(n);r.normalize();const o=`<CameraViewPoint>
|
|
229
|
+
<X>${e.x}</X>
|
|
230
|
+
<Y>${-e.z}</Y>
|
|
231
|
+
<Z>${e.y}</Z>
|
|
232
|
+
</CameraViewPoint>`,a=`<CameraDirection>
|
|
229
233
|
<X>${s.x}</X>
|
|
230
234
|
<Y>${-s.z}</Y>
|
|
231
235
|
<Z>${s.y}</Z>
|
|
232
|
-
</CameraViewPoint>`,a=`<CameraDirection>
|
|
233
|
-
<X>${i.x}</X>
|
|
234
|
-
<Y>${-i.z}</Y>
|
|
235
|
-
<Z>${i.y}</Z>
|
|
236
236
|
</CameraDirection>`,l=`<CameraUpVector>
|
|
237
237
|
<X>${r.x}</X>
|
|
238
238
|
<Y>${-r.z}</Y>
|
|
239
239
|
<Z>${r.y}</Z>
|
|
240
|
-
</CameraUpVector>`,h=`<AspectRatio>${this.camera.aspectRatio}</AspectRatio>`;let
|
|
240
|
+
</CameraUpVector>`,h=`<AspectRatio>${this.camera.aspectRatio}</AspectRatio>`;let f="";"viewToWorld"in this.camera?f=`<OrthogonalCamera>
|
|
241
241
|
${o}
|
|
242
242
|
${a}
|
|
243
243
|
${l}
|
|
244
244
|
${h}
|
|
245
245
|
<ViewToWorldScale>${this.camera.viewToWorld}</ViewToWorldScale>
|
|
246
|
-
</OrthogonalCamera>`:"fov"in this.camera&&(
|
|
246
|
+
</OrthogonalCamera>`:"fov"in this.camera&&(f=`<PerspectiveCamera>
|
|
247
247
|
${o}
|
|
248
248
|
${a}
|
|
249
249
|
${l}
|
|
250
250
|
${h}
|
|
251
251
|
<FieldOfView>${this.camera.fov}</FieldOfView>
|
|
252
|
-
</PerspectiveCamera>`);const
|
|
252
|
+
</PerspectiveCamera>`);const I=`<ViewSetupHints SpacesVisible="${this.spacesVisible??!1}" SpaceBoundariesVisible="${this.spaceBoundariesVisible??!1}" OpeningsVisible="${this.openingsVisible??!1}" />`,u=(await this.createComponentTags("selection")).trim(),d=(await this.createComponentTags("exception")).trim();return`<?xml version="1.0" encoding="UTF-8"?>
|
|
253
253
|
<VisualizationInfo Guid="${this.guid}">
|
|
254
254
|
<Components>
|
|
255
|
-
${
|
|
256
|
-
${
|
|
255
|
+
${i==="2.1"?I:""}
|
|
256
|
+
${u.length!==0?`<Selection>${u}</Selection>`:""}
|
|
257
257
|
<Visibility DefaultVisibility="${this.defaultVisibility}">
|
|
258
|
-
${
|
|
259
|
-
${
|
|
258
|
+
${i==="3"?I:""}
|
|
259
|
+
${d.length!==0?`<Exceptions>${d}</Exceptions>`:""}
|
|
260
260
|
</Visibility>
|
|
261
261
|
</Components>
|
|
262
|
-
${
|
|
263
|
-
</VisualizationInfo>`}}class gl extends Pe{constructor(){super(...arguments);g(this,"_config",{overwriteColors:{value:!1,type:"Boolean"}})}get overwriteColors(){return this._config.overwriteColors.value}set overwriteColors(t){this._config.overwriteColors.value=t}}const _i=class _i extends At{constructor(t){super(t);g(this,"enabled",!0);g(this,"list",new Oe);g(this,"isSetup",!1);g(this,"onSetup",new Q);g(this,"config",new gl(this,this.components,"Viewpoints"));g(this,"onDisposed",new Q);t.add(_i.uuid,this)}create(t,s){const i=new On(this.components,t,{data:s});return s||this.list.set(i.guid,i),i}setup(){}dispose(){this.list.dispose(),this.onDisposed.trigger(),this.onDisposed.reset()}};g(_i,"uuid","ee867824-a796-408d-8aa0-4e5962a83c66");let Zt=_i;class ao{constructor(e){g(this,"onDisposed",new Q);g(this,"onAfterUpdate",new Q);g(this,"onBeforeUpdate",new Q);g(this,"onResize",new Q);g(this,"frontOffset",0);g(this,"overrideMaterial",new M.MeshDepthMaterial);g(this,"backgroundColor",new M.Color(395274));g(this,"renderer");g(this,"enabled",!0);g(this,"world");g(this,"_lockRotation",!0);g(this,"_camera");g(this,"_plane");g(this,"_size",new M.Vector2(320,160));g(this,"_tempVector1",new M.Vector3);g(this,"_tempVector2",new M.Vector3);g(this,"_tempTarget",new M.Vector3);g(this,"down",new M.Vector3(0,-1,0));g(this,"updatePlanes",()=>{if(!this.world.renderer)throw new Error("The given world must have a renderer!");const e=[],t=this.world.renderer.three;for(const s of t.clippingPlanes)e.push(s);e.push(this._plane),this.renderer.clippingPlanes=e});if(this.world=e,!this.world.renderer)throw new Error("The given world must have a renderer!");this.renderer=new M.WebGLRenderer,this.renderer.setSize(this._size.x,this._size.y);const t=1,s=this._size.x/this._size.y;this._camera=new M.OrthographicCamera(t*s/-2,t*s/2,t/2,t/-2),this.world.renderer.onClippingPlanesUpdated.add(this.updatePlanes),this._camera.position.set(0,200,0),this._camera.zoom=.1,this._camera.rotation.x=-Math.PI/2,this._plane=new M.Plane(this.down,200),this.updatePlanes()}get lockRotation(){return this._lockRotation}set lockRotation(e){this._lockRotation=e,e&&(this._camera.rotation.z=0)}get zoom(){return this._camera.zoom}set zoom(e){this._camera.zoom=e,this._camera.updateProjectionMatrix()}dispose(){this.enabled=!1,this.onBeforeUpdate.reset(),this.onAfterUpdate.reset(),this.onResize.reset(),this.overrideMaterial.dispose(),this.renderer.forceContextLoss(),this.renderer.dispose(),this.onDisposed.trigger(),this.onDisposed.reset()}get(){return this._camera}update(){if(!this.enabled)return;this.onBeforeUpdate.trigger();const e=this.world.scene.three,t=this.world.camera;if(!t.hasCameraControls())throw new Error("The given world must use camera controls!");if(!(e instanceof M.Scene))throw new Error("The given world must have a THREE.Scene as a root!");const s=t.controls;if(s.getPosition(this._tempVector1),this._camera.position.x=this._tempVector1.x,this._camera.position.z=this._tempVector1.z,this.frontOffset!==0&&(s.getTarget(this._tempVector2),this._tempVector2.sub(this._tempVector1),this._tempVector2.normalize().multiplyScalar(this.frontOffset),this._camera.position.x+=this._tempVector2.x,this._camera.position.z+=this._tempVector2.z),!this._lockRotation){s.getTarget(this._tempTarget);const n=Math.atan2(this._tempTarget.x-this._tempVector1.x,this._tempTarget.z-this._tempVector1.z);this._camera.rotation.z=n+Math.PI}this._plane.set(this.down,this._tempVector1.y);const i=e.background;e.background=this.backgroundColor,this.renderer.render(e,this._camera),e.background=i,this.onAfterUpdate.trigger()}getSize(){return this._size}resize(e=this._size){this._size.copy(e),this.renderer.setSize(e.x,e.y);const t=e.x/e.y,s=1;this._camera.left=s*t/-2,this._camera.right=s*t/2,this._camera.top=s/2,this._camera.bottom=-s/2,this._camera.updateProjectionMatrix(),this.onResize.trigger(e)}}const Ai=class Ai extends At{constructor(t){super(t);g(this,"onAfterUpdate",new Q);g(this,"onBeforeUpdate",new Q);g(this,"onDisposed",new Q);g(this,"enabled",!0);g(this,"list",new Map);this.components.add(Ai.uuid,this)}create(t){if(this.list.has(t.uuid))throw new Error("This world already has a minimap!");const s=new ao(t);return this.list.set(t.uuid,s),s}delete(t){const s=this.list.get(t);s&&s.dispose(),this.list.delete(t)}dispose(){for(const[t,s]of this.list)s.dispose();this.list.clear(),this.onDisposed.trigger()}update(){for(const[t,s]of this.list)s.update()}};g(Ai,"uuid","39ad6aad-84c8-4adf-a1e0-7f25313a9e7f");let mn=Ai;const yi=class yi extends At{constructor(t){super(t);g(this,"enabled",!0);t.add(yi.uuid,this)}static distanceFromPointToLine(t,s,i,n=!1){const r=new M.Line3,o=new M.Vector3;return r.set(s,i),r.closestPointToPoint(t,n,o),o.distanceTo(t)}getFace(t,s,i){if(!t.geometry.index)throw new Error("Geometry must be indexed!");const n=new Map,r=t.geometry.index.array,{plane:o}=this.getFaceData(s,i,t),a=[];for(let d=0;d<r.length/3;d++){const{plane:f,edges:E}=this.getFaceData(d,i,t);if(f.equals(o)){a.push({index:d,edges:E});for(const{id:p,points:I,distance:m}of E)n.set(p,{points:I,distance:m})}}let l=0;const h=new Map,u=new Map;for(const{index:d,edges:f}of a){const E=new Map;for(const{id:y}of f)if(h.has(y)){const F=h.get(y);E.set(y,F)}const p=f.map(y=>y.id);if(!E.size){const y=l++;for(const{id:F}of f)h.set(F,y);u.set(y,{edges:new Set(p),indices:new Set([d])});continue}let I=null;const m=new Set,_=new Set(p);for(const[y,F]of E){I===null?I=F:F!==I&&m.add(F),h.delete(y);const{edges:O}=u.get(F);O.delete(y),_.delete(y)}if(I===null)throw new Error("Error computing face!");const R=u.get(I),{indices:C}=R;C.add(d);for(const y of _){h.set(y,I);const{edges:F}=R;F.add(y)}for(const y of m){const F=u.get(y),{edges:O,indices:v}=F,N=u.get(I),{edges:x,indices:G}=N;for(const w of O)x.add(w),h.set(w,I);for(const w of v)G.add(w);u.delete(y)}}for(const[d,{indices:f,edges:E}]of u)if(f.has(s)){const p=[];for(const I of E){const m=n.get(I);p.push(m)}return{edges:p,indices:f}}return null}getVerticesAndNormal(t,s,i){if(!t.geometry.index)throw new Error("Geometry must be indexed!");const n=t.geometry.index.array,r=t.geometry.attributes.position.array,o=t.geometry.attributes.normal.array,a=n[s*3]*3,l=n[s*3+1]*3,h=n[s*3+2]*3,u=new M.Vector3(r[a],r[a+1],r[a+2]),d=new M.Vector3(r[l],r[l+1],r[l+2]),f=new M.Vector3(r[h],r[h+1],r[h+2]),E=new M.Vector3(o[a],o[a+1],o[a+2]),p=new M.Vector3(o[l],o[l+1],o[l+2]),I=new M.Vector3(o[h],o[h+1],o[h+2]),m=(E.x+p.x+I.x)/3,_=(E.y+p.y+I.y)/3,R=(E.z+p.z+I.z)/3,C=new M.Vector3(m,_,R);if(i!==void 0&&t instanceof M.InstancedMesh){const y=new M.Matrix4;t.getMatrixAt(i,y);const F=new M.Matrix4;F.extractRotation(y),C.applyMatrix4(F),u.applyMatrix4(y),d.applyMatrix4(y),f.applyMatrix4(y)}return{p1:u,p2:d,p3:f,faceNormal:C}}round(t){t.x=Math.trunc(t.x*1e3)/1e3,t.y=Math.trunc(t.y*1e3)/1e3,t.z=Math.trunc(t.z*1e3)/1e3}getVolumeFromFragments(t){const s=this.components.get(Tt),i=new M.Matrix4,n=[];for(const o in t){const a=s.list.get(o);if(!a)continue;const l=t[o];let h=0;for(const f of l){const E=a.getInstancesIDs(f);E&&(h+=E.size)}const u=new M.InstancedMesh(a.mesh.geometry,void 0,h);let d=0;for(const f of l){const E=a.getInstancesIDs(f);if(E)for(const p of E)a.mesh.getMatrixAt(p,i),u.setMatrixAt(d++,i)}n.push(u)}const r=this.getVolumeFromMeshes(n);for(const o of n)o.geometry=null,o.material=[],o.dispose();return r}getVolumeFromMeshes(t){let s=0;for(const i of t)s+=this.getVolumeOfMesh(i);return s}getFaceData(t,s,i){const n=this.getVerticesAndNormal(i,t,s),{p1:r,p2:o,p3:a,faceNormal:l}=n;this.round(r),this.round(o),this.round(a),this.round(l);const h=[{id:`${r.x}|${r.y}|${r.z}`,value:r},{id:`${o.x}|${o.y}|${o.z}`,value:o},{id:`${a.x}|${a.y}|${a.z}`,value:a}];h.sort((R,C)=>R.id<C.id?-1:R.id>C.id?1:0);const[{id:u,value:d},{id:f,value:E},{id:p,value:I}]=h,m=[{id:`${u}|${f}`,distance:d.distanceTo(E),points:[d,E]},{id:`${f}|${p}`,distance:E.distanceTo(I),points:[E,I]},{id:`${u}|${p}`,distance:d.distanceTo(I),points:[d,I]}],_=new M.Plane;return _.setFromNormalAndCoplanarPoint(l,r),_.constant=Math.round(_.constant*10)/10,{plane:_,edges:m}}getVolumeOfMesh(t){let s=0;const i=new M.Vector3,n=new M.Vector3,r=new M.Vector3,{index:o}=t.geometry,a=t.geometry.attributes.position.array;if(!o)return console.warn("Geometry must be indexed to compute its volume!"),0;const l=[];if(t instanceof M.InstancedMesh)for(let u=0;u<t.count;u++){const d=new M.Matrix4;t.getMatrixAt(u,d),l.push(d)}else l.push(new M.Matrix4().identity());const{matrixWorld:h}=t;for(let u=0;u<o.array.length-2;u+=3)for(const d of l){const f=d.multiply(h),E=o.array[u]*3,p=o.array[u+1]*3,I=o.array[u+2]*3;i.set(a[E],a[E+1],a[E+2]).applyMatrix4(f),n.set(a[p],a[p+1],a[p+2]).applyMatrix4(f),r.set(a[I],a[I+1],a[I+2]).applyMatrix4(f),s+=this.getSignedVolumeOfTriangle(i,n,r)}return Math.abs(s)}getSignedVolumeOfTriangle(t,s,i){const n=i.x*s.y*t.z,r=s.x*i.y*t.z,o=i.x*t.y*s.z,a=t.x*i.y*s.z,l=s.x*t.y*i.z,h=t.x*s.y*i.z;return 1/6*(-n+r+o-a-l+h)}};g(yi,"uuid","267ca032-672f-4cb0-afa9-d24e904f39d6");let In=yi;exports.AsyncEvent=Is;exports.BCFTopics=Pt;exports.BCFTopicsConfigManager=Kr;exports.Base=Fi;exports.BaseCamera=Rr;exports.BaseRenderer=wr;exports.BaseScene=Fr;exports.BaseWorldItem=Si;exports.BoundingBoxer=oi;exports.Classifier=$e;exports.Clipper=ni;exports.Comment=ri;exports.Component=At;exports.ComponentWithUI=Ta;exports.Components=ei;exports.ConfigManager=$t;exports.Configurator=Pe;exports.CullerRenderer=vr;exports.Cullers=ii;exports.DataMap=Oe;exports.DataSet=Se;exports.Disposer=le;exports.Event=Q;exports.Exploder=pn;exports.FirstPersonMode=zr;exports.FragmentsManager=Tt;exports.GeometryTypes=Fn;exports.Grids=hn;exports.Hider=li;exports.IfcCategories=ml;exports.IfcCategoryMap=Sn;exports.IfcElements=Jr;exports.IfcFragmentSettings=bi;exports.IfcGeometryTiler=En;exports.IfcJsonExporter=ai;exports.IfcLoader=ci;exports.IfcPropertiesManager=fn;exports.IfcPropertiesTiler=oo;exports.IfcPropertiesUtils=ge;exports.IfcRelationsIndexer=be;exports.IfcStreamingSettings=no;exports.MaterialsUtils=ln;exports.MeasurementUtils=In;exports.MeshCullerRenderer=Mr;exports.MiniMap=ao;exports.MiniMaps=mn;exports.Mouse=xr;exports.OrbitMode=Vr;exports.OrthoPerspectiveCamera=Yr;exports.PlanMode=kr;exports.ProjectionManager=Gr;exports.PropertiesStreamingSettings=ro;exports.Raycasters=Ne;exports.ShadowedScene=Ga;exports.SimpleCamera=Ze;exports.SimpleGrid=Br;exports.SimpleGridConfigManager=Ur;exports.SimplePlane=Oi;exports.SimpleRaycaster=Dr;exports.SimpleRenderer=va;exports.SimpleScene=br;exports.SimpleSceneConfigManager=Nr;exports.SimpleWorld=Or;exports.Topic=ys;exports.UUID=he;exports.VertexPicker=ba;exports.Viewpoint=On;exports.Viewpoints=Zt;exports.Worlds=si;exports.extensionsImporter=qr;exports.isPointInFrontOfPlane=Na;exports.obbFromPoints=Sr;exports.readPixelsAsync=An;
|
|
262
|
+
${f}
|
|
263
|
+
</VisualizationInfo>`}}class zl extends Oe{constructor(){super(...arguments);C(this,"_config",{overwriteColors:{value:!1,type:"Boolean"}})}get overwriteColors(){return this._config.overwriteColors.value}set overwriteColors(t){this._config.overwriteColors.value=t}}const bs=class bs extends mt{constructor(t){super(t);C(this,"enabled",!0);C(this,"list",new se);C(this,"isSetup",!1);C(this,"onSetup",new j);C(this,"config",new zl(this,this.components,"Viewpoints"));C(this,"onDisposed",new j);t.add(bs.uuid,this)}create(t,e){const s=new kn(this.components,t,{data:e});return e||this.list.set(s.guid,s),s}setup(){}dispose(){this.list.dispose(),this.onDisposed.trigger(),this.onDisposed.reset()}};C(bs,"uuid","ee867824-a796-408d-8aa0-4e5962a83c66");let jt=bs;class Lo extends Oe{constructor(){super(...arguments);C(this,"_config",{visible:{value:!0,type:"Boolean"},lockRotation:{value:!0,type:"Boolean"},zoom:{type:"Number",interpolable:!0,value:.05,min:.001,max:5},frontOffset:{type:"Number",interpolable:!0,value:0,min:0,max:100},sizeX:{type:"Number",interpolable:!0,value:320,min:20,max:5e3},sizeY:{type:"Number",interpolable:!0,value:160,min:20,max:5e3},backgroundColor:{value:new b.Color,type:"Color"}})}get visible(){return this._config.visible.value}set visible(t){this._config.visible.value=t;const e=this._component.renderer.domElement.style;e.display=t?"block":"none"}get lockRotation(){return this._config.lockRotation.value}set lockRotation(t){this._config.lockRotation.value=t,this._component.lockRotation=t}get zoom(){return this._config.zoom.value}set zoom(t){this._config.zoom.value=t,this._component.zoom=t}get frontOffset(){return this._config.frontOffset.value}set frontOffset(t){this._config.frontOffset.value=t,this._component.frontOffset=t}get sizeX(){return this._config.sizeX.value}set sizeX(t){this._config.sizeX.value=t;const{sizeX:e,sizeY:s}=this._config,n=new b.Vector2(e.value,s.value);this._component.resize(n)}get sizeY(){return this._config.sizeY.value}set sizeY(t){this._config.sizeY.value=t;const{sizeX:e,sizeY:s}=this._config,n=new b.Vector2(e.value,s.value);this._component.resize(n)}get backgroundColor(){return this._config.backgroundColor.value}set backgroundColor(t){this._config.backgroundColor.value=t,this._component.backgroundColor=t}}class Po{constructor(i,t){C(this,"onDisposed",new j);C(this,"onAfterUpdate",new j);C(this,"onBeforeUpdate",new j);C(this,"onResize",new j);C(this,"onSetup",new j);C(this,"frontOffset",0);C(this,"overrideMaterial",new b.MeshDepthMaterial);C(this,"backgroundColor",new b.Color(395274));C(this,"renderer");C(this,"enabled",!0);C(this,"world");C(this,"config");C(this,"isSetup",!1);C(this,"_defaultConfig",{visible:!0,lockRotation:!1,zoom:.05,frontOffset:0,sizeX:320,sizeY:160,backgroundColor:new b.Color(395274)});C(this,"_lockRotation",!0);C(this,"_size",new b.Vector2(320,160));C(this,"_camera");C(this,"_plane");C(this,"_tempVector1",new b.Vector3);C(this,"_tempVector2",new b.Vector3);C(this,"_tempTarget",new b.Vector3);C(this,"down",new b.Vector3(0,-1,0));C(this,"updatePlanes",()=>{if(!this.world.renderer)throw new Error("The given world must have a renderer!");const i=[],t=this.world.renderer.three;for(const e of t.clippingPlanes)i.push(e);i.push(this._plane),this.renderer.clippingPlanes=i});if(this.world=i,!this.world.renderer)throw new Error("The given world must have a renderer!");this.renderer=new b.WebGLRenderer,this.renderer.setSize(this._size.x,this._size.y);const e=1,s=this._size.x/this._size.y;this._camera=new b.OrthographicCamera(e*s/-2,e*s/2,e/2,e/-2),this.world.renderer.onClippingPlanesUpdated.add(this.updatePlanes),this._camera.position.set(0,200,0),this._camera.zoom=.1,this._camera.rotation.x=-Math.PI/2,this._plane=new b.Plane(this.down,200),this.updatePlanes(),this.config=new Lo(this,t,"MiniMap"),t.get(Gt).list.add(this.config)}get lockRotation(){return this._lockRotation}set lockRotation(i){this._lockRotation=i,i&&(this._camera.rotation.z=0)}get zoom(){return this._camera.zoom}set zoom(i){this._camera.zoom=i,this._camera.updateProjectionMatrix()}dispose(){this.enabled=!1,this.onBeforeUpdate.reset(),this.onAfterUpdate.reset(),this.onResize.reset(),this.overrideMaterial.dispose(),this.renderer.forceContextLoss(),this.renderer.dispose(),this.onDisposed.trigger(),this.onDisposed.reset()}get(){return this._camera}update(){if(!this.enabled)return;this.onBeforeUpdate.trigger();const i=this.world.scene.three,t=this.world.camera;if(!t.hasCameraControls())throw new Error("The given world must use camera controls!");if(!(i instanceof b.Scene))throw new Error("The given world must have a THREE.Scene as a root!");const e=t.controls;if(e.getPosition(this._tempVector1),this._camera.position.x=this._tempVector1.x,this._camera.position.z=this._tempVector1.z,this.frontOffset!==0&&(e.getTarget(this._tempVector2),this._tempVector2.sub(this._tempVector1),this._tempVector2.normalize().multiplyScalar(this.frontOffset),this._camera.position.x+=this._tempVector2.x,this._camera.position.z+=this._tempVector2.z),!this._lockRotation){e.getTarget(this._tempTarget);const n=Math.atan2(this._tempTarget.x-this._tempVector1.x,this._tempTarget.z-this._tempVector1.z);this._camera.rotation.z=n+Math.PI}this._plane.set(this.down,this._tempVector1.y);const s=i.background;i.background=this.backgroundColor,this.renderer.render(i,this._camera),i.background=s,this.onAfterUpdate.trigger()}getSize(){return this._size}resize(i=this._size){this._size.copy(i),this.renderer.setSize(i.x,i.y);const t=i.x/i.y,e=1;this._camera.left=e*t/-2,this._camera.right=e*t/2,this._camera.top=e/2,this._camera.bottom=-e/2,this._camera.updateProjectionMatrix(),this.onResize.trigger(i)}setup(i){const t={...this._defaultConfig,...i};this.config.visible=!0,this.config.lockRotation=t.lockRotation,this.config.zoom=t.zoom,this.config.frontOffset=t.frontOffset,this.config.sizeX=t.sizeX,this.config.sizeY=t.sizeY,this.config.backgroundColor=t.backgroundColor,this.isSetup=!0,this.onSetup.trigger()}}const vs=class vs extends mt{constructor(t){super(t);C(this,"onAfterUpdate",new j);C(this,"onBeforeUpdate",new j);C(this,"onDisposed",new j);C(this,"onSetup",new j);C(this,"enabled",!0);C(this,"list",new Map);this.components.add(vs.uuid,this)}create(t){if(this.list.has(t.uuid))throw new Error("This world already has a minimap!");const e=new Po(t,this.components);return this.list.set(t.uuid,e),e}delete(t){const e=this.list.get(t);e&&e.dispose(),this.list.delete(t)}dispose(){for(const[t,e]of this.list)e.dispose();this.list.clear(),this.onDisposed.trigger()}update(){for(const[t,e]of this.list)e.update()}};C(vs,"uuid","39ad6aad-84c8-4adf-a1e0-7f25313a9e7f");let _n=vs;const Us=class Us extends mt{constructor(t){super(t);C(this,"enabled",!0);t.add(Us.uuid,this)}static distanceFromPointToLine(t,e,s,n=!1){const r=new b.Line3,o=new b.Vector3;return r.set(e,s),r.closestPointToPoint(t,n,o),o.distanceTo(t)}getFace(t,e,s){if(!t.geometry.index)throw new Error("Geometry must be indexed!");const n=new Map,r=t.geometry.index.array,{plane:o}=this.getFaceData(e,s,t),a=[];for(let I=0;I<r.length/3;I++){const{plane:u,edges:d}=this.getFaceData(I,s,t);if(u.equals(o)){a.push({index:I,edges:d});for(const{id:E,points:T,distance:p}of d)n.set(E,{points:T,distance:p})}}let l=0;const h=new Map,f=new Map;for(const{index:I,edges:u}of a){const d=new Map;for(const{id:S}of u)if(h.has(S)){const N=h.get(S);d.set(S,N)}const E=u.map(S=>S.id);if(!d.size){const S=l++;for(const{id:N}of u)h.set(N,S);f.set(S,{edges:new Set(E),indices:new Set([I])});continue}let T=null;const p=new Set,m=new Set(E);for(const[S,N]of d){T===null?T=N:N!==T&&p.add(N),h.delete(S);const{edges:L}=f.get(N);L.delete(S),m.delete(S)}if(T===null)throw new Error("Error computing face!");const F=f.get(T),{indices:R}=F;R.add(I);for(const S of m){h.set(S,T);const{edges:N}=F;N.add(S)}for(const S of p){const N=f.get(S),{edges:L,indices:D}=N,P=f.get(T),{edges:v,indices:z}=P;for(const O of L)v.add(O),h.set(O,T);for(const O of D)z.add(O);f.delete(S)}}for(const[I,{indices:u,edges:d}]of f)if(u.has(e)){const E=[];for(const T of d){const p=n.get(T);E.push(p)}return{edges:E,indices:u}}return null}getVerticesAndNormal(t,e,s){if(!t.geometry.index)throw new Error("Geometry must be indexed!");const n=t.geometry.index.array,r=t.geometry.attributes.position.array,o=t.geometry.attributes.normal.array,a=n[e*3]*3,l=n[e*3+1]*3,h=n[e*3+2]*3,f=new b.Vector3(r[a],r[a+1],r[a+2]),I=new b.Vector3(r[l],r[l+1],r[l+2]),u=new b.Vector3(r[h],r[h+1],r[h+2]),d=new b.Vector3(o[a],o[a+1],o[a+2]),E=new b.Vector3(o[l],o[l+1],o[l+2]),T=new b.Vector3(o[h],o[h+1],o[h+2]),p=(d.x+E.x+T.x)/3,m=(d.y+E.y+T.y)/3,F=(d.z+E.z+T.z)/3,R=new b.Vector3(p,m,F);if(s!==void 0&&t instanceof b.InstancedMesh){const S=new b.Matrix4;t.getMatrixAt(s,S);const N=new b.Matrix4;N.extractRotation(S),R.applyMatrix4(N),f.applyMatrix4(S),I.applyMatrix4(S),u.applyMatrix4(S)}return{p1:f,p2:I,p3:u,faceNormal:R}}round(t){t.x=Math.trunc(t.x*1e3)/1e3,t.y=Math.trunc(t.y*1e3)/1e3,t.z=Math.trunc(t.z*1e3)/1e3}getVolumeFromFragments(t){const e=this.components.get(pt),s=new b.Matrix4,n=[];for(const o in t){const a=e.list.get(o);if(!a)continue;const l=t[o];let h=0;for(const u of l){const d=a.getInstancesIDs(u);d&&(h+=d.size)}const f=new b.InstancedMesh(a.mesh.geometry,void 0,h);let I=0;for(const u of l){const d=a.getInstancesIDs(u);if(d)for(const E of d)a.mesh.getMatrixAt(E,s),f.setMatrixAt(I++,s)}n.push(f)}const r=this.getVolumeFromMeshes(n);for(const o of n)o.geometry=null,o.material=[],o.dispose();return r}getVolumeFromMeshes(t){let e=0;for(const s of t)e+=this.getVolumeOfMesh(s);return e}getFaceData(t,e,s){const n=this.getVerticesAndNormal(s,t,e),{p1:r,p2:o,p3:a,faceNormal:l}=n;this.round(r),this.round(o),this.round(a),this.round(l);const h=[{id:`${r.x}|${r.y}|${r.z}`,value:r},{id:`${o.x}|${o.y}|${o.z}`,value:o},{id:`${a.x}|${a.y}|${a.z}`,value:a}];h.sort((F,R)=>F.id<R.id?-1:F.id>R.id?1:0);const[{id:f,value:I},{id:u,value:d},{id:E,value:T}]=h,p=[{id:`${f}|${u}`,distance:I.distanceTo(d),points:[I,d]},{id:`${u}|${E}`,distance:d.distanceTo(T),points:[d,T]},{id:`${f}|${E}`,distance:I.distanceTo(T),points:[I,T]}],m=new b.Plane;return m.setFromNormalAndCoplanarPoint(l,r),m.constant=Math.round(m.constant*10)/10,{plane:m,edges:p}}getVolumeOfMesh(t){let e=0;const s=new b.Vector3,n=new b.Vector3,r=new b.Vector3,{index:o}=t.geometry,a=t.geometry.attributes.position.array;if(!o)return console.warn("Geometry must be indexed to compute its volume!"),0;const l=[];if(t instanceof b.InstancedMesh)for(let f=0;f<t.count;f++){const I=new b.Matrix4;t.getMatrixAt(f,I),l.push(I)}else l.push(new b.Matrix4().identity());const{matrixWorld:h}=t;for(let f=0;f<o.array.length-2;f+=3)for(const I of l){const u=I.multiply(h),d=o.array[f]*3,E=o.array[f+1]*3,T=o.array[f+2]*3;s.set(a[d],a[d+1],a[d+2]).applyMatrix4(u),n.set(a[E],a[E+1],a[E+2]).applyMatrix4(u),r.set(a[T],a[T+1],a[T+2]).applyMatrix4(u),e+=this.getSignedVolumeOfTriangle(s,n,r)}return Math.abs(e)}getSignedVolumeOfTriangle(t,e,s){const n=s.x*e.y*t.z,r=e.x*s.y*t.z,o=s.x*t.y*e.z,a=t.x*s.y*e.z,l=e.x*t.y*s.z,h=t.x*e.y*s.z;return 1/6*(-n+r+o-a-l+h)}};C(Us,"uuid","267ca032-672f-4cb0-afa9-d24e904f39d6");let Mn=Us;class Di{constructor(i){C(this,"cardinality","required");C(this,"instructions");C(this,"evalRequirement",(i,t,e,s)=>{const n={parameter:e,currentValue:i,requiredValue:t.parameter,pass:!1};s&&this.addCheckResult(n,s);let r=!1;if(t.type==="simple"){const o=t.parameter;r=i===o}if(t.type==="enumeration"&&(r=t.parameter.includes(i)),t.type==="pattern"){const o=t.parameter;r=new RegExp(o).test(String(i))}if(t.type==="length"){const o=t.parameter,{min:a,length:l,max:h}=o;l!==void 0&&(r=String(i).length===l),a!==void 0&&(r=String(i).length>=a),h!==void 0&&(r=String(i).length<=h)}if(t.type==="bounds"&&typeof i=="number"){const{min:o,minInclusive:a,max:l,maxInclusive:h}=t.parameter;let f=!0,I=!0;o!==void 0&&(f=a?i<=o:i<o),l!==void 0&&(I=h?i>=l:i>l),r=f&&I}return this.cardinality==="prohibited"&&(r=!r),this.cardinality==="optional"&&(r=!0),n.pass=r,n.pass});C(this,"testResult",[]);this.components=i}addCheckResult(i,t){const e=t.findIndex(({parameter:s})=>s===i.parameter);e!==-1?t[e]=i:t.push(i)}saveResult(i,t){const{GlobalId:e}=i;if(!e)return;const{value:s}=e,n={expressID:s,pass:t,checks:[],cardinality:this.cardinality};this.testResult.push(n)}}const de=(c,i)=>{let t="";return i?(i.type==="simple"&&(t=`<ids:simpleValue>${i.parameter}</ids:simpleValue>`),i.type==="enumeration"&&(t=`<xs:restriction base="xs:string">
|
|
264
|
+
${i.parameter.map(n=>`<xs:enumeration value="${n}" />`).join(`\r
|
|
265
|
+
`)}
|
|
266
|
+
</xs:restriction>`),i.type==="pattern"&&(t=`<xs:restriction base="xs:string">
|
|
267
|
+
<xs:pattern value="${i.parameter}" />
|
|
268
|
+
</xs:restriction>`),`<ids:${c[0].toLowerCase()+c.slice(1)}>
|
|
269
|
+
${t}
|
|
270
|
+
</ids:${c[0].toLowerCase()+c.slice(1)}>`):t};class _o extends Di{constructor(t,e){super(t);C(this,"name");C(this,"value");this.name=e}serialize(t){const e=de("Name",this.name),s=de("Value",this.value);let n="";return t==="requirement"&&(n+=`cardinality="${this.cardinality}"`,n+=this.instructions?`instructions="${this.instructions}"`:""),`<ids:attribute ${n}>
|
|
271
|
+
${e}
|
|
272
|
+
${s}
|
|
273
|
+
</ids:attribute>`}async getEntities(){return[]}async test(t){var s;this.testResult=[];for(const n in t){const r=Number(n),o=t[r],a=[],l={guid:(s=o.GlobalId)==null?void 0:s.value,expressID:r,pass:!1,checks:a,cardinality:this.cardinality};this.testResult.push(l);const f=Object.keys(o).filter(u=>{const d=this.evalRequirement(u,this.name,"Name"),E=o[u];return d&&E===null?this.cardinality==="optional"||this.cardinality==="prohibited":d&&(E==null?void 0:E.type)===3&&E.value===2||d&&Array.isArray(E)&&E.length===0||d&&(E==null?void 0:E.type)===1&&E.value.trim()===""?!1:d}),I=f.length>0;if(a.push({parameter:"Name",currentValue:I?f[0]:null,requiredValue:this.name.parameter,pass:this.cardinality==="prohibited"?!I:I}),this.value)if(f[0]){const u=o[f[0]];(u==null?void 0:u.type)===5?a.push({parameter:"Value",currentValue:null,requiredValue:this.value.parameter,pass:this.cardinality==="prohibited"}):this.evalRequirement(u?u.value:null,this.value,"Value",a)}else a.push({parameter:"Value",currentValue:null,requiredValue:this.value.parameter,pass:this.cardinality==="prohibited"});l.pass=a.every(({pass:u})=>u)}const e=[...this.testResult];return this.testResult=[],e}}class Mo extends Di{constructor(t,e){super(t);C(this,"system");C(this,"value");C(this,"uri");this.system=e}serialize(t){const e=de("System",this.system),s=de("Value",this.value);let n="";return t==="requirement"&&(n+=`cardinality="${this.cardinality}"`,n+=this.uri?`uri=${this.uri}`:"",n+=this.instructions?`instructions="${this.instructions}"`:""),`<ids:classification ${n}>
|
|
274
|
+
${e}
|
|
275
|
+
${s}
|
|
276
|
+
</ids:classification>`}async getEntities(t,e={}){var h;const s=[],n=await t.getAllPropertiesOfType(k.IFCCLASSIFICATIONREFERENCE),r=await t.getAllPropertiesOfType(k.IFCCLASSIFICATION),o={...n,...r},a=[];for(const f in o){const I=Number(f),u=await t.getProperties(I);if(!u)continue;const d=(h=u.ReferencedSource)==null?void 0:h.value;if(!d)continue;const E=await t.getProperties(d);!E||!this.evalSystem(E)||!this.evalValue(u)||!this.evalURI(u)||a.push(I)}const l=this.components.get(Bt);for(const f of a){const I=l.getEntitiesWithRelation(t,"HasAssociations",f);for(const u of I){if(u in e)continue;const d=await t.getProperties(u);d&&(e[u]=d,s.push(u))}}return s}async test(t,e){var n;this.testResult=[];for(const r in t){const o=Number(r),a=t[o],l=[],h={guid:(n=a.GlobalId)==null?void 0:n.value,expressID:o,pass:!1,checks:l,cardinality:this.cardinality};this.testResult.push(h);let f=!0;const I=await this.getSystems(e,o),u=I.map(d=>this.getSystemName(d)).filter(d=>d);for(const d of I){if(!this.evalSystem(d,l))continue;if(f=!1,!(this.value&&this.system))break;if(d.type!==k.IFCCLASSIFICATIONREFERENCE)continue;const T=!this.value||this.evalValue(d,l),p=!this.uri||this.evalURI(d,l);if(T&&p)break}f&&this.addCheckResult({parameter:"System",currentValue:u,requiredValue:this.system,pass:this.cardinality==="optional"},l),h.pass=l.every(({pass:d})=>d)}const s=[...this.testResult];return this.testResult=[],s}async processReferencedSource(t,e){var r;const s=(r=e.ReferencedSource)==null?void 0:r.value;if(!s)return null;const n=await t.getProperties(s);return n?(n.type===k.IFCCLASSIFICATIONREFERENCE&&(n.ReferencedSource=await this.processReferencedSource(t,n)),n):null}async getSystems(t,e){var f;const s=[],n=this.components.get(Bt),r=n.getEntityRelations(t,e,"HasAssociations");if(r)for(const I of r){const u=await t.getProperties(I);u&&(u.type===k.IFCCLASSIFICATION&&s.push(u),u.type===k.IFCCLASSIFICATIONREFERENCE&&(u.ReferencedSource=await this.processReferencedSource(t,u),u.ReferencedSource&&s.push(u)))}const o=s.map(I=>{var u,d,E;return I.type===k.IFCCLASSIFICATION?(u=I.Name)==null?void 0:u.value:I.type===k.IFCCLASSIFICATIONREFERENCE?(E=(d=I.ReferencedSource)==null?void 0:d.Name)==null?void 0:E.value:null}).filter(I=>I),a=n.getEntityRelations(t,e,"IsTypedBy");if(!(a&&a[0]))return s;const l=a[0],h=n.getEntityRelations(t,l,"HasAssociations");if(h)for(const I of h){const u=await t.getProperties(I);if(u){if(u.type===k.IFCCLASSIFICATION){if(o.includes((f=u.Name)==null?void 0:f.value))continue;s.push(u)}u.type===k.IFCCLASSIFICATIONREFERENCE&&(u.ReferencedSource=await this.processReferencedSource(t,u),u.ReferencedSource&&s.push(u))}}return s}getSystemName(t){var e,s,n,r;if(t.type===k.IFCCLASSIFICATION)return(e=t.Name)==null?void 0:e.value;if(t.type===k.IFCCLASSIFICATIONREFERENCE){if(((s=t.ReferencedSource)==null?void 0:s.type)===k.IFCCLASSIFICATIONREFERENCE)return this.getSystemName(t.ReferencedSource);if(((n=t.ReferencedSource)==null?void 0:n.type)===k.IFCCLASSIFICATION)return(r=t.ReferencedSource.Name)==null?void 0:r.value}return null}getAllReferenceIdentifications(t){if(t.type!==k.IFCCLASSIFICATIONREFERENCE)return null;const e=[];if(t.Identification&&e.push(t.Identification.value),t.ReferencedSource){const s=this.getAllReferenceIdentifications(t.ReferencedSource);s&&e.push(...s)}return e}evalSystem(t,e){const s=this.getSystemName(t);return this.evalRequirement(s,this.system,"System",e)}evalValue(t,e){if(!this.value)return!0;const s=this.getAllReferenceIdentifications(t);if(!s)return!1;const n=s.find(r=>this.value?this.evalRequirement(r,this.value,"Value"):!1);return e&&this.addCheckResult({parameter:"Value",currentValue:n??null,requiredValue:this.value,pass:!!n},e),!!n}evalURI(t,e){var n;return this.uri?this.evalRequirement((n=t.Location)==null?void 0:n.value,{type:"simple",parameter:this.uri},"URI",e):!0}}class wo extends Di{constructor(t,e){super(t);C(this,"name");C(this,"predefinedType");this.name=e}serialize(t){const e=de("Name",this.name),s=de("Name",this.predefinedType);let n="";return t==="requirement"&&(n+=`cardinality="${this.cardinality}"`,n+=this.instructions?`instructions="${this.instructions}"`:""),`<ids:entity ${n}>
|
|
277
|
+
${e}
|
|
278
|
+
${s}
|
|
279
|
+
</ids:entity>`}async getEntities(t,e={}){const s=Object.entries(Pi),n=[];for(const[a]of s)await this.evalName({type:a})&&n.push(Number(a));let r={};for(const a of n){const l=await t.getAllPropertiesOfType(a);l&&(r={...r,...l})}if(!this.predefinedType){for(const a in r)a in e||(e[a]=r[a]);return Object.keys(r).map(Number)}const o=[];for(const a in r){const l=Number(a);if(l in e)continue;const h=r[l];await this.evalPredefinedType(t,h)&&(e[l]=h,o.push(l))}return o}async test(t,e){var s;this.testResult=[];for(const n in t){const r=Number(n),o=t[r],a=[],l={guid:(s=o.GlobalId)==null?void 0:s.value,expressID:r,pass:!1,checks:a,cardinality:this.cardinality};this.testResult.push(l),await this.evalName(o,a),await this.evalPredefinedType(e,o,a),l.pass=a.every(({pass:h})=>h)}return this.testResult}async evalName(t,e){const s=Pi[t.type];return this.evalRequirement(s,this.name,"Name",e)}async evalPredefinedType(t,e,s){var l,h,f,I;if(!this.predefinedType)return null;const n=this.components.get(Bt),r=typeof this.predefinedType.parameter=="string"&&this.predefinedType.parameter==="USERDEFINED";let o=(l=e.PredefinedType)==null?void 0:l.value;if(o==="USERDEFINED"&&!r){const d=Object.keys(e).find(E=>/^((?!Predefined).)*Type$/.test(E));o=d?(h=e[d])==null?void 0:h.value:"USERDEFINED"}if(!o){const u=n.getEntityRelations(t,e.expressID,"IsTypedBy");if(u&&u[0]){const d=await t.getProperties(u[0]);if(d&&(o=(f=d.PredefinedType)==null?void 0:f.value,o==="USERDEFINED"&&!r)){const T=Object.keys(d).find(p=>/^((?!Predefined).)*Type$/.test(p));o=T?(I=d[T])==null?void 0:I.value:"USERDEFINED"}}}return this.evalRequirement(o,this.predefinedType,"PredefinedType",s)}}class Do extends Di{constructor(t,e,s){super(t);C(this,"propertySet");C(this,"baseName");C(this,"value");C(this,"dataType");C(this,"uri");C(this,"_unsupportedTypes",[k.IFCCOMPLEXPROPERTY,k.IFCPHYSICALCOMPLEXQUANTITY]);this.propertySet=e,this.baseName=s}serialize(t){const e=de("PropertySet",this.propertySet),s=de("BaseName",this.baseName),n=de("Value",this.value),r=this.dataType?`dataType=${this.dataType}`:"";let o="";return t==="requirement"&&(o+=`cardinality="${this.cardinality}"`,o+=this.uri?`uri=${this.uri}`:"",o+=this.instructions?`instructions="${this.instructions}"`:""),`<ids:property ${r} ${o}>
|
|
280
|
+
${e}
|
|
281
|
+
${s}
|
|
282
|
+
${n}
|
|
283
|
+
</ids:property>`}async getEntities(t,e={}){var l,h;let s={};const n=await t.getAllPropertiesOfType(k.IFCPROPERTYSET);s={...s,...n};const r=await t.getAllPropertiesOfType(k.IFCELEMENTQUANTITY);if(s={...s,...r},Object.keys(s).length===0)return[];const o=[];for(const f in s){const I=Number(f),u=await t.getProperties(I);if(!u||!(((l=u.Name)==null?void 0:l.value)===this.propertySet.parameter))continue;let E;if(u.type===k.IFCPROPERTYSET&&(E="HasProperties"),u.type===k.IFCELEMENTQUANTITY&&(E="Quantities"),!!E)for(const T of u[E]){const p=await t.getProperties(T.value);if(!(!p||!(((h=p.Name)==null?void 0:h.value)===this.baseName.parameter))){if(this.value){const F=Object.keys(p).find(S=>S.endsWith("Value"));if(!F||!(p[F].value===this.value.parameter))continue}o.push(I)}}}const a=this.components.get(Bt);for(const f of o){const I=a.getEntitiesWithRelation(t,"IsDefinedBy",f);for(const u of I){if(u in e)continue;const d=await t.getProperties(u);d&&(e[u]=d)}}return[]}async test(t,e){var n;this.testResult=[];for(const r in t){const o=Number(r),a=t[o],l=[],h={guid:(n=a.GlobalId)==null?void 0:n.value,expressID:o,pass:!1,checks:l,cardinality:this.cardinality};this.testResult.push(h);const I=(await this.getPsets(e,o)).filter(u=>{var E;return this.evalRequirement(((E=u.Name)==null?void 0:E.value)??null,this.propertySet,"PropertySet")?(l.push({currentValue:u.Name.value,parameter:"PropertySet",pass:!0,requiredValue:this.propertySet.parameter}),!0):!1});if(I.length===0){l.push({currentValue:null,parameter:"PropertySet",pass:!1,requiredValue:this.propertySet.parameter});continue}for(const u of I){const d=this.getItemsAttrName(u.type);if(!d){l.push({currentValue:null,parameter:"BaseName",pass:!1,requiredValue:this.baseName.parameter});continue}const T=u[d].filter(p=>{var F;return this._unsupportedTypes.includes(p.type)||!this.evalRequirement(((F=p.Name)==null?void 0:F.value)??null,this.baseName,"BaseName")?!1:(l.push({currentValue:p.Name.value,parameter:"BaseName",pass:!0,requiredValue:this.baseName.parameter}),!0)});if(T.length===0){l.push({currentValue:null,parameter:"BaseName",pass:!1,requiredValue:this.baseName.parameter});continue}for(const p of T)this.evalValue(p,l),this.evalDataType(p,l),this.evalURI()}h.pass=l.every(({pass:u})=>u)}const s=[...this.testResult];return this.testResult=[],s}getItemsAttrName(t){let e;return t===k.IFCPROPERTYSET&&(e="HasProperties"),t===k.IFCELEMENTQUANTITY&&(e="Quantities"),e}getValueKey(t){return Object.keys(t).find(e=>e.endsWith("Value")||e.endsWith("Values"))}async getPsets(t,e){const s=[],r=this.components.get(Bt).getEntityRelations(t,e,"IsDefinedBy");if(!r)return s;for(const o of r){const a=await t.getProperties(o);if(!a)continue;const l=this.getItemsAttrName(a.type);if(!l)continue;const h=structuredClone(a),f=[];for(const{value:I}of h[l]){const u=await t.getProperties(I);u&&f.push(u)}h[l]=f,s.push(h)}return s}evalValue(t,e){const s=this.getValueKey(t);if(this.value){if(!s)return e==null||e.push({parameter:"Value",currentValue:null,pass:!1,requiredValue:this.value.parameter}),!1;const r=t[s],o=structuredClone(this.value);if(r.name==="IFCLABEL"&&o.type==="simple"&&(o.parameter=String(o.parameter)),(t.type===k.IFCPROPERTYLISTVALUE||t.type===k.IFCPROPERTYENUMERATEDVALUE)&&Array.isArray(r)){const l=r.map(f=>f.value),h=r.find(f=>o?this.evalRequirement(f.value,o,"Value"):!1);return e==null||e.push({currentValue:l,pass:!!h,parameter:"Value",requiredValue:o.parameter}),!!h}return this.evalRequirement(r.value,o,"Value",e)}if(!s)return!0;const n=t[s];return n.type===3&&n.value===2?(e==null||e.push({parameter:"Value",currentValue:null,pass:!1,requiredValue:null}),!1):n.type===1&&n.value.trim()===""?(e==null||e.push({parameter:"Value",currentValue:"",pass:!1,requiredValue:null}),!1):!0}evalDataType(t,e){if(!this.dataType)return!0;const s=this.getValueKey(t),n=t[s];if((t.type===k.IFCPROPERTYLISTVALUE||t.type===k.IFCPROPERTYENUMERATEDVALUE)&&Array.isArray(n)&&n[0]){const o=n[0].name;return this.evalRequirement(o,{type:"simple",parameter:this.dataType},"DataType",e)}return this.evalRequirement(n.name,{type:"simple",parameter:this.dataType},"DataType",e)}evalURI(){return!0}}class bo{constructor(i,t,e){C(this,"name");C(this,"ifcVersion",new Set);C(this,"identifier",ne.create());C(this,"description");C(this,"instructions");C(this,"requirementsDescription");C(this,"applicability",new ue);C(this,"requirements",new ue);C(this,"components");this.components=i,this.name=t;for(const s of e)this.ifcVersion.add(s)}async test(i){let t=[];if(this.requirements.size===0)return t;const e={};for(const n of this.applicability)await n.getEntities(i,e);return t=await[...this.requirements][0].test(e,i),t}serialize(){const i=`name="${this.name}"`,t=this.identifier?`identifier="${this.identifier}"`:"",e=this.description?`description="${this.description}"`:"",s=this.instructions?`instructions="${this.instructions}"`:"";return`<ids:specification ifcVersion="${[...this.ifcVersion].join(" ")}" ${i} ${t} ${e} ${s}>
|
|
284
|
+
<ids:applicability minOccurs="1" maxOccurs="unbounded">
|
|
285
|
+
${[...this.applicability].map(r=>r.serialize("applicability"))}
|
|
286
|
+
</ids:applicability>
|
|
287
|
+
<ids:requirements>
|
|
288
|
+
${[...this.requirements].map(r=>r.serialize("requirement"))}
|
|
289
|
+
</ids:requirements>
|
|
290
|
+
</ids:specification>`}}const Ee=c=>{if(!c)return;const i={type:"simple"};if("simpleValue"in c&&(i.parameter=c.simpleValue),"restriction"in c){const t=c.restriction;if("pattern"in t&&(i.type="pattern",i.parameter=t.pattern.value),"enumeration"in t){i.type="enumeration";const e=t.enumeration.map(({value:s})=>s);i.parameter=e}}if(i.parameter!==void 0)return i},vr=(c,i)=>{const t=[];for(const e of i){const s=e.name,n=Ee(s);if(!n)continue;const r=new wo(c,n);e.cardinality&&(r.cardinality=e.cardinality),r.predefinedType=Ee(e.predefinedType),t.push(r)}return t},kl=(c,i)=>{const t=[];for(const e of i){const s=e.name,n=Ee(s);if(!n)continue;const r=new _o(c,n);e.cardinality&&(r.cardinality=e.cardinality),r.value=Ee(e.value),t.push(r)}return t},Hl=(c,i)=>{const t=[];for(const e of i){const s=e.system,n=Ee(s);if(!n)continue;const r=new Mo(c,n);e.cardinality&&(r.cardinality=e.cardinality);const o=Ee(e.value);(o==null?void 0:o.type)==="simple"&&(o.parameter=String(o.parameter)),(o==null?void 0:o.type)==="enumeration"&&Array.isArray(o.parameter)&&(o.parameter=o.parameter.map(String)),r.value=o,r.uri=e.uri,t.push(r)}return t},Wl=(c,i)=>{const t=[];for(const e of i){const s=e.propertySet,n=e.baseName,r=Ee(s),o=Ee(n);if(!(o&&r))continue;const a=new Do(c,r,o);e.cardinality&&(a.cardinality=e.cardinality);const l=Ee(e.value);(l==null?void 0:l.type)==="enumeration"&&Array.isArray(l.parameter)&&(l.parameter=l.parameter.map(String)),a.value=l,a.dataType=e.dataType,a.uri=e.uri,t.push(a)}return t},qe=class qe extends mt{constructor(t){super(t);C(this,"enabled",!0);C(this,"list",new se);t.add(qe.uuid,this)}getFragmentIdMap(t,e){const n=e.filter(h=>h.pass).map(h=>h.expressID),r=t.getFragmentMap(n),a=e.filter(h=>!h.pass).map(h=>h.expressID),l=t.getFragmentMap(a);return{pass:r,fail:l}}create(t,e){const s=new bo(this.components,t,e);return this.list.set(s.identifier,s),s}load(t){const e=[],s=qe.xmlParser.parse(t).ids,{specifications:n}=s;if(n&&n.specification){const r=Array.isArray(n.specification)?n.specification:[n.specification];for(const o of r){const{name:a,ifcVersion:l}=o;if(!(a&&l))continue;const h=[],f=[],{applicability:I,requirements:u}=o;if(I){const{maxOccurs:d,...E}=I,T=Array.isArray(E)?E:[E];for(const p of T)for(const m in p){const F=Array.isArray(p[m])?p[m]:[p[m]];if(m==="entity"){const R=vr(this.components,F);h.push(...R)}}}if(u){const{maxOccurs:d,...E}=u,T=Array.isArray(E)?E:[E];for(const p of T)for(const m in p){const F=Array.isArray(p[m])?p[m]:[p[m]];if(m==="entity"){const R=vr(this.components,F);f.push(...R)}if(m==="attribute"){const R=kl(this.components,F);f.push(...R)}if(m==="classification"){const R=Hl(this.components,F);f.push(...R)}if(m==="property"){const R=Wl(this.components,F);f.push(...R)}}}if(h.length>0&&f.length>0){const d=this.create(a,l.split(/\s+/));d.applicability.add(...h),d.requirements.add(...f),e.push(d)}}}return e}export(t,e=this.list.values()){const s=e??this.list;return`<ids:ids xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://standards.buildingsmart.org/IDS http://standards.buildingsmart.org/IDS/1.0/ids.xsd" xmlns:ids="http://standards.buildingsmart.org/IDS">
|
|
291
|
+
<!-- Made with That Open Engine ${yi.release} (https://github.com/thatopen/engine_components) -->
|
|
292
|
+
<ids:info>
|
|
293
|
+
<ids:title>${t.title}</ids:title>
|
|
294
|
+
${t.copyright?`<ids:copyright>${t.copyright}</ids:copyright>`:""}
|
|
295
|
+
${t.version?`<ids:version>${t.version}</ids:version>`:""}
|
|
296
|
+
${t.description?`<ids:description>${t.description}</ids:description>`:""}
|
|
297
|
+
${t.author?`<ids:author>${t.author}</ids:author>`:""}
|
|
298
|
+
${t.date?`<ids:date>${t.date.toISOString().split("T")[0]}</ids:date>`:""}
|
|
299
|
+
${t.purpose?`<ids:purpose>${t.purpose}</ids:purpose>`:""}
|
|
300
|
+
${t.milestone?`<ids:milestone>${t.milestone}</ids:milestone>`:""}
|
|
301
|
+
</ids:info>
|
|
302
|
+
<ids:specifications>
|
|
303
|
+
${[...s].map(r=>r.serialize()).join(`
|
|
304
|
+
`)}
|
|
305
|
+
</ids:specifications>
|
|
306
|
+
</ids:ids>`}};C(qe,"uuid","9f0b9f78-9b2e-481a-b766-2fbfd01f342c"),C(qe,"xmlParser",new Ao.XMLParser({allowBooleanAttributes:!0,attributeNamePrefix:"",ignoreAttributes:!1,ignoreDeclaration:!0,ignorePiTags:!0,numberParseOptions:{leadingZeros:!0,hex:!0},parseAttributeValue:!0,preserveOrder:!1,processEntities:!1,removeNSPrefix:!0,trimValues:!0}));let wn=qe;exports.AsyncEvent=gi;exports.BCFTopics=Mt;exports.BCFTopicsConfigManager=So;exports.Base=Vs;exports.BaseCamera=Yr;exports.BaseRenderer=Gr;exports.BaseScene=zr;exports.BaseWorldItem=Ys;exports.BoundingBoxer=Cs;exports.Classifier=Ke;exports.Clipper=fs;exports.Comment=ps;exports.Component=mt;exports.ComponentWithUI=Xa;exports.Components=yi;exports.ConfigManager=Gt;exports.Configurator=Oe;exports.CullerRenderer=jr;exports.Cullers=us;exports.DataMap=se;exports.DataSet=ue;exports.Disposer=Ce;exports.Event=j;exports.Exploder=Ln;exports.FirstPersonMode=eo;exports.FragmentsManager=pt;exports.GeometryTypes=Vn;exports.Grids=Fn;exports.Hider=Ts;exports.IDSAttribute=_o;exports.IDSClassification=Mo;exports.IDSEntity=wo;exports.IDSFacet=Di;exports.IDSProperty=Do;exports.IDSSpecification=bo;exports.IDSSpecifications=wn;exports.IfcBasicQuery=Mi;exports.IfcCategories=Sc;exports.IfcCategoryMap=Pi;exports.IfcElements=oo;exports.IfcFinder=yn;exports.IfcFinderQuery=Qt;exports.IfcFragmentSettings=zs;exports.IfcGeometryTiler=Pn;exports.IfcJsonExporter=Is;exports.IfcLoader=ds;exports.IfcPropertiesManager=Es;exports.IfcPropertiesTiler=yo;exports.IfcPropertiesUtils=De;exports.IfcPropertyQuery=wi;exports.IfcRelationsIndexer=Bt;exports.IfcStreamingSettings=Oo;exports.MaterialsUtils=An;exports.MeasurementUtils=Mn;exports.MeshCullerRenderer=qr;exports.MiniMap=Po;exports.MiniMapConfigManager=Lo;exports.MiniMaps=_n;exports.Mouse=Qr;exports.OrbitMode=io;exports.OrthoPerspectiveCamera=ro;exports.PlanMode=so;exports.ProjectionManager=no;exports.PropertiesStreamingSettings=No;exports.Raycasters=be;exports.ShadowedScene=dc;exports.SimpleCamera=Qe;exports.SimpleGrid=to;exports.SimpleGridConfigManager=Jr;exports.SimplePlane=Gs;exports.SimpleRaycaster=Kr;exports.SimpleRenderer=rc;exports.SimpleScene=Xr;exports.SimpleSceneConfigManager=Wr;exports.SimpleWorld=Hr;exports.Topic=_i;exports.UUID=ne;exports.VertexPicker=ic;exports.Viewpoint=kn;exports.Viewpoints=jt;exports.Worlds=Li;exports.extensionsImporter=Fo;exports.ifcCategoryCase=ao;exports.ifcRelAttrsPosition=fo;exports.ifcRelClassNames=Io;exports.isPointInFrontOfPlane=ec;exports.obbFromPoints=kr;exports.readPixelsAsync=Bn;exports.relToAttributesMap=Sn;
|